From e56f3759b6b9db377918d71cefa10382a6f89e22 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 3 Mar 2023 10:37:30 +0000 Subject: [PATCH] feat: build for release --- README.md | 2 + action.yml | 51 + lib/index.js | 14091 +++++ lib/index.js.map | 7 + node_modules/.bin/esbuild | 1 + node_modules/.bin/fxparser | 1 + node_modules/.bin/tsx | 1 + node_modules/.bin/uuid | 1 + node_modules/.bin/xml-js | 1 + node_modules/.yarn-integrity | 395 + node_modules/@actions/core/LICENSE.md | 9 + node_modules/@actions/core/README.md | 335 + node_modules/@actions/core/lib/command.d.ts | 15 + node_modules/@actions/core/lib/command.js | 92 + node_modules/@actions/core/lib/command.js.map | 1 + node_modules/@actions/core/lib/core.d.ts | 198 + node_modules/@actions/core/lib/core.js | 336 + node_modules/@actions/core/lib/core.js.map | 1 + .../@actions/core/lib/file-command.d.ts | 2 + .../@actions/core/lib/file-command.js | 58 + .../@actions/core/lib/file-command.js.map | 1 + .../@actions/core/lib/oidc-utils.d.ts | 7 + node_modules/@actions/core/lib/oidc-utils.js | 77 + .../@actions/core/lib/oidc-utils.js.map | 1 + .../@actions/core/lib/path-utils.d.ts | 25 + node_modules/@actions/core/lib/path-utils.js | 58 + .../@actions/core/lib/path-utils.js.map | 1 + node_modules/@actions/core/lib/summary.d.ts | 202 + node_modules/@actions/core/lib/summary.js | 283 + node_modules/@actions/core/lib/summary.js.map | 1 + node_modules/@actions/core/lib/utils.d.ts | 14 + node_modules/@actions/core/lib/utils.js | 40 + node_modules/@actions/core/lib/utils.js.map | 1 + .../@actions/core/node_modules/.bin/uuid | 1 + node_modules/@actions/core/package.json | 46 + node_modules/@actions/github/LICENSE.md | 9 + node_modules/@actions/github/README.md | 98 + node_modules/@actions/github/lib/context.d.ts | 32 + node_modules/@actions/github/lib/context.js | 54 + .../@actions/github/lib/context.js.map | 1 + node_modules/@actions/github/lib/github.d.ts | 11 + node_modules/@actions/github/lib/github.js | 37 + .../@actions/github/lib/github.js.map | 1 + .../@actions/github/lib/interfaces.d.ts | 40 + .../@actions/github/lib/interfaces.js | 4 + .../@actions/github/lib/interfaces.js.map | 1 + .../@actions/github/lib/internal/utils.d.ts | 6 + .../@actions/github/lib/internal/utils.js | 43 + .../@actions/github/lib/internal/utils.js.map | 1 + node_modules/@actions/github/lib/utils.d.ts | 15 + node_modules/@actions/github/lib/utils.js | 54 + node_modules/@actions/github/lib/utils.js.map | 1 + node_modules/@actions/github/package.json | 49 + node_modules/@actions/glob/LICENSE.md | 9 + node_modules/@actions/glob/README.md | 113 + node_modules/@actions/glob/lib/glob.d.ts | 20 + node_modules/@actions/glob/lib/glob.js | 46 + node_modules/@actions/glob/lib/glob.js.map | 1 + .../lib/internal-glob-options-helper.d.ts | 5 + .../glob/lib/internal-glob-options-helper.js | 55 + .../lib/internal-glob-options-helper.js.map | 1 + .../glob/lib/internal-glob-options.d.ts | 36 + .../glob/lib/internal-glob-options.js | 3 + .../glob/lib/internal-glob-options.js.map | 1 + .../@actions/glob/lib/internal-globber.d.ts | 42 + .../@actions/glob/lib/internal-globber.js | 235 + .../@actions/glob/lib/internal-globber.js.map | 1 + .../glob/lib/internal-hash-file-options.d.ts | 12 + .../glob/lib/internal-hash-file-options.js | 3 + .../lib/internal-hash-file-options.js.map | 1 + .../glob/lib/internal-hash-files.d.ts | 2 + .../@actions/glob/lib/internal-hash-files.js | 97 + .../glob/lib/internal-hash-files.js.map | 1 + .../glob/lib/internal-match-kind.d.ts | 13 + .../@actions/glob/lib/internal-match-kind.js | 18 + .../glob/lib/internal-match-kind.js.map | 1 + .../glob/lib/internal-path-helper.d.ts | 42 + .../@actions/glob/lib/internal-path-helper.js | 198 + .../glob/lib/internal-path-helper.js.map | 1 + .../@actions/glob/lib/internal-path.d.ts | 15 + .../@actions/glob/lib/internal-path.js | 113 + .../@actions/glob/lib/internal-path.js.map | 1 + .../glob/lib/internal-pattern-helper.d.ts | 15 + .../glob/lib/internal-pattern-helper.js | 94 + .../glob/lib/internal-pattern-helper.js.map | 1 + .../@actions/glob/lib/internal-pattern.d.ts | 64 + .../@actions/glob/lib/internal-pattern.js | 255 + .../@actions/glob/lib/internal-pattern.js.map | 1 + .../glob/lib/internal-search-state.d.ts | 5 + .../glob/lib/internal-search-state.js | 11 + .../glob/lib/internal-search-state.js.map | 1 + node_modules/@actions/glob/package.json | 43 + node_modules/@actions/http-client/LICENSE | 21 + node_modules/@actions/http-client/README.md | 73 + .../@actions/http-client/lib/auth.d.ts | 26 + node_modules/@actions/http-client/lib/auth.js | 81 + .../@actions/http-client/lib/auth.js.map | 1 + .../@actions/http-client/lib/index.d.ts | 123 + .../@actions/http-client/lib/index.js | 605 + .../@actions/http-client/lib/index.js.map | 1 + .../@actions/http-client/lib/interfaces.d.ts | 44 + .../@actions/http-client/lib/interfaces.js | 3 + .../http-client/lib/interfaces.js.map | 1 + .../@actions/http-client/lib/proxy.d.ts | 2 + .../@actions/http-client/lib/proxy.js | 61 + .../@actions/http-client/lib/proxy.js.map | 1 + .../@actions/http-client/package.json | 48 + node_modules/@esbuild-kit/cjs-loader/LICENSE | 21 + .../@esbuild-kit/cjs-loader/README.md | 65 + .../@esbuild-kit/cjs-loader/dist/index.js | 1 + .../@esbuild-kit/cjs-loader/package.json | 32 + node_modules/@esbuild-kit/core-utils/LICENSE | 21 + .../@esbuild-kit/core-utils/README.md | 11 + .../@esbuild-kit/core-utils/dist/index.d.ts | 26 + .../@esbuild-kit/core-utils/dist/index.js | 23 + .../core-utils/node_modules/.bin/esbuild | 1 + .../@esbuild-kit/core-utils/package.json | 33 + node_modules/@esbuild-kit/esm-loader/LICENSE | 21 + .../@esbuild-kit/esm-loader/README.md | 103 + .../@esbuild-kit/esm-loader/dist/index.js | 1 + .../@esbuild-kit/esm-loader/package.json | 31 + node_modules/@esbuild/linux-x64/README.md | 3 + node_modules/@esbuild/linux-x64/bin/esbuild | Bin 0 -> 9003008 bytes node_modules/@esbuild/linux-x64/package.json | 17 + node_modules/@octokit/auth-token/LICENSE | 21 + node_modules/@octokit/auth-token/README.md | 290 + .../@octokit/auth-token/dist-node/index.js | 55 + .../auth-token/dist-node/index.js.map | 1 + .../@octokit/auth-token/dist-src/auth.js | 21 + .../@octokit/auth-token/dist-src/hook.js | 6 + .../@octokit/auth-token/dist-src/index.js | 14 + .../@octokit/auth-token/dist-src/types.js | 1 + .../dist-src/with-authorization-prefix.js | 11 + .../@octokit/auth-token/dist-types/auth.d.ts | 2 + .../@octokit/auth-token/dist-types/hook.d.ts | 2 + .../@octokit/auth-token/dist-types/index.d.ts | 7 + .../@octokit/auth-token/dist-types/types.d.ts | 33 + .../dist-types/with-authorization-prefix.d.ts | 6 + .../@octokit/auth-token/dist-web/index.js | 55 + .../@octokit/auth-token/dist-web/index.js.map | 1 + node_modules/@octokit/auth-token/package.json | 45 + node_modules/@octokit/core/LICENSE | 21 + node_modules/@octokit/core/README.md | 448 + node_modules/@octokit/core/dist-node/index.js | 176 + .../@octokit/core/dist-node/index.js.map | 1 + node_modules/@octokit/core/dist-src/index.js | 125 + node_modules/@octokit/core/dist-src/types.js | 1 + .../@octokit/core/dist-src/version.js | 1 + .../@octokit/core/dist-types/index.d.ts | 30 + .../@octokit/core/dist-types/types.d.ts | 44 + .../@octokit/core/dist-types/version.d.ts | 1 + node_modules/@octokit/core/dist-web/index.js | 130 + .../@octokit/core/dist-web/index.js.map | 1 + node_modules/@octokit/core/package.json | 57 + node_modules/@octokit/endpoint/LICENSE | 21 + node_modules/@octokit/endpoint/README.md | 421 + .../@octokit/endpoint/dist-node/index.js | 390 + .../@octokit/endpoint/dist-node/index.js.map | 1 + .../@octokit/endpoint/dist-src/defaults.js | 17 + .../dist-src/endpoint-with-defaults.js | 5 + .../@octokit/endpoint/dist-src/index.js | 3 + .../@octokit/endpoint/dist-src/merge.js | 26 + .../@octokit/endpoint/dist-src/parse.js | 81 + .../dist-src/util/add-query-parameters.js | 17 + .../util/extract-url-variable-names.js | 11 + .../endpoint/dist-src/util/lowercase-keys.js | 9 + .../endpoint/dist-src/util/merge-deep.js | 16 + .../@octokit/endpoint/dist-src/util/omit.js | 8 + .../util/remove-undefined-properties.js | 8 + .../endpoint/dist-src/util/url-template.js | 164 + .../@octokit/endpoint/dist-src/version.js | 1 + .../endpoint/dist-src/with-defaults.js | 13 + .../endpoint/dist-types/defaults.d.ts | 2 + .../dist-types/endpoint-with-defaults.d.ts | 3 + .../@octokit/endpoint/dist-types/index.d.ts | 1 + .../@octokit/endpoint/dist-types/merge.d.ts | 2 + .../@octokit/endpoint/dist-types/parse.d.ts | 2 + .../dist-types/util/add-query-parameters.d.ts | 4 + .../util/extract-url-variable-names.d.ts | 1 + .../dist-types/util/lowercase-keys.d.ts | 5 + .../endpoint/dist-types/util/merge-deep.d.ts | 1 + .../endpoint/dist-types/util/omit.d.ts | 5 + .../util/remove-undefined-properties.d.ts | 1 + .../dist-types/util/url-template.d.ts | 3 + .../@octokit/endpoint/dist-types/version.d.ts | 1 + .../endpoint/dist-types/with-defaults.d.ts | 2 + .../@octokit/endpoint/dist-web/index.js | 381 + .../@octokit/endpoint/dist-web/index.js.map | 1 + node_modules/@octokit/endpoint/package.json | 44 + node_modules/@octokit/graphql/LICENSE | 21 + node_modules/@octokit/graphql/README.md | 409 + .../@octokit/graphql/dist-node/index.js | 118 + .../@octokit/graphql/dist-node/index.js.map | 1 + .../@octokit/graphql/dist-src/error.js | 21 + .../@octokit/graphql/dist-src/graphql.js | 52 + .../@octokit/graphql/dist-src/index.js | 18 + .../@octokit/graphql/dist-src/types.js | 1 + .../@octokit/graphql/dist-src/version.js | 1 + .../graphql/dist-src/with-defaults.js | 12 + .../@octokit/graphql/dist-types/error.d.ts | 13 + .../@octokit/graphql/dist-types/graphql.d.ts | 3 + .../@octokit/graphql/dist-types/index.d.ts | 5 + .../@octokit/graphql/dist-types/types.d.ts | 55 + .../@octokit/graphql/dist-types/version.d.ts | 1 + .../graphql/dist-types/with-defaults.d.ts | 3 + .../@octokit/graphql/dist-web/index.js | 106 + .../@octokit/graphql/dist-web/index.js.map | 1 + node_modules/@octokit/graphql/package.json | 47 + node_modules/@octokit/openapi-types/LICENSE | 7 + node_modules/@octokit/openapi-types/README.md | 17 + .../@octokit/openapi-types/package.json | 20 + .../@octokit/openapi-types/types.d.ts | 47095 ++++++++++++++++ .../@octokit/plugin-paginate-rest/LICENSE | 7 + .../@octokit/plugin-paginate-rest/README.md | 269 + .../plugin-paginate-rest/dist-node/index.js | 205 + .../dist-node/index.js.map | 1 + .../dist-src/compose-paginate.js | 5 + .../generated/paginating-endpoints.js | 216 + .../plugin-paginate-rest/dist-src/index.js | 17 + .../plugin-paginate-rest/dist-src/iterator.js | 39 + .../normalize-paginated-list-response.js | 47 + .../plugin-paginate-rest/dist-src/paginate.js | 24 + .../dist-src/paginating-endpoints.js | 10 + .../plugin-paginate-rest/dist-src/types.js | 1 + .../plugin-paginate-rest/dist-src/version.js | 1 + .../dist-types/compose-paginate.d.ts | 2 + .../generated/paginating-endpoints.d.ts | 1612 + .../dist-types/index.d.ts | 16 + .../dist-types/iterator.d.ts | 20 + .../normalize-paginated-list-response.d.ts | 18 + .../dist-types/paginate.d.ts | 3 + .../dist-types/paginating-endpoints.d.ts | 3 + .../dist-types/types.d.ts | 242 + .../dist-types/version.d.ts | 1 + .../plugin-paginate-rest/dist-web/index.js | 358 + .../dist-web/index.js.map | 1 + .../plugin-paginate-rest/package.json | 51 + .../plugin-rest-endpoint-methods/LICENSE | 7 + .../plugin-rest-endpoint-methods/README.md | 76 + .../dist-node/index.js | 1107 + .../dist-node/index.js.map | 1 + .../dist-src/endpoints-to-methods.js | 60 + .../dist-src/generated/endpoints.js | 1664 + .../dist-src/generated/method-types.js | 1 + .../parameters-and-response-types.js | 1 + .../dist-src/index.js | 18 + .../dist-src/types.js | 1 + .../dist-src/version.js | 1 + .../dist-types/endpoints-to-methods.d.ts | 4 + .../dist-types/generated/endpoints.d.ts | 3 + .../dist-types/generated/method-types.d.ts | 9945 ++++ .../parameters-and-response-types.d.ts | 3211 ++ .../dist-types/index.d.ts | 11 + .../dist-types/types.d.ts | 18 + .../dist-types/version.d.ts | 1 + .../dist-web/index.js | 1745 + .../dist-web/index.js.map | 1 + .../plugin-rest-endpoint-methods/package.json | 59 + node_modules/@octokit/request-error/LICENSE | 21 + node_modules/@octokit/request-error/README.md | 67 + .../@octokit/request-error/dist-node/index.js | 74 + .../request-error/dist-node/index.js.map | 1 + .../@octokit/request-error/dist-src/index.js | 55 + .../@octokit/request-error/dist-src/types.js | 1 + .../request-error/dist-types/index.d.ts | 33 + .../request-error/dist-types/types.d.ts | 9 + .../@octokit/request-error/dist-web/index.js | 59 + .../request-error/dist-web/index.js.map | 1 + .../@octokit/request-error/package.json | 47 + node_modules/@octokit/request/LICENSE | 21 + node_modules/@octokit/request/README.md | 551 + .../@octokit/request/dist-node/index.js | 177 + .../@octokit/request/dist-node/index.js.map | 1 + .../request/dist-src/fetch-wrapper.js | 119 + .../request/dist-src/get-buffer-response.js | 3 + .../@octokit/request/dist-src/index.js | 9 + .../@octokit/request/dist-src/version.js | 1 + .../request/dist-src/with-defaults.js | 22 + .../request/dist-types/fetch-wrapper.d.ts | 11 + .../dist-types/get-buffer-response.d.ts | 2 + .../@octokit/request/dist-types/index.d.ts | 1 + .../@octokit/request/dist-types/version.d.ts | 1 + .../request/dist-types/with-defaults.d.ts | 2 + .../@octokit/request/dist-web/index.js | 158 + .../@octokit/request/dist-web/index.js.map | 1 + node_modules/@octokit/request/package.json | 56 + node_modules/@octokit/types/LICENSE | 7 + node_modules/@octokit/types/README.md | 65 + .../@octokit/types/dist-node/index.js | 8 + .../@octokit/types/dist-node/index.js.map | 1 + .../@octokit/types/dist-src/AuthInterface.js | 1 + .../types/dist-src/EndpointDefaults.js | 1 + .../types/dist-src/EndpointInterface.js | 1 + .../types/dist-src/EndpointOptions.js | 1 + node_modules/@octokit/types/dist-src/Fetch.js | 1 + .../GetResponseTypeFromEndpointMethod.js | 1 + .../types/dist-src/OctokitResponse.js | 1 + .../@octokit/types/dist-src/RequestError.js | 1 + .../@octokit/types/dist-src/RequestHeaders.js | 1 + .../types/dist-src/RequestInterface.js | 1 + .../@octokit/types/dist-src/RequestMethod.js | 1 + .../@octokit/types/dist-src/RequestOptions.js | 1 + .../types/dist-src/RequestParameters.js | 1 + .../types/dist-src/RequestRequestOptions.js | 1 + .../types/dist-src/ResponseHeaders.js | 1 + node_modules/@octokit/types/dist-src/Route.js | 1 + .../@octokit/types/dist-src/Signal.js | 1 + .../types/dist-src/StrategyInterface.js | 1 + node_modules/@octokit/types/dist-src/Url.js | 1 + .../@octokit/types/dist-src/VERSION.js | 1 + .../types/dist-src/generated/Endpoints.js | 1 + node_modules/@octokit/types/dist-src/index.js | 21 + .../types/dist-types/AuthInterface.d.ts | 31 + .../types/dist-types/EndpointDefaults.d.ts | 21 + .../types/dist-types/EndpointInterface.d.ts | 65 + .../types/dist-types/EndpointOptions.d.ts | 7 + .../@octokit/types/dist-types/Fetch.d.ts | 4 + .../GetResponseTypeFromEndpointMethod.d.ts | 5 + .../types/dist-types/OctokitResponse.d.ts | 17 + .../types/dist-types/RequestError.d.ts | 11 + .../types/dist-types/RequestHeaders.d.ts | 15 + .../types/dist-types/RequestInterface.d.ts | 34 + .../types/dist-types/RequestMethod.d.ts | 4 + .../types/dist-types/RequestOptions.d.ts | 14 + .../types/dist-types/RequestParameters.d.ts | 45 + .../dist-types/RequestRequestOptions.d.ts | 26 + .../types/dist-types/ResponseHeaders.d.ts | 20 + .../@octokit/types/dist-types/Route.d.ts | 4 + .../@octokit/types/dist-types/Signal.d.ts | 6 + .../types/dist-types/StrategyInterface.d.ts | 4 + .../@octokit/types/dist-types/Url.d.ts | 4 + .../@octokit/types/dist-types/VERSION.d.ts | 1 + .../types/dist-types/generated/Endpoints.d.ts | 3571 ++ .../@octokit/types/dist-types/index.d.ts | 21 + node_modules/@octokit/types/dist-web/index.js | 4 + .../@octokit/types/dist-web/index.js.map | 1 + node_modules/@octokit/types/package.json | 54 + .../balanced-match/.github/FUNDING.yml | 2 + node_modules/balanced-match/LICENSE.md | 21 + node_modules/balanced-match/README.md | 97 + node_modules/balanced-match/index.js | 62 + node_modules/balanced-match/package.json | 48 + node_modules/before-after-hook/LICENSE | 201 + node_modules/before-after-hook/README.md | 653 + node_modules/before-after-hook/index.d.ts | 186 + node_modules/before-after-hook/index.js | 61 + node_modules/before-after-hook/lib/add.js | 46 + .../before-after-hook/lib/register.js | 27 + node_modules/before-after-hook/lib/remove.js | 19 + node_modules/before-after-hook/package.json | 71 + node_modules/brace-expansion/LICENSE | 21 + node_modules/brace-expansion/README.md | 129 + node_modules/brace-expansion/index.js | 201 + node_modules/brace-expansion/package.json | 47 + node_modules/buffer-from/LICENSE | 21 + node_modules/buffer-from/index.js | 72 + node_modules/buffer-from/package.json | 19 + node_modules/buffer-from/readme.md | 69 + node_modules/concat-map/.travis.yml | 4 + node_modules/concat-map/LICENSE | 18 + node_modules/concat-map/README.markdown | 62 + node_modules/concat-map/example/map.js | 6 + node_modules/concat-map/index.js | 13 + node_modules/concat-map/package.json | 43 + node_modules/concat-map/test/map.js | 39 + node_modules/deprecation/LICENSE | 15 + node_modules/deprecation/README.md | 77 + node_modules/deprecation/dist-node/index.js | 20 + node_modules/deprecation/dist-src/index.js | 14 + .../deprecation/dist-types/index.d.ts | 3 + node_modules/deprecation/dist-web/index.js | 16 + node_modules/deprecation/package.json | 34 + node_modules/dom-walk/LICENCE | 19 + node_modules/dom-walk/Makefile | 2 + node_modules/dom-walk/README.md | 23 + node_modules/dom-walk/example/index.js | 5 + node_modules/dom-walk/index.js | 24 + node_modules/dom-walk/package.json | 32 + node_modules/esbuild/LICENSE.md | 21 + node_modules/esbuild/README.md | 3 + node_modules/esbuild/bin/esbuild | 221 + node_modules/esbuild/install.js | 286 + node_modules/esbuild/lib/main.d.ts | 642 + node_modules/esbuild/lib/main.js | 2379 + node_modules/esbuild/package.json | 42 + node_modules/fast-xml-parser/CHANGELOG.md | 531 + node_modules/fast-xml-parser/LICENSE | 21 + node_modules/fast-xml-parser/README.md | 203 + node_modules/fast-xml-parser/package.json | 68 + node_modules/fast-xml-parser/src/cli/cli.js | 93 + node_modules/fast-xml-parser/src/cli/man.js | 12 + node_modules/fast-xml-parser/src/cli/read.js | 92 + node_modules/fast-xml-parser/src/fxp.d.ts | 99 + node_modules/fast-xml-parser/src/fxp.js | 11 + node_modules/fast-xml-parser/src/util.js | 72 + node_modules/fast-xml-parser/src/validator.js | 423 + .../src/xmlbuilder/json2xml.js | 249 + .../src/xmlbuilder/orderedJs2Xml.js | 131 + .../src/xmlbuilder/prettifyJs2Xml.js | 0 .../src/xmlparser/DocTypeReader.js | 143 + .../src/xmlparser/OptionsBuilder.js | 44 + .../src/xmlparser/OrderedObjParser.js | 565 + .../src/xmlparser/XMLParser.js | 58 + .../src/xmlparser/node2json.js | 101 + .../fast-xml-parser/src/xmlparser/xmlNode.js | 25 + node_modules/get-tsconfig/LICENSE | 21 + node_modules/get-tsconfig/README.md | 196 + node_modules/get-tsconfig/dist/index.cjs | 3 + node_modules/get-tsconfig/dist/index.d.cts | 1278 + node_modules/get-tsconfig/dist/index.d.mts | 1278 + node_modules/get-tsconfig/dist/index.mjs | 3 + node_modules/get-tsconfig/package.json | 43 + node_modules/global/.travis.yml | 4 + node_modules/global/LICENSE | 19 + node_modules/global/README.md | 30 + node_modules/global/console.js | 1 + node_modules/global/document.js | 17 + node_modules/global/package.json | 63 + node_modules/global/process.js | 1 + node_modules/global/window.js | 13 + node_modules/is-plain-object/LICENSE | 21 + node_modules/is-plain-object/README.md | 125 + .../is-plain-object/dist/is-plain-object.js | 38 + .../is-plain-object/dist/is-plain-object.mjs | 34 + .../is-plain-object/is-plain-object.d.ts | 1 + node_modules/is-plain-object/package.json | 85 + node_modules/min-document/.jshintrc | 30 + node_modules/min-document/.npmignore | 15 + node_modules/min-document/.testem.json | 14 + node_modules/min-document/.travis.yml | 6 + node_modules/min-document/CONTRIBUTION.md | 48 + node_modules/min-document/LICENCE | 19 + node_modules/min-document/README.md | 43 + node_modules/min-document/docs.mli | 156 + node_modules/min-document/document.js | 72 + node_modules/min-document/dom-comment.js | 19 + node_modules/min-document/dom-element.js | 209 + node_modules/min-document/dom-fragment.js | 28 + node_modules/min-document/dom-text.js | 27 + node_modules/min-document/event.js | 13 + .../min-document/event/add-event-listener.js | 17 + .../min-document/event/dispatch-event.js | 31 + .../event/remove-event-listener.js | 19 + node_modules/min-document/index.js | 3 + node_modules/min-document/package.json | 58 + node_modules/min-document/serialize.js | 139 + node_modules/min-document/test/cleanup.js | 13 + node_modules/min-document/test/index.js | 14 + .../min-document/test/static/index.html | 11 + .../min-document/test/static/test-adapter.js | 49 + .../min-document/test/test-document.js | 564 + .../min-document/test/test-dom-comment.js | 20 + .../min-document/test/test-dom-element.js | 219 + node_modules/minimatch/LICENSE | 15 + node_modules/minimatch/README.md | 230 + node_modules/minimatch/minimatch.js | 947 + node_modules/minimatch/package.json | 33 + node_modules/node-fetch/LICENSE.md | 22 + node_modules/node-fetch/README.md | 633 + node_modules/node-fetch/browser.js | 25 + node_modules/node-fetch/lib/index.es.js | 1778 + node_modules/node-fetch/lib/index.js | 1787 + node_modules/node-fetch/lib/index.mjs | 1776 + node_modules/node-fetch/package.json | 89 + node_modules/once/LICENSE | 15 + node_modules/once/README.md | 79 + node_modules/once/once.js | 42 + node_modules/once/package.json | 33 + node_modules/process/.eslintrc | 21 + node_modules/process/LICENSE | 22 + node_modules/process/README.md | 26 + node_modules/process/browser.js | 184 + node_modules/process/index.js | 2 + node_modules/process/package.json | 27 + node_modules/process/test.js | 199 + node_modules/sax/LICENSE | 41 + node_modules/sax/README.md | 225 + node_modules/sax/lib/sax.js | 1565 + node_modules/sax/package.json | 25 + node_modules/source-map-support/LICENSE.md | 21 + node_modules/source-map-support/README.md | 284 + .../browser-source-map-support.js | 114 + node_modules/source-map-support/package.json | 31 + .../register-hook-require.js | 1 + node_modules/source-map-support/register.js | 1 + .../source-map-support/source-map-support.js | 625 + node_modules/source-map/CHANGELOG.md | 301 + node_modules/source-map/LICENSE | 28 + node_modules/source-map/README.md | 742 + .../source-map/dist/source-map.debug.js | 3234 ++ node_modules/source-map/dist/source-map.js | 3233 ++ .../source-map/dist/source-map.min.js | 2 + .../source-map/dist/source-map.min.js.map | 1 + node_modules/source-map/lib/array-set.js | 121 + node_modules/source-map/lib/base64-vlq.js | 140 + node_modules/source-map/lib/base64.js | 67 + node_modules/source-map/lib/binary-search.js | 111 + node_modules/source-map/lib/mapping-list.js | 79 + node_modules/source-map/lib/quick-sort.js | 114 + .../source-map/lib/source-map-consumer.js | 1145 + .../source-map/lib/source-map-generator.js | 425 + node_modules/source-map/lib/source-node.js | 413 + node_modules/source-map/lib/util.js | 488 + node_modules/source-map/package.json | 73 + node_modules/source-map/source-map.d.ts | 98 + node_modules/source-map/source-map.js | 8 + node_modules/strnum/.vscode/launch.json | 25 + node_modules/strnum/LICENSE | 21 + node_modules/strnum/README.md | 86 + node_modules/strnum/package.json | 24 + node_modules/strnum/strnum.js | 124 + node_modules/strnum/strnum.test.js | 150 + node_modules/tr46/.npmignore | 4 + node_modules/tr46/index.js | 193 + node_modules/tr46/lib/.gitkeep | 0 node_modules/tr46/lib/mappingTable.json | 1 + node_modules/tr46/package.json | 31 + node_modules/tsx/LICENSE | 21 + node_modules/tsx/README.md | 244 + node_modules/tsx/dist/cl.cjs | 54 + node_modules/tsx/dist/cli.js | 55 + node_modules/tsx/dist/loade.cjs | 2 + node_modules/tsx/dist/loader.js | 2 + node_modules/tsx/dist/package-421ee107.cjs | 1 + node_modules/tsx/dist/package-e00fa201.js | 1 + .../dist/pkgroll_create-require-6ea41e12.js | 1 + .../dist/pkgroll_create-require-bd710b03.cjs | 1 + node_modules/tsx/dist/preflight..js | 1 + node_modules/tsx/dist/preflight.cjs | 1 + node_modules/tsx/dist/rep.cjs | 3 + node_modules/tsx/dist/repl.js | 3 + node_modules/tsx/dist/suppress-warnings..js | 1 + node_modules/tsx/dist/suppress-warnings.cjs | 1 + node_modules/tsx/package.json | 41 + node_modules/tunnel/.idea/encodings.xml | 6 + node_modules/tunnel/.idea/modules.xml | 8 + node_modules/tunnel/.idea/node-tunnel.iml | 12 + node_modules/tunnel/.idea/vcs.xml | 6 + node_modules/tunnel/.idea/workspace.xml | 797 + node_modules/tunnel/.travis.yml | 6 + node_modules/tunnel/CHANGELOG.md | 22 + node_modules/tunnel/LICENSE | 21 + node_modules/tunnel/README.md | 185 + node_modules/tunnel/index.js | 1 + node_modules/tunnel/lib/tunnel.js | 264 + node_modules/tunnel/package.json | 34 + node_modules/universal-user-agent/LICENSE.md | 7 + node_modules/universal-user-agent/README.md | 25 + .../universal-user-agent/dist-node/index.js | 18 + .../dist-node/index.js.map | 1 + .../universal-user-agent/dist-src/index.js | 9 + .../dist-types/index.d.ts | 1 + .../universal-user-agent/dist-web/index.js | 12 + .../dist-web/index.js.map | 1 + .../universal-user-agent/package.json | 31 + node_modules/uuid/CHANGELOG.md | 229 + node_modules/uuid/CONTRIBUTING.md | 18 + node_modules/uuid/LICENSE.md | 9 + node_modules/uuid/README.md | 505 + node_modules/uuid/dist/bin/uuid | 2 + node_modules/uuid/dist/esm-browser/index.js | 9 + node_modules/uuid/dist/esm-browser/md5.js | 215 + node_modules/uuid/dist/esm-browser/nil.js | 1 + node_modules/uuid/dist/esm-browser/parse.js | 35 + node_modules/uuid/dist/esm-browser/regex.js | 1 + node_modules/uuid/dist/esm-browser/rng.js | 19 + node_modules/uuid/dist/esm-browser/sha1.js | 96 + .../uuid/dist/esm-browser/stringify.js | 30 + node_modules/uuid/dist/esm-browser/v1.js | 95 + node_modules/uuid/dist/esm-browser/v3.js | 4 + node_modules/uuid/dist/esm-browser/v35.js | 64 + node_modules/uuid/dist/esm-browser/v4.js | 24 + node_modules/uuid/dist/esm-browser/v5.js | 4 + .../uuid/dist/esm-browser/validate.js | 7 + node_modules/uuid/dist/esm-browser/version.js | 11 + node_modules/uuid/dist/esm-node/index.js | 9 + node_modules/uuid/dist/esm-node/md5.js | 13 + node_modules/uuid/dist/esm-node/nil.js | 1 + node_modules/uuid/dist/esm-node/parse.js | 35 + node_modules/uuid/dist/esm-node/regex.js | 1 + node_modules/uuid/dist/esm-node/rng.js | 12 + node_modules/uuid/dist/esm-node/sha1.js | 13 + node_modules/uuid/dist/esm-node/stringify.js | 29 + node_modules/uuid/dist/esm-node/v1.js | 95 + node_modules/uuid/dist/esm-node/v3.js | 4 + node_modules/uuid/dist/esm-node/v35.js | 64 + node_modules/uuid/dist/esm-node/v4.js | 24 + node_modules/uuid/dist/esm-node/v5.js | 4 + node_modules/uuid/dist/esm-node/validate.js | 7 + node_modules/uuid/dist/esm-node/version.js | 11 + node_modules/uuid/dist/index.js | 79 + node_modules/uuid/dist/md5-browser.js | 223 + node_modules/uuid/dist/md5.js | 23 + node_modules/uuid/dist/nil.js | 8 + node_modules/uuid/dist/parse.js | 45 + node_modules/uuid/dist/regex.js | 8 + node_modules/uuid/dist/rng-browser.js | 26 + node_modules/uuid/dist/rng.js | 24 + node_modules/uuid/dist/sha1-browser.js | 104 + node_modules/uuid/dist/sha1.js | 23 + node_modules/uuid/dist/stringify.js | 39 + node_modules/uuid/dist/umd/uuid.min.js | 1 + node_modules/uuid/dist/umd/uuidNIL.min.js | 1 + node_modules/uuid/dist/umd/uuidParse.min.js | 1 + .../uuid/dist/umd/uuidStringify.min.js | 1 + .../uuid/dist/umd/uuidValidate.min.js | 1 + node_modules/uuid/dist/umd/uuidVersion.min.js | 1 + node_modules/uuid/dist/umd/uuidv1.min.js | 1 + node_modules/uuid/dist/umd/uuidv3.min.js | 1 + node_modules/uuid/dist/umd/uuidv4.min.js | 1 + node_modules/uuid/dist/umd/uuidv5.min.js | 1 + node_modules/uuid/dist/uuid-bin.js | 85 + node_modules/uuid/dist/v1.js | 107 + node_modules/uuid/dist/v3.js | 16 + node_modules/uuid/dist/v35.js | 78 + node_modules/uuid/dist/v4.js | 37 + node_modules/uuid/dist/v5.js | 16 + node_modules/uuid/dist/validate.js | 17 + node_modules/uuid/dist/version.js | 21 + node_modules/uuid/package.json | 135 + node_modules/uuid/wrapper.mjs | 10 + node_modules/webidl-conversions/LICENSE.md | 12 + node_modules/webidl-conversions/README.md | 53 + node_modules/webidl-conversions/lib/index.js | 189 + node_modules/webidl-conversions/package.json | 23 + node_modules/whatwg-url/LICENSE.txt | 21 + node_modules/whatwg-url/README.md | 67 + node_modules/whatwg-url/lib/URL-impl.js | 200 + node_modules/whatwg-url/lib/URL.js | 196 + node_modules/whatwg-url/lib/public-api.js | 11 + .../whatwg-url/lib/url-state-machine.js | 1297 + node_modules/whatwg-url/lib/utils.js | 20 + node_modules/whatwg-url/package.json | 32 + node_modules/wrappy/LICENSE | 15 + node_modules/wrappy/README.md | 36 + node_modules/wrappy/package.json | 29 + node_modules/wrappy/wrappy.js | 33 + node_modules/xml-js/LICENSE | 21 + node_modules/xml-js/README.md | 390 + node_modules/xml-js/bin/cli-helper.js | 47 + node_modules/xml-js/bin/cli.js | 83 + node_modules/xml-js/bin/test.json | 23 + node_modules/xml-js/bin/test.xml | 3 + node_modules/xml-js/dist/xml-js.js | 8310 +++ node_modules/xml-js/dist/xml-js.min.js | 8 + node_modules/xml-js/index.js | 1 + node_modules/xml-js/lib/array-helper.js | 11 + node_modules/xml-js/lib/index.js | 13 + node_modules/xml-js/lib/js2xml.js | 320 + node_modules/xml-js/lib/json2xml.js | 18 + node_modules/xml-js/lib/options-helper.js | 43 + node_modules/xml-js/lib/xml2js.js | 362 + node_modules/xml-js/lib/xml2json.js | 22 + node_modules/xml-js/package.json | 111 + node_modules/xml-js/types/index.d.ts | 154 + node_modules/xml-js/types/tsconfig.json | 14 + node_modules/xml-js/types/typings.json | 4 + node_modules/xml-js/types/xml-js-tests.ts | 60 + node_modules/xml-js/webpack.config.js | 28 + 659 files changed, 151536 insertions(+) create mode 100644 README.md create mode 100644 action.yml create mode 100644 lib/index.js create mode 100644 lib/index.js.map create mode 120000 node_modules/.bin/esbuild create mode 120000 node_modules/.bin/fxparser create mode 120000 node_modules/.bin/tsx create mode 120000 node_modules/.bin/uuid create mode 120000 node_modules/.bin/xml-js create mode 100644 node_modules/.yarn-integrity create mode 100644 node_modules/@actions/core/LICENSE.md create mode 100644 node_modules/@actions/core/README.md create mode 100644 node_modules/@actions/core/lib/command.d.ts create mode 100644 node_modules/@actions/core/lib/command.js create mode 100644 node_modules/@actions/core/lib/command.js.map create mode 100644 node_modules/@actions/core/lib/core.d.ts create mode 100644 node_modules/@actions/core/lib/core.js create mode 100644 node_modules/@actions/core/lib/core.js.map create mode 100644 node_modules/@actions/core/lib/file-command.d.ts create mode 100644 node_modules/@actions/core/lib/file-command.js create mode 100644 node_modules/@actions/core/lib/file-command.js.map create mode 100644 node_modules/@actions/core/lib/oidc-utils.d.ts create mode 100644 node_modules/@actions/core/lib/oidc-utils.js create mode 100644 node_modules/@actions/core/lib/oidc-utils.js.map create mode 100644 node_modules/@actions/core/lib/path-utils.d.ts create mode 100644 node_modules/@actions/core/lib/path-utils.js create mode 100644 node_modules/@actions/core/lib/path-utils.js.map create mode 100644 node_modules/@actions/core/lib/summary.d.ts create mode 100644 node_modules/@actions/core/lib/summary.js create mode 100644 node_modules/@actions/core/lib/summary.js.map create mode 100644 node_modules/@actions/core/lib/utils.d.ts create mode 100644 node_modules/@actions/core/lib/utils.js create mode 100644 node_modules/@actions/core/lib/utils.js.map create mode 120000 node_modules/@actions/core/node_modules/.bin/uuid create mode 100644 node_modules/@actions/core/package.json create mode 100644 node_modules/@actions/github/LICENSE.md create mode 100644 node_modules/@actions/github/README.md create mode 100644 node_modules/@actions/github/lib/context.d.ts create mode 100644 node_modules/@actions/github/lib/context.js create mode 100644 node_modules/@actions/github/lib/context.js.map create mode 100644 node_modules/@actions/github/lib/github.d.ts create mode 100644 node_modules/@actions/github/lib/github.js create mode 100644 node_modules/@actions/github/lib/github.js.map create mode 100644 node_modules/@actions/github/lib/interfaces.d.ts create mode 100644 node_modules/@actions/github/lib/interfaces.js create mode 100644 node_modules/@actions/github/lib/interfaces.js.map create mode 100644 node_modules/@actions/github/lib/internal/utils.d.ts create mode 100644 node_modules/@actions/github/lib/internal/utils.js create mode 100644 node_modules/@actions/github/lib/internal/utils.js.map create mode 100644 node_modules/@actions/github/lib/utils.d.ts create mode 100644 node_modules/@actions/github/lib/utils.js create mode 100644 node_modules/@actions/github/lib/utils.js.map create mode 100644 node_modules/@actions/github/package.json create mode 100644 node_modules/@actions/glob/LICENSE.md create mode 100644 node_modules/@actions/glob/README.md create mode 100644 node_modules/@actions/glob/lib/glob.d.ts create mode 100644 node_modules/@actions/glob/lib/glob.js create mode 100644 node_modules/@actions/glob/lib/glob.js.map create mode 100644 node_modules/@actions/glob/lib/internal-glob-options-helper.d.ts create mode 100644 node_modules/@actions/glob/lib/internal-glob-options-helper.js create mode 100644 node_modules/@actions/glob/lib/internal-glob-options-helper.js.map create mode 100644 node_modules/@actions/glob/lib/internal-glob-options.d.ts create mode 100644 node_modules/@actions/glob/lib/internal-glob-options.js create mode 100644 node_modules/@actions/glob/lib/internal-glob-options.js.map create mode 100644 node_modules/@actions/glob/lib/internal-globber.d.ts create mode 100644 node_modules/@actions/glob/lib/internal-globber.js create mode 100644 node_modules/@actions/glob/lib/internal-globber.js.map create mode 100644 node_modules/@actions/glob/lib/internal-hash-file-options.d.ts create mode 100644 node_modules/@actions/glob/lib/internal-hash-file-options.js create mode 100644 node_modules/@actions/glob/lib/internal-hash-file-options.js.map create mode 100644 node_modules/@actions/glob/lib/internal-hash-files.d.ts create mode 100644 node_modules/@actions/glob/lib/internal-hash-files.js create mode 100644 node_modules/@actions/glob/lib/internal-hash-files.js.map create mode 100644 node_modules/@actions/glob/lib/internal-match-kind.d.ts create mode 100644 node_modules/@actions/glob/lib/internal-match-kind.js create mode 100644 node_modules/@actions/glob/lib/internal-match-kind.js.map create mode 100644 node_modules/@actions/glob/lib/internal-path-helper.d.ts create mode 100644 node_modules/@actions/glob/lib/internal-path-helper.js create mode 100644 node_modules/@actions/glob/lib/internal-path-helper.js.map create mode 100644 node_modules/@actions/glob/lib/internal-path.d.ts create mode 100644 node_modules/@actions/glob/lib/internal-path.js create mode 100644 node_modules/@actions/glob/lib/internal-path.js.map create mode 100644 node_modules/@actions/glob/lib/internal-pattern-helper.d.ts create mode 100644 node_modules/@actions/glob/lib/internal-pattern-helper.js create mode 100644 node_modules/@actions/glob/lib/internal-pattern-helper.js.map create mode 100644 node_modules/@actions/glob/lib/internal-pattern.d.ts create mode 100644 node_modules/@actions/glob/lib/internal-pattern.js create mode 100644 node_modules/@actions/glob/lib/internal-pattern.js.map create mode 100644 node_modules/@actions/glob/lib/internal-search-state.d.ts create mode 100644 node_modules/@actions/glob/lib/internal-search-state.js create mode 100644 node_modules/@actions/glob/lib/internal-search-state.js.map create mode 100644 node_modules/@actions/glob/package.json create mode 100644 node_modules/@actions/http-client/LICENSE create mode 100644 node_modules/@actions/http-client/README.md create mode 100644 node_modules/@actions/http-client/lib/auth.d.ts create mode 100644 node_modules/@actions/http-client/lib/auth.js create mode 100644 node_modules/@actions/http-client/lib/auth.js.map create mode 100644 node_modules/@actions/http-client/lib/index.d.ts create mode 100644 node_modules/@actions/http-client/lib/index.js create mode 100644 node_modules/@actions/http-client/lib/index.js.map create mode 100644 node_modules/@actions/http-client/lib/interfaces.d.ts create mode 100644 node_modules/@actions/http-client/lib/interfaces.js create mode 100644 node_modules/@actions/http-client/lib/interfaces.js.map create mode 100644 node_modules/@actions/http-client/lib/proxy.d.ts create mode 100644 node_modules/@actions/http-client/lib/proxy.js create mode 100644 node_modules/@actions/http-client/lib/proxy.js.map create mode 100644 node_modules/@actions/http-client/package.json create mode 100644 node_modules/@esbuild-kit/cjs-loader/LICENSE create mode 100644 node_modules/@esbuild-kit/cjs-loader/README.md create mode 100755 node_modules/@esbuild-kit/cjs-loader/dist/index.js create mode 100644 node_modules/@esbuild-kit/cjs-loader/package.json create mode 100644 node_modules/@esbuild-kit/core-utils/LICENSE create mode 100644 node_modules/@esbuild-kit/core-utils/README.md create mode 100644 node_modules/@esbuild-kit/core-utils/dist/index.d.ts create mode 100755 node_modules/@esbuild-kit/core-utils/dist/index.js create mode 120000 node_modules/@esbuild-kit/core-utils/node_modules/.bin/esbuild create mode 100644 node_modules/@esbuild-kit/core-utils/package.json create mode 100644 node_modules/@esbuild-kit/esm-loader/LICENSE create mode 100644 node_modules/@esbuild-kit/esm-loader/README.md create mode 100755 node_modules/@esbuild-kit/esm-loader/dist/index.js create mode 100644 node_modules/@esbuild-kit/esm-loader/package.json create mode 100644 node_modules/@esbuild/linux-x64/README.md create mode 100755 node_modules/@esbuild/linux-x64/bin/esbuild create mode 100644 node_modules/@esbuild/linux-x64/package.json create mode 100644 node_modules/@octokit/auth-token/LICENSE create mode 100644 node_modules/@octokit/auth-token/README.md create mode 100644 node_modules/@octokit/auth-token/dist-node/index.js create mode 100644 node_modules/@octokit/auth-token/dist-node/index.js.map create mode 100644 node_modules/@octokit/auth-token/dist-src/auth.js create mode 100644 node_modules/@octokit/auth-token/dist-src/hook.js create mode 100644 node_modules/@octokit/auth-token/dist-src/index.js create mode 100644 node_modules/@octokit/auth-token/dist-src/types.js create mode 100644 node_modules/@octokit/auth-token/dist-src/with-authorization-prefix.js create mode 100644 node_modules/@octokit/auth-token/dist-types/auth.d.ts create mode 100644 node_modules/@octokit/auth-token/dist-types/hook.d.ts create mode 100644 node_modules/@octokit/auth-token/dist-types/index.d.ts create mode 100644 node_modules/@octokit/auth-token/dist-types/types.d.ts create mode 100644 node_modules/@octokit/auth-token/dist-types/with-authorization-prefix.d.ts create mode 100644 node_modules/@octokit/auth-token/dist-web/index.js create mode 100644 node_modules/@octokit/auth-token/dist-web/index.js.map create mode 100644 node_modules/@octokit/auth-token/package.json create mode 100644 node_modules/@octokit/core/LICENSE create mode 100644 node_modules/@octokit/core/README.md create mode 100644 node_modules/@octokit/core/dist-node/index.js create mode 100644 node_modules/@octokit/core/dist-node/index.js.map create mode 100644 node_modules/@octokit/core/dist-src/index.js create mode 100644 node_modules/@octokit/core/dist-src/types.js create mode 100644 node_modules/@octokit/core/dist-src/version.js create mode 100644 node_modules/@octokit/core/dist-types/index.d.ts create mode 100644 node_modules/@octokit/core/dist-types/types.d.ts create mode 100644 node_modules/@octokit/core/dist-types/version.d.ts create mode 100644 node_modules/@octokit/core/dist-web/index.js create mode 100644 node_modules/@octokit/core/dist-web/index.js.map create mode 100644 node_modules/@octokit/core/package.json create mode 100644 node_modules/@octokit/endpoint/LICENSE create mode 100644 node_modules/@octokit/endpoint/README.md create mode 100644 node_modules/@octokit/endpoint/dist-node/index.js create mode 100644 node_modules/@octokit/endpoint/dist-node/index.js.map create mode 100644 node_modules/@octokit/endpoint/dist-src/defaults.js create mode 100644 node_modules/@octokit/endpoint/dist-src/endpoint-with-defaults.js create mode 100644 node_modules/@octokit/endpoint/dist-src/index.js create mode 100644 node_modules/@octokit/endpoint/dist-src/merge.js create mode 100644 node_modules/@octokit/endpoint/dist-src/parse.js create mode 100644 node_modules/@octokit/endpoint/dist-src/util/add-query-parameters.js create mode 100644 node_modules/@octokit/endpoint/dist-src/util/extract-url-variable-names.js create mode 100644 node_modules/@octokit/endpoint/dist-src/util/lowercase-keys.js create mode 100644 node_modules/@octokit/endpoint/dist-src/util/merge-deep.js create mode 100644 node_modules/@octokit/endpoint/dist-src/util/omit.js create mode 100644 node_modules/@octokit/endpoint/dist-src/util/remove-undefined-properties.js create mode 100644 node_modules/@octokit/endpoint/dist-src/util/url-template.js create mode 100644 node_modules/@octokit/endpoint/dist-src/version.js create mode 100644 node_modules/@octokit/endpoint/dist-src/with-defaults.js create mode 100644 node_modules/@octokit/endpoint/dist-types/defaults.d.ts create mode 100644 node_modules/@octokit/endpoint/dist-types/endpoint-with-defaults.d.ts create mode 100644 node_modules/@octokit/endpoint/dist-types/index.d.ts create mode 100644 node_modules/@octokit/endpoint/dist-types/merge.d.ts create mode 100644 node_modules/@octokit/endpoint/dist-types/parse.d.ts create mode 100644 node_modules/@octokit/endpoint/dist-types/util/add-query-parameters.d.ts create mode 100644 node_modules/@octokit/endpoint/dist-types/util/extract-url-variable-names.d.ts create mode 100644 node_modules/@octokit/endpoint/dist-types/util/lowercase-keys.d.ts create mode 100644 node_modules/@octokit/endpoint/dist-types/util/merge-deep.d.ts create mode 100644 node_modules/@octokit/endpoint/dist-types/util/omit.d.ts create mode 100644 node_modules/@octokit/endpoint/dist-types/util/remove-undefined-properties.d.ts create mode 100644 node_modules/@octokit/endpoint/dist-types/util/url-template.d.ts create mode 100644 node_modules/@octokit/endpoint/dist-types/version.d.ts create mode 100644 node_modules/@octokit/endpoint/dist-types/with-defaults.d.ts create mode 100644 node_modules/@octokit/endpoint/dist-web/index.js create mode 100644 node_modules/@octokit/endpoint/dist-web/index.js.map create mode 100644 node_modules/@octokit/endpoint/package.json create mode 100644 node_modules/@octokit/graphql/LICENSE create mode 100644 node_modules/@octokit/graphql/README.md create mode 100644 node_modules/@octokit/graphql/dist-node/index.js create mode 100644 node_modules/@octokit/graphql/dist-node/index.js.map create mode 100644 node_modules/@octokit/graphql/dist-src/error.js create mode 100644 node_modules/@octokit/graphql/dist-src/graphql.js create mode 100644 node_modules/@octokit/graphql/dist-src/index.js create mode 100644 node_modules/@octokit/graphql/dist-src/types.js create mode 100644 node_modules/@octokit/graphql/dist-src/version.js create mode 100644 node_modules/@octokit/graphql/dist-src/with-defaults.js create mode 100644 node_modules/@octokit/graphql/dist-types/error.d.ts create mode 100644 node_modules/@octokit/graphql/dist-types/graphql.d.ts create mode 100644 node_modules/@octokit/graphql/dist-types/index.d.ts create mode 100644 node_modules/@octokit/graphql/dist-types/types.d.ts create mode 100644 node_modules/@octokit/graphql/dist-types/version.d.ts create mode 100644 node_modules/@octokit/graphql/dist-types/with-defaults.d.ts create mode 100644 node_modules/@octokit/graphql/dist-web/index.js create mode 100644 node_modules/@octokit/graphql/dist-web/index.js.map create mode 100644 node_modules/@octokit/graphql/package.json create mode 100644 node_modules/@octokit/openapi-types/LICENSE create mode 100644 node_modules/@octokit/openapi-types/README.md create mode 100644 node_modules/@octokit/openapi-types/package.json create mode 100644 node_modules/@octokit/openapi-types/types.d.ts create mode 100644 node_modules/@octokit/plugin-paginate-rest/LICENSE create mode 100644 node_modules/@octokit/plugin-paginate-rest/README.md create mode 100644 node_modules/@octokit/plugin-paginate-rest/dist-node/index.js create mode 100644 node_modules/@octokit/plugin-paginate-rest/dist-node/index.js.map create mode 100644 node_modules/@octokit/plugin-paginate-rest/dist-src/compose-paginate.js create mode 100644 node_modules/@octokit/plugin-paginate-rest/dist-src/generated/paginating-endpoints.js create mode 100644 node_modules/@octokit/plugin-paginate-rest/dist-src/index.js create mode 100644 node_modules/@octokit/plugin-paginate-rest/dist-src/iterator.js create mode 100644 node_modules/@octokit/plugin-paginate-rest/dist-src/normalize-paginated-list-response.js create mode 100644 node_modules/@octokit/plugin-paginate-rest/dist-src/paginate.js create mode 100644 node_modules/@octokit/plugin-paginate-rest/dist-src/paginating-endpoints.js create mode 100644 node_modules/@octokit/plugin-paginate-rest/dist-src/types.js create mode 100644 node_modules/@octokit/plugin-paginate-rest/dist-src/version.js create mode 100644 node_modules/@octokit/plugin-paginate-rest/dist-types/compose-paginate.d.ts create mode 100644 node_modules/@octokit/plugin-paginate-rest/dist-types/generated/paginating-endpoints.d.ts create mode 100644 node_modules/@octokit/plugin-paginate-rest/dist-types/index.d.ts create mode 100644 node_modules/@octokit/plugin-paginate-rest/dist-types/iterator.d.ts create mode 100644 node_modules/@octokit/plugin-paginate-rest/dist-types/normalize-paginated-list-response.d.ts create mode 100644 node_modules/@octokit/plugin-paginate-rest/dist-types/paginate.d.ts create mode 100644 node_modules/@octokit/plugin-paginate-rest/dist-types/paginating-endpoints.d.ts create mode 100644 node_modules/@octokit/plugin-paginate-rest/dist-types/types.d.ts create mode 100644 node_modules/@octokit/plugin-paginate-rest/dist-types/version.d.ts create mode 100644 node_modules/@octokit/plugin-paginate-rest/dist-web/index.js create mode 100644 node_modules/@octokit/plugin-paginate-rest/dist-web/index.js.map create mode 100644 node_modules/@octokit/plugin-paginate-rest/package.json create mode 100644 node_modules/@octokit/plugin-rest-endpoint-methods/LICENSE create mode 100644 node_modules/@octokit/plugin-rest-endpoint-methods/README.md create mode 100644 node_modules/@octokit/plugin-rest-endpoint-methods/dist-node/index.js create mode 100644 node_modules/@octokit/plugin-rest-endpoint-methods/dist-node/index.js.map create mode 100644 node_modules/@octokit/plugin-rest-endpoint-methods/dist-src/endpoints-to-methods.js create mode 100644 node_modules/@octokit/plugin-rest-endpoint-methods/dist-src/generated/endpoints.js create mode 100644 node_modules/@octokit/plugin-rest-endpoint-methods/dist-src/generated/method-types.js create mode 100644 node_modules/@octokit/plugin-rest-endpoint-methods/dist-src/generated/parameters-and-response-types.js create mode 100644 node_modules/@octokit/plugin-rest-endpoint-methods/dist-src/index.js create mode 100644 node_modules/@octokit/plugin-rest-endpoint-methods/dist-src/types.js create mode 100644 node_modules/@octokit/plugin-rest-endpoint-methods/dist-src/version.js create mode 100644 node_modules/@octokit/plugin-rest-endpoint-methods/dist-types/endpoints-to-methods.d.ts create mode 100644 node_modules/@octokit/plugin-rest-endpoint-methods/dist-types/generated/endpoints.d.ts create mode 100644 node_modules/@octokit/plugin-rest-endpoint-methods/dist-types/generated/method-types.d.ts create mode 100644 node_modules/@octokit/plugin-rest-endpoint-methods/dist-types/generated/parameters-and-response-types.d.ts create mode 100644 node_modules/@octokit/plugin-rest-endpoint-methods/dist-types/index.d.ts create mode 100644 node_modules/@octokit/plugin-rest-endpoint-methods/dist-types/types.d.ts create mode 100644 node_modules/@octokit/plugin-rest-endpoint-methods/dist-types/version.d.ts create mode 100644 node_modules/@octokit/plugin-rest-endpoint-methods/dist-web/index.js create mode 100644 node_modules/@octokit/plugin-rest-endpoint-methods/dist-web/index.js.map create mode 100644 node_modules/@octokit/plugin-rest-endpoint-methods/package.json create mode 100644 node_modules/@octokit/request-error/LICENSE create mode 100644 node_modules/@octokit/request-error/README.md create mode 100644 node_modules/@octokit/request-error/dist-node/index.js create mode 100644 node_modules/@octokit/request-error/dist-node/index.js.map create mode 100644 node_modules/@octokit/request-error/dist-src/index.js create mode 100644 node_modules/@octokit/request-error/dist-src/types.js create mode 100644 node_modules/@octokit/request-error/dist-types/index.d.ts create mode 100644 node_modules/@octokit/request-error/dist-types/types.d.ts create mode 100644 node_modules/@octokit/request-error/dist-web/index.js create mode 100644 node_modules/@octokit/request-error/dist-web/index.js.map create mode 100644 node_modules/@octokit/request-error/package.json create mode 100644 node_modules/@octokit/request/LICENSE create mode 100644 node_modules/@octokit/request/README.md create mode 100644 node_modules/@octokit/request/dist-node/index.js create mode 100644 node_modules/@octokit/request/dist-node/index.js.map create mode 100644 node_modules/@octokit/request/dist-src/fetch-wrapper.js create mode 100644 node_modules/@octokit/request/dist-src/get-buffer-response.js create mode 100644 node_modules/@octokit/request/dist-src/index.js create mode 100644 node_modules/@octokit/request/dist-src/version.js create mode 100644 node_modules/@octokit/request/dist-src/with-defaults.js create mode 100644 node_modules/@octokit/request/dist-types/fetch-wrapper.d.ts create mode 100644 node_modules/@octokit/request/dist-types/get-buffer-response.d.ts create mode 100644 node_modules/@octokit/request/dist-types/index.d.ts create mode 100644 node_modules/@octokit/request/dist-types/version.d.ts create mode 100644 node_modules/@octokit/request/dist-types/with-defaults.d.ts create mode 100644 node_modules/@octokit/request/dist-web/index.js create mode 100644 node_modules/@octokit/request/dist-web/index.js.map create mode 100644 node_modules/@octokit/request/package.json create mode 100644 node_modules/@octokit/types/LICENSE create mode 100644 node_modules/@octokit/types/README.md create mode 100644 node_modules/@octokit/types/dist-node/index.js create mode 100644 node_modules/@octokit/types/dist-node/index.js.map create mode 100644 node_modules/@octokit/types/dist-src/AuthInterface.js create mode 100644 node_modules/@octokit/types/dist-src/EndpointDefaults.js create mode 100644 node_modules/@octokit/types/dist-src/EndpointInterface.js create mode 100644 node_modules/@octokit/types/dist-src/EndpointOptions.js create mode 100644 node_modules/@octokit/types/dist-src/Fetch.js create mode 100644 node_modules/@octokit/types/dist-src/GetResponseTypeFromEndpointMethod.js create mode 100644 node_modules/@octokit/types/dist-src/OctokitResponse.js create mode 100644 node_modules/@octokit/types/dist-src/RequestError.js create mode 100644 node_modules/@octokit/types/dist-src/RequestHeaders.js create mode 100644 node_modules/@octokit/types/dist-src/RequestInterface.js create mode 100644 node_modules/@octokit/types/dist-src/RequestMethod.js create mode 100644 node_modules/@octokit/types/dist-src/RequestOptions.js create mode 100644 node_modules/@octokit/types/dist-src/RequestParameters.js create mode 100644 node_modules/@octokit/types/dist-src/RequestRequestOptions.js create mode 100644 node_modules/@octokit/types/dist-src/ResponseHeaders.js create mode 100644 node_modules/@octokit/types/dist-src/Route.js create mode 100644 node_modules/@octokit/types/dist-src/Signal.js create mode 100644 node_modules/@octokit/types/dist-src/StrategyInterface.js create mode 100644 node_modules/@octokit/types/dist-src/Url.js create mode 100644 node_modules/@octokit/types/dist-src/VERSION.js create mode 100644 node_modules/@octokit/types/dist-src/generated/Endpoints.js create mode 100644 node_modules/@octokit/types/dist-src/index.js create mode 100644 node_modules/@octokit/types/dist-types/AuthInterface.d.ts create mode 100644 node_modules/@octokit/types/dist-types/EndpointDefaults.d.ts create mode 100644 node_modules/@octokit/types/dist-types/EndpointInterface.d.ts create mode 100644 node_modules/@octokit/types/dist-types/EndpointOptions.d.ts create mode 100644 node_modules/@octokit/types/dist-types/Fetch.d.ts create mode 100644 node_modules/@octokit/types/dist-types/GetResponseTypeFromEndpointMethod.d.ts create mode 100644 node_modules/@octokit/types/dist-types/OctokitResponse.d.ts create mode 100644 node_modules/@octokit/types/dist-types/RequestError.d.ts create mode 100644 node_modules/@octokit/types/dist-types/RequestHeaders.d.ts create mode 100644 node_modules/@octokit/types/dist-types/RequestInterface.d.ts create mode 100644 node_modules/@octokit/types/dist-types/RequestMethod.d.ts create mode 100644 node_modules/@octokit/types/dist-types/RequestOptions.d.ts create mode 100644 node_modules/@octokit/types/dist-types/RequestParameters.d.ts create mode 100644 node_modules/@octokit/types/dist-types/RequestRequestOptions.d.ts create mode 100644 node_modules/@octokit/types/dist-types/ResponseHeaders.d.ts create mode 100644 node_modules/@octokit/types/dist-types/Route.d.ts create mode 100644 node_modules/@octokit/types/dist-types/Signal.d.ts create mode 100644 node_modules/@octokit/types/dist-types/StrategyInterface.d.ts create mode 100644 node_modules/@octokit/types/dist-types/Url.d.ts create mode 100644 node_modules/@octokit/types/dist-types/VERSION.d.ts create mode 100644 node_modules/@octokit/types/dist-types/generated/Endpoints.d.ts create mode 100644 node_modules/@octokit/types/dist-types/index.d.ts create mode 100644 node_modules/@octokit/types/dist-web/index.js create mode 100644 node_modules/@octokit/types/dist-web/index.js.map create mode 100644 node_modules/@octokit/types/package.json create mode 100644 node_modules/balanced-match/.github/FUNDING.yml create mode 100644 node_modules/balanced-match/LICENSE.md create mode 100644 node_modules/balanced-match/README.md create mode 100644 node_modules/balanced-match/index.js create mode 100644 node_modules/balanced-match/package.json create mode 100644 node_modules/before-after-hook/LICENSE create mode 100644 node_modules/before-after-hook/README.md create mode 100644 node_modules/before-after-hook/index.d.ts create mode 100644 node_modules/before-after-hook/index.js create mode 100644 node_modules/before-after-hook/lib/add.js create mode 100644 node_modules/before-after-hook/lib/register.js create mode 100644 node_modules/before-after-hook/lib/remove.js create mode 100644 node_modules/before-after-hook/package.json create mode 100644 node_modules/brace-expansion/LICENSE create mode 100644 node_modules/brace-expansion/README.md create mode 100644 node_modules/brace-expansion/index.js create mode 100644 node_modules/brace-expansion/package.json create mode 100644 node_modules/buffer-from/LICENSE create mode 100644 node_modules/buffer-from/index.js create mode 100644 node_modules/buffer-from/package.json create mode 100644 node_modules/buffer-from/readme.md create mode 100644 node_modules/concat-map/.travis.yml create mode 100644 node_modules/concat-map/LICENSE create mode 100644 node_modules/concat-map/README.markdown create mode 100644 node_modules/concat-map/example/map.js create mode 100644 node_modules/concat-map/index.js create mode 100644 node_modules/concat-map/package.json create mode 100644 node_modules/concat-map/test/map.js create mode 100644 node_modules/deprecation/LICENSE create mode 100644 node_modules/deprecation/README.md create mode 100644 node_modules/deprecation/dist-node/index.js create mode 100644 node_modules/deprecation/dist-src/index.js create mode 100644 node_modules/deprecation/dist-types/index.d.ts create mode 100644 node_modules/deprecation/dist-web/index.js create mode 100644 node_modules/deprecation/package.json create mode 100644 node_modules/dom-walk/LICENCE create mode 100644 node_modules/dom-walk/Makefile create mode 100644 node_modules/dom-walk/README.md create mode 100644 node_modules/dom-walk/example/index.js create mode 100644 node_modules/dom-walk/index.js create mode 100644 node_modules/dom-walk/package.json create mode 100644 node_modules/esbuild/LICENSE.md create mode 100644 node_modules/esbuild/README.md create mode 100755 node_modules/esbuild/bin/esbuild create mode 100644 node_modules/esbuild/install.js create mode 100644 node_modules/esbuild/lib/main.d.ts create mode 100644 node_modules/esbuild/lib/main.js create mode 100644 node_modules/esbuild/package.json create mode 100644 node_modules/fast-xml-parser/CHANGELOG.md create mode 100644 node_modules/fast-xml-parser/LICENSE create mode 100644 node_modules/fast-xml-parser/README.md create mode 100644 node_modules/fast-xml-parser/package.json create mode 100755 node_modules/fast-xml-parser/src/cli/cli.js create mode 100644 node_modules/fast-xml-parser/src/cli/man.js create mode 100644 node_modules/fast-xml-parser/src/cli/read.js create mode 100644 node_modules/fast-xml-parser/src/fxp.d.ts create mode 100644 node_modules/fast-xml-parser/src/fxp.js create mode 100644 node_modules/fast-xml-parser/src/util.js create mode 100644 node_modules/fast-xml-parser/src/validator.js create mode 100644 node_modules/fast-xml-parser/src/xmlbuilder/json2xml.js create mode 100644 node_modules/fast-xml-parser/src/xmlbuilder/orderedJs2Xml.js create mode 100644 node_modules/fast-xml-parser/src/xmlbuilder/prettifyJs2Xml.js create mode 100644 node_modules/fast-xml-parser/src/xmlparser/DocTypeReader.js create mode 100644 node_modules/fast-xml-parser/src/xmlparser/OptionsBuilder.js create mode 100644 node_modules/fast-xml-parser/src/xmlparser/OrderedObjParser.js create mode 100644 node_modules/fast-xml-parser/src/xmlparser/XMLParser.js create mode 100644 node_modules/fast-xml-parser/src/xmlparser/node2json.js create mode 100644 node_modules/fast-xml-parser/src/xmlparser/xmlNode.js create mode 100644 node_modules/get-tsconfig/LICENSE create mode 100644 node_modules/get-tsconfig/README.md create mode 100755 node_modules/get-tsconfig/dist/index.cjs create mode 100644 node_modules/get-tsconfig/dist/index.d.cts create mode 100644 node_modules/get-tsconfig/dist/index.d.mts create mode 100755 node_modules/get-tsconfig/dist/index.mjs create mode 100644 node_modules/get-tsconfig/package.json create mode 100644 node_modules/global/.travis.yml create mode 100644 node_modules/global/LICENSE create mode 100644 node_modules/global/README.md create mode 100644 node_modules/global/console.js create mode 100644 node_modules/global/document.js create mode 100644 node_modules/global/package.json create mode 100644 node_modules/global/process.js create mode 100644 node_modules/global/window.js create mode 100644 node_modules/is-plain-object/LICENSE create mode 100644 node_modules/is-plain-object/README.md create mode 100644 node_modules/is-plain-object/dist/is-plain-object.js create mode 100644 node_modules/is-plain-object/dist/is-plain-object.mjs create mode 100644 node_modules/is-plain-object/is-plain-object.d.ts create mode 100644 node_modules/is-plain-object/package.json create mode 100644 node_modules/min-document/.jshintrc create mode 100644 node_modules/min-document/.npmignore create mode 100644 node_modules/min-document/.testem.json create mode 100644 node_modules/min-document/.travis.yml create mode 100644 node_modules/min-document/CONTRIBUTION.md create mode 100644 node_modules/min-document/LICENCE create mode 100644 node_modules/min-document/README.md create mode 100644 node_modules/min-document/docs.mli create mode 100644 node_modules/min-document/document.js create mode 100644 node_modules/min-document/dom-comment.js create mode 100644 node_modules/min-document/dom-element.js create mode 100644 node_modules/min-document/dom-fragment.js create mode 100644 node_modules/min-document/dom-text.js create mode 100644 node_modules/min-document/event.js create mode 100644 node_modules/min-document/event/add-event-listener.js create mode 100644 node_modules/min-document/event/dispatch-event.js create mode 100644 node_modules/min-document/event/remove-event-listener.js create mode 100644 node_modules/min-document/index.js create mode 100644 node_modules/min-document/package.json create mode 100644 node_modules/min-document/serialize.js create mode 100644 node_modules/min-document/test/cleanup.js create mode 100644 node_modules/min-document/test/index.js create mode 100644 node_modules/min-document/test/static/index.html create mode 100644 node_modules/min-document/test/static/test-adapter.js create mode 100644 node_modules/min-document/test/test-document.js create mode 100644 node_modules/min-document/test/test-dom-comment.js create mode 100644 node_modules/min-document/test/test-dom-element.js create mode 100644 node_modules/minimatch/LICENSE create mode 100644 node_modules/minimatch/README.md create mode 100644 node_modules/minimatch/minimatch.js create mode 100644 node_modules/minimatch/package.json create mode 100644 node_modules/node-fetch/LICENSE.md create mode 100644 node_modules/node-fetch/README.md create mode 100644 node_modules/node-fetch/browser.js create mode 100644 node_modules/node-fetch/lib/index.es.js create mode 100644 node_modules/node-fetch/lib/index.js create mode 100644 node_modules/node-fetch/lib/index.mjs create mode 100644 node_modules/node-fetch/package.json create mode 100644 node_modules/once/LICENSE create mode 100644 node_modules/once/README.md create mode 100644 node_modules/once/once.js create mode 100644 node_modules/once/package.json create mode 100644 node_modules/process/.eslintrc create mode 100644 node_modules/process/LICENSE create mode 100644 node_modules/process/README.md create mode 100644 node_modules/process/browser.js create mode 100644 node_modules/process/index.js create mode 100644 node_modules/process/package.json create mode 100644 node_modules/process/test.js create mode 100644 node_modules/sax/LICENSE create mode 100644 node_modules/sax/README.md create mode 100644 node_modules/sax/lib/sax.js create mode 100644 node_modules/sax/package.json create mode 100644 node_modules/source-map-support/LICENSE.md create mode 100644 node_modules/source-map-support/README.md create mode 100644 node_modules/source-map-support/browser-source-map-support.js create mode 100644 node_modules/source-map-support/package.json create mode 100644 node_modules/source-map-support/register-hook-require.js create mode 100644 node_modules/source-map-support/register.js create mode 100644 node_modules/source-map-support/source-map-support.js create mode 100644 node_modules/source-map/CHANGELOG.md create mode 100644 node_modules/source-map/LICENSE create mode 100644 node_modules/source-map/README.md create mode 100644 node_modules/source-map/dist/source-map.debug.js create mode 100644 node_modules/source-map/dist/source-map.js create mode 100644 node_modules/source-map/dist/source-map.min.js create mode 100644 node_modules/source-map/dist/source-map.min.js.map create mode 100644 node_modules/source-map/lib/array-set.js create mode 100644 node_modules/source-map/lib/base64-vlq.js create mode 100644 node_modules/source-map/lib/base64.js create mode 100644 node_modules/source-map/lib/binary-search.js create mode 100644 node_modules/source-map/lib/mapping-list.js create mode 100644 node_modules/source-map/lib/quick-sort.js create mode 100644 node_modules/source-map/lib/source-map-consumer.js create mode 100644 node_modules/source-map/lib/source-map-generator.js create mode 100644 node_modules/source-map/lib/source-node.js create mode 100644 node_modules/source-map/lib/util.js create mode 100644 node_modules/source-map/package.json create mode 100644 node_modules/source-map/source-map.d.ts create mode 100644 node_modules/source-map/source-map.js create mode 100644 node_modules/strnum/.vscode/launch.json create mode 100644 node_modules/strnum/LICENSE create mode 100644 node_modules/strnum/README.md create mode 100644 node_modules/strnum/package.json create mode 100644 node_modules/strnum/strnum.js create mode 100644 node_modules/strnum/strnum.test.js create mode 100644 node_modules/tr46/.npmignore create mode 100644 node_modules/tr46/index.js create mode 100644 node_modules/tr46/lib/.gitkeep create mode 100644 node_modules/tr46/lib/mappingTable.json create mode 100644 node_modules/tr46/package.json create mode 100644 node_modules/tsx/LICENSE create mode 100644 node_modules/tsx/README.md create mode 100755 node_modules/tsx/dist/cl.cjs create mode 100755 node_modules/tsx/dist/cli.js create mode 100755 node_modules/tsx/dist/loade.cjs create mode 100755 node_modules/tsx/dist/loader.js create mode 100644 node_modules/tsx/dist/package-421ee107.cjs create mode 100644 node_modules/tsx/dist/package-e00fa201.js create mode 100644 node_modules/tsx/dist/pkgroll_create-require-6ea41e12.js create mode 100644 node_modules/tsx/dist/pkgroll_create-require-bd710b03.cjs create mode 100755 node_modules/tsx/dist/preflight..js create mode 100755 node_modules/tsx/dist/preflight.cjs create mode 100755 node_modules/tsx/dist/rep.cjs create mode 100755 node_modules/tsx/dist/repl.js create mode 100755 node_modules/tsx/dist/suppress-warnings..js create mode 100755 node_modules/tsx/dist/suppress-warnings.cjs create mode 100644 node_modules/tsx/package.json create mode 100644 node_modules/tunnel/.idea/encodings.xml create mode 100644 node_modules/tunnel/.idea/modules.xml create mode 100644 node_modules/tunnel/.idea/node-tunnel.iml create mode 100644 node_modules/tunnel/.idea/vcs.xml create mode 100644 node_modules/tunnel/.idea/workspace.xml create mode 100644 node_modules/tunnel/.travis.yml create mode 100644 node_modules/tunnel/CHANGELOG.md create mode 100644 node_modules/tunnel/LICENSE create mode 100644 node_modules/tunnel/README.md create mode 100644 node_modules/tunnel/index.js create mode 100644 node_modules/tunnel/lib/tunnel.js create mode 100644 node_modules/tunnel/package.json create mode 100644 node_modules/universal-user-agent/LICENSE.md create mode 100644 node_modules/universal-user-agent/README.md create mode 100644 node_modules/universal-user-agent/dist-node/index.js create mode 100644 node_modules/universal-user-agent/dist-node/index.js.map create mode 100644 node_modules/universal-user-agent/dist-src/index.js create mode 100644 node_modules/universal-user-agent/dist-types/index.d.ts create mode 100644 node_modules/universal-user-agent/dist-web/index.js create mode 100644 node_modules/universal-user-agent/dist-web/index.js.map create mode 100644 node_modules/universal-user-agent/package.json create mode 100644 node_modules/uuid/CHANGELOG.md create mode 100644 node_modules/uuid/CONTRIBUTING.md create mode 100644 node_modules/uuid/LICENSE.md create mode 100644 node_modules/uuid/README.md create mode 100755 node_modules/uuid/dist/bin/uuid create mode 100644 node_modules/uuid/dist/esm-browser/index.js create mode 100644 node_modules/uuid/dist/esm-browser/md5.js create mode 100644 node_modules/uuid/dist/esm-browser/nil.js create mode 100644 node_modules/uuid/dist/esm-browser/parse.js create mode 100644 node_modules/uuid/dist/esm-browser/regex.js create mode 100644 node_modules/uuid/dist/esm-browser/rng.js create mode 100644 node_modules/uuid/dist/esm-browser/sha1.js create mode 100644 node_modules/uuid/dist/esm-browser/stringify.js create mode 100644 node_modules/uuid/dist/esm-browser/v1.js create mode 100644 node_modules/uuid/dist/esm-browser/v3.js create mode 100644 node_modules/uuid/dist/esm-browser/v35.js create mode 100644 node_modules/uuid/dist/esm-browser/v4.js create mode 100644 node_modules/uuid/dist/esm-browser/v5.js create mode 100644 node_modules/uuid/dist/esm-browser/validate.js create mode 100644 node_modules/uuid/dist/esm-browser/version.js create mode 100644 node_modules/uuid/dist/esm-node/index.js create mode 100644 node_modules/uuid/dist/esm-node/md5.js create mode 100644 node_modules/uuid/dist/esm-node/nil.js create mode 100644 node_modules/uuid/dist/esm-node/parse.js create mode 100644 node_modules/uuid/dist/esm-node/regex.js create mode 100644 node_modules/uuid/dist/esm-node/rng.js create mode 100644 node_modules/uuid/dist/esm-node/sha1.js create mode 100644 node_modules/uuid/dist/esm-node/stringify.js create mode 100644 node_modules/uuid/dist/esm-node/v1.js create mode 100644 node_modules/uuid/dist/esm-node/v3.js create mode 100644 node_modules/uuid/dist/esm-node/v35.js create mode 100644 node_modules/uuid/dist/esm-node/v4.js create mode 100644 node_modules/uuid/dist/esm-node/v5.js create mode 100644 node_modules/uuid/dist/esm-node/validate.js create mode 100644 node_modules/uuid/dist/esm-node/version.js create mode 100644 node_modules/uuid/dist/index.js create mode 100644 node_modules/uuid/dist/md5-browser.js create mode 100644 node_modules/uuid/dist/md5.js create mode 100644 node_modules/uuid/dist/nil.js create mode 100644 node_modules/uuid/dist/parse.js create mode 100644 node_modules/uuid/dist/regex.js create mode 100644 node_modules/uuid/dist/rng-browser.js create mode 100644 node_modules/uuid/dist/rng.js create mode 100644 node_modules/uuid/dist/sha1-browser.js create mode 100644 node_modules/uuid/dist/sha1.js create mode 100644 node_modules/uuid/dist/stringify.js create mode 100644 node_modules/uuid/dist/umd/uuid.min.js create mode 100644 node_modules/uuid/dist/umd/uuidNIL.min.js create mode 100644 node_modules/uuid/dist/umd/uuidParse.min.js create mode 100644 node_modules/uuid/dist/umd/uuidStringify.min.js create mode 100644 node_modules/uuid/dist/umd/uuidValidate.min.js create mode 100644 node_modules/uuid/dist/umd/uuidVersion.min.js create mode 100644 node_modules/uuid/dist/umd/uuidv1.min.js create mode 100644 node_modules/uuid/dist/umd/uuidv3.min.js create mode 100644 node_modules/uuid/dist/umd/uuidv4.min.js create mode 100644 node_modules/uuid/dist/umd/uuidv5.min.js create mode 100644 node_modules/uuid/dist/uuid-bin.js create mode 100644 node_modules/uuid/dist/v1.js create mode 100644 node_modules/uuid/dist/v3.js create mode 100644 node_modules/uuid/dist/v35.js create mode 100644 node_modules/uuid/dist/v4.js create mode 100644 node_modules/uuid/dist/v5.js create mode 100644 node_modules/uuid/dist/validate.js create mode 100644 node_modules/uuid/dist/version.js create mode 100644 node_modules/uuid/package.json create mode 100644 node_modules/uuid/wrapper.mjs create mode 100644 node_modules/webidl-conversions/LICENSE.md create mode 100644 node_modules/webidl-conversions/README.md create mode 100644 node_modules/webidl-conversions/lib/index.js create mode 100644 node_modules/webidl-conversions/package.json create mode 100644 node_modules/whatwg-url/LICENSE.txt create mode 100644 node_modules/whatwg-url/README.md create mode 100644 node_modules/whatwg-url/lib/URL-impl.js create mode 100644 node_modules/whatwg-url/lib/URL.js create mode 100644 node_modules/whatwg-url/lib/public-api.js create mode 100644 node_modules/whatwg-url/lib/url-state-machine.js create mode 100644 node_modules/whatwg-url/lib/utils.js create mode 100644 node_modules/whatwg-url/package.json create mode 100644 node_modules/wrappy/LICENSE create mode 100644 node_modules/wrappy/README.md create mode 100644 node_modules/wrappy/package.json create mode 100644 node_modules/wrappy/wrappy.js create mode 100644 node_modules/xml-js/LICENSE create mode 100644 node_modules/xml-js/README.md create mode 100644 node_modules/xml-js/bin/cli-helper.js create mode 100755 node_modules/xml-js/bin/cli.js create mode 100644 node_modules/xml-js/bin/test.json create mode 100644 node_modules/xml-js/bin/test.xml create mode 100644 node_modules/xml-js/dist/xml-js.js create mode 100644 node_modules/xml-js/dist/xml-js.min.js create mode 100644 node_modules/xml-js/index.js create mode 100644 node_modules/xml-js/lib/array-helper.js create mode 100644 node_modules/xml-js/lib/index.js create mode 100644 node_modules/xml-js/lib/js2xml.js create mode 100644 node_modules/xml-js/lib/json2xml.js create mode 100644 node_modules/xml-js/lib/options-helper.js create mode 100644 node_modules/xml-js/lib/xml2js.js create mode 100644 node_modules/xml-js/lib/xml2json.js create mode 100644 node_modules/xml-js/package.json create mode 100644 node_modules/xml-js/types/index.d.ts create mode 100644 node_modules/xml-js/types/tsconfig.json create mode 100644 node_modules/xml-js/types/typings.json create mode 100644 node_modules/xml-js/types/xml-js-tests.ts create mode 100644 node_modules/xml-js/webpack.config.js diff --git a/README.md b/README.md new file mode 100644 index 0000000..1eb61f4 --- /dev/null +++ b/README.md @@ -0,0 +1,2 @@ +# testim-junit-reporter +Testim JUnit reporter for GitHub Actions diff --git a/action.yml b/action.yml new file mode 100644 index 0000000..f036b69 --- /dev/null +++ b/action.yml @@ -0,0 +1,51 @@ +name: 'Publish Testim Test Results' +author: 'atlowChemi' +description: 'Report Testim test results as annotations on Github Pull Request [junit]' + +branding: + icon: 'check-circle' + color: 'green' + +inputs: + github_token: + description: 'GitHub API Access Token.' + default: ${{ github.token }} + required: false + commit: + description: 'Commit SHA to update the check status.' + required: false + job_name: + description: 'Specify the name of a check to update' + required: false + default: ${{ github.job }} + summary: + description: 'Additional text to summary output' + required: false + default: '' + check_name: + description: 'Check name for test reports.' + required: false + default: 'Testim Test Report' + report_paths: + description: 'Xml report paths in glob format' + required: false + default: '**/junit-reports/TEST-*.xml' + update_check: + description: 'Defines if the active check should be updated instead' + required: false + default: 'false' + require_tests: + description: 'Fail if no test are found.' + required: false + default: 'false' + fail_on_failure: + description: 'Fail the build in case a test failure occurred.' + required: false + default: 'false' + project_api_key_map: + description: 'Dictionary of Testim API token and project.' + required: false + +runs: + using: 'node16' + main: 'lib/index.js' diff --git a/lib/index.js b/lib/index.js new file mode 100644 index 0000000..993f8e8 --- /dev/null +++ b/lib/index.js @@ -0,0 +1,14091 @@ +"use strict"; +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 __esm = (fn, res) => function __init() { + return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res; +}; +var __commonJS = (cb, mod) => function __require() { + return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; +}; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// node_modules/source-map/lib/base64.js +var require_base64 = __commonJS({ + "node_modules/source-map/lib/base64.js"(exports) { + var intToCharMap = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".split(""); + exports.encode = function(number) { + if (0 <= number && number < intToCharMap.length) { + return intToCharMap[number]; + } + throw new TypeError("Must be between 0 and 63: " + number); + }; + exports.decode = function(charCode) { + var bigA = 65; + var bigZ = 90; + var littleA = 97; + var littleZ = 122; + var zero = 48; + var nine = 57; + var plus = 43; + var slash = 47; + var littleOffset = 26; + var numberOffset = 52; + if (bigA <= charCode && charCode <= bigZ) { + return charCode - bigA; + } + if (littleA <= charCode && charCode <= littleZ) { + return charCode - littleA + littleOffset; + } + if (zero <= charCode && charCode <= nine) { + return charCode - zero + numberOffset; + } + if (charCode == plus) { + return 62; + } + if (charCode == slash) { + return 63; + } + return -1; + }; + } +}); + +// node_modules/source-map/lib/base64-vlq.js +var require_base64_vlq = __commonJS({ + "node_modules/source-map/lib/base64-vlq.js"(exports) { + var base64 = require_base64(); + var VLQ_BASE_SHIFT = 5; + var VLQ_BASE = 1 << VLQ_BASE_SHIFT; + var VLQ_BASE_MASK = VLQ_BASE - 1; + var VLQ_CONTINUATION_BIT = VLQ_BASE; + function toVLQSigned(aValue) { + return aValue < 0 ? (-aValue << 1) + 1 : (aValue << 1) + 0; + } + function fromVLQSigned(aValue) { + var isNegative = (aValue & 1) === 1; + var shifted = aValue >> 1; + return isNegative ? -shifted : shifted; + } + exports.encode = function base64VLQ_encode(aValue) { + var encoded = ""; + var digit; + var vlq = toVLQSigned(aValue); + do { + digit = vlq & VLQ_BASE_MASK; + vlq >>>= VLQ_BASE_SHIFT; + if (vlq > 0) { + digit |= VLQ_CONTINUATION_BIT; + } + encoded += base64.encode(digit); + } while (vlq > 0); + return encoded; + }; + exports.decode = function base64VLQ_decode(aStr, aIndex, aOutParam) { + var strLen = aStr.length; + var result = 0; + var shift = 0; + var continuation, digit; + do { + if (aIndex >= strLen) { + throw new Error("Expected more digits in base 64 VLQ value."); + } + digit = base64.decode(aStr.charCodeAt(aIndex++)); + if (digit === -1) { + throw new Error("Invalid base64 digit: " + aStr.charAt(aIndex - 1)); + } + continuation = !!(digit & VLQ_CONTINUATION_BIT); + digit &= VLQ_BASE_MASK; + result = result + (digit << shift); + shift += VLQ_BASE_SHIFT; + } while (continuation); + aOutParam.value = fromVLQSigned(result); + aOutParam.rest = aIndex; + }; + } +}); + +// node_modules/source-map/lib/util.js +var require_util = __commonJS({ + "node_modules/source-map/lib/util.js"(exports) { + function getArg(aArgs, aName, aDefaultValue) { + if (aName in aArgs) { + return aArgs[aName]; + } else if (arguments.length === 3) { + return aDefaultValue; + } else { + throw new Error('"' + aName + '" is a required argument.'); + } + } + exports.getArg = getArg; + var urlRegexp = /^(?:([\w+\-.]+):)?\/\/(?:(\w+:\w+)@)?([\w.-]*)(?::(\d+))?(.*)$/; + var dataUrlRegexp = /^data:.+\,.+$/; + function urlParse(aUrl) { + var match = aUrl.match(urlRegexp); + if (!match) { + return null; + } + return { + scheme: match[1], + auth: match[2], + host: match[3], + port: match[4], + path: match[5] + }; + } + exports.urlParse = urlParse; + function urlGenerate(aParsedUrl) { + var url = ""; + if (aParsedUrl.scheme) { + url += aParsedUrl.scheme + ":"; + } + url += "//"; + if (aParsedUrl.auth) { + url += aParsedUrl.auth + "@"; + } + if (aParsedUrl.host) { + url += aParsedUrl.host; + } + if (aParsedUrl.port) { + url += ":" + aParsedUrl.port; + } + if (aParsedUrl.path) { + url += aParsedUrl.path; + } + return url; + } + exports.urlGenerate = urlGenerate; + function normalize(aPath) { + var path = aPath; + var url = urlParse(aPath); + if (url) { + if (!url.path) { + return aPath; + } + path = url.path; + } + var isAbsolute = exports.isAbsolute(path); + var parts = path.split(/\/+/); + for (var part, up = 0, i = parts.length - 1; i >= 0; i--) { + part = parts[i]; + if (part === ".") { + parts.splice(i, 1); + } else if (part === "..") { + up++; + } else if (up > 0) { + if (part === "") { + parts.splice(i + 1, up); + up = 0; + } else { + parts.splice(i, 2); + up--; + } + } + } + path = parts.join("/"); + if (path === "") { + path = isAbsolute ? "/" : "."; + } + if (url) { + url.path = path; + return urlGenerate(url); + } + return path; + } + exports.normalize = normalize; + function join(aRoot, aPath) { + if (aRoot === "") { + aRoot = "."; + } + if (aPath === "") { + aPath = "."; + } + var aPathUrl = urlParse(aPath); + var aRootUrl = urlParse(aRoot); + if (aRootUrl) { + aRoot = aRootUrl.path || "/"; + } + if (aPathUrl && !aPathUrl.scheme) { + if (aRootUrl) { + aPathUrl.scheme = aRootUrl.scheme; + } + return urlGenerate(aPathUrl); + } + if (aPathUrl || aPath.match(dataUrlRegexp)) { + return aPath; + } + if (aRootUrl && !aRootUrl.host && !aRootUrl.path) { + aRootUrl.host = aPath; + return urlGenerate(aRootUrl); + } + var joined = aPath.charAt(0) === "/" ? aPath : normalize(aRoot.replace(/\/+$/, "") + "/" + aPath); + if (aRootUrl) { + aRootUrl.path = joined; + return urlGenerate(aRootUrl); + } + return joined; + } + exports.join = join; + exports.isAbsolute = function(aPath) { + return aPath.charAt(0) === "/" || urlRegexp.test(aPath); + }; + function relative(aRoot, aPath) { + if (aRoot === "") { + aRoot = "."; + } + aRoot = aRoot.replace(/\/$/, ""); + var level = 0; + while (aPath.indexOf(aRoot + "/") !== 0) { + var index = aRoot.lastIndexOf("/"); + if (index < 0) { + return aPath; + } + aRoot = aRoot.slice(0, index); + if (aRoot.match(/^([^\/]+:\/)?\/*$/)) { + return aPath; + } + ++level; + } + return Array(level + 1).join("../") + aPath.substr(aRoot.length + 1); + } + exports.relative = relative; + var supportsNullProto = function() { + var obj = /* @__PURE__ */ Object.create(null); + return !("__proto__" in obj); + }(); + function identity(s) { + return s; + } + function toSetString(aStr) { + if (isProtoString(aStr)) { + return "$" + aStr; + } + return aStr; + } + exports.toSetString = supportsNullProto ? identity : toSetString; + function fromSetString(aStr) { + if (isProtoString(aStr)) { + return aStr.slice(1); + } + return aStr; + } + exports.fromSetString = supportsNullProto ? identity : fromSetString; + function isProtoString(s) { + if (!s) { + return false; + } + var length = s.length; + if (length < 9) { + return false; + } + if (s.charCodeAt(length - 1) !== 95 || s.charCodeAt(length - 2) !== 95 || s.charCodeAt(length - 3) !== 111 || s.charCodeAt(length - 4) !== 116 || s.charCodeAt(length - 5) !== 111 || s.charCodeAt(length - 6) !== 114 || s.charCodeAt(length - 7) !== 112 || s.charCodeAt(length - 8) !== 95 || s.charCodeAt(length - 9) !== 95) { + return false; + } + for (var i = length - 10; i >= 0; i--) { + if (s.charCodeAt(i) !== 36) { + return false; + } + } + return true; + } + function compareByOriginalPositions(mappingA, mappingB, onlyCompareOriginal) { + var cmp = strcmp(mappingA.source, mappingB.source); + if (cmp !== 0) { + return cmp; + } + cmp = mappingA.originalLine - mappingB.originalLine; + if (cmp !== 0) { + return cmp; + } + cmp = mappingA.originalColumn - mappingB.originalColumn; + if (cmp !== 0 || onlyCompareOriginal) { + return cmp; + } + cmp = mappingA.generatedColumn - mappingB.generatedColumn; + if (cmp !== 0) { + return cmp; + } + cmp = mappingA.generatedLine - mappingB.generatedLine; + if (cmp !== 0) { + return cmp; + } + return strcmp(mappingA.name, mappingB.name); + } + exports.compareByOriginalPositions = compareByOriginalPositions; + function compareByGeneratedPositionsDeflated(mappingA, mappingB, onlyCompareGenerated) { + var cmp = mappingA.generatedLine - mappingB.generatedLine; + if (cmp !== 0) { + return cmp; + } + cmp = mappingA.generatedColumn - mappingB.generatedColumn; + if (cmp !== 0 || onlyCompareGenerated) { + return cmp; + } + cmp = strcmp(mappingA.source, mappingB.source); + if (cmp !== 0) { + return cmp; + } + cmp = mappingA.originalLine - mappingB.originalLine; + if (cmp !== 0) { + return cmp; + } + cmp = mappingA.originalColumn - mappingB.originalColumn; + if (cmp !== 0) { + return cmp; + } + return strcmp(mappingA.name, mappingB.name); + } + exports.compareByGeneratedPositionsDeflated = compareByGeneratedPositionsDeflated; + function strcmp(aStr1, aStr2) { + if (aStr1 === aStr2) { + return 0; + } + if (aStr1 === null) { + return 1; + } + if (aStr2 === null) { + return -1; + } + if (aStr1 > aStr2) { + return 1; + } + return -1; + } + function compareByGeneratedPositionsInflated(mappingA, mappingB) { + var cmp = mappingA.generatedLine - mappingB.generatedLine; + if (cmp !== 0) { + return cmp; + } + cmp = mappingA.generatedColumn - mappingB.generatedColumn; + if (cmp !== 0) { + return cmp; + } + cmp = strcmp(mappingA.source, mappingB.source); + if (cmp !== 0) { + return cmp; + } + cmp = mappingA.originalLine - mappingB.originalLine; + if (cmp !== 0) { + return cmp; + } + cmp = mappingA.originalColumn - mappingB.originalColumn; + if (cmp !== 0) { + return cmp; + } + return strcmp(mappingA.name, mappingB.name); + } + exports.compareByGeneratedPositionsInflated = compareByGeneratedPositionsInflated; + function parseSourceMapInput(str) { + return JSON.parse(str.replace(/^\)]}'[^\n]*\n/, "")); + } + exports.parseSourceMapInput = parseSourceMapInput; + function computeSourceURL(sourceRoot, sourceURL, sourceMapURL) { + sourceURL = sourceURL || ""; + if (sourceRoot) { + if (sourceRoot[sourceRoot.length - 1] !== "/" && sourceURL[0] !== "/") { + sourceRoot += "/"; + } + sourceURL = sourceRoot + sourceURL; + } + if (sourceMapURL) { + var parsed = urlParse(sourceMapURL); + if (!parsed) { + throw new Error("sourceMapURL could not be parsed"); + } + if (parsed.path) { + var index = parsed.path.lastIndexOf("/"); + if (index >= 0) { + parsed.path = parsed.path.substring(0, index + 1); + } + } + sourceURL = join(urlGenerate(parsed), sourceURL); + } + return normalize(sourceURL); + } + exports.computeSourceURL = computeSourceURL; + } +}); + +// node_modules/source-map/lib/array-set.js +var require_array_set = __commonJS({ + "node_modules/source-map/lib/array-set.js"(exports) { + var util = require_util(); + var has = Object.prototype.hasOwnProperty; + var hasNativeMap = typeof Map !== "undefined"; + function ArraySet() { + this._array = []; + this._set = hasNativeMap ? /* @__PURE__ */ new Map() : /* @__PURE__ */ Object.create(null); + } + ArraySet.fromArray = function ArraySet_fromArray(aArray, aAllowDuplicates) { + var set = new ArraySet(); + for (var i = 0, len = aArray.length; i < len; i++) { + set.add(aArray[i], aAllowDuplicates); + } + return set; + }; + ArraySet.prototype.size = function ArraySet_size() { + return hasNativeMap ? this._set.size : Object.getOwnPropertyNames(this._set).length; + }; + ArraySet.prototype.add = function ArraySet_add(aStr, aAllowDuplicates) { + var sStr = hasNativeMap ? aStr : util.toSetString(aStr); + var isDuplicate = hasNativeMap ? this.has(aStr) : has.call(this._set, sStr); + var idx = this._array.length; + if (!isDuplicate || aAllowDuplicates) { + this._array.push(aStr); + } + if (!isDuplicate) { + if (hasNativeMap) { + this._set.set(aStr, idx); + } else { + this._set[sStr] = idx; + } + } + }; + ArraySet.prototype.has = function ArraySet_has(aStr) { + if (hasNativeMap) { + return this._set.has(aStr); + } else { + var sStr = util.toSetString(aStr); + return has.call(this._set, sStr); + } + }; + ArraySet.prototype.indexOf = function ArraySet_indexOf(aStr) { + if (hasNativeMap) { + var idx = this._set.get(aStr); + if (idx >= 0) { + return idx; + } + } else { + var sStr = util.toSetString(aStr); + if (has.call(this._set, sStr)) { + return this._set[sStr]; + } + } + throw new Error('"' + aStr + '" is not in the set.'); + }; + ArraySet.prototype.at = function ArraySet_at(aIdx) { + if (aIdx >= 0 && aIdx < this._array.length) { + return this._array[aIdx]; + } + throw new Error("No element indexed by " + aIdx); + }; + ArraySet.prototype.toArray = function ArraySet_toArray() { + return this._array.slice(); + }; + exports.ArraySet = ArraySet; + } +}); + +// node_modules/source-map/lib/mapping-list.js +var require_mapping_list = __commonJS({ + "node_modules/source-map/lib/mapping-list.js"(exports) { + var util = require_util(); + function generatedPositionAfter(mappingA, mappingB) { + var lineA = mappingA.generatedLine; + var lineB = mappingB.generatedLine; + var columnA = mappingA.generatedColumn; + var columnB = mappingB.generatedColumn; + return lineB > lineA || lineB == lineA && columnB >= columnA || util.compareByGeneratedPositionsInflated(mappingA, mappingB) <= 0; + } + function MappingList() { + this._array = []; + this._sorted = true; + this._last = { generatedLine: -1, generatedColumn: 0 }; + } + MappingList.prototype.unsortedForEach = function MappingList_forEach(aCallback, aThisArg) { + this._array.forEach(aCallback, aThisArg); + }; + MappingList.prototype.add = function MappingList_add(aMapping) { + if (generatedPositionAfter(this._last, aMapping)) { + this._last = aMapping; + this._array.push(aMapping); + } else { + this._sorted = false; + this._array.push(aMapping); + } + }; + MappingList.prototype.toArray = function MappingList_toArray() { + if (!this._sorted) { + this._array.sort(util.compareByGeneratedPositionsInflated); + this._sorted = true; + } + return this._array; + }; + exports.MappingList = MappingList; + } +}); + +// node_modules/source-map/lib/source-map-generator.js +var require_source_map_generator = __commonJS({ + "node_modules/source-map/lib/source-map-generator.js"(exports) { + var base64VLQ = require_base64_vlq(); + var util = require_util(); + var ArraySet = require_array_set().ArraySet; + var MappingList = require_mapping_list().MappingList; + function SourceMapGenerator(aArgs) { + if (!aArgs) { + aArgs = {}; + } + this._file = util.getArg(aArgs, "file", null); + this._sourceRoot = util.getArg(aArgs, "sourceRoot", null); + this._skipValidation = util.getArg(aArgs, "skipValidation", false); + this._sources = new ArraySet(); + this._names = new ArraySet(); + this._mappings = new MappingList(); + this._sourcesContents = null; + } + SourceMapGenerator.prototype._version = 3; + SourceMapGenerator.fromSourceMap = function SourceMapGenerator_fromSourceMap(aSourceMapConsumer) { + var sourceRoot = aSourceMapConsumer.sourceRoot; + var generator = new SourceMapGenerator({ + file: aSourceMapConsumer.file, + sourceRoot + }); + aSourceMapConsumer.eachMapping(function(mapping) { + var newMapping = { + generated: { + line: mapping.generatedLine, + column: mapping.generatedColumn + } + }; + if (mapping.source != null) { + newMapping.source = mapping.source; + if (sourceRoot != null) { + newMapping.source = util.relative(sourceRoot, newMapping.source); + } + newMapping.original = { + line: mapping.originalLine, + column: mapping.originalColumn + }; + if (mapping.name != null) { + newMapping.name = mapping.name; + } + } + generator.addMapping(newMapping); + }); + aSourceMapConsumer.sources.forEach(function(sourceFile) { + var sourceRelative = sourceFile; + if (sourceRoot !== null) { + sourceRelative = util.relative(sourceRoot, sourceFile); + } + if (!generator._sources.has(sourceRelative)) { + generator._sources.add(sourceRelative); + } + var content = aSourceMapConsumer.sourceContentFor(sourceFile); + if (content != null) { + generator.setSourceContent(sourceFile, content); + } + }); + return generator; + }; + SourceMapGenerator.prototype.addMapping = function SourceMapGenerator_addMapping(aArgs) { + var generated = util.getArg(aArgs, "generated"); + var original = util.getArg(aArgs, "original", null); + var source = util.getArg(aArgs, "source", null); + var name = util.getArg(aArgs, "name", null); + if (!this._skipValidation) { + this._validateMapping(generated, original, source, name); + } + if (source != null) { + source = String(source); + if (!this._sources.has(source)) { + this._sources.add(source); + } + } + if (name != null) { + name = String(name); + if (!this._names.has(name)) { + this._names.add(name); + } + } + this._mappings.add({ + generatedLine: generated.line, + generatedColumn: generated.column, + originalLine: original != null && original.line, + originalColumn: original != null && original.column, + source, + name + }); + }; + SourceMapGenerator.prototype.setSourceContent = function SourceMapGenerator_setSourceContent(aSourceFile, aSourceContent) { + var source = aSourceFile; + if (this._sourceRoot != null) { + source = util.relative(this._sourceRoot, source); + } + if (aSourceContent != null) { + if (!this._sourcesContents) { + this._sourcesContents = /* @__PURE__ */ Object.create(null); + } + this._sourcesContents[util.toSetString(source)] = aSourceContent; + } else if (this._sourcesContents) { + delete this._sourcesContents[util.toSetString(source)]; + if (Object.keys(this._sourcesContents).length === 0) { + this._sourcesContents = null; + } + } + }; + SourceMapGenerator.prototype.applySourceMap = function SourceMapGenerator_applySourceMap(aSourceMapConsumer, aSourceFile, aSourceMapPath) { + var sourceFile = aSourceFile; + if (aSourceFile == null) { + if (aSourceMapConsumer.file == null) { + throw new Error( + `SourceMapGenerator.prototype.applySourceMap requires either an explicit source file, or the source map's "file" property. Both were omitted.` + ); + } + sourceFile = aSourceMapConsumer.file; + } + var sourceRoot = this._sourceRoot; + if (sourceRoot != null) { + sourceFile = util.relative(sourceRoot, sourceFile); + } + var newSources = new ArraySet(); + var newNames = new ArraySet(); + this._mappings.unsortedForEach(function(mapping) { + if (mapping.source === sourceFile && mapping.originalLine != null) { + var original = aSourceMapConsumer.originalPositionFor({ + line: mapping.originalLine, + column: mapping.originalColumn + }); + if (original.source != null) { + mapping.source = original.source; + if (aSourceMapPath != null) { + mapping.source = util.join(aSourceMapPath, mapping.source); + } + if (sourceRoot != null) { + mapping.source = util.relative(sourceRoot, mapping.source); + } + mapping.originalLine = original.line; + mapping.originalColumn = original.column; + if (original.name != null) { + mapping.name = original.name; + } + } + } + var source = mapping.source; + if (source != null && !newSources.has(source)) { + newSources.add(source); + } + var name = mapping.name; + if (name != null && !newNames.has(name)) { + newNames.add(name); + } + }, this); + this._sources = newSources; + this._names = newNames; + aSourceMapConsumer.sources.forEach(function(sourceFile2) { + var content = aSourceMapConsumer.sourceContentFor(sourceFile2); + if (content != null) { + if (aSourceMapPath != null) { + sourceFile2 = util.join(aSourceMapPath, sourceFile2); + } + if (sourceRoot != null) { + sourceFile2 = util.relative(sourceRoot, sourceFile2); + } + this.setSourceContent(sourceFile2, content); + } + }, this); + }; + SourceMapGenerator.prototype._validateMapping = function SourceMapGenerator_validateMapping(aGenerated, aOriginal, aSource, aName) { + if (aOriginal && typeof aOriginal.line !== "number" && typeof aOriginal.column !== "number") { + throw new Error( + "original.line and original.column are not numbers -- you probably meant to omit the original mapping entirely and only map the generated position. If so, pass null for the original mapping instead of an object with empty or null values." + ); + } + if (aGenerated && "line" in aGenerated && "column" in aGenerated && aGenerated.line > 0 && aGenerated.column >= 0 && !aOriginal && !aSource && !aName) { + return; + } else if (aGenerated && "line" in aGenerated && "column" in aGenerated && aOriginal && "line" in aOriginal && "column" in aOriginal && aGenerated.line > 0 && aGenerated.column >= 0 && aOriginal.line > 0 && aOriginal.column >= 0 && aSource) { + return; + } else { + throw new Error("Invalid mapping: " + JSON.stringify({ + generated: aGenerated, + source: aSource, + original: aOriginal, + name: aName + })); + } + }; + SourceMapGenerator.prototype._serializeMappings = function SourceMapGenerator_serializeMappings() { + var previousGeneratedColumn = 0; + var previousGeneratedLine = 1; + var previousOriginalColumn = 0; + var previousOriginalLine = 0; + var previousName = 0; + var previousSource = 0; + var result = ""; + var next; + var mapping; + var nameIdx; + var sourceIdx; + var mappings = this._mappings.toArray(); + for (var i = 0, len = mappings.length; i < len; i++) { + mapping = mappings[i]; + next = ""; + if (mapping.generatedLine !== previousGeneratedLine) { + previousGeneratedColumn = 0; + while (mapping.generatedLine !== previousGeneratedLine) { + next += ";"; + previousGeneratedLine++; + } + } else { + if (i > 0) { + if (!util.compareByGeneratedPositionsInflated(mapping, mappings[i - 1])) { + continue; + } + next += ","; + } + } + next += base64VLQ.encode(mapping.generatedColumn - previousGeneratedColumn); + previousGeneratedColumn = mapping.generatedColumn; + if (mapping.source != null) { + sourceIdx = this._sources.indexOf(mapping.source); + next += base64VLQ.encode(sourceIdx - previousSource); + previousSource = sourceIdx; + next += base64VLQ.encode(mapping.originalLine - 1 - previousOriginalLine); + previousOriginalLine = mapping.originalLine - 1; + next += base64VLQ.encode(mapping.originalColumn - previousOriginalColumn); + previousOriginalColumn = mapping.originalColumn; + if (mapping.name != null) { + nameIdx = this._names.indexOf(mapping.name); + next += base64VLQ.encode(nameIdx - previousName); + previousName = nameIdx; + } + } + result += next; + } + return result; + }; + SourceMapGenerator.prototype._generateSourcesContent = function SourceMapGenerator_generateSourcesContent(aSources, aSourceRoot) { + return aSources.map(function(source) { + if (!this._sourcesContents) { + return null; + } + if (aSourceRoot != null) { + source = util.relative(aSourceRoot, source); + } + var key = util.toSetString(source); + return Object.prototype.hasOwnProperty.call(this._sourcesContents, key) ? this._sourcesContents[key] : null; + }, this); + }; + SourceMapGenerator.prototype.toJSON = function SourceMapGenerator_toJSON() { + var map = { + version: this._version, + sources: this._sources.toArray(), + names: this._names.toArray(), + mappings: this._serializeMappings() + }; + if (this._file != null) { + map.file = this._file; + } + if (this._sourceRoot != null) { + map.sourceRoot = this._sourceRoot; + } + if (this._sourcesContents) { + map.sourcesContent = this._generateSourcesContent(map.sources, map.sourceRoot); + } + return map; + }; + SourceMapGenerator.prototype.toString = function SourceMapGenerator_toString() { + return JSON.stringify(this.toJSON()); + }; + exports.SourceMapGenerator = SourceMapGenerator; + } +}); + +// node_modules/source-map/lib/binary-search.js +var require_binary_search = __commonJS({ + "node_modules/source-map/lib/binary-search.js"(exports) { + exports.GREATEST_LOWER_BOUND = 1; + exports.LEAST_UPPER_BOUND = 2; + function recursiveSearch(aLow, aHigh, aNeedle, aHaystack, aCompare, aBias) { + var mid = Math.floor((aHigh - aLow) / 2) + aLow; + var cmp = aCompare(aNeedle, aHaystack[mid], true); + if (cmp === 0) { + return mid; + } else if (cmp > 0) { + if (aHigh - mid > 1) { + return recursiveSearch(mid, aHigh, aNeedle, aHaystack, aCompare, aBias); + } + if (aBias == exports.LEAST_UPPER_BOUND) { + return aHigh < aHaystack.length ? aHigh : -1; + } else { + return mid; + } + } else { + if (mid - aLow > 1) { + return recursiveSearch(aLow, mid, aNeedle, aHaystack, aCompare, aBias); + } + if (aBias == exports.LEAST_UPPER_BOUND) { + return mid; + } else { + return aLow < 0 ? -1 : aLow; + } + } + } + exports.search = function search(aNeedle, aHaystack, aCompare, aBias) { + if (aHaystack.length === 0) { + return -1; + } + var index = recursiveSearch( + -1, + aHaystack.length, + aNeedle, + aHaystack, + aCompare, + aBias || exports.GREATEST_LOWER_BOUND + ); + if (index < 0) { + return -1; + } + while (index - 1 >= 0) { + if (aCompare(aHaystack[index], aHaystack[index - 1], true) !== 0) { + break; + } + --index; + } + return index; + }; + } +}); + +// node_modules/source-map/lib/quick-sort.js +var require_quick_sort = __commonJS({ + "node_modules/source-map/lib/quick-sort.js"(exports) { + function swap(ary, x, y) { + var temp = ary[x]; + ary[x] = ary[y]; + ary[y] = temp; + } + function randomIntInRange(low, high) { + return Math.round(low + Math.random() * (high - low)); + } + function doQuickSort(ary, comparator, p, r) { + if (p < r) { + var pivotIndex = randomIntInRange(p, r); + var i = p - 1; + swap(ary, pivotIndex, r); + var pivot = ary[r]; + for (var j = p; j < r; j++) { + if (comparator(ary[j], pivot) <= 0) { + i += 1; + swap(ary, i, j); + } + } + swap(ary, i + 1, j); + var q = i + 1; + doQuickSort(ary, comparator, p, q - 1); + doQuickSort(ary, comparator, q + 1, r); + } + } + exports.quickSort = function(ary, comparator) { + doQuickSort(ary, comparator, 0, ary.length - 1); + }; + } +}); + +// node_modules/source-map/lib/source-map-consumer.js +var require_source_map_consumer = __commonJS({ + "node_modules/source-map/lib/source-map-consumer.js"(exports) { + var util = require_util(); + var binarySearch = require_binary_search(); + var ArraySet = require_array_set().ArraySet; + var base64VLQ = require_base64_vlq(); + var quickSort = require_quick_sort().quickSort; + function SourceMapConsumer(aSourceMap, aSourceMapURL) { + var sourceMap = aSourceMap; + if (typeof aSourceMap === "string") { + sourceMap = util.parseSourceMapInput(aSourceMap); + } + return sourceMap.sections != null ? new IndexedSourceMapConsumer(sourceMap, aSourceMapURL) : new BasicSourceMapConsumer(sourceMap, aSourceMapURL); + } + SourceMapConsumer.fromSourceMap = function(aSourceMap, aSourceMapURL) { + return BasicSourceMapConsumer.fromSourceMap(aSourceMap, aSourceMapURL); + }; + SourceMapConsumer.prototype._version = 3; + SourceMapConsumer.prototype.__generatedMappings = null; + Object.defineProperty(SourceMapConsumer.prototype, "_generatedMappings", { + configurable: true, + enumerable: true, + get: function() { + if (!this.__generatedMappings) { + this._parseMappings(this._mappings, this.sourceRoot); + } + return this.__generatedMappings; + } + }); + SourceMapConsumer.prototype.__originalMappings = null; + Object.defineProperty(SourceMapConsumer.prototype, "_originalMappings", { + configurable: true, + enumerable: true, + get: function() { + if (!this.__originalMappings) { + this._parseMappings(this._mappings, this.sourceRoot); + } + return this.__originalMappings; + } + }); + SourceMapConsumer.prototype._charIsMappingSeparator = function SourceMapConsumer_charIsMappingSeparator(aStr, index) { + var c = aStr.charAt(index); + return c === ";" || c === ","; + }; + SourceMapConsumer.prototype._parseMappings = function SourceMapConsumer_parseMappings(aStr, aSourceRoot) { + throw new Error("Subclasses must implement _parseMappings"); + }; + SourceMapConsumer.GENERATED_ORDER = 1; + SourceMapConsumer.ORIGINAL_ORDER = 2; + SourceMapConsumer.GREATEST_LOWER_BOUND = 1; + SourceMapConsumer.LEAST_UPPER_BOUND = 2; + SourceMapConsumer.prototype.eachMapping = function SourceMapConsumer_eachMapping(aCallback, aContext, aOrder) { + var context3 = aContext || null; + var order = aOrder || SourceMapConsumer.GENERATED_ORDER; + var mappings; + switch (order) { + case SourceMapConsumer.GENERATED_ORDER: + mappings = this._generatedMappings; + break; + case SourceMapConsumer.ORIGINAL_ORDER: + mappings = this._originalMappings; + break; + default: + throw new Error("Unknown order of iteration."); + } + var sourceRoot = this.sourceRoot; + mappings.map(function(mapping) { + var source = mapping.source === null ? null : this._sources.at(mapping.source); + source = util.computeSourceURL(sourceRoot, source, this._sourceMapURL); + return { + source, + generatedLine: mapping.generatedLine, + generatedColumn: mapping.generatedColumn, + originalLine: mapping.originalLine, + originalColumn: mapping.originalColumn, + name: mapping.name === null ? null : this._names.at(mapping.name) + }; + }, this).forEach(aCallback, context3); + }; + SourceMapConsumer.prototype.allGeneratedPositionsFor = function SourceMapConsumer_allGeneratedPositionsFor(aArgs) { + var line = util.getArg(aArgs, "line"); + var needle = { + source: util.getArg(aArgs, "source"), + originalLine: line, + originalColumn: util.getArg(aArgs, "column", 0) + }; + needle.source = this._findSourceIndex(needle.source); + if (needle.source < 0) { + return []; + } + var mappings = []; + var index = this._findMapping( + needle, + this._originalMappings, + "originalLine", + "originalColumn", + util.compareByOriginalPositions, + binarySearch.LEAST_UPPER_BOUND + ); + if (index >= 0) { + var mapping = this._originalMappings[index]; + if (aArgs.column === void 0) { + var originalLine = mapping.originalLine; + while (mapping && mapping.originalLine === originalLine) { + mappings.push({ + line: util.getArg(mapping, "generatedLine", null), + column: util.getArg(mapping, "generatedColumn", null), + lastColumn: util.getArg(mapping, "lastGeneratedColumn", null) + }); + mapping = this._originalMappings[++index]; + } + } else { + var originalColumn = mapping.originalColumn; + while (mapping && mapping.originalLine === line && mapping.originalColumn == originalColumn) { + mappings.push({ + line: util.getArg(mapping, "generatedLine", null), + column: util.getArg(mapping, "generatedColumn", null), + lastColumn: util.getArg(mapping, "lastGeneratedColumn", null) + }); + mapping = this._originalMappings[++index]; + } + } + } + return mappings; + }; + exports.SourceMapConsumer = SourceMapConsumer; + function BasicSourceMapConsumer(aSourceMap, aSourceMapURL) { + var sourceMap = aSourceMap; + if (typeof aSourceMap === "string") { + sourceMap = util.parseSourceMapInput(aSourceMap); + } + var version2 = util.getArg(sourceMap, "version"); + var sources = util.getArg(sourceMap, "sources"); + var names = util.getArg(sourceMap, "names", []); + var sourceRoot = util.getArg(sourceMap, "sourceRoot", null); + var sourcesContent = util.getArg(sourceMap, "sourcesContent", null); + var mappings = util.getArg(sourceMap, "mappings"); + var file = util.getArg(sourceMap, "file", null); + if (version2 != this._version) { + throw new Error("Unsupported version: " + version2); + } + if (sourceRoot) { + sourceRoot = util.normalize(sourceRoot); + } + sources = sources.map(String).map(util.normalize).map(function(source) { + return sourceRoot && util.isAbsolute(sourceRoot) && util.isAbsolute(source) ? util.relative(sourceRoot, source) : source; + }); + this._names = ArraySet.fromArray(names.map(String), true); + this._sources = ArraySet.fromArray(sources, true); + this._absoluteSources = this._sources.toArray().map(function(s) { + return util.computeSourceURL(sourceRoot, s, aSourceMapURL); + }); + this.sourceRoot = sourceRoot; + this.sourcesContent = sourcesContent; + this._mappings = mappings; + this._sourceMapURL = aSourceMapURL; + this.file = file; + } + BasicSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype); + BasicSourceMapConsumer.prototype.consumer = SourceMapConsumer; + BasicSourceMapConsumer.prototype._findSourceIndex = function(aSource) { + var relativeSource = aSource; + if (this.sourceRoot != null) { + relativeSource = util.relative(this.sourceRoot, relativeSource); + } + if (this._sources.has(relativeSource)) { + return this._sources.indexOf(relativeSource); + } + var i; + for (i = 0; i < this._absoluteSources.length; ++i) { + if (this._absoluteSources[i] == aSource) { + return i; + } + } + return -1; + }; + BasicSourceMapConsumer.fromSourceMap = function SourceMapConsumer_fromSourceMap(aSourceMap, aSourceMapURL) { + var smc = Object.create(BasicSourceMapConsumer.prototype); + var names = smc._names = ArraySet.fromArray(aSourceMap._names.toArray(), true); + var sources = smc._sources = ArraySet.fromArray(aSourceMap._sources.toArray(), true); + smc.sourceRoot = aSourceMap._sourceRoot; + smc.sourcesContent = aSourceMap._generateSourcesContent( + smc._sources.toArray(), + smc.sourceRoot + ); + smc.file = aSourceMap._file; + smc._sourceMapURL = aSourceMapURL; + smc._absoluteSources = smc._sources.toArray().map(function(s) { + return util.computeSourceURL(smc.sourceRoot, s, aSourceMapURL); + }); + var generatedMappings = aSourceMap._mappings.toArray().slice(); + var destGeneratedMappings = smc.__generatedMappings = []; + var destOriginalMappings = smc.__originalMappings = []; + for (var i = 0, length = generatedMappings.length; i < length; i++) { + var srcMapping = generatedMappings[i]; + var destMapping = new Mapping(); + destMapping.generatedLine = srcMapping.generatedLine; + destMapping.generatedColumn = srcMapping.generatedColumn; + if (srcMapping.source) { + destMapping.source = sources.indexOf(srcMapping.source); + destMapping.originalLine = srcMapping.originalLine; + destMapping.originalColumn = srcMapping.originalColumn; + if (srcMapping.name) { + destMapping.name = names.indexOf(srcMapping.name); + } + destOriginalMappings.push(destMapping); + } + destGeneratedMappings.push(destMapping); + } + quickSort(smc.__originalMappings, util.compareByOriginalPositions); + return smc; + }; + BasicSourceMapConsumer.prototype._version = 3; + Object.defineProperty(BasicSourceMapConsumer.prototype, "sources", { + get: function() { + return this._absoluteSources.slice(); + } + }); + function Mapping() { + this.generatedLine = 0; + this.generatedColumn = 0; + this.source = null; + this.originalLine = null; + this.originalColumn = null; + this.name = null; + } + BasicSourceMapConsumer.prototype._parseMappings = function SourceMapConsumer_parseMappings(aStr, aSourceRoot) { + var generatedLine = 1; + var previousGeneratedColumn = 0; + var previousOriginalLine = 0; + var previousOriginalColumn = 0; + var previousSource = 0; + var previousName = 0; + var length = aStr.length; + var index = 0; + var cachedSegments = {}; + var temp = {}; + var originalMappings = []; + var generatedMappings = []; + var mapping, str, segment, end, value; + while (index < length) { + if (aStr.charAt(index) === ";") { + generatedLine++; + index++; + previousGeneratedColumn = 0; + } else if (aStr.charAt(index) === ",") { + index++; + } else { + mapping = new Mapping(); + mapping.generatedLine = generatedLine; + for (end = index; end < length; end++) { + if (this._charIsMappingSeparator(aStr, end)) { + break; + } + } + str = aStr.slice(index, end); + segment = cachedSegments[str]; + if (segment) { + index += str.length; + } else { + segment = []; + while (index < end) { + base64VLQ.decode(aStr, index, temp); + value = temp.value; + index = temp.rest; + segment.push(value); + } + if (segment.length === 2) { + throw new Error("Found a source, but no line and column"); + } + if (segment.length === 3) { + throw new Error("Found a source and line, but no column"); + } + cachedSegments[str] = segment; + } + mapping.generatedColumn = previousGeneratedColumn + segment[0]; + previousGeneratedColumn = mapping.generatedColumn; + if (segment.length > 1) { + mapping.source = previousSource + segment[1]; + previousSource += segment[1]; + mapping.originalLine = previousOriginalLine + segment[2]; + previousOriginalLine = mapping.originalLine; + mapping.originalLine += 1; + mapping.originalColumn = previousOriginalColumn + segment[3]; + previousOriginalColumn = mapping.originalColumn; + if (segment.length > 4) { + mapping.name = previousName + segment[4]; + previousName += segment[4]; + } + } + generatedMappings.push(mapping); + if (typeof mapping.originalLine === "number") { + originalMappings.push(mapping); + } + } + } + quickSort(generatedMappings, util.compareByGeneratedPositionsDeflated); + this.__generatedMappings = generatedMappings; + quickSort(originalMappings, util.compareByOriginalPositions); + this.__originalMappings = originalMappings; + }; + BasicSourceMapConsumer.prototype._findMapping = function SourceMapConsumer_findMapping(aNeedle, aMappings, aLineName, aColumnName, aComparator, aBias) { + if (aNeedle[aLineName] <= 0) { + throw new TypeError("Line must be greater than or equal to 1, got " + aNeedle[aLineName]); + } + if (aNeedle[aColumnName] < 0) { + throw new TypeError("Column must be greater than or equal to 0, got " + aNeedle[aColumnName]); + } + return binarySearch.search(aNeedle, aMappings, aComparator, aBias); + }; + BasicSourceMapConsumer.prototype.computeColumnSpans = function SourceMapConsumer_computeColumnSpans() { + for (var index = 0; index < this._generatedMappings.length; ++index) { + var mapping = this._generatedMappings[index]; + if (index + 1 < this._generatedMappings.length) { + var nextMapping = this._generatedMappings[index + 1]; + if (mapping.generatedLine === nextMapping.generatedLine) { + mapping.lastGeneratedColumn = nextMapping.generatedColumn - 1; + continue; + } + } + mapping.lastGeneratedColumn = Infinity; + } + }; + BasicSourceMapConsumer.prototype.originalPositionFor = function SourceMapConsumer_originalPositionFor(aArgs) { + var needle = { + generatedLine: util.getArg(aArgs, "line"), + generatedColumn: util.getArg(aArgs, "column") + }; + var index = this._findMapping( + needle, + this._generatedMappings, + "generatedLine", + "generatedColumn", + util.compareByGeneratedPositionsDeflated, + util.getArg(aArgs, "bias", SourceMapConsumer.GREATEST_LOWER_BOUND) + ); + if (index >= 0) { + var mapping = this._generatedMappings[index]; + if (mapping.generatedLine === needle.generatedLine) { + var source = util.getArg(mapping, "source", null); + if (source !== null) { + source = this._sources.at(source); + source = util.computeSourceURL(this.sourceRoot, source, this._sourceMapURL); + } + var name = util.getArg(mapping, "name", null); + if (name !== null) { + name = this._names.at(name); + } + return { + source, + line: util.getArg(mapping, "originalLine", null), + column: util.getArg(mapping, "originalColumn", null), + name + }; + } + } + return { + source: null, + line: null, + column: null, + name: null + }; + }; + BasicSourceMapConsumer.prototype.hasContentsOfAllSources = function BasicSourceMapConsumer_hasContentsOfAllSources() { + if (!this.sourcesContent) { + return false; + } + return this.sourcesContent.length >= this._sources.size() && !this.sourcesContent.some(function(sc) { + return sc == null; + }); + }; + BasicSourceMapConsumer.prototype.sourceContentFor = function SourceMapConsumer_sourceContentFor(aSource, nullOnMissing) { + if (!this.sourcesContent) { + return null; + } + var index = this._findSourceIndex(aSource); + if (index >= 0) { + return this.sourcesContent[index]; + } + var relativeSource = aSource; + if (this.sourceRoot != null) { + relativeSource = util.relative(this.sourceRoot, relativeSource); + } + var url; + if (this.sourceRoot != null && (url = util.urlParse(this.sourceRoot))) { + var fileUriAbsPath = relativeSource.replace(/^file:\/\//, ""); + if (url.scheme == "file" && this._sources.has(fileUriAbsPath)) { + return this.sourcesContent[this._sources.indexOf(fileUriAbsPath)]; + } + if ((!url.path || url.path == "/") && this._sources.has("/" + relativeSource)) { + return this.sourcesContent[this._sources.indexOf("/" + relativeSource)]; + } + } + if (nullOnMissing) { + return null; + } else { + throw new Error('"' + relativeSource + '" is not in the SourceMap.'); + } + }; + BasicSourceMapConsumer.prototype.generatedPositionFor = function SourceMapConsumer_generatedPositionFor(aArgs) { + var source = util.getArg(aArgs, "source"); + source = this._findSourceIndex(source); + if (source < 0) { + return { + line: null, + column: null, + lastColumn: null + }; + } + var needle = { + source, + originalLine: util.getArg(aArgs, "line"), + originalColumn: util.getArg(aArgs, "column") + }; + var index = this._findMapping( + needle, + this._originalMappings, + "originalLine", + "originalColumn", + util.compareByOriginalPositions, + util.getArg(aArgs, "bias", SourceMapConsumer.GREATEST_LOWER_BOUND) + ); + if (index >= 0) { + var mapping = this._originalMappings[index]; + if (mapping.source === needle.source) { + return { + line: util.getArg(mapping, "generatedLine", null), + column: util.getArg(mapping, "generatedColumn", null), + lastColumn: util.getArg(mapping, "lastGeneratedColumn", null) + }; + } + } + return { + line: null, + column: null, + lastColumn: null + }; + }; + exports.BasicSourceMapConsumer = BasicSourceMapConsumer; + function IndexedSourceMapConsumer(aSourceMap, aSourceMapURL) { + var sourceMap = aSourceMap; + if (typeof aSourceMap === "string") { + sourceMap = util.parseSourceMapInput(aSourceMap); + } + var version2 = util.getArg(sourceMap, "version"); + var sections = util.getArg(sourceMap, "sections"); + if (version2 != this._version) { + throw new Error("Unsupported version: " + version2); + } + this._sources = new ArraySet(); + this._names = new ArraySet(); + var lastOffset = { + line: -1, + column: 0 + }; + this._sections = sections.map(function(s) { + if (s.url) { + throw new Error("Support for url field in sections not implemented."); + } + var offset = util.getArg(s, "offset"); + var offsetLine = util.getArg(offset, "line"); + var offsetColumn = util.getArg(offset, "column"); + if (offsetLine < lastOffset.line || offsetLine === lastOffset.line && offsetColumn < lastOffset.column) { + throw new Error("Section offsets must be ordered and non-overlapping."); + } + lastOffset = offset; + return { + generatedOffset: { + // The offset fields are 0-based, but we use 1-based indices when + // encoding/decoding from VLQ. + generatedLine: offsetLine + 1, + generatedColumn: offsetColumn + 1 + }, + consumer: new SourceMapConsumer(util.getArg(s, "map"), aSourceMapURL) + }; + }); + } + IndexedSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype); + IndexedSourceMapConsumer.prototype.constructor = SourceMapConsumer; + IndexedSourceMapConsumer.prototype._version = 3; + Object.defineProperty(IndexedSourceMapConsumer.prototype, "sources", { + get: function() { + var sources = []; + for (var i = 0; i < this._sections.length; i++) { + for (var j = 0; j < this._sections[i].consumer.sources.length; j++) { + sources.push(this._sections[i].consumer.sources[j]); + } + } + return sources; + } + }); + IndexedSourceMapConsumer.prototype.originalPositionFor = function IndexedSourceMapConsumer_originalPositionFor(aArgs) { + var needle = { + generatedLine: util.getArg(aArgs, "line"), + generatedColumn: util.getArg(aArgs, "column") + }; + var sectionIndex = binarySearch.search( + needle, + this._sections, + function(needle2, section2) { + var cmp = needle2.generatedLine - section2.generatedOffset.generatedLine; + if (cmp) { + return cmp; + } + return needle2.generatedColumn - section2.generatedOffset.generatedColumn; + } + ); + var section = this._sections[sectionIndex]; + if (!section) { + return { + source: null, + line: null, + column: null, + name: null + }; + } + return section.consumer.originalPositionFor({ + line: needle.generatedLine - (section.generatedOffset.generatedLine - 1), + column: needle.generatedColumn - (section.generatedOffset.generatedLine === needle.generatedLine ? section.generatedOffset.generatedColumn - 1 : 0), + bias: aArgs.bias + }); + }; + IndexedSourceMapConsumer.prototype.hasContentsOfAllSources = function IndexedSourceMapConsumer_hasContentsOfAllSources() { + return this._sections.every(function(s) { + return s.consumer.hasContentsOfAllSources(); + }); + }; + IndexedSourceMapConsumer.prototype.sourceContentFor = function IndexedSourceMapConsumer_sourceContentFor(aSource, nullOnMissing) { + for (var i = 0; i < this._sections.length; i++) { + var section = this._sections[i]; + var content = section.consumer.sourceContentFor(aSource, true); + if (content) { + return content; + } + } + if (nullOnMissing) { + return null; + } else { + throw new Error('"' + aSource + '" is not in the SourceMap.'); + } + }; + IndexedSourceMapConsumer.prototype.generatedPositionFor = function IndexedSourceMapConsumer_generatedPositionFor(aArgs) { + for (var i = 0; i < this._sections.length; i++) { + var section = this._sections[i]; + if (section.consumer._findSourceIndex(util.getArg(aArgs, "source")) === -1) { + continue; + } + var generatedPosition = section.consumer.generatedPositionFor(aArgs); + if (generatedPosition) { + var ret = { + line: generatedPosition.line + (section.generatedOffset.generatedLine - 1), + column: generatedPosition.column + (section.generatedOffset.generatedLine === generatedPosition.line ? section.generatedOffset.generatedColumn - 1 : 0) + }; + return ret; + } + } + return { + line: null, + column: null + }; + }; + IndexedSourceMapConsumer.prototype._parseMappings = function IndexedSourceMapConsumer_parseMappings(aStr, aSourceRoot) { + this.__generatedMappings = []; + this.__originalMappings = []; + for (var i = 0; i < this._sections.length; i++) { + var section = this._sections[i]; + var sectionMappings = section.consumer._generatedMappings; + for (var j = 0; j < sectionMappings.length; j++) { + var mapping = sectionMappings[j]; + var source = section.consumer._sources.at(mapping.source); + source = util.computeSourceURL(section.consumer.sourceRoot, source, this._sourceMapURL); + this._sources.add(source); + source = this._sources.indexOf(source); + var name = null; + if (mapping.name) { + name = section.consumer._names.at(mapping.name); + this._names.add(name); + name = this._names.indexOf(name); + } + var adjustedMapping = { + source, + generatedLine: mapping.generatedLine + (section.generatedOffset.generatedLine - 1), + generatedColumn: mapping.generatedColumn + (section.generatedOffset.generatedLine === mapping.generatedLine ? section.generatedOffset.generatedColumn - 1 : 0), + originalLine: mapping.originalLine, + originalColumn: mapping.originalColumn, + name + }; + this.__generatedMappings.push(adjustedMapping); + if (typeof adjustedMapping.originalLine === "number") { + this.__originalMappings.push(adjustedMapping); + } + } + } + quickSort(this.__generatedMappings, util.compareByGeneratedPositionsDeflated); + quickSort(this.__originalMappings, util.compareByOriginalPositions); + }; + exports.IndexedSourceMapConsumer = IndexedSourceMapConsumer; + } +}); + +// node_modules/source-map/lib/source-node.js +var require_source_node = __commonJS({ + "node_modules/source-map/lib/source-node.js"(exports) { + var SourceMapGenerator = require_source_map_generator().SourceMapGenerator; + var util = require_util(); + var REGEX_NEWLINE = /(\r?\n)/; + var NEWLINE_CODE = 10; + var isSourceNode = "$$$isSourceNode$$$"; + function SourceNode(aLine, aColumn, aSource, aChunks, aName) { + this.children = []; + this.sourceContents = {}; + this.line = aLine == null ? null : aLine; + this.column = aColumn == null ? null : aColumn; + this.source = aSource == null ? null : aSource; + this.name = aName == null ? null : aName; + this[isSourceNode] = true; + if (aChunks != null) + this.add(aChunks); + } + SourceNode.fromStringWithSourceMap = function SourceNode_fromStringWithSourceMap(aGeneratedCode, aSourceMapConsumer, aRelativePath) { + var node = new SourceNode(); + var remainingLines = aGeneratedCode.split(REGEX_NEWLINE); + var remainingLinesIndex = 0; + var shiftNextLine = function() { + var lineContents = getNextLine(); + var newLine = getNextLine() || ""; + return lineContents + newLine; + function getNextLine() { + return remainingLinesIndex < remainingLines.length ? remainingLines[remainingLinesIndex++] : void 0; + } + }; + var lastGeneratedLine = 1, lastGeneratedColumn = 0; + var lastMapping = null; + aSourceMapConsumer.eachMapping(function(mapping) { + if (lastMapping !== null) { + if (lastGeneratedLine < mapping.generatedLine) { + addMappingWithCode(lastMapping, shiftNextLine()); + lastGeneratedLine++; + lastGeneratedColumn = 0; + } else { + var nextLine = remainingLines[remainingLinesIndex] || ""; + var code = nextLine.substr(0, mapping.generatedColumn - lastGeneratedColumn); + remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn - lastGeneratedColumn); + lastGeneratedColumn = mapping.generatedColumn; + addMappingWithCode(lastMapping, code); + lastMapping = mapping; + return; + } + } + while (lastGeneratedLine < mapping.generatedLine) { + node.add(shiftNextLine()); + lastGeneratedLine++; + } + if (lastGeneratedColumn < mapping.generatedColumn) { + var nextLine = remainingLines[remainingLinesIndex] || ""; + node.add(nextLine.substr(0, mapping.generatedColumn)); + remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn); + lastGeneratedColumn = mapping.generatedColumn; + } + lastMapping = mapping; + }, this); + if (remainingLinesIndex < remainingLines.length) { + if (lastMapping) { + addMappingWithCode(lastMapping, shiftNextLine()); + } + node.add(remainingLines.splice(remainingLinesIndex).join("")); + } + aSourceMapConsumer.sources.forEach(function(sourceFile) { + var content = aSourceMapConsumer.sourceContentFor(sourceFile); + if (content != null) { + if (aRelativePath != null) { + sourceFile = util.join(aRelativePath, sourceFile); + } + node.setSourceContent(sourceFile, content); + } + }); + return node; + function addMappingWithCode(mapping, code) { + if (mapping === null || mapping.source === void 0) { + node.add(code); + } else { + var source = aRelativePath ? util.join(aRelativePath, mapping.source) : mapping.source; + node.add(new SourceNode( + mapping.originalLine, + mapping.originalColumn, + source, + code, + mapping.name + )); + } + } + }; + SourceNode.prototype.add = function SourceNode_add(aChunk) { + if (Array.isArray(aChunk)) { + aChunk.forEach(function(chunk) { + this.add(chunk); + }, this); + } else if (aChunk[isSourceNode] || typeof aChunk === "string") { + if (aChunk) { + this.children.push(aChunk); + } + } else { + throw new TypeError( + "Expected a SourceNode, string, or an array of SourceNodes and strings. Got " + aChunk + ); + } + return this; + }; + SourceNode.prototype.prepend = function SourceNode_prepend(aChunk) { + if (Array.isArray(aChunk)) { + for (var i = aChunk.length - 1; i >= 0; i--) { + this.prepend(aChunk[i]); + } + } else if (aChunk[isSourceNode] || typeof aChunk === "string") { + this.children.unshift(aChunk); + } else { + throw new TypeError( + "Expected a SourceNode, string, or an array of SourceNodes and strings. Got " + aChunk + ); + } + return this; + }; + SourceNode.prototype.walk = function SourceNode_walk(aFn) { + var chunk; + for (var i = 0, len = this.children.length; i < len; i++) { + chunk = this.children[i]; + if (chunk[isSourceNode]) { + chunk.walk(aFn); + } else { + if (chunk !== "") { + aFn(chunk, { + source: this.source, + line: this.line, + column: this.column, + name: this.name + }); + } + } + } + }; + SourceNode.prototype.join = function SourceNode_join(aSep) { + var newChildren; + var i; + var len = this.children.length; + if (len > 0) { + newChildren = []; + for (i = 0; i < len - 1; i++) { + newChildren.push(this.children[i]); + newChildren.push(aSep); + } + newChildren.push(this.children[i]); + this.children = newChildren; + } + return this; + }; + SourceNode.prototype.replaceRight = function SourceNode_replaceRight(aPattern, aReplacement) { + var lastChild = this.children[this.children.length - 1]; + if (lastChild[isSourceNode]) { + lastChild.replaceRight(aPattern, aReplacement); + } else if (typeof lastChild === "string") { + this.children[this.children.length - 1] = lastChild.replace(aPattern, aReplacement); + } else { + this.children.push("".replace(aPattern, aReplacement)); + } + return this; + }; + SourceNode.prototype.setSourceContent = function SourceNode_setSourceContent(aSourceFile, aSourceContent) { + this.sourceContents[util.toSetString(aSourceFile)] = aSourceContent; + }; + SourceNode.prototype.walkSourceContents = function SourceNode_walkSourceContents(aFn) { + for (var i = 0, len = this.children.length; i < len; i++) { + if (this.children[i][isSourceNode]) { + this.children[i].walkSourceContents(aFn); + } + } + var sources = Object.keys(this.sourceContents); + for (var i = 0, len = sources.length; i < len; i++) { + aFn(util.fromSetString(sources[i]), this.sourceContents[sources[i]]); + } + }; + SourceNode.prototype.toString = function SourceNode_toString() { + var str = ""; + this.walk(function(chunk) { + str += chunk; + }); + return str; + }; + SourceNode.prototype.toStringWithSourceMap = function SourceNode_toStringWithSourceMap(aArgs) { + var generated = { + code: "", + line: 1, + column: 0 + }; + var map = new SourceMapGenerator(aArgs); + var sourceMappingActive = false; + var lastOriginalSource = null; + var lastOriginalLine = null; + var lastOriginalColumn = null; + var lastOriginalName = null; + this.walk(function(chunk, original) { + generated.code += chunk; + if (original.source !== null && original.line !== null && original.column !== null) { + if (lastOriginalSource !== original.source || lastOriginalLine !== original.line || lastOriginalColumn !== original.column || lastOriginalName !== original.name) { + map.addMapping({ + source: original.source, + original: { + line: original.line, + column: original.column + }, + generated: { + line: generated.line, + column: generated.column + }, + name: original.name + }); + } + lastOriginalSource = original.source; + lastOriginalLine = original.line; + lastOriginalColumn = original.column; + lastOriginalName = original.name; + sourceMappingActive = true; + } else if (sourceMappingActive) { + map.addMapping({ + generated: { + line: generated.line, + column: generated.column + } + }); + lastOriginalSource = null; + sourceMappingActive = false; + } + for (var idx = 0, length = chunk.length; idx < length; idx++) { + if (chunk.charCodeAt(idx) === NEWLINE_CODE) { + generated.line++; + generated.column = 0; + if (idx + 1 === length) { + lastOriginalSource = null; + sourceMappingActive = false; + } else if (sourceMappingActive) { + map.addMapping({ + source: original.source, + original: { + line: original.line, + column: original.column + }, + generated: { + line: generated.line, + column: generated.column + }, + name: original.name + }); + } + } else { + generated.column++; + } + } + }); + this.walkSourceContents(function(sourceFile, sourceContent) { + map.setSourceContent(sourceFile, sourceContent); + }); + return { code: generated.code, map }; + }; + exports.SourceNode = SourceNode; + } +}); + +// node_modules/source-map/source-map.js +var require_source_map = __commonJS({ + "node_modules/source-map/source-map.js"(exports) { + exports.SourceMapGenerator = require_source_map_generator().SourceMapGenerator; + exports.SourceMapConsumer = require_source_map_consumer().SourceMapConsumer; + exports.SourceNode = require_source_node().SourceNode; + } +}); + +// node_modules/buffer-from/index.js +var require_buffer_from = __commonJS({ + "node_modules/buffer-from/index.js"(exports, module2) { + var toString = Object.prototype.toString; + var isModern = typeof Buffer !== "undefined" && typeof Buffer.alloc === "function" && typeof Buffer.allocUnsafe === "function" && typeof Buffer.from === "function"; + function isArrayBuffer(input) { + return toString.call(input).slice(8, -1) === "ArrayBuffer"; + } + function fromArrayBuffer(obj, byteOffset, length) { + byteOffset >>>= 0; + var maxLength = obj.byteLength - byteOffset; + if (maxLength < 0) { + throw new RangeError("'offset' is out of bounds"); + } + if (length === void 0) { + length = maxLength; + } else { + length >>>= 0; + if (length > maxLength) { + throw new RangeError("'length' is out of bounds"); + } + } + return isModern ? Buffer.from(obj.slice(byteOffset, byteOffset + length)) : new Buffer(new Uint8Array(obj.slice(byteOffset, byteOffset + length))); + } + function fromString(string, encoding) { + if (typeof encoding !== "string" || encoding === "") { + encoding = "utf8"; + } + if (!Buffer.isEncoding(encoding)) { + throw new TypeError('"encoding" must be a valid string encoding'); + } + return isModern ? Buffer.from(string, encoding) : new Buffer(string, encoding); + } + function bufferFrom(value, encodingOrOffset, length) { + if (typeof value === "number") { + throw new TypeError('"value" argument must not be a number'); + } + if (isArrayBuffer(value)) { + return fromArrayBuffer(value, encodingOrOffset, length); + } + if (typeof value === "string") { + return fromString(value, encodingOrOffset); + } + return isModern ? Buffer.from(value) : new Buffer(value); + } + module2.exports = bufferFrom; + } +}); + +// node_modules/source-map-support/source-map-support.js +var require_source_map_support = __commonJS({ + "node_modules/source-map-support/source-map-support.js"(exports, module2) { + var SourceMapConsumer = require_source_map().SourceMapConsumer; + var path = require("path"); + var fs2; + try { + fs2 = require("fs"); + if (!fs2.existsSync || !fs2.readFileSync) { + fs2 = null; + } + } catch (err) { + } + var bufferFrom = require_buffer_from(); + function dynamicRequire(mod, request) { + return mod.require(request); + } + var errorFormatterInstalled = false; + var uncaughtShimInstalled = false; + var emptyCacheBetweenOperations = false; + var environment = "auto"; + var fileContentsCache = {}; + var sourceMapCache = {}; + var reSourceMap = /^data:application\/json[^,]+base64,/; + var retrieveFileHandlers = []; + var retrieveMapHandlers = []; + function isInBrowser() { + if (environment === "browser") + return true; + if (environment === "node") + return false; + return typeof window !== "undefined" && typeof XMLHttpRequest === "function" && !(window.require && window.module && window.process && window.process.type === "renderer"); + } + function hasGlobalProcessEventEmitter() { + return typeof process === "object" && process !== null && typeof process.on === "function"; + } + function globalProcessVersion() { + if (typeof process === "object" && process !== null) { + return process.version; + } else { + return ""; + } + } + function globalProcessStderr() { + if (typeof process === "object" && process !== null) { + return process.stderr; + } + } + function globalProcessExit(code) { + if (typeof process === "object" && process !== null && typeof process.exit === "function") { + return process.exit(code); + } + } + function handlerExec(list) { + return function(arg) { + for (var i = 0; i < list.length; i++) { + var ret = list[i](arg); + if (ret) { + return ret; + } + } + return null; + }; + } + var retrieveFile = handlerExec(retrieveFileHandlers); + retrieveFileHandlers.push(function(path2) { + path2 = path2.trim(); + if (/^file:/.test(path2)) { + path2 = path2.replace(/file:\/\/\/(\w:)?/, function(protocol, drive) { + return drive ? "" : ( + // file:///C:/dir/file -> C:/dir/file + "/" + ); + }); + } + if (path2 in fileContentsCache) { + return fileContentsCache[path2]; + } + var contents = ""; + try { + if (!fs2) { + var xhr = new XMLHttpRequest(); + xhr.open( + "GET", + path2, + /** async */ + false + ); + xhr.send(null); + if (xhr.readyState === 4 && xhr.status === 200) { + contents = xhr.responseText; + } + } else if (fs2.existsSync(path2)) { + contents = fs2.readFileSync(path2, "utf8"); + } + } catch (er) { + } + return fileContentsCache[path2] = contents; + }); + function supportRelativeURL(file, url) { + if (!file) + return url; + var dir = path.dirname(file); + var match = /^\w+:\/\/[^\/]*/.exec(dir); + var protocol = match ? match[0] : ""; + var startPath = dir.slice(protocol.length); + if (protocol && /^\/\w\:/.test(startPath)) { + protocol += "/"; + return protocol + path.resolve(dir.slice(protocol.length), url).replace(/\\/g, "/"); + } + return protocol + path.resolve(dir.slice(protocol.length), url); + } + function retrieveSourceMapURL(source) { + var fileData; + if (isInBrowser()) { + try { + var xhr = new XMLHttpRequest(); + xhr.open("GET", source, false); + xhr.send(null); + fileData = xhr.readyState === 4 ? xhr.responseText : null; + var sourceMapHeader = xhr.getResponseHeader("SourceMap") || xhr.getResponseHeader("X-SourceMap"); + if (sourceMapHeader) { + return sourceMapHeader; + } + } catch (e) { + } + } + fileData = retrieveFile(source); + var re = /(?:\/\/[@#][\s]*sourceMappingURL=([^\s'"]+)[\s]*$)|(?:\/\*[@#][\s]*sourceMappingURL=([^\s*'"]+)[\s]*(?:\*\/)[\s]*$)/mg; + var lastMatch, match; + while (match = re.exec(fileData)) + lastMatch = match; + if (!lastMatch) + return null; + return lastMatch[1]; + } + var retrieveSourceMap = handlerExec(retrieveMapHandlers); + retrieveMapHandlers.push(function(source) { + var sourceMappingURL = retrieveSourceMapURL(source); + if (!sourceMappingURL) + return null; + var sourceMapData; + if (reSourceMap.test(sourceMappingURL)) { + var rawData = sourceMappingURL.slice(sourceMappingURL.indexOf(",") + 1); + sourceMapData = bufferFrom(rawData, "base64").toString(); + sourceMappingURL = source; + } else { + sourceMappingURL = supportRelativeURL(source, sourceMappingURL); + sourceMapData = retrieveFile(sourceMappingURL); + } + if (!sourceMapData) { + return null; + } + return { + url: sourceMappingURL, + map: sourceMapData + }; + }); + function mapSourcePosition(position) { + var sourceMap = sourceMapCache[position.source]; + if (!sourceMap) { + var urlAndMap = retrieveSourceMap(position.source); + if (urlAndMap) { + sourceMap = sourceMapCache[position.source] = { + url: urlAndMap.url, + map: new SourceMapConsumer(urlAndMap.map) + }; + if (sourceMap.map.sourcesContent) { + sourceMap.map.sources.forEach(function(source, i) { + var contents = sourceMap.map.sourcesContent[i]; + if (contents) { + var url = supportRelativeURL(sourceMap.url, source); + fileContentsCache[url] = contents; + } + }); + } + } else { + sourceMap = sourceMapCache[position.source] = { + url: null, + map: null + }; + } + } + if (sourceMap && sourceMap.map && typeof sourceMap.map.originalPositionFor === "function") { + var originalPosition = sourceMap.map.originalPositionFor(position); + if (originalPosition.source !== null) { + originalPosition.source = supportRelativeURL( + sourceMap.url, + originalPosition.source + ); + return originalPosition; + } + } + return position; + } + function mapEvalOrigin(origin) { + var match = /^eval at ([^(]+) \((.+):(\d+):(\d+)\)$/.exec(origin); + if (match) { + var position = mapSourcePosition({ + source: match[2], + line: +match[3], + column: match[4] - 1 + }); + return "eval at " + match[1] + " (" + position.source + ":" + position.line + ":" + (position.column + 1) + ")"; + } + match = /^eval at ([^(]+) \((.+)\)$/.exec(origin); + if (match) { + return "eval at " + match[1] + " (" + mapEvalOrigin(match[2]) + ")"; + } + return origin; + } + function CallSiteToString() { + var fileName; + var fileLocation = ""; + if (this.isNative()) { + fileLocation = "native"; + } else { + fileName = this.getScriptNameOrSourceURL(); + if (!fileName && this.isEval()) { + fileLocation = this.getEvalOrigin(); + fileLocation += ", "; + } + if (fileName) { + fileLocation += fileName; + } else { + fileLocation += ""; + } + var lineNumber = this.getLineNumber(); + if (lineNumber != null) { + fileLocation += ":" + lineNumber; + var columnNumber = this.getColumnNumber(); + if (columnNumber) { + fileLocation += ":" + columnNumber; + } + } + } + var line = ""; + var functionName = this.getFunctionName(); + var addSuffix = true; + var isConstructor = this.isConstructor(); + var isMethodCall = !(this.isToplevel() || isConstructor); + if (isMethodCall) { + var typeName = this.getTypeName(); + if (typeName === "[object Object]") { + typeName = "null"; + } + var methodName = this.getMethodName(); + if (functionName) { + if (typeName && functionName.indexOf(typeName) != 0) { + line += typeName + "."; + } + line += functionName; + if (methodName && functionName.indexOf("." + methodName) != functionName.length - methodName.length - 1) { + line += " [as " + methodName + "]"; + } + } else { + line += typeName + "." + (methodName || ""); + } + } else if (isConstructor) { + line += "new " + (functionName || ""); + } else if (functionName) { + line += functionName; + } else { + line += fileLocation; + addSuffix = false; + } + if (addSuffix) { + line += " (" + fileLocation + ")"; + } + return line; + } + function cloneCallSite(frame) { + var object = {}; + Object.getOwnPropertyNames(Object.getPrototypeOf(frame)).forEach(function(name) { + object[name] = /^(?:is|get)/.test(name) ? function() { + return frame[name].call(frame); + } : frame[name]; + }); + object.toString = CallSiteToString; + return object; + } + function wrapCallSite(frame, state) { + if (state === void 0) { + state = { nextPosition: null, curPosition: null }; + } + if (frame.isNative()) { + state.curPosition = null; + return frame; + } + var source = frame.getFileName() || frame.getScriptNameOrSourceURL(); + if (source) { + var line = frame.getLineNumber(); + var column = frame.getColumnNumber() - 1; + var noHeader = /^v(10\.1[6-9]|10\.[2-9][0-9]|10\.[0-9]{3,}|1[2-9]\d*|[2-9]\d|\d{3,}|11\.11)/; + var headerLength = noHeader.test(globalProcessVersion()) ? 0 : 62; + if (line === 1 && column > headerLength && !isInBrowser() && !frame.isEval()) { + column -= headerLength; + } + var position = mapSourcePosition({ + source, + line, + column + }); + state.curPosition = position; + frame = cloneCallSite(frame); + var originalFunctionName = frame.getFunctionName; + frame.getFunctionName = function() { + if (state.nextPosition == null) { + return originalFunctionName(); + } + return state.nextPosition.name || originalFunctionName(); + }; + frame.getFileName = function() { + return position.source; + }; + frame.getLineNumber = function() { + return position.line; + }; + frame.getColumnNumber = function() { + return position.column + 1; + }; + frame.getScriptNameOrSourceURL = function() { + return position.source; + }; + return frame; + } + var origin = frame.isEval() && frame.getEvalOrigin(); + if (origin) { + origin = mapEvalOrigin(origin); + frame = cloneCallSite(frame); + frame.getEvalOrigin = function() { + return origin; + }; + return frame; + } + return frame; + } + function prepareStackTrace(error3, stack) { + if (emptyCacheBetweenOperations) { + fileContentsCache = {}; + sourceMapCache = {}; + } + var name = error3.name || "Error"; + var message = error3.message || ""; + var errorString = name + ": " + message; + var state = { nextPosition: null, curPosition: null }; + var processedStack = []; + for (var i = stack.length - 1; i >= 0; i--) { + processedStack.push("\n at " + wrapCallSite(stack[i], state)); + state.nextPosition = state.curPosition; + } + state.curPosition = state.nextPosition = null; + return errorString + processedStack.reverse().join(""); + } + function getErrorSource(error3) { + var match = /\n at [^(]+ \((.*):(\d+):(\d+)\)/.exec(error3.stack); + if (match) { + var source = match[1]; + var line = +match[2]; + var column = +match[3]; + var contents = fileContentsCache[source]; + if (!contents && fs2 && fs2.existsSync(source)) { + try { + contents = fs2.readFileSync(source, "utf8"); + } catch (er) { + contents = ""; + } + } + if (contents) { + var code = contents.split(/(?:\r\n|\r|\n)/)[line - 1]; + if (code) { + return source + ":" + line + "\n" + code + "\n" + new Array(column).join(" ") + "^"; + } + } + } + return null; + } + function printErrorAndExit(error3) { + var source = getErrorSource(error3); + var stderr = globalProcessStderr(); + if (stderr && stderr._handle && stderr._handle.setBlocking) { + stderr._handle.setBlocking(true); + } + if (source) { + console.error(); + console.error(source); + } + console.error(error3.stack); + globalProcessExit(1); + } + function shimEmitUncaughtException() { + var origEmit = process.emit; + process.emit = function(type) { + if (type === "uncaughtException") { + var hasStack = arguments[1] && arguments[1].stack; + var hasListeners = this.listeners(type).length > 0; + if (hasStack && !hasListeners) { + return printErrorAndExit(arguments[1]); + } + } + return origEmit.apply(this, arguments); + }; + } + var originalRetrieveFileHandlers = retrieveFileHandlers.slice(0); + var originalRetrieveMapHandlers = retrieveMapHandlers.slice(0); + exports.wrapCallSite = wrapCallSite; + exports.getErrorSource = getErrorSource; + exports.mapSourcePosition = mapSourcePosition; + exports.retrieveSourceMap = retrieveSourceMap; + exports.install = function(options) { + options = options || {}; + if (options.environment) { + environment = options.environment; + if (["node", "browser", "auto"].indexOf(environment) === -1) { + throw new Error("environment " + environment + " was unknown. Available options are {auto, browser, node}"); + } + } + if (options.retrieveFile) { + if (options.overrideRetrieveFile) { + retrieveFileHandlers.length = 0; + } + retrieveFileHandlers.unshift(options.retrieveFile); + } + if (options.retrieveSourceMap) { + if (options.overrideRetrieveSourceMap) { + retrieveMapHandlers.length = 0; + } + retrieveMapHandlers.unshift(options.retrieveSourceMap); + } + if (options.hookRequire && !isInBrowser()) { + var Module = dynamicRequire(module2, "module"); + var $compile = Module.prototype._compile; + if (!$compile.__sourceMapSupport) { + Module.prototype._compile = function(content, filename) { + fileContentsCache[filename] = content; + sourceMapCache[filename] = void 0; + return $compile.call(this, content, filename); + }; + Module.prototype._compile.__sourceMapSupport = true; + } + } + if (!emptyCacheBetweenOperations) { + emptyCacheBetweenOperations = "emptyCacheBetweenOperations" in options ? options.emptyCacheBetweenOperations : false; + } + if (!errorFormatterInstalled) { + errorFormatterInstalled = true; + Error.prepareStackTrace = prepareStackTrace; + } + if (!uncaughtShimInstalled) { + var installHandler = "handleUncaughtExceptions" in options ? options.handleUncaughtExceptions : true; + try { + var worker_threads = dynamicRequire(module2, "worker_threads"); + if (worker_threads.isMainThread === false) { + installHandler = false; + } + } catch (e) { + } + if (installHandler && hasGlobalProcessEventEmitter()) { + uncaughtShimInstalled = true; + shimEmitUncaughtException(); + } + } + }; + exports.resetRetrieveHandlers = function() { + retrieveFileHandlers.length = 0; + retrieveMapHandlers.length = 0; + retrieveFileHandlers = originalRetrieveFileHandlers.slice(0); + retrieveMapHandlers = originalRetrieveMapHandlers.slice(0); + retrieveSourceMap = handlerExec(retrieveMapHandlers); + retrieveFile = handlerExec(retrieveFileHandlers); + }; + } +}); + +// node_modules/@actions/core/lib/utils.js +var require_utils = __commonJS({ + "node_modules/@actions/core/lib/utils.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.toCommandProperties = exports.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); + } + exports.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 + }; + } + exports.toCommandProperties = toCommandProperties; + } +}); + +// node_modules/@actions/core/lib/command.js +var require_command = __commonJS({ + "node_modules/@actions/core/lib/command.js"(exports) { + "use strict"; + var __createBinding = exports && exports.__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 = exports && exports.__setModuleDefault || (Object.create ? function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); + } : function(o, v) { + o["default"] = v; + }); + var __importStar = exports && exports.__importStar || 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(exports, "__esModule", { value: true }); + exports.issue = exports.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); + } + exports.issueCommand = issueCommand; + function issue(name, message = "") { + issueCommand(name, {}, message); + } + exports.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; + } + 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 val2 = this.properties[key]; + if (val2) { + if (first) { + first = false; + } else { + cmdStr += ","; + } + cmdStr += `${key}=${escapeProperty(val2)}`; + } + } + } + } + cmdStr += `${CMD_STRING}${escapeData(this.message)}`; + return cmdStr; + } + }; + 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/esm-node/rng.js +function rng() { + if (poolPtr > rnds8Pool.length - 16) { + import_crypto.default.randomFillSync(rnds8Pool); + poolPtr = 0; + } + return rnds8Pool.slice(poolPtr, poolPtr += 16); +} +var import_crypto, rnds8Pool, poolPtr; +var init_rng = __esm({ + "node_modules/uuid/dist/esm-node/rng.js"() { + import_crypto = __toESM(require("crypto")); + rnds8Pool = new Uint8Array(256); + poolPtr = rnds8Pool.length; + } +}); + +// node_modules/uuid/dist/esm-node/regex.js +var regex_default; +var init_regex = __esm({ + "node_modules/uuid/dist/esm-node/regex.js"() { + regex_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; + } +}); + +// node_modules/uuid/dist/esm-node/validate.js +function validate(uuid) { + return typeof uuid === "string" && regex_default.test(uuid); +} +var validate_default; +var init_validate = __esm({ + "node_modules/uuid/dist/esm-node/validate.js"() { + init_regex(); + validate_default = validate; + } +}); + +// node_modules/uuid/dist/esm-node/stringify.js +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 (!validate_default(uuid)) { + throw TypeError("Stringified UUID is invalid"); + } + return uuid; +} +var byteToHex, stringify_default; +var init_stringify = __esm({ + "node_modules/uuid/dist/esm-node/stringify.js"() { + init_validate(); + byteToHex = []; + for (let i = 0; i < 256; ++i) { + byteToHex.push((i + 256).toString(16).substr(1)); + } + stringify_default = stringify; + } +}); + +// node_modules/uuid/dist/esm-node/v1.js +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)(); + 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 || stringify_default(b); +} +var _nodeId, _clockseq, _lastMSecs, _lastNSecs, v1_default; +var init_v1 = __esm({ + "node_modules/uuid/dist/esm-node/v1.js"() { + init_rng(); + init_stringify(); + _lastMSecs = 0; + _lastNSecs = 0; + v1_default = v1; + } +}); + +// node_modules/uuid/dist/esm-node/parse.js +function parse(uuid) { + if (!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 parse_default; +var init_parse = __esm({ + "node_modules/uuid/dist/esm-node/parse.js"() { + init_validate(); + parse_default = parse; + } +}); + +// node_modules/uuid/dist/esm-node/v35.js +function stringToBytes(str) { + str = unescape(encodeURIComponent(str)); + const bytes = []; + for (let i = 0; i < str.length; ++i) { + bytes.push(str.charCodeAt(i)); + } + return bytes; +} +function v35_default(name, version2, hashfunc) { + function generateUUID(value, namespace, buf, offset) { + if (typeof value === "string") { + value = stringToBytes(value); + } + if (typeof namespace === "string") { + namespace = parse_default(namespace); + } + 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 | version2; + bytes[8] = bytes[8] & 63 | 128; + if (buf) { + offset = offset || 0; + for (let i = 0; i < 16; ++i) { + buf[offset + i] = bytes[i]; + } + return buf; + } + return stringify_default(bytes); + } + try { + generateUUID.name = name; + } catch (err) { + } + generateUUID.DNS = DNS; + generateUUID.URL = URL2; + return generateUUID; +} +var DNS, URL2; +var init_v35 = __esm({ + "node_modules/uuid/dist/esm-node/v35.js"() { + init_stringify(); + init_parse(); + DNS = "6ba7b810-9dad-11d1-80b4-00c04fd430c8"; + URL2 = "6ba7b811-9dad-11d1-80b4-00c04fd430c8"; + } +}); + +// node_modules/uuid/dist/esm-node/md5.js +function md5(bytes) { + if (Array.isArray(bytes)) { + bytes = Buffer.from(bytes); + } else if (typeof bytes === "string") { + bytes = Buffer.from(bytes, "utf8"); + } + return import_crypto2.default.createHash("md5").update(bytes).digest(); +} +var import_crypto2, md5_default; +var init_md5 = __esm({ + "node_modules/uuid/dist/esm-node/md5.js"() { + import_crypto2 = __toESM(require("crypto")); + md5_default = md5; + } +}); + +// node_modules/uuid/dist/esm-node/v3.js +var v3, v3_default; +var init_v3 = __esm({ + "node_modules/uuid/dist/esm-node/v3.js"() { + init_v35(); + init_md5(); + v3 = v35_default("v3", 48, md5_default); + v3_default = v3; + } +}); + +// node_modules/uuid/dist/esm-node/v4.js +function v4(options, buf, offset) { + options = options || {}; + const rnds = options.random || (options.rng || rng)(); + 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 stringify_default(rnds); +} +var v4_default; +var init_v4 = __esm({ + "node_modules/uuid/dist/esm-node/v4.js"() { + init_rng(); + init_stringify(); + v4_default = v4; + } +}); + +// node_modules/uuid/dist/esm-node/sha1.js +function sha1(bytes) { + if (Array.isArray(bytes)) { + bytes = Buffer.from(bytes); + } else if (typeof bytes === "string") { + bytes = Buffer.from(bytes, "utf8"); + } + return import_crypto3.default.createHash("sha1").update(bytes).digest(); +} +var import_crypto3, sha1_default; +var init_sha1 = __esm({ + "node_modules/uuid/dist/esm-node/sha1.js"() { + import_crypto3 = __toESM(require("crypto")); + sha1_default = sha1; + } +}); + +// node_modules/uuid/dist/esm-node/v5.js +var v5, v5_default; +var init_v5 = __esm({ + "node_modules/uuid/dist/esm-node/v5.js"() { + init_v35(); + init_sha1(); + v5 = v35_default("v5", 80, sha1_default); + v5_default = v5; + } +}); + +// node_modules/uuid/dist/esm-node/nil.js +var nil_default; +var init_nil = __esm({ + "node_modules/uuid/dist/esm-node/nil.js"() { + nil_default = "00000000-0000-0000-0000-000000000000"; + } +}); + +// node_modules/uuid/dist/esm-node/version.js +function version(uuid) { + if (!validate_default(uuid)) { + throw TypeError("Invalid UUID"); + } + return parseInt(uuid.substr(14, 1), 16); +} +var version_default; +var init_version = __esm({ + "node_modules/uuid/dist/esm-node/version.js"() { + init_validate(); + version_default = version; + } +}); + +// node_modules/uuid/dist/esm-node/index.js +var esm_node_exports = {}; +__export(esm_node_exports, { + NIL: () => nil_default, + parse: () => parse_default, + stringify: () => stringify_default, + v1: () => v1_default, + v3: () => v3_default, + v4: () => v4_default, + v5: () => v5_default, + validate: () => validate_default, + version: () => version_default +}); +var init_esm_node = __esm({ + "node_modules/uuid/dist/esm-node/index.js"() { + init_v1(); + init_v3(); + init_v4(); + init_v5(); + init_nil(); + init_version(); + init_validate(); + init_stringify(); + init_parse(); + } +}); + +// node_modules/@actions/core/lib/file-command.js +var require_file_command = __commonJS({ + "node_modules/@actions/core/lib/file-command.js"(exports) { + "use strict"; + var __createBinding = exports && exports.__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 = exports && exports.__setModuleDefault || (Object.create ? function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); + } : function(o, v) { + o["default"] = v; + }); + var __importStar = exports && exports.__importStar || 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(exports, "__esModule", { value: true }); + exports.prepareKeyValueMessage = exports.issueFileCommand = void 0; + var fs2 = __importStar(require("fs")); + var os = __importStar(require("os")); + var uuid_1 = (init_esm_node(), __toCommonJS(esm_node_exports)); + 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}`); + } + if (!fs2.existsSync(filePath)) { + throw new Error(`Missing file at path: ${filePath}`); + } + fs2.appendFileSync(filePath, `${utils_1.toCommandValue(message)}${os.EOL}`, { + encoding: "utf8" + }); + } + exports.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}"`); + } + if (convertedValue.includes(delimiter)) { + throw new Error(`Unexpected input: value should not contain the delimiter "${delimiter}"`); + } + return `${key}<<${delimiter}${os.EOL}${convertedValue}${os.EOL}${delimiter}`; + } + exports.prepareKeyValueMessage = prepareKeyValueMessage; + } +}); + +// node_modules/@actions/http-client/lib/proxy.js +var require_proxy = __commonJS({ + "node_modules/@actions/http-client/lib/proxy.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.checkBypass = exports.getProxyUrl = void 0; + function getProxyUrl(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) { + return new URL(proxyVar); + } else { + return void 0; + } + } + exports.getProxyUrl = getProxyUrl; + function checkBypass(reqUrl) { + if (!reqUrl.hostname) { + return false; + } + 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 (upperReqHosts.some((x) => x === upperNoProxyItem)) { + return true; + } + } + return false; + } + exports.checkBypass = checkBypass; + } +}); + +// node_modules/tunnel/lib/tunnel.js +var require_tunnel = __commonJS({ + "node_modules/tunnel/lib/tunnel.js"(exports) { + "use strict"; + var net = require("net"); + var tls = require("tls"); + var http2 = require("http"); + var https = require("https"); + var events = require("events"); + var assert = require("assert"); + var util = require("util"); + exports.httpOverHttp = httpOverHttp; + exports.httpsOverHttp = httpsOverHttp; + exports.httpOverHttps = httpOverHttps; + exports.httpsOverHttps = httpsOverHttps; + function httpOverHttp(options) { + var agent = new TunnelingAgent(options); + agent.request = http2.request; + return agent; + } + function httpsOverHttp(options) { + var agent = new TunnelingAgent(options); + agent.request = http2.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 || http2.Agent.defaultMaxSockets; + self.requests = []; + self.sockets = []; + self.on("free", function onFree(socket, host, port, localAddress) { + var options2 = toOptions(host, port, localAddress); + for (var i = 0, len = self.requests.length; i < len; ++i) { + var pending = self.requests[i]; + if (pending.host === options2.host && pending.port === options2.port) { + self.requests.splice(i, 1); + pending.request.onSocket(socket); + return; + } + } + socket.destroy(); + self.removeSocket(socket); + }); + } + util.inherits(TunnelingAgent, events.EventEmitter); + TunnelingAgent.prototype.addRequest = function addRequest(req, host, port, localAddress) { + var self = this; + var options = mergeOptions({ request: req }, self.options, toOptions(host, port, localAddress)); + if (self.sockets.length >= this.maxSockets) { + self.requests.push(options); + return; + } + self.createSocket(options, function(socket) { + socket.on("free", onFree); + socket.on("close", onCloseOrRemove); + socket.on("agentRemove", onCloseOrRemove); + req.onSocket(socket); + function onFree() { + self.emit("free", socket, options); + } + function onCloseOrRemove(err) { + self.removeSocket(socket); + socket.removeListener("free", onFree); + socket.removeListener("close", onCloseOrRemove); + socket.removeListener("agentRemove", onCloseOrRemove); + } + }); + }; + TunnelingAgent.prototype.createSocket = function createSocket(options, cb) { + var self = this; + var placeholder = {}; + self.sockets.push(placeholder); + var connectOptions = mergeOptions({}, self.proxyOptions, { + method: "CONNECT", + path: options.host + ":" + options.port, + agent: false, + headers: { + host: options.host + ":" + options.port + } + }); + if (options.localAddress) { + connectOptions.localAddress = options.localAddress; + } + if (connectOptions.proxyAuth) { + connectOptions.headers = connectOptions.headers || {}; + connectOptions.headers["Proxy-Authorization"] = "Basic " + new Buffer(connectOptions.proxyAuth).toString("base64"); + } + debug4("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) { + debug4( + "tunneling socket could not be established, statusCode=%d", + res.statusCode + ); + socket.destroy(); + var error3 = new Error("tunneling socket could not be established, statusCode=" + res.statusCode); + error3.code = "ECONNRESET"; + options.request.emit("error", error3); + self.removeSocket(placeholder); + return; + } + if (head.length > 0) { + debug4("got illegal response body from proxy"); + socket.destroy(); + var error3 = new Error("got illegal response body from proxy"); + error3.code = "ECONNRESET"; + options.request.emit("error", error3); + self.removeSocket(placeholder); + return; + } + debug4("tunneling connection has established"); + self.sockets[self.sockets.indexOf(placeholder)] = socket; + return cb(socket); + } + function onError(cause) { + connectReq.removeAllListeners(); + debug4( + "tunneling socket could not be established, cause=%s\n", + cause.message, + cause.stack + ); + var error3 = new Error("tunneling socket could not be established, cause=" + cause.message); + error3.code = "ECONNRESET"; + options.request.emit("error", error3); + self.removeSocket(placeholder); + } + }; + TunnelingAgent.prototype.removeSocket = function removeSocket(socket) { + var pos = this.sockets.indexOf(socket); + if (pos === -1) { + return; + } + this.sockets.splice(pos, 1); + var pending = this.requests.shift(); + if (pending) { + this.createSocket(pending, function(socket2) { + pending.request.onSocket(socket2); + }); + } + }; + function createSecureSocket(options, cb) { + var self = this; + TunnelingAgent.prototype.createSocket.call(self, options, function(socket) { + var hostHeader = options.request.getHeader("host"); + var tlsOptions = mergeOptions({}, self.options, { + socket, + servername: hostHeader ? hostHeader.replace(/:.*$/, "") : options.host + }); + var secureSocket = tls.connect(0, tlsOptions); + self.sockets[self.sockets.indexOf(socket)] = secureSocket; + cb(secureSocket); + }); + } + function toOptions(host, port, localAddress) { + if (typeof host === "string") { + return { + host, + port, + localAddress + }; + } + return host; + } + function mergeOptions(target) { + for (var i = 1, len = arguments.length; i < len; ++i) { + var overrides = arguments[i]; + if (typeof overrides === "object") { + var keys = Object.keys(overrides); + for (var j = 0, keyLen = keys.length; j < keyLen; ++j) { + var k = keys[j]; + if (overrides[k] !== void 0) { + target[k] = overrides[k]; + } + } + } + } + return target; + } + var debug4; + if (process.env.NODE_DEBUG && /\btunnel\b/.test(process.env.NODE_DEBUG)) { + debug4 = 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 { + debug4 = function() { + }; + } + exports.debug = debug4; + } +}); + +// node_modules/tunnel/index.js +var require_tunnel2 = __commonJS({ + "node_modules/tunnel/index.js"(exports, module2) { + module2.exports = require_tunnel(); + } +}); + +// node_modules/@actions/http-client/lib/index.js +var require_lib = __commonJS({ + "node_modules/@actions/http-client/lib/index.js"(exports) { + "use strict"; + var __createBinding = exports && exports.__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 = exports && exports.__setModuleDefault || (Object.create ? function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); + } : function(o, v) { + o["default"] = v; + }); + var __importStar = exports && exports.__importStar || 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 = exports && exports.__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(exports, "__esModule", { value: true }); + exports.HttpClient = exports.isHttps = exports.HttpClientResponse = exports.HttpClientError = exports.getProxyUrl = exports.MediaTypes = exports.Headers = exports.HttpCodes = void 0; + var http2 = __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 = exports.HttpCodes || (exports.HttpCodes = {})); + var Headers; + (function(Headers2) { + Headers2["Accept"] = "accept"; + Headers2["ContentType"] = "content-type"; + })(Headers = exports.Headers || (exports.Headers = {})); + var MediaTypes; + (function(MediaTypes2) { + MediaTypes2["ApplicationJson"] = "application/json"; + })(MediaTypes = exports.MediaTypes || (exports.MediaTypes = {})); + function getProxyUrl(serverUrl) { + const proxyUrl = pm.getProxyUrl(new URL(serverUrl)); + return proxyUrl ? proxyUrl.href : ""; + } + exports.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); + } + }; + exports.HttpClientError = HttpClientError; + var HttpClientResponse = class { + constructor(message) { + this.message = message; + } + 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()); + }); + })); + }); + } + }; + exports.HttpClientResponse = HttpClientResponse; + function isHttps(requestUrl) { + const parsedUrl = new URL(requestUrl); + return parsedUrl.protocol === "https:"; + } + exports.isHttps = isHttps; + var HttpClient2 = 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; + } + if (requestOptions.allowRetries != null) { + this._allowRetries = requestOptions.allowRetries; + } + if (requestOptions.maxRetries != null) { + this._maxRetries = requestOptions.maxRetries; + } + } + } + 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 || {}); + }); + } + del(requestUrl, additionalHeaders) { + return __awaiter(this, void 0, void 0, function* () { + return this.request("DELETE", requestUrl, null, additionalHeaders || {}); + }); + } + post(requestUrl, data, additionalHeaders) { + return __awaiter(this, void 0, void 0, function* () { + return this.request("POST", requestUrl, data, additionalHeaders || {}); + }); + } + patch(requestUrl, data, additionalHeaders) { + return __awaiter(this, void 0, void 0, function* () { + return this.request("PATCH", requestUrl, data, additionalHeaders || {}); + }); + } + put(requestUrl, data, additionalHeaders) { + return __awaiter(this, void 0, void 0, function* () { + return this.request("PUT", requestUrl, data, additionalHeaders || {}); + }); + } + head(requestUrl, additionalHeaders) { + return __awaiter(this, void 0, void 0, function* () { + return this.request("HEAD", requestUrl, null, additionalHeaders || {}); + }); + } + sendStream(verb, requestUrl, stream, additionalHeaders) { + return __awaiter(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, 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); + }); + } + 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); + }); + } + 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); + }); + } + 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); + }); + } + /** + * 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 __awaiter(this, void 0, void 0, function* () { + if (this._disposed) { + throw new Error("Client has already been disposed."); + } + const parsedUrl = new URL(requestUrl); + let info3 = 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(info3, 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, info3, 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]; + } + } + } + info3 = this._prepareRequest(verb, parsedRedirectUrl, headers); + response = yield this.requestRaw(info3, data); + redirectsRemaining--; + } + if (!response.message.statusCode || !HttpResponseRetryCodes.includes(response.message.statusCode)) { + return response; + } + numTries += 1; + if (numTries < maxTries) { + yield response.readBody(); + yield this._performExponentialBackoff(numTries); + } + } while (numTries < maxTries); + return response; + }); + } + /** + * Needs to be called if keepAlive is set to true in request options. + */ + dispose() { + if (this._agent) { + this._agent.destroy(); + } + this._disposed = true; + } + /** + * Raw request. + * @param info + * @param data + */ + requestRaw(info3, 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(info3, data, callbackForResult); + }); + }); + } + /** + * Raw request with callback. + * @param info + * @param data + * @param onResult + */ + requestRawWithCallback(info3, data, onResult) { + if (typeof data === "string") { + if (!info3.options.headers) { + info3.options.headers = {}; + } + info3.options.headers["Content-Length"] = Buffer.byteLength(data, "utf8"); + } + let callbackCalled = false; + function handleResult(err, res) { + if (!callbackCalled) { + callbackCalled = true; + onResult(err, res); + } + } + const req = info3.httpModule.request(info3.options, (msg) => { + const res = new HttpClientResponse(msg); + handleResult(void 0, res); + }); + let socket; + req.on("socket", (sock) => { + socket = sock; + }); + req.setTimeout(this._socketTimeout || 3 * 6e4, () => { + if (socket) { + socket.end(); + } + handleResult(new Error(`Request timeout: ${info3.options.path}`)); + }); + req.on("error", function(err) { + handleResult(err); + }); + if (data && typeof data === "string") { + req.write(data, "utf8"); + } + if (data && typeof data !== "string") { + data.on("close", function() { + req.end(); + }); + data.pipe(req); + } else { + req.end(); + } + } + /** + * Gets an http agent. This function is useful when you need an http agent that handles + * routing through a proxy server - depending upon the url and proxy environment variables. + * @param serverUrl The server URL where the request will be sent. For example, https://api.github.com + */ + getAgent(serverUrl) { + const parsedUrl = new URL(serverUrl); + return this._getAgent(parsedUrl); + } + _prepareRequest(method, requestUrl, headers) { + const info3 = {}; + info3.parsedUrl = requestUrl; + const usingSsl = info3.parsedUrl.protocol === "https:"; + info3.httpModule = usingSsl ? https : http2; + const defaultPort = usingSsl ? 443 : 80; + info3.options = {}; + info3.options.host = info3.parsedUrl.hostname; + info3.options.port = info3.parsedUrl.port ? parseInt(info3.parsedUrl.port) : defaultPort; + info3.options.path = (info3.parsedUrl.pathname || "") + (info3.parsedUrl.search || ""); + info3.options.method = method; + info3.options.headers = this._mergeHeaders(headers); + if (this.userAgent != null) { + info3.options.headers["user-agent"] = this.userAgent; + } + info3.options.agent = this._getAgent(info3.parsedUrl); + if (this.handlers) { + for (const handler of this.handlers) { + handler.prepareRequest(info3.options); + } + } + return info3; + } + _mergeHeaders(headers) { + if (this.requestOptions && this.requestOptions.headers) { + return Object.assign({}, lowercaseKeys(this.requestOptions.headers), lowercaseKeys(headers || {})); + } + return lowercaseKeys(headers || {}); + } + _getExistingOrDefaultHeader(additionalHeaders, header, _default) { + let clientHeader; + if (this.requestOptions && this.requestOptions.headers) { + clientHeader = lowercaseKeys(this.requestOptions.headers)[header]; + } + return additionalHeaders[header] || clientHeader || _default; + } + _getAgent(parsedUrl) { + let agent; + const proxyUrl = pm.getProxyUrl(parsedUrl); + const useProxy = proxyUrl && proxyUrl.hostname; + if (this._keepAlive && useProxy) { + agent = this._proxyAgent; + } + if (this._keepAlive && !useProxy) { + agent = this._agent; + } + if (agent) { + return agent; + } + const usingSsl = parsedUrl.protocol === "https:"; + let maxSockets = 100; + if (this.requestOptions) { + maxSockets = this.requestOptions.maxSockets || http2.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 ? tunnel.httpsOverHttps : tunnel.httpsOverHttp; + } else { + tunnelAgent = overHttps ? tunnel.httpOverHttps : tunnel.httpOverHttp; + } + agent = tunnelAgent(agentOptions); + this._proxyAgent = agent; + } + if (this._keepAlive && !agent) { + const options = { keepAlive: this._keepAlive, maxSockets }; + agent = usingSsl ? new https.Agent(options) : new http2.Agent(options); + this._agent = agent; + } + if (!agent) { + agent = usingSsl ? https.globalAgent : http2.globalAgent; + } + if (usingSsl && this._ignoreSslError) { + agent.options = Object.assign(agent.options || {}, { + rejectUnauthorized: false + }); + } + 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)); + }); + } + _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); + } + })); + }); + } + }; + exports.HttpClient = HttpClient2; + var lowercaseKeys = (obj) => Object.keys(obj).reduce((c, k) => (c[k.toLowerCase()] = obj[k], c), {}); + } +}); + +// node_modules/@actions/http-client/lib/auth.js +var require_auth = __commonJS({ + "node_modules/@actions/http-client/lib/auth.js"(exports) { + "use strict"; + var __awaiter = exports && exports.__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(exports, "__esModule", { value: true }); + exports.PersonalAccessTokenCredentialHandler = exports.BearerCredentialHandler = exports.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")}`; + } + // This handler cannot handle 401 + canHandleAuthentication() { + return false; + } + handleAuthentication() { + return __awaiter(this, void 0, void 0, function* () { + throw new Error("not implemented"); + }); + } + }; + exports.BasicCredentialHandler = BasicCredentialHandler; + var BearerCredentialHandler = class { + constructor(token) { + this.token = token; + } + // currently implements pre-authorization + // TODO: support preAuth = false where it hooks on 401 + prepareRequest(options) { + if (!options.headers) { + throw Error("The request has no headers"); + } + options.headers["Authorization"] = `Bearer ${this.token}`; + } + // This handler cannot handle 401 + canHandleAuthentication() { + return false; + } + handleAuthentication() { + return __awaiter(this, void 0, void 0, function* () { + throw new Error("not implemented"); + }); + } + }; + exports.BearerCredentialHandler = BearerCredentialHandler; + var PersonalAccessTokenCredentialHandler = class { + constructor(token) { + this.token = token; + } + // currently implements pre-authorization + // TODO: support preAuth = false where it hooks on 401 + prepareRequest(options) { + if (!options.headers) { + throw Error("The request has no headers"); + } + options.headers["Authorization"] = `Basic ${Buffer.from(`PAT:${this.token}`).toString("base64")}`; + } + // This handler cannot handle 401 + canHandleAuthentication() { + return false; + } + handleAuthentication() { + return __awaiter(this, void 0, void 0, function* () { + throw new Error("not implemented"); + }); + } + }; + exports.PersonalAccessTokenCredentialHandler = PersonalAccessTokenCredentialHandler; + } +}); + +// node_modules/@actions/core/lib/oidc-utils.js +var require_oidc_utils = __commonJS({ + "node_modules/@actions/core/lib/oidc-utils.js"(exports) { + "use strict"; + var __awaiter = exports && exports.__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(exports, "__esModule", { value: true }); + exports.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((error3) => { + throw new Error(`Failed to get ID Token. + + Error Code : ${error3.statusCode} + + Error Message: ${error3.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; + }); + } + 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}`; + } + 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 (error3) { + throw new Error(`Error message: ${error3.message}`); + } + }); + } + }; + exports.OidcClient = OidcClient; + } +}); + +// node_modules/@actions/core/lib/summary.js +var require_summary = __commonJS({ + "node_modules/@actions/core/lib/summary.js"(exports) { + "use strict"; + var __awaiter = exports && exports.__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(exports, "__esModule", { value: true }); + exports.summary = exports.markdownSummary = exports.SUMMARY_DOCS_URL = exports.SUMMARY_ENV_VAR = void 0; + var os_1 = require("os"); + var fs_1 = require("fs"); + var { access, appendFile, writeFile } = fs_1.promises; + exports.SUMMARY_ENV_VAR = "GITHUB_STEP_SUMMARY"; + exports.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 = ""; + } + /** + * 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[exports.SUMMARY_ENV_VAR]; + if (!pathFromEnv) { + throw new Error(`Unable to find environment variable for $${exports.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; + }); + } + /** + * 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(os_1.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(); + exports.markdownSummary = _summary; + exports.summary = _summary; + } +}); + +// node_modules/@actions/core/lib/path-utils.js +var require_path_utils = __commonJS({ + "node_modules/@actions/core/lib/path-utils.js"(exports) { + "use strict"; + var __createBinding = exports && exports.__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 = exports && exports.__setModuleDefault || (Object.create ? function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); + } : function(o, v) { + o["default"] = v; + }); + var __importStar = exports && exports.__importStar || 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(exports, "__esModule", { value: true }); + exports.toPlatformPath = exports.toWin32Path = exports.toPosixPath = void 0; + var path = __importStar(require("path")); + function toPosixPath(pth) { + return pth.replace(/[\\]/g, "/"); + } + exports.toPosixPath = toPosixPath; + function toWin32Path(pth) { + return pth.replace(/[/]/g, "\\"); + } + exports.toWin32Path = toWin32Path; + function toPlatformPath(pth) { + return pth.replace(/[/\\]/g, path.sep); + } + exports.toPlatformPath = toPlatformPath; + } +}); + +// node_modules/@actions/core/lib/core.js +var require_core = __commonJS({ + "node_modules/@actions/core/lib/core.js"(exports) { + "use strict"; + var __createBinding = exports && exports.__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 = exports && exports.__setModuleDefault || (Object.create ? function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); + } : function(o, v) { + o["default"] = v; + }); + var __importStar = exports && exports.__importStar || 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 = exports && exports.__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(exports, "__esModule", { value: true }); + exports.getIDToken = exports.getState = exports.saveState = exports.group = exports.endGroup = exports.startGroup = exports.info = exports.notice = exports.warning = exports.error = exports.debug = exports.isDebug = exports.setFailed = exports.setCommandEcho = exports.setOutput = exports.getBooleanInput = exports.getMultilineInput = exports.getInput = exports.addPath = exports.setSecret = exports.exportVariable = exports.ExitCode = 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 path = __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 = exports.ExitCode || (exports.ExitCode = {})); + function exportVariable(name, val2) { + const convertedVal = utils_1.toCommandValue(val2); + process.env[name] = convertedVal; + const filePath = process.env["GITHUB_ENV"] || ""; + if (filePath) { + return file_command_1.issueFileCommand("ENV", file_command_1.prepareKeyValueMessage(name, val2)); + } + command_1.issueCommand("set-env", { name }, convertedVal); + } + exports.exportVariable = exportVariable; + function setSecret(secret) { + command_1.issueCommand("add-mask", {}, secret); + } + exports.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}${path.delimiter}${process.env["PATH"]}`; + } + exports.addPath = addPath; + function getInput2(name, options) { + const val2 = process.env[`INPUT_${name.replace(/ /g, "_").toUpperCase()}`] || ""; + if (options && options.required && !val2) { + throw new Error(`Input required and not supplied: ${name}`); + } + if (options && options.trimWhitespace === false) { + return val2; + } + return val2.trim(); + } + exports.getInput = getInput2; + function getMultilineInput2(name, options) { + const inputs = getInput2(name, options).split("\n").filter((x) => x !== ""); + if (options && options.trimWhitespace === false) { + return inputs; + } + return inputs.map((input) => input.trim()); + } + exports.getMultilineInput = getMultilineInput2; + function getBooleanInput(name, options) { + const trueValue = ["true", "True", "TRUE"]; + const falseValue = ["false", "False", "FALSE"]; + const val2 = getInput2(name, options); + if (trueValue.includes(val2)) + return true; + if (falseValue.includes(val2)) + 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\``); + } + exports.getBooleanInput = getBooleanInput; + function setOutput2(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)); + } + exports.setOutput = setOutput2; + function setCommandEcho(enabled) { + command_1.issue("echo", enabled ? "on" : "off"); + } + exports.setCommandEcho = setCommandEcho; + function setFailed3(message) { + process.exitCode = ExitCode.Failure; + error3(message); + } + exports.setFailed = setFailed3; + function isDebug() { + return process.env["RUNNER_DEBUG"] === "1"; + } + exports.isDebug = isDebug; + function debug4(message) { + command_1.issueCommand("debug", {}, message); + } + exports.debug = debug4; + function error3(message, properties = {}) { + command_1.issueCommand("error", utils_1.toCommandProperties(properties), message instanceof Error ? message.toString() : message); + } + exports.error = error3; + function warning3(message, properties = {}) { + command_1.issueCommand("warning", utils_1.toCommandProperties(properties), message instanceof Error ? message.toString() : message); + } + exports.warning = warning3; + function notice(message, properties = {}) { + command_1.issueCommand("notice", utils_1.toCommandProperties(properties), message instanceof Error ? message.toString() : message); + } + exports.notice = notice; + function info3(message) { + process.stdout.write(message + os.EOL); + } + exports.info = info3; + function startGroup4(name) { + command_1.issue("group", name); + } + exports.startGroup = startGroup4; + function endGroup4() { + command_1.issue("endgroup"); + } + exports.endGroup = endGroup4; + function group(name, fn) { + return __awaiter(this, void 0, void 0, function* () { + startGroup4(name); + let result; + try { + result = yield fn(); + } finally { + endGroup4(); + } + return result; + }); + } + exports.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)); + } + command_1.issueCommand("save-state", { name }, utils_1.toCommandValue(value)); + } + exports.saveState = saveState; + function getState(name) { + return process.env[`STATE_${name}`] || ""; + } + exports.getState = getState; + function getIDToken(aud) { + return __awaiter(this, void 0, void 0, function* () { + return yield oidc_utils_1.OidcClient.getIDToken(aud); + }); + } + exports.getIDToken = getIDToken; + var summary_1 = require_summary(); + Object.defineProperty(exports, "summary", { enumerable: true, get: function() { + return summary_1.summary; + } }); + var summary_2 = require_summary(); + Object.defineProperty(exports, "markdownSummary", { enumerable: true, get: function() { + return summary_2.markdownSummary; + } }); + var path_utils_1 = require_path_utils(); + Object.defineProperty(exports, "toPosixPath", { enumerable: true, get: function() { + return path_utils_1.toPosixPath; + } }); + Object.defineProperty(exports, "toWin32Path", { enumerable: true, get: function() { + return path_utils_1.toWin32Path; + } }); + Object.defineProperty(exports, "toPlatformPath", { enumerable: true, get: function() { + return path_utils_1.toPlatformPath; + } }); + } +}); + +// node_modules/@actions/glob/lib/internal-glob-options-helper.js +var require_internal_glob_options_helper = __commonJS({ + "node_modules/@actions/glob/lib/internal-glob-options-helper.js"(exports) { + "use strict"; + var __createBinding = exports && exports.__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 = exports && exports.__setModuleDefault || (Object.create ? function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); + } : function(o, v) { + o["default"] = v; + }); + var __importStar = exports && exports.__importStar || 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(exports, "__esModule", { value: true }); + exports.getOptions = void 0; + var core6 = __importStar(require_core()); + function getOptions(copy) { + const result = { + followSymbolicLinks: true, + implicitDescendants: true, + matchDirectories: true, + omitBrokenSymbolicLinks: true + }; + if (copy) { + if (typeof copy.followSymbolicLinks === "boolean") { + result.followSymbolicLinks = copy.followSymbolicLinks; + core6.debug(`followSymbolicLinks '${result.followSymbolicLinks}'`); + } + if (typeof copy.implicitDescendants === "boolean") { + result.implicitDescendants = copy.implicitDescendants; + core6.debug(`implicitDescendants '${result.implicitDescendants}'`); + } + if (typeof copy.matchDirectories === "boolean") { + result.matchDirectories = copy.matchDirectories; + core6.debug(`matchDirectories '${result.matchDirectories}'`); + } + if (typeof copy.omitBrokenSymbolicLinks === "boolean") { + result.omitBrokenSymbolicLinks = copy.omitBrokenSymbolicLinks; + core6.debug(`omitBrokenSymbolicLinks '${result.omitBrokenSymbolicLinks}'`); + } + } + return result; + } + exports.getOptions = getOptions; + } +}); + +// node_modules/@actions/glob/lib/internal-path-helper.js +var require_internal_path_helper = __commonJS({ + "node_modules/@actions/glob/lib/internal-path-helper.js"(exports) { + "use strict"; + var __createBinding = exports && exports.__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 = exports && exports.__setModuleDefault || (Object.create ? function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); + } : function(o, v) { + o["default"] = v; + }); + var __importStar = exports && exports.__importStar || 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 __importDefault = exports && exports.__importDefault || function(mod) { + return mod && mod.__esModule ? mod : { "default": mod }; + }; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.safeTrimTrailingSeparator = exports.normalizeSeparators = exports.hasRoot = exports.hasAbsoluteRoot = exports.ensureAbsoluteRoot = exports.dirname = void 0; + var path = __importStar(require("path")); + var assert_1 = __importDefault(require("assert")); + var IS_WINDOWS = process.platform === "win32"; + function dirname(p) { + p = safeTrimTrailingSeparator(p); + if (IS_WINDOWS && /^\\\\[^\\]+(\\[^\\]+)?$/.test(p)) { + return p; + } + let result = path.dirname(p); + if (IS_WINDOWS && /^\\\\[^\\]+\\[^\\]+\\$/.test(result)) { + result = safeTrimTrailingSeparator(result); + } + return result; + } + exports.dirname = dirname; + function ensureAbsoluteRoot(root, itemPath) { + assert_1.default(root, `ensureAbsoluteRoot parameter 'root' must not be empty`); + assert_1.default(itemPath, `ensureAbsoluteRoot parameter 'itemPath' must not be empty`); + if (hasAbsoluteRoot(itemPath)) { + return itemPath; + } + if (IS_WINDOWS) { + if (itemPath.match(/^[A-Z]:[^\\/]|^[A-Z]:$/i)) { + let cwd = process.cwd(); + assert_1.default(cwd.match(/^[A-Z]:\\/i), `Expected current directory to start with an absolute drive root. Actual '${cwd}'`); + if (itemPath[0].toUpperCase() === cwd[0].toUpperCase()) { + if (itemPath.length === 2) { + return `${itemPath[0]}:\\${cwd.substr(3)}`; + } else { + if (!cwd.endsWith("\\")) { + cwd += "\\"; + } + return `${itemPath[0]}:\\${cwd.substr(3)}${itemPath.substr(2)}`; + } + } else { + return `${itemPath[0]}:\\${itemPath.substr(2)}`; + } + } else if (normalizeSeparators(itemPath).match(/^\\$|^\\[^\\]/)) { + const cwd = process.cwd(); + assert_1.default(cwd.match(/^[A-Z]:\\/i), `Expected current directory to start with an absolute drive root. Actual '${cwd}'`); + return `${cwd[0]}:\\${itemPath.substr(1)}`; + } + } + assert_1.default(hasAbsoluteRoot(root), `ensureAbsoluteRoot parameter 'root' must have an absolute root`); + if (root.endsWith("/") || IS_WINDOWS && root.endsWith("\\")) { + } else { + root += path.sep; + } + return root + itemPath; + } + exports.ensureAbsoluteRoot = ensureAbsoluteRoot; + function hasAbsoluteRoot(itemPath) { + assert_1.default(itemPath, `hasAbsoluteRoot parameter 'itemPath' must not be empty`); + itemPath = normalizeSeparators(itemPath); + if (IS_WINDOWS) { + return itemPath.startsWith("\\\\") || /^[A-Z]:\\/i.test(itemPath); + } + return itemPath.startsWith("/"); + } + exports.hasAbsoluteRoot = hasAbsoluteRoot; + function hasRoot(itemPath) { + assert_1.default(itemPath, `isRooted parameter 'itemPath' must not be empty`); + itemPath = normalizeSeparators(itemPath); + if (IS_WINDOWS) { + return itemPath.startsWith("\\") || /^[A-Z]:/i.test(itemPath); + } + return itemPath.startsWith("/"); + } + exports.hasRoot = hasRoot; + function normalizeSeparators(p) { + p = p || ""; + if (IS_WINDOWS) { + p = p.replace(/\//g, "\\"); + const isUnc = /^\\\\+[^\\]/.test(p); + return (isUnc ? "\\" : "") + p.replace(/\\\\+/g, "\\"); + } + return p.replace(/\/\/+/g, "/"); + } + exports.normalizeSeparators = normalizeSeparators; + function safeTrimTrailingSeparator(p) { + if (!p) { + return ""; + } + p = normalizeSeparators(p); + if (!p.endsWith(path.sep)) { + return p; + } + if (p === path.sep) { + return p; + } + if (IS_WINDOWS && /^[A-Z]:\\$/i.test(p)) { + return p; + } + return p.substr(0, p.length - 1); + } + exports.safeTrimTrailingSeparator = safeTrimTrailingSeparator; + } +}); + +// node_modules/@actions/glob/lib/internal-match-kind.js +var require_internal_match_kind = __commonJS({ + "node_modules/@actions/glob/lib/internal-match-kind.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.MatchKind = void 0; + var MatchKind; + (function(MatchKind2) { + MatchKind2[MatchKind2["None"] = 0] = "None"; + MatchKind2[MatchKind2["Directory"] = 1] = "Directory"; + MatchKind2[MatchKind2["File"] = 2] = "File"; + MatchKind2[MatchKind2["All"] = 3] = "All"; + })(MatchKind = exports.MatchKind || (exports.MatchKind = {})); + } +}); + +// node_modules/@actions/glob/lib/internal-pattern-helper.js +var require_internal_pattern_helper = __commonJS({ + "node_modules/@actions/glob/lib/internal-pattern-helper.js"(exports) { + "use strict"; + var __createBinding = exports && exports.__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 = exports && exports.__setModuleDefault || (Object.create ? function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); + } : function(o, v) { + o["default"] = v; + }); + var __importStar = exports && exports.__importStar || 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(exports, "__esModule", { value: true }); + exports.partialMatch = exports.match = exports.getSearchPaths = void 0; + var pathHelper = __importStar(require_internal_path_helper()); + var internal_match_kind_1 = require_internal_match_kind(); + var IS_WINDOWS = process.platform === "win32"; + function getSearchPaths(patterns) { + patterns = patterns.filter((x) => !x.negate); + const searchPathMap = {}; + for (const pattern of patterns) { + const key = IS_WINDOWS ? pattern.searchPath.toUpperCase() : pattern.searchPath; + searchPathMap[key] = "candidate"; + } + const result = []; + for (const pattern of patterns) { + const key = IS_WINDOWS ? pattern.searchPath.toUpperCase() : pattern.searchPath; + if (searchPathMap[key] === "included") { + continue; + } + let foundAncestor = false; + let tempKey = key; + let parent = pathHelper.dirname(tempKey); + while (parent !== tempKey) { + if (searchPathMap[parent]) { + foundAncestor = true; + break; + } + tempKey = parent; + parent = pathHelper.dirname(tempKey); + } + if (!foundAncestor) { + result.push(pattern.searchPath); + searchPathMap[key] = "included"; + } + } + return result; + } + exports.getSearchPaths = getSearchPaths; + function match(patterns, itemPath) { + let result = internal_match_kind_1.MatchKind.None; + for (const pattern of patterns) { + if (pattern.negate) { + result &= ~pattern.match(itemPath); + } else { + result |= pattern.match(itemPath); + } + } + return result; + } + exports.match = match; + function partialMatch(patterns, itemPath) { + return patterns.some((x) => !x.negate && x.partialMatch(itemPath)); + } + exports.partialMatch = partialMatch; + } +}); + +// node_modules/concat-map/index.js +var require_concat_map = __commonJS({ + "node_modules/concat-map/index.js"(exports, module2) { + module2.exports = function(xs, fn) { + var res = []; + for (var i = 0; i < xs.length; i++) { + var x = fn(xs[i], i); + if (isArray(x)) + res.push.apply(res, x); + else + res.push(x); + } + return res; + }; + var isArray = Array.isArray || function(xs) { + return Object.prototype.toString.call(xs) === "[object Array]"; + }; + } +}); + +// node_modules/balanced-match/index.js +var require_balanced_match = __commonJS({ + "node_modules/balanced-match/index.js"(exports, module2) { + "use strict"; + module2.exports = balanced; + function balanced(a, b, str) { + if (a instanceof RegExp) + a = maybeMatch(a, str); + if (b instanceof RegExp) + b = maybeMatch(b, str); + var r = range(a, b, str); + return r && { + start: r[0], + end: r[1], + pre: str.slice(0, r[0]), + body: str.slice(r[0] + a.length, r[1]), + post: str.slice(r[1] + b.length) + }; + } + function maybeMatch(reg, str) { + var m = str.match(reg); + return m ? m[0] : null; + } + balanced.range = range; + function range(a, b, str) { + var begs, beg, left, right, result; + var ai = str.indexOf(a); + var bi = str.indexOf(b, ai + 1); + var i = ai; + if (ai >= 0 && bi > 0) { + if (a === b) { + return [ai, bi]; + } + begs = []; + left = str.length; + while (i >= 0 && !result) { + if (i == ai) { + begs.push(i); + ai = str.indexOf(a, i + 1); + } else if (begs.length == 1) { + result = [begs.pop(), bi]; + } else { + beg = begs.pop(); + if (beg < left) { + left = beg; + right = bi; + } + bi = str.indexOf(b, i + 1); + } + i = ai < bi && ai >= 0 ? ai : bi; + } + if (begs.length) { + result = [left, right]; + } + } + return result; + } + } +}); + +// node_modules/brace-expansion/index.js +var require_brace_expansion = __commonJS({ + "node_modules/brace-expansion/index.js"(exports, module2) { + var concatMap = require_concat_map(); + var balanced = require_balanced_match(); + module2.exports = expandTop; + var escSlash = "\0SLASH" + Math.random() + "\0"; + var escOpen = "\0OPEN" + Math.random() + "\0"; + var escClose = "\0CLOSE" + Math.random() + "\0"; + var escComma = "\0COMMA" + Math.random() + "\0"; + var escPeriod = "\0PERIOD" + Math.random() + "\0"; + function numeric(str) { + return parseInt(str, 10) == str ? parseInt(str, 10) : str.charCodeAt(0); + } + function escapeBraces(str) { + return str.split("\\\\").join(escSlash).split("\\{").join(escOpen).split("\\}").join(escClose).split("\\,").join(escComma).split("\\.").join(escPeriod); + } + function unescapeBraces(str) { + return str.split(escSlash).join("\\").split(escOpen).join("{").split(escClose).join("}").split(escComma).join(",").split(escPeriod).join("."); + } + function parseCommaParts(str) { + if (!str) + return [""]; + var parts = []; + var m = balanced("{", "}", str); + if (!m) + return str.split(","); + var pre = m.pre; + var body = m.body; + var post = m.post; + var p = pre.split(","); + p[p.length - 1] += "{" + body + "}"; + var postParts = parseCommaParts(post); + if (post.length) { + p[p.length - 1] += postParts.shift(); + p.push.apply(p, postParts); + } + parts.push.apply(parts, p); + return parts; + } + function expandTop(str) { + if (!str) + return []; + if (str.substr(0, 2) === "{}") { + str = "\\{\\}" + str.substr(2); + } + return expand(escapeBraces(str), true).map(unescapeBraces); + } + function embrace(str) { + return "{" + str + "}"; + } + function isPadded(el) { + return /^-?0\d/.test(el); + } + function lte(i, y) { + return i <= y; + } + function gte(i, y) { + return i >= y; + } + function expand(str, isTop) { + var expansions = []; + var m = balanced("{", "}", str); + if (!m || /\$$/.test(m.pre)) + return [str]; + var isNumericSequence = /^-?\d+\.\.-?\d+(?:\.\.-?\d+)?$/.test(m.body); + var isAlphaSequence = /^[a-zA-Z]\.\.[a-zA-Z](?:\.\.-?\d+)?$/.test(m.body); + var isSequence = isNumericSequence || isAlphaSequence; + var isOptions = m.body.indexOf(",") >= 0; + if (!isSequence && !isOptions) { + if (m.post.match(/,.*\}/)) { + str = m.pre + "{" + m.body + escClose + m.post; + return expand(str); + } + return [str]; + } + var n; + if (isSequence) { + n = m.body.split(/\.\./); + } else { + n = parseCommaParts(m.body); + if (n.length === 1) { + n = expand(n[0], false).map(embrace); + if (n.length === 1) { + var post = m.post.length ? expand(m.post, false) : [""]; + return post.map(function(p) { + return m.pre + n[0] + p; + }); + } + } + } + var pre = m.pre; + var post = m.post.length ? expand(m.post, false) : [""]; + var N; + if (isSequence) { + var x = numeric(n[0]); + var y = numeric(n[1]); + var width = Math.max(n[0].length, n[1].length); + var incr = n.length == 3 ? Math.abs(numeric(n[2])) : 1; + var test = lte; + var reverse = y < x; + if (reverse) { + incr *= -1; + test = gte; + } + var pad = n.some(isPadded); + N = []; + for (var i = x; test(i, y); i += incr) { + var c; + if (isAlphaSequence) { + c = String.fromCharCode(i); + if (c === "\\") + c = ""; + } else { + c = String(i); + if (pad) { + var need = width - c.length; + if (need > 0) { + var z = new Array(need + 1).join("0"); + if (i < 0) + c = "-" + z + c.slice(1); + else + c = z + c; + } + } + } + N.push(c); + } + } else { + N = concatMap(n, function(el) { + return expand(el, false); + }); + } + for (var j = 0; j < N.length; j++) { + for (var k = 0; k < post.length; k++) { + var expansion = pre + N[j] + post[k]; + if (!isTop || isSequence || expansion) + expansions.push(expansion); + } + } + return expansions; + } + } +}); + +// node_modules/minimatch/minimatch.js +var require_minimatch = __commonJS({ + "node_modules/minimatch/minimatch.js"(exports, module2) { + module2.exports = minimatch; + minimatch.Minimatch = Minimatch; + var path = function() { + try { + return require("path"); + } catch (e) { + } + }() || { + sep: "/" + }; + minimatch.sep = path.sep; + var GLOBSTAR = minimatch.GLOBSTAR = Minimatch.GLOBSTAR = {}; + var expand = require_brace_expansion(); + var plTypes = { + "!": { open: "(?:(?!(?:", close: "))[^/]*?)" }, + "?": { open: "(?:", close: ")?" }, + "+": { open: "(?:", close: ")+" }, + "*": { open: "(?:", close: ")*" }, + "@": { open: "(?:", close: ")" } + }; + var qmark = "[^/]"; + var star = qmark + "*?"; + var twoStarDot = "(?:(?!(?:\\/|^)(?:\\.{1,2})($|\\/)).)*?"; + var twoStarNoDot = "(?:(?!(?:\\/|^)\\.).)*?"; + var reSpecials = charSet("().*{}+?[]^$\\!"); + function charSet(s) { + return s.split("").reduce(function(set, c) { + set[c] = true; + return set; + }, {}); + } + var slashSplit = /\/+/; + minimatch.filter = filter; + function filter(pattern, options) { + options = options || {}; + return function(p, i, list) { + return minimatch(p, pattern, options); + }; + } + function ext(a, b) { + b = b || {}; + var t = {}; + Object.keys(a).forEach(function(k) { + t[k] = a[k]; + }); + Object.keys(b).forEach(function(k) { + t[k] = b[k]; + }); + return t; + } + minimatch.defaults = function(def) { + if (!def || typeof def !== "object" || !Object.keys(def).length) { + return minimatch; + } + var orig = minimatch; + var m = function minimatch2(p, pattern, options) { + return orig(p, pattern, ext(def, options)); + }; + m.Minimatch = function Minimatch2(pattern, options) { + return new orig.Minimatch(pattern, ext(def, options)); + }; + m.Minimatch.defaults = function defaults(options) { + return orig.defaults(ext(def, options)).Minimatch; + }; + m.filter = function filter2(pattern, options) { + return orig.filter(pattern, ext(def, options)); + }; + m.defaults = function defaults(options) { + return orig.defaults(ext(def, options)); + }; + m.makeRe = function makeRe2(pattern, options) { + return orig.makeRe(pattern, ext(def, options)); + }; + m.braceExpand = function braceExpand2(pattern, options) { + return orig.braceExpand(pattern, ext(def, options)); + }; + m.match = function(list, pattern, options) { + return orig.match(list, pattern, ext(def, options)); + }; + return m; + }; + Minimatch.defaults = function(def) { + return minimatch.defaults(def).Minimatch; + }; + function minimatch(p, pattern, options) { + assertValidPattern(pattern); + if (!options) + options = {}; + if (!options.nocomment && pattern.charAt(0) === "#") { + return false; + } + return new Minimatch(pattern, options).match(p); + } + function Minimatch(pattern, options) { + if (!(this instanceof Minimatch)) { + return new Minimatch(pattern, options); + } + assertValidPattern(pattern); + if (!options) + options = {}; + pattern = pattern.trim(); + if (!options.allowWindowsEscape && path.sep !== "/") { + pattern = pattern.split(path.sep).join("/"); + } + this.options = options; + this.set = []; + this.pattern = pattern; + this.regexp = null; + this.negate = false; + this.comment = false; + this.empty = false; + this.partial = !!options.partial; + this.make(); + } + Minimatch.prototype.debug = function() { + }; + Minimatch.prototype.make = make; + function make() { + var pattern = this.pattern; + var options = this.options; + if (!options.nocomment && pattern.charAt(0) === "#") { + this.comment = true; + return; + } + if (!pattern) { + this.empty = true; + return; + } + this.parseNegate(); + var set = this.globSet = this.braceExpand(); + if (options.debug) + this.debug = function debug4() { + console.error.apply(console, arguments); + }; + this.debug(this.pattern, set); + set = this.globParts = set.map(function(s) { + return s.split(slashSplit); + }); + this.debug(this.pattern, set); + set = set.map(function(s, si, set2) { + return s.map(this.parse, this); + }, this); + this.debug(this.pattern, set); + set = set.filter(function(s) { + return s.indexOf(false) === -1; + }); + this.debug(this.pattern, set); + this.set = set; + } + Minimatch.prototype.parseNegate = parseNegate; + function parseNegate() { + var pattern = this.pattern; + var negate = false; + var options = this.options; + var negateOffset = 0; + if (options.nonegate) + return; + for (var i = 0, l = pattern.length; i < l && pattern.charAt(i) === "!"; i++) { + negate = !negate; + negateOffset++; + } + if (negateOffset) + this.pattern = pattern.substr(negateOffset); + this.negate = negate; + } + minimatch.braceExpand = function(pattern, options) { + return braceExpand(pattern, options); + }; + Minimatch.prototype.braceExpand = braceExpand; + function braceExpand(pattern, options) { + if (!options) { + if (this instanceof Minimatch) { + options = this.options; + } else { + options = {}; + } + } + pattern = typeof pattern === "undefined" ? this.pattern : pattern; + assertValidPattern(pattern); + if (options.nobrace || !/\{(?:(?!\{).)*\}/.test(pattern)) { + return [pattern]; + } + return expand(pattern); + } + var MAX_PATTERN_LENGTH = 1024 * 64; + var assertValidPattern = function(pattern) { + if (typeof pattern !== "string") { + throw new TypeError("invalid pattern"); + } + if (pattern.length > MAX_PATTERN_LENGTH) { + throw new TypeError("pattern is too long"); + } + }; + Minimatch.prototype.parse = parse2; + var SUBPARSE = {}; + function parse2(pattern, isSub) { + assertValidPattern(pattern); + var options = this.options; + if (pattern === "**") { + if (!options.noglobstar) + return GLOBSTAR; + else + pattern = "*"; + } + if (pattern === "") + return ""; + var re = ""; + var hasMagic = !!options.nocase; + var escaping = false; + var patternListStack = []; + var negativeLists = []; + var stateChar; + var inClass = false; + var reClassStart = -1; + var classStart = -1; + var patternStart = pattern.charAt(0) === "." ? "" : options.dot ? "(?!(?:^|\\/)\\.{1,2}(?:$|\\/))" : "(?!\\.)"; + var self = this; + function clearStateChar() { + if (stateChar) { + switch (stateChar) { + case "*": + re += star; + hasMagic = true; + break; + case "?": + re += qmark; + hasMagic = true; + break; + default: + re += "\\" + stateChar; + break; + } + self.debug("clearStateChar %j %j", stateChar, re); + stateChar = false; + } + } + for (var i = 0, len = pattern.length, c; i < len && (c = pattern.charAt(i)); i++) { + this.debug("%s %s %s %j", pattern, i, re, c); + if (escaping && reSpecials[c]) { + re += "\\" + c; + escaping = false; + continue; + } + switch (c) { + case "/": { + return false; + } + case "\\": + clearStateChar(); + escaping = true; + continue; + case "?": + case "*": + case "+": + case "@": + case "!": + this.debug("%s %s %s %j <-- stateChar", pattern, i, re, c); + if (inClass) { + this.debug(" in class"); + if (c === "!" && i === classStart + 1) + c = "^"; + re += c; + continue; + } + self.debug("call clearStateChar %j", stateChar); + clearStateChar(); + stateChar = c; + if (options.noext) + clearStateChar(); + continue; + case "(": + if (inClass) { + re += "("; + continue; + } + if (!stateChar) { + re += "\\("; + continue; + } + patternListStack.push({ + type: stateChar, + start: i - 1, + reStart: re.length, + open: plTypes[stateChar].open, + close: plTypes[stateChar].close + }); + re += stateChar === "!" ? "(?:(?!(?:" : "(?:"; + this.debug("plType %j %j", stateChar, re); + stateChar = false; + continue; + case ")": + if (inClass || !patternListStack.length) { + re += "\\)"; + continue; + } + clearStateChar(); + hasMagic = true; + var pl = patternListStack.pop(); + re += pl.close; + if (pl.type === "!") { + negativeLists.push(pl); + } + pl.reEnd = re.length; + continue; + case "|": + if (inClass || !patternListStack.length || escaping) { + re += "\\|"; + escaping = false; + continue; + } + clearStateChar(); + re += "|"; + continue; + case "[": + clearStateChar(); + if (inClass) { + re += "\\" + c; + continue; + } + inClass = true; + classStart = i; + reClassStart = re.length; + re += c; + continue; + case "]": + if (i === classStart + 1 || !inClass) { + re += "\\" + c; + escaping = false; + continue; + } + var cs = pattern.substring(classStart + 1, i); + try { + RegExp("[" + cs + "]"); + } catch (er) { + var sp = this.parse(cs, SUBPARSE); + re = re.substr(0, reClassStart) + "\\[" + sp[0] + "\\]"; + hasMagic = hasMagic || sp[1]; + inClass = false; + continue; + } + hasMagic = true; + inClass = false; + re += c; + continue; + default: + clearStateChar(); + if (escaping) { + escaping = false; + } else if (reSpecials[c] && !(c === "^" && inClass)) { + re += "\\"; + } + re += c; + } + } + if (inClass) { + cs = pattern.substr(classStart + 1); + sp = this.parse(cs, SUBPARSE); + re = re.substr(0, reClassStart) + "\\[" + sp[0]; + hasMagic = hasMagic || sp[1]; + } + for (pl = patternListStack.pop(); pl; pl = patternListStack.pop()) { + var tail = re.slice(pl.reStart + pl.open.length); + this.debug("setting tail", re, pl); + tail = tail.replace(/((?:\\{2}){0,64})(\\?)\|/g, function(_, $1, $2) { + if (!$2) { + $2 = "\\"; + } + return $1 + $1 + $2 + "|"; + }); + this.debug("tail=%j\n %s", tail, tail, pl, re); + var t = pl.type === "*" ? star : pl.type === "?" ? qmark : "\\" + pl.type; + hasMagic = true; + re = re.slice(0, pl.reStart) + t + "\\(" + tail; + } + clearStateChar(); + if (escaping) { + re += "\\\\"; + } + var addPatternStart = false; + switch (re.charAt(0)) { + case "[": + case ".": + case "(": + addPatternStart = true; + } + for (var n = negativeLists.length - 1; n > -1; n--) { + var nl = negativeLists[n]; + var nlBefore = re.slice(0, nl.reStart); + var nlFirst = re.slice(nl.reStart, nl.reEnd - 8); + var nlLast = re.slice(nl.reEnd - 8, nl.reEnd); + var nlAfter = re.slice(nl.reEnd); + nlLast += nlAfter; + var openParensBefore = nlBefore.split("(").length - 1; + var cleanAfter = nlAfter; + for (i = 0; i < openParensBefore; i++) { + cleanAfter = cleanAfter.replace(/\)[+*?]?/, ""); + } + nlAfter = cleanAfter; + var dollar = ""; + if (nlAfter === "" && isSub !== SUBPARSE) { + dollar = "$"; + } + var newRe = nlBefore + nlFirst + nlAfter + dollar + nlLast; + re = newRe; + } + if (re !== "" && hasMagic) { + re = "(?=.)" + re; + } + if (addPatternStart) { + re = patternStart + re; + } + if (isSub === SUBPARSE) { + return [re, hasMagic]; + } + if (!hasMagic) { + return globUnescape(pattern); + } + var flags = options.nocase ? "i" : ""; + try { + var regExp = new RegExp("^" + re + "$", flags); + } catch (er) { + return new RegExp("$."); + } + regExp._glob = pattern; + regExp._src = re; + return regExp; + } + minimatch.makeRe = function(pattern, options) { + return new Minimatch(pattern, options || {}).makeRe(); + }; + Minimatch.prototype.makeRe = makeRe; + function makeRe() { + if (this.regexp || this.regexp === false) + return this.regexp; + var set = this.set; + if (!set.length) { + this.regexp = false; + return this.regexp; + } + var options = this.options; + var twoStar = options.noglobstar ? star : options.dot ? twoStarDot : twoStarNoDot; + var flags = options.nocase ? "i" : ""; + var re = set.map(function(pattern) { + return pattern.map(function(p) { + return p === GLOBSTAR ? twoStar : typeof p === "string" ? regExpEscape(p) : p._src; + }).join("\\/"); + }).join("|"); + re = "^(?:" + re + ")$"; + if (this.negate) + re = "^(?!" + re + ").*$"; + try { + this.regexp = new RegExp(re, flags); + } catch (ex) { + this.regexp = false; + } + return this.regexp; + } + minimatch.match = function(list, pattern, options) { + options = options || {}; + var mm = new Minimatch(pattern, options); + list = list.filter(function(f) { + return mm.match(f); + }); + if (mm.options.nonull && !list.length) { + list.push(pattern); + } + return list; + }; + Minimatch.prototype.match = function match(f, partial) { + if (typeof partial === "undefined") + partial = this.partial; + this.debug("match", f, this.pattern); + if (this.comment) + return false; + if (this.empty) + return f === ""; + if (f === "/" && partial) + return true; + var options = this.options; + if (path.sep !== "/") { + f = f.split(path.sep).join("/"); + } + f = f.split(slashSplit); + this.debug(this.pattern, "split", f); + var set = this.set; + this.debug(this.pattern, "set", set); + var filename; + var i; + for (i = f.length - 1; i >= 0; i--) { + filename = f[i]; + if (filename) + break; + } + for (i = 0; i < set.length; i++) { + var pattern = set[i]; + var file = f; + if (options.matchBase && pattern.length === 1) { + file = [filename]; + } + var hit = this.matchOne(file, pattern, partial); + if (hit) { + if (options.flipNegate) + return true; + return !this.negate; + } + } + if (options.flipNegate) + return false; + return this.negate; + }; + Minimatch.prototype.matchOne = function(file, pattern, partial) { + var options = this.options; + this.debug( + "matchOne", + { "this": this, file, pattern } + ); + this.debug("matchOne", file.length, pattern.length); + for (var fi = 0, pi = 0, fl = file.length, pl = pattern.length; fi < fl && pi < pl; fi++, pi++) { + this.debug("matchOne loop"); + var p = pattern[pi]; + var f = file[fi]; + this.debug(pattern, p, f); + if (p === false) + return false; + if (p === GLOBSTAR) { + this.debug("GLOBSTAR", [pattern, p, f]); + var fr = fi; + var pr = pi + 1; + if (pr === pl) { + this.debug("** at the end"); + for (; fi < fl; fi++) { + if (file[fi] === "." || file[fi] === ".." || !options.dot && file[fi].charAt(0) === ".") + return false; + } + return true; + } + while (fr < fl) { + var swallowee = file[fr]; + this.debug("\nglobstar while", file, fr, pattern, pr, swallowee); + if (this.matchOne(file.slice(fr), pattern.slice(pr), partial)) { + this.debug("globstar found match!", fr, fl, swallowee); + return true; + } else { + if (swallowee === "." || swallowee === ".." || !options.dot && swallowee.charAt(0) === ".") { + this.debug("dot detected!", file, fr, pattern, pr); + break; + } + this.debug("globstar swallow a segment, and continue"); + fr++; + } + } + if (partial) { + this.debug("\n>>> no match, partial?", file, fr, pattern, pr); + if (fr === fl) + return true; + } + return false; + } + var hit; + if (typeof p === "string") { + hit = f === p; + this.debug("string match", p, f, hit); + } else { + hit = f.match(p); + this.debug("pattern match", p, f, hit); + } + if (!hit) + return false; + } + if (fi === fl && pi === pl) { + return true; + } else if (fi === fl) { + return partial; + } else if (pi === pl) { + return fi === fl - 1 && file[fi] === ""; + } + throw new Error("wtf?"); + }; + function globUnescape(s) { + return s.replace(/\\(.)/g, "$1"); + } + function regExpEscape(s) { + return s.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&"); + } + } +}); + +// node_modules/@actions/glob/lib/internal-path.js +var require_internal_path = __commonJS({ + "node_modules/@actions/glob/lib/internal-path.js"(exports) { + "use strict"; + var __createBinding = exports && exports.__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 = exports && exports.__setModuleDefault || (Object.create ? function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); + } : function(o, v) { + o["default"] = v; + }); + var __importStar = exports && exports.__importStar || 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 __importDefault = exports && exports.__importDefault || function(mod) { + return mod && mod.__esModule ? mod : { "default": mod }; + }; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.Path = void 0; + var path = __importStar(require("path")); + var pathHelper = __importStar(require_internal_path_helper()); + var assert_1 = __importDefault(require("assert")); + var IS_WINDOWS = process.platform === "win32"; + var Path = class { + /** + * Constructs a Path + * @param itemPath Path or array of segments + */ + constructor(itemPath) { + this.segments = []; + if (typeof itemPath === "string") { + assert_1.default(itemPath, `Parameter 'itemPath' must not be empty`); + itemPath = pathHelper.safeTrimTrailingSeparator(itemPath); + if (!pathHelper.hasRoot(itemPath)) { + this.segments = itemPath.split(path.sep); + } else { + let remaining = itemPath; + let dir = pathHelper.dirname(remaining); + while (dir !== remaining) { + const basename = path.basename(remaining); + this.segments.unshift(basename); + remaining = dir; + dir = pathHelper.dirname(remaining); + } + this.segments.unshift(remaining); + } + } else { + assert_1.default(itemPath.length > 0, `Parameter 'itemPath' must not be an empty array`); + for (let i = 0; i < itemPath.length; i++) { + let segment = itemPath[i]; + assert_1.default(segment, `Parameter 'itemPath' must not contain any empty segments`); + segment = pathHelper.normalizeSeparators(itemPath[i]); + if (i === 0 && pathHelper.hasRoot(segment)) { + segment = pathHelper.safeTrimTrailingSeparator(segment); + assert_1.default(segment === pathHelper.dirname(segment), `Parameter 'itemPath' root segment contains information for multiple segments`); + this.segments.push(segment); + } else { + assert_1.default(!segment.includes(path.sep), `Parameter 'itemPath' contains unexpected path separators`); + this.segments.push(segment); + } + } + } + } + /** + * Converts the path to it's string representation + */ + toString() { + let result = this.segments[0]; + let skipSlash = result.endsWith(path.sep) || IS_WINDOWS && /^[A-Z]:$/i.test(result); + for (let i = 1; i < this.segments.length; i++) { + if (skipSlash) { + skipSlash = false; + } else { + result += path.sep; + } + result += this.segments[i]; + } + return result; + } + }; + exports.Path = Path; + } +}); + +// node_modules/@actions/glob/lib/internal-pattern.js +var require_internal_pattern = __commonJS({ + "node_modules/@actions/glob/lib/internal-pattern.js"(exports) { + "use strict"; + var __createBinding = exports && exports.__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 = exports && exports.__setModuleDefault || (Object.create ? function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); + } : function(o, v) { + o["default"] = v; + }); + var __importStar = exports && exports.__importStar || 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 __importDefault = exports && exports.__importDefault || function(mod) { + return mod && mod.__esModule ? mod : { "default": mod }; + }; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.Pattern = void 0; + var os = __importStar(require("os")); + var path = __importStar(require("path")); + var pathHelper = __importStar(require_internal_path_helper()); + var assert_1 = __importDefault(require("assert")); + var minimatch_1 = require_minimatch(); + var internal_match_kind_1 = require_internal_match_kind(); + var internal_path_1 = require_internal_path(); + var IS_WINDOWS = process.platform === "win32"; + var Pattern = class { + constructor(patternOrNegate, isImplicitPattern = false, segments, homedir) { + this.negate = false; + let pattern; + if (typeof patternOrNegate === "string") { + pattern = patternOrNegate.trim(); + } else { + segments = segments || []; + assert_1.default(segments.length, `Parameter 'segments' must not empty`); + const root = Pattern.getLiteral(segments[0]); + assert_1.default(root && pathHelper.hasAbsoluteRoot(root), `Parameter 'segments' first element must be a root path`); + pattern = new internal_path_1.Path(segments).toString().trim(); + if (patternOrNegate) { + pattern = `!${pattern}`; + } + } + while (pattern.startsWith("!")) { + this.negate = !this.negate; + pattern = pattern.substr(1).trim(); + } + pattern = Pattern.fixupPattern(pattern, homedir); + this.segments = new internal_path_1.Path(pattern).segments; + this.trailingSeparator = pathHelper.normalizeSeparators(pattern).endsWith(path.sep); + pattern = pathHelper.safeTrimTrailingSeparator(pattern); + let foundGlob = false; + const searchSegments = this.segments.map((x) => Pattern.getLiteral(x)).filter((x) => !foundGlob && !(foundGlob = x === "")); + this.searchPath = new internal_path_1.Path(searchSegments).toString(); + this.rootRegExp = new RegExp(Pattern.regExpEscape(searchSegments[0]), IS_WINDOWS ? "i" : ""); + this.isImplicitPattern = isImplicitPattern; + const minimatchOptions = { + dot: true, + nobrace: true, + nocase: IS_WINDOWS, + nocomment: true, + noext: true, + nonegate: true + }; + pattern = IS_WINDOWS ? pattern.replace(/\\/g, "/") : pattern; + this.minimatch = new minimatch_1.Minimatch(pattern, minimatchOptions); + } + /** + * Matches the pattern against the specified path + */ + match(itemPath) { + if (this.segments[this.segments.length - 1] === "**") { + itemPath = pathHelper.normalizeSeparators(itemPath); + if (!itemPath.endsWith(path.sep) && this.isImplicitPattern === false) { + itemPath = `${itemPath}${path.sep}`; + } + } else { + itemPath = pathHelper.safeTrimTrailingSeparator(itemPath); + } + if (this.minimatch.match(itemPath)) { + return this.trailingSeparator ? internal_match_kind_1.MatchKind.Directory : internal_match_kind_1.MatchKind.All; + } + return internal_match_kind_1.MatchKind.None; + } + /** + * Indicates whether the pattern may match descendants of the specified path + */ + partialMatch(itemPath) { + itemPath = pathHelper.safeTrimTrailingSeparator(itemPath); + if (pathHelper.dirname(itemPath) === itemPath) { + return this.rootRegExp.test(itemPath); + } + return this.minimatch.matchOne(itemPath.split(IS_WINDOWS ? /\\+/ : /\/+/), this.minimatch.set[0], true); + } + /** + * Escapes glob patterns within a path + */ + static globEscape(s) { + return (IS_WINDOWS ? s : s.replace(/\\/g, "\\\\")).replace(/(\[)(?=[^/]+\])/g, "[[]").replace(/\?/g, "[?]").replace(/\*/g, "[*]"); + } + /** + * Normalizes slashes and ensures absolute root + */ + static fixupPattern(pattern, homedir) { + assert_1.default(pattern, "pattern cannot be empty"); + const literalSegments = new internal_path_1.Path(pattern).segments.map((x) => Pattern.getLiteral(x)); + assert_1.default(literalSegments.every((x, i) => (x !== "." || i === 0) && x !== ".."), `Invalid pattern '${pattern}'. Relative pathing '.' and '..' is not allowed.`); + assert_1.default(!pathHelper.hasRoot(pattern) || literalSegments[0], `Invalid pattern '${pattern}'. Root segment must not contain globs.`); + pattern = pathHelper.normalizeSeparators(pattern); + if (pattern === "." || pattern.startsWith(`.${path.sep}`)) { + pattern = Pattern.globEscape(process.cwd()) + pattern.substr(1); + } else if (pattern === "~" || pattern.startsWith(`~${path.sep}`)) { + homedir = homedir || os.homedir(); + assert_1.default(homedir, "Unable to determine HOME directory"); + assert_1.default(pathHelper.hasAbsoluteRoot(homedir), `Expected HOME directory to be a rooted path. Actual '${homedir}'`); + pattern = Pattern.globEscape(homedir) + pattern.substr(1); + } else if (IS_WINDOWS && (pattern.match(/^[A-Z]:$/i) || pattern.match(/^[A-Z]:[^\\]/i))) { + let root = pathHelper.ensureAbsoluteRoot("C:\\dummy-root", pattern.substr(0, 2)); + if (pattern.length > 2 && !root.endsWith("\\")) { + root += "\\"; + } + pattern = Pattern.globEscape(root) + pattern.substr(2); + } else if (IS_WINDOWS && (pattern === "\\" || pattern.match(/^\\[^\\]/))) { + let root = pathHelper.ensureAbsoluteRoot("C:\\dummy-root", "\\"); + if (!root.endsWith("\\")) { + root += "\\"; + } + pattern = Pattern.globEscape(root) + pattern.substr(1); + } else { + pattern = pathHelper.ensureAbsoluteRoot(Pattern.globEscape(process.cwd()), pattern); + } + return pathHelper.normalizeSeparators(pattern); + } + /** + * Attempts to unescape a pattern segment to create a literal path segment. + * Otherwise returns empty string. + */ + static getLiteral(segment) { + let literal = ""; + for (let i = 0; i < segment.length; i++) { + const c = segment[i]; + if (c === "\\" && !IS_WINDOWS && i + 1 < segment.length) { + literal += segment[++i]; + continue; + } else if (c === "*" || c === "?") { + return ""; + } else if (c === "[" && i + 1 < segment.length) { + let set = ""; + let closed = -1; + for (let i2 = i + 1; i2 < segment.length; i2++) { + const c2 = segment[i2]; + if (c2 === "\\" && !IS_WINDOWS && i2 + 1 < segment.length) { + set += segment[++i2]; + continue; + } else if (c2 === "]") { + closed = i2; + break; + } else { + set += c2; + } + } + if (closed >= 0) { + if (set.length > 1) { + return ""; + } + if (set) { + literal += set; + i = closed; + continue; + } + } + } + literal += c; + } + return literal; + } + /** + * Escapes regexp special characters + * https://javascript.info/regexp-escaping + */ + static regExpEscape(s) { + return s.replace(/[[\\^$.|?*+()]/g, "\\$&"); + } + }; + exports.Pattern = Pattern; + } +}); + +// node_modules/@actions/glob/lib/internal-search-state.js +var require_internal_search_state = __commonJS({ + "node_modules/@actions/glob/lib/internal-search-state.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.SearchState = void 0; + var SearchState = class { + constructor(path, level) { + this.path = path; + this.level = level; + } + }; + exports.SearchState = SearchState; + } +}); + +// node_modules/@actions/glob/lib/internal-globber.js +var require_internal_globber = __commonJS({ + "node_modules/@actions/glob/lib/internal-globber.js"(exports) { + "use strict"; + var __createBinding = exports && exports.__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 = exports && exports.__setModuleDefault || (Object.create ? function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); + } : function(o, v) { + o["default"] = v; + }); + var __importStar = exports && exports.__importStar || 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 = exports && exports.__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()); + }); + }; + var __asyncValues = exports && exports.__asyncValues || function(o) { + if (!Symbol.asyncIterator) + throw new TypeError("Symbol.asyncIterator is not defined."); + var m = o[Symbol.asyncIterator], i; + return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function() { + return this; + }, i); + function verb(n) { + i[n] = o[n] && function(v) { + return new Promise(function(resolve, reject) { + v = o[n](v), settle(resolve, reject, v.done, v.value); + }); + }; + } + function settle(resolve, reject, d, v) { + Promise.resolve(v).then(function(v2) { + resolve({ value: v2, done: d }); + }, reject); + } + }; + var __await = exports && exports.__await || function(v) { + return this instanceof __await ? (this.v = v, this) : new __await(v); + }; + var __asyncGenerator = exports && exports.__asyncGenerator || function(thisArg, _arguments, generator) { + if (!Symbol.asyncIterator) + throw new TypeError("Symbol.asyncIterator is not defined."); + var g = generator.apply(thisArg, _arguments || []), i, q = []; + return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function() { + return this; + }, i; + function verb(n) { + if (g[n]) + i[n] = function(v) { + return new Promise(function(a, b) { + q.push([n, v, a, b]) > 1 || resume(n, v); + }); + }; + } + function resume(n, v) { + try { + step(g[n](v)); + } catch (e) { + settle(q[0][3], e); + } + } + function step(r) { + r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); + } + function fulfill(value) { + resume("next", value); + } + function reject(value) { + resume("throw", value); + } + function settle(f, v) { + if (f(v), q.shift(), q.length) + resume(q[0][0], q[0][1]); + } + }; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.DefaultGlobber = void 0; + var core6 = __importStar(require_core()); + var fs2 = __importStar(require("fs")); + var globOptionsHelper = __importStar(require_internal_glob_options_helper()); + var path = __importStar(require("path")); + var patternHelper = __importStar(require_internal_pattern_helper()); + var internal_match_kind_1 = require_internal_match_kind(); + var internal_pattern_1 = require_internal_pattern(); + var internal_search_state_1 = require_internal_search_state(); + var IS_WINDOWS = process.platform === "win32"; + var DefaultGlobber = class { + constructor(options) { + this.patterns = []; + this.searchPaths = []; + this.options = globOptionsHelper.getOptions(options); + } + getSearchPaths() { + return this.searchPaths.slice(); + } + glob() { + var e_1, _a; + return __awaiter(this, void 0, void 0, function* () { + const result = []; + try { + for (var _b = __asyncValues(this.globGenerator()), _c; _c = yield _b.next(), !_c.done; ) { + const itemPath = _c.value; + result.push(itemPath); + } + } catch (e_1_1) { + e_1 = { error: e_1_1 }; + } finally { + try { + if (_c && !_c.done && (_a = _b.return)) + yield _a.call(_b); + } finally { + if (e_1) + throw e_1.error; + } + } + return result; + }); + } + globGenerator() { + return __asyncGenerator(this, arguments, function* globGenerator_1() { + const options = globOptionsHelper.getOptions(this.options); + const patterns = []; + for (const pattern of this.patterns) { + patterns.push(pattern); + if (options.implicitDescendants && (pattern.trailingSeparator || pattern.segments[pattern.segments.length - 1] !== "**")) { + patterns.push(new internal_pattern_1.Pattern(pattern.negate, true, pattern.segments.concat("**"))); + } + } + const stack = []; + for (const searchPath of patternHelper.getSearchPaths(patterns)) { + core6.debug(`Search path '${searchPath}'`); + try { + yield __await(fs2.promises.lstat(searchPath)); + } catch (err) { + if (err.code === "ENOENT") { + continue; + } + throw err; + } + stack.unshift(new internal_search_state_1.SearchState(searchPath, 1)); + } + const traversalChain = []; + while (stack.length) { + const item = stack.pop(); + const match = patternHelper.match(patterns, item.path); + const partialMatch = !!match || patternHelper.partialMatch(patterns, item.path); + if (!match && !partialMatch) { + continue; + } + const stats = yield __await( + DefaultGlobber.stat(item, options, traversalChain) + // Broken symlink, or symlink cycle detected, or no longer exists + ); + if (!stats) { + continue; + } + if (stats.isDirectory()) { + if (match & internal_match_kind_1.MatchKind.Directory && options.matchDirectories) { + yield yield __await(item.path); + } else if (!partialMatch) { + continue; + } + const childLevel = item.level + 1; + const childItems = (yield __await(fs2.promises.readdir(item.path))).map((x) => new internal_search_state_1.SearchState(path.join(item.path, x), childLevel)); + stack.push(...childItems.reverse()); + } else if (match & internal_match_kind_1.MatchKind.File) { + yield yield __await(item.path); + } + } + }); + } + /** + * Constructs a DefaultGlobber + */ + static create(patterns, options) { + return __awaiter(this, void 0, void 0, function* () { + const result = new DefaultGlobber(options); + if (IS_WINDOWS) { + patterns = patterns.replace(/\r\n/g, "\n"); + patterns = patterns.replace(/\r/g, "\n"); + } + const lines = patterns.split("\n").map((x) => x.trim()); + for (const line of lines) { + if (!line || line.startsWith("#")) { + continue; + } else { + result.patterns.push(new internal_pattern_1.Pattern(line)); + } + } + result.searchPaths.push(...patternHelper.getSearchPaths(result.patterns)); + return result; + }); + } + static stat(item, options, traversalChain) { + return __awaiter(this, void 0, void 0, function* () { + let stats; + if (options.followSymbolicLinks) { + try { + stats = yield fs2.promises.stat(item.path); + } catch (err) { + if (err.code === "ENOENT") { + if (options.omitBrokenSymbolicLinks) { + core6.debug(`Broken symlink '${item.path}'`); + return void 0; + } + throw new Error(`No information found for the path '${item.path}'. This may indicate a broken symbolic link.`); + } + throw err; + } + } else { + stats = yield fs2.promises.lstat(item.path); + } + if (stats.isDirectory() && options.followSymbolicLinks) { + const realPath = yield fs2.promises.realpath(item.path); + while (traversalChain.length >= item.level) { + traversalChain.pop(); + } + if (traversalChain.some((x) => x === realPath)) { + core6.debug(`Symlink cycle detected for path '${item.path}' and realpath '${realPath}'`); + return void 0; + } + traversalChain.push(realPath); + } + return stats; + }); + } + }; + exports.DefaultGlobber = DefaultGlobber; + } +}); + +// node_modules/@actions/glob/lib/internal-hash-files.js +var require_internal_hash_files = __commonJS({ + "node_modules/@actions/glob/lib/internal-hash-files.js"(exports) { + "use strict"; + var __createBinding = exports && exports.__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 = exports && exports.__setModuleDefault || (Object.create ? function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); + } : function(o, v) { + o["default"] = v; + }); + var __importStar = exports && exports.__importStar || 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 = exports && exports.__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()); + }); + }; + var __asyncValues = exports && exports.__asyncValues || function(o) { + if (!Symbol.asyncIterator) + throw new TypeError("Symbol.asyncIterator is not defined."); + var m = o[Symbol.asyncIterator], i; + return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function() { + return this; + }, i); + function verb(n) { + i[n] = o[n] && function(v) { + return new Promise(function(resolve, reject) { + v = o[n](v), settle(resolve, reject, v.done, v.value); + }); + }; + } + function settle(resolve, reject, d, v) { + Promise.resolve(v).then(function(v2) { + resolve({ value: v2, done: d }); + }, reject); + } + }; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.hashFiles = void 0; + var crypto4 = __importStar(require("crypto")); + var core6 = __importStar(require_core()); + var fs2 = __importStar(require("fs")); + var stream = __importStar(require("stream")); + var util = __importStar(require("util")); + var path = __importStar(require("path")); + function hashFiles(globber, currentWorkspace, verbose = false) { + var e_1, _a; + var _b; + return __awaiter(this, void 0, void 0, function* () { + const writeDelegate = verbose ? core6.info : core6.debug; + let hasMatch = false; + const githubWorkspace = currentWorkspace ? currentWorkspace : (_b = process.env["GITHUB_WORKSPACE"]) !== null && _b !== void 0 ? _b : process.cwd(); + const result = crypto4.createHash("sha256"); + let count = 0; + try { + for (var _c = __asyncValues(globber.globGenerator()), _d; _d = yield _c.next(), !_d.done; ) { + const file = _d.value; + writeDelegate(file); + if (!file.startsWith(`${githubWorkspace}${path.sep}`)) { + writeDelegate(`Ignore '${file}' since it is not under GITHUB_WORKSPACE.`); + continue; + } + if (fs2.statSync(file).isDirectory()) { + writeDelegate(`Skip directory '${file}'.`); + continue; + } + const hash = crypto4.createHash("sha256"); + const pipeline = util.promisify(stream.pipeline); + yield pipeline(fs2.createReadStream(file), hash); + result.write(hash.digest()); + count++; + if (!hasMatch) { + hasMatch = true; + } + } + } catch (e_1_1) { + e_1 = { error: e_1_1 }; + } finally { + try { + if (_d && !_d.done && (_a = _c.return)) + yield _a.call(_c); + } finally { + if (e_1) + throw e_1.error; + } + } + result.end(); + if (hasMatch) { + writeDelegate(`Found ${count} files to hash.`); + return result.digest("hex"); + } else { + writeDelegate(`No matches found for glob`); + return ""; + } + }); + } + exports.hashFiles = hashFiles; + } +}); + +// node_modules/@actions/glob/lib/glob.js +var require_glob = __commonJS({ + "node_modules/@actions/glob/lib/glob.js"(exports) { + "use strict"; + var __awaiter = exports && exports.__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(exports, "__esModule", { value: true }); + exports.hashFiles = exports.create = void 0; + var internal_globber_1 = require_internal_globber(); + var internal_hash_files_1 = require_internal_hash_files(); + function create2(patterns, options) { + return __awaiter(this, void 0, void 0, function* () { + return yield internal_globber_1.DefaultGlobber.create(patterns, options); + }); + } + exports.create = create2; + function hashFiles(patterns, currentWorkspace = "", options, verbose = false) { + return __awaiter(this, void 0, void 0, function* () { + let followSymbolicLinks = true; + if (options && typeof options.followSymbolicLinks === "boolean") { + followSymbolicLinks = options.followSymbolicLinks; + } + const globber = yield create2(patterns, { followSymbolicLinks }); + return internal_hash_files_1.hashFiles(globber, currentWorkspace, verbose); + }); + } + exports.hashFiles = hashFiles; + } +}); + +// node_modules/@actions/github/lib/context.js +var require_context = __commonJS({ + "node_modules/@actions/github/lib/context.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.Context = void 0; + var fs_1 = require("fs"); + var os_1 = 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 (fs_1.existsSync(process.env.GITHUB_EVENT_PATH)) { + this.payload = JSON.parse(fs_1.readFileSync(process.env.GITHUB_EVENT_PATH, { encoding: "utf8" })); + } else { + const path = process.env.GITHUB_EVENT_PATH; + process.stdout.write(`GITHUB_EVENT_PATH ${path} 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 [owner, repo] = process.env.GITHUB_REPOSITORY.split("/"); + return { owner, repo }; + } + if (this.payload.repository) { + return { + owner: this.payload.repository.owner.login, + repo: this.payload.repository.name + }; + } + throw new Error("context.repo requires a GITHUB_REPOSITORY environment variable like 'owner/repo'"); + } + }; + exports.Context = Context; + } +}); + +// node_modules/@actions/github/lib/internal/utils.js +var require_utils2 = __commonJS({ + "node_modules/@actions/github/lib/internal/utils.js"(exports) { + "use strict"; + var __createBinding = exports && exports.__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 = exports && exports.__setModuleDefault || (Object.create ? function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); + } : function(o, v) { + o["default"] = v; + }); + var __importStar = exports && exports.__importStar || 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(exports, "__esModule", { value: true }); + exports.getApiBaseUrl = exports.getProxyAgent = exports.getAuthString = void 0; + var httpClient2 = __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}`; + } + exports.getAuthString = getAuthString; + function getProxyAgent(destinationUrl) { + const hc = new httpClient2.HttpClient(); + return hc.getAgent(destinationUrl); + } + exports.getProxyAgent = getProxyAgent; + function getApiBaseUrl() { + return process.env["GITHUB_API_URL"] || "https://api.github.com"; + } + exports.getApiBaseUrl = getApiBaseUrl; + } +}); + +// node_modules/universal-user-agent/dist-node/index.js +var require_dist_node = __commonJS({ + "node_modules/universal-user-agent/dist-node/index.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + function getUserAgent() { + if (typeof navigator === "object" && "userAgent" in navigator) { + return navigator.userAgent; + } + if (typeof process === "object" && "version" in process) { + return `Node.js/${process.version.substr(1)} (${process.platform}; ${process.arch})`; + } + return ""; + } + exports.getUserAgent = getUserAgent; + } +}); + +// node_modules/before-after-hook/lib/register.js +var require_register = __commonJS({ + "node_modules/before-after-hook/lib/register.js"(exports, 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/before-after-hook/lib/add.js +var require_add = __commonJS({ + "node_modules/before-after-hook/lib/add.js"(exports, 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)); + }; + } + 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; + }); + }; + } + if (kind === "error") { + hook = function(method, options) { + return Promise.resolve().then(method.bind(null, options)).catch(function(error3) { + return orig(error3, options); + }); + }; + } + 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"(exports, module2) { + module2.exports = removeHook; + function removeHook(state, name, method) { + if (!state.registry[name]) { + return; + } + var index = state.registry[name].map(function(registered) { + return registered.orig; + }).indexOf(method); + if (index === -1) { + return; + } + state.registry[name].splice(index, 1); + } + } +}); + +// node_modules/before-after-hook/index.js +var require_before_after_hook = __commonJS({ + "node_modules/before-after-hook/index.js"(exports, 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); + }); + } + function HookSingular() { + var singularHookName = "h"; + var singularHookState = { + registry: {} + }; + var singularHook = register.bind(null, singularHookState, singularHookName); + bindApi(singularHook, singularHookState, singularHookName); + return singularHook; + } + 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; + } + return HookCollection(); + } + 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"(exports) { + "use strict"; + Object.defineProperty(exports, "__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; + } + return true; + } + exports.isPlainObject = isPlainObject; + } +}); + +// node_modules/@octokit/endpoint/dist-node/index.js +var require_dist_node2 = __commonJS({ + "node_modules/@octokit/endpoint/dist-node/index.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__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]; + } + } + 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; + } + 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 []; + } + 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(); + }); + } + 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 === "boolean") { + value = value.toString(); + if (modifier && modifier !== "*") { + value = value.substring(0, parseInt(modifier, 10)); + } + result.push(encodeValue(operator, value, isKeyOperator(operator) ? key : "")); + } else { + if (modifier === "*") { + if (Array.isArray(value)) { + value.filter(isDefined).forEach(function(value2) { + result.push(encodeValue(operator, value2, isKeyOperator(operator) ? key : "")); + }); + } else { + Object.keys(value).forEach(function(k) { + if (isDefined(value[k])) { + result.push(encodeValue(operator, value[k], k)); + } + }); + } + } else { + const tmp = []; + if (Array.isArray(value)) { + value.filter(isDefined).forEach(function(value2) { + tmp.push(encodeValue(operator, value2)); + }); + } else { + Object.keys(value).forEach(function(k) { + if (isDefined(value[k])) { + tmp.push(encodeUnreserved(k)); + tmp.push(encodeValue(operator, value[k].toString())); + } + }); + } + if (isKeyOperator(operator)) { + result.push(encodeUnreserved(key) + "=" + tmp.join(",")); + } else if (tmp.length !== 0) { + result.push(tmp.join(",")); + } + } + } + } else { + if (operator === ";") { + if (isDefined(value)) { + result.push(encodeUnreserved(key)); + } + } else if (value === "" && (operator === "&" || operator === "?")) { + result.push(encodeUnreserved(key) + "="); + } else if (value === "") { + result.push(""); + } + } + return result; + } + function parseUrl(template) { + return { + expand: expand.bind(null, template) + }; + } + function expand(template, context3) { + var operators = ["+", "#", ".", "/", ";", "?", "&"]; + 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(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); + } + }); + } + function parse2(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 (["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; + } + } + } + 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(defaults, route, options) { + return parse2(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: parse2 + }); + } + 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: [] + } + }; + var endpoint = withDefaults(null, DEFAULTS); + exports.endpoint = endpoint; + } +}); + +// node_modules/webidl-conversions/lib/index.js +var require_lib2 = __commonJS({ + "node_modules/webidl-conversions/lib/index.js"(exports, 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; + } + 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; + } + } + return x; + }; + } + conversions["void"] = function() { + return void 0; + }; + conversions["boolean"] = function(val2) { + return !!val2; + }; + 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"); + } + return x; + }; + conversions["unrestricted double"] = function(V) { + const x = +V; + if (isNaN(x)) { + throw new TypeError("Argument is NaN"); + } + 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 ""; + } + 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"); + } + } + 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)); + } 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)); + } + } + } + } + return U.join(""); + }; + conversions["Date"] = function(V, opts) { + if (!(V instanceof Date)) { + throw new TypeError("Argument is not a Date object"); + } + if (isNaN(V)) { + return void 0; + } + return V; + }; + conversions["RegExp"] = function(V, opts) { + if (!(V instanceof RegExp)) { + V = new RegExp(V); + } + return V; + }; + } +}); + +// node_modules/whatwg-url/lib/utils.js +var require_utils3 = __commonJS({ + "node_modules/whatwg-url/lib/utils.js"(exports, 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])); + } + }; + module2.exports.wrapperSymbol = Symbol("wrapper"); + module2.exports.implSymbol = Symbol("impl"); + module2.exports.wrapperForImpl = function(impl) { + return impl[module2.exports.wrapperSymbol]; + }; + module2.exports.implForWrapper = function(wrapper) { + return wrapper[module2.exports.implSymbol]; + }; + } +}); + +// node_modules/tr46/lib/mappingTable.json +var require_mappingTable = __commonJS({ + "node_modules/tr46/lib/mappingTable.json"(exports, 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"(exports, 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(val2) { + 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] <= val2 && target[0][1] >= val2) { + return target; + } else if (target[0][0] > val2) { + end = mid - 1; + } else { + start = mid + 1; + } + } + 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); + break; + } + } + return { + string: processed, + error: hasError + }; + } + 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 error3 = false; + if (normalize(label) !== label || label[3] === "-" && label[4] === "-" || label[0] === "-" || label[label.length - 1] === "-" || label.indexOf(".") !== -1 || label.search(combiningMarksRegex) === 0) { + error3 = 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") { + error3 = true; + break; + } + } + return { + label, + error: error3 + }; + } + 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; + } + } + return { + string: labels.join("."), + error: result.error + }; + } + 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; + } + }); + 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; + } + } + } + if (result.error) + return null; + return labels.join("."); + }; + module2.exports.toUnicode = function(domain_name, useSTD3) { + var result = processing(domain_name, useSTD3, PROCESSING_OPTIONS.NONTRANSITIONAL); + return { + domain: result.string, + error: result.error + }; + }; + module2.exports.PROCESSING_OPTIONS = PROCESSING_OPTIONS; + } +}); + +// node_modules/whatwg-url/lib/url-state-machine.js +var require_url_state_machine = __commonJS({ + "node_modules/whatwg-url/lib/url-state-machine.js"(exports, 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); + } + function isASCIIDigit(c) { + return c >= 48 && c <= 57; + } + function isASCIIAlpha(c) { + return c >= 65 && c <= 90 || c >= 97 && c <= 122; + } + function isASCIIAlphanumeric(c) { + return isASCIIAlpha(c) || isASCIIDigit(c); + } + function isASCIIHex(c) { + return isASCIIDigit(c) || c >= 65 && c <= 70 || c >= 97 && c <= 102; + } + function isSingleDot(buffer) { + return buffer === "." || buffer.toLowerCase() === "%2e"; + } + function isDoubleDot(buffer) { + buffer = buffer.toLowerCase(); + return buffer === ".." || buffer === "%2e." || buffer === ".%2e" || buffer === "%2e%2e"; + } + function isWindowsDriveLetterCodePoints(cp1, cp2) { + return isASCIIAlpha(cp1) && (cp2 === 58 || cp2 === 124); + } + function isWindowsDriveLetterString(string) { + return string.length === 2 && isASCIIAlpha(string.codePointAt(0)) && (string[1] === ":" || string[1] === "|"); + } + function isNormalizedWindowsDriveLetterString(string) { + return string.length === 2 && isASCIIAlpha(string.codePointAt(0)) && string[1] === ":"; + } + function containsForbiddenHostCodePoint(string) { + return string.search(/\u0000|\u0009|\u000A|\u000D|\u0020|#|%|\/|:|\?|@|\[|\\|\]/) !== -1; + } + function containsForbiddenHostCodePointExcludingPercent(string) { + return string.search(/\u0000|\u0009|\u000A|\u000D|\u0020|#|\/|:|\?|@|\[|\\|\]/) !== -1; + } + function isSpecialScheme(scheme) { + return specialSchemes[scheme] !== void 0; + } + function isSpecial(url) { + return isSpecialScheme(url.scheme); + } + function defaultPort(scheme) { + return specialSchemes[scheme]; + } + function percentEncode(c) { + let hex = c.toString(16).toUpperCase(); + if (hex.length === 1) { + hex = "0" + hex; + } + return "%" + hex; + } + function utf8PercentEncode(c) { + const buf = new Buffer(c); + let str = ""; + for (let i = 0; i < buf.length; ++i) { + str += percentEncode(buf[i]); + } + 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]); + } + } + return new Buffer(output).toString(); + } + function isC0ControlPercentEncode(c) { + return c <= 31 || c > 126; + } + var extraPathPercentEncodeSet = /* @__PURE__ */ new Set([32, 34, 35, 60, 62, 63, 96, 123, 125]); + function isPathPercentEncode(c) { + return isC0ControlPercentEncode(c) || extraPathPercentEncodeSet.has(c); + } + var extraUserinfoPercentEncodeSet = /* @__PURE__ */ 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); + } + return cStr; + } + 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 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 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 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; + } + 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; + } + } + if (numbersSeen !== 4) { + return failure; + } + 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; + } + if (compress === pieceIndex) { + const separator = pieceIndex === 0 ? "::" : ":"; + output += separator; + ignore0 = true; + continue; + } + output += address[pieceIndex].toString(16); + if (pieceIndex !== 7) { + output += ":"; + } + } + return output; + } + function parseHost(input, isSpecialArg) { + if (input[0] === "[") { + if (input[input.length - 1] !== "]") { + return failure; + } + return parseIPv6(input.substring(1, input.length - 1)); + } + if (!isSpecialArg) { + return parseOpaqueHost(input); + } + const domain = utf8PercentDecode(input); + const asciiDomain = tr46.toASCII(domain, false, tr46.PROCESSING_OPTIONS.NONTRANSITIONAL, false); + if (asciiDomain === null) { + return failure; + } + if (containsForbiddenHostCodePoint(asciiDomain)) { + return failure; + } + const ipv4Host = parseIPv4(asciiDomain); + if (typeof ipv4Host === "number" || ipv4Host === failure) { + return ipv4Host; + } + return asciiDomain; + } + function parseOpaqueHost(input) { + if (containsForbiddenHostCodePointExcludingPercent(input)) { + return failure; + } + let output = ""; + const decoded = punycode.ucs2.decode(input); + for (let i = 0; i < decoded.length; ++i) { + output += percentEncodeChar(decoded[i], isC0ControlPercentEncode); + } + return output; + } + 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; + } + } + if (currLen > maxLen) { + maxIdx = currStart; + maxLen = currLen; + } + return { + idx: maxIdx, + len: maxLen + }; + } + function serializeHost(host) { + if (typeof host === "number") { + return serializeIPv4(host); + } + if (host instanceof Array) { + return "[" + serializeIPv6(host) + "]"; + } + return host; + } + function trimControlChars(url) { + return url.replace(/^[\u0000-\u001F\u0020]+|[\u0000-\u001F\u0020]+$/g, ""); + } + function trimTabAndNewline(url) { + return url.replace(/\u0009|\u000A|\u000D/g, ""); + } + function shortenPath(url) { + const path = url.path; + if (path.length === 0) { + return; + } + if (url.scheme === "file" && path.length === 1 && isNormalizedWindowsDriveLetter(path[0])) { + return; + } + path.pop(); + } + 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; + } + } + } + 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; + } + if (this.url.scheme === "file" && (this.url.host === "" || this.url.host === null)) { + return false; + } + } + this.url.scheme = this.buffer; + this.buffer = ""; + if (this.stateOverride) { + return false; + } + 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 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; + } + 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; + } + return true; + }; + URLStateMachine.prototype["parse path or authority"] = function parsePathOrAuthority(c) { + if (c === 47) { + this.state = "authority"; + } else { + this.state = "path"; + --this.pointer; + } + 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; + } + 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; + } + 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; + } + 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; + } + 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; + } + } + 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; + } + 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; + } + 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; + } + 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 = ""; + } + if (this.stateOverride) { + return false; + } + this.state = "path start"; + --this.pointer; + } else { + this.parseError = true; + return failure; + } + return true; + }; + var fileOtherwiseCodePoints = /* @__PURE__ */ new Set([47, 92, 63, 35]); + URLStateMachine.prototype["parse file"] = function parseFile2(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 || // remaining consists of 0 code points + !isWindowsDriveLetterCodePoints(c, this.input[this.pointer + 1]) || this.input.length - this.pointer - 1 >= 2 && // remaining has at least 2 code points + !fileOtherwiseCodePoints.has(this.input[this.pointer + 2])) { + this.url.host = this.base.host; + this.url.path = this.base.path.slice(); + shortenPath(this.url); + } else { + this.parseError = true; + } + this.state = "path"; + --this.pointer; + } + } else { + this.state = "path"; + --this.pointer; + } + return true; + }; + URLStateMachine.prototype["parse file slash"] = function parseFileSlash(c) { + if (c === 47 || c === 92) { + if (c === 92) { + this.parseError = true; + } + 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; + } + } + this.state = "path"; + --this.pointer; + } + 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; + } + 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"; + } + } else { + this.buffer += cStr; + } + 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; + } + } + 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); + } + 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(); + } + } + 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; + } + this.buffer += percentEncodeChar(c, isPathPercentEncode); + } + return true; + }; + 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"; + } else { + if (!isNaN(c) && c !== 37) { + this.parseError = true; + } + 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); + } + } + 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; + } + 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; + } + 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; + } + output += "@"; + } + output += serializeHost(url.host); + if (url.port !== null) { + output += ":" + url.port; + } + } 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; + } + } + if (url.query !== null) { + output += "?" + url.query; + } + if (!excludeFragment && url.fragment !== null) { + output += "#" + url.fragment; + } + return output; + } + function serializeOrigin(tuple) { + let result = tuple.scheme + "://"; + result += serializeHost(tuple.host); + if (tuple.port !== null) { + result += ":" + tuple.port; + } + return result; + } + 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"; + } + }; + module2.exports.basicURLParse = function(input, options) { + if (options === void 0) { + options = {}; + } + const usm = new URLStateMachine(input, options.baseURL, options.encodingOverride, options.url, options.stateOverride); + if (usm.failure) { + return "failure"; + } + 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); + } + }; + 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); + } + }; + 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 = {}; + } + return module2.exports.basicURLParse(input, { baseURL: options.baseURL, encodingOverride: options.encodingOverride }); + }; + } +}); + +// node_modules/whatwg-url/lib/URL-impl.js +var require_URL_impl = __commonJS({ + "node_modules/whatwg-url/lib/URL-impl.js"(exports) { + "use strict"; + var usm = require_url_state_machine(); + exports.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"); + } + } + const parsedURL = usm.basicURLParse(url, { baseURL: parsedBase }); + if (parsedURL === "failure") { + throw new TypeError("Invalid URL"); + } + 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"); + } + this._url = parsedURL; + } + get origin() { + return usm.serializeURLOrigin(this._url); + } + get protocol() { + return this._url.scheme + ":"; + } + set protocol(v) { + usm.basicURLParse(v + ":", { url: this._url, stateOverride: "scheme start" }); + } + get username() { + return this._url.username; + } + set username(v) { + if (usm.cannotHaveAUsernamePasswordPort(this._url)) { + return; + } + usm.setTheUsername(this._url, v); + } + get password() { + return this._url.password; + } + set password(v) { + if (usm.cannotHaveAUsernamePasswordPort(this._url)) { + return; + } + usm.setThePassword(this._url, v); + } + get host() { + const url = this._url; + if (url.host === null) { + return ""; + } + if (url.port === null) { + return usm.serializeHost(url.host); + } + return usm.serializeHost(url.host) + ":" + usm.serializeInteger(url.port); + } + set host(v) { + if (this._url.cannotBeABaseURL) { + return; + } + usm.basicURLParse(v, { url: this._url, stateOverride: "host" }); + } + get hostname() { + if (this._url.host === null) { + return ""; + } + return usm.serializeHost(this._url.host); + } + set hostname(v) { + if (this._url.cannotBeABaseURL) { + return; + } + usm.basicURLParse(v, { url: this._url, stateOverride: "hostname" }); + } + get port() { + if (this._url.port === null) { + return ""; + } + return usm.serializeInteger(this._url.port); + } + set port(v) { + if (usm.cannotHaveAUsernamePasswordPort(this._url)) { + return; + } + if (v === "") { + this._url.port = null; + } else { + usm.basicURLParse(v, { url: this._url, stateOverride: "port" }); + } + } + get pathname() { + if (this._url.cannotBeABaseURL) { + return this._url.path[0]; + } + if (this._url.path.length === 0) { + return ""; + } + return "/" + this._url.path.join("/"); + } + set pathname(v) { + if (this._url.cannotBeABaseURL) { + return; + } + this._url.path = []; + usm.basicURLParse(v, { url: this._url, stateOverride: "path start" }); + } + get search() { + if (this._url.query === null || this._url.query === "") { + return ""; + } + return "?" + this._url.query; + } + set search(v) { + const url = this._url; + if (v === "") { + url.query = null; + return; + } + const input = v[0] === "?" ? v.substring(1) : v; + url.query = ""; + usm.basicURLParse(input, { url, stateOverride: "query" }); + } + get hash() { + if (this._url.fragment === null || this._url.fragment === "") { + return ""; + } + return "#" + this._url.fragment; + } + set hash(v) { + if (v === "") { + this._url.fragment = null; + return; + } + const input = v[0] === "#" ? v.substring(1) : v; + this._url.fragment = ""; + usm.basicURLParse(input, { url: this._url, stateOverride: "fragment" }); + } + toJSON() { + return this.href; + } + }; + } +}); + +// node_modules/whatwg-url/lib/URL.js +var require_URL = __commonJS({ + "node_modules/whatwg-url/lib/URL.js"(exports, module2) { + "use strict"; + var conversions = require_lib2(); + var utils = require_utils3(); + var Impl = require_URL_impl(); + var impl = utils.implSymbol; + function URL3(url) { + if (!this || this[impl] || !(this instanceof URL3)) { + 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]; + } + args[0] = conversions["USVString"](args[0]); + if (args[1] !== void 0) { + args[1] = conversions["USVString"](args[1]); + } + module2.exports.setup(this, args); + } + URL3.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]; + } + return this[impl].toJSON.apply(this[impl], args); + }; + Object.defineProperty(URL3.prototype, "href", { + get() { + return this[impl].href; + }, + set(V) { + V = conversions["USVString"](V); + this[impl].href = V; + }, + enumerable: true, + configurable: true + }); + URL3.prototype.toString = function() { + if (!this || !module2.exports.is(this)) { + throw new TypeError("Illegal invocation"); + } + return this.href; + }; + Object.defineProperty(URL3.prototype, "origin", { + get() { + return this[impl].origin; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(URL3.prototype, "protocol", { + get() { + return this[impl].protocol; + }, + set(V) { + V = conversions["USVString"](V); + this[impl].protocol = V; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(URL3.prototype, "username", { + get() { + return this[impl].username; + }, + set(V) { + V = conversions["USVString"](V); + this[impl].username = V; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(URL3.prototype, "password", { + get() { + return this[impl].password; + }, + set(V) { + V = conversions["USVString"](V); + this[impl].password = V; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(URL3.prototype, "host", { + get() { + return this[impl].host; + }, + set(V) { + V = conversions["USVString"](V); + this[impl].host = V; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(URL3.prototype, "hostname", { + get() { + return this[impl].hostname; + }, + set(V) { + V = conversions["USVString"](V); + this[impl].hostname = V; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(URL3.prototype, "port", { + get() { + return this[impl].port; + }, + set(V) { + V = conversions["USVString"](V); + this[impl].port = V; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(URL3.prototype, "pathname", { + get() { + return this[impl].pathname; + }, + set(V) { + V = conversions["USVString"](V); + this[impl].pathname = V; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(URL3.prototype, "search", { + get() { + return this[impl].search; + }, + set(V) { + V = conversions["USVString"](V); + this[impl].search = V; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(URL3.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(URL3.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: URL3, + expose: { + Window: { URL: URL3 }, + Worker: { URL: URL3 } + } + }; + } +}); + +// node_modules/whatwg-url/lib/public-api.js +var require_public_api = __commonJS({ + "node_modules/whatwg-url/lib/public-api.js"(exports) { + "use strict"; + exports.URL = require_URL().interface; + exports.serializeURL = require_url_state_machine().serializeURL; + exports.serializeURLOrigin = require_url_state_machine().serializeURLOrigin; + exports.basicURLParse = require_url_state_machine().basicURLParse; + exports.setTheUsername = require_url_state_machine().setTheUsername; + exports.setThePassword = require_url_state_machine().setThePassword; + exports.serializeHost = require_url_state_machine().serializeHost; + exports.serializeInteger = require_url_state_machine().serializeInteger; + exports.parseURL = require_url_state_machine().parseURL; + } +}); + +// node_modules/node-fetch/lib/index.js +var require_lib3 = __commonJS({ + "node_modules/node-fetch/lib/index.js"(exports, module2) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + function _interopDefault(ex) { + return ex && typeof ex === "object" && "default" in ex ? ex["default"] : ex; + } + var Stream = _interopDefault(require("stream")); + var http2 = _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); + } + } + 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; + } + get type() { + return this[TYPE]; + } + text() { + return Promise.resolve(this[BUFFER].toString()); + } + arrayBuffer() { + const buf = this[BUFFER]; + const ab = buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength); + return Promise.resolve(ab); + } + stream() { + const readable = new Readable(); + readable._read = function() { + }; + readable.push(this[BUFFER]); + readable.push(null); + return readable; + } + 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); + } + 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 error3 = err.name === "AbortError" ? err : new FetchError(`Invalid response body while trying to fetch ${_this.url}: ${err.message}`, "system", err); + _this[INTERNALS].error = error3; + }); + } + } + Body.prototype = { + get body() { + return this[INTERNALS].body; + }, + get bodyUsed() { + return this[INTERNALS].disturbed; + }, + /** + * Decode response as ArrayBuffer + * + * @return Promise + */ + arrayBuffer() { + return consumeBody.call(this).then(function(buf) { + return buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength); + }); + }, + /** + * Return raw response as Blob + * + * @return Promise + */ + blob() { + let ct = this.headers && this.headers.get("content-type") || ""; + return consumeBody.call(this).then(function(buf) { + return Object.assign( + // Prevent copying + new Blob([], { + type: ct.toLowerCase() + }), + { + [BUFFER]: buf + } + ); + }); + }, + /** + * Decode response as json + * + * @return Promise + */ + 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")); + } + }); + }, + /** + * Decode response as text + * + * @return Promise + */ + text() { + return consumeBody.call(this).then(function(buffer) { + return buffer.toString(); + }); + }, + /** + * Decode response as buffer (non-spec api) + * + * @return Promise + */ + buffer() { + return consumeBody.call(this); + }, + /** + * Decode response as text, while automatically detecting the encoding and + * trying to decode to UTF-8 (non-spec api) + * + * @return Promise + */ + textConverted() { + var _this3 = this; + return consumeBody.call(this).then(function(buffer) { + return convertBody(buffer, _this3.headers); + }); + } + }; + 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); + } + 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)); + } + }); + 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); + }); + 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)); + } + }); + }); + } + 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] = /* @__PURE__ */ 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); + } + } + 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]); + } + } else { + for (const key of Object.keys(init)) { + const value = init[key]; + this.append(key, value); + } + } + } else { + throw new TypeError("Provided initializer must be an object"); + } + } + /** + * Return combined header value given name + * + * @param String name Header name + * @return Mixed + */ + get(name) { + name = `${name}`; + validateName(name); + const key = find(this[MAP], name); + if (key === void 0) { + return null; + } + return this[MAP][key].join(", "); + } + /** + * Iterate over all headers + * + * @param Function callback Executed for each item with parameters (value, name, thisArg) + * @param Boolean thisArg `this` context for callback function + * @return Void + */ + 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++; + } + } + /** + * Overwrite header values given name + * + * @param String name Header name + * @param String value Header value + * @return Void + */ + 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 a value onto existing header + * + * @param String name Header name + * @param String value Header value + * @return Void + */ + 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]; + } + } + /** + * Check for header name existence + * + * @param String name Header name + * @return Boolean + */ + has(name) { + name = `${name}`; + validateName(name); + return find(this[MAP], name) !== void 0; + } + /** + * Delete all header values given name + * + * @param String name Header name + * @return Void + */ + delete(name) { + name = `${name}`; + validateName(name); + const key = find(this[MAP], name); + if (key !== void 0) { + delete this[MAP][key]; + } + } + /** + * Return raw headers (non-spec api) + * + * @return Object + */ + raw() { + return this[MAP]; + } + /** + * Get an iterator on keys. + * + * @return Iterator + */ + keys() { + return createHeadersIterator(this, "key"); + } + /** + * Get an iterator on values. + * + * @return Iterator + */ + values() { + return createHeadersIterator(this, "value"); + } + /** + * Get an iterator on entries. + * + * This is the default iterator of the Headers object. + * + * @return Iterator + */ + [Symbol.iterator]() { + return createHeadersIterator(this, "key+value"); + } + }; + 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 + }; + } + this[INTERNAL].index = index + 1; + return { + value: values[index], + done: false + }; + } + }, 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; + } + 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 val2 of obj[name]) { + if (invalidHeaderCharRegex.test(val2)) { + continue; + } + if (headers[MAP][name] === void 0) { + headers[MAP][name] = [val2]; + } else { + headers[MAP][name].push(val2); + } + } + } else if (!invalidHeaderCharRegex.test(obj[name])) { + headers[MAP][name] = [obj[name]]; + } + } + return headers; + } + var INTERNALS$1 = Symbol("Response internals"); + var STATUS_CODES = http2.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; + } + /** + * Convenience property representing if the request ended normally + */ + 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; + } + /** + * Clone this response + * + * @return Response + */ + clone() { + return new Response(clone(this), { + url: this.url, + status: this.status, + statusText: this.statusText, + headers: this.headers, + ok: this.ok, + redirected: this.redirected + }); + } + }; + 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 URL3 = 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 URL3(urlStr).toString(); + } + return parse_url(urlStr); + } + var streamDestructionSupported = "destroy" in Stream.Readable.prototype; + function isRequest(input) { + return typeof input === "object" && typeof input[INTERNALS$2] === "object"; + } + function isAbortSignal(signal) { + const proto = signal && typeof signal === "object" && Object.getPrototypeOf(signal); + return !!(proto && proto.constructor.name === "AbortSignal"); + } + 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); + } + } + 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 this request + * + * @return Request + */ + 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); + }; + var isSameProtocol = function isSameProtocol2(destination, original) { + const orig = new URL$1(original).protocol; + const dest = new URL$1(destination).protocol; + return orig === 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 : http2).request; + const signal = request.signal; + let response = null; + const abort = function abort2() { + let error3 = new AbortError("The user aborted a request."); + reject(error3); + if (request.body && request.body instanceof Stream.Readable) { + destroyStream(request.body, error3); + } + if (!response || !response.body) + return; + response.body.emit("error", error3); + }; + 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)); + if (response && response.body) { + destroyStream(response.body, err); + } + finalize(); + }); + fixResponseChunkedTransferBadEnding(req, function(err) { + if (signal && signal.aborted) { + return; + } + if (response && response.body) { + destroyStream(response.body, err); + } + }); + if (parseInt(process.version.substring(1)) < 14) { + req.on("socket", function(s) { + s.addListener("close", function(hadError) { + const hasDataListener = s.listenerCount("data") > 0; + if (response && hasDataListener && !hadError && !(signal && signal.aborted)) { + const err = new Error("Premature close"); + err.code = "ERR_STREAM_PREMATURE_CLOSE"; + response.body.emit("error", err); + } + }); + }); + } + 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) || !isSameProtocol(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); + }); + raw.on("end", function() { + if (!response) { + 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); + }); + writeToStream(req, request); + }); + } + function fixResponseChunkedTransferBadEnding(request, errorCallback) { + let socket; + request.on("socket", function(s) { + socket = s; + }); + request.on("response", function(response) { + const headers = response.headers; + if (headers["transfer-encoding"] === "chunked" && !headers["content-length"]) { + response.once("close", function(hadError) { + const hasDataListener = socket.listenerCount("data") > 0; + if (hasDataListener && !hadError) { + const err = new Error("Premature close"); + err.code = "ERR_STREAM_PREMATURE_CLOSE"; + errorCallback(err); + } + }); + } + }); + } + function destroyStream(stream, err) { + if (stream.destroy) { + stream.destroy(err); + } else { + stream.emit("error", err); + stream.end(); + } + } + fetch.isRedirect = function(code) { + return code === 301 || code === 302 || code === 303 || code === 307 || code === 308; + }; + fetch.Promise = global.Promise; + module2.exports = exports = fetch; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.default = exports; + exports.Headers = Headers; + exports.Request = Request; + exports.Response = Response; + exports.FetchError = FetchError; + } +}); + +// node_modules/deprecation/dist-node/index.js +var require_dist_node3 = __commonJS({ + "node_modules/deprecation/dist-node/index.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var Deprecation = class extends Error { + constructor(message) { + super(message); + if (Error.captureStackTrace) { + Error.captureStackTrace(this, this.constructor); + } + this.name = "Deprecation"; + } + }; + exports.Deprecation = Deprecation; + } +}); + +// node_modules/wrappy/wrappy.js +var require_wrappy = __commonJS({ + "node_modules/wrappy/wrappy.js"(exports, 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/once/once.js +var require_once = __commonJS({ + "node_modules/once/once.js"(exports, 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 + }); + }); + 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); + }; + var name = fn.name || "Function wrapped with `once`"; + f.onceError = name + " shouldn't be called more than once"; + f.called = false; + return f; + } + } +}); + +// node_modules/@octokit/request-error/dist-node/index.js +var require_dist_node4 = __commonJS({ + "node_modules/@octokit/request-error/dist-node/index.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__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 || {}; + } + }); + } + }; + exports.RequestError = RequestError; + } +}); + +// node_modules/@octokit/request/dist-node/index.js +var require_dist_node5 = __commonJS({ + "node_modules/@octokit/request/dist-node/index.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__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.agent` type is incompatible + // see https://github.com/octokit/types.ts/pull/264 + 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 error3 = new requestError.RequestError(toErrorMessage(data), status, { + response: { + url, + status, + headers, + data + }, + request: requestOptions + }); + throw error3; + } + return getResponseData(response); + }).then((data) => { + return { + status, + url, + headers, + data + }; + }).catch((error3) => { + if (error3 instanceof requestError.RequestError) + throw error3; + throw new requestError.RequestError(error3.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 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; + } + 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) + }); + } + var request = withDefaults(endpoint.endpoint, { + headers: { + "user-agent": `octokit-request.js/${VERSION} ${universalUserAgent.getUserAgent()}` + } + }); + exports.request = request; + } +}); + +// node_modules/@octokit/graphql/dist-node/index.js +var require_dist_node6 = __commonJS({ + "node_modules/@octokit/graphql/dist-node/index.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__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"); + } + 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); + } + } + }; + 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`)); + } + for (const key in options) { + if (!FORBIDDEN_VARIABLE_OPTIONS.includes(key)) + continue; + return Promise.reject(new Error(`[@octokit/graphql] "${key}" cannot be used as variable name`)); + } + } + const parsedOptions = typeof 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; + } + if (!result.variables) { + result.variables = {}; + } + 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 + }); + } + 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" + }); + } + exports.GraphqlResponseError = GraphqlResponseError; + exports.graphql = graphql$1; + exports.withCustomRequest = withCustomRequest; + } +}); + +// node_modules/@octokit/auth-token/dist-node/index.js +var require_dist_node7 = __commonJS({ + "node_modules/@octokit/auth-token/dist-node/index.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__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 withAuthorizationPrefix(token) { + if (token.split(/\./).length === 3) { + return `bearer ${token}`; + } + 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"); + } + token = token.replace(/^(token|bearer) +/i, ""); + return Object.assign(auth.bind(null, token), { + hook: hook.bind(null, token) + }); + }; + exports.createTokenAuth = createTokenAuth; + } +}); + +// node_modules/@octokit/core/dist-node/index.js +var require_dist_node8 = __commonJS({ + "node_modules/@octokit/core/dist-node/index.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__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; + } + 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; + } + 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, { + // @ts-ignore internal usage only, no need to type + 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, + // 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)); + 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; + } + /** + * Attach a plugin (or many) to your Octokit instance. + * + * @example + * const API = Octokit.plugin(plugin1, plugin2, plugin3, ...) + */ + 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 = []; + exports.Octokit = Octokit; + } +}); + +// node_modules/@octokit/plugin-rest-endpoint-methods/dist-node/index.js +var require_dist_node9 = __commonJS({ + "node_modules/@octokit/plugin-rest-endpoint-methods/dist-node/index.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + function ownKeys(object, enumerableOnly) { + var keys = Object.keys(object); + if (Object.getOwnPropertySymbols) { + var symbols = Object.getOwnPropertySymbols(object); + if (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] : {}; + 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; + } + 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; + } + 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(octokit, 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(octokit, scope, methodName, endpointDefaults, decorations); + continue; + } + scopeMethods[methodName] = octokit.request.defaults(endpointDefaults); + } + } + return newMethods; + } + function decorate(octokit, scope, methodName, defaults, decorations) { + const requestWithDefaults = octokit.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; + octokit.log.warn(`octokit.${scope}.${methodName}() has been renamed to octokit.${newScope}.${newMethodName}()`); + } + if (decorations.deprecated) { + octokit.log.warn(decorations.deprecated); + } + if (decorations.renamedParameters) { + const options2 = requestWithDefaults.endpoint.merge(...args); + for (const [name, alias] of Object.entries(decorations.renamedParameters)) { + if (name in options2) { + octokit.log.warn(`"${name}" parameter is deprecated for "octokit.${scope}.${methodName}()". Use "${alias}" instead`); + if (!(alias in options2)) { + options2[alias] = options2[name]; + } + delete options2[name]; + } + } + return requestWithDefaults(options2); + } + return requestWithDefaults(...args); + } + return Object.assign(withDecorations, requestWithDefaults); + } + function restEndpointMethods(octokit) { + const api = endpointsToMethods(octokit, Endpoints); + return { + rest: api + }; + } + restEndpointMethods.VERSION = VERSION; + function legacyRestEndpointMethods(octokit) { + const api = endpointsToMethods(octokit, Endpoints); + return _objectSpread2(_objectSpread2({}, api), {}, { + rest: api + }); + } + legacyRestEndpointMethods.VERSION = VERSION; + exports.legacyRestEndpointMethods = legacyRestEndpointMethods; + exports.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"(exports) { + "use strict"; + Object.defineProperty(exports, "__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 = null != arguments[i] ? 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; + } + 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; + } + function normalizePaginatedListResponse(response) { + if (!response.data) { + return _objectSpread2(_objectSpread2({}, response), {}, { + data: [] + }); + } + 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; + } + function iterator(octokit, route, parameters) { + const options = typeof route === "function" ? route.endpoint(parameters) : octokit.request.endpoint(route, parameters); + const requestMethod = typeof route === "function" ? route : octokit.request; + const method = options.method; + const headers = options.headers; + let url = options.url; + return { + [Symbol.asyncIterator]: () => ({ + async next() { + if (!url) + return { + done: true + }; + try { + const response = await requestMethod({ + method, + url, + headers + }); + const normalizedResponse = normalizePaginatedListResponse(response); + url = ((normalizedResponse.headers.link || "").match(/<([^>]+)>;\s*rel="next"/) || [])[1]; + return { + value: normalizedResponse + }; + } catch (error3) { + if (error3.status !== 409) + throw error3; + url = ""; + return { + value: { + status: 200, + headers: {}, + data: [] + } + }; + } + } + }) + }; + } + function paginate(octokit, route, parameters, mapFn) { + if (typeof parameters === "function") { + mapFn = parameters; + parameters = void 0; + } + return gather(octokit, [], iterator(octokit, route, parameters)[Symbol.asyncIterator](), mapFn); + } + function gather(octokit, results, iterator2, mapFn) { + return iterator2.next().then((result) => { + if (result.done) { + return results; + } + let earlyExit = false; + function done() { + earlyExit = true; + } + results = results.concat(mapFn ? mapFn(result.value, done) : result.value.data); + if (earlyExit) { + return results; + } + return gather(octokit, results, iterator2, mapFn); + }); + } + var composePaginateRest = Object.assign(paginate, { + iterator + }); + 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", "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", "GET /user/migrations/{migration_id}/repositories", "GET /user/orgs", "GET /user/packages", "GET /user/packages/{package_type}/{package_name}/versions", "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; + } + } + function paginateRest(octokit) { + return { + paginate: Object.assign(paginate.bind(null, octokit), { + iterator: iterator.bind(null, octokit) + }) + }; + } + paginateRest.VERSION = VERSION; + exports.composePaginateRest = composePaginateRest; + exports.isPaginatingEndpoint = isPaginatingEndpoint; + exports.paginateRest = paginateRest; + exports.paginatingEndpoints = paginatingEndpoints; + } +}); + +// node_modules/@actions/github/lib/utils.js +var require_utils4 = __commonJS({ + "node_modules/@actions/github/lib/utils.js"(exports) { + "use strict"; + var __createBinding = exports && exports.__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 = exports && exports.__setModuleDefault || (Object.create ? function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); + } : function(o, v) { + o["default"] = v; + }); + var __importStar = exports && exports.__importStar || 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(exports, "__esModule", { value: true }); + exports.getOctokitOptions = exports.GitHub = exports.defaults = exports.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(); + exports.context = new Context.Context(); + var baseUrl = Utils.getApiBaseUrl(); + exports.defaults = { + baseUrl, + request: { + agent: Utils.getProxyAgent(baseUrl) + } + }; + exports.GitHub = core_1.Octokit.plugin(plugin_rest_endpoint_methods_1.restEndpointMethods, plugin_paginate_rest_1.paginateRest).defaults(exports.defaults); + function getOctokitOptions(token, options) { + const opts = Object.assign({}, options || {}); + const auth = Utils.getAuthString(token, opts); + if (auth) { + opts.auth = auth; + } + return opts; + } + exports.getOctokitOptions = getOctokitOptions; + } +}); + +// node_modules/@actions/github/lib/github.js +var require_github = __commonJS({ + "node_modules/@actions/github/lib/github.js"(exports) { + "use strict"; + var __createBinding = exports && exports.__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 = exports && exports.__setModuleDefault || (Object.create ? function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); + } : function(o, v) { + o["default"] = v; + }); + var __importStar = exports && exports.__importStar || 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(exports, "__esModule", { value: true }); + exports.getOctokit = exports.context = void 0; + var Context = __importStar(require_context()); + var utils_1 = require_utils4(); + exports.context = new Context.Context(); + function getOctokit2(token, options, ...additionalPlugins) { + const GitHubWithPlugins = utils_1.GitHub.plugin(...additionalPlugins); + return new GitHubWithPlugins(utils_1.getOctokitOptions(token, options)); + } + exports.getOctokit = getOctokit2; + } +}); + +// node_modules/fast-xml-parser/src/util.js +var require_util2 = __commonJS({ + "node_modules/fast-xml-parser/src/util.js"(exports) { + "use strict"; + var nameStartChar = ":A-Za-z_\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD"; + var nameChar = nameStartChar + "\\-.\\d\\u00B7\\u0300-\\u036F\\u203F-\\u2040"; + var nameRegexp = "[" + nameStartChar + "][" + nameChar + "]*"; + var regexName = new RegExp("^" + nameRegexp + "$"); + var getAllMatches = function(string, regex) { + const matches = []; + let match = regex.exec(string); + while (match) { + const allmatches = []; + allmatches.startIndex = regex.lastIndex - match[0].length; + const len = match.length; + for (let index = 0; index < len; index++) { + allmatches.push(match[index]); + } + matches.push(allmatches); + match = regex.exec(string); + } + return matches; + }; + var isName = function(string) { + const match = regexName.exec(string); + return !(match === null || typeof match === "undefined"); + }; + exports.isExist = function(v) { + return typeof v !== "undefined"; + }; + exports.isEmptyObject = function(obj) { + return Object.keys(obj).length === 0; + }; + exports.merge = function(target, a, arrayMode) { + if (a) { + const keys = Object.keys(a); + const len = keys.length; + for (let i = 0; i < len; i++) { + if (arrayMode === "strict") { + target[keys[i]] = [a[keys[i]]]; + } else { + target[keys[i]] = a[keys[i]]; + } + } + } + }; + exports.getValue = function(v) { + if (exports.isExist(v)) { + return v; + } else { + return ""; + } + }; + exports.isName = isName; + exports.getAllMatches = getAllMatches; + exports.nameRegexp = nameRegexp; + } +}); + +// node_modules/fast-xml-parser/src/validator.js +var require_validator = __commonJS({ + "node_modules/fast-xml-parser/src/validator.js"(exports) { + "use strict"; + var util = require_util2(); + var defaultOptions = { + allowBooleanAttributes: false, + //A tag can have attributes without any value + unpairedTags: [] + }; + exports.validate = function(xmlData, options) { + options = Object.assign({}, defaultOptions, options); + const tags = []; + let tagFound = false; + let reachedRoot = false; + if (xmlData[0] === "\uFEFF") { + xmlData = xmlData.substr(1); + } + for (let i = 0; i < xmlData.length; i++) { + if (xmlData[i] === "<" && xmlData[i + 1] === "?") { + i += 2; + i = readPI(xmlData, i); + if (i.err) + return i; + } else if (xmlData[i] === "<") { + let tagStartPos = i; + i++; + if (xmlData[i] === "!") { + i = readCommentAndCDATA(xmlData, i); + continue; + } else { + let closingTag = false; + if (xmlData[i] === "/") { + closingTag = true; + i++; + } + let tagName = ""; + for (; i < xmlData.length && xmlData[i] !== ">" && xmlData[i] !== " " && xmlData[i] !== " " && xmlData[i] !== "\n" && xmlData[i] !== "\r"; i++) { + tagName += xmlData[i]; + } + tagName = tagName.trim(); + if (tagName[tagName.length - 1] === "/") { + tagName = tagName.substring(0, tagName.length - 1); + i--; + } + if (!validateTagName(tagName)) { + let msg; + if (tagName.trim().length === 0) { + msg = "Invalid space after '<'."; + } else { + msg = "Tag '" + tagName + "' is an invalid name."; + } + return getErrorObject("InvalidTag", msg, getLineNumberForPosition(xmlData, i)); + } + const result = readAttributeStr(xmlData, i); + if (result === false) { + return getErrorObject("InvalidAttr", "Attributes for '" + tagName + "' have open quote.", getLineNumberForPosition(xmlData, i)); + } + let attrStr = result.value; + i = result.index; + if (attrStr[attrStr.length - 1] === "/") { + const attrStrStart = i - attrStr.length; + attrStr = attrStr.substring(0, attrStr.length - 1); + const isValid = validateAttributeString(attrStr, options); + if (isValid === true) { + tagFound = true; + } else { + return getErrorObject(isValid.err.code, isValid.err.msg, getLineNumberForPosition(xmlData, attrStrStart + isValid.err.line)); + } + } else if (closingTag) { + if (!result.tagClosed) { + return getErrorObject("InvalidTag", "Closing tag '" + tagName + "' doesn't have proper closing.", getLineNumberForPosition(xmlData, i)); + } else if (attrStr.trim().length > 0) { + return getErrorObject("InvalidTag", "Closing tag '" + tagName + "' can't have attributes or invalid starting.", getLineNumberForPosition(xmlData, tagStartPos)); + } else { + const otg = tags.pop(); + if (tagName !== otg.tagName) { + let openPos = getLineNumberForPosition(xmlData, otg.tagStartPos); + return getErrorObject( + "InvalidTag", + "Expected closing tag '" + otg.tagName + "' (opened in line " + openPos.line + ", col " + openPos.col + ") instead of closing tag '" + tagName + "'.", + getLineNumberForPosition(xmlData, tagStartPos) + ); + } + if (tags.length == 0) { + reachedRoot = true; + } + } + } else { + const isValid = validateAttributeString(attrStr, options); + if (isValid !== true) { + return getErrorObject(isValid.err.code, isValid.err.msg, getLineNumberForPosition(xmlData, i - attrStr.length + isValid.err.line)); + } + if (reachedRoot === true) { + return getErrorObject("InvalidXml", "Multiple possible root nodes found.", getLineNumberForPosition(xmlData, i)); + } else if (options.unpairedTags.indexOf(tagName) !== -1) { + } else { + tags.push({ tagName, tagStartPos }); + } + tagFound = true; + } + for (i++; i < xmlData.length; i++) { + if (xmlData[i] === "<") { + if (xmlData[i + 1] === "!") { + i++; + i = readCommentAndCDATA(xmlData, i); + continue; + } else if (xmlData[i + 1] === "?") { + i = readPI(xmlData, ++i); + if (i.err) + return i; + } else { + break; + } + } else if (xmlData[i] === "&") { + const afterAmp = validateAmpersand(xmlData, i); + if (afterAmp == -1) + return getErrorObject("InvalidChar", "char '&' is not expected.", getLineNumberForPosition(xmlData, i)); + i = afterAmp; + } else { + if (reachedRoot === true && !isWhiteSpace(xmlData[i])) { + return getErrorObject("InvalidXml", "Extra text at the end", getLineNumberForPosition(xmlData, i)); + } + } + } + if (xmlData[i] === "<") { + i--; + } + } + } else { + if (isWhiteSpace(xmlData[i])) { + continue; + } + return getErrorObject("InvalidChar", "char '" + xmlData[i] + "' is not expected.", getLineNumberForPosition(xmlData, i)); + } + } + if (!tagFound) { + return getErrorObject("InvalidXml", "Start tag expected.", 1); + } else if (tags.length == 1) { + return getErrorObject("InvalidTag", "Unclosed tag '" + tags[0].tagName + "'.", getLineNumberForPosition(xmlData, tags[0].tagStartPos)); + } else if (tags.length > 0) { + return getErrorObject("InvalidXml", "Invalid '" + JSON.stringify(tags.map((t) => t.tagName), null, 4).replace(/\r?\n/g, "") + "' found.", { line: 1, col: 1 }); + } + return true; + }; + function isWhiteSpace(char) { + return char === " " || char === " " || char === "\n" || char === "\r"; + } + function readPI(xmlData, i) { + const start = i; + for (; i < xmlData.length; i++) { + if (xmlData[i] == "?" || xmlData[i] == " ") { + const tagname = xmlData.substr(start, i - start); + if (i > 5 && tagname === "xml") { + return getErrorObject("InvalidXml", "XML declaration allowed only at the start of the document.", getLineNumberForPosition(xmlData, i)); + } else if (xmlData[i] == "?" && xmlData[i + 1] == ">") { + i++; + break; + } else { + continue; + } + } + } + return i; + } + function readCommentAndCDATA(xmlData, i) { + if (xmlData.length > i + 5 && xmlData[i + 1] === "-" && xmlData[i + 2] === "-") { + for (i += 3; i < xmlData.length; i++) { + if (xmlData[i] === "-" && xmlData[i + 1] === "-" && xmlData[i + 2] === ">") { + i += 2; + break; + } + } + } else if (xmlData.length > i + 8 && xmlData[i + 1] === "D" && xmlData[i + 2] === "O" && xmlData[i + 3] === "C" && xmlData[i + 4] === "T" && xmlData[i + 5] === "Y" && xmlData[i + 6] === "P" && xmlData[i + 7] === "E") { + let angleBracketsCount = 1; + for (i += 8; i < xmlData.length; i++) { + if (xmlData[i] === "<") { + angleBracketsCount++; + } else if (xmlData[i] === ">") { + angleBracketsCount--; + if (angleBracketsCount === 0) { + break; + } + } + } + } else if (xmlData.length > i + 9 && xmlData[i + 1] === "[" && xmlData[i + 2] === "C" && xmlData[i + 3] === "D" && xmlData[i + 4] === "A" && xmlData[i + 5] === "T" && xmlData[i + 6] === "A" && xmlData[i + 7] === "[") { + for (i += 8; i < xmlData.length; i++) { + if (xmlData[i] === "]" && xmlData[i + 1] === "]" && xmlData[i + 2] === ">") { + i += 2; + break; + } + } + } + return i; + } + var doubleQuote = '"'; + var singleQuote = "'"; + function readAttributeStr(xmlData, i) { + let attrStr = ""; + let startChar = ""; + let tagClosed = false; + for (; i < xmlData.length; i++) { + if (xmlData[i] === doubleQuote || xmlData[i] === singleQuote) { + if (startChar === "") { + startChar = xmlData[i]; + } else if (startChar !== xmlData[i]) { + } else { + startChar = ""; + } + } else if (xmlData[i] === ">") { + if (startChar === "") { + tagClosed = true; + break; + } + } + attrStr += xmlData[i]; + } + if (startChar !== "") { + return false; + } + return { + value: attrStr, + index: i, + tagClosed + }; + } + var validAttrStrRegxp = new RegExp(`(\\s*)([^\\s=]+)(\\s*=)?(\\s*(['"])(([\\s\\S])*?)\\5)?`, "g"); + function validateAttributeString(attrStr, options) { + const matches = util.getAllMatches(attrStr, validAttrStrRegxp); + const attrNames = {}; + for (let i = 0; i < matches.length; i++) { + if (matches[i][1].length === 0) { + return getErrorObject("InvalidAttr", "Attribute '" + matches[i][2] + "' has no space in starting.", getPositionFromMatch(matches[i])); + } else if (matches[i][3] !== void 0 && matches[i][4] === void 0) { + return getErrorObject("InvalidAttr", "Attribute '" + matches[i][2] + "' is without value.", getPositionFromMatch(matches[i])); + } else if (matches[i][3] === void 0 && !options.allowBooleanAttributes) { + return getErrorObject("InvalidAttr", "boolean attribute '" + matches[i][2] + "' is not allowed.", getPositionFromMatch(matches[i])); + } + const attrName = matches[i][2]; + if (!validateAttrName(attrName)) { + return getErrorObject("InvalidAttr", "Attribute '" + attrName + "' is an invalid name.", getPositionFromMatch(matches[i])); + } + if (!attrNames.hasOwnProperty(attrName)) { + attrNames[attrName] = 1; + } else { + return getErrorObject("InvalidAttr", "Attribute '" + attrName + "' is repeated.", getPositionFromMatch(matches[i])); + } + } + return true; + } + function validateNumberAmpersand(xmlData, i) { + let re = /\d/; + if (xmlData[i] === "x") { + i++; + re = /[\da-fA-F]/; + } + for (; i < xmlData.length; i++) { + if (xmlData[i] === ";") + return i; + if (!xmlData[i].match(re)) + break; + } + return -1; + } + function validateAmpersand(xmlData, i) { + i++; + if (xmlData[i] === ";") + return -1; + if (xmlData[i] === "#") { + i++; + return validateNumberAmpersand(xmlData, i); + } + let count = 0; + for (; i < xmlData.length; i++, count++) { + if (xmlData[i].match(/\w/) && count < 20) + continue; + if (xmlData[i] === ";") + break; + return -1; + } + return i; + } + function getErrorObject(code, message, lineNumber) { + return { + err: { + code, + msg: message, + line: lineNumber.line || lineNumber, + col: lineNumber.col + } + }; + } + function validateAttrName(attrName) { + return util.isName(attrName); + } + function validateTagName(tagname) { + return util.isName(tagname); + } + function getLineNumberForPosition(xmlData, index) { + const lines = xmlData.substring(0, index).split(/\r?\n/); + return { + line: lines.length, + // column number is last line's length + 1, because column numbering starts at 1: + col: lines[lines.length - 1].length + 1 + }; + } + function getPositionFromMatch(match) { + return match.startIndex + match[1].length; + } + } +}); + +// node_modules/fast-xml-parser/src/xmlparser/OptionsBuilder.js +var require_OptionsBuilder = __commonJS({ + "node_modules/fast-xml-parser/src/xmlparser/OptionsBuilder.js"(exports) { + var defaultOptions = { + preserveOrder: false, + attributeNamePrefix: "@_", + attributesGroupName: false, + textNodeName: "#text", + ignoreAttributes: true, + removeNSPrefix: false, + // remove NS from tag name or attribute name if true + allowBooleanAttributes: false, + //a tag can have attributes without any value + //ignoreRootElement : false, + parseTagValue: true, + parseAttributeValue: false, + trimValues: true, + //Trim string values of tag and attributes + cdataPropName: false, + numberParseOptions: { + hex: true, + leadingZeros: true, + eNotation: true + }, + tagValueProcessor: function(tagName, val2) { + return val2; + }, + attributeValueProcessor: function(attrName, val2) { + return val2; + }, + stopNodes: [], + //nested tags will not be parsed even for errors + alwaysCreateTextNode: false, + isArray: () => false, + commentPropName: false, + unpairedTags: [], + processEntities: true, + htmlEntities: false, + ignoreDeclaration: false, + ignorePiTags: false, + transformTagName: false, + transformAttributeName: false + }; + var buildOptions = function(options) { + return Object.assign({}, defaultOptions, options); + }; + exports.buildOptions = buildOptions; + exports.defaultOptions = defaultOptions; + } +}); + +// node_modules/fast-xml-parser/src/xmlparser/xmlNode.js +var require_xmlNode = __commonJS({ + "node_modules/fast-xml-parser/src/xmlparser/xmlNode.js"(exports, module2) { + "use strict"; + var XmlNode = class { + constructor(tagname) { + this.tagname = tagname; + this.child = []; + this[":@"] = {}; + } + add(key, val2) { + if (key === "__proto__") + key = "#__proto__"; + this.child.push({ [key]: val2 }); + } + addChild(node) { + if (node.tagname === "__proto__") + node.tagname = "#__proto__"; + if (node[":@"] && Object.keys(node[":@"]).length > 0) { + this.child.push({ [node.tagname]: node.child, [":@"]: node[":@"] }); + } else { + this.child.push({ [node.tagname]: node.child }); + } + } + }; + module2.exports = XmlNode; + } +}); + +// node_modules/fast-xml-parser/src/xmlparser/DocTypeReader.js +var require_DocTypeReader = __commonJS({ + "node_modules/fast-xml-parser/src/xmlparser/DocTypeReader.js"(exports, module2) { + function readDocType(xmlData, i) { + const entities = {}; + if (xmlData[i + 3] === "O" && xmlData[i + 4] === "C" && xmlData[i + 5] === "T" && xmlData[i + 6] === "Y" && xmlData[i + 7] === "P" && xmlData[i + 8] === "E") { + i = i + 9; + let angleBracketsCount = 1; + let hasBody = false, comment = false; + let exp = ""; + for (; i < xmlData.length; i++) { + if (xmlData[i] === "<" && !comment) { + if (hasBody && isEntity(xmlData, i)) { + i += 7; + [entityName, val, i] = readEntityExp(xmlData, i + 1); + if (val.indexOf("&") === -1) + entities[entityName] = { + regx: RegExp(`&${entityName};`, "g"), + val + }; + } else if (hasBody && isElement(xmlData, i)) + i += 8; + else if (hasBody && isAttlist(xmlData, i)) + i += 8; + else if (hasBody && isNotation(xmlData, i)) + i += 9; + else if (isComment) + comment = true; + else + throw new Error("Invalid DOCTYPE"); + angleBracketsCount++; + exp = ""; + } else if (xmlData[i] === ">") { + if (comment) { + if (xmlData[i - 1] === "-" && xmlData[i - 2] === "-") { + comment = false; + angleBracketsCount--; + } + } else { + angleBracketsCount--; + } + if (angleBracketsCount === 0) { + break; + } + } else if (xmlData[i] === "[") { + hasBody = true; + } else { + exp += xmlData[i]; + } + } + if (angleBracketsCount !== 0) { + throw new Error(`Unclosed DOCTYPE`); + } + } else { + throw new Error(`Invalid Tag instead of DOCTYPE`); + } + return { entities, i }; + } + function readEntityExp(xmlData, i) { + let entityName2 = ""; + for (; i < xmlData.length && (xmlData[i] !== "'" && xmlData[i] !== '"'); i++) { + entityName2 += xmlData[i]; + } + entityName2 = entityName2.trim(); + if (entityName2.indexOf(" ") !== -1) + throw new Error("External entites are not supported"); + const startChar = xmlData[i++]; + let val2 = ""; + for (; i < xmlData.length && xmlData[i] !== startChar; i++) { + val2 += xmlData[i]; + } + return [entityName2, val2, i]; + } + function isComment(xmlData, i) { + if (xmlData[i + 1] === "!" && xmlData[i + 2] === "-" && xmlData[i + 3] === "-") + return true; + return false; + } + function isEntity(xmlData, i) { + if (xmlData[i + 1] === "!" && xmlData[i + 2] === "E" && xmlData[i + 3] === "N" && xmlData[i + 4] === "T" && xmlData[i + 5] === "I" && xmlData[i + 6] === "T" && xmlData[i + 7] === "Y") + return true; + return false; + } + function isElement(xmlData, i) { + if (xmlData[i + 1] === "!" && xmlData[i + 2] === "E" && xmlData[i + 3] === "L" && xmlData[i + 4] === "E" && xmlData[i + 5] === "M" && xmlData[i + 6] === "E" && xmlData[i + 7] === "N" && xmlData[i + 8] === "T") + return true; + return false; + } + function isAttlist(xmlData, i) { + if (xmlData[i + 1] === "!" && xmlData[i + 2] === "A" && xmlData[i + 3] === "T" && xmlData[i + 4] === "T" && xmlData[i + 5] === "L" && xmlData[i + 6] === "I" && xmlData[i + 7] === "S" && xmlData[i + 8] === "T") + return true; + return false; + } + function isNotation(xmlData, i) { + if (xmlData[i + 1] === "!" && xmlData[i + 2] === "N" && xmlData[i + 3] === "O" && xmlData[i + 4] === "T" && xmlData[i + 5] === "A" && xmlData[i + 6] === "T" && xmlData[i + 7] === "I" && xmlData[i + 8] === "O" && xmlData[i + 9] === "N") + return true; + return false; + } + module2.exports = readDocType; + } +}); + +// node_modules/strnum/strnum.js +var require_strnum = __commonJS({ + "node_modules/strnum/strnum.js"(exports, module2) { + var hexRegex = /^[-+]?0x[a-fA-F0-9]+$/; + var numRegex = /^([\-\+])?(0*)(\.[0-9]+([eE]\-?[0-9]+)?|[0-9]+(\.[0-9]+([eE]\-?[0-9]+)?)?)$/; + if (!Number.parseInt && window.parseInt) { + Number.parseInt = window.parseInt; + } + if (!Number.parseFloat && window.parseFloat) { + Number.parseFloat = window.parseFloat; + } + var consider = { + hex: true, + leadingZeros: true, + decimalPoint: ".", + eNotation: true + //skipLike: /regex/ + }; + function toNumber(str, options = {}) { + options = Object.assign({}, consider, options); + if (!str || typeof str !== "string") + return str; + let trimmedStr = str.trim(); + if (options.skipLike !== void 0 && options.skipLike.test(trimmedStr)) + return str; + else if (options.hex && hexRegex.test(trimmedStr)) { + return Number.parseInt(trimmedStr, 16); + } else { + const match = numRegex.exec(trimmedStr); + if (match) { + const sign = match[1]; + const leadingZeros = match[2]; + let numTrimmedByZeros = trimZeros(match[3]); + const eNotation = match[4] || match[6]; + if (!options.leadingZeros && leadingZeros.length > 0 && sign && trimmedStr[2] !== ".") + return str; + else if (!options.leadingZeros && leadingZeros.length > 0 && !sign && trimmedStr[1] !== ".") + return str; + else { + const num = Number(trimmedStr); + const numStr = "" + num; + if (numStr.search(/[eE]/) !== -1) { + if (options.eNotation) + return num; + else + return str; + } else if (eNotation) { + if (options.eNotation) + return num; + else + return str; + } else if (trimmedStr.indexOf(".") !== -1) { + if (numStr === "0" && numTrimmedByZeros === "") + return num; + else if (numStr === numTrimmedByZeros) + return num; + else if (sign && numStr === "-" + numTrimmedByZeros) + return num; + else + return str; + } + if (leadingZeros) { + if (numTrimmedByZeros === numStr) + return num; + else if (sign + numTrimmedByZeros === numStr) + return num; + else + return str; + } + if (trimmedStr === numStr) + return num; + else if (trimmedStr === sign + numStr) + return num; + return str; + } + } else { + return str; + } + } + } + function trimZeros(numStr) { + if (numStr && numStr.indexOf(".") !== -1) { + numStr = numStr.replace(/0+$/, ""); + if (numStr === ".") + numStr = "0"; + else if (numStr[0] === ".") + numStr = "0" + numStr; + else if (numStr[numStr.length - 1] === ".") + numStr = numStr.substr(0, numStr.length - 1); + return numStr; + } + return numStr; + } + module2.exports = toNumber; + } +}); + +// node_modules/fast-xml-parser/src/xmlparser/OrderedObjParser.js +var require_OrderedObjParser = __commonJS({ + "node_modules/fast-xml-parser/src/xmlparser/OrderedObjParser.js"(exports, module2) { + "use strict"; + var util = require_util2(); + var xmlNode = require_xmlNode(); + var readDocType = require_DocTypeReader(); + var toNumber = require_strnum(); + var regx = "<((!\\[CDATA\\[([\\s\\S]*?)(]]>))|((NAME:)?(NAME))([^>]*)>|((\\/)(NAME)\\s*>))([^<]*)".replace(/NAME/g, util.nameRegexp); + var OrderedObjParser = class { + constructor(options) { + this.options = options; + this.currentNode = null; + this.tagsNodeStack = []; + this.docTypeEntities = {}; + this.lastEntities = { + "apos": { regex: /&(apos|#39|#x27);/g, val: "'" }, + "gt": { regex: /&(gt|#62|#x3E);/g, val: ">" }, + "lt": { regex: /&(lt|#60|#x3C);/g, val: "<" }, + "quot": { regex: /&(quot|#34|#x22);/g, val: '"' } + }; + this.ampEntity = { regex: /&(amp|#38|#x26);/g, val: "&" }; + this.htmlEntities = { + "space": { regex: /&(nbsp|#160);/g, val: " " }, + // "lt" : { regex: /&(lt|#60);/g, val: "<" }, + // "gt" : { regex: /&(gt|#62);/g, val: ">" }, + // "amp" : { regex: /&(amp|#38);/g, val: "&" }, + // "quot" : { regex: /&(quot|#34);/g, val: "\"" }, + // "apos" : { regex: /&(apos|#39);/g, val: "'" }, + "cent": { regex: /&(cent|#162);/g, val: "\xA2" }, + "pound": { regex: /&(pound|#163);/g, val: "\xA3" }, + "yen": { regex: /&(yen|#165);/g, val: "\xA5" }, + "euro": { regex: /&(euro|#8364);/g, val: "\u20AC" }, + "copyright": { regex: /&(copy|#169);/g, val: "\xA9" }, + "reg": { regex: /&(reg|#174);/g, val: "\xAE" }, + "inr": { regex: /&(inr|#8377);/g, val: "\u20B9" } + }; + this.addExternalEntities = addExternalEntities; + this.parseXml = parseXml; + this.parseTextData = parseTextData; + this.resolveNameSpace = resolveNameSpace; + this.buildAttributesMap = buildAttributesMap; + this.isItStopNode = isItStopNode; + this.replaceEntitiesValue = replaceEntitiesValue; + this.readStopNodeData = readStopNodeData; + this.saveTextToParentTag = saveTextToParentTag; + } + }; + function addExternalEntities(externalEntities) { + const entKeys = Object.keys(externalEntities); + for (let i = 0; i < entKeys.length; i++) { + const ent = entKeys[i]; + this.lastEntities[ent] = { + regex: new RegExp("&" + ent + ";", "g"), + val: externalEntities[ent] + }; + } + } + function parseTextData(val2, tagName, jPath, dontTrim, hasAttributes, isLeafNode, escapeEntities) { + if (val2 !== void 0) { + if (this.options.trimValues && !dontTrim) { + val2 = val2.trim(); + } + if (val2.length > 0) { + if (!escapeEntities) + val2 = this.replaceEntitiesValue(val2); + const newval = this.options.tagValueProcessor(tagName, val2, jPath, hasAttributes, isLeafNode); + if (newval === null || newval === void 0) { + return val2; + } else if (typeof newval !== typeof val2 || newval !== val2) { + return newval; + } else if (this.options.trimValues) { + return parseValue(val2, this.options.parseTagValue, this.options.numberParseOptions); + } else { + const trimmedVal = val2.trim(); + if (trimmedVal === val2) { + return parseValue(val2, this.options.parseTagValue, this.options.numberParseOptions); + } else { + return val2; + } + } + } + } + } + function resolveNameSpace(tagname) { + if (this.options.removeNSPrefix) { + const tags = tagname.split(":"); + const prefix = tagname.charAt(0) === "/" ? "/" : ""; + if (tags[0] === "xmlns") { + return ""; + } + if (tags.length === 2) { + tagname = prefix + tags[1]; + } + } + return tagname; + } + var attrsRegx = new RegExp(`([^\\s=]+)\\s*(=\\s*(['"])([\\s\\S]*?)\\3)?`, "gm"); + function buildAttributesMap(attrStr, jPath) { + if (!this.options.ignoreAttributes && typeof attrStr === "string") { + const matches = util.getAllMatches(attrStr, attrsRegx); + const len = matches.length; + const attrs = {}; + for (let i = 0; i < len; i++) { + const attrName = this.resolveNameSpace(matches[i][1]); + let oldVal = matches[i][4]; + let aName = this.options.attributeNamePrefix + attrName; + if (attrName.length) { + if (this.options.transformAttributeName) { + aName = this.options.transformAttributeName(aName); + } + if (aName === "__proto__") + aName = "#__proto__"; + if (oldVal !== void 0) { + if (this.options.trimValues) { + oldVal = oldVal.trim(); + } + oldVal = this.replaceEntitiesValue(oldVal); + const newVal = this.options.attributeValueProcessor(attrName, oldVal, jPath); + if (newVal === null || newVal === void 0) { + attrs[aName] = oldVal; + } else if (typeof newVal !== typeof oldVal || newVal !== oldVal) { + attrs[aName] = newVal; + } else { + attrs[aName] = parseValue( + oldVal, + this.options.parseAttributeValue, + this.options.numberParseOptions + ); + } + } else if (this.options.allowBooleanAttributes) { + attrs[aName] = true; + } + } + } + if (!Object.keys(attrs).length) { + return; + } + if (this.options.attributesGroupName) { + const attrCollection = {}; + attrCollection[this.options.attributesGroupName] = attrs; + return attrCollection; + } + return attrs; + } + } + var parseXml = function(xmlData) { + xmlData = xmlData.replace(/\r\n?/g, "\n"); + const xmlObj = new xmlNode("!xml"); + let currentNode = xmlObj; + let textData = ""; + let jPath = ""; + for (let i = 0; i < xmlData.length; i++) { + const ch = xmlData[i]; + if (ch === "<") { + if (xmlData[i + 1] === "/") { + const closeIndex = findClosingIndex(xmlData, ">", i, "Closing Tag is not closed."); + let tagName = xmlData.substring(i + 2, closeIndex).trim(); + if (this.options.removeNSPrefix) { + const colonIndex = tagName.indexOf(":"); + if (colonIndex !== -1) { + tagName = tagName.substr(colonIndex + 1); + } + } + if (this.options.transformTagName) { + tagName = this.options.transformTagName(tagName); + } + if (currentNode) { + textData = this.saveTextToParentTag(textData, currentNode, jPath); + } + jPath = jPath.substr(0, jPath.lastIndexOf(".")); + currentNode = this.tagsNodeStack.pop(); + textData = ""; + i = closeIndex; + } else if (xmlData[i + 1] === "?") { + let tagData = readTagExp(xmlData, i, false, "?>"); + if (!tagData) + throw new Error("Pi Tag is not closed."); + textData = this.saveTextToParentTag(textData, currentNode, jPath); + if (this.options.ignoreDeclaration && tagData.tagName === "?xml" || this.options.ignorePiTags) { + } else { + const childNode = new xmlNode(tagData.tagName); + childNode.add(this.options.textNodeName, ""); + if (tagData.tagName !== tagData.tagExp && tagData.attrExpPresent) { + childNode[":@"] = this.buildAttributesMap(tagData.tagExp, jPath); + } + currentNode.addChild(childNode); + } + i = tagData.closeIndex + 1; + } else if (xmlData.substr(i + 1, 3) === "!--") { + const endIndex = findClosingIndex(xmlData, "-->", i + 4, "Comment is not closed."); + if (this.options.commentPropName) { + const comment = xmlData.substring(i + 4, endIndex - 2); + textData = this.saveTextToParentTag(textData, currentNode, jPath); + currentNode.add(this.options.commentPropName, [{ [this.options.textNodeName]: comment }]); + } + i = endIndex; + } else if (xmlData.substr(i + 1, 2) === "!D") { + const result = readDocType(xmlData, i); + this.docTypeEntities = result.entities; + i = result.i; + } else if (xmlData.substr(i + 1, 2) === "![") { + const closeIndex = findClosingIndex(xmlData, "]]>", i, "CDATA is not closed.") - 2; + const tagExp = xmlData.substring(i + 9, closeIndex); + textData = this.saveTextToParentTag(textData, currentNode, jPath); + if (this.options.cdataPropName) { + currentNode.add(this.options.cdataPropName, [{ [this.options.textNodeName]: tagExp }]); + } else { + let val2 = this.parseTextData(tagExp, currentNode.tagname, jPath, true, false, true); + if (val2 == void 0) + val2 = ""; + currentNode.add(this.options.textNodeName, val2); + } + i = closeIndex + 2; + } else { + let result = readTagExp(xmlData, i, this.options.removeNSPrefix); + let tagName = result.tagName; + let tagExp = result.tagExp; + let attrExpPresent = result.attrExpPresent; + let closeIndex = result.closeIndex; + if (this.options.transformTagName) { + tagName = this.options.transformTagName(tagName); + } + if (currentNode && textData) { + if (currentNode.tagname !== "!xml") { + textData = this.saveTextToParentTag(textData, currentNode, jPath, false); + } + } + if (tagName !== xmlObj.tagname) { + jPath += jPath ? "." + tagName : tagName; + } + const lastTag = currentNode; + if (lastTag && this.options.unpairedTags.indexOf(lastTag.tagname) !== -1) { + currentNode = this.tagsNodeStack.pop(); + } + if (this.isItStopNode(this.options.stopNodes, jPath, tagName)) { + let tagContent = ""; + if (tagExp.length > 0 && tagExp.lastIndexOf("/") === tagExp.length - 1) { + i = result.closeIndex; + } else if (this.options.unpairedTags.indexOf(tagName) !== -1) { + i = result.closeIndex; + } else { + const result2 = this.readStopNodeData(xmlData, tagName, closeIndex + 1); + if (!result2) + throw new Error(`Unexpected end of ${tagName}`); + i = result2.i; + tagContent = result2.tagContent; + } + const childNode = new xmlNode(tagName); + if (tagName !== tagExp && attrExpPresent) { + childNode[":@"] = this.buildAttributesMap(tagExp, jPath); + } + if (tagContent) { + tagContent = this.parseTextData(tagContent, tagName, jPath, true, attrExpPresent, true, true); + } + jPath = jPath.substr(0, jPath.lastIndexOf(".")); + childNode.add(this.options.textNodeName, tagContent); + currentNode.addChild(childNode); + } else { + if (tagExp.length > 0 && tagExp.lastIndexOf("/") === tagExp.length - 1) { + if (tagName[tagName.length - 1] === "/") { + tagName = tagName.substr(0, tagName.length - 1); + tagExp = tagName; + } else { + tagExp = tagExp.substr(0, tagExp.length - 1); + } + if (this.options.transformTagName) { + tagName = this.options.transformTagName(tagName); + } + const childNode = new xmlNode(tagName); + if (tagName !== tagExp && attrExpPresent) { + childNode[":@"] = this.buildAttributesMap(tagExp, jPath); + } + jPath = jPath.substr(0, jPath.lastIndexOf(".")); + currentNode.addChild(childNode); + } else { + const childNode = new xmlNode(tagName); + this.tagsNodeStack.push(currentNode); + if (tagName !== tagExp && attrExpPresent) { + childNode[":@"] = this.buildAttributesMap(tagExp, jPath); + } + currentNode.addChild(childNode); + currentNode = childNode; + } + textData = ""; + i = closeIndex; + } + } + } else { + textData += xmlData[i]; + } + } + return xmlObj.child; + }; + var replaceEntitiesValue = function(val2) { + if (this.options.processEntities) { + for (let entityName2 in this.docTypeEntities) { + const entity = this.docTypeEntities[entityName2]; + val2 = val2.replace(entity.regx, entity.val); + } + for (let entityName2 in this.lastEntities) { + const entity = this.lastEntities[entityName2]; + val2 = val2.replace(entity.regex, entity.val); + } + if (this.options.htmlEntities) { + for (let entityName2 in this.htmlEntities) { + const entity = this.htmlEntities[entityName2]; + val2 = val2.replace(entity.regex, entity.val); + } + } + val2 = val2.replace(this.ampEntity.regex, this.ampEntity.val); + } + return val2; + }; + function saveTextToParentTag(textData, currentNode, jPath, isLeafNode) { + if (textData) { + if (isLeafNode === void 0) + isLeafNode = Object.keys(currentNode.child).length === 0; + textData = this.parseTextData( + textData, + currentNode.tagname, + jPath, + false, + currentNode[":@"] ? Object.keys(currentNode[":@"]).length !== 0 : false, + isLeafNode + ); + if (textData !== void 0 && textData !== "") + currentNode.add(this.options.textNodeName, textData); + textData = ""; + } + return textData; + } + function isItStopNode(stopNodes, jPath, currentTagName) { + const allNodesExp = "*." + currentTagName; + for (const stopNodePath in stopNodes) { + const stopNodeExp = stopNodes[stopNodePath]; + if (allNodesExp === stopNodeExp || jPath === stopNodeExp) + return true; + } + return false; + } + function tagExpWithClosingIndex(xmlData, i, closingChar = ">") { + let attrBoundary; + let tagExp = ""; + for (let index = i; index < xmlData.length; index++) { + let ch = xmlData[index]; + if (attrBoundary) { + if (ch === attrBoundary) + attrBoundary = ""; + } else if (ch === '"' || ch === "'") { + attrBoundary = ch; + } else if (ch === closingChar[0]) { + if (closingChar[1]) { + if (xmlData[index + 1] === closingChar[1]) { + return { + data: tagExp, + index + }; + } + } else { + return { + data: tagExp, + index + }; + } + } else if (ch === " ") { + ch = " "; + } + tagExp += ch; + } + } + function findClosingIndex(xmlData, str, i, errMsg) { + const closingIndex = xmlData.indexOf(str, i); + if (closingIndex === -1) { + throw new Error(errMsg); + } else { + return closingIndex + str.length - 1; + } + } + function readTagExp(xmlData, i, removeNSPrefix, closingChar = ">") { + const result = tagExpWithClosingIndex(xmlData, i + 1, closingChar); + if (!result) + return; + let tagExp = result.data; + const closeIndex = result.index; + const separatorIndex = tagExp.search(/\s/); + let tagName = tagExp; + let attrExpPresent = true; + if (separatorIndex !== -1) { + tagName = tagExp.substr(0, separatorIndex).replace(/\s\s*$/, ""); + tagExp = tagExp.substr(separatorIndex + 1); + } + if (removeNSPrefix) { + const colonIndex = tagName.indexOf(":"); + if (colonIndex !== -1) { + tagName = tagName.substr(colonIndex + 1); + attrExpPresent = tagName !== result.data.substr(colonIndex + 1); + } + } + return { + tagName, + tagExp, + closeIndex, + attrExpPresent + }; + } + function readStopNodeData(xmlData, tagName, i) { + const startIndex = i; + let openTagCount = 1; + for (; i < xmlData.length; i++) { + if (xmlData[i] === "<") { + if (xmlData[i + 1] === "/") { + const closeIndex = findClosingIndex(xmlData, ">", i, `${tagName} is not closed`); + let closeTagName = xmlData.substring(i + 2, closeIndex).trim(); + if (closeTagName === tagName) { + openTagCount--; + if (openTagCount === 0) { + return { + tagContent: xmlData.substring(startIndex, i), + i: closeIndex + }; + } + } + i = closeIndex; + } else if (xmlData[i + 1] === "?") { + const closeIndex = findClosingIndex(xmlData, "?>", i + 1, "StopNode is not closed."); + i = closeIndex; + } else if (xmlData.substr(i + 1, 3) === "!--") { + const closeIndex = findClosingIndex(xmlData, "-->", i + 3, "StopNode is not closed."); + i = closeIndex; + } else if (xmlData.substr(i + 1, 2) === "![") { + const closeIndex = findClosingIndex(xmlData, "]]>", i, "StopNode is not closed.") - 2; + i = closeIndex; + } else { + const tagData = readTagExp(xmlData, i, ">"); + if (tagData) { + const openTagName = tagData && tagData.tagName; + if (openTagName === tagName && tagData.tagExp[tagData.tagExp.length - 1] !== "/") { + openTagCount++; + } + i = tagData.closeIndex; + } + } + } + } + } + function parseValue(val2, shouldParse, options) { + if (shouldParse && typeof val2 === "string") { + const newval = val2.trim(); + if (newval === "true") + return true; + else if (newval === "false") + return false; + else + return toNumber(val2, options); + } else { + if (util.isExist(val2)) { + return val2; + } else { + return ""; + } + } + } + module2.exports = OrderedObjParser; + } +}); + +// node_modules/fast-xml-parser/src/xmlparser/node2json.js +var require_node2json = __commonJS({ + "node_modules/fast-xml-parser/src/xmlparser/node2json.js"(exports) { + "use strict"; + function prettify(node, options) { + return compress(node, options); + } + function compress(arr, options, jPath) { + let text; + const compressedObj = {}; + for (let i = 0; i < arr.length; i++) { + const tagObj = arr[i]; + const property = propName(tagObj); + let newJpath = ""; + if (jPath === void 0) + newJpath = property; + else + newJpath = jPath + "." + property; + if (property === options.textNodeName) { + if (text === void 0) + text = tagObj[property]; + else + text += "" + tagObj[property]; + } else if (property === void 0) { + continue; + } else if (tagObj[property]) { + let val2 = compress(tagObj[property], options, newJpath); + const isLeaf = isLeafTag(val2, options); + if (tagObj[":@"]) { + assignAttributes(val2, tagObj[":@"], newJpath, options); + } else if (Object.keys(val2).length === 1 && val2[options.textNodeName] !== void 0 && !options.alwaysCreateTextNode) { + val2 = val2[options.textNodeName]; + } else if (Object.keys(val2).length === 0) { + if (options.alwaysCreateTextNode) + val2[options.textNodeName] = ""; + else + val2 = ""; + } + if (compressedObj[property] !== void 0 && compressedObj.hasOwnProperty(property)) { + if (!Array.isArray(compressedObj[property])) { + compressedObj[property] = [compressedObj[property]]; + } + compressedObj[property].push(val2); + } else { + if (options.isArray(property, newJpath, isLeaf)) { + compressedObj[property] = [val2]; + } else { + compressedObj[property] = val2; + } + } + } + } + if (typeof text === "string") { + if (text.length > 0) + compressedObj[options.textNodeName] = text; + } else if (text !== void 0) + compressedObj[options.textNodeName] = text; + return compressedObj; + } + function propName(obj) { + const keys = Object.keys(obj); + for (let i = 0; i < keys.length; i++) { + const key = keys[i]; + if (key !== ":@") + return key; + } + } + function assignAttributes(obj, attrMap, jpath, options) { + if (attrMap) { + const keys = Object.keys(attrMap); + const len = keys.length; + for (let i = 0; i < len; i++) { + const atrrName = keys[i]; + if (options.isArray(atrrName, jpath + "." + atrrName, true, true)) { + obj[atrrName] = [attrMap[atrrName]]; + } else { + obj[atrrName] = attrMap[atrrName]; + } + } + } + } + function isLeafTag(obj, options) { + const propCount = Object.keys(obj).length; + if (propCount === 0 || propCount === 1 && obj[options.textNodeName]) + return true; + return false; + } + exports.prettify = prettify; + } +}); + +// node_modules/fast-xml-parser/src/xmlparser/XMLParser.js +var require_XMLParser = __commonJS({ + "node_modules/fast-xml-parser/src/xmlparser/XMLParser.js"(exports, module2) { + var { buildOptions } = require_OptionsBuilder(); + var OrderedObjParser = require_OrderedObjParser(); + var { prettify } = require_node2json(); + var validator = require_validator(); + var XMLParser2 = class { + constructor(options) { + this.externalEntities = {}; + this.options = buildOptions(options); + } + /** + * Parse XML dats to JS object + * @param {string|Buffer} xmlData + * @param {boolean|Object} validationOption + */ + parse(xmlData, validationOption) { + if (typeof xmlData === "string") { + } else if (xmlData.toString) { + xmlData = xmlData.toString(); + } else { + throw new Error("XML data is accepted in String or Bytes[] form."); + } + if (validationOption) { + if (validationOption === true) + validationOption = {}; + const result = validator.validate(xmlData, validationOption); + if (result !== true) { + throw Error(`${result.err.msg}:${result.err.line}:${result.err.col}`); + } + } + const orderedObjParser = new OrderedObjParser(this.options); + orderedObjParser.addExternalEntities(this.externalEntities); + const orderedResult = orderedObjParser.parseXml(xmlData); + if (this.options.preserveOrder || orderedResult === void 0) + return orderedResult; + else + return prettify(orderedResult, this.options); + } + /** + * Add Entity which is not by default supported by this library + * @param {string} key + * @param {string} value + */ + addEntity(key, value) { + if (value.indexOf("&") !== -1) { + throw new Error("Entity value can't have '&'"); + } else if (key.indexOf("&") !== -1 || key.indexOf(";") !== -1) { + throw new Error("An entity must be set without '&' and ';'. Eg. use '#xD' for ' '"); + } else if (value === "&") { + throw new Error("An entity with value '&' is not permitted"); + } else { + this.externalEntities[key] = value; + } + } + }; + module2.exports = XMLParser2; + } +}); + +// node_modules/fast-xml-parser/src/xmlbuilder/orderedJs2Xml.js +var require_orderedJs2Xml = __commonJS({ + "node_modules/fast-xml-parser/src/xmlbuilder/orderedJs2Xml.js"(exports, module2) { + var EOL = "\n"; + function toXml(jArray, options) { + let indentation = ""; + if (options.format && options.indentBy.length > 0) { + indentation = EOL; + } + return arrToStr(jArray, options, "", indentation); + } + function arrToStr(arr, options, jPath, indentation) { + let xmlStr = ""; + let isPreviousElementTag = false; + for (let i = 0; i < arr.length; i++) { + const tagObj = arr[i]; + const tagName = propName(tagObj); + let newJPath = ""; + if (jPath.length === 0) + newJPath = tagName; + else + newJPath = `${jPath}.${tagName}`; + if (tagName === options.textNodeName) { + let tagText = tagObj[tagName]; + if (!isStopNode(newJPath, options)) { + tagText = options.tagValueProcessor(tagName, tagText); + tagText = replaceEntitiesValue(tagText, options); + } + if (isPreviousElementTag) { + xmlStr += indentation; + } + xmlStr += tagText; + isPreviousElementTag = false; + continue; + } else if (tagName === options.cdataPropName) { + if (isPreviousElementTag) { + xmlStr += indentation; + } + xmlStr += ``; + isPreviousElementTag = false; + continue; + } else if (tagName === options.commentPropName) { + xmlStr += indentation + ``; + isPreviousElementTag = true; + continue; + } else if (tagName[0] === "?") { + const attStr2 = attr_to_str(tagObj[":@"], options); + const tempInd = tagName === "?xml" ? "" : indentation; + let piTextNodeName = tagObj[tagName][0][options.textNodeName]; + piTextNodeName = piTextNodeName.length !== 0 ? " " + piTextNodeName : ""; + xmlStr += tempInd + `<${tagName}${piTextNodeName}${attStr2}?>`; + isPreviousElementTag = true; + continue; + } + let newIdentation = indentation; + if (newIdentation !== "") { + newIdentation += options.indentBy; + } + const attStr = attr_to_str(tagObj[":@"], options); + const tagStart = indentation + `<${tagName}${attStr}`; + const tagValue = arrToStr(tagObj[tagName], options, newJPath, newIdentation); + if (options.unpairedTags.indexOf(tagName) !== -1) { + if (options.suppressUnpairedNode) + xmlStr += tagStart + ">"; + else + xmlStr += tagStart + "/>"; + } else if ((!tagValue || tagValue.length === 0) && options.suppressEmptyNode) { + xmlStr += tagStart + "/>"; + } else if (tagValue && tagValue.endsWith(">")) { + xmlStr += tagStart + `>${tagValue}${indentation}`; + } else { + xmlStr += tagStart + ">"; + if (tagValue && indentation !== "" && (tagValue.includes("/>") || tagValue.includes("`; + } + isPreviousElementTag = true; + } + return xmlStr; + } + function propName(obj) { + const keys = Object.keys(obj); + for (let i = 0; i < keys.length; i++) { + const key = keys[i]; + if (key !== ":@") + return key; + } + } + function attr_to_str(attrMap, options) { + let attrStr = ""; + if (attrMap && !options.ignoreAttributes) { + for (let attr in attrMap) { + let attrVal = options.attributeValueProcessor(attr, attrMap[attr]); + attrVal = replaceEntitiesValue(attrVal, options); + if (attrVal === true && options.suppressBooleanAttributes) { + attrStr += ` ${attr.substr(options.attributeNamePrefix.length)}`; + } else { + attrStr += ` ${attr.substr(options.attributeNamePrefix.length)}="${attrVal}"`; + } + } + } + return attrStr; + } + function isStopNode(jPath, options) { + jPath = jPath.substr(0, jPath.length - options.textNodeName.length - 1); + let tagName = jPath.substr(jPath.lastIndexOf(".") + 1); + for (let index in options.stopNodes) { + if (options.stopNodes[index] === jPath || options.stopNodes[index] === "*." + tagName) + return true; + } + return false; + } + function replaceEntitiesValue(textValue, options) { + if (textValue && textValue.length > 0 && options.processEntities) { + for (let i = 0; i < options.entities.length; i++) { + const entity = options.entities[i]; + textValue = textValue.replace(entity.regex, entity.val); + } + } + return textValue; + } + module2.exports = toXml; + } +}); + +// node_modules/fast-xml-parser/src/xmlbuilder/json2xml.js +var require_json2xml = __commonJS({ + "node_modules/fast-xml-parser/src/xmlbuilder/json2xml.js"(exports, module2) { + "use strict"; + var buildFromOrderedJs = require_orderedJs2Xml(); + var defaultOptions = { + attributeNamePrefix: "@_", + attributesGroupName: false, + textNodeName: "#text", + ignoreAttributes: true, + cdataPropName: false, + format: false, + indentBy: " ", + suppressEmptyNode: false, + suppressUnpairedNode: true, + suppressBooleanAttributes: true, + tagValueProcessor: function(key, a) { + return a; + }, + attributeValueProcessor: function(attrName, a) { + return a; + }, + preserveOrder: false, + commentPropName: false, + unpairedTags: [], + entities: [ + { regex: new RegExp("&", "g"), val: "&" }, + //it must be on top + { regex: new RegExp(">", "g"), val: ">" }, + { regex: new RegExp("<", "g"), val: "<" }, + { regex: new RegExp("'", "g"), val: "'" }, + { regex: new RegExp('"', "g"), val: """ } + ], + processEntities: true, + stopNodes: [] + // transformTagName: false, + // transformAttributeName: false, + }; + function Builder(options) { + this.options = Object.assign({}, defaultOptions, options); + if (this.options.ignoreAttributes || this.options.attributesGroupName) { + this.isAttribute = function() { + return false; + }; + } else { + this.attrPrefixLen = this.options.attributeNamePrefix.length; + this.isAttribute = isAttribute; + } + this.processTextOrObjNode = processTextOrObjNode; + if (this.options.format) { + this.indentate = indentate; + this.tagEndChar = ">\n"; + this.newLine = "\n"; + } else { + this.indentate = function() { + return ""; + }; + this.tagEndChar = ">"; + this.newLine = ""; + } + } + Builder.prototype.build = function(jObj) { + if (this.options.preserveOrder) { + return buildFromOrderedJs(jObj, this.options); + } else { + if (Array.isArray(jObj) && this.options.arrayNodeName && this.options.arrayNodeName.length > 1) { + jObj = { + [this.options.arrayNodeName]: jObj + }; + } + return this.j2x(jObj, 0).val; + } + }; + Builder.prototype.j2x = function(jObj, level) { + let attrStr = ""; + let val2 = ""; + for (let key in jObj) { + if (typeof jObj[key] === "undefined") { + } else if (jObj[key] === null) { + if (key[0] === "?") + val2 += this.indentate(level) + "<" + key + "?" + this.tagEndChar; + else + val2 += this.indentate(level) + "<" + key + "/" + this.tagEndChar; + } else if (jObj[key] instanceof Date) { + val2 += this.buildTextValNode(jObj[key], key, "", level); + } else if (typeof jObj[key] !== "object") { + const attr = this.isAttribute(key); + if (attr) { + attrStr += this.buildAttrPairStr(attr, "" + jObj[key]); + } else { + if (key === this.options.textNodeName) { + let newval = this.options.tagValueProcessor(key, "" + jObj[key]); + val2 += this.replaceEntitiesValue(newval); + } else { + val2 += this.buildTextValNode(jObj[key], key, "", level); + } + } + } else if (Array.isArray(jObj[key])) { + const arrLen = jObj[key].length; + for (let j = 0; j < arrLen; j++) { + const item = jObj[key][j]; + if (typeof item === "undefined") { + } else if (item === null) { + if (key[0] === "?") + val2 += this.indentate(level) + "<" + key + "?" + this.tagEndChar; + else + val2 += this.indentate(level) + "<" + key + "/" + this.tagEndChar; + } else if (typeof item === "object") { + val2 += this.processTextOrObjNode(item, key, level); + } else { + val2 += this.buildTextValNode(item, key, "", level); + } + } + } else { + if (this.options.attributesGroupName && key === this.options.attributesGroupName) { + const Ks = Object.keys(jObj[key]); + const L = Ks.length; + for (let j = 0; j < L; j++) { + attrStr += this.buildAttrPairStr(Ks[j], "" + jObj[key][Ks[j]]); + } + } else { + val2 += this.processTextOrObjNode(jObj[key], key, level); + } + } + } + return { attrStr, val: val2 }; + }; + Builder.prototype.buildAttrPairStr = function(attrName, val2) { + val2 = this.options.attributeValueProcessor(attrName, "" + val2); + val2 = this.replaceEntitiesValue(val2); + if (this.options.suppressBooleanAttributes && val2 === "true") { + return " " + attrName; + } else + return " " + attrName + '="' + val2 + '"'; + }; + function processTextOrObjNode(object, key, level) { + const result = this.j2x(object, level + 1); + if (object[this.options.textNodeName] !== void 0 && Object.keys(object).length === 1) { + return this.buildTextValNode(object[this.options.textNodeName], key, result.attrStr, level); + } else { + return this.buildObjectNode(result.val, key, result.attrStr, level); + } + } + Builder.prototype.buildObjectNode = function(val2, key, attrStr, level) { + if (val2 === "") { + if (key[0] === "?") + return this.indentate(level) + "<" + key + attrStr + "?" + this.tagEndChar; + else { + return this.indentate(level) + "<" + key + attrStr + this.closeTag(key) + this.tagEndChar; + } + } else { + let tagEndExp = "" + val2 + tagEndExp; + } else if (this.options.commentPropName !== false && key === this.options.commentPropName && piClosingChar.length === 0) { + return this.indentate(level) + `` + this.newLine; + } else { + return this.indentate(level) + "<" + key + attrStr + piClosingChar + this.tagEndChar + val2 + this.indentate(level) + tagEndExp; + } + } + }; + Builder.prototype.closeTag = function(key) { + let closeTag = ""; + if (this.options.unpairedTags.indexOf(key) !== -1) { + if (!this.options.suppressUnpairedNode) + closeTag = "/"; + } else if (this.options.suppressEmptyNode) { + closeTag = "/"; + } else { + closeTag = `>` + this.newLine; + } else if (this.options.commentPropName !== false && key === this.options.commentPropName) { + return this.indentate(level) + `` + this.newLine; + } else if (key[0] === "?") { + return this.indentate(level) + "<" + key + attrStr + "?" + this.tagEndChar; + } else { + let textValue = this.options.tagValueProcessor(key, val2); + textValue = this.replaceEntitiesValue(textValue); + if (textValue === "") { + return this.indentate(level) + "<" + key + attrStr + this.closeTag(key) + this.tagEndChar; + } else { + return this.indentate(level) + "<" + key + attrStr + ">" + textValue + " 0 && this.options.processEntities) { + for (let i = 0; i < this.options.entities.length; i++) { + const entity = this.options.entities[i]; + textValue = textValue.replace(entity.regex, entity.val); + } + } + return textValue; + }; + function indentate(level) { + return this.options.indentBy.repeat(level); + } + function isAttribute(name) { + if (name.startsWith(this.options.attributeNamePrefix)) { + return name.substr(this.attrPrefixLen); + } else { + return false; + } + } + module2.exports = Builder; + } +}); + +// node_modules/fast-xml-parser/src/fxp.js +var require_fxp = __commonJS({ + "node_modules/fast-xml-parser/src/fxp.js"(exports, module2) { + "use strict"; + var validator = require_validator(); + var XMLParser2 = require_XMLParser(); + var XMLBuilder = require_json2xml(); + module2.exports = { + XMLParser: XMLParser2, + XMLValidator: validator, + XMLBuilder + }; + } +}); + +// src/index.ts +var src_exports = {}; +__export(src_exports, { + run: () => run +}); +module.exports = __toCommonJS(src_exports); + +// node_modules/source-map-support/register.js +require_source_map_support().install(); + +// src/index.ts +var core5 = __toESM(require_core()); + +// src/inputParser.ts +var core = __toESM(require_core()); +var InvalidGithubTokenError = class extends Error { +}; +function parseInputs() { + core.startGroup(`\u{1F4D6} Parsing input values`); + const token = core.getInput("github_token") || process.env.GITHUB_TOKEN; + if (!token) { + throw new InvalidGithubTokenError("\u274C A token is required to execute this action"); + } + const values = { + token, + commit: core.getInput("commit"), + jobName: core.getInput("job_name"), + summary: core.getMultilineInput("summary"), + checkName: core.getMultilineInput("check_name"), + reportPaths: core.getMultilineInput("report_paths"), + updateCheck: core.getInput("update_check") === "true", + requireTests: core.getInput("require_tests") === "true", + failOnFailure: core.getInput("fail_on_failure") === "true", + projectTokenDictionary: core.getMultilineInput("project_api_key_map") + }; + core.debug(JSON.stringify(values, void 0, 4)); + core.endGroup(); + return values; +} + +// src/junitParser.ts +var fs = __toESM(require("fs")); +var core3 = __toESM(require_core()); +var glob = __toESM(require_glob()); +var github = __toESM(require_github()); +var import_fast_xml_parser = __toESM(require_fxp()); + +// src/utils.ts +var core2 = __toESM(require_core()); +var http = __toESM(require_lib()); +function retrieve(name, items, index, total) { + if (total > 1) { + if (items.length !== 0 && items.length !== total) { + core2.warning(`${name} has a different number of items than the 'reportPaths' input. This is usually a bug.`); + } + if (items.length === 0) { + return ""; + } else if (items.length === 1) { + return items[0].replace("\n", ""); + } else if (items.length > index) { + return items[index].replace("\n", ""); + } else { + core2.error(`${name} has no valid config for position ${index}.`); + return ""; + } + } else if (items.length === 1) { + return items[0].replace("\n", ""); + } else { + return ""; + } +} +function escapeEmoji(input) { + const regex = /[\u{1f300}-\u{1f5ff}\u{1f900}-\u{1f9ff}\u{1f600}-\u{1f64f}\u{1f680}-\u{1f6ff}\u{2600}-\u{26ff}\u{2700}-\u{27bf}\u{1f1e6}-\u{1f1ff}\u{1f191}-\u{1f251}\u{1f004}\u{1f0cf}\u{1f170}-\u{1f171}\u{1f17e}-\u{1f17f}\u{1f18e}\u{3030}\u{2b50}\u{2b55}\u{2934}-\u{2935}\u{2b05}-\u{2b07}\u{2b1b}-\u{2b1c}\u{3297}\u{3299}\u{303d}\u{00a9}\u{00ae}\u{2122}\u{23f3}\u{24c2}\u{23e9}-\u{23ef}\u{25b6}\u{23f8}-\u{23fa}]/gu; + return input.replace(regex, ``); +} +function castArray(value) { + return Array.isArray(value) ? value : [value]; +} +function findMatchingOption(message, ...strings) { + for (const str2 of strings) { + const index2 = message.indexOf(str2); + if (index2 > -1) { + return { index: index2, length: str2.length }; + } + } + const str = strings.at(-1); + const index = str ? message.indexOf(str) : -1; + return { index, length: (str == null ? void 0 : str.length) || 0 }; +} +function parseTestimFailureMessage(textContent) { + const https = "https://"; + const urlLocation = findMatchingOption(textContent, `More info at: ${https}`, `aborted${https}`, `: ${https}`); + const msgSubstringLength = urlLocation.length - https.length; + const message = textContent.substring(0, urlLocation.index + msgSubstringLength); + const link = `https://${textContent.substring(message.length).split("https://").at(1)}`; + return `${message} +${link}`; +} +function getTestimSuiteDetails(testCases) { + const testimResult = testCases.find(({ ["system-out"]: syso }) => syso == null ? void 0 : syso.includes("https://app.testim.io/#/project")); + const urlParts = testimResult == null ? void 0 : testimResult["system-out"].match(/\/project\/(?.*)\/branch\/(?.*)\/test/); + if (!(urlParts == null ? void 0 : urlParts.groups)) { + return {}; + } + const { projectId, branch } = urlParts.groups; + return { projectId, branch }; +} +function parseProjectTokenDictionary(projectTokenDictionaryStrs) { + const entries = projectTokenDictionaryStrs.map((str) => str.split(":").map((val2) => val2.trim())).filter(([key, value, ...rest]) => !rest.length || key && value); + return Object.fromEntries(entries); +} +var httpClient = new http.HttpClient(); +var projectBranchTestStatusMap = /* @__PURE__ */ new Map(); +async function getTestStatusesFromPublicAPI(testCases, projectTokenDictionaryStrs) { + const { branch, projectId } = getTestimSuiteDetails(testCases); + const projectTokenDictionary = parseProjectTokenDictionary(projectTokenDictionaryStrs); + if (!branch || !projectId || !projectTokenDictionary[projectId]) { + return []; + } + const mapKey = `${projectId}_${branch}`; + if (projectBranchTestStatusMap.has(mapKey)) { + return await projectBranchTestStatusMap.get(mapKey); + } + const loadTestList = async () => { + const res = await httpClient.get(`https://api.testim.io/tests?branch=${branch}&includeTestStatus=true`, { + Authorization: `Bearer ${projectTokenDictionary[projectId]}`, + "Content-Type": "application/json" + }); + const { tests, error: error3 } = JSON.parse(await res.readBody()); + if (error3) { + throw new Error(error3); + } + return tests; + }; + const testListPerProjectAndBranch = loadTestList(); + projectBranchTestStatusMap.set(mapKey, testListPerProjectAndBranch); + return await testListPerProjectAndBranch; +} + +// src/junitParser.ts +async function parseFile(file, projectTokenDictionaryStrs) { + core3.debug(`Parsing file ${file}`); + const data = fs.readFileSync(file, "utf8"); + const parser = new import_fast_xml_parser.XMLParser({ allowBooleanAttributes: true, ignoreAttributes: false, attributeNamePrefix: "" }); + const report = parser.parse(data); + return parseSuite(report, file, projectTokenDictionaryStrs); +} +async function parseSuite(report, fileName, projectTokenDictionaryStrs) { + var _a, _b, _c; + const testsuite = report.testsuite || ((_a = report.testsuites) == null ? void 0 : _a.testsuite); + const result = { fileName, name: testsuite == null ? void 0 : testsuite.name, totalCount: 0, skipped: 0, failedEvaluating: parseInt((testsuite == null ? void 0 : testsuite["failure-evaluating"]) || "0") || 0, annotations: [] }; + if (!(testsuite == null ? void 0 : testsuite.testcase)) { + return result; + } + const testCases = castArray(testsuite.testcase); + const testListInfo = await getTestStatusesFromPublicAPI(testCases, projectTokenDictionaryStrs); + for (const { failure, skipped, name, ["system-out"]: systemOut, classname } of testCases) { + result.totalCount++; + const success = !failure; + if (typeof skipped !== "undefined") { + result.skipped++; + } + const isTestimTest = systemOut == null ? void 0 : systemOut.startsWith("https://app.testim.io/#/project"); + const { testId } = ((_b = systemOut == null ? void 0 : systemOut.match(/\/test\/(?.*)\?/)) == null ? void 0 : _b.groups) || {}; + const testStatus = testId && ((_c = testListInfo == null ? void 0 : testListInfo.find(({ _id }) => _id === testId)) == null ? void 0 : _c.testStatus) || "draft"; + let annotation_level = "notice"; + if (!success) { + annotation_level = testStatus === "evaluating" ? "warning" : "failure"; + } + result.annotations.push({ + testStatus, + isTestimTest, + annotation_level, + title: escapeEmoji(isTestimTest ? name : `${classname} - ${name}`), + message: isTestimTest ? failure ? parseTestimFailureMessage(failure.message) : systemOut : (failure == null ? void 0 : failure.toString()) || "", + raw_details: `${escapeEmoji(classname)} - ${name}: +(${failure == null ? void 0 : failure.message})`, + path: systemOut || "unknown", + end_line: 1, + start_line: 1 + }); + } + return result; +} +async function parseTestReports(checkName, summary2, reportPathsGlob, projectTokenDictionaryStrs) { + core3.debug(`Process test report for: ${reportPathsGlob} (${checkName})`); + const testResults = []; + const globber = await glob.create(reportPathsGlob); + for await (const file of globber.globGenerator()) { + core3.debug(`Parsing report file: ${file}`); + const { totalCount, skipped, annotations, failedEvaluating, name, fileName } = await parseFile(file, projectTokenDictionaryStrs); + if (totalCount === 0) { + continue; + } + const failed = annotations.filter((an) => an.annotation_level !== "notice").length; + const passed = totalCount - failed - skipped; + testResults.push({ + summary: summary2, + checkName: name || checkName, + fileName, + totalCount, + skipped, + failedEvaluating, + annotations, + failed, + passed + }); + } + return testResults; +} +var NoTestsFoundError = class extends Error { +}; +async function getTestReports(inputs) { + core3.startGroup(`\u{1F4E6} Process test results`); + const reportsCount = inputs.reportPaths.length; + core3.info(`Retrieved ${reportsCount} report globs/files to process.`); + const allResults = await Promise.all( + inputs.reportPaths.map( + async (_, i) => parseTestReports( + retrieve("checkName", inputs.checkName, i, reportsCount), + retrieve("summary", inputs.summary, i, reportsCount), + retrieve("reportPaths", inputs.reportPaths, i, reportsCount), + inputs.projectTokenDictionary + ) + ) + ); + const testResults = allResults.flat(); + const accumulatedResult = { + checkName: "", + fileName: "", + summary: "", + totalCount: 0, + skipped: 0, + failed: 0, + passed: 0, + failedEvaluating: 0, + annotations: [] + }; + for (const tr of testResults) { + accumulatedResult.totalCount += tr.totalCount; + accumulatedResult.skipped += tr.skipped; + accumulatedResult.failed += tr.failed; + accumulatedResult.passed += tr.passed; + accumulatedResult.failedEvaluating += tr.failedEvaluating; + accumulatedResult.annotations.push(...tr.annotations); + } + core3.setOutput("total", accumulatedResult.totalCount); + core3.setOutput("passed", accumulatedResult.passed); + core3.setOutput("skipped", accumulatedResult.skipped); + core3.setOutput("failed", accumulatedResult.failed); + core3.setOutput("failedEvaluating", accumulatedResult.failedEvaluating); + const foundResults = accumulatedResult.totalCount > 0 || accumulatedResult.skipped > 0; + if (!foundResults && inputs.requireTests) { + throw new NoTestsFoundError(`\u274C No test results found for ${inputs.checkName}`); + } + const pullRequest = github.context.payload.pull_request; + const link = (pullRequest == null ? void 0 : pullRequest.html_url) || github.context.ref; + const actualFailed = accumulatedResult.failed - accumulatedResult.failedEvaluating; + const conclusion = actualFailed <= 0 ? "success" : "failure"; + const headSha = inputs.commit || (pullRequest == null ? void 0 : pullRequest.head.sha) || github.context.sha; + core3.info(`\u2139\uFE0F Posting with conclusion '${conclusion}' to ${link} (sha: ${headSha})`); + core3.endGroup(); + return { + accumulatedResult, + testResults, + conclusion, + headSha + }; +} + +// src/messageBuilder.ts +var core4 = __toESM(require_core()); +var github2 = __toESM(require_github()); +async function annotateTestResult(testResult, token, headSha, updateCheck, jobName) { + const annotations = testResult.annotations.filter((annotation) => annotation.annotation_level !== "notice"); + const foundResults = testResult.totalCount > 0 || testResult.skipped > 0; + let title = "No test results found!"; + if (foundResults) { + title = `${testResult.totalCount} tests run, ${testResult.passed} passed, ${testResult.skipped} skipped, ${testResult.failed} failed (${testResult.failedEvaluating} failed evaluating).`; + } + core4.info(`\u2139\uFE0F - ${testResult.checkName} - ${title}`); + const actualFailed = testResult.failed - testResult.failedEvaluating; + const conclusion = actualFailed <= 0 ? "success" : "failure"; + for (const annotation of annotations) { + core4.info(` \u{1F9EA} - ${annotation.message.split("\n", 1)[0]}`); + } + const octokit = github2.getOctokit(token); + if (updateCheck) { + const checks = await octokit.rest.checks.listForRef({ + ...github2.context.repo, + ref: headSha, + check_name: jobName, + status: "in_progress", + filter: "latest" + }); + core4.debug(JSON.stringify(checks, null, 2)); + const check_run_id = checks.data.check_runs[0].id; + core4.info(`\u2139\uFE0F - ${testResult.checkName} - Updating checks ${annotations.length}`); + for (let i = 0; i < annotations.length; i = i + 50) { + const sliced = annotations.slice(i, i + 50); + const updateCheckRequest = { + ...github2.context.repo, + check_run_id, + output: { + title, + summary: testResult.summary, + annotations: sliced + } + }; + core4.debug(JSON.stringify(updateCheckRequest, null, 2)); + await octokit.rest.checks.update(updateCheckRequest); + } + } else { + const createCheckRequest = { + ...github2.context.repo, + name: testResult.checkName, + head_sha: headSha, + status: "completed", + conclusion, + output: { + title, + summary: testResult.summary, + annotations: annotations.slice(0, 50) + } + }; + core4.debug(JSON.stringify(createCheckRequest, null, 2)); + core4.info(`\u2139\uFE0F - ${testResult.checkName} - Creating check for`); + await octokit.rest.checks.create(createCheckRequest); + } +} +var statusToColorDictionary = { + draft: "\u{1F535}", + active: "\u{1F7E2}", + quarantine: "\u{1F534}", + evaluating: "\u{1F7E1}" +}; +async function attachSummary(accumulatedResult, testResults) { + const table = [ + [ + { data: "Name", header: true }, + { data: "Tests", header: true }, + { data: "Passed \u2705", header: true }, + { data: "Skipped \u21AA\uFE0F", header: true }, + { data: "Failed \u274C", header: true }, + { data: "Failed Evaluating \u26A0\uFE0F", header: true } + ] + ]; + const detailsTable = [ + [ + { data: "Suite", header: true }, + { data: "Test", header: true }, + { data: "Result", header: true }, + { data: "Test Status", header: true } + ] + ]; + const hasAnnotations = accumulatedResult.annotations.some((annotation) => annotation.annotation_level !== "notice"); + if (!hasAnnotations) { + detailsTable.push([`-`, `No test annotations available`, `-`, "-"]); + } + for (const testResult of testResults) { + table.push([ + `${testResult.checkName}`, + `${testResult.totalCount} run`, + `${testResult.passed} passed`, + `${testResult.skipped} skipped`, + `${testResult.failed} failed`, + `${testResult.failedEvaluating} failed evaluating` + ]); + const annotations = hasAnnotations ? testResult.annotations.filter((annotation) => annotation.annotation_level !== "notice") : []; + for (const annotation of annotations) { + const color = statusToColorDictionary[annotation.testStatus]; + detailsTable.push([ + `${testResult.checkName}`, + `${annotation.title}`, + `${annotation.annotation_level === "notice" ? "\u2705 pass" : `\u274C ${annotation.annotation_level}`}`, + annotation.isTestimTest ? `${color} ${annotation.testStatus}` : "-" + ]); + } + } + if (testResults.length > 1) { + table.push([ + "Total", + `${accumulatedResult.totalCount} run`, + `${accumulatedResult.passed} passed`, + `${accumulatedResult.skipped} skipped`, + `${accumulatedResult.failed} failed`, + `${accumulatedResult.failedEvaluating} failed evaluating` + ]); + } + await core4.summary.addHeading("Overall").addTable(table).addSeparator().addHeading("Details").addTable(detailsTable).write(); +} +async function publishAnnotations(inputs, { accumulatedResult, testResults, conclusion, headSha }) { + try { + for (const testResult of testResults) { + await annotateTestResult(testResult, inputs.token, headSha, inputs.updateCheck, inputs.jobName); + } + } catch (error3) { + core4.error(`\u274C Failed creating a check using the provided token. (${error3})`); + core4.warning( + `\u26A0\uFE0F This usually indicates insufficient permissions. More details: https://docs.github.com/en/actions/security-guides/automatic-token-authentication#permissions-for-the-github_token` + ); + } + const supportsJobSummary = process.env["GITHUB_STEP_SUMMARY"]; + if (supportsJobSummary) { + try { + await attachSummary(accumulatedResult, testResults); + } catch (error3) { + core4.error(`\u274C Failed to set the summary using the provided token. (${error3})`); + } + } else { + core4.warning(`\u26A0\uFE0F Your environment seems to not support job summaries.`); + } + if (inputs.failOnFailure && conclusion === "failure") { + core4.setFailed(`\u274C Tests reported ${accumulatedResult.failed} failures`); + } +} +function buildTableBasedOnPreviousTable(commentBody, accumulatedResult) { + const currentJobRow = [ + github2.context.job, + `${accumulatedResult.totalCount} run`, + `${accumulatedResult.passed} passed`, + `${accumulatedResult.skipped} skipped`, + `${accumulatedResult.failed} failed`, + `${accumulatedResult.failedEvaluating} failed evaluating` + ]; + if (!commentBody) { + return [ + [ + { data: "Job Name", header: true }, + { data: "Tests", header: true }, + { data: "Passed \u2705", header: true }, + { data: "Skipped \u21AA\uFE0F", header: true }, + { data: "Failed \u274C", header: true }, + { data: "Failed Evaluating \u26A0\uFE0F", header: true } + ], + currentJobRow + ]; + } + const previousTable = commentBody.split("")[1].replace(/<\/(table|tr|td|th)>/g, "").split("").filter(Boolean).map((tr) => tr.replace(/td|th/g, "").split("<>").filter(Boolean)); + const header = previousTable.shift().map((data) => ({ data, header: true })); + const rowOfCurrentJob = previousTable.find((tr) => tr[0] === github2.context.job); + if (rowOfCurrentJob) { + rowOfCurrentJob[1] = `${accumulatedResult.totalCount} run`; + rowOfCurrentJob[2] = `${accumulatedResult.passed} passed`; + rowOfCurrentJob[3] = `${accumulatedResult.skipped} skipped`; + rowOfCurrentJob[4] = `${accumulatedResult.failed} failed`; + rowOfCurrentJob[5] = `${accumulatedResult.failedEvaluating} failed evaluating`; + } else { + previousTable.push(currentJobRow); + } + return [header, ...previousTable]; +} +async function publishCommentOnPullRequest(token, { accumulatedResult, testResults, conclusion, headSha }) { + const pullRequest = github2.context.payload.pull_request; + if (!pullRequest) { + return; + } + const prNumber = pullRequest.number; + core4.info(`\u2139\uFE0F - Got PR number ${prNumber} with SHA: ${headSha}`); + const octokit = github2.getOctokit(token); + const commentsSearch = await octokit.rest.issues.listComments({ + ...github2.context.repo, + issue_number: prNumber + }); + core4.info(`\u2139\uFE0F - found ${commentsSearch.data.length} comments at ${commentsSearch.url} with status ${commentsSearch.status}`); + const comments = commentsSearch.data.filter(({ user, body: body2 }) => (user == null ? void 0 : user.login) === "github-actions[bot]" && (body2 == null ? void 0 : body2.startsWith('

'))); + core4.info(`\u2139\uFE0F - found ${comments.length} comments by github-actions, starting with correct HTML`); + const comment = comments.at(-1); + const comment_id = comment == null ? void 0 : comment.id; + const table = buildTableBasedOnPreviousTable(comment == null ? void 0 : comment.body, accumulatedResult); + const tableMapper = (row) => `

${row.map(rowMapper).join("")}`; + const rowMapper = (row) => { + const htmlElement = typeof row === "string" || !row.header ? "td" : "th"; + return `<${htmlElement}>${typeof row === "string" ? row : row.data}`; + }; + const tableHTML = `
${table.map(tableMapper).join("")}
`; + const title = `

Test Result Summary ${conclusion === "success" ? "\u2705" : "\u274C"}

`; + const seeFullDetailsLink = `See full run details.`; + const summary2 = `Parsed ${testResults.length} JUnit files, and has ended with status ${conclusion} ${seeFullDetailsLink}`; + const body = `${title}
${summary2}

${tableHTML}`; + if (comment_id) { + core4.info(`\u2139\uFE0F - Updating existing comment: ${comment_id} on PR: #${prNumber}`); + await octokit.rest.issues.updateComment({ ...github2.context.repo, comment_id, body }); + } else { + core4.info(`\u2139\uFE0F - Publishing new comment on PR: #${prNumber}`); + await octokit.rest.issues.createComment({ ...github2.context.repo, issue_number: prNumber, body }); + } +} + +// src/index.ts +async function run() { + try { + const inputs = parseInputs(); + const reports = await getTestReports(inputs); + core5.startGroup(`\u{1F680} Publish results`); + await publishAnnotations(inputs, reports); + await publishCommentOnPullRequest(inputs.token, reports); + core5.endGroup(); + } catch (error3) { + core5.setFailed(error3.message); + } +} +run(); +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + run +}); +/*! Bundled license information: + +is-plain-object/dist/is-plain-object.js: + (*! + * is-plain-object + * + * Copyright (c) 2014-2017, Jon Schlinkert. + * Released under the MIT License. + *) +*/ +//# sourceMappingURL=index.js.map diff --git a/lib/index.js.map b/lib/index.js.map new file mode 100644 index 0000000..c600f48 --- /dev/null +++ b/lib/index.js.map @@ -0,0 +1,7 @@ +{ + "version": 3, + "sources": ["../node_modules/source-map/lib/base64.js", "../node_modules/source-map/lib/base64-vlq.js", "../node_modules/source-map/lib/util.js", "../node_modules/source-map/lib/array-set.js", "../node_modules/source-map/lib/mapping-list.js", "../node_modules/source-map/lib/source-map-generator.js", "../node_modules/source-map/lib/binary-search.js", "../node_modules/source-map/lib/quick-sort.js", "../node_modules/source-map/lib/source-map-consumer.js", "../node_modules/source-map/lib/source-node.js", "../node_modules/source-map/source-map.js", "../node_modules/buffer-from/index.js", "../node_modules/source-map-support/source-map-support.js", "../node_modules/@actions/core/src/utils.ts", "../node_modules/@actions/core/src/command.ts", "../node_modules/uuid/dist/esm-node/rng.js", "../node_modules/uuid/dist/esm-node/regex.js", "../node_modules/uuid/dist/esm-node/validate.js", "../node_modules/uuid/dist/esm-node/stringify.js", "../node_modules/uuid/dist/esm-node/v1.js", "../node_modules/uuid/dist/esm-node/parse.js", "../node_modules/uuid/dist/esm-node/v35.js", "../node_modules/uuid/dist/esm-node/md5.js", "../node_modules/uuid/dist/esm-node/v3.js", "../node_modules/uuid/dist/esm-node/v4.js", "../node_modules/uuid/dist/esm-node/sha1.js", "../node_modules/uuid/dist/esm-node/v5.js", "../node_modules/uuid/dist/esm-node/nil.js", "../node_modules/uuid/dist/esm-node/version.js", "../node_modules/uuid/dist/esm-node/index.js", "../node_modules/@actions/core/src/file-command.ts", "../node_modules/@actions/http-client/src/proxy.ts", "../node_modules/tunnel/lib/tunnel.js", "../node_modules/tunnel/index.js", "../node_modules/@actions/http-client/src/index.ts", "../node_modules/@actions/http-client/src/auth.ts", "../node_modules/@actions/core/src/oidc-utils.ts", "../node_modules/@actions/core/src/summary.ts", "../node_modules/@actions/core/src/path-utils.ts", "../node_modules/@actions/core/src/core.ts", "../node_modules/@actions/glob/src/internal-glob-options-helper.ts", "../node_modules/@actions/glob/src/internal-path-helper.ts", "../node_modules/@actions/glob/src/internal-match-kind.ts", "../node_modules/@actions/glob/src/internal-pattern-helper.ts", "../node_modules/concat-map/index.js", "../node_modules/balanced-match/index.js", "../node_modules/brace-expansion/index.js", "../node_modules/minimatch/minimatch.js", "../node_modules/@actions/glob/src/internal-path.ts", "../node_modules/@actions/glob/src/internal-pattern.ts", "../node_modules/@actions/glob/src/internal-search-state.ts", "../node_modules/@actions/glob/src/internal-globber.ts", "../node_modules/@actions/glob/src/internal-hash-files.ts", "../node_modules/@actions/glob/src/glob.ts", "../node_modules/@actions/github/src/context.ts", "../node_modules/@actions/github/src/internal/utils.ts", "../node_modules/universal-user-agent/dist-src/index.js", "../node_modules/before-after-hook/lib/register.js", "../node_modules/before-after-hook/lib/add.js", "../node_modules/before-after-hook/lib/remove.js", "../node_modules/before-after-hook/index.js", "../node_modules/is-plain-object/dist/is-plain-object.js", "../node_modules/@octokit/endpoint/dist-src/util/lowercase-keys.js", "../node_modules/@octokit/endpoint/dist-src/util/merge-deep.js", "../node_modules/@octokit/endpoint/dist-src/util/remove-undefined-properties.js", "../node_modules/@octokit/endpoint/dist-src/merge.js", "../node_modules/@octokit/endpoint/dist-src/util/add-query-parameters.js", "../node_modules/@octokit/endpoint/dist-src/util/extract-url-variable-names.js", "../node_modules/@octokit/endpoint/dist-src/util/omit.js", "../node_modules/@octokit/endpoint/dist-src/util/url-template.js", "../node_modules/@octokit/endpoint/dist-src/parse.js", "../node_modules/@octokit/endpoint/dist-src/endpoint-with-defaults.js", "../node_modules/@octokit/endpoint/dist-src/with-defaults.js", "../node_modules/@octokit/endpoint/dist-src/version.js", "../node_modules/@octokit/endpoint/dist-src/defaults.js", "../node_modules/@octokit/endpoint/dist-src/index.js", "../node_modules/webidl-conversions/lib/index.js", "../node_modules/whatwg-url/lib/utils.js", "../node_modules/tr46/lib/mappingTable.json", "../node_modules/tr46/index.js", "../node_modules/whatwg-url/lib/url-state-machine.js", "../node_modules/whatwg-url/lib/URL-impl.js", "../node_modules/whatwg-url/lib/URL.js", "../node_modules/whatwg-url/lib/public-api.js", "../node_modules/node-fetch/lib/index.js", "../node_modules/deprecation/dist-node/index.js", "../node_modules/wrappy/wrappy.js", "../node_modules/once/once.js", "../node_modules/@octokit/request-error/dist-src/index.js", "../node_modules/@octokit/request/dist-src/version.js", "../node_modules/@octokit/request/dist-src/get-buffer-response.js", "../node_modules/@octokit/request/dist-src/fetch-wrapper.js", "../node_modules/@octokit/request/dist-src/with-defaults.js", "../node_modules/@octokit/request/dist-src/index.js", "../node_modules/@octokit/graphql/dist-src/version.js", "../node_modules/@octokit/graphql/dist-src/error.js", "../node_modules/@octokit/graphql/dist-src/graphql.js", "../node_modules/@octokit/graphql/dist-src/with-defaults.js", "../node_modules/@octokit/graphql/dist-src/index.js", "../node_modules/@octokit/auth-token/dist-src/auth.js", "../node_modules/@octokit/auth-token/dist-src/with-authorization-prefix.js", "../node_modules/@octokit/auth-token/dist-src/hook.js", "../node_modules/@octokit/auth-token/dist-src/index.js", "../node_modules/@octokit/core/dist-src/version.js", "../node_modules/@octokit/core/dist-src/index.js", "../node_modules/@octokit/plugin-rest-endpoint-methods/dist-src/generated/endpoints.js", "../node_modules/@octokit/plugin-rest-endpoint-methods/dist-src/version.js", "../node_modules/@octokit/plugin-rest-endpoint-methods/dist-src/endpoints-to-methods.js", "../node_modules/@octokit/plugin-rest-endpoint-methods/dist-src/index.js", "../node_modules/@octokit/plugin-paginate-rest/dist-src/version.js", "../node_modules/@octokit/plugin-paginate-rest/dist-src/normalize-paginated-list-response.js", "../node_modules/@octokit/plugin-paginate-rest/dist-src/iterator.js", "../node_modules/@octokit/plugin-paginate-rest/dist-src/paginate.js", "../node_modules/@octokit/plugin-paginate-rest/dist-src/compose-paginate.js", "../node_modules/@octokit/plugin-paginate-rest/dist-src/generated/paginating-endpoints.js", "../node_modules/@octokit/plugin-paginate-rest/dist-src/paginating-endpoints.js", "../node_modules/@octokit/plugin-paginate-rest/dist-src/index.js", "../node_modules/@actions/github/src/utils.ts", "../node_modules/@actions/github/src/github.ts", "../node_modules/fast-xml-parser/src/util.js", "../node_modules/fast-xml-parser/src/validator.js", "../node_modules/fast-xml-parser/src/xmlparser/OptionsBuilder.js", "../node_modules/fast-xml-parser/src/xmlparser/xmlNode.js", "../node_modules/fast-xml-parser/src/xmlparser/DocTypeReader.js", "../node_modules/strnum/strnum.js", "../node_modules/fast-xml-parser/src/xmlparser/OrderedObjParser.js", "../node_modules/fast-xml-parser/src/xmlparser/node2json.js", "../node_modules/fast-xml-parser/src/xmlparser/XMLParser.js", "../node_modules/fast-xml-parser/src/xmlbuilder/orderedJs2Xml.js", "../node_modules/fast-xml-parser/src/xmlbuilder/json2xml.js", "../node_modules/fast-xml-parser/src/fxp.js", "../src/index.ts", "../node_modules/source-map-support/register.js", "../src/inputParser.ts", "../src/junitParser.ts", "../src/utils.ts", "../src/messageBuilder.ts"], + "sourcesContent": ["/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar intToCharMap = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'.split('');\n\n/**\n * Encode an integer in the range of 0 to 63 to a single base 64 digit.\n */\nexports.encode = function (number) {\n if (0 <= number && number < intToCharMap.length) {\n return intToCharMap[number];\n }\n throw new TypeError(\"Must be between 0 and 63: \" + number);\n};\n\n/**\n * Decode a single base 64 character code digit to an integer. Returns -1 on\n * failure.\n */\nexports.decode = function (charCode) {\n var bigA = 65; // 'A'\n var bigZ = 90; // 'Z'\n\n var littleA = 97; // 'a'\n var littleZ = 122; // 'z'\n\n var zero = 48; // '0'\n var nine = 57; // '9'\n\n var plus = 43; // '+'\n var slash = 47; // '/'\n\n var littleOffset = 26;\n var numberOffset = 52;\n\n // 0 - 25: ABCDEFGHIJKLMNOPQRSTUVWXYZ\n if (bigA <= charCode && charCode <= bigZ) {\n return (charCode - bigA);\n }\n\n // 26 - 51: abcdefghijklmnopqrstuvwxyz\n if (littleA <= charCode && charCode <= littleZ) {\n return (charCode - littleA + littleOffset);\n }\n\n // 52 - 61: 0123456789\n if (zero <= charCode && charCode <= nine) {\n return (charCode - zero + numberOffset);\n }\n\n // 62: +\n if (charCode == plus) {\n return 62;\n }\n\n // 63: /\n if (charCode == slash) {\n return 63;\n }\n\n // Invalid base64 digit.\n return -1;\n};\n", "/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n *\n * Based on the Base 64 VLQ implementation in Closure Compiler:\n * https://code.google.com/p/closure-compiler/source/browse/trunk/src/com/google/debugging/sourcemap/Base64VLQ.java\n *\n * Copyright 2011 The Closure Compiler Authors. All rights reserved.\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are\n * met:\n *\n * * Redistributions of source code must retain the above copyright\n * notice, this list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above\n * copyright notice, this list of conditions and the following\n * disclaimer in the documentation and/or other materials provided\n * with the distribution.\n * * Neither the name of Google Inc. nor the names of its\n * contributors may be used to endorse or promote products derived\n * from this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n * \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nvar base64 = require('./base64');\n\n// A single base 64 digit can contain 6 bits of data. For the base 64 variable\n// length quantities we use in the source map spec, the first bit is the sign,\n// the next four bits are the actual value, and the 6th bit is the\n// continuation bit. The continuation bit tells us whether there are more\n// digits in this value following this digit.\n//\n// Continuation\n// | Sign\n// | |\n// V V\n// 101011\n\nvar VLQ_BASE_SHIFT = 5;\n\n// binary: 100000\nvar VLQ_BASE = 1 << VLQ_BASE_SHIFT;\n\n// binary: 011111\nvar VLQ_BASE_MASK = VLQ_BASE - 1;\n\n// binary: 100000\nvar VLQ_CONTINUATION_BIT = VLQ_BASE;\n\n/**\n * Converts from a two-complement value to a value where the sign bit is\n * placed in the least significant bit. For example, as decimals:\n * 1 becomes 2 (10 binary), -1 becomes 3 (11 binary)\n * 2 becomes 4 (100 binary), -2 becomes 5 (101 binary)\n */\nfunction toVLQSigned(aValue) {\n return aValue < 0\n ? ((-aValue) << 1) + 1\n : (aValue << 1) + 0;\n}\n\n/**\n * Converts to a two-complement value from a value where the sign bit is\n * placed in the least significant bit. For example, as decimals:\n * 2 (10 binary) becomes 1, 3 (11 binary) becomes -1\n * 4 (100 binary) becomes 2, 5 (101 binary) becomes -2\n */\nfunction fromVLQSigned(aValue) {\n var isNegative = (aValue & 1) === 1;\n var shifted = aValue >> 1;\n return isNegative\n ? -shifted\n : shifted;\n}\n\n/**\n * Returns the base 64 VLQ encoded value.\n */\nexports.encode = function base64VLQ_encode(aValue) {\n var encoded = \"\";\n var digit;\n\n var vlq = toVLQSigned(aValue);\n\n do {\n digit = vlq & VLQ_BASE_MASK;\n vlq >>>= VLQ_BASE_SHIFT;\n if (vlq > 0) {\n // There are still more digits in this value, so we must make sure the\n // continuation bit is marked.\n digit |= VLQ_CONTINUATION_BIT;\n }\n encoded += base64.encode(digit);\n } while (vlq > 0);\n\n return encoded;\n};\n\n/**\n * Decodes the next base 64 VLQ value from the given string and returns the\n * value and the rest of the string via the out parameter.\n */\nexports.decode = function base64VLQ_decode(aStr, aIndex, aOutParam) {\n var strLen = aStr.length;\n var result = 0;\n var shift = 0;\n var continuation, digit;\n\n do {\n if (aIndex >= strLen) {\n throw new Error(\"Expected more digits in base 64 VLQ value.\");\n }\n\n digit = base64.decode(aStr.charCodeAt(aIndex++));\n if (digit === -1) {\n throw new Error(\"Invalid base64 digit: \" + aStr.charAt(aIndex - 1));\n }\n\n continuation = !!(digit & VLQ_CONTINUATION_BIT);\n digit &= VLQ_BASE_MASK;\n result = result + (digit << shift);\n shift += VLQ_BASE_SHIFT;\n } while (continuation);\n\n aOutParam.value = fromVLQSigned(result);\n aOutParam.rest = aIndex;\n};\n", "/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\n/**\n * This is a helper function for getting values from parameter/options\n * objects.\n *\n * @param args The object we are extracting values from\n * @param name The name of the property we are getting.\n * @param defaultValue An optional value to return if the property is missing\n * from the object. If this is not specified and the property is missing, an\n * error will be thrown.\n */\nfunction getArg(aArgs, aName, aDefaultValue) {\n if (aName in aArgs) {\n return aArgs[aName];\n } else if (arguments.length === 3) {\n return aDefaultValue;\n } else {\n throw new Error('\"' + aName + '\" is a required argument.');\n }\n}\nexports.getArg = getArg;\n\nvar urlRegexp = /^(?:([\\w+\\-.]+):)?\\/\\/(?:(\\w+:\\w+)@)?([\\w.-]*)(?::(\\d+))?(.*)$/;\nvar dataUrlRegexp = /^data:.+\\,.+$/;\n\nfunction urlParse(aUrl) {\n var match = aUrl.match(urlRegexp);\n if (!match) {\n return null;\n }\n return {\n scheme: match[1],\n auth: match[2],\n host: match[3],\n port: match[4],\n path: match[5]\n };\n}\nexports.urlParse = urlParse;\n\nfunction urlGenerate(aParsedUrl) {\n var url = '';\n if (aParsedUrl.scheme) {\n url += aParsedUrl.scheme + ':';\n }\n url += '//';\n if (aParsedUrl.auth) {\n url += aParsedUrl.auth + '@';\n }\n if (aParsedUrl.host) {\n url += aParsedUrl.host;\n }\n if (aParsedUrl.port) {\n url += \":\" + aParsedUrl.port\n }\n if (aParsedUrl.path) {\n url += aParsedUrl.path;\n }\n return url;\n}\nexports.urlGenerate = urlGenerate;\n\n/**\n * Normalizes a path, or the path portion of a URL:\n *\n * - Replaces consecutive slashes with one slash.\n * - Removes unnecessary '.' parts.\n * - Removes unnecessary '/..' parts.\n *\n * Based on code in the Node.js 'path' core module.\n *\n * @param aPath The path or url to normalize.\n */\nfunction normalize(aPath) {\n var path = aPath;\n var url = urlParse(aPath);\n if (url) {\n if (!url.path) {\n return aPath;\n }\n path = url.path;\n }\n var isAbsolute = exports.isAbsolute(path);\n\n var parts = path.split(/\\/+/);\n for (var part, up = 0, i = parts.length - 1; i >= 0; i--) {\n part = parts[i];\n if (part === '.') {\n parts.splice(i, 1);\n } else if (part === '..') {\n up++;\n } else if (up > 0) {\n if (part === '') {\n // The first part is blank if the path is absolute. Trying to go\n // above the root is a no-op. Therefore we can remove all '..' parts\n // directly after the root.\n parts.splice(i + 1, up);\n up = 0;\n } else {\n parts.splice(i, 2);\n up--;\n }\n }\n }\n path = parts.join('/');\n\n if (path === '') {\n path = isAbsolute ? '/' : '.';\n }\n\n if (url) {\n url.path = path;\n return urlGenerate(url);\n }\n return path;\n}\nexports.normalize = normalize;\n\n/**\n * Joins two paths/URLs.\n *\n * @param aRoot The root path or URL.\n * @param aPath The path or URL to be joined with the root.\n *\n * - If aPath is a URL or a data URI, aPath is returned, unless aPath is a\n * scheme-relative URL: Then the scheme of aRoot, if any, is prepended\n * first.\n * - Otherwise aPath is a path. If aRoot is a URL, then its path portion\n * is updated with the result and aRoot is returned. Otherwise the result\n * is returned.\n * - If aPath is absolute, the result is aPath.\n * - Otherwise the two paths are joined with a slash.\n * - Joining for example 'http://' and 'www.example.com' is also supported.\n */\nfunction join(aRoot, aPath) {\n if (aRoot === \"\") {\n aRoot = \".\";\n }\n if (aPath === \"\") {\n aPath = \".\";\n }\n var aPathUrl = urlParse(aPath);\n var aRootUrl = urlParse(aRoot);\n if (aRootUrl) {\n aRoot = aRootUrl.path || '/';\n }\n\n // `join(foo, '//www.example.org')`\n if (aPathUrl && !aPathUrl.scheme) {\n if (aRootUrl) {\n aPathUrl.scheme = aRootUrl.scheme;\n }\n return urlGenerate(aPathUrl);\n }\n\n if (aPathUrl || aPath.match(dataUrlRegexp)) {\n return aPath;\n }\n\n // `join('http://', 'www.example.com')`\n if (aRootUrl && !aRootUrl.host && !aRootUrl.path) {\n aRootUrl.host = aPath;\n return urlGenerate(aRootUrl);\n }\n\n var joined = aPath.charAt(0) === '/'\n ? aPath\n : normalize(aRoot.replace(/\\/+$/, '') + '/' + aPath);\n\n if (aRootUrl) {\n aRootUrl.path = joined;\n return urlGenerate(aRootUrl);\n }\n return joined;\n}\nexports.join = join;\n\nexports.isAbsolute = function (aPath) {\n return aPath.charAt(0) === '/' || urlRegexp.test(aPath);\n};\n\n/**\n * Make a path relative to a URL or another path.\n *\n * @param aRoot The root path or URL.\n * @param aPath The path or URL to be made relative to aRoot.\n */\nfunction relative(aRoot, aPath) {\n if (aRoot === \"\") {\n aRoot = \".\";\n }\n\n aRoot = aRoot.replace(/\\/$/, '');\n\n // It is possible for the path to be above the root. In this case, simply\n // checking whether the root is a prefix of the path won't work. Instead, we\n // need to remove components from the root one by one, until either we find\n // a prefix that fits, or we run out of components to remove.\n var level = 0;\n while (aPath.indexOf(aRoot + '/') !== 0) {\n var index = aRoot.lastIndexOf(\"/\");\n if (index < 0) {\n return aPath;\n }\n\n // If the only part of the root that is left is the scheme (i.e. http://,\n // file:///, etc.), one or more slashes (/), or simply nothing at all, we\n // have exhausted all components, so the path is not relative to the root.\n aRoot = aRoot.slice(0, index);\n if (aRoot.match(/^([^\\/]+:\\/)?\\/*$/)) {\n return aPath;\n }\n\n ++level;\n }\n\n // Make sure we add a \"../\" for each component we removed from the root.\n return Array(level + 1).join(\"../\") + aPath.substr(aRoot.length + 1);\n}\nexports.relative = relative;\n\nvar supportsNullProto = (function () {\n var obj = Object.create(null);\n return !('__proto__' in obj);\n}());\n\nfunction identity (s) {\n return s;\n}\n\n/**\n * Because behavior goes wacky when you set `__proto__` on objects, we\n * have to prefix all the strings in our set with an arbitrary character.\n *\n * See https://github.com/mozilla/source-map/pull/31 and\n * https://github.com/mozilla/source-map/issues/30\n *\n * @param String aStr\n */\nfunction toSetString(aStr) {\n if (isProtoString(aStr)) {\n return '$' + aStr;\n }\n\n return aStr;\n}\nexports.toSetString = supportsNullProto ? identity : toSetString;\n\nfunction fromSetString(aStr) {\n if (isProtoString(aStr)) {\n return aStr.slice(1);\n }\n\n return aStr;\n}\nexports.fromSetString = supportsNullProto ? identity : fromSetString;\n\nfunction isProtoString(s) {\n if (!s) {\n return false;\n }\n\n var length = s.length;\n\n if (length < 9 /* \"__proto__\".length */) {\n return false;\n }\n\n if (s.charCodeAt(length - 1) !== 95 /* '_' */ ||\n s.charCodeAt(length - 2) !== 95 /* '_' */ ||\n s.charCodeAt(length - 3) !== 111 /* 'o' */ ||\n s.charCodeAt(length - 4) !== 116 /* 't' */ ||\n s.charCodeAt(length - 5) !== 111 /* 'o' */ ||\n s.charCodeAt(length - 6) !== 114 /* 'r' */ ||\n s.charCodeAt(length - 7) !== 112 /* 'p' */ ||\n s.charCodeAt(length - 8) !== 95 /* '_' */ ||\n s.charCodeAt(length - 9) !== 95 /* '_' */) {\n return false;\n }\n\n for (var i = length - 10; i >= 0; i--) {\n if (s.charCodeAt(i) !== 36 /* '$' */) {\n return false;\n }\n }\n\n return true;\n}\n\n/**\n * Comparator between two mappings where the original positions are compared.\n *\n * Optionally pass in `true` as `onlyCompareGenerated` to consider two\n * mappings with the same original source/line/column, but different generated\n * line and column the same. Useful when searching for a mapping with a\n * stubbed out mapping.\n */\nfunction compareByOriginalPositions(mappingA, mappingB, onlyCompareOriginal) {\n var cmp = strcmp(mappingA.source, mappingB.source);\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalLine - mappingB.originalLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalColumn - mappingB.originalColumn;\n if (cmp !== 0 || onlyCompareOriginal) {\n return cmp;\n }\n\n cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.generatedLine - mappingB.generatedLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n return strcmp(mappingA.name, mappingB.name);\n}\nexports.compareByOriginalPositions = compareByOriginalPositions;\n\n/**\n * Comparator between two mappings with deflated source and name indices where\n * the generated positions are compared.\n *\n * Optionally pass in `true` as `onlyCompareGenerated` to consider two\n * mappings with the same generated line and column, but different\n * source/name/original line and column the same. Useful when searching for a\n * mapping with a stubbed out mapping.\n */\nfunction compareByGeneratedPositionsDeflated(mappingA, mappingB, onlyCompareGenerated) {\n var cmp = mappingA.generatedLine - mappingB.generatedLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n if (cmp !== 0 || onlyCompareGenerated) {\n return cmp;\n }\n\n cmp = strcmp(mappingA.source, mappingB.source);\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalLine - mappingB.originalLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalColumn - mappingB.originalColumn;\n if (cmp !== 0) {\n return cmp;\n }\n\n return strcmp(mappingA.name, mappingB.name);\n}\nexports.compareByGeneratedPositionsDeflated = compareByGeneratedPositionsDeflated;\n\nfunction strcmp(aStr1, aStr2) {\n if (aStr1 === aStr2) {\n return 0;\n }\n\n if (aStr1 === null) {\n return 1; // aStr2 !== null\n }\n\n if (aStr2 === null) {\n return -1; // aStr1 !== null\n }\n\n if (aStr1 > aStr2) {\n return 1;\n }\n\n return -1;\n}\n\n/**\n * Comparator between two mappings with inflated source and name strings where\n * the generated positions are compared.\n */\nfunction compareByGeneratedPositionsInflated(mappingA, mappingB) {\n var cmp = mappingA.generatedLine - mappingB.generatedLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = strcmp(mappingA.source, mappingB.source);\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalLine - mappingB.originalLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalColumn - mappingB.originalColumn;\n if (cmp !== 0) {\n return cmp;\n }\n\n return strcmp(mappingA.name, mappingB.name);\n}\nexports.compareByGeneratedPositionsInflated = compareByGeneratedPositionsInflated;\n\n/**\n * Strip any JSON XSSI avoidance prefix from the string (as documented\n * in the source maps specification), and then parse the string as\n * JSON.\n */\nfunction parseSourceMapInput(str) {\n return JSON.parse(str.replace(/^\\)]}'[^\\n]*\\n/, ''));\n}\nexports.parseSourceMapInput = parseSourceMapInput;\n\n/**\n * Compute the URL of a source given the the source root, the source's\n * URL, and the source map's URL.\n */\nfunction computeSourceURL(sourceRoot, sourceURL, sourceMapURL) {\n sourceURL = sourceURL || '';\n\n if (sourceRoot) {\n // This follows what Chrome does.\n if (sourceRoot[sourceRoot.length - 1] !== '/' && sourceURL[0] !== '/') {\n sourceRoot += '/';\n }\n // The spec says:\n // Line 4: An optional source root, useful for relocating source\n // files on a server or removing repeated values in the\n // \u201Csources\u201D entry. This value is prepended to the individual\n // entries in the \u201Csource\u201D field.\n sourceURL = sourceRoot + sourceURL;\n }\n\n // Historically, SourceMapConsumer did not take the sourceMapURL as\n // a parameter. This mode is still somewhat supported, which is why\n // this code block is conditional. However, it's preferable to pass\n // the source map URL to SourceMapConsumer, so that this function\n // can implement the source URL resolution algorithm as outlined in\n // the spec. This block is basically the equivalent of:\n // new URL(sourceURL, sourceMapURL).toString()\n // ... except it avoids using URL, which wasn't available in the\n // older releases of node still supported by this library.\n //\n // The spec says:\n // If the sources are not absolute URLs after prepending of the\n // \u201CsourceRoot\u201D, the sources are resolved relative to the\n // SourceMap (like resolving script src in a html document).\n if (sourceMapURL) {\n var parsed = urlParse(sourceMapURL);\n if (!parsed) {\n throw new Error(\"sourceMapURL could not be parsed\");\n }\n if (parsed.path) {\n // Strip the last path component, but keep the \"/\".\n var index = parsed.path.lastIndexOf('/');\n if (index >= 0) {\n parsed.path = parsed.path.substring(0, index + 1);\n }\n }\n sourceURL = join(urlGenerate(parsed), sourceURL);\n }\n\n return normalize(sourceURL);\n}\nexports.computeSourceURL = computeSourceURL;\n", "/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar util = require('./util');\nvar has = Object.prototype.hasOwnProperty;\nvar hasNativeMap = typeof Map !== \"undefined\";\n\n/**\n * A data structure which is a combination of an array and a set. Adding a new\n * member is O(1), testing for membership is O(1), and finding the index of an\n * element is O(1). Removing elements from the set is not supported. Only\n * strings are supported for membership.\n */\nfunction ArraySet() {\n this._array = [];\n this._set = hasNativeMap ? new Map() : Object.create(null);\n}\n\n/**\n * Static method for creating ArraySet instances from an existing array.\n */\nArraySet.fromArray = function ArraySet_fromArray(aArray, aAllowDuplicates) {\n var set = new ArraySet();\n for (var i = 0, len = aArray.length; i < len; i++) {\n set.add(aArray[i], aAllowDuplicates);\n }\n return set;\n};\n\n/**\n * Return how many unique items are in this ArraySet. If duplicates have been\n * added, than those do not count towards the size.\n *\n * @returns Number\n */\nArraySet.prototype.size = function ArraySet_size() {\n return hasNativeMap ? this._set.size : Object.getOwnPropertyNames(this._set).length;\n};\n\n/**\n * Add the given string to this set.\n *\n * @param String aStr\n */\nArraySet.prototype.add = function ArraySet_add(aStr, aAllowDuplicates) {\n var sStr = hasNativeMap ? aStr : util.toSetString(aStr);\n var isDuplicate = hasNativeMap ? this.has(aStr) : has.call(this._set, sStr);\n var idx = this._array.length;\n if (!isDuplicate || aAllowDuplicates) {\n this._array.push(aStr);\n }\n if (!isDuplicate) {\n if (hasNativeMap) {\n this._set.set(aStr, idx);\n } else {\n this._set[sStr] = idx;\n }\n }\n};\n\n/**\n * Is the given string a member of this set?\n *\n * @param String aStr\n */\nArraySet.prototype.has = function ArraySet_has(aStr) {\n if (hasNativeMap) {\n return this._set.has(aStr);\n } else {\n var sStr = util.toSetString(aStr);\n return has.call(this._set, sStr);\n }\n};\n\n/**\n * What is the index of the given string in the array?\n *\n * @param String aStr\n */\nArraySet.prototype.indexOf = function ArraySet_indexOf(aStr) {\n if (hasNativeMap) {\n var idx = this._set.get(aStr);\n if (idx >= 0) {\n return idx;\n }\n } else {\n var sStr = util.toSetString(aStr);\n if (has.call(this._set, sStr)) {\n return this._set[sStr];\n }\n }\n\n throw new Error('\"' + aStr + '\" is not in the set.');\n};\n\n/**\n * What is the element at the given index?\n *\n * @param Number aIdx\n */\nArraySet.prototype.at = function ArraySet_at(aIdx) {\n if (aIdx >= 0 && aIdx < this._array.length) {\n return this._array[aIdx];\n }\n throw new Error('No element indexed by ' + aIdx);\n};\n\n/**\n * Returns the array representation of this set (which has the proper indices\n * indicated by indexOf). Note that this is a copy of the internal array used\n * for storing the members so that no one can mess with internal state.\n */\nArraySet.prototype.toArray = function ArraySet_toArray() {\n return this._array.slice();\n};\n\nexports.ArraySet = ArraySet;\n", "/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2014 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar util = require('./util');\n\n/**\n * Determine whether mappingB is after mappingA with respect to generated\n * position.\n */\nfunction generatedPositionAfter(mappingA, mappingB) {\n // Optimized for most common case\n var lineA = mappingA.generatedLine;\n var lineB = mappingB.generatedLine;\n var columnA = mappingA.generatedColumn;\n var columnB = mappingB.generatedColumn;\n return lineB > lineA || lineB == lineA && columnB >= columnA ||\n util.compareByGeneratedPositionsInflated(mappingA, mappingB) <= 0;\n}\n\n/**\n * A data structure to provide a sorted view of accumulated mappings in a\n * performance conscious manner. It trades a neglibable overhead in general\n * case for a large speedup in case of mappings being added in order.\n */\nfunction MappingList() {\n this._array = [];\n this._sorted = true;\n // Serves as infimum\n this._last = {generatedLine: -1, generatedColumn: 0};\n}\n\n/**\n * Iterate through internal items. This method takes the same arguments that\n * `Array.prototype.forEach` takes.\n *\n * NOTE: The order of the mappings is NOT guaranteed.\n */\nMappingList.prototype.unsortedForEach =\n function MappingList_forEach(aCallback, aThisArg) {\n this._array.forEach(aCallback, aThisArg);\n };\n\n/**\n * Add the given source mapping.\n *\n * @param Object aMapping\n */\nMappingList.prototype.add = function MappingList_add(aMapping) {\n if (generatedPositionAfter(this._last, aMapping)) {\n this._last = aMapping;\n this._array.push(aMapping);\n } else {\n this._sorted = false;\n this._array.push(aMapping);\n }\n};\n\n/**\n * Returns the flat, sorted array of mappings. The mappings are sorted by\n * generated position.\n *\n * WARNING: This method returns internal data without copying, for\n * performance. The return value must NOT be mutated, and should be treated as\n * an immutable borrow. If you want to take ownership, you must make your own\n * copy.\n */\nMappingList.prototype.toArray = function MappingList_toArray() {\n if (!this._sorted) {\n this._array.sort(util.compareByGeneratedPositionsInflated);\n this._sorted = true;\n }\n return this._array;\n};\n\nexports.MappingList = MappingList;\n", "/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar base64VLQ = require('./base64-vlq');\nvar util = require('./util');\nvar ArraySet = require('./array-set').ArraySet;\nvar MappingList = require('./mapping-list').MappingList;\n\n/**\n * An instance of the SourceMapGenerator represents a source map which is\n * being built incrementally. You may pass an object with the following\n * properties:\n *\n * - file: The filename of the generated source.\n * - sourceRoot: A root for all relative URLs in this source map.\n */\nfunction SourceMapGenerator(aArgs) {\n if (!aArgs) {\n aArgs = {};\n }\n this._file = util.getArg(aArgs, 'file', null);\n this._sourceRoot = util.getArg(aArgs, 'sourceRoot', null);\n this._skipValidation = util.getArg(aArgs, 'skipValidation', false);\n this._sources = new ArraySet();\n this._names = new ArraySet();\n this._mappings = new MappingList();\n this._sourcesContents = null;\n}\n\nSourceMapGenerator.prototype._version = 3;\n\n/**\n * Creates a new SourceMapGenerator based on a SourceMapConsumer\n *\n * @param aSourceMapConsumer The SourceMap.\n */\nSourceMapGenerator.fromSourceMap =\n function SourceMapGenerator_fromSourceMap(aSourceMapConsumer) {\n var sourceRoot = aSourceMapConsumer.sourceRoot;\n var generator = new SourceMapGenerator({\n file: aSourceMapConsumer.file,\n sourceRoot: sourceRoot\n });\n aSourceMapConsumer.eachMapping(function (mapping) {\n var newMapping = {\n generated: {\n line: mapping.generatedLine,\n column: mapping.generatedColumn\n }\n };\n\n if (mapping.source != null) {\n newMapping.source = mapping.source;\n if (sourceRoot != null) {\n newMapping.source = util.relative(sourceRoot, newMapping.source);\n }\n\n newMapping.original = {\n line: mapping.originalLine,\n column: mapping.originalColumn\n };\n\n if (mapping.name != null) {\n newMapping.name = mapping.name;\n }\n }\n\n generator.addMapping(newMapping);\n });\n aSourceMapConsumer.sources.forEach(function (sourceFile) {\n var sourceRelative = sourceFile;\n if (sourceRoot !== null) {\n sourceRelative = util.relative(sourceRoot, sourceFile);\n }\n\n if (!generator._sources.has(sourceRelative)) {\n generator._sources.add(sourceRelative);\n }\n\n var content = aSourceMapConsumer.sourceContentFor(sourceFile);\n if (content != null) {\n generator.setSourceContent(sourceFile, content);\n }\n });\n return generator;\n };\n\n/**\n * Add a single mapping from original source line and column to the generated\n * source's line and column for this source map being created. The mapping\n * object should have the following properties:\n *\n * - generated: An object with the generated line and column positions.\n * - original: An object with the original line and column positions.\n * - source: The original source file (relative to the sourceRoot).\n * - name: An optional original token name for this mapping.\n */\nSourceMapGenerator.prototype.addMapping =\n function SourceMapGenerator_addMapping(aArgs) {\n var generated = util.getArg(aArgs, 'generated');\n var original = util.getArg(aArgs, 'original', null);\n var source = util.getArg(aArgs, 'source', null);\n var name = util.getArg(aArgs, 'name', null);\n\n if (!this._skipValidation) {\n this._validateMapping(generated, original, source, name);\n }\n\n if (source != null) {\n source = String(source);\n if (!this._sources.has(source)) {\n this._sources.add(source);\n }\n }\n\n if (name != null) {\n name = String(name);\n if (!this._names.has(name)) {\n this._names.add(name);\n }\n }\n\n this._mappings.add({\n generatedLine: generated.line,\n generatedColumn: generated.column,\n originalLine: original != null && original.line,\n originalColumn: original != null && original.column,\n source: source,\n name: name\n });\n };\n\n/**\n * Set the source content for a source file.\n */\nSourceMapGenerator.prototype.setSourceContent =\n function SourceMapGenerator_setSourceContent(aSourceFile, aSourceContent) {\n var source = aSourceFile;\n if (this._sourceRoot != null) {\n source = util.relative(this._sourceRoot, source);\n }\n\n if (aSourceContent != null) {\n // Add the source content to the _sourcesContents map.\n // Create a new _sourcesContents map if the property is null.\n if (!this._sourcesContents) {\n this._sourcesContents = Object.create(null);\n }\n this._sourcesContents[util.toSetString(source)] = aSourceContent;\n } else if (this._sourcesContents) {\n // Remove the source file from the _sourcesContents map.\n // If the _sourcesContents map is empty, set the property to null.\n delete this._sourcesContents[util.toSetString(source)];\n if (Object.keys(this._sourcesContents).length === 0) {\n this._sourcesContents = null;\n }\n }\n };\n\n/**\n * Applies the mappings of a sub-source-map for a specific source file to the\n * source map being generated. Each mapping to the supplied source file is\n * rewritten using the supplied source map. Note: The resolution for the\n * resulting mappings is the minimium of this map and the supplied map.\n *\n * @param aSourceMapConsumer The source map to be applied.\n * @param aSourceFile Optional. The filename of the source file.\n * If omitted, SourceMapConsumer's file property will be used.\n * @param aSourceMapPath Optional. The dirname of the path to the source map\n * to be applied. If relative, it is relative to the SourceMapConsumer.\n * This parameter is needed when the two source maps aren't in the same\n * directory, and the source map to be applied contains relative source\n * paths. If so, those relative source paths need to be rewritten\n * relative to the SourceMapGenerator.\n */\nSourceMapGenerator.prototype.applySourceMap =\n function SourceMapGenerator_applySourceMap(aSourceMapConsumer, aSourceFile, aSourceMapPath) {\n var sourceFile = aSourceFile;\n // If aSourceFile is omitted, we will use the file property of the SourceMap\n if (aSourceFile == null) {\n if (aSourceMapConsumer.file == null) {\n throw new Error(\n 'SourceMapGenerator.prototype.applySourceMap requires either an explicit source file, ' +\n 'or the source map\\'s \"file\" property. Both were omitted.'\n );\n }\n sourceFile = aSourceMapConsumer.file;\n }\n var sourceRoot = this._sourceRoot;\n // Make \"sourceFile\" relative if an absolute Url is passed.\n if (sourceRoot != null) {\n sourceFile = util.relative(sourceRoot, sourceFile);\n }\n // Applying the SourceMap can add and remove items from the sources and\n // the names array.\n var newSources = new ArraySet();\n var newNames = new ArraySet();\n\n // Find mappings for the \"sourceFile\"\n this._mappings.unsortedForEach(function (mapping) {\n if (mapping.source === sourceFile && mapping.originalLine != null) {\n // Check if it can be mapped by the source map, then update the mapping.\n var original = aSourceMapConsumer.originalPositionFor({\n line: mapping.originalLine,\n column: mapping.originalColumn\n });\n if (original.source != null) {\n // Copy mapping\n mapping.source = original.source;\n if (aSourceMapPath != null) {\n mapping.source = util.join(aSourceMapPath, mapping.source)\n }\n if (sourceRoot != null) {\n mapping.source = util.relative(sourceRoot, mapping.source);\n }\n mapping.originalLine = original.line;\n mapping.originalColumn = original.column;\n if (original.name != null) {\n mapping.name = original.name;\n }\n }\n }\n\n var source = mapping.source;\n if (source != null && !newSources.has(source)) {\n newSources.add(source);\n }\n\n var name = mapping.name;\n if (name != null && !newNames.has(name)) {\n newNames.add(name);\n }\n\n }, this);\n this._sources = newSources;\n this._names = newNames;\n\n // Copy sourcesContents of applied map.\n aSourceMapConsumer.sources.forEach(function (sourceFile) {\n var content = aSourceMapConsumer.sourceContentFor(sourceFile);\n if (content != null) {\n if (aSourceMapPath != null) {\n sourceFile = util.join(aSourceMapPath, sourceFile);\n }\n if (sourceRoot != null) {\n sourceFile = util.relative(sourceRoot, sourceFile);\n }\n this.setSourceContent(sourceFile, content);\n }\n }, this);\n };\n\n/**\n * A mapping can have one of the three levels of data:\n *\n * 1. Just the generated position.\n * 2. The Generated position, original position, and original source.\n * 3. Generated and original position, original source, as well as a name\n * token.\n *\n * To maintain consistency, we validate that any new mapping being added falls\n * in to one of these categories.\n */\nSourceMapGenerator.prototype._validateMapping =\n function SourceMapGenerator_validateMapping(aGenerated, aOriginal, aSource,\n aName) {\n // When aOriginal is truthy but has empty values for .line and .column,\n // it is most likely a programmer error. In this case we throw a very\n // specific error message to try to guide them the right way.\n // For example: https://github.com/Polymer/polymer-bundler/pull/519\n if (aOriginal && typeof aOriginal.line !== 'number' && typeof aOriginal.column !== 'number') {\n throw new Error(\n 'original.line and original.column are not numbers -- you probably meant to omit ' +\n 'the original mapping entirely and only map the generated position. If so, pass ' +\n 'null for the original mapping instead of an object with empty or null values.'\n );\n }\n\n if (aGenerated && 'line' in aGenerated && 'column' in aGenerated\n && aGenerated.line > 0 && aGenerated.column >= 0\n && !aOriginal && !aSource && !aName) {\n // Case 1.\n return;\n }\n else if (aGenerated && 'line' in aGenerated && 'column' in aGenerated\n && aOriginal && 'line' in aOriginal && 'column' in aOriginal\n && aGenerated.line > 0 && aGenerated.column >= 0\n && aOriginal.line > 0 && aOriginal.column >= 0\n && aSource) {\n // Cases 2 and 3.\n return;\n }\n else {\n throw new Error('Invalid mapping: ' + JSON.stringify({\n generated: aGenerated,\n source: aSource,\n original: aOriginal,\n name: aName\n }));\n }\n };\n\n/**\n * Serialize the accumulated mappings in to the stream of base 64 VLQs\n * specified by the source map format.\n */\nSourceMapGenerator.prototype._serializeMappings =\n function SourceMapGenerator_serializeMappings() {\n var previousGeneratedColumn = 0;\n var previousGeneratedLine = 1;\n var previousOriginalColumn = 0;\n var previousOriginalLine = 0;\n var previousName = 0;\n var previousSource = 0;\n var result = '';\n var next;\n var mapping;\n var nameIdx;\n var sourceIdx;\n\n var mappings = this._mappings.toArray();\n for (var i = 0, len = mappings.length; i < len; i++) {\n mapping = mappings[i];\n next = ''\n\n if (mapping.generatedLine !== previousGeneratedLine) {\n previousGeneratedColumn = 0;\n while (mapping.generatedLine !== previousGeneratedLine) {\n next += ';';\n previousGeneratedLine++;\n }\n }\n else {\n if (i > 0) {\n if (!util.compareByGeneratedPositionsInflated(mapping, mappings[i - 1])) {\n continue;\n }\n next += ',';\n }\n }\n\n next += base64VLQ.encode(mapping.generatedColumn\n - previousGeneratedColumn);\n previousGeneratedColumn = mapping.generatedColumn;\n\n if (mapping.source != null) {\n sourceIdx = this._sources.indexOf(mapping.source);\n next += base64VLQ.encode(sourceIdx - previousSource);\n previousSource = sourceIdx;\n\n // lines are stored 0-based in SourceMap spec version 3\n next += base64VLQ.encode(mapping.originalLine - 1\n - previousOriginalLine);\n previousOriginalLine = mapping.originalLine - 1;\n\n next += base64VLQ.encode(mapping.originalColumn\n - previousOriginalColumn);\n previousOriginalColumn = mapping.originalColumn;\n\n if (mapping.name != null) {\n nameIdx = this._names.indexOf(mapping.name);\n next += base64VLQ.encode(nameIdx - previousName);\n previousName = nameIdx;\n }\n }\n\n result += next;\n }\n\n return result;\n };\n\nSourceMapGenerator.prototype._generateSourcesContent =\n function SourceMapGenerator_generateSourcesContent(aSources, aSourceRoot) {\n return aSources.map(function (source) {\n if (!this._sourcesContents) {\n return null;\n }\n if (aSourceRoot != null) {\n source = util.relative(aSourceRoot, source);\n }\n var key = util.toSetString(source);\n return Object.prototype.hasOwnProperty.call(this._sourcesContents, key)\n ? this._sourcesContents[key]\n : null;\n }, this);\n };\n\n/**\n * Externalize the source map.\n */\nSourceMapGenerator.prototype.toJSON =\n function SourceMapGenerator_toJSON() {\n var map = {\n version: this._version,\n sources: this._sources.toArray(),\n names: this._names.toArray(),\n mappings: this._serializeMappings()\n };\n if (this._file != null) {\n map.file = this._file;\n }\n if (this._sourceRoot != null) {\n map.sourceRoot = this._sourceRoot;\n }\n if (this._sourcesContents) {\n map.sourcesContent = this._generateSourcesContent(map.sources, map.sourceRoot);\n }\n\n return map;\n };\n\n/**\n * Render the source map being generated to a string.\n */\nSourceMapGenerator.prototype.toString =\n function SourceMapGenerator_toString() {\n return JSON.stringify(this.toJSON());\n };\n\nexports.SourceMapGenerator = SourceMapGenerator;\n", "/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nexports.GREATEST_LOWER_BOUND = 1;\nexports.LEAST_UPPER_BOUND = 2;\n\n/**\n * Recursive implementation of binary search.\n *\n * @param aLow Indices here and lower do not contain the needle.\n * @param aHigh Indices here and higher do not contain the needle.\n * @param aNeedle The element being searched for.\n * @param aHaystack The non-empty array being searched.\n * @param aCompare Function which takes two elements and returns -1, 0, or 1.\n * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or\n * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the\n * closest element that is smaller than or greater than the one we are\n * searching for, respectively, if the exact element cannot be found.\n */\nfunction recursiveSearch(aLow, aHigh, aNeedle, aHaystack, aCompare, aBias) {\n // This function terminates when one of the following is true:\n //\n // 1. We find the exact element we are looking for.\n //\n // 2. We did not find the exact element, but we can return the index of\n // the next-closest element.\n //\n // 3. We did not find the exact element, and there is no next-closest\n // element than the one we are searching for, so we return -1.\n var mid = Math.floor((aHigh - aLow) / 2) + aLow;\n var cmp = aCompare(aNeedle, aHaystack[mid], true);\n if (cmp === 0) {\n // Found the element we are looking for.\n return mid;\n }\n else if (cmp > 0) {\n // Our needle is greater than aHaystack[mid].\n if (aHigh - mid > 1) {\n // The element is in the upper half.\n return recursiveSearch(mid, aHigh, aNeedle, aHaystack, aCompare, aBias);\n }\n\n // The exact needle element was not found in this haystack. Determine if\n // we are in termination case (3) or (2) and return the appropriate thing.\n if (aBias == exports.LEAST_UPPER_BOUND) {\n return aHigh < aHaystack.length ? aHigh : -1;\n } else {\n return mid;\n }\n }\n else {\n // Our needle is less than aHaystack[mid].\n if (mid - aLow > 1) {\n // The element is in the lower half.\n return recursiveSearch(aLow, mid, aNeedle, aHaystack, aCompare, aBias);\n }\n\n // we are in termination case (3) or (2) and return the appropriate thing.\n if (aBias == exports.LEAST_UPPER_BOUND) {\n return mid;\n } else {\n return aLow < 0 ? -1 : aLow;\n }\n }\n}\n\n/**\n * This is an implementation of binary search which will always try and return\n * the index of the closest element if there is no exact hit. This is because\n * mappings between original and generated line/col pairs are single points,\n * and there is an implicit region between each of them, so a miss just means\n * that you aren't on the very start of a region.\n *\n * @param aNeedle The element you are looking for.\n * @param aHaystack The array that is being searched.\n * @param aCompare A function which takes the needle and an element in the\n * array and returns -1, 0, or 1 depending on whether the needle is less\n * than, equal to, or greater than the element, respectively.\n * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or\n * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the\n * closest element that is smaller than or greater than the one we are\n * searching for, respectively, if the exact element cannot be found.\n * Defaults to 'binarySearch.GREATEST_LOWER_BOUND'.\n */\nexports.search = function search(aNeedle, aHaystack, aCompare, aBias) {\n if (aHaystack.length === 0) {\n return -1;\n }\n\n var index = recursiveSearch(-1, aHaystack.length, aNeedle, aHaystack,\n aCompare, aBias || exports.GREATEST_LOWER_BOUND);\n if (index < 0) {\n return -1;\n }\n\n // We have found either the exact element, or the next-closest element than\n // the one we are searching for. However, there may be more than one such\n // element. Make sure we always return the smallest of these.\n while (index - 1 >= 0) {\n if (aCompare(aHaystack[index], aHaystack[index - 1], true) !== 0) {\n break;\n }\n --index;\n }\n\n return index;\n};\n", "/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\n// It turns out that some (most?) JavaScript engines don't self-host\n// `Array.prototype.sort`. This makes sense because C++ will likely remain\n// faster than JS when doing raw CPU-intensive sorting. However, when using a\n// custom comparator function, calling back and forth between the VM's C++ and\n// JIT'd JS is rather slow *and* loses JIT type information, resulting in\n// worse generated code for the comparator function than would be optimal. In\n// fact, when sorting with a comparator, these costs outweigh the benefits of\n// sorting in C++. By using our own JS-implemented Quick Sort (below), we get\n// a ~3500ms mean speed-up in `bench/bench.html`.\n\n/**\n * Swap the elements indexed by `x` and `y` in the array `ary`.\n *\n * @param {Array} ary\n * The array.\n * @param {Number} x\n * The index of the first item.\n * @param {Number} y\n * The index of the second item.\n */\nfunction swap(ary, x, y) {\n var temp = ary[x];\n ary[x] = ary[y];\n ary[y] = temp;\n}\n\n/**\n * Returns a random integer within the range `low .. high` inclusive.\n *\n * @param {Number} low\n * The lower bound on the range.\n * @param {Number} high\n * The upper bound on the range.\n */\nfunction randomIntInRange(low, high) {\n return Math.round(low + (Math.random() * (high - low)));\n}\n\n/**\n * The Quick Sort algorithm.\n *\n * @param {Array} ary\n * An array to sort.\n * @param {function} comparator\n * Function to use to compare two items.\n * @param {Number} p\n * Start index of the array\n * @param {Number} r\n * End index of the array\n */\nfunction doQuickSort(ary, comparator, p, r) {\n // If our lower bound is less than our upper bound, we (1) partition the\n // array into two pieces and (2) recurse on each half. If it is not, this is\n // the empty array and our base case.\n\n if (p < r) {\n // (1) Partitioning.\n //\n // The partitioning chooses a pivot between `p` and `r` and moves all\n // elements that are less than or equal to the pivot to the before it, and\n // all the elements that are greater than it after it. The effect is that\n // once partition is done, the pivot is in the exact place it will be when\n // the array is put in sorted order, and it will not need to be moved\n // again. This runs in O(n) time.\n\n // Always choose a random pivot so that an input array which is reverse\n // sorted does not cause O(n^2) running time.\n var pivotIndex = randomIntInRange(p, r);\n var i = p - 1;\n\n swap(ary, pivotIndex, r);\n var pivot = ary[r];\n\n // Immediately after `j` is incremented in this loop, the following hold\n // true:\n //\n // * Every element in `ary[p .. i]` is less than or equal to the pivot.\n //\n // * Every element in `ary[i+1 .. j-1]` is greater than the pivot.\n for (var j = p; j < r; j++) {\n if (comparator(ary[j], pivot) <= 0) {\n i += 1;\n swap(ary, i, j);\n }\n }\n\n swap(ary, i + 1, j);\n var q = i + 1;\n\n // (2) Recurse on each half.\n\n doQuickSort(ary, comparator, p, q - 1);\n doQuickSort(ary, comparator, q + 1, r);\n }\n}\n\n/**\n * Sort the given array in-place with the given comparator function.\n *\n * @param {Array} ary\n * An array to sort.\n * @param {function} comparator\n * Function to use to compare two items.\n */\nexports.quickSort = function (ary, comparator) {\n doQuickSort(ary, comparator, 0, ary.length - 1);\n};\n", "/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar util = require('./util');\nvar binarySearch = require('./binary-search');\nvar ArraySet = require('./array-set').ArraySet;\nvar base64VLQ = require('./base64-vlq');\nvar quickSort = require('./quick-sort').quickSort;\n\nfunction SourceMapConsumer(aSourceMap, aSourceMapURL) {\n var sourceMap = aSourceMap;\n if (typeof aSourceMap === 'string') {\n sourceMap = util.parseSourceMapInput(aSourceMap);\n }\n\n return sourceMap.sections != null\n ? new IndexedSourceMapConsumer(sourceMap, aSourceMapURL)\n : new BasicSourceMapConsumer(sourceMap, aSourceMapURL);\n}\n\nSourceMapConsumer.fromSourceMap = function(aSourceMap, aSourceMapURL) {\n return BasicSourceMapConsumer.fromSourceMap(aSourceMap, aSourceMapURL);\n}\n\n/**\n * The version of the source mapping spec that we are consuming.\n */\nSourceMapConsumer.prototype._version = 3;\n\n// `__generatedMappings` and `__originalMappings` are arrays that hold the\n// parsed mapping coordinates from the source map's \"mappings\" attribute. They\n// are lazily instantiated, accessed via the `_generatedMappings` and\n// `_originalMappings` getters respectively, and we only parse the mappings\n// and create these arrays once queried for a source location. We jump through\n// these hoops because there can be many thousands of mappings, and parsing\n// them is expensive, so we only want to do it if we must.\n//\n// Each object in the arrays is of the form:\n//\n// {\n// generatedLine: The line number in the generated code,\n// generatedColumn: The column number in the generated code,\n// source: The path to the original source file that generated this\n// chunk of code,\n// originalLine: The line number in the original source that\n// corresponds to this chunk of generated code,\n// originalColumn: The column number in the original source that\n// corresponds to this chunk of generated code,\n// name: The name of the original symbol which generated this chunk of\n// code.\n// }\n//\n// All properties except for `generatedLine` and `generatedColumn` can be\n// `null`.\n//\n// `_generatedMappings` is ordered by the generated positions.\n//\n// `_originalMappings` is ordered by the original positions.\n\nSourceMapConsumer.prototype.__generatedMappings = null;\nObject.defineProperty(SourceMapConsumer.prototype, '_generatedMappings', {\n configurable: true,\n enumerable: true,\n get: function () {\n if (!this.__generatedMappings) {\n this._parseMappings(this._mappings, this.sourceRoot);\n }\n\n return this.__generatedMappings;\n }\n});\n\nSourceMapConsumer.prototype.__originalMappings = null;\nObject.defineProperty(SourceMapConsumer.prototype, '_originalMappings', {\n configurable: true,\n enumerable: true,\n get: function () {\n if (!this.__originalMappings) {\n this._parseMappings(this._mappings, this.sourceRoot);\n }\n\n return this.__originalMappings;\n }\n});\n\nSourceMapConsumer.prototype._charIsMappingSeparator =\n function SourceMapConsumer_charIsMappingSeparator(aStr, index) {\n var c = aStr.charAt(index);\n return c === \";\" || c === \",\";\n };\n\n/**\n * Parse the mappings in a string in to a data structure which we can easily\n * query (the ordered arrays in the `this.__generatedMappings` and\n * `this.__originalMappings` properties).\n */\nSourceMapConsumer.prototype._parseMappings =\n function SourceMapConsumer_parseMappings(aStr, aSourceRoot) {\n throw new Error(\"Subclasses must implement _parseMappings\");\n };\n\nSourceMapConsumer.GENERATED_ORDER = 1;\nSourceMapConsumer.ORIGINAL_ORDER = 2;\n\nSourceMapConsumer.GREATEST_LOWER_BOUND = 1;\nSourceMapConsumer.LEAST_UPPER_BOUND = 2;\n\n/**\n * Iterate over each mapping between an original source/line/column and a\n * generated line/column in this source map.\n *\n * @param Function aCallback\n * The function that is called with each mapping.\n * @param Object aContext\n * Optional. If specified, this object will be the value of `this` every\n * time that `aCallback` is called.\n * @param aOrder\n * Either `SourceMapConsumer.GENERATED_ORDER` or\n * `SourceMapConsumer.ORIGINAL_ORDER`. Specifies whether you want to\n * iterate over the mappings sorted by the generated file's line/column\n * order or the original's source/line/column order, respectively. Defaults to\n * `SourceMapConsumer.GENERATED_ORDER`.\n */\nSourceMapConsumer.prototype.eachMapping =\n function SourceMapConsumer_eachMapping(aCallback, aContext, aOrder) {\n var context = aContext || null;\n var order = aOrder || SourceMapConsumer.GENERATED_ORDER;\n\n var mappings;\n switch (order) {\n case SourceMapConsumer.GENERATED_ORDER:\n mappings = this._generatedMappings;\n break;\n case SourceMapConsumer.ORIGINAL_ORDER:\n mappings = this._originalMappings;\n break;\n default:\n throw new Error(\"Unknown order of iteration.\");\n }\n\n var sourceRoot = this.sourceRoot;\n mappings.map(function (mapping) {\n var source = mapping.source === null ? null : this._sources.at(mapping.source);\n source = util.computeSourceURL(sourceRoot, source, this._sourceMapURL);\n return {\n source: source,\n generatedLine: mapping.generatedLine,\n generatedColumn: mapping.generatedColumn,\n originalLine: mapping.originalLine,\n originalColumn: mapping.originalColumn,\n name: mapping.name === null ? null : this._names.at(mapping.name)\n };\n }, this).forEach(aCallback, context);\n };\n\n/**\n * Returns all generated line and column information for the original source,\n * line, and column provided. If no column is provided, returns all mappings\n * corresponding to a either the line we are searching for or the next\n * closest line that has any mappings. Otherwise, returns all mappings\n * corresponding to the given line and either the column we are searching for\n * or the next closest column that has any offsets.\n *\n * The only argument is an object with the following properties:\n *\n * - source: The filename of the original source.\n * - line: The line number in the original source. The line number is 1-based.\n * - column: Optional. the column number in the original source.\n * The column number is 0-based.\n *\n * and an array of objects is returned, each with the following properties:\n *\n * - line: The line number in the generated source, or null. The\n * line number is 1-based.\n * - column: The column number in the generated source, or null.\n * The column number is 0-based.\n */\nSourceMapConsumer.prototype.allGeneratedPositionsFor =\n function SourceMapConsumer_allGeneratedPositionsFor(aArgs) {\n var line = util.getArg(aArgs, 'line');\n\n // When there is no exact match, BasicSourceMapConsumer.prototype._findMapping\n // returns the index of the closest mapping less than the needle. By\n // setting needle.originalColumn to 0, we thus find the last mapping for\n // the given line, provided such a mapping exists.\n var needle = {\n source: util.getArg(aArgs, 'source'),\n originalLine: line,\n originalColumn: util.getArg(aArgs, 'column', 0)\n };\n\n needle.source = this._findSourceIndex(needle.source);\n if (needle.source < 0) {\n return [];\n }\n\n var mappings = [];\n\n var index = this._findMapping(needle,\n this._originalMappings,\n \"originalLine\",\n \"originalColumn\",\n util.compareByOriginalPositions,\n binarySearch.LEAST_UPPER_BOUND);\n if (index >= 0) {\n var mapping = this._originalMappings[index];\n\n if (aArgs.column === undefined) {\n var originalLine = mapping.originalLine;\n\n // Iterate until either we run out of mappings, or we run into\n // a mapping for a different line than the one we found. Since\n // mappings are sorted, this is guaranteed to find all mappings for\n // the line we found.\n while (mapping && mapping.originalLine === originalLine) {\n mappings.push({\n line: util.getArg(mapping, 'generatedLine', null),\n column: util.getArg(mapping, 'generatedColumn', null),\n lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)\n });\n\n mapping = this._originalMappings[++index];\n }\n } else {\n var originalColumn = mapping.originalColumn;\n\n // Iterate until either we run out of mappings, or we run into\n // a mapping for a different line than the one we were searching for.\n // Since mappings are sorted, this is guaranteed to find all mappings for\n // the line we are searching for.\n while (mapping &&\n mapping.originalLine === line &&\n mapping.originalColumn == originalColumn) {\n mappings.push({\n line: util.getArg(mapping, 'generatedLine', null),\n column: util.getArg(mapping, 'generatedColumn', null),\n lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)\n });\n\n mapping = this._originalMappings[++index];\n }\n }\n }\n\n return mappings;\n };\n\nexports.SourceMapConsumer = SourceMapConsumer;\n\n/**\n * A BasicSourceMapConsumer instance represents a parsed source map which we can\n * query for information about the original file positions by giving it a file\n * position in the generated source.\n *\n * The first parameter is the raw source map (either as a JSON string, or\n * already parsed to an object). According to the spec, source maps have the\n * following attributes:\n *\n * - version: Which version of the source map spec this map is following.\n * - sources: An array of URLs to the original source files.\n * - names: An array of identifiers which can be referrenced by individual mappings.\n * - sourceRoot: Optional. The URL root from which all sources are relative.\n * - sourcesContent: Optional. An array of contents of the original source files.\n * - mappings: A string of base64 VLQs which contain the actual mappings.\n * - file: Optional. The generated file this source map is associated with.\n *\n * Here is an example source map, taken from the source map spec[0]:\n *\n * {\n * version : 3,\n * file: \"out.js\",\n * sourceRoot : \"\",\n * sources: [\"foo.js\", \"bar.js\"],\n * names: [\"src\", \"maps\", \"are\", \"fun\"],\n * mappings: \"AA,AB;;ABCDE;\"\n * }\n *\n * The second parameter, if given, is a string whose value is the URL\n * at which the source map was found. This URL is used to compute the\n * sources array.\n *\n * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit?pli=1#\n */\nfunction BasicSourceMapConsumer(aSourceMap, aSourceMapURL) {\n var sourceMap = aSourceMap;\n if (typeof aSourceMap === 'string') {\n sourceMap = util.parseSourceMapInput(aSourceMap);\n }\n\n var version = util.getArg(sourceMap, 'version');\n var sources = util.getArg(sourceMap, 'sources');\n // Sass 3.3 leaves out the 'names' array, so we deviate from the spec (which\n // requires the array) to play nice here.\n var names = util.getArg(sourceMap, 'names', []);\n var sourceRoot = util.getArg(sourceMap, 'sourceRoot', null);\n var sourcesContent = util.getArg(sourceMap, 'sourcesContent', null);\n var mappings = util.getArg(sourceMap, 'mappings');\n var file = util.getArg(sourceMap, 'file', null);\n\n // Once again, Sass deviates from the spec and supplies the version as a\n // string rather than a number, so we use loose equality checking here.\n if (version != this._version) {\n throw new Error('Unsupported version: ' + version);\n }\n\n if (sourceRoot) {\n sourceRoot = util.normalize(sourceRoot);\n }\n\n sources = sources\n .map(String)\n // Some source maps produce relative source paths like \"./foo.js\" instead of\n // \"foo.js\". Normalize these first so that future comparisons will succeed.\n // See bugzil.la/1090768.\n .map(util.normalize)\n // Always ensure that absolute sources are internally stored relative to\n // the source root, if the source root is absolute. Not doing this would\n // be particularly problematic when the source root is a prefix of the\n // source (valid, but why??). See github issue #199 and bugzil.la/1188982.\n .map(function (source) {\n return sourceRoot && util.isAbsolute(sourceRoot) && util.isAbsolute(source)\n ? util.relative(sourceRoot, source)\n : source;\n });\n\n // Pass `true` below to allow duplicate names and sources. While source maps\n // are intended to be compressed and deduplicated, the TypeScript compiler\n // sometimes generates source maps with duplicates in them. See Github issue\n // #72 and bugzil.la/889492.\n this._names = ArraySet.fromArray(names.map(String), true);\n this._sources = ArraySet.fromArray(sources, true);\n\n this._absoluteSources = this._sources.toArray().map(function (s) {\n return util.computeSourceURL(sourceRoot, s, aSourceMapURL);\n });\n\n this.sourceRoot = sourceRoot;\n this.sourcesContent = sourcesContent;\n this._mappings = mappings;\n this._sourceMapURL = aSourceMapURL;\n this.file = file;\n}\n\nBasicSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype);\nBasicSourceMapConsumer.prototype.consumer = SourceMapConsumer;\n\n/**\n * Utility function to find the index of a source. Returns -1 if not\n * found.\n */\nBasicSourceMapConsumer.prototype._findSourceIndex = function(aSource) {\n var relativeSource = aSource;\n if (this.sourceRoot != null) {\n relativeSource = util.relative(this.sourceRoot, relativeSource);\n }\n\n if (this._sources.has(relativeSource)) {\n return this._sources.indexOf(relativeSource);\n }\n\n // Maybe aSource is an absolute URL as returned by |sources|. In\n // this case we can't simply undo the transform.\n var i;\n for (i = 0; i < this._absoluteSources.length; ++i) {\n if (this._absoluteSources[i] == aSource) {\n return i;\n }\n }\n\n return -1;\n};\n\n/**\n * Create a BasicSourceMapConsumer from a SourceMapGenerator.\n *\n * @param SourceMapGenerator aSourceMap\n * The source map that will be consumed.\n * @param String aSourceMapURL\n * The URL at which the source map can be found (optional)\n * @returns BasicSourceMapConsumer\n */\nBasicSourceMapConsumer.fromSourceMap =\n function SourceMapConsumer_fromSourceMap(aSourceMap, aSourceMapURL) {\n var smc = Object.create(BasicSourceMapConsumer.prototype);\n\n var names = smc._names = ArraySet.fromArray(aSourceMap._names.toArray(), true);\n var sources = smc._sources = ArraySet.fromArray(aSourceMap._sources.toArray(), true);\n smc.sourceRoot = aSourceMap._sourceRoot;\n smc.sourcesContent = aSourceMap._generateSourcesContent(smc._sources.toArray(),\n smc.sourceRoot);\n smc.file = aSourceMap._file;\n smc._sourceMapURL = aSourceMapURL;\n smc._absoluteSources = smc._sources.toArray().map(function (s) {\n return util.computeSourceURL(smc.sourceRoot, s, aSourceMapURL);\n });\n\n // Because we are modifying the entries (by converting string sources and\n // names to indices into the sources and names ArraySets), we have to make\n // a copy of the entry or else bad things happen. Shared mutable state\n // strikes again! See github issue #191.\n\n var generatedMappings = aSourceMap._mappings.toArray().slice();\n var destGeneratedMappings = smc.__generatedMappings = [];\n var destOriginalMappings = smc.__originalMappings = [];\n\n for (var i = 0, length = generatedMappings.length; i < length; i++) {\n var srcMapping = generatedMappings[i];\n var destMapping = new Mapping;\n destMapping.generatedLine = srcMapping.generatedLine;\n destMapping.generatedColumn = srcMapping.generatedColumn;\n\n if (srcMapping.source) {\n destMapping.source = sources.indexOf(srcMapping.source);\n destMapping.originalLine = srcMapping.originalLine;\n destMapping.originalColumn = srcMapping.originalColumn;\n\n if (srcMapping.name) {\n destMapping.name = names.indexOf(srcMapping.name);\n }\n\n destOriginalMappings.push(destMapping);\n }\n\n destGeneratedMappings.push(destMapping);\n }\n\n quickSort(smc.__originalMappings, util.compareByOriginalPositions);\n\n return smc;\n };\n\n/**\n * The version of the source mapping spec that we are consuming.\n */\nBasicSourceMapConsumer.prototype._version = 3;\n\n/**\n * The list of original sources.\n */\nObject.defineProperty(BasicSourceMapConsumer.prototype, 'sources', {\n get: function () {\n return this._absoluteSources.slice();\n }\n});\n\n/**\n * Provide the JIT with a nice shape / hidden class.\n */\nfunction Mapping() {\n this.generatedLine = 0;\n this.generatedColumn = 0;\n this.source = null;\n this.originalLine = null;\n this.originalColumn = null;\n this.name = null;\n}\n\n/**\n * Parse the mappings in a string in to a data structure which we can easily\n * query (the ordered arrays in the `this.__generatedMappings` and\n * `this.__originalMappings` properties).\n */\nBasicSourceMapConsumer.prototype._parseMappings =\n function SourceMapConsumer_parseMappings(aStr, aSourceRoot) {\n var generatedLine = 1;\n var previousGeneratedColumn = 0;\n var previousOriginalLine = 0;\n var previousOriginalColumn = 0;\n var previousSource = 0;\n var previousName = 0;\n var length = aStr.length;\n var index = 0;\n var cachedSegments = {};\n var temp = {};\n var originalMappings = [];\n var generatedMappings = [];\n var mapping, str, segment, end, value;\n\n while (index < length) {\n if (aStr.charAt(index) === ';') {\n generatedLine++;\n index++;\n previousGeneratedColumn = 0;\n }\n else if (aStr.charAt(index) === ',') {\n index++;\n }\n else {\n mapping = new Mapping();\n mapping.generatedLine = generatedLine;\n\n // Because each offset is encoded relative to the previous one,\n // many segments often have the same encoding. We can exploit this\n // fact by caching the parsed variable length fields of each segment,\n // allowing us to avoid a second parse if we encounter the same\n // segment again.\n for (end = index; end < length; end++) {\n if (this._charIsMappingSeparator(aStr, end)) {\n break;\n }\n }\n str = aStr.slice(index, end);\n\n segment = cachedSegments[str];\n if (segment) {\n index += str.length;\n } else {\n segment = [];\n while (index < end) {\n base64VLQ.decode(aStr, index, temp);\n value = temp.value;\n index = temp.rest;\n segment.push(value);\n }\n\n if (segment.length === 2) {\n throw new Error('Found a source, but no line and column');\n }\n\n if (segment.length === 3) {\n throw new Error('Found a source and line, but no column');\n }\n\n cachedSegments[str] = segment;\n }\n\n // Generated column.\n mapping.generatedColumn = previousGeneratedColumn + segment[0];\n previousGeneratedColumn = mapping.generatedColumn;\n\n if (segment.length > 1) {\n // Original source.\n mapping.source = previousSource + segment[1];\n previousSource += segment[1];\n\n // Original line.\n mapping.originalLine = previousOriginalLine + segment[2];\n previousOriginalLine = mapping.originalLine;\n // Lines are stored 0-based\n mapping.originalLine += 1;\n\n // Original column.\n mapping.originalColumn = previousOriginalColumn + segment[3];\n previousOriginalColumn = mapping.originalColumn;\n\n if (segment.length > 4) {\n // Original name.\n mapping.name = previousName + segment[4];\n previousName += segment[4];\n }\n }\n\n generatedMappings.push(mapping);\n if (typeof mapping.originalLine === 'number') {\n originalMappings.push(mapping);\n }\n }\n }\n\n quickSort(generatedMappings, util.compareByGeneratedPositionsDeflated);\n this.__generatedMappings = generatedMappings;\n\n quickSort(originalMappings, util.compareByOriginalPositions);\n this.__originalMappings = originalMappings;\n };\n\n/**\n * Find the mapping that best matches the hypothetical \"needle\" mapping that\n * we are searching for in the given \"haystack\" of mappings.\n */\nBasicSourceMapConsumer.prototype._findMapping =\n function SourceMapConsumer_findMapping(aNeedle, aMappings, aLineName,\n aColumnName, aComparator, aBias) {\n // To return the position we are searching for, we must first find the\n // mapping for the given position and then return the opposite position it\n // points to. Because the mappings are sorted, we can use binary search to\n // find the best mapping.\n\n if (aNeedle[aLineName] <= 0) {\n throw new TypeError('Line must be greater than or equal to 1, got '\n + aNeedle[aLineName]);\n }\n if (aNeedle[aColumnName] < 0) {\n throw new TypeError('Column must be greater than or equal to 0, got '\n + aNeedle[aColumnName]);\n }\n\n return binarySearch.search(aNeedle, aMappings, aComparator, aBias);\n };\n\n/**\n * Compute the last column for each generated mapping. The last column is\n * inclusive.\n */\nBasicSourceMapConsumer.prototype.computeColumnSpans =\n function SourceMapConsumer_computeColumnSpans() {\n for (var index = 0; index < this._generatedMappings.length; ++index) {\n var mapping = this._generatedMappings[index];\n\n // Mappings do not contain a field for the last generated columnt. We\n // can come up with an optimistic estimate, however, by assuming that\n // mappings are contiguous (i.e. given two consecutive mappings, the\n // first mapping ends where the second one starts).\n if (index + 1 < this._generatedMappings.length) {\n var nextMapping = this._generatedMappings[index + 1];\n\n if (mapping.generatedLine === nextMapping.generatedLine) {\n mapping.lastGeneratedColumn = nextMapping.generatedColumn - 1;\n continue;\n }\n }\n\n // The last mapping for each line spans the entire line.\n mapping.lastGeneratedColumn = Infinity;\n }\n };\n\n/**\n * Returns the original source, line, and column information for the generated\n * source's line and column positions provided. The only argument is an object\n * with the following properties:\n *\n * - line: The line number in the generated source. The line number\n * is 1-based.\n * - column: The column number in the generated source. The column\n * number is 0-based.\n * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or\n * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the\n * closest element that is smaller than or greater than the one we are\n * searching for, respectively, if the exact element cannot be found.\n * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'.\n *\n * and an object is returned with the following properties:\n *\n * - source: The original source file, or null.\n * - line: The line number in the original source, or null. The\n * line number is 1-based.\n * - column: The column number in the original source, or null. The\n * column number is 0-based.\n * - name: The original identifier, or null.\n */\nBasicSourceMapConsumer.prototype.originalPositionFor =\n function SourceMapConsumer_originalPositionFor(aArgs) {\n var needle = {\n generatedLine: util.getArg(aArgs, 'line'),\n generatedColumn: util.getArg(aArgs, 'column')\n };\n\n var index = this._findMapping(\n needle,\n this._generatedMappings,\n \"generatedLine\",\n \"generatedColumn\",\n util.compareByGeneratedPositionsDeflated,\n util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND)\n );\n\n if (index >= 0) {\n var mapping = this._generatedMappings[index];\n\n if (mapping.generatedLine === needle.generatedLine) {\n var source = util.getArg(mapping, 'source', null);\n if (source !== null) {\n source = this._sources.at(source);\n source = util.computeSourceURL(this.sourceRoot, source, this._sourceMapURL);\n }\n var name = util.getArg(mapping, 'name', null);\n if (name !== null) {\n name = this._names.at(name);\n }\n return {\n source: source,\n line: util.getArg(mapping, 'originalLine', null),\n column: util.getArg(mapping, 'originalColumn', null),\n name: name\n };\n }\n }\n\n return {\n source: null,\n line: null,\n column: null,\n name: null\n };\n };\n\n/**\n * Return true if we have the source content for every source in the source\n * map, false otherwise.\n */\nBasicSourceMapConsumer.prototype.hasContentsOfAllSources =\n function BasicSourceMapConsumer_hasContentsOfAllSources() {\n if (!this.sourcesContent) {\n return false;\n }\n return this.sourcesContent.length >= this._sources.size() &&\n !this.sourcesContent.some(function (sc) { return sc == null; });\n };\n\n/**\n * Returns the original source content. The only argument is the url of the\n * original source file. Returns null if no original source content is\n * available.\n */\nBasicSourceMapConsumer.prototype.sourceContentFor =\n function SourceMapConsumer_sourceContentFor(aSource, nullOnMissing) {\n if (!this.sourcesContent) {\n return null;\n }\n\n var index = this._findSourceIndex(aSource);\n if (index >= 0) {\n return this.sourcesContent[index];\n }\n\n var relativeSource = aSource;\n if (this.sourceRoot != null) {\n relativeSource = util.relative(this.sourceRoot, relativeSource);\n }\n\n var url;\n if (this.sourceRoot != null\n && (url = util.urlParse(this.sourceRoot))) {\n // XXX: file:// URIs and absolute paths lead to unexpected behavior for\n // many users. We can help them out when they expect file:// URIs to\n // behave like it would if they were running a local HTTP server. See\n // https://bugzilla.mozilla.org/show_bug.cgi?id=885597.\n var fileUriAbsPath = relativeSource.replace(/^file:\\/\\//, \"\");\n if (url.scheme == \"file\"\n && this._sources.has(fileUriAbsPath)) {\n return this.sourcesContent[this._sources.indexOf(fileUriAbsPath)]\n }\n\n if ((!url.path || url.path == \"/\")\n && this._sources.has(\"/\" + relativeSource)) {\n return this.sourcesContent[this._sources.indexOf(\"/\" + relativeSource)];\n }\n }\n\n // This function is used recursively from\n // IndexedSourceMapConsumer.prototype.sourceContentFor. In that case, we\n // don't want to throw if we can't find the source - we just want to\n // return null, so we provide a flag to exit gracefully.\n if (nullOnMissing) {\n return null;\n }\n else {\n throw new Error('\"' + relativeSource + '\" is not in the SourceMap.');\n }\n };\n\n/**\n * Returns the generated line and column information for the original source,\n * line, and column positions provided. The only argument is an object with\n * the following properties:\n *\n * - source: The filename of the original source.\n * - line: The line number in the original source. The line number\n * is 1-based.\n * - column: The column number in the original source. The column\n * number is 0-based.\n * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or\n * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the\n * closest element that is smaller than or greater than the one we are\n * searching for, respectively, if the exact element cannot be found.\n * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'.\n *\n * and an object is returned with the following properties:\n *\n * - line: The line number in the generated source, or null. The\n * line number is 1-based.\n * - column: The column number in the generated source, or null.\n * The column number is 0-based.\n */\nBasicSourceMapConsumer.prototype.generatedPositionFor =\n function SourceMapConsumer_generatedPositionFor(aArgs) {\n var source = util.getArg(aArgs, 'source');\n source = this._findSourceIndex(source);\n if (source < 0) {\n return {\n line: null,\n column: null,\n lastColumn: null\n };\n }\n\n var needle = {\n source: source,\n originalLine: util.getArg(aArgs, 'line'),\n originalColumn: util.getArg(aArgs, 'column')\n };\n\n var index = this._findMapping(\n needle,\n this._originalMappings,\n \"originalLine\",\n \"originalColumn\",\n util.compareByOriginalPositions,\n util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND)\n );\n\n if (index >= 0) {\n var mapping = this._originalMappings[index];\n\n if (mapping.source === needle.source) {\n return {\n line: util.getArg(mapping, 'generatedLine', null),\n column: util.getArg(mapping, 'generatedColumn', null),\n lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)\n };\n }\n }\n\n return {\n line: null,\n column: null,\n lastColumn: null\n };\n };\n\nexports.BasicSourceMapConsumer = BasicSourceMapConsumer;\n\n/**\n * An IndexedSourceMapConsumer instance represents a parsed source map which\n * we can query for information. It differs from BasicSourceMapConsumer in\n * that it takes \"indexed\" source maps (i.e. ones with a \"sections\" field) as\n * input.\n *\n * The first parameter is a raw source map (either as a JSON string, or already\n * parsed to an object). According to the spec for indexed source maps, they\n * have the following attributes:\n *\n * - version: Which version of the source map spec this map is following.\n * - file: Optional. The generated file this source map is associated with.\n * - sections: A list of section definitions.\n *\n * Each value under the \"sections\" field has two fields:\n * - offset: The offset into the original specified at which this section\n * begins to apply, defined as an object with a \"line\" and \"column\"\n * field.\n * - map: A source map definition. This source map could also be indexed,\n * but doesn't have to be.\n *\n * Instead of the \"map\" field, it's also possible to have a \"url\" field\n * specifying a URL to retrieve a source map from, but that's currently\n * unsupported.\n *\n * Here's an example source map, taken from the source map spec[0], but\n * modified to omit a section which uses the \"url\" field.\n *\n * {\n * version : 3,\n * file: \"app.js\",\n * sections: [{\n * offset: {line:100, column:10},\n * map: {\n * version : 3,\n * file: \"section.js\",\n * sources: [\"foo.js\", \"bar.js\"],\n * names: [\"src\", \"maps\", \"are\", \"fun\"],\n * mappings: \"AAAA,E;;ABCDE;\"\n * }\n * }],\n * }\n *\n * The second parameter, if given, is a string whose value is the URL\n * at which the source map was found. This URL is used to compute the\n * sources array.\n *\n * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit#heading=h.535es3xeprgt\n */\nfunction IndexedSourceMapConsumer(aSourceMap, aSourceMapURL) {\n var sourceMap = aSourceMap;\n if (typeof aSourceMap === 'string') {\n sourceMap = util.parseSourceMapInput(aSourceMap);\n }\n\n var version = util.getArg(sourceMap, 'version');\n var sections = util.getArg(sourceMap, 'sections');\n\n if (version != this._version) {\n throw new Error('Unsupported version: ' + version);\n }\n\n this._sources = new ArraySet();\n this._names = new ArraySet();\n\n var lastOffset = {\n line: -1,\n column: 0\n };\n this._sections = sections.map(function (s) {\n if (s.url) {\n // The url field will require support for asynchronicity.\n // See https://github.com/mozilla/source-map/issues/16\n throw new Error('Support for url field in sections not implemented.');\n }\n var offset = util.getArg(s, 'offset');\n var offsetLine = util.getArg(offset, 'line');\n var offsetColumn = util.getArg(offset, 'column');\n\n if (offsetLine < lastOffset.line ||\n (offsetLine === lastOffset.line && offsetColumn < lastOffset.column)) {\n throw new Error('Section offsets must be ordered and non-overlapping.');\n }\n lastOffset = offset;\n\n return {\n generatedOffset: {\n // The offset fields are 0-based, but we use 1-based indices when\n // encoding/decoding from VLQ.\n generatedLine: offsetLine + 1,\n generatedColumn: offsetColumn + 1\n },\n consumer: new SourceMapConsumer(util.getArg(s, 'map'), aSourceMapURL)\n }\n });\n}\n\nIndexedSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype);\nIndexedSourceMapConsumer.prototype.constructor = SourceMapConsumer;\n\n/**\n * The version of the source mapping spec that we are consuming.\n */\nIndexedSourceMapConsumer.prototype._version = 3;\n\n/**\n * The list of original sources.\n */\nObject.defineProperty(IndexedSourceMapConsumer.prototype, 'sources', {\n get: function () {\n var sources = [];\n for (var i = 0; i < this._sections.length; i++) {\n for (var j = 0; j < this._sections[i].consumer.sources.length; j++) {\n sources.push(this._sections[i].consumer.sources[j]);\n }\n }\n return sources;\n }\n});\n\n/**\n * Returns the original source, line, and column information for the generated\n * source's line and column positions provided. The only argument is an object\n * with the following properties:\n *\n * - line: The line number in the generated source. The line number\n * is 1-based.\n * - column: The column number in the generated source. The column\n * number is 0-based.\n *\n * and an object is returned with the following properties:\n *\n * - source: The original source file, or null.\n * - line: The line number in the original source, or null. The\n * line number is 1-based.\n * - column: The column number in the original source, or null. The\n * column number is 0-based.\n * - name: The original identifier, or null.\n */\nIndexedSourceMapConsumer.prototype.originalPositionFor =\n function IndexedSourceMapConsumer_originalPositionFor(aArgs) {\n var needle = {\n generatedLine: util.getArg(aArgs, 'line'),\n generatedColumn: util.getArg(aArgs, 'column')\n };\n\n // Find the section containing the generated position we're trying to map\n // to an original position.\n var sectionIndex = binarySearch.search(needle, this._sections,\n function(needle, section) {\n var cmp = needle.generatedLine - section.generatedOffset.generatedLine;\n if (cmp) {\n return cmp;\n }\n\n return (needle.generatedColumn -\n section.generatedOffset.generatedColumn);\n });\n var section = this._sections[sectionIndex];\n\n if (!section) {\n return {\n source: null,\n line: null,\n column: null,\n name: null\n };\n }\n\n return section.consumer.originalPositionFor({\n line: needle.generatedLine -\n (section.generatedOffset.generatedLine - 1),\n column: needle.generatedColumn -\n (section.generatedOffset.generatedLine === needle.generatedLine\n ? section.generatedOffset.generatedColumn - 1\n : 0),\n bias: aArgs.bias\n });\n };\n\n/**\n * Return true if we have the source content for every source in the source\n * map, false otherwise.\n */\nIndexedSourceMapConsumer.prototype.hasContentsOfAllSources =\n function IndexedSourceMapConsumer_hasContentsOfAllSources() {\n return this._sections.every(function (s) {\n return s.consumer.hasContentsOfAllSources();\n });\n };\n\n/**\n * Returns the original source content. The only argument is the url of the\n * original source file. Returns null if no original source content is\n * available.\n */\nIndexedSourceMapConsumer.prototype.sourceContentFor =\n function IndexedSourceMapConsumer_sourceContentFor(aSource, nullOnMissing) {\n for (var i = 0; i < this._sections.length; i++) {\n var section = this._sections[i];\n\n var content = section.consumer.sourceContentFor(aSource, true);\n if (content) {\n return content;\n }\n }\n if (nullOnMissing) {\n return null;\n }\n else {\n throw new Error('\"' + aSource + '\" is not in the SourceMap.');\n }\n };\n\n/**\n * Returns the generated line and column information for the original source,\n * line, and column positions provided. The only argument is an object with\n * the following properties:\n *\n * - source: The filename of the original source.\n * - line: The line number in the original source. The line number\n * is 1-based.\n * - column: The column number in the original source. The column\n * number is 0-based.\n *\n * and an object is returned with the following properties:\n *\n * - line: The line number in the generated source, or null. The\n * line number is 1-based. \n * - column: The column number in the generated source, or null.\n * The column number is 0-based.\n */\nIndexedSourceMapConsumer.prototype.generatedPositionFor =\n function IndexedSourceMapConsumer_generatedPositionFor(aArgs) {\n for (var i = 0; i < this._sections.length; i++) {\n var section = this._sections[i];\n\n // Only consider this section if the requested source is in the list of\n // sources of the consumer.\n if (section.consumer._findSourceIndex(util.getArg(aArgs, 'source')) === -1) {\n continue;\n }\n var generatedPosition = section.consumer.generatedPositionFor(aArgs);\n if (generatedPosition) {\n var ret = {\n line: generatedPosition.line +\n (section.generatedOffset.generatedLine - 1),\n column: generatedPosition.column +\n (section.generatedOffset.generatedLine === generatedPosition.line\n ? section.generatedOffset.generatedColumn - 1\n : 0)\n };\n return ret;\n }\n }\n\n return {\n line: null,\n column: null\n };\n };\n\n/**\n * Parse the mappings in a string in to a data structure which we can easily\n * query (the ordered arrays in the `this.__generatedMappings` and\n * `this.__originalMappings` properties).\n */\nIndexedSourceMapConsumer.prototype._parseMappings =\n function IndexedSourceMapConsumer_parseMappings(aStr, aSourceRoot) {\n this.__generatedMappings = [];\n this.__originalMappings = [];\n for (var i = 0; i < this._sections.length; i++) {\n var section = this._sections[i];\n var sectionMappings = section.consumer._generatedMappings;\n for (var j = 0; j < sectionMappings.length; j++) {\n var mapping = sectionMappings[j];\n\n var source = section.consumer._sources.at(mapping.source);\n source = util.computeSourceURL(section.consumer.sourceRoot, source, this._sourceMapURL);\n this._sources.add(source);\n source = this._sources.indexOf(source);\n\n var name = null;\n if (mapping.name) {\n name = section.consumer._names.at(mapping.name);\n this._names.add(name);\n name = this._names.indexOf(name);\n }\n\n // The mappings coming from the consumer for the section have\n // generated positions relative to the start of the section, so we\n // need to offset them to be relative to the start of the concatenated\n // generated file.\n var adjustedMapping = {\n source: source,\n generatedLine: mapping.generatedLine +\n (section.generatedOffset.generatedLine - 1),\n generatedColumn: mapping.generatedColumn +\n (section.generatedOffset.generatedLine === mapping.generatedLine\n ? section.generatedOffset.generatedColumn - 1\n : 0),\n originalLine: mapping.originalLine,\n originalColumn: mapping.originalColumn,\n name: name\n };\n\n this.__generatedMappings.push(adjustedMapping);\n if (typeof adjustedMapping.originalLine === 'number') {\n this.__originalMappings.push(adjustedMapping);\n }\n }\n }\n\n quickSort(this.__generatedMappings, util.compareByGeneratedPositionsDeflated);\n quickSort(this.__originalMappings, util.compareByOriginalPositions);\n };\n\nexports.IndexedSourceMapConsumer = IndexedSourceMapConsumer;\n", "/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar SourceMapGenerator = require('./source-map-generator').SourceMapGenerator;\nvar util = require('./util');\n\n// Matches a Windows-style `\\r\\n` newline or a `\\n` newline used by all other\n// operating systems these days (capturing the result).\nvar REGEX_NEWLINE = /(\\r?\\n)/;\n\n// Newline character code for charCodeAt() comparisons\nvar NEWLINE_CODE = 10;\n\n// Private symbol for identifying `SourceNode`s when multiple versions of\n// the source-map library are loaded. This MUST NOT CHANGE across\n// versions!\nvar isSourceNode = \"$$$isSourceNode$$$\";\n\n/**\n * SourceNodes provide a way to abstract over interpolating/concatenating\n * snippets of generated JavaScript source code while maintaining the line and\n * column information associated with the original source code.\n *\n * @param aLine The original line number.\n * @param aColumn The original column number.\n * @param aSource The original source's filename.\n * @param aChunks Optional. An array of strings which are snippets of\n * generated JS, or other SourceNodes.\n * @param aName The original identifier.\n */\nfunction SourceNode(aLine, aColumn, aSource, aChunks, aName) {\n this.children = [];\n this.sourceContents = {};\n this.line = aLine == null ? null : aLine;\n this.column = aColumn == null ? null : aColumn;\n this.source = aSource == null ? null : aSource;\n this.name = aName == null ? null : aName;\n this[isSourceNode] = true;\n if (aChunks != null) this.add(aChunks);\n}\n\n/**\n * Creates a SourceNode from generated code and a SourceMapConsumer.\n *\n * @param aGeneratedCode The generated code\n * @param aSourceMapConsumer The SourceMap for the generated code\n * @param aRelativePath Optional. The path that relative sources in the\n * SourceMapConsumer should be relative to.\n */\nSourceNode.fromStringWithSourceMap =\n function SourceNode_fromStringWithSourceMap(aGeneratedCode, aSourceMapConsumer, aRelativePath) {\n // The SourceNode we want to fill with the generated code\n // and the SourceMap\n var node = new SourceNode();\n\n // All even indices of this array are one line of the generated code,\n // while all odd indices are the newlines between two adjacent lines\n // (since `REGEX_NEWLINE` captures its match).\n // Processed fragments are accessed by calling `shiftNextLine`.\n var remainingLines = aGeneratedCode.split(REGEX_NEWLINE);\n var remainingLinesIndex = 0;\n var shiftNextLine = function() {\n var lineContents = getNextLine();\n // The last line of a file might not have a newline.\n var newLine = getNextLine() || \"\";\n return lineContents + newLine;\n\n function getNextLine() {\n return remainingLinesIndex < remainingLines.length ?\n remainingLines[remainingLinesIndex++] : undefined;\n }\n };\n\n // We need to remember the position of \"remainingLines\"\n var lastGeneratedLine = 1, lastGeneratedColumn = 0;\n\n // The generate SourceNodes we need a code range.\n // To extract it current and last mapping is used.\n // Here we store the last mapping.\n var lastMapping = null;\n\n aSourceMapConsumer.eachMapping(function (mapping) {\n if (lastMapping !== null) {\n // We add the code from \"lastMapping\" to \"mapping\":\n // First check if there is a new line in between.\n if (lastGeneratedLine < mapping.generatedLine) {\n // Associate first line with \"lastMapping\"\n addMappingWithCode(lastMapping, shiftNextLine());\n lastGeneratedLine++;\n lastGeneratedColumn = 0;\n // The remaining code is added without mapping\n } else {\n // There is no new line in between.\n // Associate the code between \"lastGeneratedColumn\" and\n // \"mapping.generatedColumn\" with \"lastMapping\"\n var nextLine = remainingLines[remainingLinesIndex] || '';\n var code = nextLine.substr(0, mapping.generatedColumn -\n lastGeneratedColumn);\n remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn -\n lastGeneratedColumn);\n lastGeneratedColumn = mapping.generatedColumn;\n addMappingWithCode(lastMapping, code);\n // No more remaining code, continue\n lastMapping = mapping;\n return;\n }\n }\n // We add the generated code until the first mapping\n // to the SourceNode without any mapping.\n // Each line is added as separate string.\n while (lastGeneratedLine < mapping.generatedLine) {\n node.add(shiftNextLine());\n lastGeneratedLine++;\n }\n if (lastGeneratedColumn < mapping.generatedColumn) {\n var nextLine = remainingLines[remainingLinesIndex] || '';\n node.add(nextLine.substr(0, mapping.generatedColumn));\n remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn);\n lastGeneratedColumn = mapping.generatedColumn;\n }\n lastMapping = mapping;\n }, this);\n // We have processed all mappings.\n if (remainingLinesIndex < remainingLines.length) {\n if (lastMapping) {\n // Associate the remaining code in the current line with \"lastMapping\"\n addMappingWithCode(lastMapping, shiftNextLine());\n }\n // and add the remaining lines without any mapping\n node.add(remainingLines.splice(remainingLinesIndex).join(\"\"));\n }\n\n // Copy sourcesContent into SourceNode\n aSourceMapConsumer.sources.forEach(function (sourceFile) {\n var content = aSourceMapConsumer.sourceContentFor(sourceFile);\n if (content != null) {\n if (aRelativePath != null) {\n sourceFile = util.join(aRelativePath, sourceFile);\n }\n node.setSourceContent(sourceFile, content);\n }\n });\n\n return node;\n\n function addMappingWithCode(mapping, code) {\n if (mapping === null || mapping.source === undefined) {\n node.add(code);\n } else {\n var source = aRelativePath\n ? util.join(aRelativePath, mapping.source)\n : mapping.source;\n node.add(new SourceNode(mapping.originalLine,\n mapping.originalColumn,\n source,\n code,\n mapping.name));\n }\n }\n };\n\n/**\n * Add a chunk of generated JS to this source node.\n *\n * @param aChunk A string snippet of generated JS code, another instance of\n * SourceNode, or an array where each member is one of those things.\n */\nSourceNode.prototype.add = function SourceNode_add(aChunk) {\n if (Array.isArray(aChunk)) {\n aChunk.forEach(function (chunk) {\n this.add(chunk);\n }, this);\n }\n else if (aChunk[isSourceNode] || typeof aChunk === \"string\") {\n if (aChunk) {\n this.children.push(aChunk);\n }\n }\n else {\n throw new TypeError(\n \"Expected a SourceNode, string, or an array of SourceNodes and strings. Got \" + aChunk\n );\n }\n return this;\n};\n\n/**\n * Add a chunk of generated JS to the beginning of this source node.\n *\n * @param aChunk A string snippet of generated JS code, another instance of\n * SourceNode, or an array where each member is one of those things.\n */\nSourceNode.prototype.prepend = function SourceNode_prepend(aChunk) {\n if (Array.isArray(aChunk)) {\n for (var i = aChunk.length-1; i >= 0; i--) {\n this.prepend(aChunk[i]);\n }\n }\n else if (aChunk[isSourceNode] || typeof aChunk === \"string\") {\n this.children.unshift(aChunk);\n }\n else {\n throw new TypeError(\n \"Expected a SourceNode, string, or an array of SourceNodes and strings. Got \" + aChunk\n );\n }\n return this;\n};\n\n/**\n * Walk over the tree of JS snippets in this node and its children. The\n * walking function is called once for each snippet of JS and is passed that\n * snippet and the its original associated source's line/column location.\n *\n * @param aFn The traversal function.\n */\nSourceNode.prototype.walk = function SourceNode_walk(aFn) {\n var chunk;\n for (var i = 0, len = this.children.length; i < len; i++) {\n chunk = this.children[i];\n if (chunk[isSourceNode]) {\n chunk.walk(aFn);\n }\n else {\n if (chunk !== '') {\n aFn(chunk, { source: this.source,\n line: this.line,\n column: this.column,\n name: this.name });\n }\n }\n }\n};\n\n/**\n * Like `String.prototype.join` except for SourceNodes. Inserts `aStr` between\n * each of `this.children`.\n *\n * @param aSep The separator.\n */\nSourceNode.prototype.join = function SourceNode_join(aSep) {\n var newChildren;\n var i;\n var len = this.children.length;\n if (len > 0) {\n newChildren = [];\n for (i = 0; i < len-1; i++) {\n newChildren.push(this.children[i]);\n newChildren.push(aSep);\n }\n newChildren.push(this.children[i]);\n this.children = newChildren;\n }\n return this;\n};\n\n/**\n * Call String.prototype.replace on the very right-most source snippet. Useful\n * for trimming whitespace from the end of a source node, etc.\n *\n * @param aPattern The pattern to replace.\n * @param aReplacement The thing to replace the pattern with.\n */\nSourceNode.prototype.replaceRight = function SourceNode_replaceRight(aPattern, aReplacement) {\n var lastChild = this.children[this.children.length - 1];\n if (lastChild[isSourceNode]) {\n lastChild.replaceRight(aPattern, aReplacement);\n }\n else if (typeof lastChild === 'string') {\n this.children[this.children.length - 1] = lastChild.replace(aPattern, aReplacement);\n }\n else {\n this.children.push(''.replace(aPattern, aReplacement));\n }\n return this;\n};\n\n/**\n * Set the source content for a source file. This will be added to the SourceMapGenerator\n * in the sourcesContent field.\n *\n * @param aSourceFile The filename of the source file\n * @param aSourceContent The content of the source file\n */\nSourceNode.prototype.setSourceContent =\n function SourceNode_setSourceContent(aSourceFile, aSourceContent) {\n this.sourceContents[util.toSetString(aSourceFile)] = aSourceContent;\n };\n\n/**\n * Walk over the tree of SourceNodes. The walking function is called for each\n * source file content and is passed the filename and source content.\n *\n * @param aFn The traversal function.\n */\nSourceNode.prototype.walkSourceContents =\n function SourceNode_walkSourceContents(aFn) {\n for (var i = 0, len = this.children.length; i < len; i++) {\n if (this.children[i][isSourceNode]) {\n this.children[i].walkSourceContents(aFn);\n }\n }\n\n var sources = Object.keys(this.sourceContents);\n for (var i = 0, len = sources.length; i < len; i++) {\n aFn(util.fromSetString(sources[i]), this.sourceContents[sources[i]]);\n }\n };\n\n/**\n * Return the string representation of this source node. Walks over the tree\n * and concatenates all the various snippets together to one string.\n */\nSourceNode.prototype.toString = function SourceNode_toString() {\n var str = \"\";\n this.walk(function (chunk) {\n str += chunk;\n });\n return str;\n};\n\n/**\n * Returns the string representation of this source node along with a source\n * map.\n */\nSourceNode.prototype.toStringWithSourceMap = function SourceNode_toStringWithSourceMap(aArgs) {\n var generated = {\n code: \"\",\n line: 1,\n column: 0\n };\n var map = new SourceMapGenerator(aArgs);\n var sourceMappingActive = false;\n var lastOriginalSource = null;\n var lastOriginalLine = null;\n var lastOriginalColumn = null;\n var lastOriginalName = null;\n this.walk(function (chunk, original) {\n generated.code += chunk;\n if (original.source !== null\n && original.line !== null\n && original.column !== null) {\n if(lastOriginalSource !== original.source\n || lastOriginalLine !== original.line\n || lastOriginalColumn !== original.column\n || lastOriginalName !== original.name) {\n map.addMapping({\n source: original.source,\n original: {\n line: original.line,\n column: original.column\n },\n generated: {\n line: generated.line,\n column: generated.column\n },\n name: original.name\n });\n }\n lastOriginalSource = original.source;\n lastOriginalLine = original.line;\n lastOriginalColumn = original.column;\n lastOriginalName = original.name;\n sourceMappingActive = true;\n } else if (sourceMappingActive) {\n map.addMapping({\n generated: {\n line: generated.line,\n column: generated.column\n }\n });\n lastOriginalSource = null;\n sourceMappingActive = false;\n }\n for (var idx = 0, length = chunk.length; idx < length; idx++) {\n if (chunk.charCodeAt(idx) === NEWLINE_CODE) {\n generated.line++;\n generated.column = 0;\n // Mappings end at eol\n if (idx + 1 === length) {\n lastOriginalSource = null;\n sourceMappingActive = false;\n } else if (sourceMappingActive) {\n map.addMapping({\n source: original.source,\n original: {\n line: original.line,\n column: original.column\n },\n generated: {\n line: generated.line,\n column: generated.column\n },\n name: original.name\n });\n }\n } else {\n generated.column++;\n }\n }\n });\n this.walkSourceContents(function (sourceFile, sourceContent) {\n map.setSourceContent(sourceFile, sourceContent);\n });\n\n return { code: generated.code, map: map };\n};\n\nexports.SourceNode = SourceNode;\n", "/*\n * Copyright 2009-2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE.txt or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\nexports.SourceMapGenerator = require('./lib/source-map-generator').SourceMapGenerator;\nexports.SourceMapConsumer = require('./lib/source-map-consumer').SourceMapConsumer;\nexports.SourceNode = require('./lib/source-node').SourceNode;\n", "/* eslint-disable node/no-deprecated-api */\n\nvar toString = Object.prototype.toString\n\nvar isModern = (\n typeof Buffer !== 'undefined' &&\n typeof Buffer.alloc === 'function' &&\n typeof Buffer.allocUnsafe === 'function' &&\n typeof Buffer.from === 'function'\n)\n\nfunction isArrayBuffer (input) {\n return toString.call(input).slice(8, -1) === 'ArrayBuffer'\n}\n\nfunction fromArrayBuffer (obj, byteOffset, length) {\n byteOffset >>>= 0\n\n var maxLength = obj.byteLength - byteOffset\n\n if (maxLength < 0) {\n throw new RangeError(\"'offset' is out of bounds\")\n }\n\n if (length === undefined) {\n length = maxLength\n } else {\n length >>>= 0\n\n if (length > maxLength) {\n throw new RangeError(\"'length' is out of bounds\")\n }\n }\n\n return isModern\n ? Buffer.from(obj.slice(byteOffset, byteOffset + length))\n : new Buffer(new Uint8Array(obj.slice(byteOffset, byteOffset + length)))\n}\n\nfunction fromString (string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('\"encoding\" must be a valid string encoding')\n }\n\n return isModern\n ? Buffer.from(string, encoding)\n : new Buffer(string, encoding)\n}\n\nfunction bufferFrom (value, encodingOrOffset, length) {\n if (typeof value === 'number') {\n throw new TypeError('\"value\" argument must not be a number')\n }\n\n if (isArrayBuffer(value)) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof value === 'string') {\n return fromString(value, encodingOrOffset)\n }\n\n return isModern\n ? Buffer.from(value)\n : new Buffer(value)\n}\n\nmodule.exports = bufferFrom\n", "var SourceMapConsumer = require('source-map').SourceMapConsumer;\nvar path = require('path');\n\nvar fs;\ntry {\n fs = require('fs');\n if (!fs.existsSync || !fs.readFileSync) {\n // fs doesn't have all methods we need\n fs = null;\n }\n} catch (err) {\n /* nop */\n}\n\nvar bufferFrom = require('buffer-from');\n\n/**\n * Requires a module which is protected against bundler minification.\n *\n * @param {NodeModule} mod\n * @param {string} request\n */\nfunction dynamicRequire(mod, request) {\n return mod.require(request);\n}\n\n// Only install once if called multiple times\nvar errorFormatterInstalled = false;\nvar uncaughtShimInstalled = false;\n\n// If true, the caches are reset before a stack trace formatting operation\nvar emptyCacheBetweenOperations = false;\n\n// Supports {browser, node, auto}\nvar environment = \"auto\";\n\n// Maps a file path to a string containing the file contents\nvar fileContentsCache = {};\n\n// Maps a file path to a source map for that file\nvar sourceMapCache = {};\n\n// Regex for detecting source maps\nvar reSourceMap = /^data:application\\/json[^,]+base64,/;\n\n// Priority list of retrieve handlers\nvar retrieveFileHandlers = [];\nvar retrieveMapHandlers = [];\n\nfunction isInBrowser() {\n if (environment === \"browser\")\n return true;\n if (environment === \"node\")\n return false;\n return ((typeof window !== 'undefined') && (typeof XMLHttpRequest === 'function') && !(window.require && window.module && window.process && window.process.type === \"renderer\"));\n}\n\nfunction hasGlobalProcessEventEmitter() {\n return ((typeof process === 'object') && (process !== null) && (typeof process.on === 'function'));\n}\n\nfunction globalProcessVersion() {\n if ((typeof process === 'object') && (process !== null)) {\n return process.version;\n } else {\n return '';\n }\n}\n\nfunction globalProcessStderr() {\n if ((typeof process === 'object') && (process !== null)) {\n return process.stderr;\n }\n}\n\nfunction globalProcessExit(code) {\n if ((typeof process === 'object') && (process !== null) && (typeof process.exit === 'function')) {\n return process.exit(code);\n }\n}\n\nfunction handlerExec(list) {\n return function(arg) {\n for (var i = 0; i < list.length; i++) {\n var ret = list[i](arg);\n if (ret) {\n return ret;\n }\n }\n return null;\n };\n}\n\nvar retrieveFile = handlerExec(retrieveFileHandlers);\n\nretrieveFileHandlers.push(function(path) {\n // Trim the path to make sure there is no extra whitespace.\n path = path.trim();\n if (/^file:/.test(path)) {\n // existsSync/readFileSync can't handle file protocol, but once stripped, it works\n path = path.replace(/file:\\/\\/\\/(\\w:)?/, function(protocol, drive) {\n return drive ?\n '' : // file:///C:/dir/file -> C:/dir/file\n '/'; // file:///root-dir/file -> /root-dir/file\n });\n }\n if (path in fileContentsCache) {\n return fileContentsCache[path];\n }\n\n var contents = '';\n try {\n if (!fs) {\n // Use SJAX if we are in the browser\n var xhr = new XMLHttpRequest();\n xhr.open('GET', path, /** async */ false);\n xhr.send(null);\n if (xhr.readyState === 4 && xhr.status === 200) {\n contents = xhr.responseText;\n }\n } else if (fs.existsSync(path)) {\n // Otherwise, use the filesystem\n contents = fs.readFileSync(path, 'utf8');\n }\n } catch (er) {\n /* ignore any errors */\n }\n\n return fileContentsCache[path] = contents;\n});\n\n// Support URLs relative to a directory, but be careful about a protocol prefix\n// in case we are in the browser (i.e. directories may start with \"http://\" or \"file:///\")\nfunction supportRelativeURL(file, url) {\n if (!file) return url;\n var dir = path.dirname(file);\n var match = /^\\w+:\\/\\/[^\\/]*/.exec(dir);\n var protocol = match ? match[0] : '';\n var startPath = dir.slice(protocol.length);\n if (protocol && /^\\/\\w\\:/.test(startPath)) {\n // handle file:///C:/ paths\n protocol += '/';\n return protocol + path.resolve(dir.slice(protocol.length), url).replace(/\\\\/g, '/');\n }\n return protocol + path.resolve(dir.slice(protocol.length), url);\n}\n\nfunction retrieveSourceMapURL(source) {\n var fileData;\n\n if (isInBrowser()) {\n try {\n var xhr = new XMLHttpRequest();\n xhr.open('GET', source, false);\n xhr.send(null);\n fileData = xhr.readyState === 4 ? xhr.responseText : null;\n\n // Support providing a sourceMappingURL via the SourceMap header\n var sourceMapHeader = xhr.getResponseHeader(\"SourceMap\") ||\n xhr.getResponseHeader(\"X-SourceMap\");\n if (sourceMapHeader) {\n return sourceMapHeader;\n }\n } catch (e) {\n }\n }\n\n // Get the URL of the source map\n fileData = retrieveFile(source);\n var re = /(?:\\/\\/[@#][\\s]*sourceMappingURL=([^\\s'\"]+)[\\s]*$)|(?:\\/\\*[@#][\\s]*sourceMappingURL=([^\\s*'\"]+)[\\s]*(?:\\*\\/)[\\s]*$)/mg;\n // Keep executing the search to find the *last* sourceMappingURL to avoid\n // picking up sourceMappingURLs from comments, strings, etc.\n var lastMatch, match;\n while (match = re.exec(fileData)) lastMatch = match;\n if (!lastMatch) return null;\n return lastMatch[1];\n};\n\n// Can be overridden by the retrieveSourceMap option to install. Takes a\n// generated source filename; returns a {map, optional url} object, or null if\n// there is no source map. The map field may be either a string or the parsed\n// JSON object (ie, it must be a valid argument to the SourceMapConsumer\n// constructor).\nvar retrieveSourceMap = handlerExec(retrieveMapHandlers);\nretrieveMapHandlers.push(function(source) {\n var sourceMappingURL = retrieveSourceMapURL(source);\n if (!sourceMappingURL) return null;\n\n // Read the contents of the source map\n var sourceMapData;\n if (reSourceMap.test(sourceMappingURL)) {\n // Support source map URL as a data url\n var rawData = sourceMappingURL.slice(sourceMappingURL.indexOf(',') + 1);\n sourceMapData = bufferFrom(rawData, \"base64\").toString();\n sourceMappingURL = source;\n } else {\n // Support source map URLs relative to the source URL\n sourceMappingURL = supportRelativeURL(source, sourceMappingURL);\n sourceMapData = retrieveFile(sourceMappingURL);\n }\n\n if (!sourceMapData) {\n return null;\n }\n\n return {\n url: sourceMappingURL,\n map: sourceMapData\n };\n});\n\nfunction mapSourcePosition(position) {\n var sourceMap = sourceMapCache[position.source];\n if (!sourceMap) {\n // Call the (overrideable) retrieveSourceMap function to get the source map.\n var urlAndMap = retrieveSourceMap(position.source);\n if (urlAndMap) {\n sourceMap = sourceMapCache[position.source] = {\n url: urlAndMap.url,\n map: new SourceMapConsumer(urlAndMap.map)\n };\n\n // Load all sources stored inline with the source map into the file cache\n // to pretend like they are already loaded. They may not exist on disk.\n if (sourceMap.map.sourcesContent) {\n sourceMap.map.sources.forEach(function(source, i) {\n var contents = sourceMap.map.sourcesContent[i];\n if (contents) {\n var url = supportRelativeURL(sourceMap.url, source);\n fileContentsCache[url] = contents;\n }\n });\n }\n } else {\n sourceMap = sourceMapCache[position.source] = {\n url: null,\n map: null\n };\n }\n }\n\n // Resolve the source URL relative to the URL of the source map\n if (sourceMap && sourceMap.map && typeof sourceMap.map.originalPositionFor === 'function') {\n var originalPosition = sourceMap.map.originalPositionFor(position);\n\n // Only return the original position if a matching line was found. If no\n // matching line is found then we return position instead, which will cause\n // the stack trace to print the path and line for the compiled file. It is\n // better to give a precise location in the compiled file than a vague\n // location in the original file.\n if (originalPosition.source !== null) {\n originalPosition.source = supportRelativeURL(\n sourceMap.url, originalPosition.source);\n return originalPosition;\n }\n }\n\n return position;\n}\n\n// Parses code generated by FormatEvalOrigin(), a function inside V8:\n// https://code.google.com/p/v8/source/browse/trunk/src/messages.js\nfunction mapEvalOrigin(origin) {\n // Most eval() calls are in this format\n var match = /^eval at ([^(]+) \\((.+):(\\d+):(\\d+)\\)$/.exec(origin);\n if (match) {\n var position = mapSourcePosition({\n source: match[2],\n line: +match[3],\n column: match[4] - 1\n });\n return 'eval at ' + match[1] + ' (' + position.source + ':' +\n position.line + ':' + (position.column + 1) + ')';\n }\n\n // Parse nested eval() calls using recursion\n match = /^eval at ([^(]+) \\((.+)\\)$/.exec(origin);\n if (match) {\n return 'eval at ' + match[1] + ' (' + mapEvalOrigin(match[2]) + ')';\n }\n\n // Make sure we still return useful information if we didn't find anything\n return origin;\n}\n\n// This is copied almost verbatim from the V8 source code at\n// https://code.google.com/p/v8/source/browse/trunk/src/messages.js. The\n// implementation of wrapCallSite() used to just forward to the actual source\n// code of CallSite.prototype.toString but unfortunately a new release of V8\n// did something to the prototype chain and broke the shim. The only fix I\n// could find was copy/paste.\nfunction CallSiteToString() {\n var fileName;\n var fileLocation = \"\";\n if (this.isNative()) {\n fileLocation = \"native\";\n } else {\n fileName = this.getScriptNameOrSourceURL();\n if (!fileName && this.isEval()) {\n fileLocation = this.getEvalOrigin();\n fileLocation += \", \"; // Expecting source position to follow.\n }\n\n if (fileName) {\n fileLocation += fileName;\n } else {\n // Source code does not originate from a file and is not native, but we\n // can still get the source position inside the source string, e.g. in\n // an eval string.\n fileLocation += \"\";\n }\n var lineNumber = this.getLineNumber();\n if (lineNumber != null) {\n fileLocation += \":\" + lineNumber;\n var columnNumber = this.getColumnNumber();\n if (columnNumber) {\n fileLocation += \":\" + columnNumber;\n }\n }\n }\n\n var line = \"\";\n var functionName = this.getFunctionName();\n var addSuffix = true;\n var isConstructor = this.isConstructor();\n var isMethodCall = !(this.isToplevel() || isConstructor);\n if (isMethodCall) {\n var typeName = this.getTypeName();\n // Fixes shim to be backward compatable with Node v0 to v4\n if (typeName === \"[object Object]\") {\n typeName = \"null\";\n }\n var methodName = this.getMethodName();\n if (functionName) {\n if (typeName && functionName.indexOf(typeName) != 0) {\n line += typeName + \".\";\n }\n line += functionName;\n if (methodName && functionName.indexOf(\".\" + methodName) != functionName.length - methodName.length - 1) {\n line += \" [as \" + methodName + \"]\";\n }\n } else {\n line += typeName + \".\" + (methodName || \"\");\n }\n } else if (isConstructor) {\n line += \"new \" + (functionName || \"\");\n } else if (functionName) {\n line += functionName;\n } else {\n line += fileLocation;\n addSuffix = false;\n }\n if (addSuffix) {\n line += \" (\" + fileLocation + \")\";\n }\n return line;\n}\n\nfunction cloneCallSite(frame) {\n var object = {};\n Object.getOwnPropertyNames(Object.getPrototypeOf(frame)).forEach(function(name) {\n object[name] = /^(?:is|get)/.test(name) ? function() { return frame[name].call(frame); } : frame[name];\n });\n object.toString = CallSiteToString;\n return object;\n}\n\nfunction wrapCallSite(frame, state) {\n // provides interface backward compatibility\n if (state === undefined) {\n state = { nextPosition: null, curPosition: null }\n }\n if(frame.isNative()) {\n state.curPosition = null;\n return frame;\n }\n\n // Most call sites will return the source file from getFileName(), but code\n // passed to eval() ending in \"//# sourceURL=...\" will return the source file\n // from getScriptNameOrSourceURL() instead\n var source = frame.getFileName() || frame.getScriptNameOrSourceURL();\n if (source) {\n var line = frame.getLineNumber();\n var column = frame.getColumnNumber() - 1;\n\n // Fix position in Node where some (internal) code is prepended.\n // See https://github.com/evanw/node-source-map-support/issues/36\n // Header removed in node at ^10.16 || >=11.11.0\n // v11 is not an LTS candidate, we can just test the one version with it.\n // Test node versions for: 10.16-19, 10.20+, 12-19, 20-99, 100+, or 11.11\n var noHeader = /^v(10\\.1[6-9]|10\\.[2-9][0-9]|10\\.[0-9]{3,}|1[2-9]\\d*|[2-9]\\d|\\d{3,}|11\\.11)/;\n var headerLength = noHeader.test(globalProcessVersion()) ? 0 : 62;\n if (line === 1 && column > headerLength && !isInBrowser() && !frame.isEval()) {\n column -= headerLength;\n }\n\n var position = mapSourcePosition({\n source: source,\n line: line,\n column: column\n });\n state.curPosition = position;\n frame = cloneCallSite(frame);\n var originalFunctionName = frame.getFunctionName;\n frame.getFunctionName = function() {\n if (state.nextPosition == null) {\n return originalFunctionName();\n }\n return state.nextPosition.name || originalFunctionName();\n };\n frame.getFileName = function() { return position.source; };\n frame.getLineNumber = function() { return position.line; };\n frame.getColumnNumber = function() { return position.column + 1; };\n frame.getScriptNameOrSourceURL = function() { return position.source; };\n return frame;\n }\n\n // Code called using eval() needs special handling\n var origin = frame.isEval() && frame.getEvalOrigin();\n if (origin) {\n origin = mapEvalOrigin(origin);\n frame = cloneCallSite(frame);\n frame.getEvalOrigin = function() { return origin; };\n return frame;\n }\n\n // If we get here then we were unable to change the source position\n return frame;\n}\n\n// This function is part of the V8 stack trace API, for more info see:\n// https://v8.dev/docs/stack-trace-api\nfunction prepareStackTrace(error, stack) {\n if (emptyCacheBetweenOperations) {\n fileContentsCache = {};\n sourceMapCache = {};\n }\n\n var name = error.name || 'Error';\n var message = error.message || '';\n var errorString = name + \": \" + message;\n\n var state = { nextPosition: null, curPosition: null };\n var processedStack = [];\n for (var i = stack.length - 1; i >= 0; i--) {\n processedStack.push('\\n at ' + wrapCallSite(stack[i], state));\n state.nextPosition = state.curPosition;\n }\n state.curPosition = state.nextPosition = null;\n return errorString + processedStack.reverse().join('');\n}\n\n// Generate position and snippet of original source with pointer\nfunction getErrorSource(error) {\n var match = /\\n at [^(]+ \\((.*):(\\d+):(\\d+)\\)/.exec(error.stack);\n if (match) {\n var source = match[1];\n var line = +match[2];\n var column = +match[3];\n\n // Support the inline sourceContents inside the source map\n var contents = fileContentsCache[source];\n\n // Support files on disk\n if (!contents && fs && fs.existsSync(source)) {\n try {\n contents = fs.readFileSync(source, 'utf8');\n } catch (er) {\n contents = '';\n }\n }\n\n // Format the line from the original source code like node does\n if (contents) {\n var code = contents.split(/(?:\\r\\n|\\r|\\n)/)[line - 1];\n if (code) {\n return source + ':' + line + '\\n' + code + '\\n' +\n new Array(column).join(' ') + '^';\n }\n }\n }\n return null;\n}\n\nfunction printErrorAndExit (error) {\n var source = getErrorSource(error);\n\n // Ensure error is printed synchronously and not truncated\n var stderr = globalProcessStderr();\n if (stderr && stderr._handle && stderr._handle.setBlocking) {\n stderr._handle.setBlocking(true);\n }\n\n if (source) {\n console.error();\n console.error(source);\n }\n\n console.error(error.stack);\n globalProcessExit(1);\n}\n\nfunction shimEmitUncaughtException () {\n var origEmit = process.emit;\n\n process.emit = function (type) {\n if (type === 'uncaughtException') {\n var hasStack = (arguments[1] && arguments[1].stack);\n var hasListeners = (this.listeners(type).length > 0);\n\n if (hasStack && !hasListeners) {\n return printErrorAndExit(arguments[1]);\n }\n }\n\n return origEmit.apply(this, arguments);\n };\n}\n\nvar originalRetrieveFileHandlers = retrieveFileHandlers.slice(0);\nvar originalRetrieveMapHandlers = retrieveMapHandlers.slice(0);\n\nexports.wrapCallSite = wrapCallSite;\nexports.getErrorSource = getErrorSource;\nexports.mapSourcePosition = mapSourcePosition;\nexports.retrieveSourceMap = retrieveSourceMap;\n\nexports.install = function(options) {\n options = options || {};\n\n if (options.environment) {\n environment = options.environment;\n if ([\"node\", \"browser\", \"auto\"].indexOf(environment) === -1) {\n throw new Error(\"environment \" + environment + \" was unknown. Available options are {auto, browser, node}\")\n }\n }\n\n // Allow sources to be found by methods other than reading the files\n // directly from disk.\n if (options.retrieveFile) {\n if (options.overrideRetrieveFile) {\n retrieveFileHandlers.length = 0;\n }\n\n retrieveFileHandlers.unshift(options.retrieveFile);\n }\n\n // Allow source maps to be found by methods other than reading the files\n // directly from disk.\n if (options.retrieveSourceMap) {\n if (options.overrideRetrieveSourceMap) {\n retrieveMapHandlers.length = 0;\n }\n\n retrieveMapHandlers.unshift(options.retrieveSourceMap);\n }\n\n // Support runtime transpilers that include inline source maps\n if (options.hookRequire && !isInBrowser()) {\n // Use dynamicRequire to avoid including in browser bundles\n var Module = dynamicRequire(module, 'module');\n var $compile = Module.prototype._compile;\n\n if (!$compile.__sourceMapSupport) {\n Module.prototype._compile = function(content, filename) {\n fileContentsCache[filename] = content;\n sourceMapCache[filename] = undefined;\n return $compile.call(this, content, filename);\n };\n\n Module.prototype._compile.__sourceMapSupport = true;\n }\n }\n\n // Configure options\n if (!emptyCacheBetweenOperations) {\n emptyCacheBetweenOperations = 'emptyCacheBetweenOperations' in options ?\n options.emptyCacheBetweenOperations : false;\n }\n\n // Install the error reformatter\n if (!errorFormatterInstalled) {\n errorFormatterInstalled = true;\n Error.prepareStackTrace = prepareStackTrace;\n }\n\n if (!uncaughtShimInstalled) {\n var installHandler = 'handleUncaughtExceptions' in options ?\n options.handleUncaughtExceptions : true;\n\n // Do not override 'uncaughtException' with our own handler in Node.js\n // Worker threads. Workers pass the error to the main thread as an event,\n // rather than printing something to stderr and exiting.\n try {\n // We need to use `dynamicRequire` because `require` on it's own will be optimized by WebPack/Browserify.\n var worker_threads = dynamicRequire(module, 'worker_threads');\n if (worker_threads.isMainThread === false) {\n installHandler = false;\n }\n } catch(e) {}\n\n // Provide the option to not install the uncaught exception handler. This is\n // to support other uncaught exception handlers (in test frameworks, for\n // example). If this handler is not installed and there are no other uncaught\n // exception handlers, uncaught exceptions will be caught by node's built-in\n // exception handler and the process will still be terminated. However, the\n // generated JavaScript code will be shown above the stack trace instead of\n // the original source code.\n if (installHandler && hasGlobalProcessEventEmitter()) {\n uncaughtShimInstalled = true;\n shimEmitUncaughtException();\n }\n }\n};\n\nexports.resetRetrieveHandlers = function() {\n retrieveFileHandlers.length = 0;\n retrieveMapHandlers.length = 0;\n\n retrieveFileHandlers = originalRetrieveFileHandlers.slice(0);\n retrieveMapHandlers = originalRetrieveMapHandlers.slice(0);\n\n retrieveSourceMap = handlerExec(retrieveMapHandlers);\n retrieveFile = handlerExec(retrieveFileHandlers);\n}\n", null, null, "import crypto from 'crypto';\nconst rnds8Pool = new Uint8Array(256); // # of random values to pre-allocate\n\nlet poolPtr = rnds8Pool.length;\nexport default function rng() {\n if (poolPtr > rnds8Pool.length - 16) {\n crypto.randomFillSync(rnds8Pool);\n poolPtr = 0;\n }\n\n return rnds8Pool.slice(poolPtr, poolPtr += 16);\n}", "export 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;", "import REGEX from './regex.js';\n\nfunction validate(uuid) {\n return typeof uuid === 'string' && REGEX.test(uuid);\n}\n\nexport default validate;", "import validate from './validate.js';\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\n\nconst byteToHex = [];\n\nfor (let i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).substr(1));\n}\n\nfunction stringify(arr, offset = 0) {\n // Note: Be careful editing this code! It's been tuned for performance\n // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n 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(); // Consistency check for valid UUID. If this throws, it's likely due to one\n // of the following:\n // - One or more input array values don't map to a hex octet (leading to\n // \"undefined\" in the uuid)\n // - Invalid input values for the RFC `version` or `variant` fields\n\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n\n return uuid;\n}\n\nexport default stringify;", "import rng from './rng.js';\nimport stringify from './stringify.js'; // **`v1()` - Generate time-based UUID**\n//\n// Inspired by https://github.com/LiosK/UUID.js\n// and http://docs.python.org/library/uuid.html\n\nlet _nodeId;\n\nlet _clockseq; // Previous uuid creation time\n\n\nlet _lastMSecs = 0;\nlet _lastNSecs = 0; // See https://github.com/uuidjs/uuid for API details\n\nfunction v1(options, buf, offset) {\n let i = buf && offset || 0;\n const b = buf || new Array(16);\n options = options || {};\n let node = options.node || _nodeId;\n let clockseq = options.clockseq !== undefined ? options.clockseq : _clockseq; // node and clockseq need to be initialized to random values if they're not\n // specified. We do this lazily to minimize issues related to insufficient\n // system entropy. See #189\n\n if (node == null || clockseq == null) {\n const seedBytes = options.random || (options.rng || rng)();\n\n if (node == null) {\n // Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1)\n node = _nodeId = [seedBytes[0] | 0x01, seedBytes[1], seedBytes[2], seedBytes[3], seedBytes[4], seedBytes[5]];\n }\n\n if (clockseq == null) {\n // Per 4.2.2, randomize (14 bit) clockseq\n clockseq = _clockseq = (seedBytes[6] << 8 | seedBytes[7]) & 0x3fff;\n }\n } // UUID timestamps are 100 nano-second units since the Gregorian epoch,\n // (1582-10-15 00:00). JSNumbers aren't precise enough for this, so\n // time is handled internally as 'msecs' (integer milliseconds) and 'nsecs'\n // (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00.\n\n\n let msecs = options.msecs !== undefined ? options.msecs : Date.now(); // Per 4.2.1.2, use count of uuid's generated during the current clock\n // cycle to simulate higher resolution clock\n\n let nsecs = options.nsecs !== undefined ? options.nsecs : _lastNSecs + 1; // Time since last uuid creation (in msecs)\n\n const dt = msecs - _lastMSecs + (nsecs - _lastNSecs) / 10000; // Per 4.2.1.2, Bump clockseq on clock regression\n\n if (dt < 0 && options.clockseq === undefined) {\n clockseq = clockseq + 1 & 0x3fff;\n } // Reset nsecs if clock regresses (new clockseq) or we've moved onto a new\n // time interval\n\n\n if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === undefined) {\n nsecs = 0;\n } // Per 4.2.1.2 Throw error if too many uuids are requested\n\n\n if (nsecs >= 10000) {\n throw new Error(\"uuid.v1(): Can't create more than 10M uuids/sec\");\n }\n\n _lastMSecs = msecs;\n _lastNSecs = nsecs;\n _clockseq = clockseq; // Per 4.1.4 - Convert from unix epoch to Gregorian epoch\n\n msecs += 12219292800000; // `time_low`\n\n const tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000;\n b[i++] = tl >>> 24 & 0xff;\n b[i++] = tl >>> 16 & 0xff;\n b[i++] = tl >>> 8 & 0xff;\n b[i++] = tl & 0xff; // `time_mid`\n\n const tmh = msecs / 0x100000000 * 10000 & 0xfffffff;\n b[i++] = tmh >>> 8 & 0xff;\n b[i++] = tmh & 0xff; // `time_high_and_version`\n\n b[i++] = tmh >>> 24 & 0xf | 0x10; // include version\n\n b[i++] = tmh >>> 16 & 0xff; // `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant)\n\n b[i++] = clockseq >>> 8 | 0x80; // `clock_seq_low`\n\n b[i++] = clockseq & 0xff; // `node`\n\n for (let n = 0; n < 6; ++n) {\n b[i + n] = node[n];\n }\n\n return buf || stringify(b);\n}\n\nexport default v1;", "import validate from './validate.js';\n\nfunction parse(uuid) {\n if (!validate(uuid)) {\n throw TypeError('Invalid UUID');\n }\n\n let v;\n const arr = new Uint8Array(16); // Parse ########-....-....-....-............\n\n arr[0] = (v = parseInt(uuid.slice(0, 8), 16)) >>> 24;\n arr[1] = v >>> 16 & 0xff;\n arr[2] = v >>> 8 & 0xff;\n arr[3] = v & 0xff; // Parse ........-####-....-....-............\n\n arr[4] = (v = parseInt(uuid.slice(9, 13), 16)) >>> 8;\n arr[5] = v & 0xff; // Parse ........-....-####-....-............\n\n arr[6] = (v = parseInt(uuid.slice(14, 18), 16)) >>> 8;\n arr[7] = v & 0xff; // Parse ........-....-....-####-............\n\n arr[8] = (v = parseInt(uuid.slice(19, 23), 16)) >>> 8;\n arr[9] = v & 0xff; // Parse ........-....-....-....-############\n // (Use \"/\" to avoid 32-bit truncation when bit-shifting high-order bytes)\n\n arr[10] = (v = parseInt(uuid.slice(24, 36), 16)) / 0x10000000000 & 0xff;\n arr[11] = v / 0x100000000 & 0xff;\n arr[12] = v >>> 24 & 0xff;\n arr[13] = v >>> 16 & 0xff;\n arr[14] = v >>> 8 & 0xff;\n arr[15] = v & 0xff;\n return arr;\n}\n\nexport default parse;", "import stringify from './stringify.js';\nimport parse from './parse.js';\n\nfunction stringToBytes(str) {\n str = unescape(encodeURIComponent(str)); // UTF8 escape\n\n const bytes = [];\n\n for (let i = 0; i < str.length; ++i) {\n bytes.push(str.charCodeAt(i));\n }\n\n return bytes;\n}\n\nexport const DNS = '6ba7b810-9dad-11d1-80b4-00c04fd430c8';\nexport const URL = '6ba7b811-9dad-11d1-80b4-00c04fd430c8';\nexport default function (name, version, hashfunc) {\n function generateUUID(value, namespace, buf, offset) {\n if (typeof value === 'string') {\n value = stringToBytes(value);\n }\n\n if (typeof namespace === 'string') {\n namespace = parse(namespace);\n }\n\n if (namespace.length !== 16) {\n throw TypeError('Namespace must be array-like (16 iterable integer values, 0-255)');\n } // Compute hash of namespace and value, Per 4.3\n // Future: Use spread syntax when supported on all platforms, e.g. `bytes =\n // hashfunc([...namespace, ... value])`\n\n\n let bytes = new Uint8Array(16 + value.length);\n bytes.set(namespace);\n bytes.set(value, namespace.length);\n bytes = hashfunc(bytes);\n bytes[6] = bytes[6] & 0x0f | version;\n bytes[8] = bytes[8] & 0x3f | 0x80;\n\n if (buf) {\n offset = offset || 0;\n\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = bytes[i];\n }\n\n return buf;\n }\n\n return stringify(bytes);\n } // Function#name is not settable on some platforms (#270)\n\n\n try {\n generateUUID.name = name; // eslint-disable-next-line no-empty\n } catch (err) {} // For CommonJS default export support\n\n\n generateUUID.DNS = DNS;\n generateUUID.URL = URL;\n return generateUUID;\n}", "import crypto from 'crypto';\n\nfunction md5(bytes) {\n if (Array.isArray(bytes)) {\n bytes = Buffer.from(bytes);\n } else if (typeof bytes === 'string') {\n bytes = Buffer.from(bytes, 'utf8');\n }\n\n return crypto.createHash('md5').update(bytes).digest();\n}\n\nexport default md5;", "import v35 from './v35.js';\nimport md5 from './md5.js';\nconst v3 = v35('v3', 0x30, md5);\nexport default v3;", "import rng from './rng.js';\nimport stringify from './stringify.js';\n\nfunction v4(options, buf, offset) {\n options = options || {};\n const rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n rnds[6] = rnds[6] & 0x0f | 0x40;\n rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n if (buf) {\n offset = offset || 0;\n\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n\n return buf;\n }\n\n return stringify(rnds);\n}\n\nexport default v4;", "import crypto from 'crypto';\n\nfunction sha1(bytes) {\n if (Array.isArray(bytes)) {\n bytes = Buffer.from(bytes);\n } else if (typeof bytes === 'string') {\n bytes = Buffer.from(bytes, 'utf8');\n }\n\n return crypto.createHash('sha1').update(bytes).digest();\n}\n\nexport default sha1;", "import v35 from './v35.js';\nimport sha1 from './sha1.js';\nconst v5 = v35('v5', 0x50, sha1);\nexport default v5;", "export default '00000000-0000-0000-0000-000000000000';", "import validate from './validate.js';\n\nfunction version(uuid) {\n if (!validate(uuid)) {\n throw TypeError('Invalid UUID');\n }\n\n return parseInt(uuid.substr(14, 1), 16);\n}\n\nexport default version;", "export { default as v1 } from './v1.js';\nexport { default as v3 } from './v3.js';\nexport { default as v4 } from './v4.js';\nexport { default as v5 } from './v5.js';\nexport { default as NIL } from './nil.js';\nexport { default as version } from './version.js';\nexport { default as validate } from './validate.js';\nexport { default as stringify } from './stringify.js';\nexport { default as parse } from './parse.js';", null, null, "'use strict';\n\nvar net = require('net');\nvar tls = require('tls');\nvar http = require('http');\nvar https = require('https');\nvar events = require('events');\nvar assert = require('assert');\nvar util = require('util');\n\n\nexports.httpOverHttp = httpOverHttp;\nexports.httpsOverHttp = httpsOverHttp;\nexports.httpOverHttps = httpOverHttps;\nexports.httpsOverHttps = httpsOverHttps;\n\n\nfunction httpOverHttp(options) {\n var agent = new TunnelingAgent(options);\n agent.request = http.request;\n return agent;\n}\n\nfunction httpsOverHttp(options) {\n var agent = new TunnelingAgent(options);\n agent.request = http.request;\n agent.createSocket = createSecureSocket;\n agent.defaultPort = 443;\n return agent;\n}\n\nfunction httpOverHttps(options) {\n var agent = new TunnelingAgent(options);\n agent.request = https.request;\n return agent;\n}\n\nfunction httpsOverHttps(options) {\n var agent = new TunnelingAgent(options);\n agent.request = https.request;\n agent.createSocket = createSecureSocket;\n agent.defaultPort = 443;\n return agent;\n}\n\n\nfunction TunnelingAgent(options) {\n var self = this;\n self.options = options || {};\n self.proxyOptions = self.options.proxy || {};\n self.maxSockets = self.options.maxSockets || http.Agent.defaultMaxSockets;\n self.requests = [];\n self.sockets = [];\n\n self.on('free', function onFree(socket, host, port, localAddress) {\n var options = toOptions(host, port, localAddress);\n for (var i = 0, len = self.requests.length; i < len; ++i) {\n var pending = self.requests[i];\n if (pending.host === options.host && pending.port === options.port) {\n // Detect the request to connect same origin server,\n // reuse the connection.\n self.requests.splice(i, 1);\n pending.request.onSocket(socket);\n return;\n }\n }\n socket.destroy();\n self.removeSocket(socket);\n });\n}\nutil.inherits(TunnelingAgent, events.EventEmitter);\n\nTunnelingAgent.prototype.addRequest = function addRequest(req, host, port, localAddress) {\n var self = this;\n var options = mergeOptions({request: req}, self.options, toOptions(host, port, localAddress));\n\n if (self.sockets.length >= this.maxSockets) {\n // We are over limit so we'll add it to the queue.\n self.requests.push(options);\n return;\n }\n\n // If we are under maxSockets create a new one.\n self.createSocket(options, function(socket) {\n socket.on('free', onFree);\n socket.on('close', onCloseOrRemove);\n socket.on('agentRemove', onCloseOrRemove);\n req.onSocket(socket);\n\n function onFree() {\n self.emit('free', socket, options);\n }\n\n function onCloseOrRemove(err) {\n self.removeSocket(socket);\n socket.removeListener('free', onFree);\n socket.removeListener('close', onCloseOrRemove);\n socket.removeListener('agentRemove', onCloseOrRemove);\n }\n });\n};\n\nTunnelingAgent.prototype.createSocket = function createSocket(options, cb) {\n var self = this;\n var placeholder = {};\n self.sockets.push(placeholder);\n\n var connectOptions = mergeOptions({}, self.proxyOptions, {\n method: 'CONNECT',\n path: options.host + ':' + options.port,\n agent: false,\n headers: {\n host: options.host + ':' + options.port\n }\n });\n if (options.localAddress) {\n connectOptions.localAddress = options.localAddress;\n }\n if (connectOptions.proxyAuth) {\n connectOptions.headers = connectOptions.headers || {};\n connectOptions.headers['Proxy-Authorization'] = 'Basic ' +\n new Buffer(connectOptions.proxyAuth).toString('base64');\n }\n\n debug('making CONNECT request');\n var connectReq = self.request(connectOptions);\n connectReq.useChunkedEncodingByDefault = false; // for v0.6\n connectReq.once('response', onResponse); // for v0.6\n connectReq.once('upgrade', onUpgrade); // for v0.6\n connectReq.once('connect', onConnect); // for v0.7 or later\n connectReq.once('error', onError);\n connectReq.end();\n\n function onResponse(res) {\n // Very hacky. This is necessary to avoid http-parser leaks.\n res.upgrade = true;\n }\n\n function onUpgrade(res, socket, head) {\n // Hacky.\n process.nextTick(function() {\n onConnect(res, socket, head);\n });\n }\n\n function onConnect(res, socket, head) {\n connectReq.removeAllListeners();\n socket.removeAllListeners();\n\n if (res.statusCode !== 200) {\n debug('tunneling socket could not be established, statusCode=%d',\n res.statusCode);\n socket.destroy();\n var error = new Error('tunneling socket could not be established, ' +\n 'statusCode=' + res.statusCode);\n error.code = 'ECONNRESET';\n options.request.emit('error', error);\n self.removeSocket(placeholder);\n return;\n }\n if (head.length > 0) {\n debug('got illegal response body from proxy');\n socket.destroy();\n var error = new Error('got illegal response body from proxy');\n error.code = 'ECONNRESET';\n options.request.emit('error', error);\n self.removeSocket(placeholder);\n return;\n }\n debug('tunneling connection has established');\n self.sockets[self.sockets.indexOf(placeholder)] = socket;\n return cb(socket);\n }\n\n function onError(cause) {\n connectReq.removeAllListeners();\n\n debug('tunneling socket could not be established, cause=%s\\n',\n cause.message, cause.stack);\n var error = new Error('tunneling socket could not be established, ' +\n 'cause=' + cause.message);\n error.code = 'ECONNRESET';\n options.request.emit('error', error);\n self.removeSocket(placeholder);\n }\n};\n\nTunnelingAgent.prototype.removeSocket = function removeSocket(socket) {\n var pos = this.sockets.indexOf(socket)\n if (pos === -1) {\n return;\n }\n this.sockets.splice(pos, 1);\n\n var pending = this.requests.shift();\n if (pending) {\n // If we have pending requests and a socket gets closed a new one\n // needs to be created to take over in the pool for the one that closed.\n this.createSocket(pending, function(socket) {\n pending.request.onSocket(socket);\n });\n }\n};\n\nfunction createSecureSocket(options, cb) {\n var self = this;\n TunnelingAgent.prototype.createSocket.call(self, options, function(socket) {\n var hostHeader = options.request.getHeader('host');\n var tlsOptions = mergeOptions({}, self.options, {\n socket: socket,\n servername: hostHeader ? hostHeader.replace(/:.*$/, '') : options.host\n });\n\n // 0 is dummy port for v0.6\n var secureSocket = tls.connect(0, tlsOptions);\n self.sockets[self.sockets.indexOf(socket)] = secureSocket;\n cb(secureSocket);\n });\n}\n\n\nfunction toOptions(host, port, localAddress) {\n if (typeof host === 'string') { // since v0.10\n return {\n host: host,\n port: port,\n localAddress: localAddress\n };\n }\n return host; // for v0.11 or later\n}\n\nfunction mergeOptions(target) {\n for (var i = 1, len = arguments.length; i < len; ++i) {\n var overrides = arguments[i];\n if (typeof overrides === 'object') {\n var keys = Object.keys(overrides);\n for (var j = 0, keyLen = keys.length; j < keyLen; ++j) {\n var k = keys[j];\n if (overrides[k] !== undefined) {\n target[k] = overrides[k];\n }\n }\n }\n }\n return target;\n}\n\n\nvar debug;\nif (process.env.NODE_DEBUG && /\\btunnel\\b/.test(process.env.NODE_DEBUG)) {\n debug = function() {\n var args = Array.prototype.slice.call(arguments);\n if (typeof args[0] === 'string') {\n args[0] = 'TUNNEL: ' + args[0];\n } else {\n args.unshift('TUNNEL:');\n }\n console.error.apply(console, args);\n }\n} else {\n debug = function() {};\n}\nexports.debug = debug; // for test\n", "module.exports = require('./lib/tunnel');\n", null, null, null, null, null, null, null, null, null, null, "module.exports = function (xs, fn) {\n var res = [];\n for (var i = 0; i < xs.length; i++) {\n var x = fn(xs[i], i);\n if (isArray(x)) res.push.apply(res, x);\n else res.push(x);\n }\n return res;\n};\n\nvar isArray = Array.isArray || function (xs) {\n return Object.prototype.toString.call(xs) === '[object Array]';\n};\n", "'use strict';\nmodule.exports = balanced;\nfunction balanced(a, b, str) {\n if (a instanceof RegExp) a = maybeMatch(a, str);\n if (b instanceof RegExp) b = maybeMatch(b, str);\n\n var r = range(a, b, str);\n\n return r && {\n start: r[0],\n end: r[1],\n pre: str.slice(0, r[0]),\n body: str.slice(r[0] + a.length, r[1]),\n post: str.slice(r[1] + b.length)\n };\n}\n\nfunction maybeMatch(reg, str) {\n var m = str.match(reg);\n return m ? m[0] : null;\n}\n\nbalanced.range = range;\nfunction range(a, b, str) {\n var begs, beg, left, right, result;\n var ai = str.indexOf(a);\n var bi = str.indexOf(b, ai + 1);\n var i = ai;\n\n if (ai >= 0 && bi > 0) {\n if(a===b) {\n return [ai, bi];\n }\n begs = [];\n left = str.length;\n\n while (i >= 0 && !result) {\n if (i == ai) {\n begs.push(i);\n ai = str.indexOf(a, i + 1);\n } else if (begs.length == 1) {\n result = [ begs.pop(), bi ];\n } else {\n beg = begs.pop();\n if (beg < left) {\n left = beg;\n right = bi;\n }\n\n bi = str.indexOf(b, i + 1);\n }\n\n i = ai < bi && ai >= 0 ? ai : bi;\n }\n\n if (begs.length) {\n result = [ left, right ];\n }\n }\n\n return result;\n}\n", "var concatMap = require('concat-map');\nvar balanced = require('balanced-match');\n\nmodule.exports = expandTop;\n\nvar escSlash = '\\0SLASH'+Math.random()+'\\0';\nvar escOpen = '\\0OPEN'+Math.random()+'\\0';\nvar escClose = '\\0CLOSE'+Math.random()+'\\0';\nvar escComma = '\\0COMMA'+Math.random()+'\\0';\nvar escPeriod = '\\0PERIOD'+Math.random()+'\\0';\n\nfunction numeric(str) {\n return parseInt(str, 10) == str\n ? parseInt(str, 10)\n : str.charCodeAt(0);\n}\n\nfunction escapeBraces(str) {\n return str.split('\\\\\\\\').join(escSlash)\n .split('\\\\{').join(escOpen)\n .split('\\\\}').join(escClose)\n .split('\\\\,').join(escComma)\n .split('\\\\.').join(escPeriod);\n}\n\nfunction unescapeBraces(str) {\n return str.split(escSlash).join('\\\\')\n .split(escOpen).join('{')\n .split(escClose).join('}')\n .split(escComma).join(',')\n .split(escPeriod).join('.');\n}\n\n\n// Basically just str.split(\",\"), but handling cases\n// where we have nested braced sections, which should be\n// treated as individual members, like {a,{b,c},d}\nfunction parseCommaParts(str) {\n if (!str)\n return [''];\n\n var parts = [];\n var m = balanced('{', '}', str);\n\n if (!m)\n return str.split(',');\n\n var pre = m.pre;\n var body = m.body;\n var post = m.post;\n var p = pre.split(',');\n\n p[p.length-1] += '{' + body + '}';\n var postParts = parseCommaParts(post);\n if (post.length) {\n p[p.length-1] += postParts.shift();\n p.push.apply(p, postParts);\n }\n\n parts.push.apply(parts, p);\n\n return parts;\n}\n\nfunction expandTop(str) {\n if (!str)\n return [];\n\n // I don't know why Bash 4.3 does this, but it does.\n // Anything starting with {} will have the first two bytes preserved\n // but *only* at the top level, so {},a}b will not expand to anything,\n // but a{},b}c will be expanded to [a}c,abc].\n // One could argue that this is a bug in Bash, but since the goal of\n // this module is to match Bash's rules, we escape a leading {}\n if (str.substr(0, 2) === '{}') {\n str = '\\\\{\\\\}' + str.substr(2);\n }\n\n return expand(escapeBraces(str), true).map(unescapeBraces);\n}\n\nfunction identity(e) {\n return e;\n}\n\nfunction embrace(str) {\n return '{' + str + '}';\n}\nfunction isPadded(el) {\n return /^-?0\\d/.test(el);\n}\n\nfunction lte(i, y) {\n return i <= y;\n}\nfunction gte(i, y) {\n return i >= y;\n}\n\nfunction expand(str, isTop) {\n var expansions = [];\n\n var m = balanced('{', '}', str);\n if (!m || /\\$$/.test(m.pre)) return [str];\n\n var isNumericSequence = /^-?\\d+\\.\\.-?\\d+(?:\\.\\.-?\\d+)?$/.test(m.body);\n var isAlphaSequence = /^[a-zA-Z]\\.\\.[a-zA-Z](?:\\.\\.-?\\d+)?$/.test(m.body);\n var isSequence = isNumericSequence || isAlphaSequence;\n var isOptions = m.body.indexOf(',') >= 0;\n if (!isSequence && !isOptions) {\n // {a},b}\n if (m.post.match(/,.*\\}/)) {\n str = m.pre + '{' + m.body + escClose + m.post;\n return expand(str);\n }\n return [str];\n }\n\n var n;\n if (isSequence) {\n n = m.body.split(/\\.\\./);\n } else {\n n = parseCommaParts(m.body);\n if (n.length === 1) {\n // x{{a,b}}y ==> x{a}y x{b}y\n n = expand(n[0], false).map(embrace);\n if (n.length === 1) {\n var post = m.post.length\n ? expand(m.post, false)\n : [''];\n return post.map(function(p) {\n return m.pre + n[0] + p;\n });\n }\n }\n }\n\n // at this point, n is the parts, and we know it's not a comma set\n // with a single entry.\n\n // no need to expand pre, since it is guaranteed to be free of brace-sets\n var pre = m.pre;\n var post = m.post.length\n ? expand(m.post, false)\n : [''];\n\n var N;\n\n if (isSequence) {\n var x = numeric(n[0]);\n var y = numeric(n[1]);\n var width = Math.max(n[0].length, n[1].length)\n var incr = n.length == 3\n ? Math.abs(numeric(n[2]))\n : 1;\n var test = lte;\n var reverse = y < x;\n if (reverse) {\n incr *= -1;\n test = gte;\n }\n var pad = n.some(isPadded);\n\n N = [];\n\n for (var i = x; test(i, y); i += incr) {\n var c;\n if (isAlphaSequence) {\n c = String.fromCharCode(i);\n if (c === '\\\\')\n c = '';\n } else {\n c = String(i);\n if (pad) {\n var need = width - c.length;\n if (need > 0) {\n var z = new Array(need + 1).join('0');\n if (i < 0)\n c = '-' + z + c.slice(1);\n else\n c = z + c;\n }\n }\n }\n N.push(c);\n }\n } else {\n N = concatMap(n, function(el) { return expand(el, false) });\n }\n\n for (var j = 0; j < N.length; j++) {\n for (var k = 0; k < post.length; k++) {\n var expansion = pre + N[j] + post[k];\n if (!isTop || isSequence || expansion)\n expansions.push(expansion);\n }\n }\n\n return expansions;\n}\n\n", "module.exports = minimatch\nminimatch.Minimatch = Minimatch\n\nvar path = (function () { try { return require('path') } catch (e) {}}()) || {\n sep: '/'\n}\nminimatch.sep = path.sep\n\nvar GLOBSTAR = minimatch.GLOBSTAR = Minimatch.GLOBSTAR = {}\nvar expand = require('brace-expansion')\n\nvar plTypes = {\n '!': { open: '(?:(?!(?:', close: '))[^/]*?)'},\n '?': { open: '(?:', close: ')?' },\n '+': { open: '(?:', close: ')+' },\n '*': { open: '(?:', close: ')*' },\n '@': { open: '(?:', close: ')' }\n}\n\n// any single thing other than /\n// don't need to escape / when using new RegExp()\nvar qmark = '[^/]'\n\n// * => any number of characters\nvar star = qmark + '*?'\n\n// ** when dots are allowed. Anything goes, except .. and .\n// not (^ or / followed by one or two dots followed by $ or /),\n// followed by anything, any number of times.\nvar twoStarDot = '(?:(?!(?:\\\\\\/|^)(?:\\\\.{1,2})($|\\\\\\/)).)*?'\n\n// not a ^ or / followed by a dot,\n// followed by anything, any number of times.\nvar twoStarNoDot = '(?:(?!(?:\\\\\\/|^)\\\\.).)*?'\n\n// characters that need to be escaped in RegExp.\nvar reSpecials = charSet('().*{}+?[]^$\\\\!')\n\n// \"abc\" -> { a:true, b:true, c:true }\nfunction charSet (s) {\n return s.split('').reduce(function (set, c) {\n set[c] = true\n return set\n }, {})\n}\n\n// normalizes slashes.\nvar slashSplit = /\\/+/\n\nminimatch.filter = filter\nfunction filter (pattern, options) {\n options = options || {}\n return function (p, i, list) {\n return minimatch(p, pattern, options)\n }\n}\n\nfunction ext (a, b) {\n b = b || {}\n var t = {}\n Object.keys(a).forEach(function (k) {\n t[k] = a[k]\n })\n Object.keys(b).forEach(function (k) {\n t[k] = b[k]\n })\n return t\n}\n\nminimatch.defaults = function (def) {\n if (!def || typeof def !== 'object' || !Object.keys(def).length) {\n return minimatch\n }\n\n var orig = minimatch\n\n var m = function minimatch (p, pattern, options) {\n return orig(p, pattern, ext(def, options))\n }\n\n m.Minimatch = function Minimatch (pattern, options) {\n return new orig.Minimatch(pattern, ext(def, options))\n }\n m.Minimatch.defaults = function defaults (options) {\n return orig.defaults(ext(def, options)).Minimatch\n }\n\n m.filter = function filter (pattern, options) {\n return orig.filter(pattern, ext(def, options))\n }\n\n m.defaults = function defaults (options) {\n return orig.defaults(ext(def, options))\n }\n\n m.makeRe = function makeRe (pattern, options) {\n return orig.makeRe(pattern, ext(def, options))\n }\n\n m.braceExpand = function braceExpand (pattern, options) {\n return orig.braceExpand(pattern, ext(def, options))\n }\n\n m.match = function (list, pattern, options) {\n return orig.match(list, pattern, ext(def, options))\n }\n\n return m\n}\n\nMinimatch.defaults = function (def) {\n return minimatch.defaults(def).Minimatch\n}\n\nfunction minimatch (p, pattern, options) {\n assertValidPattern(pattern)\n\n if (!options) options = {}\n\n // shortcut: comments match nothing.\n if (!options.nocomment && pattern.charAt(0) === '#') {\n return false\n }\n\n return new Minimatch(pattern, options).match(p)\n}\n\nfunction Minimatch (pattern, options) {\n if (!(this instanceof Minimatch)) {\n return new Minimatch(pattern, options)\n }\n\n assertValidPattern(pattern)\n\n if (!options) options = {}\n\n pattern = pattern.trim()\n\n // windows support: need to use /, not \\\n if (!options.allowWindowsEscape && path.sep !== '/') {\n pattern = pattern.split(path.sep).join('/')\n }\n\n this.options = options\n this.set = []\n this.pattern = pattern\n this.regexp = null\n this.negate = false\n this.comment = false\n this.empty = false\n this.partial = !!options.partial\n\n // make the set of regexps etc.\n this.make()\n}\n\nMinimatch.prototype.debug = function () {}\n\nMinimatch.prototype.make = make\nfunction make () {\n var pattern = this.pattern\n var options = this.options\n\n // empty patterns and comments match nothing.\n if (!options.nocomment && pattern.charAt(0) === '#') {\n this.comment = true\n return\n }\n if (!pattern) {\n this.empty = true\n return\n }\n\n // step 1: figure out negation, etc.\n this.parseNegate()\n\n // step 2: expand braces\n var set = this.globSet = this.braceExpand()\n\n if (options.debug) this.debug = function debug() { console.error.apply(console, arguments) }\n\n this.debug(this.pattern, set)\n\n // step 3: now we have a set, so turn each one into a series of path-portion\n // matching patterns.\n // These will be regexps, except in the case of \"**\", which is\n // set to the GLOBSTAR object for globstar behavior,\n // and will not contain any / characters\n set = this.globParts = set.map(function (s) {\n return s.split(slashSplit)\n })\n\n this.debug(this.pattern, set)\n\n // glob --> regexps\n set = set.map(function (s, si, set) {\n return s.map(this.parse, this)\n }, this)\n\n this.debug(this.pattern, set)\n\n // filter out everything that didn't compile properly.\n set = set.filter(function (s) {\n return s.indexOf(false) === -1\n })\n\n this.debug(this.pattern, set)\n\n this.set = set\n}\n\nMinimatch.prototype.parseNegate = parseNegate\nfunction parseNegate () {\n var pattern = this.pattern\n var negate = false\n var options = this.options\n var negateOffset = 0\n\n if (options.nonegate) return\n\n for (var i = 0, l = pattern.length\n ; i < l && pattern.charAt(i) === '!'\n ; i++) {\n negate = !negate\n negateOffset++\n }\n\n if (negateOffset) this.pattern = pattern.substr(negateOffset)\n this.negate = negate\n}\n\n// Brace expansion:\n// a{b,c}d -> abd acd\n// a{b,}c -> abc ac\n// a{0..3}d -> a0d a1d a2d a3d\n// a{b,c{d,e}f}g -> abg acdfg acefg\n// a{b,c}d{e,f}g -> abdeg acdeg abdeg abdfg\n//\n// Invalid sets are not expanded.\n// a{2..}b -> a{2..}b\n// a{b}c -> a{b}c\nminimatch.braceExpand = function (pattern, options) {\n return braceExpand(pattern, options)\n}\n\nMinimatch.prototype.braceExpand = braceExpand\n\nfunction braceExpand (pattern, options) {\n if (!options) {\n if (this instanceof Minimatch) {\n options = this.options\n } else {\n options = {}\n }\n }\n\n pattern = typeof pattern === 'undefined'\n ? this.pattern : pattern\n\n assertValidPattern(pattern)\n\n // Thanks to Yeting Li for\n // improving this regexp to avoid a ReDOS vulnerability.\n if (options.nobrace || !/\\{(?:(?!\\{).)*\\}/.test(pattern)) {\n // shortcut. no need to expand.\n return [pattern]\n }\n\n return expand(pattern)\n}\n\nvar MAX_PATTERN_LENGTH = 1024 * 64\nvar assertValidPattern = function (pattern) {\n if (typeof pattern !== 'string') {\n throw new TypeError('invalid pattern')\n }\n\n if (pattern.length > MAX_PATTERN_LENGTH) {\n throw new TypeError('pattern is too long')\n }\n}\n\n// parse a component of the expanded set.\n// At this point, no pattern may contain \"/\" in it\n// so we're going to return a 2d array, where each entry is the full\n// pattern, split on '/', and then turned into a regular expression.\n// A regexp is made at the end which joins each array with an\n// escaped /, and another full one which joins each regexp with |.\n//\n// Following the lead of Bash 4.1, note that \"**\" only has special meaning\n// when it is the *only* thing in a path portion. Otherwise, any series\n// of * is equivalent to a single *. Globstar behavior is enabled by\n// default, and can be disabled by setting options.noglobstar.\nMinimatch.prototype.parse = parse\nvar SUBPARSE = {}\nfunction parse (pattern, isSub) {\n assertValidPattern(pattern)\n\n var options = this.options\n\n // shortcuts\n if (pattern === '**') {\n if (!options.noglobstar)\n return GLOBSTAR\n else\n pattern = '*'\n }\n if (pattern === '') return ''\n\n var re = ''\n var hasMagic = !!options.nocase\n var escaping = false\n // ? => one single character\n var patternListStack = []\n var negativeLists = []\n var stateChar\n var inClass = false\n var reClassStart = -1\n var classStart = -1\n // . and .. never match anything that doesn't start with .,\n // even when options.dot is set.\n var patternStart = pattern.charAt(0) === '.' ? '' // anything\n // not (start or / followed by . or .. followed by / or end)\n : options.dot ? '(?!(?:^|\\\\\\/)\\\\.{1,2}(?:$|\\\\\\/))'\n : '(?!\\\\.)'\n var self = this\n\n function clearStateChar () {\n if (stateChar) {\n // we had some state-tracking character\n // that wasn't consumed by this pass.\n switch (stateChar) {\n case '*':\n re += star\n hasMagic = true\n break\n case '?':\n re += qmark\n hasMagic = true\n break\n default:\n re += '\\\\' + stateChar\n break\n }\n self.debug('clearStateChar %j %j', stateChar, re)\n stateChar = false\n }\n }\n\n for (var i = 0, len = pattern.length, c\n ; (i < len) && (c = pattern.charAt(i))\n ; i++) {\n this.debug('%s\\t%s %s %j', pattern, i, re, c)\n\n // skip over any that are escaped.\n if (escaping && reSpecials[c]) {\n re += '\\\\' + c\n escaping = false\n continue\n }\n\n switch (c) {\n /* istanbul ignore next */\n case '/': {\n // completely not allowed, even escaped.\n // Should already be path-split by now.\n return false\n }\n\n case '\\\\':\n clearStateChar()\n escaping = true\n continue\n\n // the various stateChar values\n // for the \"extglob\" stuff.\n case '?':\n case '*':\n case '+':\n case '@':\n case '!':\n this.debug('%s\\t%s %s %j <-- stateChar', pattern, i, re, c)\n\n // all of those are literals inside a class, except that\n // the glob [!a] means [^a] in regexp\n if (inClass) {\n this.debug(' in class')\n if (c === '!' && i === classStart + 1) c = '^'\n re += c\n continue\n }\n\n // if we already have a stateChar, then it means\n // that there was something like ** or +? in there.\n // Handle the stateChar, then proceed with this one.\n self.debug('call clearStateChar %j', stateChar)\n clearStateChar()\n stateChar = c\n // if extglob is disabled, then +(asdf|foo) isn't a thing.\n // just clear the statechar *now*, rather than even diving into\n // the patternList stuff.\n if (options.noext) clearStateChar()\n continue\n\n case '(':\n if (inClass) {\n re += '('\n continue\n }\n\n if (!stateChar) {\n re += '\\\\('\n continue\n }\n\n patternListStack.push({\n type: stateChar,\n start: i - 1,\n reStart: re.length,\n open: plTypes[stateChar].open,\n close: plTypes[stateChar].close\n })\n // negation is (?:(?!js)[^/]*)\n re += stateChar === '!' ? '(?:(?!(?:' : '(?:'\n this.debug('plType %j %j', stateChar, re)\n stateChar = false\n continue\n\n case ')':\n if (inClass || !patternListStack.length) {\n re += '\\\\)'\n continue\n }\n\n clearStateChar()\n hasMagic = true\n var pl = patternListStack.pop()\n // negation is (?:(?!js)[^/]*)\n // The others are (?:)\n re += pl.close\n if (pl.type === '!') {\n negativeLists.push(pl)\n }\n pl.reEnd = re.length\n continue\n\n case '|':\n if (inClass || !patternListStack.length || escaping) {\n re += '\\\\|'\n escaping = false\n continue\n }\n\n clearStateChar()\n re += '|'\n continue\n\n // these are mostly the same in regexp and glob\n case '[':\n // swallow any state-tracking char before the [\n clearStateChar()\n\n if (inClass) {\n re += '\\\\' + c\n continue\n }\n\n inClass = true\n classStart = i\n reClassStart = re.length\n re += c\n continue\n\n case ']':\n // a right bracket shall lose its special\n // meaning and represent itself in\n // a bracket expression if it occurs\n // first in the list. -- POSIX.2 2.8.3.2\n if (i === classStart + 1 || !inClass) {\n re += '\\\\' + c\n escaping = false\n continue\n }\n\n // handle the case where we left a class open.\n // \"[z-a]\" is valid, equivalent to \"\\[z-a\\]\"\n // split where the last [ was, make sure we don't have\n // an invalid re. if so, re-walk the contents of the\n // would-be class to re-translate any characters that\n // were passed through as-is\n // TODO: It would probably be faster to determine this\n // without a try/catch and a new RegExp, but it's tricky\n // to do safely. For now, this is safe and works.\n var cs = pattern.substring(classStart + 1, i)\n try {\n RegExp('[' + cs + ']')\n } catch (er) {\n // not a valid class!\n var sp = this.parse(cs, SUBPARSE)\n re = re.substr(0, reClassStart) + '\\\\[' + sp[0] + '\\\\]'\n hasMagic = hasMagic || sp[1]\n inClass = false\n continue\n }\n\n // finish up the class.\n hasMagic = true\n inClass = false\n re += c\n continue\n\n default:\n // swallow any state char that wasn't consumed\n clearStateChar()\n\n if (escaping) {\n // no need\n escaping = false\n } else if (reSpecials[c]\n && !(c === '^' && inClass)) {\n re += '\\\\'\n }\n\n re += c\n\n } // switch\n } // for\n\n // handle the case where we left a class open.\n // \"[abc\" is valid, equivalent to \"\\[abc\"\n if (inClass) {\n // split where the last [ was, and escape it\n // this is a huge pita. We now have to re-walk\n // the contents of the would-be class to re-translate\n // any characters that were passed through as-is\n cs = pattern.substr(classStart + 1)\n sp = this.parse(cs, SUBPARSE)\n re = re.substr(0, reClassStart) + '\\\\[' + sp[0]\n hasMagic = hasMagic || sp[1]\n }\n\n // handle the case where we had a +( thing at the *end*\n // of the pattern.\n // each pattern list stack adds 3 chars, and we need to go through\n // and escape any | chars that were passed through as-is for the regexp.\n // Go through and escape them, taking care not to double-escape any\n // | chars that were already escaped.\n for (pl = patternListStack.pop(); pl; pl = patternListStack.pop()) {\n var tail = re.slice(pl.reStart + pl.open.length)\n this.debug('setting tail', re, pl)\n // maybe some even number of \\, then maybe 1 \\, followed by a |\n tail = tail.replace(/((?:\\\\{2}){0,64})(\\\\?)\\|/g, function (_, $1, $2) {\n if (!$2) {\n // the | isn't already escaped, so escape it.\n $2 = '\\\\'\n }\n\n // need to escape all those slashes *again*, without escaping the\n // one that we need for escaping the | character. As it works out,\n // escaping an even number of slashes can be done by simply repeating\n // it exactly after itself. That's why this trick works.\n //\n // I am sorry that you have to see this.\n return $1 + $1 + $2 + '|'\n })\n\n this.debug('tail=%j\\n %s', tail, tail, pl, re)\n var t = pl.type === '*' ? star\n : pl.type === '?' ? qmark\n : '\\\\' + pl.type\n\n hasMagic = true\n re = re.slice(0, pl.reStart) + t + '\\\\(' + tail\n }\n\n // handle trailing things that only matter at the very end.\n clearStateChar()\n if (escaping) {\n // trailing \\\\\n re += '\\\\\\\\'\n }\n\n // only need to apply the nodot start if the re starts with\n // something that could conceivably capture a dot\n var addPatternStart = false\n switch (re.charAt(0)) {\n case '[': case '.': case '(': addPatternStart = true\n }\n\n // Hack to work around lack of negative lookbehind in JS\n // A pattern like: *.!(x).!(y|z) needs to ensure that a name\n // like 'a.xyz.yz' doesn't match. So, the first negative\n // lookahead, has to look ALL the way ahead, to the end of\n // the pattern.\n for (var n = negativeLists.length - 1; n > -1; n--) {\n var nl = negativeLists[n]\n\n var nlBefore = re.slice(0, nl.reStart)\n var nlFirst = re.slice(nl.reStart, nl.reEnd - 8)\n var nlLast = re.slice(nl.reEnd - 8, nl.reEnd)\n var nlAfter = re.slice(nl.reEnd)\n\n nlLast += nlAfter\n\n // Handle nested stuff like *(*.js|!(*.json)), where open parens\n // mean that we should *not* include the ) in the bit that is considered\n // \"after\" the negated section.\n var openParensBefore = nlBefore.split('(').length - 1\n var cleanAfter = nlAfter\n for (i = 0; i < openParensBefore; i++) {\n cleanAfter = cleanAfter.replace(/\\)[+*?]?/, '')\n }\n nlAfter = cleanAfter\n\n var dollar = ''\n if (nlAfter === '' && isSub !== SUBPARSE) {\n dollar = '$'\n }\n var newRe = nlBefore + nlFirst + nlAfter + dollar + nlLast\n re = newRe\n }\n\n // if the re is not \"\" at this point, then we need to make sure\n // it doesn't match against an empty path part.\n // Otherwise a/* will match a/, which it should not.\n if (re !== '' && hasMagic) {\n re = '(?=.)' + re\n }\n\n if (addPatternStart) {\n re = patternStart + re\n }\n\n // parsing just a piece of a larger pattern.\n if (isSub === SUBPARSE) {\n return [re, hasMagic]\n }\n\n // skip the regexp for non-magical patterns\n // unescape anything in it, though, so that it'll be\n // an exact match against a file etc.\n if (!hasMagic) {\n return globUnescape(pattern)\n }\n\n var flags = options.nocase ? 'i' : ''\n try {\n var regExp = new RegExp('^' + re + '$', flags)\n } catch (er) /* istanbul ignore next - should be impossible */ {\n // If it was an invalid regular expression, then it can't match\n // anything. This trick looks for a character after the end of\n // the string, which is of course impossible, except in multi-line\n // mode, but it's not a /m regex.\n return new RegExp('$.')\n }\n\n regExp._glob = pattern\n regExp._src = re\n\n return regExp\n}\n\nminimatch.makeRe = function (pattern, options) {\n return new Minimatch(pattern, options || {}).makeRe()\n}\n\nMinimatch.prototype.makeRe = makeRe\nfunction makeRe () {\n if (this.regexp || this.regexp === false) return this.regexp\n\n // at this point, this.set is a 2d array of partial\n // pattern strings, or \"**\".\n //\n // It's better to use .match(). This function shouldn't\n // be used, really, but it's pretty convenient sometimes,\n // when you just want to work with a regex.\n var set = this.set\n\n if (!set.length) {\n this.regexp = false\n return this.regexp\n }\n var options = this.options\n\n var twoStar = options.noglobstar ? star\n : options.dot ? twoStarDot\n : twoStarNoDot\n var flags = options.nocase ? 'i' : ''\n\n var re = set.map(function (pattern) {\n return pattern.map(function (p) {\n return (p === GLOBSTAR) ? twoStar\n : (typeof p === 'string') ? regExpEscape(p)\n : p._src\n }).join('\\\\\\/')\n }).join('|')\n\n // must match entire pattern\n // ending in a * or ** will make it less strict.\n re = '^(?:' + re + ')$'\n\n // can match anything, as long as it's not this.\n if (this.negate) re = '^(?!' + re + ').*$'\n\n try {\n this.regexp = new RegExp(re, flags)\n } catch (ex) /* istanbul ignore next - should be impossible */ {\n this.regexp = false\n }\n return this.regexp\n}\n\nminimatch.match = function (list, pattern, options) {\n options = options || {}\n var mm = new Minimatch(pattern, options)\n list = list.filter(function (f) {\n return mm.match(f)\n })\n if (mm.options.nonull && !list.length) {\n list.push(pattern)\n }\n return list\n}\n\nMinimatch.prototype.match = function match (f, partial) {\n if (typeof partial === 'undefined') partial = this.partial\n this.debug('match', f, this.pattern)\n // short-circuit in the case of busted things.\n // comments, etc.\n if (this.comment) return false\n if (this.empty) return f === ''\n\n if (f === '/' && partial) return true\n\n var options = this.options\n\n // windows: need to use /, not \\\n if (path.sep !== '/') {\n f = f.split(path.sep).join('/')\n }\n\n // treat the test path as a set of pathparts.\n f = f.split(slashSplit)\n this.debug(this.pattern, 'split', f)\n\n // just ONE of the pattern sets in this.set needs to match\n // in order for it to be valid. If negating, then just one\n // match means that we have failed.\n // Either way, return on the first hit.\n\n var set = this.set\n this.debug(this.pattern, 'set', set)\n\n // Find the basename of the path by looking for the last non-empty segment\n var filename\n var i\n for (i = f.length - 1; i >= 0; i--) {\n filename = f[i]\n if (filename) break\n }\n\n for (i = 0; i < set.length; i++) {\n var pattern = set[i]\n var file = f\n if (options.matchBase && pattern.length === 1) {\n file = [filename]\n }\n var hit = this.matchOne(file, pattern, partial)\n if (hit) {\n if (options.flipNegate) return true\n return !this.negate\n }\n }\n\n // didn't get any hits. this is success if it's a negative\n // pattern, failure otherwise.\n if (options.flipNegate) return false\n return this.negate\n}\n\n// set partial to true to test if, for example,\n// \"/a/b\" matches the start of \"/*/b/*/d\"\n// Partial means, if you run out of file before you run\n// out of pattern, then that's fine, as long as all\n// the parts match.\nMinimatch.prototype.matchOne = function (file, pattern, partial) {\n var options = this.options\n\n this.debug('matchOne',\n { 'this': this, file: file, pattern: pattern })\n\n this.debug('matchOne', file.length, pattern.length)\n\n for (var fi = 0,\n pi = 0,\n fl = file.length,\n pl = pattern.length\n ; (fi < fl) && (pi < pl)\n ; fi++, pi++) {\n this.debug('matchOne loop')\n var p = pattern[pi]\n var f = file[fi]\n\n this.debug(pattern, p, f)\n\n // should be impossible.\n // some invalid regexp stuff in the set.\n /* istanbul ignore if */\n if (p === false) return false\n\n if (p === GLOBSTAR) {\n this.debug('GLOBSTAR', [pattern, p, f])\n\n // \"**\"\n // a/**/b/**/c would match the following:\n // a/b/x/y/z/c\n // a/x/y/z/b/c\n // a/b/x/b/x/c\n // a/b/c\n // To do this, take the rest of the pattern after\n // the **, and see if it would match the file remainder.\n // If so, return success.\n // If not, the ** \"swallows\" a segment, and try again.\n // This is recursively awful.\n //\n // a/**/b/**/c matching a/b/x/y/z/c\n // - a matches a\n // - doublestar\n // - matchOne(b/x/y/z/c, b/**/c)\n // - b matches b\n // - doublestar\n // - matchOne(x/y/z/c, c) -> no\n // - matchOne(y/z/c, c) -> no\n // - matchOne(z/c, c) -> no\n // - matchOne(c, c) yes, hit\n var fr = fi\n var pr = pi + 1\n if (pr === pl) {\n this.debug('** at the end')\n // a ** at the end will just swallow the rest.\n // We have found a match.\n // however, it will not swallow /.x, unless\n // options.dot is set.\n // . and .. are *never* matched by **, for explosively\n // exponential reasons.\n for (; fi < fl; fi++) {\n if (file[fi] === '.' || file[fi] === '..' ||\n (!options.dot && file[fi].charAt(0) === '.')) return false\n }\n return true\n }\n\n // ok, let's see if we can swallow whatever we can.\n while (fr < fl) {\n var swallowee = file[fr]\n\n this.debug('\\nglobstar while', file, fr, pattern, pr, swallowee)\n\n // XXX remove this slice. Just pass the start index.\n if (this.matchOne(file.slice(fr), pattern.slice(pr), partial)) {\n this.debug('globstar found match!', fr, fl, swallowee)\n // found a match.\n return true\n } else {\n // can't swallow \".\" or \"..\" ever.\n // can only swallow \".foo\" when explicitly asked.\n if (swallowee === '.' || swallowee === '..' ||\n (!options.dot && swallowee.charAt(0) === '.')) {\n this.debug('dot detected!', file, fr, pattern, pr)\n break\n }\n\n // ** swallows a segment, and continue.\n this.debug('globstar swallow a segment, and continue')\n fr++\n }\n }\n\n // no match was found.\n // However, in partial mode, we can't say this is necessarily over.\n // If there's more *pattern* left, then\n /* istanbul ignore if */\n if (partial) {\n // ran out of file\n this.debug('\\n>>> no match, partial?', file, fr, pattern, pr)\n if (fr === fl) return true\n }\n return false\n }\n\n // something other than **\n // non-magic patterns just have to match exactly\n // patterns with magic have been turned into regexps.\n var hit\n if (typeof p === 'string') {\n hit = f === p\n this.debug('string match', p, f, hit)\n } else {\n hit = f.match(p)\n this.debug('pattern match', p, f, hit)\n }\n\n if (!hit) return false\n }\n\n // Note: ending in / means that we'll get a final \"\"\n // at the end of the pattern. This can only match a\n // corresponding \"\" at the end of the file.\n // If the file ends in /, then it can only match a\n // a pattern that ends in /, unless the pattern just\n // doesn't have any more for it. But, a/b/ should *not*\n // match \"a/b/*\", even though \"\" matches against the\n // [^/]*? pattern, except in partial mode, where it might\n // simply not be reached yet.\n // However, a/b/ should still satisfy a/*\n\n // now either we fell off the end of the pattern, or we're done.\n if (fi === fl && pi === pl) {\n // ran out of pattern and filename at the same time.\n // an exact hit!\n return true\n } else if (fi === fl) {\n // ran out of file, but still had pattern left.\n // this is ok if we're doing the match as part of\n // a glob fs traversal.\n return partial\n } else /* istanbul ignore else */ if (pi === pl) {\n // ran out of pattern, still have file left.\n // this is only acceptable if we're on the very last\n // empty segment of a file with a trailing slash.\n // a/* should match a/b/\n return (fi === fl - 1) && (file[fi] === '')\n }\n\n // should be unreachable.\n /* istanbul ignore next */\n throw new Error('wtf?')\n}\n\n// replace stuff like \\* with *\nfunction globUnescape (s) {\n return s.replace(/\\\\(.)/g, '$1')\n}\n\nfunction regExpEscape (s) {\n return s.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&')\n}\n", null, null, null, null, null, null, null, null, "export function getUserAgent() {\n if (typeof navigator === \"object\" && \"userAgent\" in navigator) {\n return navigator.userAgent;\n }\n if (typeof process === \"object\" && \"version\" in process) {\n return `Node.js/${process.version.substr(1)} (${process.platform}; ${process.arch})`;\n }\n return \"\";\n}\n", "module.exports = register;\n\nfunction register(state, name, method, options) {\n if (typeof method !== \"function\") {\n throw new Error(\"method for before hook must be a function\");\n }\n\n if (!options) {\n options = {};\n }\n\n if (Array.isArray(name)) {\n return name.reverse().reduce(function (callback, name) {\n return register.bind(null, state, name, callback, options);\n }, method)();\n }\n\n return Promise.resolve().then(function () {\n if (!state.registry[name]) {\n return method(options);\n }\n\n return state.registry[name].reduce(function (method, registered) {\n return registered.hook.bind(null, method, options);\n }, method)();\n });\n}\n", "module.exports = addHook;\n\nfunction addHook(state, kind, name, hook) {\n var orig = hook;\n if (!state.registry[name]) {\n state.registry[name] = [];\n }\n\n if (kind === \"before\") {\n hook = function (method, options) {\n return Promise.resolve()\n .then(orig.bind(null, options))\n .then(method.bind(null, options));\n };\n }\n\n if (kind === \"after\") {\n hook = function (method, options) {\n var result;\n return Promise.resolve()\n .then(method.bind(null, options))\n .then(function (result_) {\n result = result_;\n return orig(result, options);\n })\n .then(function () {\n return result;\n });\n };\n }\n\n if (kind === \"error\") {\n hook = function (method, options) {\n return Promise.resolve()\n .then(method.bind(null, options))\n .catch(function (error) {\n return orig(error, options);\n });\n };\n }\n\n state.registry[name].push({\n hook: hook,\n orig: orig,\n });\n}\n", "module.exports = removeHook;\n\nfunction removeHook(state, name, method) {\n if (!state.registry[name]) {\n return;\n }\n\n var index = state.registry[name]\n .map(function (registered) {\n return registered.orig;\n })\n .indexOf(method);\n\n if (index === -1) {\n return;\n }\n\n state.registry[name].splice(index, 1);\n}\n", "var register = require(\"./lib/register\");\nvar addHook = require(\"./lib/add\");\nvar removeHook = require(\"./lib/remove\");\n\n// bind with array of arguments: https://stackoverflow.com/a/21792913\nvar bind = Function.bind;\nvar bindable = bind.bind(bind);\n\nfunction bindApi(hook, state, name) {\n var removeHookRef = bindable(removeHook, null).apply(\n null,\n name ? [state, name] : [state]\n );\n hook.api = { remove: removeHookRef };\n hook.remove = removeHookRef;\n [\"before\", \"error\", \"after\", \"wrap\"].forEach(function (kind) {\n var args = name ? [state, kind, name] : [state, kind];\n hook[kind] = hook.api[kind] = bindable(addHook, null).apply(null, args);\n });\n}\n\nfunction HookSingular() {\n var singularHookName = \"h\";\n var singularHookState = {\n registry: {},\n };\n var singularHook = register.bind(null, singularHookState, singularHookName);\n bindApi(singularHook, singularHookState, singularHookName);\n return singularHook;\n}\n\nfunction HookCollection() {\n var state = {\n registry: {},\n };\n\n var hook = register.bind(null, state);\n bindApi(hook, state);\n\n return hook;\n}\n\nvar collectionHookDeprecationMessageDisplayed = false;\nfunction Hook() {\n if (!collectionHookDeprecationMessageDisplayed) {\n console.warn(\n '[before-after-hook]: \"Hook()\" repurposing warning, use \"Hook.Collection()\". Read more: https://git.io/upgrade-before-after-hook-to-1.4'\n );\n collectionHookDeprecationMessageDisplayed = true;\n }\n return HookCollection();\n}\n\nHook.Singular = HookSingular.bind();\nHook.Collection = HookCollection.bind();\n\nmodule.exports = Hook;\n// expose constructors as a named property for TypeScript\nmodule.exports.Hook = Hook;\nmodule.exports.Singular = Hook.Singular;\nmodule.exports.Collection = Hook.Collection;\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\n/*!\n * is-plain-object \n *\n * Copyright (c) 2014-2017, Jon Schlinkert.\n * Released under the MIT License.\n */\n\nfunction isObject(o) {\n return Object.prototype.toString.call(o) === '[object Object]';\n}\n\nfunction isPlainObject(o) {\n var ctor,prot;\n\n if (isObject(o) === false) return false;\n\n // If has modified constructor\n ctor = o.constructor;\n if (ctor === undefined) return true;\n\n // If has modified prototype\n prot = ctor.prototype;\n if (isObject(prot) === false) return false;\n\n // If constructor does not have an Object-specific method\n if (prot.hasOwnProperty('isPrototypeOf') === false) {\n return false;\n }\n\n // Most likely a plain Object\n return true;\n}\n\nexports.isPlainObject = isPlainObject;\n", "export function lowercaseKeys(object) {\n if (!object) {\n return {};\n }\n return Object.keys(object).reduce((newObj, key) => {\n newObj[key.toLowerCase()] = object[key];\n return newObj;\n }, {});\n}\n", "import { isPlainObject } from \"is-plain-object\";\nexport function mergeDeep(defaults, options) {\n const result = Object.assign({}, defaults);\n Object.keys(options).forEach((key) => {\n if (isPlainObject(options[key])) {\n if (!(key in defaults))\n Object.assign(result, { [key]: options[key] });\n else\n result[key] = mergeDeep(defaults[key], options[key]);\n }\n else {\n Object.assign(result, { [key]: options[key] });\n }\n });\n return result;\n}\n", "export function removeUndefinedProperties(obj) {\n for (const key in obj) {\n if (obj[key] === undefined) {\n delete obj[key];\n }\n }\n return obj;\n}\n", "import { lowercaseKeys } from \"./util/lowercase-keys\";\nimport { mergeDeep } from \"./util/merge-deep\";\nimport { removeUndefinedProperties } from \"./util/remove-undefined-properties\";\nexport function merge(defaults, route, options) {\n if (typeof route === \"string\") {\n let [method, url] = route.split(\" \");\n options = Object.assign(url ? { method, url } : { url: method }, options);\n }\n else {\n options = Object.assign({}, route);\n }\n // lowercase header names before merging with defaults to avoid duplicates\n options.headers = lowercaseKeys(options.headers);\n // remove properties with undefined values before merging\n removeUndefinedProperties(options);\n removeUndefinedProperties(options.headers);\n const mergedOptions = mergeDeep(defaults || {}, options);\n // mediaType.previews arrays are merged, instead of overwritten\n if (defaults && defaults.mediaType.previews.length) {\n mergedOptions.mediaType.previews = defaults.mediaType.previews\n .filter((preview) => !mergedOptions.mediaType.previews.includes(preview))\n .concat(mergedOptions.mediaType.previews);\n }\n mergedOptions.mediaType.previews = mergedOptions.mediaType.previews.map((preview) => preview.replace(/-preview/, \"\"));\n return mergedOptions;\n}\n", "export function addQueryParameters(url, parameters) {\n const separator = /\\?/.test(url) ? \"&\" : \"?\";\n const names = Object.keys(parameters);\n if (names.length === 0) {\n return url;\n }\n return (url +\n separator +\n names\n .map((name) => {\n if (name === \"q\") {\n return (\"q=\" + parameters.q.split(\"+\").map(encodeURIComponent).join(\"+\"));\n }\n return `${name}=${encodeURIComponent(parameters[name])}`;\n })\n .join(\"&\"));\n}\n", "const urlVariableRegex = /\\{[^}]+\\}/g;\nfunction removeNonChars(variableName) {\n return variableName.replace(/^\\W+|\\W+$/g, \"\").split(/,/);\n}\nexport function extractUrlVariableNames(url) {\n const matches = url.match(urlVariableRegex);\n if (!matches) {\n return [];\n }\n return matches.map(removeNonChars).reduce((a, b) => a.concat(b), []);\n}\n", "export function omit(object, keysToOmit) {\n return Object.keys(object)\n .filter((option) => !keysToOmit.includes(option))\n .reduce((obj, key) => {\n obj[key] = object[key];\n return obj;\n }, {});\n}\n", "// Based on https://github.com/bramstein/url-template, licensed under BSD\n// TODO: create separate package.\n//\n// Copyright (c) 2012-2014, Bram Stein\n// All rights reserved.\n// Redistribution and use in source and binary forms, with or without\n// modification, are permitted provided that the following conditions\n// are met:\n// 1. Redistributions of source code must retain the above copyright\n// notice, this list of conditions and the following disclaimer.\n// 2. Redistributions in binary form must reproduce the above copyright\n// notice, this list of conditions and the following disclaimer in the\n// documentation and/or other materials provided with the distribution.\n// 3. The name of the author may not be used to endorse or promote products\n// derived from this software without specific prior written permission.\n// THIS SOFTWARE IS PROVIDED BY THE AUTHOR \"AS IS\" AND ANY EXPRESS OR IMPLIED\n// WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\n// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO\n// EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n// INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n// BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY\n// OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\n// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,\n// EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n/* istanbul ignore file */\nfunction encodeReserved(str) {\n return str\n .split(/(%[0-9A-Fa-f]{2})/g)\n .map(function (part) {\n if (!/%[0-9A-Fa-f]/.test(part)) {\n part = encodeURI(part).replace(/%5B/g, \"[\").replace(/%5D/g, \"]\");\n }\n return part;\n })\n .join(\"\");\n}\nfunction encodeUnreserved(str) {\n return encodeURIComponent(str).replace(/[!'()*]/g, function (c) {\n return \"%\" + c.charCodeAt(0).toString(16).toUpperCase();\n });\n}\nfunction encodeValue(operator, value, key) {\n value =\n operator === \"+\" || operator === \"#\"\n ? encodeReserved(value)\n : encodeUnreserved(value);\n if (key) {\n return encodeUnreserved(key) + \"=\" + value;\n }\n else {\n return value;\n }\n}\nfunction isDefined(value) {\n return value !== undefined && value !== null;\n}\nfunction isKeyOperator(operator) {\n return operator === \";\" || operator === \"&\" || operator === \"?\";\n}\nfunction getValues(context, operator, key, modifier) {\n var value = context[key], result = [];\n if (isDefined(value) && value !== \"\") {\n if (typeof value === \"string\" ||\n typeof value === \"number\" ||\n typeof value === \"boolean\") {\n value = value.toString();\n if (modifier && modifier !== \"*\") {\n value = value.substring(0, parseInt(modifier, 10));\n }\n result.push(encodeValue(operator, value, isKeyOperator(operator) ? key : \"\"));\n }\n else {\n if (modifier === \"*\") {\n if (Array.isArray(value)) {\n value.filter(isDefined).forEach(function (value) {\n result.push(encodeValue(operator, value, isKeyOperator(operator) ? key : \"\"));\n });\n }\n else {\n Object.keys(value).forEach(function (k) {\n if (isDefined(value[k])) {\n result.push(encodeValue(operator, value[k], k));\n }\n });\n }\n }\n else {\n const tmp = [];\n if (Array.isArray(value)) {\n value.filter(isDefined).forEach(function (value) {\n tmp.push(encodeValue(operator, value));\n });\n }\n else {\n Object.keys(value).forEach(function (k) {\n if (isDefined(value[k])) {\n tmp.push(encodeUnreserved(k));\n tmp.push(encodeValue(operator, value[k].toString()));\n }\n });\n }\n if (isKeyOperator(operator)) {\n result.push(encodeUnreserved(key) + \"=\" + tmp.join(\",\"));\n }\n else if (tmp.length !== 0) {\n result.push(tmp.join(\",\"));\n }\n }\n }\n }\n else {\n if (operator === \";\") {\n if (isDefined(value)) {\n result.push(encodeUnreserved(key));\n }\n }\n else if (value === \"\" && (operator === \"&\" || operator === \"?\")) {\n result.push(encodeUnreserved(key) + \"=\");\n }\n else if (value === \"\") {\n result.push(\"\");\n }\n }\n return result;\n}\nexport function parseUrl(template) {\n return {\n expand: expand.bind(null, template),\n };\n}\nfunction expand(template, context) {\n var operators = [\"+\", \"#\", \".\", \"/\", \";\", \"?\", \"&\"];\n return template.replace(/\\{([^\\{\\}]+)\\}|([^\\{\\}]+)/g, function (_, expression, literal) {\n if (expression) {\n let operator = \"\";\n const values = [];\n if (operators.indexOf(expression.charAt(0)) !== -1) {\n operator = expression.charAt(0);\n expression = expression.substr(1);\n }\n expression.split(/,/g).forEach(function (variable) {\n var tmp = /([^:\\*]*)(?::(\\d+)|(\\*))?/.exec(variable);\n values.push(getValues(context, operator, tmp[1], tmp[2] || tmp[3]));\n });\n if (operator && operator !== \"+\") {\n var separator = \",\";\n if (operator === \"?\") {\n separator = \"&\";\n }\n else if (operator !== \"#\") {\n separator = operator;\n }\n return (values.length !== 0 ? operator : \"\") + values.join(separator);\n }\n else {\n return values.join(\",\");\n }\n }\n else {\n return encodeReserved(literal);\n }\n });\n}\n", "import { addQueryParameters } from \"./util/add-query-parameters\";\nimport { extractUrlVariableNames } from \"./util/extract-url-variable-names\";\nimport { omit } from \"./util/omit\";\nimport { parseUrl } from \"./util/url-template\";\nexport function parse(options) {\n // https://fetch.spec.whatwg.org/#methods\n let method = options.method.toUpperCase();\n // replace :varname with {varname} to make it RFC 6570 compatible\n let url = (options.url || \"/\").replace(/:([a-z]\\w+)/g, \"{$1}\");\n let headers = Object.assign({}, options.headers);\n let body;\n let parameters = omit(options, [\n \"method\",\n \"baseUrl\",\n \"url\",\n \"headers\",\n \"request\",\n \"mediaType\",\n ]);\n // extract variable names from URL to calculate remaining variables later\n const urlVariableNames = extractUrlVariableNames(url);\n url = parseUrl(url).expand(parameters);\n if (!/^http/.test(url)) {\n url = options.baseUrl + url;\n }\n const omittedParameters = Object.keys(options)\n .filter((option) => urlVariableNames.includes(option))\n .concat(\"baseUrl\");\n const remainingParameters = omit(parameters, omittedParameters);\n const isBinaryRequest = /application\\/octet-stream/i.test(headers.accept);\n if (!isBinaryRequest) {\n if (options.mediaType.format) {\n // e.g. application/vnd.github.v3+json => application/vnd.github.v3.raw\n headers.accept = headers.accept\n .split(/,/)\n .map((preview) => preview.replace(/application\\/vnd(\\.\\w+)(\\.v3)?(\\.\\w+)?(\\+json)?$/, `application/vnd$1$2.${options.mediaType.format}`))\n .join(\",\");\n }\n if (options.mediaType.previews.length) {\n const previewsFromAcceptHeader = headers.accept.match(/[\\w-]+(?=-preview)/g) || [];\n headers.accept = previewsFromAcceptHeader\n .concat(options.mediaType.previews)\n .map((preview) => {\n const format = options.mediaType.format\n ? `.${options.mediaType.format}`\n : \"+json\";\n return `application/vnd.github.${preview}-preview${format}`;\n })\n .join(\",\");\n }\n }\n // for GET/HEAD requests, set URL query parameters from remaining parameters\n // for PATCH/POST/PUT/DELETE requests, set request body from remaining parameters\n if ([\"GET\", \"HEAD\"].includes(method)) {\n url = addQueryParameters(url, remainingParameters);\n }\n else {\n if (\"data\" in remainingParameters) {\n body = remainingParameters.data;\n }\n else {\n if (Object.keys(remainingParameters).length) {\n body = remainingParameters;\n }\n else {\n headers[\"content-length\"] = 0;\n }\n }\n }\n // default content-type for JSON if body is set\n if (!headers[\"content-type\"] && typeof body !== \"undefined\") {\n headers[\"content-type\"] = \"application/json; charset=utf-8\";\n }\n // GitHub expects 'content-length: 0' header for PUT/PATCH requests without body.\n // fetch does not allow to set `content-length` header, but we can set body to an empty string\n if ([\"PATCH\", \"PUT\"].includes(method) && typeof body === \"undefined\") {\n body = \"\";\n }\n // Only return body/request keys if present\n return Object.assign({ method, url, headers }, typeof body !== \"undefined\" ? { body } : null, options.request ? { request: options.request } : null);\n}\n", "import { merge } from \"./merge\";\nimport { parse } from \"./parse\";\nexport function endpointWithDefaults(defaults, route, options) {\n return parse(merge(defaults, route, options));\n}\n", "import { endpointWithDefaults } from \"./endpoint-with-defaults\";\nimport { merge } from \"./merge\";\nimport { parse } from \"./parse\";\nexport function withDefaults(oldDefaults, newDefaults) {\n const DEFAULTS = merge(oldDefaults, newDefaults);\n const endpoint = endpointWithDefaults.bind(null, DEFAULTS);\n return Object.assign(endpoint, {\n DEFAULTS,\n defaults: withDefaults.bind(null, DEFAULTS),\n merge: merge.bind(null, DEFAULTS),\n parse,\n });\n}\n", "export const VERSION = \"6.0.12\";\n", "import { getUserAgent } from \"universal-user-agent\";\nimport { VERSION } from \"./version\";\nconst userAgent = `octokit-endpoint.js/${VERSION} ${getUserAgent()}`;\n// DEFAULTS has all properties set that EndpointOptions has, except url.\n// So we use RequestParameters and add method as additional required property.\nexport const DEFAULTS = {\n method: \"GET\",\n baseUrl: \"https://api.github.com\",\n headers: {\n accept: \"application/vnd.github.v3+json\",\n \"user-agent\": userAgent,\n },\n mediaType: {\n format: \"\",\n previews: [],\n },\n};\n", "import { withDefaults } from \"./with-defaults\";\nimport { DEFAULTS } from \"./defaults\";\nexport const endpoint = withDefaults(null, DEFAULTS);\n", "\"use strict\";\n\nvar conversions = {};\nmodule.exports = conversions;\n\nfunction sign(x) {\n return x < 0 ? -1 : 1;\n}\n\nfunction evenRound(x) {\n // Round x to the nearest integer, choosing the even integer if it lies halfway between two.\n if ((x % 1) === 0.5 && (x & 1) === 0) { // [even number].5; round down (i.e. floor)\n return Math.floor(x);\n } else {\n return Math.round(x);\n }\n}\n\nfunction createNumberConversion(bitLength, typeOpts) {\n if (!typeOpts.unsigned) {\n --bitLength;\n }\n const lowerBound = typeOpts.unsigned ? 0 : -Math.pow(2, bitLength);\n const upperBound = Math.pow(2, bitLength) - 1;\n\n const moduloVal = typeOpts.moduloBitLength ? Math.pow(2, typeOpts.moduloBitLength) : Math.pow(2, bitLength);\n const moduloBound = typeOpts.moduloBitLength ? Math.pow(2, typeOpts.moduloBitLength - 1) : Math.pow(2, bitLength - 1);\n\n return function(V, opts) {\n if (!opts) opts = {};\n\n let x = +V;\n\n if (opts.enforceRange) {\n if (!Number.isFinite(x)) {\n throw new TypeError(\"Argument is not a finite number\");\n }\n\n x = sign(x) * Math.floor(Math.abs(x));\n if (x < lowerBound || x > upperBound) {\n throw new TypeError(\"Argument is not in byte range\");\n }\n\n return x;\n }\n\n if (!isNaN(x) && opts.clamp) {\n x = evenRound(x);\n\n if (x < lowerBound) x = lowerBound;\n if (x > upperBound) x = upperBound;\n return x;\n }\n\n if (!Number.isFinite(x) || x === 0) {\n return 0;\n }\n\n x = sign(x) * Math.floor(Math.abs(x));\n x = x % moduloVal;\n\n if (!typeOpts.unsigned && x >= moduloBound) {\n return x - moduloVal;\n } else if (typeOpts.unsigned) {\n if (x < 0) {\n x += moduloVal;\n } else if (x === -0) { // don't return negative zero\n return 0;\n }\n }\n\n return x;\n }\n}\n\nconversions[\"void\"] = function () {\n return undefined;\n};\n\nconversions[\"boolean\"] = function (val) {\n return !!val;\n};\n\nconversions[\"byte\"] = createNumberConversion(8, { unsigned: false });\nconversions[\"octet\"] = createNumberConversion(8, { unsigned: true });\n\nconversions[\"short\"] = createNumberConversion(16, { unsigned: false });\nconversions[\"unsigned short\"] = createNumberConversion(16, { unsigned: true });\n\nconversions[\"long\"] = createNumberConversion(32, { unsigned: false });\nconversions[\"unsigned long\"] = createNumberConversion(32, { unsigned: true });\n\nconversions[\"long long\"] = createNumberConversion(32, { unsigned: false, moduloBitLength: 64 });\nconversions[\"unsigned long long\"] = createNumberConversion(32, { unsigned: true, moduloBitLength: 64 });\n\nconversions[\"double\"] = function (V) {\n const x = +V;\n\n if (!Number.isFinite(x)) {\n throw new TypeError(\"Argument is not a finite floating-point value\");\n }\n\n return x;\n};\n\nconversions[\"unrestricted double\"] = function (V) {\n const x = +V;\n\n if (isNaN(x)) {\n throw new TypeError(\"Argument is NaN\");\n }\n\n return x;\n};\n\n// not quite valid, but good enough for JS\nconversions[\"float\"] = conversions[\"double\"];\nconversions[\"unrestricted float\"] = conversions[\"unrestricted double\"];\n\nconversions[\"DOMString\"] = function (V, opts) {\n if (!opts) opts = {};\n\n if (opts.treatNullAsEmptyString && V === null) {\n return \"\";\n }\n\n return String(V);\n};\n\nconversions[\"ByteString\"] = function (V, opts) {\n const x = String(V);\n let c = undefined;\n for (let i = 0; (c = x.codePointAt(i)) !== undefined; ++i) {\n if (c > 255) {\n throw new TypeError(\"Argument is not a valid bytestring\");\n }\n }\n\n return x;\n};\n\nconversions[\"USVString\"] = function (V) {\n const S = String(V);\n const n = S.length;\n const U = [];\n for (let i = 0; i < n; ++i) {\n const c = S.charCodeAt(i);\n if (c < 0xD800 || c > 0xDFFF) {\n U.push(String.fromCodePoint(c));\n } else if (0xDC00 <= c && c <= 0xDFFF) {\n U.push(String.fromCodePoint(0xFFFD));\n } else {\n if (i === n - 1) {\n U.push(String.fromCodePoint(0xFFFD));\n } else {\n const d = S.charCodeAt(i + 1);\n if (0xDC00 <= d && d <= 0xDFFF) {\n const a = c & 0x3FF;\n const b = d & 0x3FF;\n U.push(String.fromCodePoint((2 << 15) + (2 << 9) * a + b));\n ++i;\n } else {\n U.push(String.fromCodePoint(0xFFFD));\n }\n }\n }\n }\n\n return U.join('');\n};\n\nconversions[\"Date\"] = function (V, opts) {\n if (!(V instanceof Date)) {\n throw new TypeError(\"Argument is not a Date object\");\n }\n if (isNaN(V)) {\n return undefined;\n }\n\n return V;\n};\n\nconversions[\"RegExp\"] = function (V, opts) {\n if (!(V instanceof RegExp)) {\n V = new RegExp(V);\n }\n\n return V;\n};\n", "\"use strict\";\n\nmodule.exports.mixin = function mixin(target, source) {\n const keys = Object.getOwnPropertyNames(source);\n for (let i = 0; i < keys.length; ++i) {\n Object.defineProperty(target, keys[i], Object.getOwnPropertyDescriptor(source, keys[i]));\n }\n};\n\nmodule.exports.wrapperSymbol = Symbol(\"wrapper\");\nmodule.exports.implSymbol = Symbol(\"impl\");\n\nmodule.exports.wrapperForImpl = function (impl) {\n return impl[module.exports.wrapperSymbol];\n};\n\nmodule.exports.implForWrapper = function (wrapper) {\n return wrapper[module.exports.implSymbol];\n};\n\n", "[[[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\"],[[1000,1000],\"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,6000],\"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]],[[8000,8005],\"valid\"],[[8006,8007],\"disallowed\"],[[8008,8008],\"mapped\",[8000]],[[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,9000],\"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\",[30000]],[[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]],[[13000,13000],\"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\"],[[43000,43000],\"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]],[[64000,64000],\"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\"],[[66000,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]],[[120000,120000],\"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\"],[[128000,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\",[23000]],[[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\",[149000]],[[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\",[32000]],[[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]],[[195000,195000],\"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\",[40000]],[[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\"],[[918000,983037],\"disallowed\"],[[983038,983039],\"disallowed\"],[[983040,1048573],\"disallowed\"],[[1048574,1048575],\"disallowed\"],[[1048576,1114109],\"disallowed\"],[[1114110,1114111],\"disallowed\"]]", "\"use strict\";\n\nvar punycode = require(\"punycode\");\nvar mappingTable = require(\"./lib/mappingTable.json\");\n\nvar PROCESSING_OPTIONS = {\n TRANSITIONAL: 0,\n NONTRANSITIONAL: 1\n};\n\nfunction normalize(str) { // fix bug in v8\n return str.split('\\u0000').map(function (s) { return s.normalize('NFC'); }).join('\\u0000');\n}\n\nfunction findStatus(val) {\n var start = 0;\n var end = mappingTable.length - 1;\n\n while (start <= end) {\n var mid = Math.floor((start + end) / 2);\n\n var target = mappingTable[mid];\n if (target[0][0] <= val && target[0][1] >= val) {\n return target;\n } else if (target[0][0] > val) {\n end = mid - 1;\n } else {\n start = mid + 1;\n }\n }\n\n return null;\n}\n\nvar regexAstralSymbols = /[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/g;\n\nfunction countSymbols(string) {\n return string\n // replace every surrogate pair with a BMP symbol\n .replace(regexAstralSymbols, '_')\n // then get the length\n .length;\n}\n\nfunction mapChars(domain_name, useSTD3, processing_option) {\n var hasError = false;\n var processed = \"\";\n\n var len = countSymbols(domain_name);\n for (var i = 0; i < len; ++i) {\n var codePoint = domain_name.codePointAt(i);\n var status = findStatus(codePoint);\n\n switch (status[1]) {\n case \"disallowed\":\n hasError = true;\n processed += String.fromCodePoint(codePoint);\n break;\n case \"ignored\":\n break;\n case \"mapped\":\n processed += String.fromCodePoint.apply(String, status[2]);\n break;\n case \"deviation\":\n if (processing_option === PROCESSING_OPTIONS.TRANSITIONAL) {\n processed += String.fromCodePoint.apply(String, status[2]);\n } else {\n processed += String.fromCodePoint(codePoint);\n }\n break;\n case \"valid\":\n processed += String.fromCodePoint(codePoint);\n break;\n case \"disallowed_STD3_mapped\":\n if (useSTD3) {\n hasError = true;\n processed += String.fromCodePoint(codePoint);\n } else {\n processed += String.fromCodePoint.apply(String, status[2]);\n }\n break;\n case \"disallowed_STD3_valid\":\n if (useSTD3) {\n hasError = true;\n }\n\n processed += String.fromCodePoint(codePoint);\n break;\n }\n }\n\n return {\n string: processed,\n error: hasError\n };\n}\n\nvar 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]/;\n\nfunction validateLabel(label, processing_option) {\n if (label.substr(0, 4) === \"xn--\") {\n label = punycode.toUnicode(label);\n processing_option = PROCESSING_OPTIONS.NONTRANSITIONAL;\n }\n\n var error = false;\n\n if (normalize(label) !== label ||\n (label[3] === \"-\" && label[4] === \"-\") ||\n label[0] === \"-\" || label[label.length - 1] === \"-\" ||\n label.indexOf(\".\") !== -1 ||\n label.search(combiningMarksRegex) === 0) {\n error = true;\n }\n\n var len = countSymbols(label);\n for (var i = 0; i < len; ++i) {\n var status = findStatus(label.codePointAt(i));\n if ((processing === PROCESSING_OPTIONS.TRANSITIONAL && status[1] !== \"valid\") ||\n (processing === PROCESSING_OPTIONS.NONTRANSITIONAL &&\n status[1] !== \"valid\" && status[1] !== \"deviation\")) {\n error = true;\n break;\n }\n }\n\n return {\n label: label,\n error: error\n };\n}\n\nfunction processing(domain_name, useSTD3, processing_option) {\n var result = mapChars(domain_name, useSTD3, processing_option);\n result.string = normalize(result.string);\n\n var labels = result.string.split(\".\");\n for (var i = 0; i < labels.length; ++i) {\n try {\n var validation = validateLabel(labels[i]);\n labels[i] = validation.label;\n result.error = result.error || validation.error;\n } catch(e) {\n result.error = true;\n }\n }\n\n return {\n string: labels.join(\".\"),\n error: result.error\n };\n}\n\nmodule.exports.toASCII = function(domain_name, useSTD3, processing_option, verifyDnsLength) {\n var result = processing(domain_name, useSTD3, processing_option);\n var labels = result.string.split(\".\");\n labels = labels.map(function(l) {\n try {\n return punycode.toASCII(l);\n } catch(e) {\n result.error = true;\n return l;\n }\n });\n\n if (verifyDnsLength) {\n var total = labels.slice(0, labels.length - 1).join(\".\").length;\n if (total.length > 253 || total.length === 0) {\n result.error = true;\n }\n\n for (var i=0; i < labels.length; ++i) {\n if (labels.length > 63 || labels.length === 0) {\n result.error = true;\n break;\n }\n }\n }\n\n if (result.error) return null;\n return labels.join(\".\");\n};\n\nmodule.exports.toUnicode = function(domain_name, useSTD3) {\n var result = processing(domain_name, useSTD3, PROCESSING_OPTIONS.NONTRANSITIONAL);\n\n return {\n domain: result.string,\n error: result.error\n };\n};\n\nmodule.exports.PROCESSING_OPTIONS = PROCESSING_OPTIONS;\n", "\"use strict\";\r\nconst punycode = require(\"punycode\");\r\nconst tr46 = require(\"tr46\");\r\n\r\nconst specialSchemes = {\r\n ftp: 21,\r\n file: null,\r\n gopher: 70,\r\n http: 80,\r\n https: 443,\r\n ws: 80,\r\n wss: 443\r\n};\r\n\r\nconst failure = Symbol(\"failure\");\r\n\r\nfunction countSymbols(str) {\r\n return punycode.ucs2.decode(str).length;\r\n}\r\n\r\nfunction at(input, idx) {\r\n const c = input[idx];\r\n return isNaN(c) ? undefined : String.fromCodePoint(c);\r\n}\r\n\r\nfunction isASCIIDigit(c) {\r\n return c >= 0x30 && c <= 0x39;\r\n}\r\n\r\nfunction isASCIIAlpha(c) {\r\n return (c >= 0x41 && c <= 0x5A) || (c >= 0x61 && c <= 0x7A);\r\n}\r\n\r\nfunction isASCIIAlphanumeric(c) {\r\n return isASCIIAlpha(c) || isASCIIDigit(c);\r\n}\r\n\r\nfunction isASCIIHex(c) {\r\n return isASCIIDigit(c) || (c >= 0x41 && c <= 0x46) || (c >= 0x61 && c <= 0x66);\r\n}\r\n\r\nfunction isSingleDot(buffer) {\r\n return buffer === \".\" || buffer.toLowerCase() === \"%2e\";\r\n}\r\n\r\nfunction isDoubleDot(buffer) {\r\n buffer = buffer.toLowerCase();\r\n return buffer === \"..\" || buffer === \"%2e.\" || buffer === \".%2e\" || buffer === \"%2e%2e\";\r\n}\r\n\r\nfunction isWindowsDriveLetterCodePoints(cp1, cp2) {\r\n return isASCIIAlpha(cp1) && (cp2 === 58 || cp2 === 124);\r\n}\r\n\r\nfunction isWindowsDriveLetterString(string) {\r\n return string.length === 2 && isASCIIAlpha(string.codePointAt(0)) && (string[1] === \":\" || string[1] === \"|\");\r\n}\r\n\r\nfunction isNormalizedWindowsDriveLetterString(string) {\r\n return string.length === 2 && isASCIIAlpha(string.codePointAt(0)) && string[1] === \":\";\r\n}\r\n\r\nfunction containsForbiddenHostCodePoint(string) {\r\n return string.search(/\\u0000|\\u0009|\\u000A|\\u000D|\\u0020|#|%|\\/|:|\\?|@|\\[|\\\\|\\]/) !== -1;\r\n}\r\n\r\nfunction containsForbiddenHostCodePointExcludingPercent(string) {\r\n return string.search(/\\u0000|\\u0009|\\u000A|\\u000D|\\u0020|#|\\/|:|\\?|@|\\[|\\\\|\\]/) !== -1;\r\n}\r\n\r\nfunction isSpecialScheme(scheme) {\r\n return specialSchemes[scheme] !== undefined;\r\n}\r\n\r\nfunction isSpecial(url) {\r\n return isSpecialScheme(url.scheme);\r\n}\r\n\r\nfunction defaultPort(scheme) {\r\n return specialSchemes[scheme];\r\n}\r\n\r\nfunction percentEncode(c) {\r\n let hex = c.toString(16).toUpperCase();\r\n if (hex.length === 1) {\r\n hex = \"0\" + hex;\r\n }\r\n\r\n return \"%\" + hex;\r\n}\r\n\r\nfunction utf8PercentEncode(c) {\r\n const buf = new Buffer(c);\r\n\r\n let str = \"\";\r\n\r\n for (let i = 0; i < buf.length; ++i) {\r\n str += percentEncode(buf[i]);\r\n }\r\n\r\n return str;\r\n}\r\n\r\nfunction utf8PercentDecode(str) {\r\n const input = new Buffer(str);\r\n const output = [];\r\n for (let i = 0; i < input.length; ++i) {\r\n if (input[i] !== 37) {\r\n output.push(input[i]);\r\n } else if (input[i] === 37 && isASCIIHex(input[i + 1]) && isASCIIHex(input[i + 2])) {\r\n output.push(parseInt(input.slice(i + 1, i + 3).toString(), 16));\r\n i += 2;\r\n } else {\r\n output.push(input[i]);\r\n }\r\n }\r\n return new Buffer(output).toString();\r\n}\r\n\r\nfunction isC0ControlPercentEncode(c) {\r\n return c <= 0x1F || c > 0x7E;\r\n}\r\n\r\nconst extraPathPercentEncodeSet = new Set([32, 34, 35, 60, 62, 63, 96, 123, 125]);\r\nfunction isPathPercentEncode(c) {\r\n return isC0ControlPercentEncode(c) || extraPathPercentEncodeSet.has(c);\r\n}\r\n\r\nconst extraUserinfoPercentEncodeSet =\r\n new Set([47, 58, 59, 61, 64, 91, 92, 93, 94, 124]);\r\nfunction isUserinfoPercentEncode(c) {\r\n return isPathPercentEncode(c) || extraUserinfoPercentEncodeSet.has(c);\r\n}\r\n\r\nfunction percentEncodeChar(c, encodeSetPredicate) {\r\n const cStr = String.fromCodePoint(c);\r\n\r\n if (encodeSetPredicate(c)) {\r\n return utf8PercentEncode(cStr);\r\n }\r\n\r\n return cStr;\r\n}\r\n\r\nfunction parseIPv4Number(input) {\r\n let R = 10;\r\n\r\n if (input.length >= 2 && input.charAt(0) === \"0\" && input.charAt(1).toLowerCase() === \"x\") {\r\n input = input.substring(2);\r\n R = 16;\r\n } else if (input.length >= 2 && input.charAt(0) === \"0\") {\r\n input = input.substring(1);\r\n R = 8;\r\n }\r\n\r\n if (input === \"\") {\r\n return 0;\r\n }\r\n\r\n const regex = R === 10 ? /[^0-9]/ : (R === 16 ? /[^0-9A-Fa-f]/ : /[^0-7]/);\r\n if (regex.test(input)) {\r\n return failure;\r\n }\r\n\r\n return parseInt(input, R);\r\n}\r\n\r\nfunction parseIPv4(input) {\r\n const parts = input.split(\".\");\r\n if (parts[parts.length - 1] === \"\") {\r\n if (parts.length > 1) {\r\n parts.pop();\r\n }\r\n }\r\n\r\n if (parts.length > 4) {\r\n return input;\r\n }\r\n\r\n const numbers = [];\r\n for (const part of parts) {\r\n if (part === \"\") {\r\n return input;\r\n }\r\n const n = parseIPv4Number(part);\r\n if (n === failure) {\r\n return input;\r\n }\r\n\r\n numbers.push(n);\r\n }\r\n\r\n for (let i = 0; i < numbers.length - 1; ++i) {\r\n if (numbers[i] > 255) {\r\n return failure;\r\n }\r\n }\r\n if (numbers[numbers.length - 1] >= Math.pow(256, 5 - numbers.length)) {\r\n return failure;\r\n }\r\n\r\n let ipv4 = numbers.pop();\r\n let counter = 0;\r\n\r\n for (const n of numbers) {\r\n ipv4 += n * Math.pow(256, 3 - counter);\r\n ++counter;\r\n }\r\n\r\n return ipv4;\r\n}\r\n\r\nfunction serializeIPv4(address) {\r\n let output = \"\";\r\n let n = address;\r\n\r\n for (let i = 1; i <= 4; ++i) {\r\n output = String(n % 256) + output;\r\n if (i !== 4) {\r\n output = \".\" + output;\r\n }\r\n n = Math.floor(n / 256);\r\n }\r\n\r\n return output;\r\n}\r\n\r\nfunction parseIPv6(input) {\r\n const address = [0, 0, 0, 0, 0, 0, 0, 0];\r\n let pieceIndex = 0;\r\n let compress = null;\r\n let pointer = 0;\r\n\r\n input = punycode.ucs2.decode(input);\r\n\r\n if (input[pointer] === 58) {\r\n if (input[pointer + 1] !== 58) {\r\n return failure;\r\n }\r\n\r\n pointer += 2;\r\n ++pieceIndex;\r\n compress = pieceIndex;\r\n }\r\n\r\n while (pointer < input.length) {\r\n if (pieceIndex === 8) {\r\n return failure;\r\n }\r\n\r\n if (input[pointer] === 58) {\r\n if (compress !== null) {\r\n return failure;\r\n }\r\n ++pointer;\r\n ++pieceIndex;\r\n compress = pieceIndex;\r\n continue;\r\n }\r\n\r\n let value = 0;\r\n let length = 0;\r\n\r\n while (length < 4 && isASCIIHex(input[pointer])) {\r\n value = value * 0x10 + parseInt(at(input, pointer), 16);\r\n ++pointer;\r\n ++length;\r\n }\r\n\r\n if (input[pointer] === 46) {\r\n if (length === 0) {\r\n return failure;\r\n }\r\n\r\n pointer -= length;\r\n\r\n if (pieceIndex > 6) {\r\n return failure;\r\n }\r\n\r\n let numbersSeen = 0;\r\n\r\n while (input[pointer] !== undefined) {\r\n let ipv4Piece = null;\r\n\r\n if (numbersSeen > 0) {\r\n if (input[pointer] === 46 && numbersSeen < 4) {\r\n ++pointer;\r\n } else {\r\n return failure;\r\n }\r\n }\r\n\r\n if (!isASCIIDigit(input[pointer])) {\r\n return failure;\r\n }\r\n\r\n while (isASCIIDigit(input[pointer])) {\r\n const number = parseInt(at(input, pointer));\r\n if (ipv4Piece === null) {\r\n ipv4Piece = number;\r\n } else if (ipv4Piece === 0) {\r\n return failure;\r\n } else {\r\n ipv4Piece = ipv4Piece * 10 + number;\r\n }\r\n if (ipv4Piece > 255) {\r\n return failure;\r\n }\r\n ++pointer;\r\n }\r\n\r\n address[pieceIndex] = address[pieceIndex] * 0x100 + ipv4Piece;\r\n\r\n ++numbersSeen;\r\n\r\n if (numbersSeen === 2 || numbersSeen === 4) {\r\n ++pieceIndex;\r\n }\r\n }\r\n\r\n if (numbersSeen !== 4) {\r\n return failure;\r\n }\r\n\r\n break;\r\n } else if (input[pointer] === 58) {\r\n ++pointer;\r\n if (input[pointer] === undefined) {\r\n return failure;\r\n }\r\n } else if (input[pointer] !== undefined) {\r\n return failure;\r\n }\r\n\r\n address[pieceIndex] = value;\r\n ++pieceIndex;\r\n }\r\n\r\n if (compress !== null) {\r\n let swaps = pieceIndex - compress;\r\n pieceIndex = 7;\r\n while (pieceIndex !== 0 && swaps > 0) {\r\n const temp = address[compress + swaps - 1];\r\n address[compress + swaps - 1] = address[pieceIndex];\r\n address[pieceIndex] = temp;\r\n --pieceIndex;\r\n --swaps;\r\n }\r\n } else if (compress === null && pieceIndex !== 8) {\r\n return failure;\r\n }\r\n\r\n return address;\r\n}\r\n\r\nfunction serializeIPv6(address) {\r\n let output = \"\";\r\n const seqResult = findLongestZeroSequence(address);\r\n const compress = seqResult.idx;\r\n let ignore0 = false;\r\n\r\n for (let pieceIndex = 0; pieceIndex <= 7; ++pieceIndex) {\r\n if (ignore0 && address[pieceIndex] === 0) {\r\n continue;\r\n } else if (ignore0) {\r\n ignore0 = false;\r\n }\r\n\r\n if (compress === pieceIndex) {\r\n const separator = pieceIndex === 0 ? \"::\" : \":\";\r\n output += separator;\r\n ignore0 = true;\r\n continue;\r\n }\r\n\r\n output += address[pieceIndex].toString(16);\r\n\r\n if (pieceIndex !== 7) {\r\n output += \":\";\r\n }\r\n }\r\n\r\n return output;\r\n}\r\n\r\nfunction parseHost(input, isSpecialArg) {\r\n if (input[0] === \"[\") {\r\n if (input[input.length - 1] !== \"]\") {\r\n return failure;\r\n }\r\n\r\n return parseIPv6(input.substring(1, input.length - 1));\r\n }\r\n\r\n if (!isSpecialArg) {\r\n return parseOpaqueHost(input);\r\n }\r\n\r\n const domain = utf8PercentDecode(input);\r\n const asciiDomain = tr46.toASCII(domain, false, tr46.PROCESSING_OPTIONS.NONTRANSITIONAL, false);\r\n if (asciiDomain === null) {\r\n return failure;\r\n }\r\n\r\n if (containsForbiddenHostCodePoint(asciiDomain)) {\r\n return failure;\r\n }\r\n\r\n const ipv4Host = parseIPv4(asciiDomain);\r\n if (typeof ipv4Host === \"number\" || ipv4Host === failure) {\r\n return ipv4Host;\r\n }\r\n\r\n return asciiDomain;\r\n}\r\n\r\nfunction parseOpaqueHost(input) {\r\n if (containsForbiddenHostCodePointExcludingPercent(input)) {\r\n return failure;\r\n }\r\n\r\n let output = \"\";\r\n const decoded = punycode.ucs2.decode(input);\r\n for (let i = 0; i < decoded.length; ++i) {\r\n output += percentEncodeChar(decoded[i], isC0ControlPercentEncode);\r\n }\r\n return output;\r\n}\r\n\r\nfunction findLongestZeroSequence(arr) {\r\n let maxIdx = null;\r\n let maxLen = 1; // only find elements > 1\r\n let currStart = null;\r\n let currLen = 0;\r\n\r\n for (let i = 0; i < arr.length; ++i) {\r\n if (arr[i] !== 0) {\r\n if (currLen > maxLen) {\r\n maxIdx = currStart;\r\n maxLen = currLen;\r\n }\r\n\r\n currStart = null;\r\n currLen = 0;\r\n } else {\r\n if (currStart === null) {\r\n currStart = i;\r\n }\r\n ++currLen;\r\n }\r\n }\r\n\r\n // if trailing zeros\r\n if (currLen > maxLen) {\r\n maxIdx = currStart;\r\n maxLen = currLen;\r\n }\r\n\r\n return {\r\n idx: maxIdx,\r\n len: maxLen\r\n };\r\n}\r\n\r\nfunction serializeHost(host) {\r\n if (typeof host === \"number\") {\r\n return serializeIPv4(host);\r\n }\r\n\r\n // IPv6 serializer\r\n if (host instanceof Array) {\r\n return \"[\" + serializeIPv6(host) + \"]\";\r\n }\r\n\r\n return host;\r\n}\r\n\r\nfunction trimControlChars(url) {\r\n return url.replace(/^[\\u0000-\\u001F\\u0020]+|[\\u0000-\\u001F\\u0020]+$/g, \"\");\r\n}\r\n\r\nfunction trimTabAndNewline(url) {\r\n return url.replace(/\\u0009|\\u000A|\\u000D/g, \"\");\r\n}\r\n\r\nfunction shortenPath(url) {\r\n const path = url.path;\r\n if (path.length === 0) {\r\n return;\r\n }\r\n if (url.scheme === \"file\" && path.length === 1 && isNormalizedWindowsDriveLetter(path[0])) {\r\n return;\r\n }\r\n\r\n path.pop();\r\n}\r\n\r\nfunction includesCredentials(url) {\r\n return url.username !== \"\" || url.password !== \"\";\r\n}\r\n\r\nfunction cannotHaveAUsernamePasswordPort(url) {\r\n return url.host === null || url.host === \"\" || url.cannotBeABaseURL || url.scheme === \"file\";\r\n}\r\n\r\nfunction isNormalizedWindowsDriveLetter(string) {\r\n return /^[A-Za-z]:$/.test(string);\r\n}\r\n\r\nfunction URLStateMachine(input, base, encodingOverride, url, stateOverride) {\r\n this.pointer = 0;\r\n this.input = input;\r\n this.base = base || null;\r\n this.encodingOverride = encodingOverride || \"utf-8\";\r\n this.stateOverride = stateOverride;\r\n this.url = url;\r\n this.failure = false;\r\n this.parseError = false;\r\n\r\n if (!this.url) {\r\n this.url = {\r\n scheme: \"\",\r\n username: \"\",\r\n password: \"\",\r\n host: null,\r\n port: null,\r\n path: [],\r\n query: null,\r\n fragment: null,\r\n\r\n cannotBeABaseURL: false\r\n };\r\n\r\n const res = trimControlChars(this.input);\r\n if (res !== this.input) {\r\n this.parseError = true;\r\n }\r\n this.input = res;\r\n }\r\n\r\n const res = trimTabAndNewline(this.input);\r\n if (res !== this.input) {\r\n this.parseError = true;\r\n }\r\n this.input = res;\r\n\r\n this.state = stateOverride || \"scheme start\";\r\n\r\n this.buffer = \"\";\r\n this.atFlag = false;\r\n this.arrFlag = false;\r\n this.passwordTokenSeenFlag = false;\r\n\r\n this.input = punycode.ucs2.decode(this.input);\r\n\r\n for (; this.pointer <= this.input.length; ++this.pointer) {\r\n const c = this.input[this.pointer];\r\n const cStr = isNaN(c) ? undefined : String.fromCodePoint(c);\r\n\r\n // exec state machine\r\n const ret = this[\"parse \" + this.state](c, cStr);\r\n if (!ret) {\r\n break; // terminate algorithm\r\n } else if (ret === failure) {\r\n this.failure = true;\r\n break;\r\n }\r\n }\r\n}\r\n\r\nURLStateMachine.prototype[\"parse scheme start\"] = function parseSchemeStart(c, cStr) {\r\n if (isASCIIAlpha(c)) {\r\n this.buffer += cStr.toLowerCase();\r\n this.state = \"scheme\";\r\n } else if (!this.stateOverride) {\r\n this.state = \"no scheme\";\r\n --this.pointer;\r\n } else {\r\n this.parseError = true;\r\n return failure;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse scheme\"] = function parseScheme(c, cStr) {\r\n if (isASCIIAlphanumeric(c) || c === 43 || c === 45 || c === 46) {\r\n this.buffer += cStr.toLowerCase();\r\n } else if (c === 58) {\r\n if (this.stateOverride) {\r\n if (isSpecial(this.url) && !isSpecialScheme(this.buffer)) {\r\n return false;\r\n }\r\n\r\n if (!isSpecial(this.url) && isSpecialScheme(this.buffer)) {\r\n return false;\r\n }\r\n\r\n if ((includesCredentials(this.url) || this.url.port !== null) && this.buffer === \"file\") {\r\n return false;\r\n }\r\n\r\n if (this.url.scheme === \"file\" && (this.url.host === \"\" || this.url.host === null)) {\r\n return false;\r\n }\r\n }\r\n this.url.scheme = this.buffer;\r\n this.buffer = \"\";\r\n if (this.stateOverride) {\r\n return false;\r\n }\r\n if (this.url.scheme === \"file\") {\r\n if (this.input[this.pointer + 1] !== 47 || this.input[this.pointer + 2] !== 47) {\r\n this.parseError = true;\r\n }\r\n this.state = \"file\";\r\n } else if (isSpecial(this.url) && this.base !== null && this.base.scheme === this.url.scheme) {\r\n this.state = \"special relative or authority\";\r\n } else if (isSpecial(this.url)) {\r\n this.state = \"special authority slashes\";\r\n } else if (this.input[this.pointer + 1] === 47) {\r\n this.state = \"path or authority\";\r\n ++this.pointer;\r\n } else {\r\n this.url.cannotBeABaseURL = true;\r\n this.url.path.push(\"\");\r\n this.state = \"cannot-be-a-base-URL path\";\r\n }\r\n } else if (!this.stateOverride) {\r\n this.buffer = \"\";\r\n this.state = \"no scheme\";\r\n this.pointer = -1;\r\n } else {\r\n this.parseError = true;\r\n return failure;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse no scheme\"] = function parseNoScheme(c) {\r\n if (this.base === null || (this.base.cannotBeABaseURL && c !== 35)) {\r\n return failure;\r\n } else if (this.base.cannotBeABaseURL && c === 35) {\r\n this.url.scheme = this.base.scheme;\r\n this.url.path = this.base.path.slice();\r\n this.url.query = this.base.query;\r\n this.url.fragment = \"\";\r\n this.url.cannotBeABaseURL = true;\r\n this.state = \"fragment\";\r\n } else if (this.base.scheme === \"file\") {\r\n this.state = \"file\";\r\n --this.pointer;\r\n } else {\r\n this.state = \"relative\";\r\n --this.pointer;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse special relative or authority\"] = function parseSpecialRelativeOrAuthority(c) {\r\n if (c === 47 && this.input[this.pointer + 1] === 47) {\r\n this.state = \"special authority ignore slashes\";\r\n ++this.pointer;\r\n } else {\r\n this.parseError = true;\r\n this.state = \"relative\";\r\n --this.pointer;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse path or authority\"] = function parsePathOrAuthority(c) {\r\n if (c === 47) {\r\n this.state = \"authority\";\r\n } else {\r\n this.state = \"path\";\r\n --this.pointer;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse relative\"] = function parseRelative(c) {\r\n this.url.scheme = this.base.scheme;\r\n if (isNaN(c)) {\r\n this.url.username = this.base.username;\r\n this.url.password = this.base.password;\r\n this.url.host = this.base.host;\r\n this.url.port = this.base.port;\r\n this.url.path = this.base.path.slice();\r\n this.url.query = this.base.query;\r\n } else if (c === 47) {\r\n this.state = \"relative slash\";\r\n } else if (c === 63) {\r\n this.url.username = this.base.username;\r\n this.url.password = this.base.password;\r\n this.url.host = this.base.host;\r\n this.url.port = this.base.port;\r\n this.url.path = this.base.path.slice();\r\n this.url.query = \"\";\r\n this.state = \"query\";\r\n } else if (c === 35) {\r\n this.url.username = this.base.username;\r\n this.url.password = this.base.password;\r\n this.url.host = this.base.host;\r\n this.url.port = this.base.port;\r\n this.url.path = this.base.path.slice();\r\n this.url.query = this.base.query;\r\n this.url.fragment = \"\";\r\n this.state = \"fragment\";\r\n } else if (isSpecial(this.url) && c === 92) {\r\n this.parseError = true;\r\n this.state = \"relative slash\";\r\n } else {\r\n this.url.username = this.base.username;\r\n this.url.password = this.base.password;\r\n this.url.host = this.base.host;\r\n this.url.port = this.base.port;\r\n this.url.path = this.base.path.slice(0, this.base.path.length - 1);\r\n\r\n this.state = \"path\";\r\n --this.pointer;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse relative slash\"] = function parseRelativeSlash(c) {\r\n if (isSpecial(this.url) && (c === 47 || c === 92)) {\r\n if (c === 92) {\r\n this.parseError = true;\r\n }\r\n this.state = \"special authority ignore slashes\";\r\n } else if (c === 47) {\r\n this.state = \"authority\";\r\n } else {\r\n this.url.username = this.base.username;\r\n this.url.password = this.base.password;\r\n this.url.host = this.base.host;\r\n this.url.port = this.base.port;\r\n this.state = \"path\";\r\n --this.pointer;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse special authority slashes\"] = function parseSpecialAuthoritySlashes(c) {\r\n if (c === 47 && this.input[this.pointer + 1] === 47) {\r\n this.state = \"special authority ignore slashes\";\r\n ++this.pointer;\r\n } else {\r\n this.parseError = true;\r\n this.state = \"special authority ignore slashes\";\r\n --this.pointer;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse special authority ignore slashes\"] = function parseSpecialAuthorityIgnoreSlashes(c) {\r\n if (c !== 47 && c !== 92) {\r\n this.state = \"authority\";\r\n --this.pointer;\r\n } else {\r\n this.parseError = true;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse authority\"] = function parseAuthority(c, cStr) {\r\n if (c === 64) {\r\n this.parseError = true;\r\n if (this.atFlag) {\r\n this.buffer = \"%40\" + this.buffer;\r\n }\r\n this.atFlag = true;\r\n\r\n // careful, this is based on buffer and has its own pointer (this.pointer != pointer) and inner chars\r\n const len = countSymbols(this.buffer);\r\n for (let pointer = 0; pointer < len; ++pointer) {\r\n const codePoint = this.buffer.codePointAt(pointer);\r\n\r\n if (codePoint === 58 && !this.passwordTokenSeenFlag) {\r\n this.passwordTokenSeenFlag = true;\r\n continue;\r\n }\r\n const encodedCodePoints = percentEncodeChar(codePoint, isUserinfoPercentEncode);\r\n if (this.passwordTokenSeenFlag) {\r\n this.url.password += encodedCodePoints;\r\n } else {\r\n this.url.username += encodedCodePoints;\r\n }\r\n }\r\n this.buffer = \"\";\r\n } else if (isNaN(c) || c === 47 || c === 63 || c === 35 ||\r\n (isSpecial(this.url) && c === 92)) {\r\n if (this.atFlag && this.buffer === \"\") {\r\n this.parseError = true;\r\n return failure;\r\n }\r\n this.pointer -= countSymbols(this.buffer) + 1;\r\n this.buffer = \"\";\r\n this.state = \"host\";\r\n } else {\r\n this.buffer += cStr;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse hostname\"] =\r\nURLStateMachine.prototype[\"parse host\"] = function parseHostName(c, cStr) {\r\n if (this.stateOverride && this.url.scheme === \"file\") {\r\n --this.pointer;\r\n this.state = \"file host\";\r\n } else if (c === 58 && !this.arrFlag) {\r\n if (this.buffer === \"\") {\r\n this.parseError = true;\r\n return failure;\r\n }\r\n\r\n const host = parseHost(this.buffer, isSpecial(this.url));\r\n if (host === failure) {\r\n return failure;\r\n }\r\n\r\n this.url.host = host;\r\n this.buffer = \"\";\r\n this.state = \"port\";\r\n if (this.stateOverride === \"hostname\") {\r\n return false;\r\n }\r\n } else if (isNaN(c) || c === 47 || c === 63 || c === 35 ||\r\n (isSpecial(this.url) && c === 92)) {\r\n --this.pointer;\r\n if (isSpecial(this.url) && this.buffer === \"\") {\r\n this.parseError = true;\r\n return failure;\r\n } else if (this.stateOverride && this.buffer === \"\" &&\r\n (includesCredentials(this.url) || this.url.port !== null)) {\r\n this.parseError = true;\r\n return false;\r\n }\r\n\r\n const host = parseHost(this.buffer, isSpecial(this.url));\r\n if (host === failure) {\r\n return failure;\r\n }\r\n\r\n this.url.host = host;\r\n this.buffer = \"\";\r\n this.state = \"path start\";\r\n if (this.stateOverride) {\r\n return false;\r\n }\r\n } else {\r\n if (c === 91) {\r\n this.arrFlag = true;\r\n } else if (c === 93) {\r\n this.arrFlag = false;\r\n }\r\n this.buffer += cStr;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse port\"] = function parsePort(c, cStr) {\r\n if (isASCIIDigit(c)) {\r\n this.buffer += cStr;\r\n } else if (isNaN(c) || c === 47 || c === 63 || c === 35 ||\r\n (isSpecial(this.url) && c === 92) ||\r\n this.stateOverride) {\r\n if (this.buffer !== \"\") {\r\n const port = parseInt(this.buffer);\r\n if (port > Math.pow(2, 16) - 1) {\r\n this.parseError = true;\r\n return failure;\r\n }\r\n this.url.port = port === defaultPort(this.url.scheme) ? null : port;\r\n this.buffer = \"\";\r\n }\r\n if (this.stateOverride) {\r\n return false;\r\n }\r\n this.state = \"path start\";\r\n --this.pointer;\r\n } else {\r\n this.parseError = true;\r\n return failure;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nconst fileOtherwiseCodePoints = new Set([47, 92, 63, 35]);\r\n\r\nURLStateMachine.prototype[\"parse file\"] = function parseFile(c) {\r\n this.url.scheme = \"file\";\r\n\r\n if (c === 47 || c === 92) {\r\n if (c === 92) {\r\n this.parseError = true;\r\n }\r\n this.state = \"file slash\";\r\n } else if (this.base !== null && this.base.scheme === \"file\") {\r\n if (isNaN(c)) {\r\n this.url.host = this.base.host;\r\n this.url.path = this.base.path.slice();\r\n this.url.query = this.base.query;\r\n } else if (c === 63) {\r\n this.url.host = this.base.host;\r\n this.url.path = this.base.path.slice();\r\n this.url.query = \"\";\r\n this.state = \"query\";\r\n } else if (c === 35) {\r\n this.url.host = this.base.host;\r\n this.url.path = this.base.path.slice();\r\n this.url.query = this.base.query;\r\n this.url.fragment = \"\";\r\n this.state = \"fragment\";\r\n } else {\r\n if (this.input.length - this.pointer - 1 === 0 || // remaining consists of 0 code points\r\n !isWindowsDriveLetterCodePoints(c, this.input[this.pointer + 1]) ||\r\n (this.input.length - this.pointer - 1 >= 2 && // remaining has at least 2 code points\r\n !fileOtherwiseCodePoints.has(this.input[this.pointer + 2]))) {\r\n this.url.host = this.base.host;\r\n this.url.path = this.base.path.slice();\r\n shortenPath(this.url);\r\n } else {\r\n this.parseError = true;\r\n }\r\n\r\n this.state = \"path\";\r\n --this.pointer;\r\n }\r\n } else {\r\n this.state = \"path\";\r\n --this.pointer;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse file slash\"] = function parseFileSlash(c) {\r\n if (c === 47 || c === 92) {\r\n if (c === 92) {\r\n this.parseError = true;\r\n }\r\n this.state = \"file host\";\r\n } else {\r\n if (this.base !== null && this.base.scheme === \"file\") {\r\n if (isNormalizedWindowsDriveLetterString(this.base.path[0])) {\r\n this.url.path.push(this.base.path[0]);\r\n } else {\r\n this.url.host = this.base.host;\r\n }\r\n }\r\n this.state = \"path\";\r\n --this.pointer;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse file host\"] = function parseFileHost(c, cStr) {\r\n if (isNaN(c) || c === 47 || c === 92 || c === 63 || c === 35) {\r\n --this.pointer;\r\n if (!this.stateOverride && isWindowsDriveLetterString(this.buffer)) {\r\n this.parseError = true;\r\n this.state = \"path\";\r\n } else if (this.buffer === \"\") {\r\n this.url.host = \"\";\r\n if (this.stateOverride) {\r\n return false;\r\n }\r\n this.state = \"path start\";\r\n } else {\r\n let host = parseHost(this.buffer, isSpecial(this.url));\r\n if (host === failure) {\r\n return failure;\r\n }\r\n if (host === \"localhost\") {\r\n host = \"\";\r\n }\r\n this.url.host = host;\r\n\r\n if (this.stateOverride) {\r\n return false;\r\n }\r\n\r\n this.buffer = \"\";\r\n this.state = \"path start\";\r\n }\r\n } else {\r\n this.buffer += cStr;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse path start\"] = function parsePathStart(c) {\r\n if (isSpecial(this.url)) {\r\n if (c === 92) {\r\n this.parseError = true;\r\n }\r\n this.state = \"path\";\r\n\r\n if (c !== 47 && c !== 92) {\r\n --this.pointer;\r\n }\r\n } else if (!this.stateOverride && c === 63) {\r\n this.url.query = \"\";\r\n this.state = \"query\";\r\n } else if (!this.stateOverride && c === 35) {\r\n this.url.fragment = \"\";\r\n this.state = \"fragment\";\r\n } else if (c !== undefined) {\r\n this.state = \"path\";\r\n if (c !== 47) {\r\n --this.pointer;\r\n }\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse path\"] = function parsePath(c) {\r\n if (isNaN(c) || c === 47 || (isSpecial(this.url) && c === 92) ||\r\n (!this.stateOverride && (c === 63 || c === 35))) {\r\n if (isSpecial(this.url) && c === 92) {\r\n this.parseError = true;\r\n }\r\n\r\n if (isDoubleDot(this.buffer)) {\r\n shortenPath(this.url);\r\n if (c !== 47 && !(isSpecial(this.url) && c === 92)) {\r\n this.url.path.push(\"\");\r\n }\r\n } else if (isSingleDot(this.buffer) && c !== 47 &&\r\n !(isSpecial(this.url) && c === 92)) {\r\n this.url.path.push(\"\");\r\n } else if (!isSingleDot(this.buffer)) {\r\n if (this.url.scheme === \"file\" && this.url.path.length === 0 && isWindowsDriveLetterString(this.buffer)) {\r\n if (this.url.host !== \"\" && this.url.host !== null) {\r\n this.parseError = true;\r\n this.url.host = \"\";\r\n }\r\n this.buffer = this.buffer[0] + \":\";\r\n }\r\n this.url.path.push(this.buffer);\r\n }\r\n this.buffer = \"\";\r\n if (this.url.scheme === \"file\" && (c === undefined || c === 63 || c === 35)) {\r\n while (this.url.path.length > 1 && this.url.path[0] === \"\") {\r\n this.parseError = true;\r\n this.url.path.shift();\r\n }\r\n }\r\n if (c === 63) {\r\n this.url.query = \"\";\r\n this.state = \"query\";\r\n }\r\n if (c === 35) {\r\n this.url.fragment = \"\";\r\n this.state = \"fragment\";\r\n }\r\n } else {\r\n // TODO: If c is not a URL code point and not \"%\", parse error.\r\n\r\n if (c === 37 &&\r\n (!isASCIIHex(this.input[this.pointer + 1]) ||\r\n !isASCIIHex(this.input[this.pointer + 2]))) {\r\n this.parseError = true;\r\n }\r\n\r\n this.buffer += percentEncodeChar(c, isPathPercentEncode);\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse cannot-be-a-base-URL path\"] = function parseCannotBeABaseURLPath(c) {\r\n if (c === 63) {\r\n this.url.query = \"\";\r\n this.state = \"query\";\r\n } else if (c === 35) {\r\n this.url.fragment = \"\";\r\n this.state = \"fragment\";\r\n } else {\r\n // TODO: Add: not a URL code point\r\n if (!isNaN(c) && c !== 37) {\r\n this.parseError = true;\r\n }\r\n\r\n if (c === 37 &&\r\n (!isASCIIHex(this.input[this.pointer + 1]) ||\r\n !isASCIIHex(this.input[this.pointer + 2]))) {\r\n this.parseError = true;\r\n }\r\n\r\n if (!isNaN(c)) {\r\n this.url.path[0] = this.url.path[0] + percentEncodeChar(c, isC0ControlPercentEncode);\r\n }\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse query\"] = function parseQuery(c, cStr) {\r\n if (isNaN(c) || (!this.stateOverride && c === 35)) {\r\n if (!isSpecial(this.url) || this.url.scheme === \"ws\" || this.url.scheme === \"wss\") {\r\n this.encodingOverride = \"utf-8\";\r\n }\r\n\r\n const buffer = new Buffer(this.buffer); // TODO: Use encoding override instead\r\n for (let i = 0; i < buffer.length; ++i) {\r\n if (buffer[i] < 0x21 || buffer[i] > 0x7E || buffer[i] === 0x22 || buffer[i] === 0x23 ||\r\n buffer[i] === 0x3C || buffer[i] === 0x3E) {\r\n this.url.query += percentEncode(buffer[i]);\r\n } else {\r\n this.url.query += String.fromCodePoint(buffer[i]);\r\n }\r\n }\r\n\r\n this.buffer = \"\";\r\n if (c === 35) {\r\n this.url.fragment = \"\";\r\n this.state = \"fragment\";\r\n }\r\n } else {\r\n // TODO: If c is not a URL code point and not \"%\", parse error.\r\n if (c === 37 &&\r\n (!isASCIIHex(this.input[this.pointer + 1]) ||\r\n !isASCIIHex(this.input[this.pointer + 2]))) {\r\n this.parseError = true;\r\n }\r\n\r\n this.buffer += cStr;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse fragment\"] = function parseFragment(c) {\r\n if (isNaN(c)) { // do nothing\r\n } else if (c === 0x0) {\r\n this.parseError = true;\r\n } else {\r\n // TODO: If c is not a URL code point and not \"%\", parse error.\r\n if (c === 37 &&\r\n (!isASCIIHex(this.input[this.pointer + 1]) ||\r\n !isASCIIHex(this.input[this.pointer + 2]))) {\r\n this.parseError = true;\r\n }\r\n\r\n this.url.fragment += percentEncodeChar(c, isC0ControlPercentEncode);\r\n }\r\n\r\n return true;\r\n};\r\n\r\nfunction serializeURL(url, excludeFragment) {\r\n let output = url.scheme + \":\";\r\n if (url.host !== null) {\r\n output += \"//\";\r\n\r\n if (url.username !== \"\" || url.password !== \"\") {\r\n output += url.username;\r\n if (url.password !== \"\") {\r\n output += \":\" + url.password;\r\n }\r\n output += \"@\";\r\n }\r\n\r\n output += serializeHost(url.host);\r\n\r\n if (url.port !== null) {\r\n output += \":\" + url.port;\r\n }\r\n } else if (url.host === null && url.scheme === \"file\") {\r\n output += \"//\";\r\n }\r\n\r\n if (url.cannotBeABaseURL) {\r\n output += url.path[0];\r\n } else {\r\n for (const string of url.path) {\r\n output += \"/\" + string;\r\n }\r\n }\r\n\r\n if (url.query !== null) {\r\n output += \"?\" + url.query;\r\n }\r\n\r\n if (!excludeFragment && url.fragment !== null) {\r\n output += \"#\" + url.fragment;\r\n }\r\n\r\n return output;\r\n}\r\n\r\nfunction serializeOrigin(tuple) {\r\n let result = tuple.scheme + \"://\";\r\n result += serializeHost(tuple.host);\r\n\r\n if (tuple.port !== null) {\r\n result += \":\" + tuple.port;\r\n }\r\n\r\n return result;\r\n}\r\n\r\nmodule.exports.serializeURL = serializeURL;\r\n\r\nmodule.exports.serializeURLOrigin = function (url) {\r\n // https://url.spec.whatwg.org/#concept-url-origin\r\n switch (url.scheme) {\r\n case \"blob\":\r\n try {\r\n return module.exports.serializeURLOrigin(module.exports.parseURL(url.path[0]));\r\n } catch (e) {\r\n // serializing an opaque origin returns \"null\"\r\n return \"null\";\r\n }\r\n case \"ftp\":\r\n case \"gopher\":\r\n case \"http\":\r\n case \"https\":\r\n case \"ws\":\r\n case \"wss\":\r\n return serializeOrigin({\r\n scheme: url.scheme,\r\n host: url.host,\r\n port: url.port\r\n });\r\n case \"file\":\r\n // spec says \"exercise to the reader\", chrome says \"file://\"\r\n return \"file://\";\r\n default:\r\n // serializing an opaque origin returns \"null\"\r\n return \"null\";\r\n }\r\n};\r\n\r\nmodule.exports.basicURLParse = function (input, options) {\r\n if (options === undefined) {\r\n options = {};\r\n }\r\n\r\n const usm = new URLStateMachine(input, options.baseURL, options.encodingOverride, options.url, options.stateOverride);\r\n if (usm.failure) {\r\n return \"failure\";\r\n }\r\n\r\n return usm.url;\r\n};\r\n\r\nmodule.exports.setTheUsername = function (url, username) {\r\n url.username = \"\";\r\n const decoded = punycode.ucs2.decode(username);\r\n for (let i = 0; i < decoded.length; ++i) {\r\n url.username += percentEncodeChar(decoded[i], isUserinfoPercentEncode);\r\n }\r\n};\r\n\r\nmodule.exports.setThePassword = function (url, password) {\r\n url.password = \"\";\r\n const decoded = punycode.ucs2.decode(password);\r\n for (let i = 0; i < decoded.length; ++i) {\r\n url.password += percentEncodeChar(decoded[i], isUserinfoPercentEncode);\r\n }\r\n};\r\n\r\nmodule.exports.serializeHost = serializeHost;\r\n\r\nmodule.exports.cannotHaveAUsernamePasswordPort = cannotHaveAUsernamePasswordPort;\r\n\r\nmodule.exports.serializeInteger = function (integer) {\r\n return String(integer);\r\n};\r\n\r\nmodule.exports.parseURL = function (input, options) {\r\n if (options === undefined) {\r\n options = {};\r\n }\r\n\r\n // We don't handle blobs, so this just delegates:\r\n return module.exports.basicURLParse(input, { baseURL: options.baseURL, encodingOverride: options.encodingOverride });\r\n};\r\n", "\"use strict\";\nconst usm = require(\"./url-state-machine\");\n\nexports.implementation = class URLImpl {\n constructor(constructorArgs) {\n const url = constructorArgs[0];\n const base = constructorArgs[1];\n\n let parsedBase = null;\n if (base !== undefined) {\n parsedBase = usm.basicURLParse(base);\n if (parsedBase === \"failure\") {\n throw new TypeError(\"Invalid base URL\");\n }\n }\n\n const parsedURL = usm.basicURLParse(url, { baseURL: parsedBase });\n if (parsedURL === \"failure\") {\n throw new TypeError(\"Invalid URL\");\n }\n\n this._url = parsedURL;\n\n // TODO: query stuff\n }\n\n get href() {\n return usm.serializeURL(this._url);\n }\n\n set href(v) {\n const parsedURL = usm.basicURLParse(v);\n if (parsedURL === \"failure\") {\n throw new TypeError(\"Invalid URL\");\n }\n\n this._url = parsedURL;\n }\n\n get origin() {\n return usm.serializeURLOrigin(this._url);\n }\n\n get protocol() {\n return this._url.scheme + \":\";\n }\n\n set protocol(v) {\n usm.basicURLParse(v + \":\", { url: this._url, stateOverride: \"scheme start\" });\n }\n\n get username() {\n return this._url.username;\n }\n\n set username(v) {\n if (usm.cannotHaveAUsernamePasswordPort(this._url)) {\n return;\n }\n\n usm.setTheUsername(this._url, v);\n }\n\n get password() {\n return this._url.password;\n }\n\n set password(v) {\n if (usm.cannotHaveAUsernamePasswordPort(this._url)) {\n return;\n }\n\n usm.setThePassword(this._url, v);\n }\n\n get host() {\n const url = this._url;\n\n if (url.host === null) {\n return \"\";\n }\n\n if (url.port === null) {\n return usm.serializeHost(url.host);\n }\n\n return usm.serializeHost(url.host) + \":\" + usm.serializeInteger(url.port);\n }\n\n set host(v) {\n if (this._url.cannotBeABaseURL) {\n return;\n }\n\n usm.basicURLParse(v, { url: this._url, stateOverride: \"host\" });\n }\n\n get hostname() {\n if (this._url.host === null) {\n return \"\";\n }\n\n return usm.serializeHost(this._url.host);\n }\n\n set hostname(v) {\n if (this._url.cannotBeABaseURL) {\n return;\n }\n\n usm.basicURLParse(v, { url: this._url, stateOverride: \"hostname\" });\n }\n\n get port() {\n if (this._url.port === null) {\n return \"\";\n }\n\n return usm.serializeInteger(this._url.port);\n }\n\n set port(v) {\n if (usm.cannotHaveAUsernamePasswordPort(this._url)) {\n return;\n }\n\n if (v === \"\") {\n this._url.port = null;\n } else {\n usm.basicURLParse(v, { url: this._url, stateOverride: \"port\" });\n }\n }\n\n get pathname() {\n if (this._url.cannotBeABaseURL) {\n return this._url.path[0];\n }\n\n if (this._url.path.length === 0) {\n return \"\";\n }\n\n return \"/\" + this._url.path.join(\"/\");\n }\n\n set pathname(v) {\n if (this._url.cannotBeABaseURL) {\n return;\n }\n\n this._url.path = [];\n usm.basicURLParse(v, { url: this._url, stateOverride: \"path start\" });\n }\n\n get search() {\n if (this._url.query === null || this._url.query === \"\") {\n return \"\";\n }\n\n return \"?\" + this._url.query;\n }\n\n set search(v) {\n // TODO: query stuff\n\n const url = this._url;\n\n if (v === \"\") {\n url.query = null;\n return;\n }\n\n const input = v[0] === \"?\" ? v.substring(1) : v;\n url.query = \"\";\n usm.basicURLParse(input, { url, stateOverride: \"query\" });\n }\n\n get hash() {\n if (this._url.fragment === null || this._url.fragment === \"\") {\n return \"\";\n }\n\n return \"#\" + this._url.fragment;\n }\n\n set hash(v) {\n if (v === \"\") {\n this._url.fragment = null;\n return;\n }\n\n const input = v[0] === \"#\" ? v.substring(1) : v;\n this._url.fragment = \"\";\n usm.basicURLParse(input, { url: this._url, stateOverride: \"fragment\" });\n }\n\n toJSON() {\n return this.href;\n }\n};\n", "\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\nconst Impl = require(\".//URL-impl.js\");\n\nconst impl = utils.implSymbol;\n\nfunction URL(url) {\n if (!this || this[impl] || !(this instanceof URL)) {\n throw new TypeError(\"Failed to construct 'URL': Please use the 'new' operator, this DOM object constructor cannot be called as a function.\");\n }\n if (arguments.length < 1) {\n throw new TypeError(\"Failed to construct 'URL': 1 argument required, but only \" + arguments.length + \" present.\");\n }\n const args = [];\n for (let i = 0; i < arguments.length && i < 2; ++i) {\n args[i] = arguments[i];\n }\n args[0] = conversions[\"USVString\"](args[0]);\n if (args[1] !== undefined) {\n args[1] = conversions[\"USVString\"](args[1]);\n }\n\n module.exports.setup(this, args);\n}\n\nURL.prototype.toJSON = function toJSON() {\n if (!this || !module.exports.is(this)) {\n throw new TypeError(\"Illegal invocation\");\n }\n const args = [];\n for (let i = 0; i < arguments.length && i < 0; ++i) {\n args[i] = arguments[i];\n }\n return this[impl].toJSON.apply(this[impl], args);\n};\nObject.defineProperty(URL.prototype, \"href\", {\n get() {\n return this[impl].href;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].href = V;\n },\n enumerable: true,\n configurable: true\n});\n\nURL.prototype.toString = function () {\n if (!this || !module.exports.is(this)) {\n throw new TypeError(\"Illegal invocation\");\n }\n return this.href;\n};\n\nObject.defineProperty(URL.prototype, \"origin\", {\n get() {\n return this[impl].origin;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"protocol\", {\n get() {\n return this[impl].protocol;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].protocol = V;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"username\", {\n get() {\n return this[impl].username;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].username = V;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"password\", {\n get() {\n return this[impl].password;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].password = V;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"host\", {\n get() {\n return this[impl].host;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].host = V;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"hostname\", {\n get() {\n return this[impl].hostname;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].hostname = V;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"port\", {\n get() {\n return this[impl].port;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].port = V;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"pathname\", {\n get() {\n return this[impl].pathname;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].pathname = V;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"search\", {\n get() {\n return this[impl].search;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].search = V;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"hash\", {\n get() {\n return this[impl].hash;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].hash = V;\n },\n enumerable: true,\n configurable: true\n});\n\n\nmodule.exports = {\n is(obj) {\n return !!obj && obj[impl] instanceof Impl.implementation;\n },\n create(constructorArgs, privateData) {\n let obj = Object.create(URL.prototype);\n this.setup(obj, constructorArgs, privateData);\n return obj;\n },\n setup(obj, constructorArgs, privateData) {\n if (!privateData) privateData = {};\n privateData.wrapper = obj;\n\n obj[impl] = new Impl.implementation(constructorArgs, privateData);\n obj[impl][utils.wrapperSymbol] = obj;\n },\n interface: URL,\n expose: {\n Window: { URL: URL },\n Worker: { URL: URL }\n }\n};\n\n", "\"use strict\";\n\nexports.URL = require(\"./URL\").interface;\nexports.serializeURL = require(\"./url-state-machine\").serializeURL;\nexports.serializeURLOrigin = require(\"./url-state-machine\").serializeURLOrigin;\nexports.basicURLParse = require(\"./url-state-machine\").basicURLParse;\nexports.setTheUsername = require(\"./url-state-machine\").setTheUsername;\nexports.setThePassword = require(\"./url-state-machine\").setThePassword;\nexports.serializeHost = require(\"./url-state-machine\").serializeHost;\nexports.serializeInteger = require(\"./url-state-machine\").serializeInteger;\nexports.parseURL = require(\"./url-state-machine\").parseURL;\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nfunction _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }\n\nvar Stream = _interopDefault(require('stream'));\nvar http = _interopDefault(require('http'));\nvar Url = _interopDefault(require('url'));\nvar whatwgUrl = _interopDefault(require('whatwg-url'));\nvar https = _interopDefault(require('https'));\nvar zlib = _interopDefault(require('zlib'));\n\n// Based on https://github.com/tmpvar/jsdom/blob/aa85b2abf07766ff7bf5c1f6daafb3726f2f2db5/lib/jsdom/living/blob.js\n\n// fix for \"Readable\" isn't a named export issue\nconst Readable = Stream.Readable;\n\nconst BUFFER = Symbol('buffer');\nconst TYPE = Symbol('type');\n\nclass Blob {\n\tconstructor() {\n\t\tthis[TYPE] = '';\n\n\t\tconst blobParts = arguments[0];\n\t\tconst options = arguments[1];\n\n\t\tconst buffers = [];\n\t\tlet size = 0;\n\n\t\tif (blobParts) {\n\t\t\tconst a = blobParts;\n\t\t\tconst length = Number(a.length);\n\t\t\tfor (let i = 0; i < length; i++) {\n\t\t\t\tconst element = a[i];\n\t\t\t\tlet buffer;\n\t\t\t\tif (element instanceof Buffer) {\n\t\t\t\t\tbuffer = element;\n\t\t\t\t} else if (ArrayBuffer.isView(element)) {\n\t\t\t\t\tbuffer = Buffer.from(element.buffer, element.byteOffset, element.byteLength);\n\t\t\t\t} else if (element instanceof ArrayBuffer) {\n\t\t\t\t\tbuffer = Buffer.from(element);\n\t\t\t\t} else if (element instanceof Blob) {\n\t\t\t\t\tbuffer = element[BUFFER];\n\t\t\t\t} else {\n\t\t\t\t\tbuffer = Buffer.from(typeof element === 'string' ? element : String(element));\n\t\t\t\t}\n\t\t\t\tsize += buffer.length;\n\t\t\t\tbuffers.push(buffer);\n\t\t\t}\n\t\t}\n\n\t\tthis[BUFFER] = Buffer.concat(buffers);\n\n\t\tlet type = options && options.type !== undefined && String(options.type).toLowerCase();\n\t\tif (type && !/[^\\u0020-\\u007E]/.test(type)) {\n\t\t\tthis[TYPE] = type;\n\t\t}\n\t}\n\tget size() {\n\t\treturn this[BUFFER].length;\n\t}\n\tget type() {\n\t\treturn this[TYPE];\n\t}\n\ttext() {\n\t\treturn Promise.resolve(this[BUFFER].toString());\n\t}\n\tarrayBuffer() {\n\t\tconst buf = this[BUFFER];\n\t\tconst ab = buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength);\n\t\treturn Promise.resolve(ab);\n\t}\n\tstream() {\n\t\tconst readable = new Readable();\n\t\treadable._read = function () {};\n\t\treadable.push(this[BUFFER]);\n\t\treadable.push(null);\n\t\treturn readable;\n\t}\n\ttoString() {\n\t\treturn '[object Blob]';\n\t}\n\tslice() {\n\t\tconst size = this.size;\n\n\t\tconst start = arguments[0];\n\t\tconst end = arguments[1];\n\t\tlet relativeStart, relativeEnd;\n\t\tif (start === undefined) {\n\t\t\trelativeStart = 0;\n\t\t} else if (start < 0) {\n\t\t\trelativeStart = Math.max(size + start, 0);\n\t\t} else {\n\t\t\trelativeStart = Math.min(start, size);\n\t\t}\n\t\tif (end === undefined) {\n\t\t\trelativeEnd = size;\n\t\t} else if (end < 0) {\n\t\t\trelativeEnd = Math.max(size + end, 0);\n\t\t} else {\n\t\t\trelativeEnd = Math.min(end, size);\n\t\t}\n\t\tconst span = Math.max(relativeEnd - relativeStart, 0);\n\n\t\tconst buffer = this[BUFFER];\n\t\tconst slicedBuffer = buffer.slice(relativeStart, relativeStart + span);\n\t\tconst blob = new Blob([], { type: arguments[2] });\n\t\tblob[BUFFER] = slicedBuffer;\n\t\treturn blob;\n\t}\n}\n\nObject.defineProperties(Blob.prototype, {\n\tsize: { enumerable: true },\n\ttype: { enumerable: true },\n\tslice: { enumerable: true }\n});\n\nObject.defineProperty(Blob.prototype, Symbol.toStringTag, {\n\tvalue: 'Blob',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\n/**\n * fetch-error.js\n *\n * FetchError interface for operational errors\n */\n\n/**\n * Create FetchError instance\n *\n * @param String message Error message for human\n * @param String type Error type for machine\n * @param String systemError For Node.js system error\n * @return FetchError\n */\nfunction FetchError(message, type, systemError) {\n Error.call(this, message);\n\n this.message = message;\n this.type = type;\n\n // when err.type is `system`, err.code contains system error code\n if (systemError) {\n this.code = this.errno = systemError.code;\n }\n\n // hide custom error implementation details from end-users\n Error.captureStackTrace(this, this.constructor);\n}\n\nFetchError.prototype = Object.create(Error.prototype);\nFetchError.prototype.constructor = FetchError;\nFetchError.prototype.name = 'FetchError';\n\nlet convert;\ntry {\n\tconvert = require('encoding').convert;\n} catch (e) {}\n\nconst INTERNALS = Symbol('Body internals');\n\n// fix an issue where \"PassThrough\" isn't a named export for node <10\nconst PassThrough = Stream.PassThrough;\n\n/**\n * Body mixin\n *\n * Ref: https://fetch.spec.whatwg.org/#body\n *\n * @param Stream body Readable stream\n * @param Object opts Response options\n * @return Void\n */\nfunction Body(body) {\n\tvar _this = this;\n\n\tvar _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n\t _ref$size = _ref.size;\n\n\tlet size = _ref$size === undefined ? 0 : _ref$size;\n\tvar _ref$timeout = _ref.timeout;\n\tlet timeout = _ref$timeout === undefined ? 0 : _ref$timeout;\n\n\tif (body == null) {\n\t\t// body is undefined or null\n\t\tbody = null;\n\t} else if (isURLSearchParams(body)) {\n\t\t// body is a URLSearchParams\n\t\tbody = Buffer.from(body.toString());\n\t} else if (isBlob(body)) ; else if (Buffer.isBuffer(body)) ; else if (Object.prototype.toString.call(body) === '[object ArrayBuffer]') {\n\t\t// body is ArrayBuffer\n\t\tbody = Buffer.from(body);\n\t} else if (ArrayBuffer.isView(body)) {\n\t\t// body is ArrayBufferView\n\t\tbody = Buffer.from(body.buffer, body.byteOffset, body.byteLength);\n\t} else if (body instanceof Stream) ; else {\n\t\t// none of the above\n\t\t// coerce to string then buffer\n\t\tbody = Buffer.from(String(body));\n\t}\n\tthis[INTERNALS] = {\n\t\tbody,\n\t\tdisturbed: false,\n\t\terror: null\n\t};\n\tthis.size = size;\n\tthis.timeout = timeout;\n\n\tif (body instanceof Stream) {\n\t\tbody.on('error', function (err) {\n\t\t\tconst error = err.name === 'AbortError' ? err : new FetchError(`Invalid response body while trying to fetch ${_this.url}: ${err.message}`, 'system', err);\n\t\t\t_this[INTERNALS].error = error;\n\t\t});\n\t}\n}\n\nBody.prototype = {\n\tget body() {\n\t\treturn this[INTERNALS].body;\n\t},\n\n\tget bodyUsed() {\n\t\treturn this[INTERNALS].disturbed;\n\t},\n\n\t/**\n * Decode response as ArrayBuffer\n *\n * @return Promise\n */\n\tarrayBuffer() {\n\t\treturn consumeBody.call(this).then(function (buf) {\n\t\t\treturn buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength);\n\t\t});\n\t},\n\n\t/**\n * Return raw response as Blob\n *\n * @return Promise\n */\n\tblob() {\n\t\tlet ct = this.headers && this.headers.get('content-type') || '';\n\t\treturn consumeBody.call(this).then(function (buf) {\n\t\t\treturn Object.assign(\n\t\t\t// Prevent copying\n\t\t\tnew Blob([], {\n\t\t\t\ttype: ct.toLowerCase()\n\t\t\t}), {\n\t\t\t\t[BUFFER]: buf\n\t\t\t});\n\t\t});\n\t},\n\n\t/**\n * Decode response as json\n *\n * @return Promise\n */\n\tjson() {\n\t\tvar _this2 = this;\n\n\t\treturn consumeBody.call(this).then(function (buffer) {\n\t\t\ttry {\n\t\t\t\treturn JSON.parse(buffer.toString());\n\t\t\t} catch (err) {\n\t\t\t\treturn Body.Promise.reject(new FetchError(`invalid json response body at ${_this2.url} reason: ${err.message}`, 'invalid-json'));\n\t\t\t}\n\t\t});\n\t},\n\n\t/**\n * Decode response as text\n *\n * @return Promise\n */\n\ttext() {\n\t\treturn consumeBody.call(this).then(function (buffer) {\n\t\t\treturn buffer.toString();\n\t\t});\n\t},\n\n\t/**\n * Decode response as buffer (non-spec api)\n *\n * @return Promise\n */\n\tbuffer() {\n\t\treturn consumeBody.call(this);\n\t},\n\n\t/**\n * Decode response as text, while automatically detecting the encoding and\n * trying to decode to UTF-8 (non-spec api)\n *\n * @return Promise\n */\n\ttextConverted() {\n\t\tvar _this3 = this;\n\n\t\treturn consumeBody.call(this).then(function (buffer) {\n\t\t\treturn convertBody(buffer, _this3.headers);\n\t\t});\n\t}\n};\n\n// In browsers, all properties are enumerable.\nObject.defineProperties(Body.prototype, {\n\tbody: { enumerable: true },\n\tbodyUsed: { enumerable: true },\n\tarrayBuffer: { enumerable: true },\n\tblob: { enumerable: true },\n\tjson: { enumerable: true },\n\ttext: { enumerable: true }\n});\n\nBody.mixIn = function (proto) {\n\tfor (const name of Object.getOwnPropertyNames(Body.prototype)) {\n\t\t// istanbul ignore else: future proof\n\t\tif (!(name in proto)) {\n\t\t\tconst desc = Object.getOwnPropertyDescriptor(Body.prototype, name);\n\t\t\tObject.defineProperty(proto, name, desc);\n\t\t}\n\t}\n};\n\n/**\n * Consume and convert an entire Body to a Buffer.\n *\n * Ref: https://fetch.spec.whatwg.org/#concept-body-consume-body\n *\n * @return Promise\n */\nfunction consumeBody() {\n\tvar _this4 = this;\n\n\tif (this[INTERNALS].disturbed) {\n\t\treturn Body.Promise.reject(new TypeError(`body used already for: ${this.url}`));\n\t}\n\n\tthis[INTERNALS].disturbed = true;\n\n\tif (this[INTERNALS].error) {\n\t\treturn Body.Promise.reject(this[INTERNALS].error);\n\t}\n\n\tlet body = this.body;\n\n\t// body is null\n\tif (body === null) {\n\t\treturn Body.Promise.resolve(Buffer.alloc(0));\n\t}\n\n\t// body is blob\n\tif (isBlob(body)) {\n\t\tbody = body.stream();\n\t}\n\n\t// body is buffer\n\tif (Buffer.isBuffer(body)) {\n\t\treturn Body.Promise.resolve(body);\n\t}\n\n\t// istanbul ignore if: should never happen\n\tif (!(body instanceof Stream)) {\n\t\treturn Body.Promise.resolve(Buffer.alloc(0));\n\t}\n\n\t// body is stream\n\t// get ready to actually consume the body\n\tlet accum = [];\n\tlet accumBytes = 0;\n\tlet abort = false;\n\n\treturn new Body.Promise(function (resolve, reject) {\n\t\tlet resTimeout;\n\n\t\t// allow timeout on slow response body\n\t\tif (_this4.timeout) {\n\t\t\tresTimeout = setTimeout(function () {\n\t\t\t\tabort = true;\n\t\t\t\treject(new FetchError(`Response timeout while trying to fetch ${_this4.url} (over ${_this4.timeout}ms)`, 'body-timeout'));\n\t\t\t}, _this4.timeout);\n\t\t}\n\n\t\t// handle stream errors\n\t\tbody.on('error', function (err) {\n\t\t\tif (err.name === 'AbortError') {\n\t\t\t\t// if the request was aborted, reject with this Error\n\t\t\t\tabort = true;\n\t\t\t\treject(err);\n\t\t\t} else {\n\t\t\t\t// other errors, such as incorrect content-encoding\n\t\t\t\treject(new FetchError(`Invalid response body while trying to fetch ${_this4.url}: ${err.message}`, 'system', err));\n\t\t\t}\n\t\t});\n\n\t\tbody.on('data', function (chunk) {\n\t\t\tif (abort || chunk === null) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (_this4.size && accumBytes + chunk.length > _this4.size) {\n\t\t\t\tabort = true;\n\t\t\t\treject(new FetchError(`content size at ${_this4.url} over limit: ${_this4.size}`, 'max-size'));\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\taccumBytes += chunk.length;\n\t\t\taccum.push(chunk);\n\t\t});\n\n\t\tbody.on('end', function () {\n\t\t\tif (abort) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tclearTimeout(resTimeout);\n\n\t\t\ttry {\n\t\t\t\tresolve(Buffer.concat(accum, accumBytes));\n\t\t\t} catch (err) {\n\t\t\t\t// handle streams that have accumulated too much data (issue #414)\n\t\t\t\treject(new FetchError(`Could not create Buffer from response body for ${_this4.url}: ${err.message}`, 'system', err));\n\t\t\t}\n\t\t});\n\t});\n}\n\n/**\n * Detect buffer encoding and convert to target encoding\n * ref: http://www.w3.org/TR/2011/WD-html5-20110113/parsing.html#determining-the-character-encoding\n *\n * @param Buffer buffer Incoming buffer\n * @param String encoding Target encoding\n * @return String\n */\nfunction convertBody(buffer, headers) {\n\tif (typeof convert !== 'function') {\n\t\tthrow new Error('The package `encoding` must be installed to use the textConverted() function');\n\t}\n\n\tconst ct = headers.get('content-type');\n\tlet charset = 'utf-8';\n\tlet res, str;\n\n\t// header\n\tif (ct) {\n\t\tres = /charset=([^;]*)/i.exec(ct);\n\t}\n\n\t// no charset in content type, peek at response body for at most 1024 bytes\n\tstr = buffer.slice(0, 1024).toString();\n\n\t// html5\n\tif (!res && str) {\n\t\tres = / 0 && arguments[0] !== undefined ? arguments[0] : undefined;\n\n\t\tthis[MAP] = Object.create(null);\n\n\t\tif (init instanceof Headers) {\n\t\t\tconst rawHeaders = init.raw();\n\t\t\tconst headerNames = Object.keys(rawHeaders);\n\n\t\t\tfor (const headerName of headerNames) {\n\t\t\t\tfor (const value of rawHeaders[headerName]) {\n\t\t\t\t\tthis.append(headerName, value);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\t// We don't worry about converting prop to ByteString here as append()\n\t\t// will handle it.\n\t\tif (init == null) ; else if (typeof init === 'object') {\n\t\t\tconst method = init[Symbol.iterator];\n\t\t\tif (method != null) {\n\t\t\t\tif (typeof method !== 'function') {\n\t\t\t\t\tthrow new TypeError('Header pairs must be iterable');\n\t\t\t\t}\n\n\t\t\t\t// sequence>\n\t\t\t\t// Note: per spec we have to first exhaust the lists then process them\n\t\t\t\tconst pairs = [];\n\t\t\t\tfor (const pair of init) {\n\t\t\t\t\tif (typeof pair !== 'object' || typeof pair[Symbol.iterator] !== 'function') {\n\t\t\t\t\t\tthrow new TypeError('Each header pair must be iterable');\n\t\t\t\t\t}\n\t\t\t\t\tpairs.push(Array.from(pair));\n\t\t\t\t}\n\n\t\t\t\tfor (const pair of pairs) {\n\t\t\t\t\tif (pair.length !== 2) {\n\t\t\t\t\t\tthrow new TypeError('Each header pair must be a name/value tuple');\n\t\t\t\t\t}\n\t\t\t\t\tthis.append(pair[0], pair[1]);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// record\n\t\t\t\tfor (const key of Object.keys(init)) {\n\t\t\t\t\tconst value = init[key];\n\t\t\t\t\tthis.append(key, value);\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tthrow new TypeError('Provided initializer must be an object');\n\t\t}\n\t}\n\n\t/**\n * Return combined header value given name\n *\n * @param String name Header name\n * @return Mixed\n */\n\tget(name) {\n\t\tname = `${name}`;\n\t\tvalidateName(name);\n\t\tconst key = find(this[MAP], name);\n\t\tif (key === undefined) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn this[MAP][key].join(', ');\n\t}\n\n\t/**\n * Iterate over all headers\n *\n * @param Function callback Executed for each item with parameters (value, name, thisArg)\n * @param Boolean thisArg `this` context for callback function\n * @return Void\n */\n\tforEach(callback) {\n\t\tlet thisArg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : undefined;\n\n\t\tlet pairs = getHeaders(this);\n\t\tlet i = 0;\n\t\twhile (i < pairs.length) {\n\t\t\tvar _pairs$i = pairs[i];\n\t\t\tconst name = _pairs$i[0],\n\t\t\t value = _pairs$i[1];\n\n\t\t\tcallback.call(thisArg, value, name, this);\n\t\t\tpairs = getHeaders(this);\n\t\t\ti++;\n\t\t}\n\t}\n\n\t/**\n * Overwrite header values given name\n *\n * @param String name Header name\n * @param String value Header value\n * @return Void\n */\n\tset(name, value) {\n\t\tname = `${name}`;\n\t\tvalue = `${value}`;\n\t\tvalidateName(name);\n\t\tvalidateValue(value);\n\t\tconst key = find(this[MAP], name);\n\t\tthis[MAP][key !== undefined ? key : name] = [value];\n\t}\n\n\t/**\n * Append a value onto existing header\n *\n * @param String name Header name\n * @param String value Header value\n * @return Void\n */\n\tappend(name, value) {\n\t\tname = `${name}`;\n\t\tvalue = `${value}`;\n\t\tvalidateName(name);\n\t\tvalidateValue(value);\n\t\tconst key = find(this[MAP], name);\n\t\tif (key !== undefined) {\n\t\t\tthis[MAP][key].push(value);\n\t\t} else {\n\t\t\tthis[MAP][name] = [value];\n\t\t}\n\t}\n\n\t/**\n * Check for header name existence\n *\n * @param String name Header name\n * @return Boolean\n */\n\thas(name) {\n\t\tname = `${name}`;\n\t\tvalidateName(name);\n\t\treturn find(this[MAP], name) !== undefined;\n\t}\n\n\t/**\n * Delete all header values given name\n *\n * @param String name Header name\n * @return Void\n */\n\tdelete(name) {\n\t\tname = `${name}`;\n\t\tvalidateName(name);\n\t\tconst key = find(this[MAP], name);\n\t\tif (key !== undefined) {\n\t\t\tdelete this[MAP][key];\n\t\t}\n\t}\n\n\t/**\n * Return raw headers (non-spec api)\n *\n * @return Object\n */\n\traw() {\n\t\treturn this[MAP];\n\t}\n\n\t/**\n * Get an iterator on keys.\n *\n * @return Iterator\n */\n\tkeys() {\n\t\treturn createHeadersIterator(this, 'key');\n\t}\n\n\t/**\n * Get an iterator on values.\n *\n * @return Iterator\n */\n\tvalues() {\n\t\treturn createHeadersIterator(this, 'value');\n\t}\n\n\t/**\n * Get an iterator on entries.\n *\n * This is the default iterator of the Headers object.\n *\n * @return Iterator\n */\n\t[Symbol.iterator]() {\n\t\treturn createHeadersIterator(this, 'key+value');\n\t}\n}\nHeaders.prototype.entries = Headers.prototype[Symbol.iterator];\n\nObject.defineProperty(Headers.prototype, Symbol.toStringTag, {\n\tvalue: 'Headers',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\nObject.defineProperties(Headers.prototype, {\n\tget: { enumerable: true },\n\tforEach: { enumerable: true },\n\tset: { enumerable: true },\n\tappend: { enumerable: true },\n\thas: { enumerable: true },\n\tdelete: { enumerable: true },\n\tkeys: { enumerable: true },\n\tvalues: { enumerable: true },\n\tentries: { enumerable: true }\n});\n\nfunction getHeaders(headers) {\n\tlet kind = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'key+value';\n\n\tconst keys = Object.keys(headers[MAP]).sort();\n\treturn keys.map(kind === 'key' ? function (k) {\n\t\treturn k.toLowerCase();\n\t} : kind === 'value' ? function (k) {\n\t\treturn headers[MAP][k].join(', ');\n\t} : function (k) {\n\t\treturn [k.toLowerCase(), headers[MAP][k].join(', ')];\n\t});\n}\n\nconst INTERNAL = Symbol('internal');\n\nfunction createHeadersIterator(target, kind) {\n\tconst iterator = Object.create(HeadersIteratorPrototype);\n\titerator[INTERNAL] = {\n\t\ttarget,\n\t\tkind,\n\t\tindex: 0\n\t};\n\treturn iterator;\n}\n\nconst HeadersIteratorPrototype = Object.setPrototypeOf({\n\tnext() {\n\t\t// istanbul ignore if\n\t\tif (!this || Object.getPrototypeOf(this) !== HeadersIteratorPrototype) {\n\t\t\tthrow new TypeError('Value of `this` is not a HeadersIterator');\n\t\t}\n\n\t\tvar _INTERNAL = this[INTERNAL];\n\t\tconst target = _INTERNAL.target,\n\t\t kind = _INTERNAL.kind,\n\t\t index = _INTERNAL.index;\n\n\t\tconst values = getHeaders(target, kind);\n\t\tconst len = values.length;\n\t\tif (index >= len) {\n\t\t\treturn {\n\t\t\t\tvalue: undefined,\n\t\t\t\tdone: true\n\t\t\t};\n\t\t}\n\n\t\tthis[INTERNAL].index = index + 1;\n\n\t\treturn {\n\t\t\tvalue: values[index],\n\t\t\tdone: false\n\t\t};\n\t}\n}, Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]())));\n\nObject.defineProperty(HeadersIteratorPrototype, Symbol.toStringTag, {\n\tvalue: 'HeadersIterator',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\n/**\n * Export the Headers object in a form that Node.js can consume.\n *\n * @param Headers headers\n * @return Object\n */\nfunction exportNodeCompatibleHeaders(headers) {\n\tconst obj = Object.assign({ __proto__: null }, headers[MAP]);\n\n\t// http.request() only supports string as Host header. This hack makes\n\t// specifying custom Host header possible.\n\tconst hostHeaderKey = find(headers[MAP], 'Host');\n\tif (hostHeaderKey !== undefined) {\n\t\tobj[hostHeaderKey] = obj[hostHeaderKey][0];\n\t}\n\n\treturn obj;\n}\n\n/**\n * Create a Headers object from an object of headers, ignoring those that do\n * not conform to HTTP grammar productions.\n *\n * @param Object obj Object of headers\n * @return Headers\n */\nfunction createHeadersLenient(obj) {\n\tconst headers = new Headers();\n\tfor (const name of Object.keys(obj)) {\n\t\tif (invalidTokenRegex.test(name)) {\n\t\t\tcontinue;\n\t\t}\n\t\tif (Array.isArray(obj[name])) {\n\t\t\tfor (const val of obj[name]) {\n\t\t\t\tif (invalidHeaderCharRegex.test(val)) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tif (headers[MAP][name] === undefined) {\n\t\t\t\t\theaders[MAP][name] = [val];\n\t\t\t\t} else {\n\t\t\t\t\theaders[MAP][name].push(val);\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (!invalidHeaderCharRegex.test(obj[name])) {\n\t\t\theaders[MAP][name] = [obj[name]];\n\t\t}\n\t}\n\treturn headers;\n}\n\nconst INTERNALS$1 = Symbol('Response internals');\n\n// fix an issue where \"STATUS_CODES\" aren't a named export for node <10\nconst STATUS_CODES = http.STATUS_CODES;\n\n/**\n * Response class\n *\n * @param Stream body Readable stream\n * @param Object opts Response options\n * @return Void\n */\nclass Response {\n\tconstructor() {\n\t\tlet body = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n\t\tlet opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n\t\tBody.call(this, body, opts);\n\n\t\tconst status = opts.status || 200;\n\t\tconst headers = new Headers(opts.headers);\n\n\t\tif (body != null && !headers.has('Content-Type')) {\n\t\t\tconst contentType = extractContentType(body);\n\t\t\tif (contentType) {\n\t\t\t\theaders.append('Content-Type', contentType);\n\t\t\t}\n\t\t}\n\n\t\tthis[INTERNALS$1] = {\n\t\t\turl: opts.url,\n\t\t\tstatus,\n\t\t\tstatusText: opts.statusText || STATUS_CODES[status],\n\t\t\theaders,\n\t\t\tcounter: opts.counter\n\t\t};\n\t}\n\n\tget url() {\n\t\treturn this[INTERNALS$1].url || '';\n\t}\n\n\tget status() {\n\t\treturn this[INTERNALS$1].status;\n\t}\n\n\t/**\n * Convenience property representing if the request ended normally\n */\n\tget ok() {\n\t\treturn this[INTERNALS$1].status >= 200 && this[INTERNALS$1].status < 300;\n\t}\n\n\tget redirected() {\n\t\treturn this[INTERNALS$1].counter > 0;\n\t}\n\n\tget statusText() {\n\t\treturn this[INTERNALS$1].statusText;\n\t}\n\n\tget headers() {\n\t\treturn this[INTERNALS$1].headers;\n\t}\n\n\t/**\n * Clone this response\n *\n * @return Response\n */\n\tclone() {\n\t\treturn new Response(clone(this), {\n\t\t\turl: this.url,\n\t\t\tstatus: this.status,\n\t\t\tstatusText: this.statusText,\n\t\t\theaders: this.headers,\n\t\t\tok: this.ok,\n\t\t\tredirected: this.redirected\n\t\t});\n\t}\n}\n\nBody.mixIn(Response.prototype);\n\nObject.defineProperties(Response.prototype, {\n\turl: { enumerable: true },\n\tstatus: { enumerable: true },\n\tok: { enumerable: true },\n\tredirected: { enumerable: true },\n\tstatusText: { enumerable: true },\n\theaders: { enumerable: true },\n\tclone: { enumerable: true }\n});\n\nObject.defineProperty(Response.prototype, Symbol.toStringTag, {\n\tvalue: 'Response',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\nconst INTERNALS$2 = Symbol('Request internals');\nconst URL = Url.URL || whatwgUrl.URL;\n\n// fix an issue where \"format\", \"parse\" aren't a named export for node <10\nconst parse_url = Url.parse;\nconst format_url = Url.format;\n\n/**\n * Wrapper around `new URL` to handle arbitrary URLs\n *\n * @param {string} urlStr\n * @return {void}\n */\nfunction parseURL(urlStr) {\n\t/*\n \tCheck whether the URL is absolute or not\n \t\tScheme: https://tools.ietf.org/html/rfc3986#section-3.1\n \tAbsolute URL: https://tools.ietf.org/html/rfc3986#section-4.3\n */\n\tif (/^[a-zA-Z][a-zA-Z\\d+\\-.]*:/.exec(urlStr)) {\n\t\turlStr = new URL(urlStr).toString();\n\t}\n\n\t// Fallback to old implementation for arbitrary URLs\n\treturn parse_url(urlStr);\n}\n\nconst streamDestructionSupported = 'destroy' in Stream.Readable.prototype;\n\n/**\n * Check if a value is an instance of Request.\n *\n * @param Mixed input\n * @return Boolean\n */\nfunction isRequest(input) {\n\treturn typeof input === 'object' && typeof input[INTERNALS$2] === 'object';\n}\n\nfunction isAbortSignal(signal) {\n\tconst proto = signal && typeof signal === 'object' && Object.getPrototypeOf(signal);\n\treturn !!(proto && proto.constructor.name === 'AbortSignal');\n}\n\n/**\n * Request class\n *\n * @param Mixed input Url or Request instance\n * @param Object init Custom options\n * @return Void\n */\nclass Request {\n\tconstructor(input) {\n\t\tlet init = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n\t\tlet parsedURL;\n\n\t\t// normalize input\n\t\tif (!isRequest(input)) {\n\t\t\tif (input && input.href) {\n\t\t\t\t// in order to support Node.js' Url objects; though WHATWG's URL objects\n\t\t\t\t// will fall into this branch also (since their `toString()` will return\n\t\t\t\t// `href` property anyway)\n\t\t\t\tparsedURL = parseURL(input.href);\n\t\t\t} else {\n\t\t\t\t// coerce input to a string before attempting to parse\n\t\t\t\tparsedURL = parseURL(`${input}`);\n\t\t\t}\n\t\t\tinput = {};\n\t\t} else {\n\t\t\tparsedURL = parseURL(input.url);\n\t\t}\n\n\t\tlet method = init.method || input.method || 'GET';\n\t\tmethod = method.toUpperCase();\n\n\t\tif ((init.body != null || isRequest(input) && input.body !== null) && (method === 'GET' || method === 'HEAD')) {\n\t\t\tthrow new TypeError('Request with GET/HEAD method cannot have body');\n\t\t}\n\n\t\tlet inputBody = init.body != null ? init.body : isRequest(input) && input.body !== null ? clone(input) : null;\n\n\t\tBody.call(this, inputBody, {\n\t\t\ttimeout: init.timeout || input.timeout || 0,\n\t\t\tsize: init.size || input.size || 0\n\t\t});\n\n\t\tconst headers = new Headers(init.headers || input.headers || {});\n\n\t\tif (inputBody != null && !headers.has('Content-Type')) {\n\t\t\tconst contentType = extractContentType(inputBody);\n\t\t\tif (contentType) {\n\t\t\t\theaders.append('Content-Type', contentType);\n\t\t\t}\n\t\t}\n\n\t\tlet signal = isRequest(input) ? input.signal : null;\n\t\tif ('signal' in init) signal = init.signal;\n\n\t\tif (signal != null && !isAbortSignal(signal)) {\n\t\t\tthrow new TypeError('Expected signal to be an instanceof AbortSignal');\n\t\t}\n\n\t\tthis[INTERNALS$2] = {\n\t\t\tmethod,\n\t\t\tredirect: init.redirect || input.redirect || 'follow',\n\t\t\theaders,\n\t\t\tparsedURL,\n\t\t\tsignal\n\t\t};\n\n\t\t// node-fetch-only options\n\t\tthis.follow = init.follow !== undefined ? init.follow : input.follow !== undefined ? input.follow : 20;\n\t\tthis.compress = init.compress !== undefined ? init.compress : input.compress !== undefined ? input.compress : true;\n\t\tthis.counter = init.counter || input.counter || 0;\n\t\tthis.agent = init.agent || input.agent;\n\t}\n\n\tget method() {\n\t\treturn this[INTERNALS$2].method;\n\t}\n\n\tget url() {\n\t\treturn format_url(this[INTERNALS$2].parsedURL);\n\t}\n\n\tget headers() {\n\t\treturn this[INTERNALS$2].headers;\n\t}\n\n\tget redirect() {\n\t\treturn this[INTERNALS$2].redirect;\n\t}\n\n\tget signal() {\n\t\treturn this[INTERNALS$2].signal;\n\t}\n\n\t/**\n * Clone this request\n *\n * @return Request\n */\n\tclone() {\n\t\treturn new Request(this);\n\t}\n}\n\nBody.mixIn(Request.prototype);\n\nObject.defineProperty(Request.prototype, Symbol.toStringTag, {\n\tvalue: 'Request',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\nObject.defineProperties(Request.prototype, {\n\tmethod: { enumerable: true },\n\turl: { enumerable: true },\n\theaders: { enumerable: true },\n\tredirect: { enumerable: true },\n\tclone: { enumerable: true },\n\tsignal: { enumerable: true }\n});\n\n/**\n * Convert a Request to Node.js http request options.\n *\n * @param Request A Request instance\n * @return Object The options object to be passed to http.request\n */\nfunction getNodeRequestOptions(request) {\n\tconst parsedURL = request[INTERNALS$2].parsedURL;\n\tconst headers = new Headers(request[INTERNALS$2].headers);\n\n\t// fetch step 1.3\n\tif (!headers.has('Accept')) {\n\t\theaders.set('Accept', '*/*');\n\t}\n\n\t// Basic fetch\n\tif (!parsedURL.protocol || !parsedURL.hostname) {\n\t\tthrow new TypeError('Only absolute URLs are supported');\n\t}\n\n\tif (!/^https?:$/.test(parsedURL.protocol)) {\n\t\tthrow new TypeError('Only HTTP(S) protocols are supported');\n\t}\n\n\tif (request.signal && request.body instanceof Stream.Readable && !streamDestructionSupported) {\n\t\tthrow new Error('Cancellation of streamed requests with AbortSignal is not supported in node < 8');\n\t}\n\n\t// HTTP-network-or-cache fetch steps 2.4-2.7\n\tlet contentLengthValue = null;\n\tif (request.body == null && /^(POST|PUT)$/i.test(request.method)) {\n\t\tcontentLengthValue = '0';\n\t}\n\tif (request.body != null) {\n\t\tconst totalBytes = getTotalBytes(request);\n\t\tif (typeof totalBytes === 'number') {\n\t\t\tcontentLengthValue = String(totalBytes);\n\t\t}\n\t}\n\tif (contentLengthValue) {\n\t\theaders.set('Content-Length', contentLengthValue);\n\t}\n\n\t// HTTP-network-or-cache fetch step 2.11\n\tif (!headers.has('User-Agent')) {\n\t\theaders.set('User-Agent', 'node-fetch/1.0 (+https://github.com/bitinn/node-fetch)');\n\t}\n\n\t// HTTP-network-or-cache fetch step 2.15\n\tif (request.compress && !headers.has('Accept-Encoding')) {\n\t\theaders.set('Accept-Encoding', 'gzip,deflate');\n\t}\n\n\tlet agent = request.agent;\n\tif (typeof agent === 'function') {\n\t\tagent = agent(parsedURL);\n\t}\n\n\tif (!headers.has('Connection') && !agent) {\n\t\theaders.set('Connection', 'close');\n\t}\n\n\t// HTTP-network fetch step 4.2\n\t// chunked encoding is handled by Node.js\n\n\treturn Object.assign({}, parsedURL, {\n\t\tmethod: request.method,\n\t\theaders: exportNodeCompatibleHeaders(headers),\n\t\tagent\n\t});\n}\n\n/**\n * abort-error.js\n *\n * AbortError interface for cancelled requests\n */\n\n/**\n * Create AbortError instance\n *\n * @param String message Error message for human\n * @return AbortError\n */\nfunction AbortError(message) {\n Error.call(this, message);\n\n this.type = 'aborted';\n this.message = message;\n\n // hide custom error implementation details from end-users\n Error.captureStackTrace(this, this.constructor);\n}\n\nAbortError.prototype = Object.create(Error.prototype);\nAbortError.prototype.constructor = AbortError;\nAbortError.prototype.name = 'AbortError';\n\nconst URL$1 = Url.URL || whatwgUrl.URL;\n\n// fix an issue where \"PassThrough\", \"resolve\" aren't a named export for node <10\nconst PassThrough$1 = Stream.PassThrough;\n\nconst isDomainOrSubdomain = function isDomainOrSubdomain(destination, original) {\n\tconst orig = new URL$1(original).hostname;\n\tconst dest = new URL$1(destination).hostname;\n\n\treturn orig === dest || orig[orig.length - dest.length - 1] === '.' && orig.endsWith(dest);\n};\n\n/**\n * isSameProtocol reports whether the two provided URLs use the same protocol.\n *\n * Both domains must already be in canonical form.\n * @param {string|URL} original\n * @param {string|URL} destination\n */\nconst isSameProtocol = function isSameProtocol(destination, original) {\n\tconst orig = new URL$1(original).protocol;\n\tconst dest = new URL$1(destination).protocol;\n\n\treturn orig === dest;\n};\n\n/**\n * Fetch function\n *\n * @param Mixed url Absolute url or Request instance\n * @param Object opts Fetch options\n * @return Promise\n */\nfunction fetch(url, opts) {\n\n\t// allow custom promise\n\tif (!fetch.Promise) {\n\t\tthrow new Error('native promise missing, set fetch.Promise to your favorite alternative');\n\t}\n\n\tBody.Promise = fetch.Promise;\n\n\t// wrap http.request into fetch\n\treturn new fetch.Promise(function (resolve, reject) {\n\t\t// build request object\n\t\tconst request = new Request(url, opts);\n\t\tconst options = getNodeRequestOptions(request);\n\n\t\tconst send = (options.protocol === 'https:' ? https : http).request;\n\t\tconst signal = request.signal;\n\n\t\tlet response = null;\n\n\t\tconst abort = function abort() {\n\t\t\tlet error = new AbortError('The user aborted a request.');\n\t\t\treject(error);\n\t\t\tif (request.body && request.body instanceof Stream.Readable) {\n\t\t\t\tdestroyStream(request.body, error);\n\t\t\t}\n\t\t\tif (!response || !response.body) return;\n\t\t\tresponse.body.emit('error', error);\n\t\t};\n\n\t\tif (signal && signal.aborted) {\n\t\t\tabort();\n\t\t\treturn;\n\t\t}\n\n\t\tconst abortAndFinalize = function abortAndFinalize() {\n\t\t\tabort();\n\t\t\tfinalize();\n\t\t};\n\n\t\t// send request\n\t\tconst req = send(options);\n\t\tlet reqTimeout;\n\n\t\tif (signal) {\n\t\t\tsignal.addEventListener('abort', abortAndFinalize);\n\t\t}\n\n\t\tfunction finalize() {\n\t\t\treq.abort();\n\t\t\tif (signal) signal.removeEventListener('abort', abortAndFinalize);\n\t\t\tclearTimeout(reqTimeout);\n\t\t}\n\n\t\tif (request.timeout) {\n\t\t\treq.once('socket', function (socket) {\n\t\t\t\treqTimeout = setTimeout(function () {\n\t\t\t\t\treject(new FetchError(`network timeout at: ${request.url}`, 'request-timeout'));\n\t\t\t\t\tfinalize();\n\t\t\t\t}, request.timeout);\n\t\t\t});\n\t\t}\n\n\t\treq.on('error', function (err) {\n\t\t\treject(new FetchError(`request to ${request.url} failed, reason: ${err.message}`, 'system', err));\n\n\t\t\tif (response && response.body) {\n\t\t\t\tdestroyStream(response.body, err);\n\t\t\t}\n\n\t\t\tfinalize();\n\t\t});\n\n\t\tfixResponseChunkedTransferBadEnding(req, function (err) {\n\t\t\tif (signal && signal.aborted) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (response && response.body) {\n\t\t\t\tdestroyStream(response.body, err);\n\t\t\t}\n\t\t});\n\n\t\t/* c8 ignore next 18 */\n\t\tif (parseInt(process.version.substring(1)) < 14) {\n\t\t\t// Before Node.js 14, pipeline() does not fully support async iterators and does not always\n\t\t\t// properly handle when the socket close/end events are out of order.\n\t\t\treq.on('socket', function (s) {\n\t\t\t\ts.addListener('close', function (hadError) {\n\t\t\t\t\t// if a data listener is still present we didn't end cleanly\n\t\t\t\t\tconst hasDataListener = s.listenerCount('data') > 0;\n\n\t\t\t\t\t// if end happened before close but the socket didn't emit an error, do it now\n\t\t\t\t\tif (response && hasDataListener && !hadError && !(signal && signal.aborted)) {\n\t\t\t\t\t\tconst err = new Error('Premature close');\n\t\t\t\t\t\terr.code = 'ERR_STREAM_PREMATURE_CLOSE';\n\t\t\t\t\t\tresponse.body.emit('error', err);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\n\t\treq.on('response', function (res) {\n\t\t\tclearTimeout(reqTimeout);\n\n\t\t\tconst headers = createHeadersLenient(res.headers);\n\n\t\t\t// HTTP fetch step 5\n\t\t\tif (fetch.isRedirect(res.statusCode)) {\n\t\t\t\t// HTTP fetch step 5.2\n\t\t\t\tconst location = headers.get('Location');\n\n\t\t\t\t// HTTP fetch step 5.3\n\t\t\t\tlet locationURL = null;\n\t\t\t\ttry {\n\t\t\t\t\tlocationURL = location === null ? null : new URL$1(location, request.url).toString();\n\t\t\t\t} catch (err) {\n\t\t\t\t\t// error here can only be invalid URL in Location: header\n\t\t\t\t\t// do not throw when options.redirect == manual\n\t\t\t\t\t// let the user extract the errorneous redirect URL\n\t\t\t\t\tif (request.redirect !== 'manual') {\n\t\t\t\t\t\treject(new FetchError(`uri requested responds with an invalid redirect URL: ${location}`, 'invalid-redirect'));\n\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// HTTP fetch step 5.5\n\t\t\t\tswitch (request.redirect) {\n\t\t\t\t\tcase 'error':\n\t\t\t\t\t\treject(new FetchError(`uri requested responds with a redirect, redirect mode is set to error: ${request.url}`, 'no-redirect'));\n\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\treturn;\n\t\t\t\t\tcase 'manual':\n\t\t\t\t\t\t// node-fetch-specific step: make manual redirect a bit easier to use by setting the Location header value to the resolved URL.\n\t\t\t\t\t\tif (locationURL !== null) {\n\t\t\t\t\t\t\t// handle corrupted header\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\theaders.set('Location', locationURL);\n\t\t\t\t\t\t\t} catch (err) {\n\t\t\t\t\t\t\t\t// istanbul ignore next: nodejs server prevent invalid response headers, we can't test this through normal request\n\t\t\t\t\t\t\t\treject(err);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'follow':\n\t\t\t\t\t\t// HTTP-redirect fetch step 2\n\t\t\t\t\t\tif (locationURL === null) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 5\n\t\t\t\t\t\tif (request.counter >= request.follow) {\n\t\t\t\t\t\t\treject(new FetchError(`maximum redirect reached at: ${request.url}`, 'max-redirect'));\n\t\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 6 (counter increment)\n\t\t\t\t\t\t// Create a new Request object.\n\t\t\t\t\t\tconst requestOpts = {\n\t\t\t\t\t\t\theaders: new Headers(request.headers),\n\t\t\t\t\t\t\tfollow: request.follow,\n\t\t\t\t\t\t\tcounter: request.counter + 1,\n\t\t\t\t\t\t\tagent: request.agent,\n\t\t\t\t\t\t\tcompress: request.compress,\n\t\t\t\t\t\t\tmethod: request.method,\n\t\t\t\t\t\t\tbody: request.body,\n\t\t\t\t\t\t\tsignal: request.signal,\n\t\t\t\t\t\t\ttimeout: request.timeout,\n\t\t\t\t\t\t\tsize: request.size\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tif (!isDomainOrSubdomain(request.url, locationURL) || !isSameProtocol(request.url, locationURL)) {\n\t\t\t\t\t\t\tfor (const name of ['authorization', 'www-authenticate', 'cookie', 'cookie2']) {\n\t\t\t\t\t\t\t\trequestOpts.headers.delete(name);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 9\n\t\t\t\t\t\tif (res.statusCode !== 303 && request.body && getTotalBytes(request) === null) {\n\t\t\t\t\t\t\treject(new FetchError('Cannot follow redirect with body being a readable stream', 'unsupported-redirect'));\n\t\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 11\n\t\t\t\t\t\tif (res.statusCode === 303 || (res.statusCode === 301 || res.statusCode === 302) && request.method === 'POST') {\n\t\t\t\t\t\t\trequestOpts.method = 'GET';\n\t\t\t\t\t\t\trequestOpts.body = undefined;\n\t\t\t\t\t\t\trequestOpts.headers.delete('content-length');\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 15\n\t\t\t\t\t\tresolve(fetch(new Request(locationURL, requestOpts)));\n\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// prepare response\n\t\t\tres.once('end', function () {\n\t\t\t\tif (signal) signal.removeEventListener('abort', abortAndFinalize);\n\t\t\t});\n\t\t\tlet body = res.pipe(new PassThrough$1());\n\n\t\t\tconst response_options = {\n\t\t\t\turl: request.url,\n\t\t\t\tstatus: res.statusCode,\n\t\t\t\tstatusText: res.statusMessage,\n\t\t\t\theaders: headers,\n\t\t\t\tsize: request.size,\n\t\t\t\ttimeout: request.timeout,\n\t\t\t\tcounter: request.counter\n\t\t\t};\n\n\t\t\t// HTTP-network fetch step 12.1.1.3\n\t\t\tconst codings = headers.get('Content-Encoding');\n\n\t\t\t// HTTP-network fetch step 12.1.1.4: handle content codings\n\n\t\t\t// in following scenarios we ignore compression support\n\t\t\t// 1. compression support is disabled\n\t\t\t// 2. HEAD request\n\t\t\t// 3. no Content-Encoding header\n\t\t\t// 4. no content response (204)\n\t\t\t// 5. content not modified response (304)\n\t\t\tif (!request.compress || request.method === 'HEAD' || codings === null || res.statusCode === 204 || res.statusCode === 304) {\n\t\t\t\tresponse = new Response(body, response_options);\n\t\t\t\tresolve(response);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// For Node v6+\n\t\t\t// Be less strict when decoding compressed responses, since sometimes\n\t\t\t// servers send slightly invalid responses that are still accepted\n\t\t\t// by common browsers.\n\t\t\t// Always using Z_SYNC_FLUSH is what cURL does.\n\t\t\tconst zlibOptions = {\n\t\t\t\tflush: zlib.Z_SYNC_FLUSH,\n\t\t\t\tfinishFlush: zlib.Z_SYNC_FLUSH\n\t\t\t};\n\n\t\t\t// for gzip\n\t\t\tif (codings == 'gzip' || codings == 'x-gzip') {\n\t\t\t\tbody = body.pipe(zlib.createGunzip(zlibOptions));\n\t\t\t\tresponse = new Response(body, response_options);\n\t\t\t\tresolve(response);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// for deflate\n\t\t\tif (codings == 'deflate' || codings == 'x-deflate') {\n\t\t\t\t// handle the infamous raw deflate response from old servers\n\t\t\t\t// a hack for old IIS and Apache servers\n\t\t\t\tconst raw = res.pipe(new PassThrough$1());\n\t\t\t\traw.once('data', function (chunk) {\n\t\t\t\t\t// see http://stackoverflow.com/questions/37519828\n\t\t\t\t\tif ((chunk[0] & 0x0F) === 0x08) {\n\t\t\t\t\t\tbody = body.pipe(zlib.createInflate());\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbody = body.pipe(zlib.createInflateRaw());\n\t\t\t\t\t}\n\t\t\t\t\tresponse = new Response(body, response_options);\n\t\t\t\t\tresolve(response);\n\t\t\t\t});\n\t\t\t\traw.on('end', function () {\n\t\t\t\t\t// some old IIS servers return zero-length OK deflate responses, so 'data' is never emitted.\n\t\t\t\t\tif (!response) {\n\t\t\t\t\t\tresponse = new Response(body, response_options);\n\t\t\t\t\t\tresolve(response);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// for br\n\t\t\tif (codings == 'br' && typeof zlib.createBrotliDecompress === 'function') {\n\t\t\t\tbody = body.pipe(zlib.createBrotliDecompress());\n\t\t\t\tresponse = new Response(body, response_options);\n\t\t\t\tresolve(response);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// otherwise, use response as-is\n\t\t\tresponse = new Response(body, response_options);\n\t\t\tresolve(response);\n\t\t});\n\n\t\twriteToStream(req, request);\n\t});\n}\nfunction fixResponseChunkedTransferBadEnding(request, errorCallback) {\n\tlet socket;\n\n\trequest.on('socket', function (s) {\n\t\tsocket = s;\n\t});\n\n\trequest.on('response', function (response) {\n\t\tconst headers = response.headers;\n\n\t\tif (headers['transfer-encoding'] === 'chunked' && !headers['content-length']) {\n\t\t\tresponse.once('close', function (hadError) {\n\t\t\t\t// if a data listener is still present we didn't end cleanly\n\t\t\t\tconst hasDataListener = socket.listenerCount('data') > 0;\n\n\t\t\t\tif (hasDataListener && !hadError) {\n\t\t\t\t\tconst err = new Error('Premature close');\n\t\t\t\t\terr.code = 'ERR_STREAM_PREMATURE_CLOSE';\n\t\t\t\t\terrorCallback(err);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t});\n}\n\nfunction destroyStream(stream, err) {\n\tif (stream.destroy) {\n\t\tstream.destroy(err);\n\t} else {\n\t\t// node < 8\n\t\tstream.emit('error', err);\n\t\tstream.end();\n\t}\n}\n\n/**\n * Redirect code matching\n *\n * @param Number code Status code\n * @return Boolean\n */\nfetch.isRedirect = function (code) {\n\treturn code === 301 || code === 302 || code === 303 || code === 307 || code === 308;\n};\n\n// expose Promise\nfetch.Promise = global.Promise;\n\nmodule.exports = exports = fetch;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = exports;\nexports.Headers = Headers;\nexports.Request = Request;\nexports.Response = Response;\nexports.FetchError = FetchError;\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nclass Deprecation extends Error {\n constructor(message) {\n super(message); // Maintains proper stack trace (only available on V8)\n\n /* istanbul ignore next */\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n }\n\n this.name = 'Deprecation';\n }\n\n}\n\nexports.Deprecation = Deprecation;\n", "// Returns a wrapper function that returns a wrapped callback\n// The wrapper function should do some stuff, and return a\n// presumably different callback function.\n// This makes sure that own properties are retained, so that\n// decorations and such are not lost along the way.\nmodule.exports = wrappy\nfunction wrappy (fn, cb) {\n if (fn && cb) return wrappy(fn)(cb)\n\n if (typeof fn !== 'function')\n throw new TypeError('need wrapper function')\n\n Object.keys(fn).forEach(function (k) {\n wrapper[k] = fn[k]\n })\n\n return wrapper\n\n function wrapper() {\n var args = new Array(arguments.length)\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i]\n }\n var ret = fn.apply(this, args)\n var cb = args[args.length-1]\n if (typeof ret === 'function' && ret !== cb) {\n Object.keys(cb).forEach(function (k) {\n ret[k] = cb[k]\n })\n }\n return ret\n }\n}\n", "var wrappy = require('wrappy')\nmodule.exports = wrappy(once)\nmodule.exports.strict = wrappy(onceStrict)\n\nonce.proto = once(function () {\n Object.defineProperty(Function.prototype, 'once', {\n value: function () {\n return once(this)\n },\n configurable: true\n })\n\n Object.defineProperty(Function.prototype, 'onceStrict', {\n value: function () {\n return onceStrict(this)\n },\n configurable: true\n })\n})\n\nfunction once (fn) {\n var f = function () {\n if (f.called) return f.value\n f.called = true\n return f.value = fn.apply(this, arguments)\n }\n f.called = false\n return f\n}\n\nfunction onceStrict (fn) {\n var f = function () {\n if (f.called)\n throw new Error(f.onceError)\n f.called = true\n return f.value = fn.apply(this, arguments)\n }\n var name = fn.name || 'Function wrapped with `once`'\n f.onceError = name + \" shouldn't be called more than once\"\n f.called = false\n return f\n}\n", "import { Deprecation } from \"deprecation\";\nimport once from \"once\";\nconst logOnceCode = once((deprecation) => console.warn(deprecation));\nconst logOnceHeaders = once((deprecation) => console.warn(deprecation));\n/**\n * Error with extra properties to help with debugging\n */\nexport class RequestError extends Error {\n constructor(message, statusCode, options) {\n super(message);\n // Maintains proper stack trace (only available on V8)\n /* istanbul ignore next */\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n }\n this.name = \"HttpError\";\n this.status = statusCode;\n let headers;\n if (\"headers\" in options && typeof options.headers !== \"undefined\") {\n headers = options.headers;\n }\n if (\"response\" in options) {\n this.response = options.response;\n headers = options.response.headers;\n }\n // redact request credentials without mutating original request options\n const requestCopy = Object.assign({}, options.request);\n if (options.request.headers.authorization) {\n requestCopy.headers = Object.assign({}, options.request.headers, {\n authorization: options.request.headers.authorization.replace(/ .*$/, \" [REDACTED]\"),\n });\n }\n requestCopy.url = requestCopy.url\n // client_id & client_secret can be passed as URL query parameters to increase rate limit\n // see https://developer.github.com/v3/#increasing-the-unauthenticated-rate-limit-for-oauth-applications\n .replace(/\\bclient_secret=\\w+/g, \"client_secret=[REDACTED]\")\n // OAuth tokens can be passed as URL query parameters, although it is not recommended\n // see https://developer.github.com/v3/#oauth2-token-sent-in-a-header\n .replace(/\\baccess_token=\\w+/g, \"access_token=[REDACTED]\");\n this.request = requestCopy;\n // deprecations\n Object.defineProperty(this, \"code\", {\n get() {\n logOnceCode(new Deprecation(\"[@octokit/request-error] `error.code` is deprecated, use `error.status`.\"));\n return statusCode;\n },\n });\n Object.defineProperty(this, \"headers\", {\n get() {\n logOnceHeaders(new Deprecation(\"[@octokit/request-error] `error.headers` is deprecated, use `error.response.headers`.\"));\n return headers || {};\n },\n });\n }\n}\n", "export const VERSION = \"5.6.3\";\n", "export default function getBufferResponse(response) {\n return response.arrayBuffer();\n}\n", "import { isPlainObject } from \"is-plain-object\";\nimport nodeFetch from \"node-fetch\";\nimport { RequestError } from \"@octokit/request-error\";\nimport getBuffer from \"./get-buffer-response\";\nexport default function fetchWrapper(requestOptions) {\n const log = requestOptions.request && requestOptions.request.log\n ? requestOptions.request.log\n : console;\n if (isPlainObject(requestOptions.body) ||\n Array.isArray(requestOptions.body)) {\n requestOptions.body = JSON.stringify(requestOptions.body);\n }\n let headers = {};\n let status;\n let url;\n const fetch = (requestOptions.request && requestOptions.request.fetch) || nodeFetch;\n return fetch(requestOptions.url, Object.assign({\n method: requestOptions.method,\n body: requestOptions.body,\n headers: requestOptions.headers,\n redirect: requestOptions.redirect,\n }, \n // `requestOptions.request.agent` type is incompatible\n // see https://github.com/octokit/types.ts/pull/264\n requestOptions.request))\n .then(async (response) => {\n url = response.url;\n status = response.status;\n for (const keyAndValue of response.headers) {\n headers[keyAndValue[0]] = keyAndValue[1];\n }\n if (\"deprecation\" in headers) {\n const matches = headers.link && headers.link.match(/<([^>]+)>; rel=\"deprecation\"/);\n const deprecationLink = matches && matches.pop();\n log.warn(`[@octokit/request] \"${requestOptions.method} ${requestOptions.url}\" is deprecated. It is scheduled to be removed on ${headers.sunset}${deprecationLink ? `. See ${deprecationLink}` : \"\"}`);\n }\n if (status === 204 || status === 205) {\n return;\n }\n // GitHub API returns 200 for HEAD requests\n if (requestOptions.method === \"HEAD\") {\n if (status < 400) {\n return;\n }\n throw new RequestError(response.statusText, status, {\n response: {\n url,\n status,\n headers,\n data: undefined,\n },\n request: requestOptions,\n });\n }\n if (status === 304) {\n throw new RequestError(\"Not modified\", status, {\n response: {\n url,\n status,\n headers,\n data: await getResponseData(response),\n },\n request: requestOptions,\n });\n }\n if (status >= 400) {\n const data = await getResponseData(response);\n const error = new RequestError(toErrorMessage(data), status, {\n response: {\n url,\n status,\n headers,\n data,\n },\n request: requestOptions,\n });\n throw error;\n }\n return getResponseData(response);\n })\n .then((data) => {\n return {\n status,\n url,\n headers,\n data,\n };\n })\n .catch((error) => {\n if (error instanceof RequestError)\n throw error;\n throw new RequestError(error.message, 500, {\n request: requestOptions,\n });\n });\n}\nasync function getResponseData(response) {\n const contentType = response.headers.get(\"content-type\");\n if (/application\\/json/.test(contentType)) {\n return response.json();\n }\n if (!contentType || /^text\\/|charset=utf-8$/.test(contentType)) {\n return response.text();\n }\n return getBuffer(response);\n}\nfunction toErrorMessage(data) {\n if (typeof data === \"string\")\n return data;\n // istanbul ignore else - just in case\n if (\"message\" in data) {\n if (Array.isArray(data.errors)) {\n return `${data.message}: ${data.errors.map(JSON.stringify).join(\", \")}`;\n }\n return data.message;\n }\n // istanbul ignore next - just in case\n return `Unknown error: ${JSON.stringify(data)}`;\n}\n", "import fetchWrapper from \"./fetch-wrapper\";\nexport default function withDefaults(oldEndpoint, newDefaults) {\n const endpoint = oldEndpoint.defaults(newDefaults);\n const newApi = function (route, parameters) {\n const endpointOptions = endpoint.merge(route, parameters);\n if (!endpointOptions.request || !endpointOptions.request.hook) {\n return fetchWrapper(endpoint.parse(endpointOptions));\n }\n const request = (route, parameters) => {\n return fetchWrapper(endpoint.parse(endpoint.merge(route, parameters)));\n };\n Object.assign(request, {\n endpoint,\n defaults: withDefaults.bind(null, endpoint),\n });\n return endpointOptions.request.hook(request, endpointOptions);\n };\n return Object.assign(newApi, {\n endpoint,\n defaults: withDefaults.bind(null, endpoint),\n });\n}\n", "import { endpoint } from \"@octokit/endpoint\";\nimport { getUserAgent } from \"universal-user-agent\";\nimport { VERSION } from \"./version\";\nimport withDefaults from \"./with-defaults\";\nexport const request = withDefaults(endpoint, {\n headers: {\n \"user-agent\": `octokit-request.js/${VERSION} ${getUserAgent()}`,\n },\n});\n", "export const VERSION = \"4.8.0\";\n", "function _buildMessageForResponseErrors(data) {\n return (`Request failed due to following response errors:\\n` +\n data.errors.map((e) => ` - ${e.message}`).join(\"\\n\"));\n}\nexport class GraphqlResponseError extends Error {\n constructor(request, headers, response) {\n super(_buildMessageForResponseErrors(response));\n this.request = request;\n this.headers = headers;\n this.response = response;\n this.name = \"GraphqlResponseError\";\n // Expose the errors and response data in their shorthand properties.\n this.errors = response.errors;\n this.data = response.data;\n // Maintains proper stack trace (only available on V8)\n /* istanbul ignore next */\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n }\n }\n}\n", "import { GraphqlResponseError } from \"./error\";\nconst NON_VARIABLE_OPTIONS = [\n \"method\",\n \"baseUrl\",\n \"url\",\n \"headers\",\n \"request\",\n \"query\",\n \"mediaType\",\n];\nconst FORBIDDEN_VARIABLE_OPTIONS = [\"query\", \"method\", \"url\"];\nconst GHES_V3_SUFFIX_REGEX = /\\/api\\/v3\\/?$/;\nexport function graphql(request, query, options) {\n if (options) {\n if (typeof query === \"string\" && \"query\" in options) {\n return Promise.reject(new Error(`[@octokit/graphql] \"query\" cannot be used as variable name`));\n }\n for (const key in options) {\n if (!FORBIDDEN_VARIABLE_OPTIONS.includes(key))\n continue;\n return Promise.reject(new Error(`[@octokit/graphql] \"${key}\" cannot be used as variable name`));\n }\n }\n const parsedOptions = typeof query === \"string\" ? Object.assign({ query }, options) : query;\n const requestOptions = Object.keys(parsedOptions).reduce((result, key) => {\n if (NON_VARIABLE_OPTIONS.includes(key)) {\n result[key] = parsedOptions[key];\n return result;\n }\n if (!result.variables) {\n result.variables = {};\n }\n result.variables[key] = parsedOptions[key];\n return result;\n }, {});\n // workaround for GitHub Enterprise baseUrl set with /api/v3 suffix\n // https://github.com/octokit/auth-app.js/issues/111#issuecomment-657610451\n const baseUrl = parsedOptions.baseUrl || request.endpoint.DEFAULTS.baseUrl;\n if (GHES_V3_SUFFIX_REGEX.test(baseUrl)) {\n requestOptions.url = baseUrl.replace(GHES_V3_SUFFIX_REGEX, \"/api/graphql\");\n }\n return request(requestOptions).then((response) => {\n if (response.data.errors) {\n const headers = {};\n for (const key of Object.keys(response.headers)) {\n headers[key] = response.headers[key];\n }\n throw new GraphqlResponseError(requestOptions, headers, response.data);\n }\n return response.data.data;\n });\n}\n", "import { request as Request } from \"@octokit/request\";\nimport { graphql } from \"./graphql\";\nexport function withDefaults(request, newDefaults) {\n const newRequest = request.defaults(newDefaults);\n const newApi = (query, options) => {\n return graphql(newRequest, query, options);\n };\n return Object.assign(newApi, {\n defaults: withDefaults.bind(null, newRequest),\n endpoint: Request.endpoint,\n });\n}\n", "import { request } from \"@octokit/request\";\nimport { getUserAgent } from \"universal-user-agent\";\nimport { VERSION } from \"./version\";\nimport { withDefaults } from \"./with-defaults\";\nexport const graphql = withDefaults(request, {\n headers: {\n \"user-agent\": `octokit-graphql.js/${VERSION} ${getUserAgent()}`,\n },\n method: \"POST\",\n url: \"/graphql\",\n});\nexport { GraphqlResponseError } from \"./error\";\nexport function withCustomRequest(customRequest) {\n return withDefaults(customRequest, {\n method: \"POST\",\n url: \"/graphql\",\n });\n}\n", "const REGEX_IS_INSTALLATION_LEGACY = /^v1\\./;\nconst REGEX_IS_INSTALLATION = /^ghs_/;\nconst REGEX_IS_USER_TO_SERVER = /^ghu_/;\nexport async function auth(token) {\n const isApp = token.split(/\\./).length === 3;\n const isInstallation = REGEX_IS_INSTALLATION_LEGACY.test(token) ||\n REGEX_IS_INSTALLATION.test(token);\n const isUserToServer = REGEX_IS_USER_TO_SERVER.test(token);\n const tokenType = isApp\n ? \"app\"\n : isInstallation\n ? \"installation\"\n : isUserToServer\n ? \"user-to-server\"\n : \"oauth\";\n return {\n type: \"token\",\n token: token,\n tokenType,\n };\n}\n", "/**\n * Prefix token for usage in the Authorization header\n *\n * @param token OAuth token or JSON Web Token\n */\nexport function withAuthorizationPrefix(token) {\n if (token.split(/\\./).length === 3) {\n return `bearer ${token}`;\n }\n return `token ${token}`;\n}\n", "import { withAuthorizationPrefix } from \"./with-authorization-prefix\";\nexport async function hook(token, request, route, parameters) {\n const endpoint = request.endpoint.merge(route, parameters);\n endpoint.headers.authorization = withAuthorizationPrefix(token);\n return request(endpoint);\n}\n", "import { auth } from \"./auth\";\nimport { hook } from \"./hook\";\nexport const createTokenAuth = function createTokenAuth(token) {\n if (!token) {\n throw new Error(\"[@octokit/auth-token] No token passed to createTokenAuth\");\n }\n if (typeof token !== \"string\") {\n throw new Error(\"[@octokit/auth-token] Token passed to createTokenAuth is not a string\");\n }\n token = token.replace(/^(token|bearer) +/i, \"\");\n return Object.assign(auth.bind(null, token), {\n hook: hook.bind(null, token),\n });\n};\n", "export const VERSION = \"3.6.0\";\n", "import { getUserAgent } from \"universal-user-agent\";\nimport { Collection } from \"before-after-hook\";\nimport { request } from \"@octokit/request\";\nimport { withCustomRequest } from \"@octokit/graphql\";\nimport { createTokenAuth } from \"@octokit/auth-token\";\nimport { VERSION } from \"./version\";\nexport class Octokit {\n constructor(options = {}) {\n const hook = new Collection();\n const requestDefaults = {\n baseUrl: request.endpoint.DEFAULTS.baseUrl,\n headers: {},\n request: Object.assign({}, options.request, {\n // @ts-ignore internal usage only, no need to type\n hook: hook.bind(null, \"request\"),\n }),\n mediaType: {\n previews: [],\n format: \"\",\n },\n };\n // prepend default user agent with `options.userAgent` if set\n requestDefaults.headers[\"user-agent\"] = [\n options.userAgent,\n `octokit-core.js/${VERSION} ${getUserAgent()}`,\n ]\n .filter(Boolean)\n .join(\" \");\n if (options.baseUrl) {\n requestDefaults.baseUrl = options.baseUrl;\n }\n if (options.previews) {\n requestDefaults.mediaType.previews = options.previews;\n }\n if (options.timeZone) {\n requestDefaults.headers[\"time-zone\"] = options.timeZone;\n }\n this.request = request.defaults(requestDefaults);\n this.graphql = withCustomRequest(this.request).defaults(requestDefaults);\n this.log = Object.assign({\n debug: () => { },\n info: () => { },\n warn: console.warn.bind(console),\n error: console.error.bind(console),\n }, options.log);\n this.hook = hook;\n // (1) If neither `options.authStrategy` nor `options.auth` are set, the `octokit` instance\n // is unauthenticated. The `this.auth()` method is a no-op and no request hook is registered.\n // (2) If only `options.auth` is set, use the default token authentication strategy.\n // (3) If `options.authStrategy` is set then use it and pass in `options.auth`. Always pass own request as many strategies accept a custom request instance.\n // TODO: type `options.auth` based on `options.authStrategy`.\n if (!options.authStrategy) {\n if (!options.auth) {\n // (1)\n this.auth = async () => ({\n type: \"unauthenticated\",\n });\n }\n else {\n // (2)\n const auth = createTokenAuth(options.auth);\n // @ts-ignore ¯\\_(ツ)_/¯\n hook.wrap(\"request\", auth.hook);\n this.auth = auth;\n }\n }\n else {\n const { authStrategy, ...otherOptions } = options;\n const auth = authStrategy(Object.assign({\n request: this.request,\n log: this.log,\n // we pass the current octokit instance as well as its constructor options\n // to allow for authentication strategies that return a new octokit instance\n // that shares the same internal state as the current one. The original\n // requirement for this was the \"event-octokit\" authentication strategy\n // of https://github.com/probot/octokit-auth-probot.\n octokit: this,\n octokitOptions: otherOptions,\n }, options.auth));\n // @ts-ignore ¯\\_(ツ)_/¯\n hook.wrap(\"request\", auth.hook);\n this.auth = auth;\n }\n // apply plugins\n // https://stackoverflow.com/a/16345172\n const classConstructor = this.constructor;\n classConstructor.plugins.forEach((plugin) => {\n Object.assign(this, plugin(this, options));\n });\n }\n static defaults(defaults) {\n const OctokitWithDefaults = class extends this {\n constructor(...args) {\n const options = args[0] || {};\n if (typeof defaults === \"function\") {\n super(defaults(options));\n return;\n }\n super(Object.assign({}, defaults, options, options.userAgent && defaults.userAgent\n ? {\n userAgent: `${options.userAgent} ${defaults.userAgent}`,\n }\n : null));\n }\n };\n return OctokitWithDefaults;\n }\n /**\n * Attach a plugin (or many) to your Octokit instance.\n *\n * @example\n * const API = Octokit.plugin(plugin1, plugin2, plugin3, ...)\n */\n static plugin(...newPlugins) {\n var _a;\n const currentPlugins = this.plugins;\n const NewOctokit = (_a = class extends this {\n },\n _a.plugins = currentPlugins.concat(newPlugins.filter((plugin) => !currentPlugins.includes(plugin))),\n _a);\n return NewOctokit;\n }\n}\nOctokit.VERSION = VERSION;\nOctokit.plugins = [];\n", "const Endpoints = {\n actions: {\n addCustomLabelsToSelfHostedRunnerForOrg: [\n \"POST /orgs/{org}/actions/runners/{runner_id}/labels\",\n ],\n addCustomLabelsToSelfHostedRunnerForRepo: [\n \"POST /repos/{owner}/{repo}/actions/runners/{runner_id}/labels\",\n ],\n addSelectedRepoToOrgSecret: [\n \"PUT /orgs/{org}/actions/secrets/{secret_name}/repositories/{repository_id}\",\n ],\n approveWorkflowRun: [\n \"POST /repos/{owner}/{repo}/actions/runs/{run_id}/approve\",\n ],\n cancelWorkflowRun: [\n \"POST /repos/{owner}/{repo}/actions/runs/{run_id}/cancel\",\n ],\n createOrUpdateEnvironmentSecret: [\n \"PUT /repositories/{repository_id}/environments/{environment_name}/secrets/{secret_name}\",\n ],\n createOrUpdateOrgSecret: [\"PUT /orgs/{org}/actions/secrets/{secret_name}\"],\n createOrUpdateRepoSecret: [\n \"PUT /repos/{owner}/{repo}/actions/secrets/{secret_name}\",\n ],\n createRegistrationTokenForOrg: [\n \"POST /orgs/{org}/actions/runners/registration-token\",\n ],\n createRegistrationTokenForRepo: [\n \"POST /repos/{owner}/{repo}/actions/runners/registration-token\",\n ],\n createRemoveTokenForOrg: [\"POST /orgs/{org}/actions/runners/remove-token\"],\n createRemoveTokenForRepo: [\n \"POST /repos/{owner}/{repo}/actions/runners/remove-token\",\n ],\n createWorkflowDispatch: [\n \"POST /repos/{owner}/{repo}/actions/workflows/{workflow_id}/dispatches\",\n ],\n deleteActionsCacheById: [\n \"DELETE /repos/{owner}/{repo}/actions/caches/{cache_id}\",\n ],\n deleteActionsCacheByKey: [\n \"DELETE /repos/{owner}/{repo}/actions/caches{?key,ref}\",\n ],\n deleteArtifact: [\n \"DELETE /repos/{owner}/{repo}/actions/artifacts/{artifact_id}\",\n ],\n deleteEnvironmentSecret: [\n \"DELETE /repositories/{repository_id}/environments/{environment_name}/secrets/{secret_name}\",\n ],\n deleteOrgSecret: [\"DELETE /orgs/{org}/actions/secrets/{secret_name}\"],\n deleteRepoSecret: [\n \"DELETE /repos/{owner}/{repo}/actions/secrets/{secret_name}\",\n ],\n deleteSelfHostedRunnerFromOrg: [\n \"DELETE /orgs/{org}/actions/runners/{runner_id}\",\n ],\n deleteSelfHostedRunnerFromRepo: [\n \"DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}\",\n ],\n deleteWorkflowRun: [\"DELETE /repos/{owner}/{repo}/actions/runs/{run_id}\"],\n deleteWorkflowRunLogs: [\n \"DELETE /repos/{owner}/{repo}/actions/runs/{run_id}/logs\",\n ],\n disableSelectedRepositoryGithubActionsOrganization: [\n \"DELETE /orgs/{org}/actions/permissions/repositories/{repository_id}\",\n ],\n disableWorkflow: [\n \"PUT /repos/{owner}/{repo}/actions/workflows/{workflow_id}/disable\",\n ],\n downloadArtifact: [\n \"GET /repos/{owner}/{repo}/actions/artifacts/{artifact_id}/{archive_format}\",\n ],\n downloadJobLogsForWorkflowRun: [\n \"GET /repos/{owner}/{repo}/actions/jobs/{job_id}/logs\",\n ],\n downloadWorkflowRunAttemptLogs: [\n \"GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/logs\",\n ],\n downloadWorkflowRunLogs: [\n \"GET /repos/{owner}/{repo}/actions/runs/{run_id}/logs\",\n ],\n enableSelectedRepositoryGithubActionsOrganization: [\n \"PUT /orgs/{org}/actions/permissions/repositories/{repository_id}\",\n ],\n enableWorkflow: [\n \"PUT /repos/{owner}/{repo}/actions/workflows/{workflow_id}/enable\",\n ],\n getActionsCacheList: [\"GET /repos/{owner}/{repo}/actions/caches\"],\n getActionsCacheUsage: [\"GET /repos/{owner}/{repo}/actions/cache/usage\"],\n getActionsCacheUsageByRepoForOrg: [\n \"GET /orgs/{org}/actions/cache/usage-by-repository\",\n ],\n getActionsCacheUsageForEnterprise: [\n \"GET /enterprises/{enterprise}/actions/cache/usage\",\n ],\n getActionsCacheUsageForOrg: [\"GET /orgs/{org}/actions/cache/usage\"],\n getAllowedActionsOrganization: [\n \"GET /orgs/{org}/actions/permissions/selected-actions\",\n ],\n getAllowedActionsRepository: [\n \"GET /repos/{owner}/{repo}/actions/permissions/selected-actions\",\n ],\n getArtifact: [\"GET /repos/{owner}/{repo}/actions/artifacts/{artifact_id}\"],\n getEnvironmentPublicKey: [\n \"GET /repositories/{repository_id}/environments/{environment_name}/secrets/public-key\",\n ],\n getEnvironmentSecret: [\n \"GET /repositories/{repository_id}/environments/{environment_name}/secrets/{secret_name}\",\n ],\n getGithubActionsDefaultWorkflowPermissionsEnterprise: [\n \"GET /enterprises/{enterprise}/actions/permissions/workflow\",\n ],\n getGithubActionsDefaultWorkflowPermissionsOrganization: [\n \"GET /orgs/{org}/actions/permissions/workflow\",\n ],\n getGithubActionsDefaultWorkflowPermissionsRepository: [\n \"GET /repos/{owner}/{repo}/actions/permissions/workflow\",\n ],\n getGithubActionsPermissionsOrganization: [\n \"GET /orgs/{org}/actions/permissions\",\n ],\n getGithubActionsPermissionsRepository: [\n \"GET /repos/{owner}/{repo}/actions/permissions\",\n ],\n getJobForWorkflowRun: [\"GET /repos/{owner}/{repo}/actions/jobs/{job_id}\"],\n getOrgPublicKey: [\"GET /orgs/{org}/actions/secrets/public-key\"],\n getOrgSecret: [\"GET /orgs/{org}/actions/secrets/{secret_name}\"],\n getPendingDeploymentsForRun: [\n \"GET /repos/{owner}/{repo}/actions/runs/{run_id}/pending_deployments\",\n ],\n getRepoPermissions: [\n \"GET /repos/{owner}/{repo}/actions/permissions\",\n {},\n { renamed: [\"actions\", \"getGithubActionsPermissionsRepository\"] },\n ],\n getRepoPublicKey: [\"GET /repos/{owner}/{repo}/actions/secrets/public-key\"],\n getRepoSecret: [\"GET /repos/{owner}/{repo}/actions/secrets/{secret_name}\"],\n getReviewsForRun: [\n \"GET /repos/{owner}/{repo}/actions/runs/{run_id}/approvals\",\n ],\n getSelfHostedRunnerForOrg: [\"GET /orgs/{org}/actions/runners/{runner_id}\"],\n getSelfHostedRunnerForRepo: [\n \"GET /repos/{owner}/{repo}/actions/runners/{runner_id}\",\n ],\n getWorkflow: [\"GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}\"],\n getWorkflowAccessToRepository: [\n \"GET /repos/{owner}/{repo}/actions/permissions/access\",\n ],\n getWorkflowRun: [\"GET /repos/{owner}/{repo}/actions/runs/{run_id}\"],\n getWorkflowRunAttempt: [\n \"GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}\",\n ],\n getWorkflowRunUsage: [\n \"GET /repos/{owner}/{repo}/actions/runs/{run_id}/timing\",\n ],\n getWorkflowUsage: [\n \"GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/timing\",\n ],\n listArtifactsForRepo: [\"GET /repos/{owner}/{repo}/actions/artifacts\"],\n listEnvironmentSecrets: [\n \"GET /repositories/{repository_id}/environments/{environment_name}/secrets\",\n ],\n listJobsForWorkflowRun: [\n \"GET /repos/{owner}/{repo}/actions/runs/{run_id}/jobs\",\n ],\n listJobsForWorkflowRunAttempt: [\n \"GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/jobs\",\n ],\n listLabelsForSelfHostedRunnerForOrg: [\n \"GET /orgs/{org}/actions/runners/{runner_id}/labels\",\n ],\n listLabelsForSelfHostedRunnerForRepo: [\n \"GET /repos/{owner}/{repo}/actions/runners/{runner_id}/labels\",\n ],\n listOrgSecrets: [\"GET /orgs/{org}/actions/secrets\"],\n listRepoSecrets: [\"GET /repos/{owner}/{repo}/actions/secrets\"],\n listRepoWorkflows: [\"GET /repos/{owner}/{repo}/actions/workflows\"],\n listRunnerApplicationsForOrg: [\"GET /orgs/{org}/actions/runners/downloads\"],\n listRunnerApplicationsForRepo: [\n \"GET /repos/{owner}/{repo}/actions/runners/downloads\",\n ],\n listSelectedReposForOrgSecret: [\n \"GET /orgs/{org}/actions/secrets/{secret_name}/repositories\",\n ],\n listSelectedRepositoriesEnabledGithubActionsOrganization: [\n \"GET /orgs/{org}/actions/permissions/repositories\",\n ],\n listSelfHostedRunnersForOrg: [\"GET /orgs/{org}/actions/runners\"],\n listSelfHostedRunnersForRepo: [\"GET /repos/{owner}/{repo}/actions/runners\"],\n listWorkflowRunArtifacts: [\n \"GET /repos/{owner}/{repo}/actions/runs/{run_id}/artifacts\",\n ],\n listWorkflowRuns: [\n \"GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/runs\",\n ],\n listWorkflowRunsForRepo: [\"GET /repos/{owner}/{repo}/actions/runs\"],\n reRunJobForWorkflowRun: [\n \"POST /repos/{owner}/{repo}/actions/jobs/{job_id}/rerun\",\n ],\n reRunWorkflow: [\"POST /repos/{owner}/{repo}/actions/runs/{run_id}/rerun\"],\n reRunWorkflowFailedJobs: [\n \"POST /repos/{owner}/{repo}/actions/runs/{run_id}/rerun-failed-jobs\",\n ],\n removeAllCustomLabelsFromSelfHostedRunnerForOrg: [\n \"DELETE /orgs/{org}/actions/runners/{runner_id}/labels\",\n ],\n removeAllCustomLabelsFromSelfHostedRunnerForRepo: [\n \"DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}/labels\",\n ],\n removeCustomLabelFromSelfHostedRunnerForOrg: [\n \"DELETE /orgs/{org}/actions/runners/{runner_id}/labels/{name}\",\n ],\n removeCustomLabelFromSelfHostedRunnerForRepo: [\n \"DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}/labels/{name}\",\n ],\n removeSelectedRepoFromOrgSecret: [\n \"DELETE /orgs/{org}/actions/secrets/{secret_name}/repositories/{repository_id}\",\n ],\n reviewPendingDeploymentsForRun: [\n \"POST /repos/{owner}/{repo}/actions/runs/{run_id}/pending_deployments\",\n ],\n setAllowedActionsOrganization: [\n \"PUT /orgs/{org}/actions/permissions/selected-actions\",\n ],\n setAllowedActionsRepository: [\n \"PUT /repos/{owner}/{repo}/actions/permissions/selected-actions\",\n ],\n setCustomLabelsForSelfHostedRunnerForOrg: [\n \"PUT /orgs/{org}/actions/runners/{runner_id}/labels\",\n ],\n setCustomLabelsForSelfHostedRunnerForRepo: [\n \"PUT /repos/{owner}/{repo}/actions/runners/{runner_id}/labels\",\n ],\n setGithubActionsDefaultWorkflowPermissionsEnterprise: [\n \"PUT /enterprises/{enterprise}/actions/permissions/workflow\",\n ],\n setGithubActionsDefaultWorkflowPermissionsOrganization: [\n \"PUT /orgs/{org}/actions/permissions/workflow\",\n ],\n setGithubActionsDefaultWorkflowPermissionsRepository: [\n \"PUT /repos/{owner}/{repo}/actions/permissions/workflow\",\n ],\n setGithubActionsPermissionsOrganization: [\n \"PUT /orgs/{org}/actions/permissions\",\n ],\n setGithubActionsPermissionsRepository: [\n \"PUT /repos/{owner}/{repo}/actions/permissions\",\n ],\n setSelectedReposForOrgSecret: [\n \"PUT /orgs/{org}/actions/secrets/{secret_name}/repositories\",\n ],\n setSelectedRepositoriesEnabledGithubActionsOrganization: [\n \"PUT /orgs/{org}/actions/permissions/repositories\",\n ],\n setWorkflowAccessToRepository: [\n \"PUT /repos/{owner}/{repo}/actions/permissions/access\",\n ],\n },\n activity: {\n checkRepoIsStarredByAuthenticatedUser: [\"GET /user/starred/{owner}/{repo}\"],\n deleteRepoSubscription: [\"DELETE /repos/{owner}/{repo}/subscription\"],\n deleteThreadSubscription: [\n \"DELETE /notifications/threads/{thread_id}/subscription\",\n ],\n getFeeds: [\"GET /feeds\"],\n getRepoSubscription: [\"GET /repos/{owner}/{repo}/subscription\"],\n getThread: [\"GET /notifications/threads/{thread_id}\"],\n getThreadSubscriptionForAuthenticatedUser: [\n \"GET /notifications/threads/{thread_id}/subscription\",\n ],\n listEventsForAuthenticatedUser: [\"GET /users/{username}/events\"],\n listNotificationsForAuthenticatedUser: [\"GET /notifications\"],\n listOrgEventsForAuthenticatedUser: [\n \"GET /users/{username}/events/orgs/{org}\",\n ],\n listPublicEvents: [\"GET /events\"],\n listPublicEventsForRepoNetwork: [\"GET /networks/{owner}/{repo}/events\"],\n listPublicEventsForUser: [\"GET /users/{username}/events/public\"],\n listPublicOrgEvents: [\"GET /orgs/{org}/events\"],\n listReceivedEventsForUser: [\"GET /users/{username}/received_events\"],\n listReceivedPublicEventsForUser: [\n \"GET /users/{username}/received_events/public\",\n ],\n listRepoEvents: [\"GET /repos/{owner}/{repo}/events\"],\n listRepoNotificationsForAuthenticatedUser: [\n \"GET /repos/{owner}/{repo}/notifications\",\n ],\n listReposStarredByAuthenticatedUser: [\"GET /user/starred\"],\n listReposStarredByUser: [\"GET /users/{username}/starred\"],\n listReposWatchedByUser: [\"GET /users/{username}/subscriptions\"],\n listStargazersForRepo: [\"GET /repos/{owner}/{repo}/stargazers\"],\n listWatchedReposForAuthenticatedUser: [\"GET /user/subscriptions\"],\n listWatchersForRepo: [\"GET /repos/{owner}/{repo}/subscribers\"],\n markNotificationsAsRead: [\"PUT /notifications\"],\n markRepoNotificationsAsRead: [\"PUT /repos/{owner}/{repo}/notifications\"],\n markThreadAsRead: [\"PATCH /notifications/threads/{thread_id}\"],\n setRepoSubscription: [\"PUT /repos/{owner}/{repo}/subscription\"],\n setThreadSubscription: [\n \"PUT /notifications/threads/{thread_id}/subscription\",\n ],\n starRepoForAuthenticatedUser: [\"PUT /user/starred/{owner}/{repo}\"],\n unstarRepoForAuthenticatedUser: [\"DELETE /user/starred/{owner}/{repo}\"],\n },\n apps: {\n addRepoToInstallation: [\n \"PUT /user/installations/{installation_id}/repositories/{repository_id}\",\n {},\n { renamed: [\"apps\", \"addRepoToInstallationForAuthenticatedUser\"] },\n ],\n addRepoToInstallationForAuthenticatedUser: [\n \"PUT /user/installations/{installation_id}/repositories/{repository_id}\",\n ],\n checkToken: [\"POST /applications/{client_id}/token\"],\n createFromManifest: [\"POST /app-manifests/{code}/conversions\"],\n createInstallationAccessToken: [\n \"POST /app/installations/{installation_id}/access_tokens\",\n ],\n deleteAuthorization: [\"DELETE /applications/{client_id}/grant\"],\n deleteInstallation: [\"DELETE /app/installations/{installation_id}\"],\n deleteToken: [\"DELETE /applications/{client_id}/token\"],\n getAuthenticated: [\"GET /app\"],\n getBySlug: [\"GET /apps/{app_slug}\"],\n getInstallation: [\"GET /app/installations/{installation_id}\"],\n getOrgInstallation: [\"GET /orgs/{org}/installation\"],\n getRepoInstallation: [\"GET /repos/{owner}/{repo}/installation\"],\n getSubscriptionPlanForAccount: [\n \"GET /marketplace_listing/accounts/{account_id}\",\n ],\n getSubscriptionPlanForAccountStubbed: [\n \"GET /marketplace_listing/stubbed/accounts/{account_id}\",\n ],\n getUserInstallation: [\"GET /users/{username}/installation\"],\n getWebhookConfigForApp: [\"GET /app/hook/config\"],\n getWebhookDelivery: [\"GET /app/hook/deliveries/{delivery_id}\"],\n listAccountsForPlan: [\"GET /marketplace_listing/plans/{plan_id}/accounts\"],\n listAccountsForPlanStubbed: [\n \"GET /marketplace_listing/stubbed/plans/{plan_id}/accounts\",\n ],\n listInstallationReposForAuthenticatedUser: [\n \"GET /user/installations/{installation_id}/repositories\",\n ],\n listInstallations: [\"GET /app/installations\"],\n listInstallationsForAuthenticatedUser: [\"GET /user/installations\"],\n listPlans: [\"GET /marketplace_listing/plans\"],\n listPlansStubbed: [\"GET /marketplace_listing/stubbed/plans\"],\n listReposAccessibleToInstallation: [\"GET /installation/repositories\"],\n listSubscriptionsForAuthenticatedUser: [\"GET /user/marketplace_purchases\"],\n listSubscriptionsForAuthenticatedUserStubbed: [\n \"GET /user/marketplace_purchases/stubbed\",\n ],\n listWebhookDeliveries: [\"GET /app/hook/deliveries\"],\n redeliverWebhookDelivery: [\n \"POST /app/hook/deliveries/{delivery_id}/attempts\",\n ],\n removeRepoFromInstallation: [\n \"DELETE /user/installations/{installation_id}/repositories/{repository_id}\",\n {},\n { renamed: [\"apps\", \"removeRepoFromInstallationForAuthenticatedUser\"] },\n ],\n removeRepoFromInstallationForAuthenticatedUser: [\n \"DELETE /user/installations/{installation_id}/repositories/{repository_id}\",\n ],\n resetToken: [\"PATCH /applications/{client_id}/token\"],\n revokeInstallationAccessToken: [\"DELETE /installation/token\"],\n scopeToken: [\"POST /applications/{client_id}/token/scoped\"],\n suspendInstallation: [\"PUT /app/installations/{installation_id}/suspended\"],\n unsuspendInstallation: [\n \"DELETE /app/installations/{installation_id}/suspended\",\n ],\n updateWebhookConfigForApp: [\"PATCH /app/hook/config\"],\n },\n billing: {\n getGithubActionsBillingOrg: [\"GET /orgs/{org}/settings/billing/actions\"],\n getGithubActionsBillingUser: [\n \"GET /users/{username}/settings/billing/actions\",\n ],\n getGithubAdvancedSecurityBillingGhe: [\n \"GET /enterprises/{enterprise}/settings/billing/advanced-security\",\n ],\n getGithubAdvancedSecurityBillingOrg: [\n \"GET /orgs/{org}/settings/billing/advanced-security\",\n ],\n getGithubPackagesBillingOrg: [\"GET /orgs/{org}/settings/billing/packages\"],\n getGithubPackagesBillingUser: [\n \"GET /users/{username}/settings/billing/packages\",\n ],\n getSharedStorageBillingOrg: [\n \"GET /orgs/{org}/settings/billing/shared-storage\",\n ],\n getSharedStorageBillingUser: [\n \"GET /users/{username}/settings/billing/shared-storage\",\n ],\n },\n checks: {\n create: [\"POST /repos/{owner}/{repo}/check-runs\"],\n createSuite: [\"POST /repos/{owner}/{repo}/check-suites\"],\n get: [\"GET /repos/{owner}/{repo}/check-runs/{check_run_id}\"],\n getSuite: [\"GET /repos/{owner}/{repo}/check-suites/{check_suite_id}\"],\n listAnnotations: [\n \"GET /repos/{owner}/{repo}/check-runs/{check_run_id}/annotations\",\n ],\n listForRef: [\"GET /repos/{owner}/{repo}/commits/{ref}/check-runs\"],\n listForSuite: [\n \"GET /repos/{owner}/{repo}/check-suites/{check_suite_id}/check-runs\",\n ],\n listSuitesForRef: [\"GET /repos/{owner}/{repo}/commits/{ref}/check-suites\"],\n rerequestRun: [\n \"POST /repos/{owner}/{repo}/check-runs/{check_run_id}/rerequest\",\n ],\n rerequestSuite: [\n \"POST /repos/{owner}/{repo}/check-suites/{check_suite_id}/rerequest\",\n ],\n setSuitesPreferences: [\n \"PATCH /repos/{owner}/{repo}/check-suites/preferences\",\n ],\n update: [\"PATCH /repos/{owner}/{repo}/check-runs/{check_run_id}\"],\n },\n codeScanning: {\n deleteAnalysis: [\n \"DELETE /repos/{owner}/{repo}/code-scanning/analyses/{analysis_id}{?confirm_delete}\",\n ],\n getAlert: [\n \"GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}\",\n {},\n { renamedParameters: { alert_id: \"alert_number\" } },\n ],\n getAnalysis: [\n \"GET /repos/{owner}/{repo}/code-scanning/analyses/{analysis_id}\",\n ],\n getSarif: [\"GET /repos/{owner}/{repo}/code-scanning/sarifs/{sarif_id}\"],\n listAlertInstances: [\n \"GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances\",\n ],\n listAlertsForOrg: [\"GET /orgs/{org}/code-scanning/alerts\"],\n listAlertsForRepo: [\"GET /repos/{owner}/{repo}/code-scanning/alerts\"],\n listAlertsInstances: [\n \"GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances\",\n {},\n { renamed: [\"codeScanning\", \"listAlertInstances\"] },\n ],\n listRecentAnalyses: [\"GET /repos/{owner}/{repo}/code-scanning/analyses\"],\n updateAlert: [\n \"PATCH /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}\",\n ],\n uploadSarif: [\"POST /repos/{owner}/{repo}/code-scanning/sarifs\"],\n },\n codesOfConduct: {\n getAllCodesOfConduct: [\"GET /codes_of_conduct\"],\n getConductCode: [\"GET /codes_of_conduct/{key}\"],\n },\n codespaces: {\n addRepositoryForSecretForAuthenticatedUser: [\n \"PUT /user/codespaces/secrets/{secret_name}/repositories/{repository_id}\",\n ],\n codespaceMachinesForAuthenticatedUser: [\n \"GET /user/codespaces/{codespace_name}/machines\",\n ],\n createForAuthenticatedUser: [\"POST /user/codespaces\"],\n createOrUpdateRepoSecret: [\n \"PUT /repos/{owner}/{repo}/codespaces/secrets/{secret_name}\",\n ],\n createOrUpdateSecretForAuthenticatedUser: [\n \"PUT /user/codespaces/secrets/{secret_name}\",\n ],\n createWithPrForAuthenticatedUser: [\n \"POST /repos/{owner}/{repo}/pulls/{pull_number}/codespaces\",\n ],\n createWithRepoForAuthenticatedUser: [\n \"POST /repos/{owner}/{repo}/codespaces\",\n ],\n deleteForAuthenticatedUser: [\"DELETE /user/codespaces/{codespace_name}\"],\n deleteFromOrganization: [\n \"DELETE /orgs/{org}/members/{username}/codespaces/{codespace_name}\",\n ],\n deleteRepoSecret: [\n \"DELETE /repos/{owner}/{repo}/codespaces/secrets/{secret_name}\",\n ],\n deleteSecretForAuthenticatedUser: [\n \"DELETE /user/codespaces/secrets/{secret_name}\",\n ],\n exportForAuthenticatedUser: [\n \"POST /user/codespaces/{codespace_name}/exports\",\n ],\n getExportDetailsForAuthenticatedUser: [\n \"GET /user/codespaces/{codespace_name}/exports/{export_id}\",\n ],\n getForAuthenticatedUser: [\"GET /user/codespaces/{codespace_name}\"],\n getPublicKeyForAuthenticatedUser: [\n \"GET /user/codespaces/secrets/public-key\",\n ],\n getRepoPublicKey: [\n \"GET /repos/{owner}/{repo}/codespaces/secrets/public-key\",\n ],\n getRepoSecret: [\n \"GET /repos/{owner}/{repo}/codespaces/secrets/{secret_name}\",\n ],\n getSecretForAuthenticatedUser: [\n \"GET /user/codespaces/secrets/{secret_name}\",\n ],\n listDevcontainersInRepositoryForAuthenticatedUser: [\n \"GET /repos/{owner}/{repo}/codespaces/devcontainers\",\n ],\n listForAuthenticatedUser: [\"GET /user/codespaces\"],\n listInOrganization: [\n \"GET /orgs/{org}/codespaces\",\n {},\n { renamedParameters: { org_id: \"org\" } },\n ],\n listInRepositoryForAuthenticatedUser: [\n \"GET /repos/{owner}/{repo}/codespaces\",\n ],\n listRepoSecrets: [\"GET /repos/{owner}/{repo}/codespaces/secrets\"],\n listRepositoriesForSecretForAuthenticatedUser: [\n \"GET /user/codespaces/secrets/{secret_name}/repositories\",\n ],\n listSecretsForAuthenticatedUser: [\"GET /user/codespaces/secrets\"],\n removeRepositoryForSecretForAuthenticatedUser: [\n \"DELETE /user/codespaces/secrets/{secret_name}/repositories/{repository_id}\",\n ],\n repoMachinesForAuthenticatedUser: [\n \"GET /repos/{owner}/{repo}/codespaces/machines\",\n ],\n setRepositoriesForSecretForAuthenticatedUser: [\n \"PUT /user/codespaces/secrets/{secret_name}/repositories\",\n ],\n startForAuthenticatedUser: [\"POST /user/codespaces/{codespace_name}/start\"],\n stopForAuthenticatedUser: [\"POST /user/codespaces/{codespace_name}/stop\"],\n stopInOrganization: [\n \"POST /orgs/{org}/members/{username}/codespaces/{codespace_name}/stop\",\n ],\n updateForAuthenticatedUser: [\"PATCH /user/codespaces/{codespace_name}\"],\n },\n dependabot: {\n addSelectedRepoToOrgSecret: [\n \"PUT /orgs/{org}/dependabot/secrets/{secret_name}/repositories/{repository_id}\",\n ],\n createOrUpdateOrgSecret: [\n \"PUT /orgs/{org}/dependabot/secrets/{secret_name}\",\n ],\n createOrUpdateRepoSecret: [\n \"PUT /repos/{owner}/{repo}/dependabot/secrets/{secret_name}\",\n ],\n deleteOrgSecret: [\"DELETE /orgs/{org}/dependabot/secrets/{secret_name}\"],\n deleteRepoSecret: [\n \"DELETE /repos/{owner}/{repo}/dependabot/secrets/{secret_name}\",\n ],\n getOrgPublicKey: [\"GET /orgs/{org}/dependabot/secrets/public-key\"],\n getOrgSecret: [\"GET /orgs/{org}/dependabot/secrets/{secret_name}\"],\n getRepoPublicKey: [\n \"GET /repos/{owner}/{repo}/dependabot/secrets/public-key\",\n ],\n getRepoSecret: [\n \"GET /repos/{owner}/{repo}/dependabot/secrets/{secret_name}\",\n ],\n listOrgSecrets: [\"GET /orgs/{org}/dependabot/secrets\"],\n listRepoSecrets: [\"GET /repos/{owner}/{repo}/dependabot/secrets\"],\n listSelectedReposForOrgSecret: [\n \"GET /orgs/{org}/dependabot/secrets/{secret_name}/repositories\",\n ],\n removeSelectedRepoFromOrgSecret: [\n \"DELETE /orgs/{org}/dependabot/secrets/{secret_name}/repositories/{repository_id}\",\n ],\n setSelectedReposForOrgSecret: [\n \"PUT /orgs/{org}/dependabot/secrets/{secret_name}/repositories\",\n ],\n },\n dependencyGraph: {\n createRepositorySnapshot: [\n \"POST /repos/{owner}/{repo}/dependency-graph/snapshots\",\n ],\n diffRange: [\n \"GET /repos/{owner}/{repo}/dependency-graph/compare/{basehead}\",\n ],\n },\n emojis: { get: [\"GET /emojis\"] },\n enterpriseAdmin: {\n addCustomLabelsToSelfHostedRunnerForEnterprise: [\n \"POST /enterprises/{enterprise}/actions/runners/{runner_id}/labels\",\n ],\n disableSelectedOrganizationGithubActionsEnterprise: [\n \"DELETE /enterprises/{enterprise}/actions/permissions/organizations/{org_id}\",\n ],\n enableSelectedOrganizationGithubActionsEnterprise: [\n \"PUT /enterprises/{enterprise}/actions/permissions/organizations/{org_id}\",\n ],\n getAllowedActionsEnterprise: [\n \"GET /enterprises/{enterprise}/actions/permissions/selected-actions\",\n ],\n getGithubActionsPermissionsEnterprise: [\n \"GET /enterprises/{enterprise}/actions/permissions\",\n ],\n getServerStatistics: [\n \"GET /enterprise-installation/{enterprise_or_org}/server-statistics\",\n ],\n listLabelsForSelfHostedRunnerForEnterprise: [\n \"GET /enterprises/{enterprise}/actions/runners/{runner_id}/labels\",\n ],\n listSelectedOrganizationsEnabledGithubActionsEnterprise: [\n \"GET /enterprises/{enterprise}/actions/permissions/organizations\",\n ],\n removeAllCustomLabelsFromSelfHostedRunnerForEnterprise: [\n \"DELETE /enterprises/{enterprise}/actions/runners/{runner_id}/labels\",\n ],\n removeCustomLabelFromSelfHostedRunnerForEnterprise: [\n \"DELETE /enterprises/{enterprise}/actions/runners/{runner_id}/labels/{name}\",\n ],\n setAllowedActionsEnterprise: [\n \"PUT /enterprises/{enterprise}/actions/permissions/selected-actions\",\n ],\n setCustomLabelsForSelfHostedRunnerForEnterprise: [\n \"PUT /enterprises/{enterprise}/actions/runners/{runner_id}/labels\",\n ],\n setGithubActionsPermissionsEnterprise: [\n \"PUT /enterprises/{enterprise}/actions/permissions\",\n ],\n setSelectedOrganizationsEnabledGithubActionsEnterprise: [\n \"PUT /enterprises/{enterprise}/actions/permissions/organizations\",\n ],\n },\n gists: {\n checkIsStarred: [\"GET /gists/{gist_id}/star\"],\n create: [\"POST /gists\"],\n createComment: [\"POST /gists/{gist_id}/comments\"],\n delete: [\"DELETE /gists/{gist_id}\"],\n deleteComment: [\"DELETE /gists/{gist_id}/comments/{comment_id}\"],\n fork: [\"POST /gists/{gist_id}/forks\"],\n get: [\"GET /gists/{gist_id}\"],\n getComment: [\"GET /gists/{gist_id}/comments/{comment_id}\"],\n getRevision: [\"GET /gists/{gist_id}/{sha}\"],\n list: [\"GET /gists\"],\n listComments: [\"GET /gists/{gist_id}/comments\"],\n listCommits: [\"GET /gists/{gist_id}/commits\"],\n listForUser: [\"GET /users/{username}/gists\"],\n listForks: [\"GET /gists/{gist_id}/forks\"],\n listPublic: [\"GET /gists/public\"],\n listStarred: [\"GET /gists/starred\"],\n star: [\"PUT /gists/{gist_id}/star\"],\n unstar: [\"DELETE /gists/{gist_id}/star\"],\n update: [\"PATCH /gists/{gist_id}\"],\n updateComment: [\"PATCH /gists/{gist_id}/comments/{comment_id}\"],\n },\n git: {\n createBlob: [\"POST /repos/{owner}/{repo}/git/blobs\"],\n createCommit: [\"POST /repos/{owner}/{repo}/git/commits\"],\n createRef: [\"POST /repos/{owner}/{repo}/git/refs\"],\n createTag: [\"POST /repos/{owner}/{repo}/git/tags\"],\n createTree: [\"POST /repos/{owner}/{repo}/git/trees\"],\n deleteRef: [\"DELETE /repos/{owner}/{repo}/git/refs/{ref}\"],\n getBlob: [\"GET /repos/{owner}/{repo}/git/blobs/{file_sha}\"],\n getCommit: [\"GET /repos/{owner}/{repo}/git/commits/{commit_sha}\"],\n getRef: [\"GET /repos/{owner}/{repo}/git/ref/{ref}\"],\n getTag: [\"GET /repos/{owner}/{repo}/git/tags/{tag_sha}\"],\n getTree: [\"GET /repos/{owner}/{repo}/git/trees/{tree_sha}\"],\n listMatchingRefs: [\"GET /repos/{owner}/{repo}/git/matching-refs/{ref}\"],\n updateRef: [\"PATCH /repos/{owner}/{repo}/git/refs/{ref}\"],\n },\n gitignore: {\n getAllTemplates: [\"GET /gitignore/templates\"],\n getTemplate: [\"GET /gitignore/templates/{name}\"],\n },\n interactions: {\n getRestrictionsForAuthenticatedUser: [\"GET /user/interaction-limits\"],\n getRestrictionsForOrg: [\"GET /orgs/{org}/interaction-limits\"],\n getRestrictionsForRepo: [\"GET /repos/{owner}/{repo}/interaction-limits\"],\n getRestrictionsForYourPublicRepos: [\n \"GET /user/interaction-limits\",\n {},\n { renamed: [\"interactions\", \"getRestrictionsForAuthenticatedUser\"] },\n ],\n removeRestrictionsForAuthenticatedUser: [\"DELETE /user/interaction-limits\"],\n removeRestrictionsForOrg: [\"DELETE /orgs/{org}/interaction-limits\"],\n removeRestrictionsForRepo: [\n \"DELETE /repos/{owner}/{repo}/interaction-limits\",\n ],\n removeRestrictionsForYourPublicRepos: [\n \"DELETE /user/interaction-limits\",\n {},\n { renamed: [\"interactions\", \"removeRestrictionsForAuthenticatedUser\"] },\n ],\n setRestrictionsForAuthenticatedUser: [\"PUT /user/interaction-limits\"],\n setRestrictionsForOrg: [\"PUT /orgs/{org}/interaction-limits\"],\n setRestrictionsForRepo: [\"PUT /repos/{owner}/{repo}/interaction-limits\"],\n setRestrictionsForYourPublicRepos: [\n \"PUT /user/interaction-limits\",\n {},\n { renamed: [\"interactions\", \"setRestrictionsForAuthenticatedUser\"] },\n ],\n },\n issues: {\n addAssignees: [\n \"POST /repos/{owner}/{repo}/issues/{issue_number}/assignees\",\n ],\n addLabels: [\"POST /repos/{owner}/{repo}/issues/{issue_number}/labels\"],\n checkUserCanBeAssigned: [\"GET /repos/{owner}/{repo}/assignees/{assignee}\"],\n create: [\"POST /repos/{owner}/{repo}/issues\"],\n createComment: [\n \"POST /repos/{owner}/{repo}/issues/{issue_number}/comments\",\n ],\n createLabel: [\"POST /repos/{owner}/{repo}/labels\"],\n createMilestone: [\"POST /repos/{owner}/{repo}/milestones\"],\n deleteComment: [\n \"DELETE /repos/{owner}/{repo}/issues/comments/{comment_id}\",\n ],\n deleteLabel: [\"DELETE /repos/{owner}/{repo}/labels/{name}\"],\n deleteMilestone: [\n \"DELETE /repos/{owner}/{repo}/milestones/{milestone_number}\",\n ],\n get: [\"GET /repos/{owner}/{repo}/issues/{issue_number}\"],\n getComment: [\"GET /repos/{owner}/{repo}/issues/comments/{comment_id}\"],\n getEvent: [\"GET /repos/{owner}/{repo}/issues/events/{event_id}\"],\n getLabel: [\"GET /repos/{owner}/{repo}/labels/{name}\"],\n getMilestone: [\"GET /repos/{owner}/{repo}/milestones/{milestone_number}\"],\n list: [\"GET /issues\"],\n listAssignees: [\"GET /repos/{owner}/{repo}/assignees\"],\n listComments: [\"GET /repos/{owner}/{repo}/issues/{issue_number}/comments\"],\n listCommentsForRepo: [\"GET /repos/{owner}/{repo}/issues/comments\"],\n listEvents: [\"GET /repos/{owner}/{repo}/issues/{issue_number}/events\"],\n listEventsForRepo: [\"GET /repos/{owner}/{repo}/issues/events\"],\n listEventsForTimeline: [\n \"GET /repos/{owner}/{repo}/issues/{issue_number}/timeline\",\n ],\n listForAuthenticatedUser: [\"GET /user/issues\"],\n listForOrg: [\"GET /orgs/{org}/issues\"],\n listForRepo: [\"GET /repos/{owner}/{repo}/issues\"],\n listLabelsForMilestone: [\n \"GET /repos/{owner}/{repo}/milestones/{milestone_number}/labels\",\n ],\n listLabelsForRepo: [\"GET /repos/{owner}/{repo}/labels\"],\n listLabelsOnIssue: [\n \"GET /repos/{owner}/{repo}/issues/{issue_number}/labels\",\n ],\n listMilestones: [\"GET /repos/{owner}/{repo}/milestones\"],\n lock: [\"PUT /repos/{owner}/{repo}/issues/{issue_number}/lock\"],\n removeAllLabels: [\n \"DELETE /repos/{owner}/{repo}/issues/{issue_number}/labels\",\n ],\n removeAssignees: [\n \"DELETE /repos/{owner}/{repo}/issues/{issue_number}/assignees\",\n ],\n removeLabel: [\n \"DELETE /repos/{owner}/{repo}/issues/{issue_number}/labels/{name}\",\n ],\n setLabels: [\"PUT /repos/{owner}/{repo}/issues/{issue_number}/labels\"],\n unlock: [\"DELETE /repos/{owner}/{repo}/issues/{issue_number}/lock\"],\n update: [\"PATCH /repos/{owner}/{repo}/issues/{issue_number}\"],\n updateComment: [\"PATCH /repos/{owner}/{repo}/issues/comments/{comment_id}\"],\n updateLabel: [\"PATCH /repos/{owner}/{repo}/labels/{name}\"],\n updateMilestone: [\n \"PATCH /repos/{owner}/{repo}/milestones/{milestone_number}\",\n ],\n },\n licenses: {\n get: [\"GET /licenses/{license}\"],\n getAllCommonlyUsed: [\"GET /licenses\"],\n getForRepo: [\"GET /repos/{owner}/{repo}/license\"],\n },\n markdown: {\n render: [\"POST /markdown\"],\n renderRaw: [\n \"POST /markdown/raw\",\n { headers: { \"content-type\": \"text/plain; charset=utf-8\" } },\n ],\n },\n meta: {\n get: [\"GET /meta\"],\n getOctocat: [\"GET /octocat\"],\n getZen: [\"GET /zen\"],\n root: [\"GET /\"],\n },\n migrations: {\n cancelImport: [\"DELETE /repos/{owner}/{repo}/import\"],\n deleteArchiveForAuthenticatedUser: [\n \"DELETE /user/migrations/{migration_id}/archive\",\n ],\n deleteArchiveForOrg: [\n \"DELETE /orgs/{org}/migrations/{migration_id}/archive\",\n ],\n downloadArchiveForOrg: [\n \"GET /orgs/{org}/migrations/{migration_id}/archive\",\n ],\n getArchiveForAuthenticatedUser: [\n \"GET /user/migrations/{migration_id}/archive\",\n ],\n getCommitAuthors: [\"GET /repos/{owner}/{repo}/import/authors\"],\n getImportStatus: [\"GET /repos/{owner}/{repo}/import\"],\n getLargeFiles: [\"GET /repos/{owner}/{repo}/import/large_files\"],\n getStatusForAuthenticatedUser: [\"GET /user/migrations/{migration_id}\"],\n getStatusForOrg: [\"GET /orgs/{org}/migrations/{migration_id}\"],\n listForAuthenticatedUser: [\"GET /user/migrations\"],\n listForOrg: [\"GET /orgs/{org}/migrations\"],\n listReposForAuthenticatedUser: [\n \"GET /user/migrations/{migration_id}/repositories\",\n ],\n listReposForOrg: [\"GET /orgs/{org}/migrations/{migration_id}/repositories\"],\n listReposForUser: [\n \"GET /user/migrations/{migration_id}/repositories\",\n {},\n { renamed: [\"migrations\", \"listReposForAuthenticatedUser\"] },\n ],\n mapCommitAuthor: [\"PATCH /repos/{owner}/{repo}/import/authors/{author_id}\"],\n setLfsPreference: [\"PATCH /repos/{owner}/{repo}/import/lfs\"],\n startForAuthenticatedUser: [\"POST /user/migrations\"],\n startForOrg: [\"POST /orgs/{org}/migrations\"],\n startImport: [\"PUT /repos/{owner}/{repo}/import\"],\n unlockRepoForAuthenticatedUser: [\n \"DELETE /user/migrations/{migration_id}/repos/{repo_name}/lock\",\n ],\n unlockRepoForOrg: [\n \"DELETE /orgs/{org}/migrations/{migration_id}/repos/{repo_name}/lock\",\n ],\n updateImport: [\"PATCH /repos/{owner}/{repo}/import\"],\n },\n orgs: {\n blockUser: [\"PUT /orgs/{org}/blocks/{username}\"],\n cancelInvitation: [\"DELETE /orgs/{org}/invitations/{invitation_id}\"],\n checkBlockedUser: [\"GET /orgs/{org}/blocks/{username}\"],\n checkMembershipForUser: [\"GET /orgs/{org}/members/{username}\"],\n checkPublicMembershipForUser: [\"GET /orgs/{org}/public_members/{username}\"],\n convertMemberToOutsideCollaborator: [\n \"PUT /orgs/{org}/outside_collaborators/{username}\",\n ],\n createInvitation: [\"POST /orgs/{org}/invitations\"],\n createWebhook: [\"POST /orgs/{org}/hooks\"],\n deleteWebhook: [\"DELETE /orgs/{org}/hooks/{hook_id}\"],\n get: [\"GET /orgs/{org}\"],\n getMembershipForAuthenticatedUser: [\"GET /user/memberships/orgs/{org}\"],\n getMembershipForUser: [\"GET /orgs/{org}/memberships/{username}\"],\n getWebhook: [\"GET /orgs/{org}/hooks/{hook_id}\"],\n getWebhookConfigForOrg: [\"GET /orgs/{org}/hooks/{hook_id}/config\"],\n getWebhookDelivery: [\n \"GET /orgs/{org}/hooks/{hook_id}/deliveries/{delivery_id}\",\n ],\n list: [\"GET /organizations\"],\n listAppInstallations: [\"GET /orgs/{org}/installations\"],\n listBlockedUsers: [\"GET /orgs/{org}/blocks\"],\n listCustomRoles: [\"GET /organizations/{organization_id}/custom_roles\"],\n listFailedInvitations: [\"GET /orgs/{org}/failed_invitations\"],\n listForAuthenticatedUser: [\"GET /user/orgs\"],\n listForUser: [\"GET /users/{username}/orgs\"],\n listInvitationTeams: [\"GET /orgs/{org}/invitations/{invitation_id}/teams\"],\n listMembers: [\"GET /orgs/{org}/members\"],\n listMembershipsForAuthenticatedUser: [\"GET /user/memberships/orgs\"],\n listOutsideCollaborators: [\"GET /orgs/{org}/outside_collaborators\"],\n listPendingInvitations: [\"GET /orgs/{org}/invitations\"],\n listPublicMembers: [\"GET /orgs/{org}/public_members\"],\n listWebhookDeliveries: [\"GET /orgs/{org}/hooks/{hook_id}/deliveries\"],\n listWebhooks: [\"GET /orgs/{org}/hooks\"],\n pingWebhook: [\"POST /orgs/{org}/hooks/{hook_id}/pings\"],\n redeliverWebhookDelivery: [\n \"POST /orgs/{org}/hooks/{hook_id}/deliveries/{delivery_id}/attempts\",\n ],\n removeMember: [\"DELETE /orgs/{org}/members/{username}\"],\n removeMembershipForUser: [\"DELETE /orgs/{org}/memberships/{username}\"],\n removeOutsideCollaborator: [\n \"DELETE /orgs/{org}/outside_collaborators/{username}\",\n ],\n removePublicMembershipForAuthenticatedUser: [\n \"DELETE /orgs/{org}/public_members/{username}\",\n ],\n setMembershipForUser: [\"PUT /orgs/{org}/memberships/{username}\"],\n setPublicMembershipForAuthenticatedUser: [\n \"PUT /orgs/{org}/public_members/{username}\",\n ],\n unblockUser: [\"DELETE /orgs/{org}/blocks/{username}\"],\n update: [\"PATCH /orgs/{org}\"],\n updateMembershipForAuthenticatedUser: [\n \"PATCH /user/memberships/orgs/{org}\",\n ],\n updateWebhook: [\"PATCH /orgs/{org}/hooks/{hook_id}\"],\n updateWebhookConfigForOrg: [\"PATCH /orgs/{org}/hooks/{hook_id}/config\"],\n },\n packages: {\n deletePackageForAuthenticatedUser: [\n \"DELETE /user/packages/{package_type}/{package_name}\",\n ],\n deletePackageForOrg: [\n \"DELETE /orgs/{org}/packages/{package_type}/{package_name}\",\n ],\n deletePackageForUser: [\n \"DELETE /users/{username}/packages/{package_type}/{package_name}\",\n ],\n deletePackageVersionForAuthenticatedUser: [\n \"DELETE /user/packages/{package_type}/{package_name}/versions/{package_version_id}\",\n ],\n deletePackageVersionForOrg: [\n \"DELETE /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}\",\n ],\n deletePackageVersionForUser: [\n \"DELETE /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}\",\n ],\n getAllPackageVersionsForAPackageOwnedByAnOrg: [\n \"GET /orgs/{org}/packages/{package_type}/{package_name}/versions\",\n {},\n { renamed: [\"packages\", \"getAllPackageVersionsForPackageOwnedByOrg\"] },\n ],\n getAllPackageVersionsForAPackageOwnedByTheAuthenticatedUser: [\n \"GET /user/packages/{package_type}/{package_name}/versions\",\n {},\n {\n renamed: [\n \"packages\",\n \"getAllPackageVersionsForPackageOwnedByAuthenticatedUser\",\n ],\n },\n ],\n getAllPackageVersionsForPackageOwnedByAuthenticatedUser: [\n \"GET /user/packages/{package_type}/{package_name}/versions\",\n ],\n getAllPackageVersionsForPackageOwnedByOrg: [\n \"GET /orgs/{org}/packages/{package_type}/{package_name}/versions\",\n ],\n getAllPackageVersionsForPackageOwnedByUser: [\n \"GET /users/{username}/packages/{package_type}/{package_name}/versions\",\n ],\n getPackageForAuthenticatedUser: [\n \"GET /user/packages/{package_type}/{package_name}\",\n ],\n getPackageForOrganization: [\n \"GET /orgs/{org}/packages/{package_type}/{package_name}\",\n ],\n getPackageForUser: [\n \"GET /users/{username}/packages/{package_type}/{package_name}\",\n ],\n getPackageVersionForAuthenticatedUser: [\n \"GET /user/packages/{package_type}/{package_name}/versions/{package_version_id}\",\n ],\n getPackageVersionForOrganization: [\n \"GET /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}\",\n ],\n getPackageVersionForUser: [\n \"GET /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}\",\n ],\n listPackagesForAuthenticatedUser: [\"GET /user/packages\"],\n listPackagesForOrganization: [\"GET /orgs/{org}/packages\"],\n listPackagesForUser: [\"GET /users/{username}/packages\"],\n restorePackageForAuthenticatedUser: [\n \"POST /user/packages/{package_type}/{package_name}/restore{?token}\",\n ],\n restorePackageForOrg: [\n \"POST /orgs/{org}/packages/{package_type}/{package_name}/restore{?token}\",\n ],\n restorePackageForUser: [\n \"POST /users/{username}/packages/{package_type}/{package_name}/restore{?token}\",\n ],\n restorePackageVersionForAuthenticatedUser: [\n \"POST /user/packages/{package_type}/{package_name}/versions/{package_version_id}/restore\",\n ],\n restorePackageVersionForOrg: [\n \"POST /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}/restore\",\n ],\n restorePackageVersionForUser: [\n \"POST /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}/restore\",\n ],\n },\n projects: {\n addCollaborator: [\"PUT /projects/{project_id}/collaborators/{username}\"],\n createCard: [\"POST /projects/columns/{column_id}/cards\"],\n createColumn: [\"POST /projects/{project_id}/columns\"],\n createForAuthenticatedUser: [\"POST /user/projects\"],\n createForOrg: [\"POST /orgs/{org}/projects\"],\n createForRepo: [\"POST /repos/{owner}/{repo}/projects\"],\n delete: [\"DELETE /projects/{project_id}\"],\n deleteCard: [\"DELETE /projects/columns/cards/{card_id}\"],\n deleteColumn: [\"DELETE /projects/columns/{column_id}\"],\n get: [\"GET /projects/{project_id}\"],\n getCard: [\"GET /projects/columns/cards/{card_id}\"],\n getColumn: [\"GET /projects/columns/{column_id}\"],\n getPermissionForUser: [\n \"GET /projects/{project_id}/collaborators/{username}/permission\",\n ],\n listCards: [\"GET /projects/columns/{column_id}/cards\"],\n listCollaborators: [\"GET /projects/{project_id}/collaborators\"],\n listColumns: [\"GET /projects/{project_id}/columns\"],\n listForOrg: [\"GET /orgs/{org}/projects\"],\n listForRepo: [\"GET /repos/{owner}/{repo}/projects\"],\n listForUser: [\"GET /users/{username}/projects\"],\n moveCard: [\"POST /projects/columns/cards/{card_id}/moves\"],\n moveColumn: [\"POST /projects/columns/{column_id}/moves\"],\n removeCollaborator: [\n \"DELETE /projects/{project_id}/collaborators/{username}\",\n ],\n update: [\"PATCH /projects/{project_id}\"],\n updateCard: [\"PATCH /projects/columns/cards/{card_id}\"],\n updateColumn: [\"PATCH /projects/columns/{column_id}\"],\n },\n pulls: {\n checkIfMerged: [\"GET /repos/{owner}/{repo}/pulls/{pull_number}/merge\"],\n create: [\"POST /repos/{owner}/{repo}/pulls\"],\n createReplyForReviewComment: [\n \"POST /repos/{owner}/{repo}/pulls/{pull_number}/comments/{comment_id}/replies\",\n ],\n createReview: [\"POST /repos/{owner}/{repo}/pulls/{pull_number}/reviews\"],\n createReviewComment: [\n \"POST /repos/{owner}/{repo}/pulls/{pull_number}/comments\",\n ],\n deletePendingReview: [\n \"DELETE /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}\",\n ],\n deleteReviewComment: [\n \"DELETE /repos/{owner}/{repo}/pulls/comments/{comment_id}\",\n ],\n dismissReview: [\n \"PUT /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/dismissals\",\n ],\n get: [\"GET /repos/{owner}/{repo}/pulls/{pull_number}\"],\n getReview: [\n \"GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}\",\n ],\n getReviewComment: [\"GET /repos/{owner}/{repo}/pulls/comments/{comment_id}\"],\n list: [\"GET /repos/{owner}/{repo}/pulls\"],\n listCommentsForReview: [\n \"GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/comments\",\n ],\n listCommits: [\"GET /repos/{owner}/{repo}/pulls/{pull_number}/commits\"],\n listFiles: [\"GET /repos/{owner}/{repo}/pulls/{pull_number}/files\"],\n listRequestedReviewers: [\n \"GET /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers\",\n ],\n listReviewComments: [\n \"GET /repos/{owner}/{repo}/pulls/{pull_number}/comments\",\n ],\n listReviewCommentsForRepo: [\"GET /repos/{owner}/{repo}/pulls/comments\"],\n listReviews: [\"GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews\"],\n merge: [\"PUT /repos/{owner}/{repo}/pulls/{pull_number}/merge\"],\n removeRequestedReviewers: [\n \"DELETE /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers\",\n ],\n requestReviewers: [\n \"POST /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers\",\n ],\n submitReview: [\n \"POST /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/events\",\n ],\n update: [\"PATCH /repos/{owner}/{repo}/pulls/{pull_number}\"],\n updateBranch: [\n \"PUT /repos/{owner}/{repo}/pulls/{pull_number}/update-branch\",\n ],\n updateReview: [\n \"PUT /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}\",\n ],\n updateReviewComment: [\n \"PATCH /repos/{owner}/{repo}/pulls/comments/{comment_id}\",\n ],\n },\n rateLimit: { get: [\"GET /rate_limit\"] },\n reactions: {\n createForCommitComment: [\n \"POST /repos/{owner}/{repo}/comments/{comment_id}/reactions\",\n ],\n createForIssue: [\n \"POST /repos/{owner}/{repo}/issues/{issue_number}/reactions\",\n ],\n createForIssueComment: [\n \"POST /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions\",\n ],\n createForPullRequestReviewComment: [\n \"POST /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions\",\n ],\n createForRelease: [\n \"POST /repos/{owner}/{repo}/releases/{release_id}/reactions\",\n ],\n createForTeamDiscussionCommentInOrg: [\n \"POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions\",\n ],\n createForTeamDiscussionInOrg: [\n \"POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions\",\n ],\n deleteForCommitComment: [\n \"DELETE /repos/{owner}/{repo}/comments/{comment_id}/reactions/{reaction_id}\",\n ],\n deleteForIssue: [\n \"DELETE /repos/{owner}/{repo}/issues/{issue_number}/reactions/{reaction_id}\",\n ],\n deleteForIssueComment: [\n \"DELETE /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions/{reaction_id}\",\n ],\n deleteForPullRequestComment: [\n \"DELETE /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions/{reaction_id}\",\n ],\n deleteForRelease: [\n \"DELETE /repos/{owner}/{repo}/releases/{release_id}/reactions/{reaction_id}\",\n ],\n deleteForTeamDiscussion: [\n \"DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions/{reaction_id}\",\n ],\n deleteForTeamDiscussionComment: [\n \"DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions/{reaction_id}\",\n ],\n listForCommitComment: [\n \"GET /repos/{owner}/{repo}/comments/{comment_id}/reactions\",\n ],\n listForIssue: [\"GET /repos/{owner}/{repo}/issues/{issue_number}/reactions\"],\n listForIssueComment: [\n \"GET /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions\",\n ],\n listForPullRequestReviewComment: [\n \"GET /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions\",\n ],\n listForRelease: [\n \"GET /repos/{owner}/{repo}/releases/{release_id}/reactions\",\n ],\n listForTeamDiscussionCommentInOrg: [\n \"GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions\",\n ],\n listForTeamDiscussionInOrg: [\n \"GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions\",\n ],\n },\n repos: {\n acceptInvitation: [\n \"PATCH /user/repository_invitations/{invitation_id}\",\n {},\n { renamed: [\"repos\", \"acceptInvitationForAuthenticatedUser\"] },\n ],\n acceptInvitationForAuthenticatedUser: [\n \"PATCH /user/repository_invitations/{invitation_id}\",\n ],\n addAppAccessRestrictions: [\n \"POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps\",\n {},\n { mapToData: \"apps\" },\n ],\n addCollaborator: [\"PUT /repos/{owner}/{repo}/collaborators/{username}\"],\n addStatusCheckContexts: [\n \"POST /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts\",\n {},\n { mapToData: \"contexts\" },\n ],\n addTeamAccessRestrictions: [\n \"POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams\",\n {},\n { mapToData: \"teams\" },\n ],\n addUserAccessRestrictions: [\n \"POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users\",\n {},\n { mapToData: \"users\" },\n ],\n checkCollaborator: [\"GET /repos/{owner}/{repo}/collaborators/{username}\"],\n checkVulnerabilityAlerts: [\n \"GET /repos/{owner}/{repo}/vulnerability-alerts\",\n ],\n codeownersErrors: [\"GET /repos/{owner}/{repo}/codeowners/errors\"],\n compareCommits: [\"GET /repos/{owner}/{repo}/compare/{base}...{head}\"],\n compareCommitsWithBasehead: [\n \"GET /repos/{owner}/{repo}/compare/{basehead}\",\n ],\n createAutolink: [\"POST /repos/{owner}/{repo}/autolinks\"],\n createCommitComment: [\n \"POST /repos/{owner}/{repo}/commits/{commit_sha}/comments\",\n ],\n createCommitSignatureProtection: [\n \"POST /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures\",\n ],\n createCommitStatus: [\"POST /repos/{owner}/{repo}/statuses/{sha}\"],\n createDeployKey: [\"POST /repos/{owner}/{repo}/keys\"],\n createDeployment: [\"POST /repos/{owner}/{repo}/deployments\"],\n createDeploymentStatus: [\n \"POST /repos/{owner}/{repo}/deployments/{deployment_id}/statuses\",\n ],\n createDispatchEvent: [\"POST /repos/{owner}/{repo}/dispatches\"],\n createForAuthenticatedUser: [\"POST /user/repos\"],\n createFork: [\"POST /repos/{owner}/{repo}/forks\"],\n createInOrg: [\"POST /orgs/{org}/repos\"],\n createOrUpdateEnvironment: [\n \"PUT /repos/{owner}/{repo}/environments/{environment_name}\",\n ],\n createOrUpdateFileContents: [\"PUT /repos/{owner}/{repo}/contents/{path}\"],\n createPagesSite: [\"POST /repos/{owner}/{repo}/pages\"],\n createRelease: [\"POST /repos/{owner}/{repo}/releases\"],\n createTagProtection: [\"POST /repos/{owner}/{repo}/tags/protection\"],\n createUsingTemplate: [\n \"POST /repos/{template_owner}/{template_repo}/generate\",\n ],\n createWebhook: [\"POST /repos/{owner}/{repo}/hooks\"],\n declineInvitation: [\n \"DELETE /user/repository_invitations/{invitation_id}\",\n {},\n { renamed: [\"repos\", \"declineInvitationForAuthenticatedUser\"] },\n ],\n declineInvitationForAuthenticatedUser: [\n \"DELETE /user/repository_invitations/{invitation_id}\",\n ],\n delete: [\"DELETE /repos/{owner}/{repo}\"],\n deleteAccessRestrictions: [\n \"DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions\",\n ],\n deleteAdminBranchProtection: [\n \"DELETE /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins\",\n ],\n deleteAnEnvironment: [\n \"DELETE /repos/{owner}/{repo}/environments/{environment_name}\",\n ],\n deleteAutolink: [\"DELETE /repos/{owner}/{repo}/autolinks/{autolink_id}\"],\n deleteBranchProtection: [\n \"DELETE /repos/{owner}/{repo}/branches/{branch}/protection\",\n ],\n deleteCommitComment: [\"DELETE /repos/{owner}/{repo}/comments/{comment_id}\"],\n deleteCommitSignatureProtection: [\n \"DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures\",\n ],\n deleteDeployKey: [\"DELETE /repos/{owner}/{repo}/keys/{key_id}\"],\n deleteDeployment: [\n \"DELETE /repos/{owner}/{repo}/deployments/{deployment_id}\",\n ],\n deleteFile: [\"DELETE /repos/{owner}/{repo}/contents/{path}\"],\n deleteInvitation: [\n \"DELETE /repos/{owner}/{repo}/invitations/{invitation_id}\",\n ],\n deletePagesSite: [\"DELETE /repos/{owner}/{repo}/pages\"],\n deletePullRequestReviewProtection: [\n \"DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews\",\n ],\n deleteRelease: [\"DELETE /repos/{owner}/{repo}/releases/{release_id}\"],\n deleteReleaseAsset: [\n \"DELETE /repos/{owner}/{repo}/releases/assets/{asset_id}\",\n ],\n deleteTagProtection: [\n \"DELETE /repos/{owner}/{repo}/tags/protection/{tag_protection_id}\",\n ],\n deleteWebhook: [\"DELETE /repos/{owner}/{repo}/hooks/{hook_id}\"],\n disableAutomatedSecurityFixes: [\n \"DELETE /repos/{owner}/{repo}/automated-security-fixes\",\n ],\n disableLfsForRepo: [\"DELETE /repos/{owner}/{repo}/lfs\"],\n disableVulnerabilityAlerts: [\n \"DELETE /repos/{owner}/{repo}/vulnerability-alerts\",\n ],\n downloadArchive: [\n \"GET /repos/{owner}/{repo}/zipball/{ref}\",\n {},\n { renamed: [\"repos\", \"downloadZipballArchive\"] },\n ],\n downloadTarballArchive: [\"GET /repos/{owner}/{repo}/tarball/{ref}\"],\n downloadZipballArchive: [\"GET /repos/{owner}/{repo}/zipball/{ref}\"],\n enableAutomatedSecurityFixes: [\n \"PUT /repos/{owner}/{repo}/automated-security-fixes\",\n ],\n enableLfsForRepo: [\"PUT /repos/{owner}/{repo}/lfs\"],\n enableVulnerabilityAlerts: [\n \"PUT /repos/{owner}/{repo}/vulnerability-alerts\",\n ],\n generateReleaseNotes: [\n \"POST /repos/{owner}/{repo}/releases/generate-notes\",\n ],\n get: [\"GET /repos/{owner}/{repo}\"],\n getAccessRestrictions: [\n \"GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions\",\n ],\n getAdminBranchProtection: [\n \"GET /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins\",\n ],\n getAllEnvironments: [\"GET /repos/{owner}/{repo}/environments\"],\n getAllStatusCheckContexts: [\n \"GET /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts\",\n ],\n getAllTopics: [\"GET /repos/{owner}/{repo}/topics\"],\n getAppsWithAccessToProtectedBranch: [\n \"GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps\",\n ],\n getAutolink: [\"GET /repos/{owner}/{repo}/autolinks/{autolink_id}\"],\n getBranch: [\"GET /repos/{owner}/{repo}/branches/{branch}\"],\n getBranchProtection: [\n \"GET /repos/{owner}/{repo}/branches/{branch}/protection\",\n ],\n getClones: [\"GET /repos/{owner}/{repo}/traffic/clones\"],\n getCodeFrequencyStats: [\"GET /repos/{owner}/{repo}/stats/code_frequency\"],\n getCollaboratorPermissionLevel: [\n \"GET /repos/{owner}/{repo}/collaborators/{username}/permission\",\n ],\n getCombinedStatusForRef: [\"GET /repos/{owner}/{repo}/commits/{ref}/status\"],\n getCommit: [\"GET /repos/{owner}/{repo}/commits/{ref}\"],\n getCommitActivityStats: [\"GET /repos/{owner}/{repo}/stats/commit_activity\"],\n getCommitComment: [\"GET /repos/{owner}/{repo}/comments/{comment_id}\"],\n getCommitSignatureProtection: [\n \"GET /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures\",\n ],\n getCommunityProfileMetrics: [\"GET /repos/{owner}/{repo}/community/profile\"],\n getContent: [\"GET /repos/{owner}/{repo}/contents/{path}\"],\n getContributorsStats: [\"GET /repos/{owner}/{repo}/stats/contributors\"],\n getDeployKey: [\"GET /repos/{owner}/{repo}/keys/{key_id}\"],\n getDeployment: [\"GET /repos/{owner}/{repo}/deployments/{deployment_id}\"],\n getDeploymentStatus: [\n \"GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses/{status_id}\",\n ],\n getEnvironment: [\n \"GET /repos/{owner}/{repo}/environments/{environment_name}\",\n ],\n getLatestPagesBuild: [\"GET /repos/{owner}/{repo}/pages/builds/latest\"],\n getLatestRelease: [\"GET /repos/{owner}/{repo}/releases/latest\"],\n getPages: [\"GET /repos/{owner}/{repo}/pages\"],\n getPagesBuild: [\"GET /repos/{owner}/{repo}/pages/builds/{build_id}\"],\n getPagesHealthCheck: [\"GET /repos/{owner}/{repo}/pages/health\"],\n getParticipationStats: [\"GET /repos/{owner}/{repo}/stats/participation\"],\n getPullRequestReviewProtection: [\n \"GET /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews\",\n ],\n getPunchCardStats: [\"GET /repos/{owner}/{repo}/stats/punch_card\"],\n getReadme: [\"GET /repos/{owner}/{repo}/readme\"],\n getReadmeInDirectory: [\"GET /repos/{owner}/{repo}/readme/{dir}\"],\n getRelease: [\"GET /repos/{owner}/{repo}/releases/{release_id}\"],\n getReleaseAsset: [\"GET /repos/{owner}/{repo}/releases/assets/{asset_id}\"],\n getReleaseByTag: [\"GET /repos/{owner}/{repo}/releases/tags/{tag}\"],\n getStatusChecksProtection: [\n \"GET /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks\",\n ],\n getTeamsWithAccessToProtectedBranch: [\n \"GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams\",\n ],\n getTopPaths: [\"GET /repos/{owner}/{repo}/traffic/popular/paths\"],\n getTopReferrers: [\"GET /repos/{owner}/{repo}/traffic/popular/referrers\"],\n getUsersWithAccessToProtectedBranch: [\n \"GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users\",\n ],\n getViews: [\"GET /repos/{owner}/{repo}/traffic/views\"],\n getWebhook: [\"GET /repos/{owner}/{repo}/hooks/{hook_id}\"],\n getWebhookConfigForRepo: [\n \"GET /repos/{owner}/{repo}/hooks/{hook_id}/config\",\n ],\n getWebhookDelivery: [\n \"GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries/{delivery_id}\",\n ],\n listAutolinks: [\"GET /repos/{owner}/{repo}/autolinks\"],\n listBranches: [\"GET /repos/{owner}/{repo}/branches\"],\n listBranchesForHeadCommit: [\n \"GET /repos/{owner}/{repo}/commits/{commit_sha}/branches-where-head\",\n ],\n listCollaborators: [\"GET /repos/{owner}/{repo}/collaborators\"],\n listCommentsForCommit: [\n \"GET /repos/{owner}/{repo}/commits/{commit_sha}/comments\",\n ],\n listCommitCommentsForRepo: [\"GET /repos/{owner}/{repo}/comments\"],\n listCommitStatusesForRef: [\n \"GET /repos/{owner}/{repo}/commits/{ref}/statuses\",\n ],\n listCommits: [\"GET /repos/{owner}/{repo}/commits\"],\n listContributors: [\"GET /repos/{owner}/{repo}/contributors\"],\n listDeployKeys: [\"GET /repos/{owner}/{repo}/keys\"],\n listDeploymentStatuses: [\n \"GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses\",\n ],\n listDeployments: [\"GET /repos/{owner}/{repo}/deployments\"],\n listForAuthenticatedUser: [\"GET /user/repos\"],\n listForOrg: [\"GET /orgs/{org}/repos\"],\n listForUser: [\"GET /users/{username}/repos\"],\n listForks: [\"GET /repos/{owner}/{repo}/forks\"],\n listInvitations: [\"GET /repos/{owner}/{repo}/invitations\"],\n listInvitationsForAuthenticatedUser: [\"GET /user/repository_invitations\"],\n listLanguages: [\"GET /repos/{owner}/{repo}/languages\"],\n listPagesBuilds: [\"GET /repos/{owner}/{repo}/pages/builds\"],\n listPublic: [\"GET /repositories\"],\n listPullRequestsAssociatedWithCommit: [\n \"GET /repos/{owner}/{repo}/commits/{commit_sha}/pulls\",\n ],\n listReleaseAssets: [\n \"GET /repos/{owner}/{repo}/releases/{release_id}/assets\",\n ],\n listReleases: [\"GET /repos/{owner}/{repo}/releases\"],\n listTagProtection: [\"GET /repos/{owner}/{repo}/tags/protection\"],\n listTags: [\"GET /repos/{owner}/{repo}/tags\"],\n listTeams: [\"GET /repos/{owner}/{repo}/teams\"],\n listWebhookDeliveries: [\n \"GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries\",\n ],\n listWebhooks: [\"GET /repos/{owner}/{repo}/hooks\"],\n merge: [\"POST /repos/{owner}/{repo}/merges\"],\n mergeUpstream: [\"POST /repos/{owner}/{repo}/merge-upstream\"],\n pingWebhook: [\"POST /repos/{owner}/{repo}/hooks/{hook_id}/pings\"],\n redeliverWebhookDelivery: [\n \"POST /repos/{owner}/{repo}/hooks/{hook_id}/deliveries/{delivery_id}/attempts\",\n ],\n removeAppAccessRestrictions: [\n \"DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps\",\n {},\n { mapToData: \"apps\" },\n ],\n removeCollaborator: [\n \"DELETE /repos/{owner}/{repo}/collaborators/{username}\",\n ],\n removeStatusCheckContexts: [\n \"DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts\",\n {},\n { mapToData: \"contexts\" },\n ],\n removeStatusCheckProtection: [\n \"DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks\",\n ],\n removeTeamAccessRestrictions: [\n \"DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams\",\n {},\n { mapToData: \"teams\" },\n ],\n removeUserAccessRestrictions: [\n \"DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users\",\n {},\n { mapToData: \"users\" },\n ],\n renameBranch: [\"POST /repos/{owner}/{repo}/branches/{branch}/rename\"],\n replaceAllTopics: [\"PUT /repos/{owner}/{repo}/topics\"],\n requestPagesBuild: [\"POST /repos/{owner}/{repo}/pages/builds\"],\n setAdminBranchProtection: [\n \"POST /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins\",\n ],\n setAppAccessRestrictions: [\n \"PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps\",\n {},\n { mapToData: \"apps\" },\n ],\n setStatusCheckContexts: [\n \"PUT /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts\",\n {},\n { mapToData: \"contexts\" },\n ],\n setTeamAccessRestrictions: [\n \"PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams\",\n {},\n { mapToData: \"teams\" },\n ],\n setUserAccessRestrictions: [\n \"PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users\",\n {},\n { mapToData: \"users\" },\n ],\n testPushWebhook: [\"POST /repos/{owner}/{repo}/hooks/{hook_id}/tests\"],\n transfer: [\"POST /repos/{owner}/{repo}/transfer\"],\n update: [\"PATCH /repos/{owner}/{repo}\"],\n updateBranchProtection: [\n \"PUT /repos/{owner}/{repo}/branches/{branch}/protection\",\n ],\n updateCommitComment: [\"PATCH /repos/{owner}/{repo}/comments/{comment_id}\"],\n updateInformationAboutPagesSite: [\"PUT /repos/{owner}/{repo}/pages\"],\n updateInvitation: [\n \"PATCH /repos/{owner}/{repo}/invitations/{invitation_id}\",\n ],\n updatePullRequestReviewProtection: [\n \"PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews\",\n ],\n updateRelease: [\"PATCH /repos/{owner}/{repo}/releases/{release_id}\"],\n updateReleaseAsset: [\n \"PATCH /repos/{owner}/{repo}/releases/assets/{asset_id}\",\n ],\n updateStatusCheckPotection: [\n \"PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks\",\n {},\n { renamed: [\"repos\", \"updateStatusCheckProtection\"] },\n ],\n updateStatusCheckProtection: [\n \"PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks\",\n ],\n updateWebhook: [\"PATCH /repos/{owner}/{repo}/hooks/{hook_id}\"],\n updateWebhookConfigForRepo: [\n \"PATCH /repos/{owner}/{repo}/hooks/{hook_id}/config\",\n ],\n uploadReleaseAsset: [\n \"POST /repos/{owner}/{repo}/releases/{release_id}/assets{?name,label}\",\n { baseUrl: \"https://uploads.github.com\" },\n ],\n },\n search: {\n code: [\"GET /search/code\"],\n commits: [\"GET /search/commits\"],\n issuesAndPullRequests: [\"GET /search/issues\"],\n labels: [\"GET /search/labels\"],\n repos: [\"GET /search/repositories\"],\n topics: [\"GET /search/topics\"],\n users: [\"GET /search/users\"],\n },\n secretScanning: {\n getAlert: [\n \"GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}\",\n ],\n listAlertsForEnterprise: [\n \"GET /enterprises/{enterprise}/secret-scanning/alerts\",\n ],\n listAlertsForOrg: [\"GET /orgs/{org}/secret-scanning/alerts\"],\n listAlertsForRepo: [\"GET /repos/{owner}/{repo}/secret-scanning/alerts\"],\n listLocationsForAlert: [\n \"GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}/locations\",\n ],\n updateAlert: [\n \"PATCH /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}\",\n ],\n },\n teams: {\n addOrUpdateMembershipForUserInOrg: [\n \"PUT /orgs/{org}/teams/{team_slug}/memberships/{username}\",\n ],\n addOrUpdateProjectPermissionsInOrg: [\n \"PUT /orgs/{org}/teams/{team_slug}/projects/{project_id}\",\n ],\n addOrUpdateRepoPermissionsInOrg: [\n \"PUT /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}\",\n ],\n checkPermissionsForProjectInOrg: [\n \"GET /orgs/{org}/teams/{team_slug}/projects/{project_id}\",\n ],\n checkPermissionsForRepoInOrg: [\n \"GET /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}\",\n ],\n create: [\"POST /orgs/{org}/teams\"],\n createDiscussionCommentInOrg: [\n \"POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments\",\n ],\n createDiscussionInOrg: [\"POST /orgs/{org}/teams/{team_slug}/discussions\"],\n deleteDiscussionCommentInOrg: [\n \"DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}\",\n ],\n deleteDiscussionInOrg: [\n \"DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}\",\n ],\n deleteInOrg: [\"DELETE /orgs/{org}/teams/{team_slug}\"],\n getByName: [\"GET /orgs/{org}/teams/{team_slug}\"],\n getDiscussionCommentInOrg: [\n \"GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}\",\n ],\n getDiscussionInOrg: [\n \"GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}\",\n ],\n getMembershipForUserInOrg: [\n \"GET /orgs/{org}/teams/{team_slug}/memberships/{username}\",\n ],\n list: [\"GET /orgs/{org}/teams\"],\n listChildInOrg: [\"GET /orgs/{org}/teams/{team_slug}/teams\"],\n listDiscussionCommentsInOrg: [\n \"GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments\",\n ],\n listDiscussionsInOrg: [\"GET /orgs/{org}/teams/{team_slug}/discussions\"],\n listForAuthenticatedUser: [\"GET /user/teams\"],\n listMembersInOrg: [\"GET /orgs/{org}/teams/{team_slug}/members\"],\n listPendingInvitationsInOrg: [\n \"GET /orgs/{org}/teams/{team_slug}/invitations\",\n ],\n listProjectsInOrg: [\"GET /orgs/{org}/teams/{team_slug}/projects\"],\n listReposInOrg: [\"GET /orgs/{org}/teams/{team_slug}/repos\"],\n removeMembershipForUserInOrg: [\n \"DELETE /orgs/{org}/teams/{team_slug}/memberships/{username}\",\n ],\n removeProjectInOrg: [\n \"DELETE /orgs/{org}/teams/{team_slug}/projects/{project_id}\",\n ],\n removeRepoInOrg: [\n \"DELETE /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}\",\n ],\n updateDiscussionCommentInOrg: [\n \"PATCH /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}\",\n ],\n updateDiscussionInOrg: [\n \"PATCH /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}\",\n ],\n updateInOrg: [\"PATCH /orgs/{org}/teams/{team_slug}\"],\n },\n users: {\n addEmailForAuthenticated: [\n \"POST /user/emails\",\n {},\n { renamed: [\"users\", \"addEmailForAuthenticatedUser\"] },\n ],\n addEmailForAuthenticatedUser: [\"POST /user/emails\"],\n block: [\"PUT /user/blocks/{username}\"],\n checkBlocked: [\"GET /user/blocks/{username}\"],\n checkFollowingForUser: [\"GET /users/{username}/following/{target_user}\"],\n checkPersonIsFollowedByAuthenticated: [\"GET /user/following/{username}\"],\n createGpgKeyForAuthenticated: [\n \"POST /user/gpg_keys\",\n {},\n { renamed: [\"users\", \"createGpgKeyForAuthenticatedUser\"] },\n ],\n createGpgKeyForAuthenticatedUser: [\"POST /user/gpg_keys\"],\n createPublicSshKeyForAuthenticated: [\n \"POST /user/keys\",\n {},\n { renamed: [\"users\", \"createPublicSshKeyForAuthenticatedUser\"] },\n ],\n createPublicSshKeyForAuthenticatedUser: [\"POST /user/keys\"],\n deleteEmailForAuthenticated: [\n \"DELETE /user/emails\",\n {},\n { renamed: [\"users\", \"deleteEmailForAuthenticatedUser\"] },\n ],\n deleteEmailForAuthenticatedUser: [\"DELETE /user/emails\"],\n deleteGpgKeyForAuthenticated: [\n \"DELETE /user/gpg_keys/{gpg_key_id}\",\n {},\n { renamed: [\"users\", \"deleteGpgKeyForAuthenticatedUser\"] },\n ],\n deleteGpgKeyForAuthenticatedUser: [\"DELETE /user/gpg_keys/{gpg_key_id}\"],\n deletePublicSshKeyForAuthenticated: [\n \"DELETE /user/keys/{key_id}\",\n {},\n { renamed: [\"users\", \"deletePublicSshKeyForAuthenticatedUser\"] },\n ],\n deletePublicSshKeyForAuthenticatedUser: [\"DELETE /user/keys/{key_id}\"],\n follow: [\"PUT /user/following/{username}\"],\n getAuthenticated: [\"GET /user\"],\n getByUsername: [\"GET /users/{username}\"],\n getContextForUser: [\"GET /users/{username}/hovercard\"],\n getGpgKeyForAuthenticated: [\n \"GET /user/gpg_keys/{gpg_key_id}\",\n {},\n { renamed: [\"users\", \"getGpgKeyForAuthenticatedUser\"] },\n ],\n getGpgKeyForAuthenticatedUser: [\"GET /user/gpg_keys/{gpg_key_id}\"],\n getPublicSshKeyForAuthenticated: [\n \"GET /user/keys/{key_id}\",\n {},\n { renamed: [\"users\", \"getPublicSshKeyForAuthenticatedUser\"] },\n ],\n getPublicSshKeyForAuthenticatedUser: [\"GET /user/keys/{key_id}\"],\n list: [\"GET /users\"],\n listBlockedByAuthenticated: [\n \"GET /user/blocks\",\n {},\n { renamed: [\"users\", \"listBlockedByAuthenticatedUser\"] },\n ],\n listBlockedByAuthenticatedUser: [\"GET /user/blocks\"],\n listEmailsForAuthenticated: [\n \"GET /user/emails\",\n {},\n { renamed: [\"users\", \"listEmailsForAuthenticatedUser\"] },\n ],\n listEmailsForAuthenticatedUser: [\"GET /user/emails\"],\n listFollowedByAuthenticated: [\n \"GET /user/following\",\n {},\n { renamed: [\"users\", \"listFollowedByAuthenticatedUser\"] },\n ],\n listFollowedByAuthenticatedUser: [\"GET /user/following\"],\n listFollowersForAuthenticatedUser: [\"GET /user/followers\"],\n listFollowersForUser: [\"GET /users/{username}/followers\"],\n listFollowingForUser: [\"GET /users/{username}/following\"],\n listGpgKeysForAuthenticated: [\n \"GET /user/gpg_keys\",\n {},\n { renamed: [\"users\", \"listGpgKeysForAuthenticatedUser\"] },\n ],\n listGpgKeysForAuthenticatedUser: [\"GET /user/gpg_keys\"],\n listGpgKeysForUser: [\"GET /users/{username}/gpg_keys\"],\n listPublicEmailsForAuthenticated: [\n \"GET /user/public_emails\",\n {},\n { renamed: [\"users\", \"listPublicEmailsForAuthenticatedUser\"] },\n ],\n listPublicEmailsForAuthenticatedUser: [\"GET /user/public_emails\"],\n listPublicKeysForUser: [\"GET /users/{username}/keys\"],\n listPublicSshKeysForAuthenticated: [\n \"GET /user/keys\",\n {},\n { renamed: [\"users\", \"listPublicSshKeysForAuthenticatedUser\"] },\n ],\n listPublicSshKeysForAuthenticatedUser: [\"GET /user/keys\"],\n setPrimaryEmailVisibilityForAuthenticated: [\n \"PATCH /user/email/visibility\",\n {},\n { renamed: [\"users\", \"setPrimaryEmailVisibilityForAuthenticatedUser\"] },\n ],\n setPrimaryEmailVisibilityForAuthenticatedUser: [\n \"PATCH /user/email/visibility\",\n ],\n unblock: [\"DELETE /user/blocks/{username}\"],\n unfollow: [\"DELETE /user/following/{username}\"],\n updateAuthenticated: [\"PATCH /user\"],\n },\n};\nexport default Endpoints;\n", "export const VERSION = \"5.16.2\";\n", "export function endpointsToMethods(octokit, endpointsMap) {\n const newMethods = {};\n for (const [scope, endpoints] of Object.entries(endpointsMap)) {\n for (const [methodName, endpoint] of Object.entries(endpoints)) {\n const [route, defaults, decorations] = endpoint;\n const [method, url] = route.split(/ /);\n const endpointDefaults = Object.assign({ method, url }, defaults);\n if (!newMethods[scope]) {\n newMethods[scope] = {};\n }\n const scopeMethods = newMethods[scope];\n if (decorations) {\n scopeMethods[methodName] = decorate(octokit, scope, methodName, endpointDefaults, decorations);\n continue;\n }\n scopeMethods[methodName] = octokit.request.defaults(endpointDefaults);\n }\n }\n return newMethods;\n}\nfunction decorate(octokit, scope, methodName, defaults, decorations) {\n const requestWithDefaults = octokit.request.defaults(defaults);\n /* istanbul ignore next */\n function withDecorations(...args) {\n // @ts-ignore https://github.com/microsoft/TypeScript/issues/25488\n let options = requestWithDefaults.endpoint.merge(...args);\n // There are currently no other decorations than `.mapToData`\n if (decorations.mapToData) {\n options = Object.assign({}, options, {\n data: options[decorations.mapToData],\n [decorations.mapToData]: undefined,\n });\n return requestWithDefaults(options);\n }\n if (decorations.renamed) {\n const [newScope, newMethodName] = decorations.renamed;\n octokit.log.warn(`octokit.${scope}.${methodName}() has been renamed to octokit.${newScope}.${newMethodName}()`);\n }\n if (decorations.deprecated) {\n octokit.log.warn(decorations.deprecated);\n }\n if (decorations.renamedParameters) {\n // @ts-ignore https://github.com/microsoft/TypeScript/issues/25488\n const options = requestWithDefaults.endpoint.merge(...args);\n for (const [name, alias] of Object.entries(decorations.renamedParameters)) {\n if (name in options) {\n octokit.log.warn(`\"${name}\" parameter is deprecated for \"octokit.${scope}.${methodName}()\". Use \"${alias}\" instead`);\n if (!(alias in options)) {\n options[alias] = options[name];\n }\n delete options[name];\n }\n }\n return requestWithDefaults(options);\n }\n // @ts-ignore https://github.com/microsoft/TypeScript/issues/25488\n return requestWithDefaults(...args);\n }\n return Object.assign(withDecorations, requestWithDefaults);\n}\n", "import ENDPOINTS from \"./generated/endpoints\";\nimport { VERSION } from \"./version\";\nimport { endpointsToMethods } from \"./endpoints-to-methods\";\nexport function restEndpointMethods(octokit) {\n const api = endpointsToMethods(octokit, ENDPOINTS);\n return {\n rest: api,\n };\n}\nrestEndpointMethods.VERSION = VERSION;\nexport function legacyRestEndpointMethods(octokit) {\n const api = endpointsToMethods(octokit, ENDPOINTS);\n return {\n ...api,\n rest: api,\n };\n}\nlegacyRestEndpointMethods.VERSION = VERSION;\n", "export const VERSION = \"2.21.3\";\n", "/**\n * Some “list” response that can be paginated have a different response structure\n *\n * They have a `total_count` key in the response (search also has `incomplete_results`,\n * /installation/repositories also has `repository_selection`), as well as a key with\n * the list of the items which name varies from endpoint to endpoint.\n *\n * Octokit normalizes these responses so that paginated results are always returned following\n * the same structure. One challenge is that if the list response has only one page, no Link\n * header is provided, so this header alone is not sufficient to check wether a response is\n * paginated or not.\n *\n * We check if a \"total_count\" key is present in the response data, but also make sure that\n * a \"url\" property is not, as the \"Get the combined status for a specific ref\" endpoint would\n * otherwise match: https://developer.github.com/v3/repos/statuses/#get-the-combined-status-for-a-specific-ref\n */\nexport function normalizePaginatedListResponse(response) {\n // endpoints can respond with 204 if repository is empty\n if (!response.data) {\n return {\n ...response,\n data: [],\n };\n }\n const responseNeedsNormalization = \"total_count\" in response.data && !(\"url\" in response.data);\n if (!responseNeedsNormalization)\n return response;\n // keep the additional properties intact as there is currently no other way\n // to retrieve the same information.\n const incompleteResults = response.data.incomplete_results;\n const repositorySelection = response.data.repository_selection;\n const totalCount = response.data.total_count;\n delete response.data.incomplete_results;\n delete response.data.repository_selection;\n delete response.data.total_count;\n const namespaceKey = Object.keys(response.data)[0];\n const data = response.data[namespaceKey];\n response.data = data;\n if (typeof incompleteResults !== \"undefined\") {\n response.data.incomplete_results = incompleteResults;\n }\n if (typeof repositorySelection !== \"undefined\") {\n response.data.repository_selection = repositorySelection;\n }\n response.data.total_count = totalCount;\n return response;\n}\n", "import { normalizePaginatedListResponse } from \"./normalize-paginated-list-response\";\nexport function iterator(octokit, route, parameters) {\n const options = typeof route === \"function\"\n ? route.endpoint(parameters)\n : octokit.request.endpoint(route, parameters);\n const requestMethod = typeof route === \"function\" ? route : octokit.request;\n const method = options.method;\n const headers = options.headers;\n let url = options.url;\n return {\n [Symbol.asyncIterator]: () => ({\n async next() {\n if (!url)\n return { done: true };\n try {\n const response = await requestMethod({ method, url, headers });\n const normalizedResponse = normalizePaginatedListResponse(response);\n // `response.headers.link` format:\n // '; rel=\"next\", ; rel=\"last\"'\n // sets `url` to undefined if \"next\" URL is not present or `link` header is not set\n url = ((normalizedResponse.headers.link || \"\").match(/<([^>]+)>;\\s*rel=\"next\"/) || [])[1];\n return { value: normalizedResponse };\n }\n catch (error) {\n if (error.status !== 409)\n throw error;\n url = \"\";\n return {\n value: {\n status: 200,\n headers: {},\n data: [],\n },\n };\n }\n },\n }),\n };\n}\n", "import { iterator } from \"./iterator\";\nexport function paginate(octokit, route, parameters, mapFn) {\n if (typeof parameters === \"function\") {\n mapFn = parameters;\n parameters = undefined;\n }\n return gather(octokit, [], iterator(octokit, route, parameters)[Symbol.asyncIterator](), mapFn);\n}\nfunction gather(octokit, results, iterator, mapFn) {\n return iterator.next().then((result) => {\n if (result.done) {\n return results;\n }\n let earlyExit = false;\n function done() {\n earlyExit = true;\n }\n results = results.concat(mapFn ? mapFn(result.value, done) : result.value.data);\n if (earlyExit) {\n return results;\n }\n return gather(octokit, results, iterator, mapFn);\n });\n}\n", "import { paginate } from \"./paginate\";\nimport { iterator } from \"./iterator\";\nexport const composePaginateRest = Object.assign(paginate, {\n iterator,\n});\n", "export const paginatingEndpoints = [\n \"GET /app/hook/deliveries\",\n \"GET /app/installations\",\n \"GET /applications/grants\",\n \"GET /authorizations\",\n \"GET /enterprises/{enterprise}/actions/permissions/organizations\",\n \"GET /enterprises/{enterprise}/actions/runner-groups\",\n \"GET /enterprises/{enterprise}/actions/runner-groups/{runner_group_id}/organizations\",\n \"GET /enterprises/{enterprise}/actions/runner-groups/{runner_group_id}/runners\",\n \"GET /enterprises/{enterprise}/actions/runners\",\n \"GET /enterprises/{enterprise}/audit-log\",\n \"GET /enterprises/{enterprise}/secret-scanning/alerts\",\n \"GET /enterprises/{enterprise}/settings/billing/advanced-security\",\n \"GET /events\",\n \"GET /gists\",\n \"GET /gists/public\",\n \"GET /gists/starred\",\n \"GET /gists/{gist_id}/comments\",\n \"GET /gists/{gist_id}/commits\",\n \"GET /gists/{gist_id}/forks\",\n \"GET /installation/repositories\",\n \"GET /issues\",\n \"GET /licenses\",\n \"GET /marketplace_listing/plans\",\n \"GET /marketplace_listing/plans/{plan_id}/accounts\",\n \"GET /marketplace_listing/stubbed/plans\",\n \"GET /marketplace_listing/stubbed/plans/{plan_id}/accounts\",\n \"GET /networks/{owner}/{repo}/events\",\n \"GET /notifications\",\n \"GET /organizations\",\n \"GET /orgs/{org}/actions/cache/usage-by-repository\",\n \"GET /orgs/{org}/actions/permissions/repositories\",\n \"GET /orgs/{org}/actions/runner-groups\",\n \"GET /orgs/{org}/actions/runner-groups/{runner_group_id}/repositories\",\n \"GET /orgs/{org}/actions/runner-groups/{runner_group_id}/runners\",\n \"GET /orgs/{org}/actions/runners\",\n \"GET /orgs/{org}/actions/secrets\",\n \"GET /orgs/{org}/actions/secrets/{secret_name}/repositories\",\n \"GET /orgs/{org}/audit-log\",\n \"GET /orgs/{org}/blocks\",\n \"GET /orgs/{org}/code-scanning/alerts\",\n \"GET /orgs/{org}/codespaces\",\n \"GET /orgs/{org}/credential-authorizations\",\n \"GET /orgs/{org}/dependabot/secrets\",\n \"GET /orgs/{org}/dependabot/secrets/{secret_name}/repositories\",\n \"GET /orgs/{org}/events\",\n \"GET /orgs/{org}/external-groups\",\n \"GET /orgs/{org}/failed_invitations\",\n \"GET /orgs/{org}/hooks\",\n \"GET /orgs/{org}/hooks/{hook_id}/deliveries\",\n \"GET /orgs/{org}/installations\",\n \"GET /orgs/{org}/invitations\",\n \"GET /orgs/{org}/invitations/{invitation_id}/teams\",\n \"GET /orgs/{org}/issues\",\n \"GET /orgs/{org}/members\",\n \"GET /orgs/{org}/migrations\",\n \"GET /orgs/{org}/migrations/{migration_id}/repositories\",\n \"GET /orgs/{org}/outside_collaborators\",\n \"GET /orgs/{org}/packages\",\n \"GET /orgs/{org}/packages/{package_type}/{package_name}/versions\",\n \"GET /orgs/{org}/projects\",\n \"GET /orgs/{org}/public_members\",\n \"GET /orgs/{org}/repos\",\n \"GET /orgs/{org}/secret-scanning/alerts\",\n \"GET /orgs/{org}/settings/billing/advanced-security\",\n \"GET /orgs/{org}/team-sync/groups\",\n \"GET /orgs/{org}/teams\",\n \"GET /orgs/{org}/teams/{team_slug}/discussions\",\n \"GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments\",\n \"GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions\",\n \"GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions\",\n \"GET /orgs/{org}/teams/{team_slug}/invitations\",\n \"GET /orgs/{org}/teams/{team_slug}/members\",\n \"GET /orgs/{org}/teams/{team_slug}/projects\",\n \"GET /orgs/{org}/teams/{team_slug}/repos\",\n \"GET /orgs/{org}/teams/{team_slug}/teams\",\n \"GET /projects/columns/{column_id}/cards\",\n \"GET /projects/{project_id}/collaborators\",\n \"GET /projects/{project_id}/columns\",\n \"GET /repos/{owner}/{repo}/actions/artifacts\",\n \"GET /repos/{owner}/{repo}/actions/caches\",\n \"GET /repos/{owner}/{repo}/actions/runners\",\n \"GET /repos/{owner}/{repo}/actions/runs\",\n \"GET /repos/{owner}/{repo}/actions/runs/{run_id}/artifacts\",\n \"GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/jobs\",\n \"GET /repos/{owner}/{repo}/actions/runs/{run_id}/jobs\",\n \"GET /repos/{owner}/{repo}/actions/secrets\",\n \"GET /repos/{owner}/{repo}/actions/workflows\",\n \"GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/runs\",\n \"GET /repos/{owner}/{repo}/assignees\",\n \"GET /repos/{owner}/{repo}/branches\",\n \"GET /repos/{owner}/{repo}/check-runs/{check_run_id}/annotations\",\n \"GET /repos/{owner}/{repo}/check-suites/{check_suite_id}/check-runs\",\n \"GET /repos/{owner}/{repo}/code-scanning/alerts\",\n \"GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances\",\n \"GET /repos/{owner}/{repo}/code-scanning/analyses\",\n \"GET /repos/{owner}/{repo}/codespaces\",\n \"GET /repos/{owner}/{repo}/codespaces/devcontainers\",\n \"GET /repos/{owner}/{repo}/codespaces/secrets\",\n \"GET /repos/{owner}/{repo}/collaborators\",\n \"GET /repos/{owner}/{repo}/comments\",\n \"GET /repos/{owner}/{repo}/comments/{comment_id}/reactions\",\n \"GET /repos/{owner}/{repo}/commits\",\n \"GET /repos/{owner}/{repo}/commits/{commit_sha}/comments\",\n \"GET /repos/{owner}/{repo}/commits/{commit_sha}/pulls\",\n \"GET /repos/{owner}/{repo}/commits/{ref}/check-runs\",\n \"GET /repos/{owner}/{repo}/commits/{ref}/check-suites\",\n \"GET /repos/{owner}/{repo}/commits/{ref}/status\",\n \"GET /repos/{owner}/{repo}/commits/{ref}/statuses\",\n \"GET /repos/{owner}/{repo}/contributors\",\n \"GET /repos/{owner}/{repo}/dependabot/secrets\",\n \"GET /repos/{owner}/{repo}/deployments\",\n \"GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses\",\n \"GET /repos/{owner}/{repo}/environments\",\n \"GET /repos/{owner}/{repo}/events\",\n \"GET /repos/{owner}/{repo}/forks\",\n \"GET /repos/{owner}/{repo}/git/matching-refs/{ref}\",\n \"GET /repos/{owner}/{repo}/hooks\",\n \"GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries\",\n \"GET /repos/{owner}/{repo}/invitations\",\n \"GET /repos/{owner}/{repo}/issues\",\n \"GET /repos/{owner}/{repo}/issues/comments\",\n \"GET /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions\",\n \"GET /repos/{owner}/{repo}/issues/events\",\n \"GET /repos/{owner}/{repo}/issues/{issue_number}/comments\",\n \"GET /repos/{owner}/{repo}/issues/{issue_number}/events\",\n \"GET /repos/{owner}/{repo}/issues/{issue_number}/labels\",\n \"GET /repos/{owner}/{repo}/issues/{issue_number}/reactions\",\n \"GET /repos/{owner}/{repo}/issues/{issue_number}/timeline\",\n \"GET /repos/{owner}/{repo}/keys\",\n \"GET /repos/{owner}/{repo}/labels\",\n \"GET /repos/{owner}/{repo}/milestones\",\n \"GET /repos/{owner}/{repo}/milestones/{milestone_number}/labels\",\n \"GET /repos/{owner}/{repo}/notifications\",\n \"GET /repos/{owner}/{repo}/pages/builds\",\n \"GET /repos/{owner}/{repo}/projects\",\n \"GET /repos/{owner}/{repo}/pulls\",\n \"GET /repos/{owner}/{repo}/pulls/comments\",\n \"GET /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions\",\n \"GET /repos/{owner}/{repo}/pulls/{pull_number}/comments\",\n \"GET /repos/{owner}/{repo}/pulls/{pull_number}/commits\",\n \"GET /repos/{owner}/{repo}/pulls/{pull_number}/files\",\n \"GET /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers\",\n \"GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews\",\n \"GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/comments\",\n \"GET /repos/{owner}/{repo}/releases\",\n \"GET /repos/{owner}/{repo}/releases/{release_id}/assets\",\n \"GET /repos/{owner}/{repo}/releases/{release_id}/reactions\",\n \"GET /repos/{owner}/{repo}/secret-scanning/alerts\",\n \"GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}/locations\",\n \"GET /repos/{owner}/{repo}/stargazers\",\n \"GET /repos/{owner}/{repo}/subscribers\",\n \"GET /repos/{owner}/{repo}/tags\",\n \"GET /repos/{owner}/{repo}/teams\",\n \"GET /repos/{owner}/{repo}/topics\",\n \"GET /repositories\",\n \"GET /repositories/{repository_id}/environments/{environment_name}/secrets\",\n \"GET /search/code\",\n \"GET /search/commits\",\n \"GET /search/issues\",\n \"GET /search/labels\",\n \"GET /search/repositories\",\n \"GET /search/topics\",\n \"GET /search/users\",\n \"GET /teams/{team_id}/discussions\",\n \"GET /teams/{team_id}/discussions/{discussion_number}/comments\",\n \"GET /teams/{team_id}/discussions/{discussion_number}/comments/{comment_number}/reactions\",\n \"GET /teams/{team_id}/discussions/{discussion_number}/reactions\",\n \"GET /teams/{team_id}/invitations\",\n \"GET /teams/{team_id}/members\",\n \"GET /teams/{team_id}/projects\",\n \"GET /teams/{team_id}/repos\",\n \"GET /teams/{team_id}/teams\",\n \"GET /user/blocks\",\n \"GET /user/codespaces\",\n \"GET /user/codespaces/secrets\",\n \"GET /user/emails\",\n \"GET /user/followers\",\n \"GET /user/following\",\n \"GET /user/gpg_keys\",\n \"GET /user/installations\",\n \"GET /user/installations/{installation_id}/repositories\",\n \"GET /user/issues\",\n \"GET /user/keys\",\n \"GET /user/marketplace_purchases\",\n \"GET /user/marketplace_purchases/stubbed\",\n \"GET /user/memberships/orgs\",\n \"GET /user/migrations\",\n \"GET /user/migrations/{migration_id}/repositories\",\n \"GET /user/orgs\",\n \"GET /user/packages\",\n \"GET /user/packages/{package_type}/{package_name}/versions\",\n \"GET /user/public_emails\",\n \"GET /user/repos\",\n \"GET /user/repository_invitations\",\n \"GET /user/starred\",\n \"GET /user/subscriptions\",\n \"GET /user/teams\",\n \"GET /users\",\n \"GET /users/{username}/events\",\n \"GET /users/{username}/events/orgs/{org}\",\n \"GET /users/{username}/events/public\",\n \"GET /users/{username}/followers\",\n \"GET /users/{username}/following\",\n \"GET /users/{username}/gists\",\n \"GET /users/{username}/gpg_keys\",\n \"GET /users/{username}/keys\",\n \"GET /users/{username}/orgs\",\n \"GET /users/{username}/packages\",\n \"GET /users/{username}/projects\",\n \"GET /users/{username}/received_events\",\n \"GET /users/{username}/received_events/public\",\n \"GET /users/{username}/repos\",\n \"GET /users/{username}/starred\",\n \"GET /users/{username}/subscriptions\",\n];\n", "import { paginatingEndpoints, } from \"./generated/paginating-endpoints\";\nexport { paginatingEndpoints } from \"./generated/paginating-endpoints\";\nexport function isPaginatingEndpoint(arg) {\n if (typeof arg === \"string\") {\n return paginatingEndpoints.includes(arg);\n }\n else {\n return false;\n }\n}\n", "import { VERSION } from \"./version\";\nimport { paginate } from \"./paginate\";\nimport { iterator } from \"./iterator\";\nexport { composePaginateRest } from \"./compose-paginate\";\nexport { isPaginatingEndpoint, paginatingEndpoints, } from \"./paginating-endpoints\";\n/**\n * @param octokit Octokit instance\n * @param options Options passed to Octokit constructor\n */\nexport function paginateRest(octokit) {\n return {\n paginate: Object.assign(paginate.bind(null, octokit), {\n iterator: iterator.bind(null, octokit),\n }),\n };\n}\npaginateRest.VERSION = VERSION;\n", null, null, "'use strict';\n\nconst nameStartChar = ':A-Za-z_\\\\u00C0-\\\\u00D6\\\\u00D8-\\\\u00F6\\\\u00F8-\\\\u02FF\\\\u0370-\\\\u037D\\\\u037F-\\\\u1FFF\\\\u200C-\\\\u200D\\\\u2070-\\\\u218F\\\\u2C00-\\\\u2FEF\\\\u3001-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFFD';\nconst nameChar = nameStartChar + '\\\\-.\\\\d\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040';\nconst nameRegexp = '[' + nameStartChar + '][' + nameChar + ']*'\nconst regexName = new RegExp('^' + nameRegexp + '$');\n\nconst getAllMatches = function(string, regex) {\n const matches = [];\n let match = regex.exec(string);\n while (match) {\n const allmatches = [];\n allmatches.startIndex = regex.lastIndex - match[0].length;\n const len = match.length;\n for (let index = 0; index < len; index++) {\n allmatches.push(match[index]);\n }\n matches.push(allmatches);\n match = regex.exec(string);\n }\n return matches;\n};\n\nconst isName = function(string) {\n const match = regexName.exec(string);\n return !(match === null || typeof match === 'undefined');\n};\n\nexports.isExist = function(v) {\n return typeof v !== 'undefined';\n};\n\nexports.isEmptyObject = function(obj) {\n return Object.keys(obj).length === 0;\n};\n\n/**\n * Copy all the properties of a into b.\n * @param {*} target\n * @param {*} a\n */\nexports.merge = function(target, a, arrayMode) {\n if (a) {\n const keys = Object.keys(a); // will return an array of own properties\n const len = keys.length; //don't make it inline\n for (let i = 0; i < len; i++) {\n if (arrayMode === 'strict') {\n target[keys[i]] = [ a[keys[i]] ];\n } else {\n target[keys[i]] = a[keys[i]];\n }\n }\n }\n};\n/* exports.merge =function (b,a){\n return Object.assign(b,a);\n} */\n\nexports.getValue = function(v) {\n if (exports.isExist(v)) {\n return v;\n } else {\n return '';\n }\n};\n\n// const fakeCall = function(a) {return a;};\n// const fakeCallNoReturn = function() {};\n\nexports.isName = isName;\nexports.getAllMatches = getAllMatches;\nexports.nameRegexp = nameRegexp;\n", "'use strict';\n\nconst util = require('./util');\n\nconst defaultOptions = {\n allowBooleanAttributes: false, //A tag can have attributes without any value\n unpairedTags: []\n};\n\n//const tagsPattern = new RegExp(\"<\\\\/?([\\\\w:\\\\-_\\.]+)\\\\s*\\/?>\",\"g\");\nexports.validate = function (xmlData, options) {\n options = Object.assign({}, defaultOptions, options);\n\n //xmlData = xmlData.replace(/(\\r\\n|\\n|\\r)/gm,\"\");//make it single line\n //xmlData = xmlData.replace(/(^\\s*<\\?xml.*?\\?>)/g,\"\");//Remove XML starting tag\n //xmlData = xmlData.replace(/()/g,\"\");//Remove DOCTYPE\n const tags = [];\n let tagFound = false;\n\n //indicates that the root tag has been closed (aka. depth 0 has been reached)\n let reachedRoot = false;\n\n if (xmlData[0] === '\\ufeff') {\n // check for byte order mark (BOM)\n xmlData = xmlData.substr(1);\n }\n \n for (let i = 0; i < xmlData.length; i++) {\n\n if (xmlData[i] === '<' && xmlData[i+1] === '?') {\n i+=2;\n i = readPI(xmlData,i);\n if (i.err) return i;\n }else if (xmlData[i] === '<') {\n //starting of tag\n //read until you reach to '>' avoiding any '>' in attribute value\n let tagStartPos = i;\n i++;\n \n if (xmlData[i] === '!') {\n i = readCommentAndCDATA(xmlData, i);\n continue;\n } else {\n let closingTag = false;\n if (xmlData[i] === '/') {\n //closing tag\n closingTag = true;\n i++;\n }\n //read tagname\n let tagName = '';\n for (; i < xmlData.length &&\n xmlData[i] !== '>' &&\n xmlData[i] !== ' ' &&\n xmlData[i] !== '\\t' &&\n xmlData[i] !== '\\n' &&\n xmlData[i] !== '\\r'; i++\n ) {\n tagName += xmlData[i];\n }\n tagName = tagName.trim();\n //console.log(tagName);\n\n if (tagName[tagName.length - 1] === '/') {\n //self closing tag without attributes\n tagName = tagName.substring(0, tagName.length - 1);\n //continue;\n i--;\n }\n if (!validateTagName(tagName)) {\n let msg;\n if (tagName.trim().length === 0) {\n msg = \"Invalid space after '<'.\";\n } else {\n msg = \"Tag '\"+tagName+\"' is an invalid name.\";\n }\n return getErrorObject('InvalidTag', msg, getLineNumberForPosition(xmlData, i));\n }\n\n const result = readAttributeStr(xmlData, i);\n if (result === false) {\n return getErrorObject('InvalidAttr', \"Attributes for '\"+tagName+\"' have open quote.\", getLineNumberForPosition(xmlData, i));\n }\n let attrStr = result.value;\n i = result.index;\n\n if (attrStr[attrStr.length - 1] === '/') {\n //self closing tag\n const attrStrStart = i - attrStr.length;\n attrStr = attrStr.substring(0, attrStr.length - 1);\n const isValid = validateAttributeString(attrStr, options);\n if (isValid === true) {\n tagFound = true;\n //continue; //text may presents after self closing tag\n } else {\n //the result from the nested function returns the position of the error within the attribute\n //in order to get the 'true' error line, we need to calculate the position where the attribute begins (i - attrStr.length) and then add the position within the attribute\n //this gives us the absolute index in the entire xml, which we can use to find the line at last\n return getErrorObject(isValid.err.code, isValid.err.msg, getLineNumberForPosition(xmlData, attrStrStart + isValid.err.line));\n }\n } else if (closingTag) {\n if (!result.tagClosed) {\n return getErrorObject('InvalidTag', \"Closing tag '\"+tagName+\"' doesn't have proper closing.\", getLineNumberForPosition(xmlData, i));\n } else if (attrStr.trim().length > 0) {\n return getErrorObject('InvalidTag', \"Closing tag '\"+tagName+\"' can't have attributes or invalid starting.\", getLineNumberForPosition(xmlData, tagStartPos));\n } else {\n const otg = tags.pop();\n if (tagName !== otg.tagName) {\n let openPos = getLineNumberForPosition(xmlData, otg.tagStartPos);\n return getErrorObject('InvalidTag',\n \"Expected closing tag '\"+otg.tagName+\"' (opened in line \"+openPos.line+\", col \"+openPos.col+\") instead of closing tag '\"+tagName+\"'.\",\n getLineNumberForPosition(xmlData, tagStartPos));\n }\n\n //when there are no more tags, we reached the root level.\n if (tags.length == 0) {\n reachedRoot = true;\n }\n }\n } else {\n const isValid = validateAttributeString(attrStr, options);\n if (isValid !== true) {\n //the result from the nested function returns the position of the error within the attribute\n //in order to get the 'true' error line, we need to calculate the position where the attribute begins (i - attrStr.length) and then add the position within the attribute\n //this gives us the absolute index in the entire xml, which we can use to find the line at last\n return getErrorObject(isValid.err.code, isValid.err.msg, getLineNumberForPosition(xmlData, i - attrStr.length + isValid.err.line));\n }\n\n //if the root level has been reached before ...\n if (reachedRoot === true) {\n return getErrorObject('InvalidXml', 'Multiple possible root nodes found.', getLineNumberForPosition(xmlData, i));\n } else if(options.unpairedTags.indexOf(tagName) !== -1){\n //don't push into stack\n } else {\n tags.push({tagName, tagStartPos});\n }\n tagFound = true;\n }\n\n //skip tag text value\n //It may include comments and CDATA value\n for (i++; i < xmlData.length; i++) {\n if (xmlData[i] === '<') {\n if (xmlData[i + 1] === '!') {\n //comment or CADATA\n i++;\n i = readCommentAndCDATA(xmlData, i);\n continue;\n } else if (xmlData[i+1] === '?') {\n i = readPI(xmlData, ++i);\n if (i.err) return i;\n } else{\n break;\n }\n } else if (xmlData[i] === '&') {\n const afterAmp = validateAmpersand(xmlData, i);\n if (afterAmp == -1)\n return getErrorObject('InvalidChar', \"char '&' is not expected.\", getLineNumberForPosition(xmlData, i));\n i = afterAmp;\n }else{\n if (reachedRoot === true && !isWhiteSpace(xmlData[i])) {\n return getErrorObject('InvalidXml', \"Extra text at the end\", getLineNumberForPosition(xmlData, i));\n }\n }\n } //end of reading tag text value\n if (xmlData[i] === '<') {\n i--;\n }\n }\n } else {\n if ( isWhiteSpace(xmlData[i])) {\n continue;\n }\n return getErrorObject('InvalidChar', \"char '\"+xmlData[i]+\"' is not expected.\", getLineNumberForPosition(xmlData, i));\n }\n }\n\n if (!tagFound) {\n return getErrorObject('InvalidXml', 'Start tag expected.', 1);\n }else if (tags.length == 1) {\n return getErrorObject('InvalidTag', \"Unclosed tag '\"+tags[0].tagName+\"'.\", getLineNumberForPosition(xmlData, tags[0].tagStartPos));\n }else if (tags.length > 0) {\n return getErrorObject('InvalidXml', \"Invalid '\"+\n JSON.stringify(tags.map(t => t.tagName), null, 4).replace(/\\r?\\n/g, '')+\n \"' found.\", {line: 1, col: 1});\n }\n\n return true;\n};\n\nfunction isWhiteSpace(char){\n return char === ' ' || char === '\\t' || char === '\\n' || char === '\\r';\n}\n/**\n * Read Processing insstructions and skip\n * @param {*} xmlData\n * @param {*} i\n */\nfunction readPI(xmlData, i) {\n const start = i;\n for (; i < xmlData.length; i++) {\n if (xmlData[i] == '?' || xmlData[i] == ' ') {\n //tagname\n const tagname = xmlData.substr(start, i - start);\n if (i > 5 && tagname === 'xml') {\n return getErrorObject('InvalidXml', 'XML declaration allowed only at the start of the document.', getLineNumberForPosition(xmlData, i));\n } else if (xmlData[i] == '?' && xmlData[i + 1] == '>') {\n //check if valid attribut string\n i++;\n break;\n } else {\n continue;\n }\n }\n }\n return i;\n}\n\nfunction readCommentAndCDATA(xmlData, i) {\n if (xmlData.length > i + 5 && xmlData[i + 1] === '-' && xmlData[i + 2] === '-') {\n //comment\n for (i += 3; i < xmlData.length; i++) {\n if (xmlData[i] === '-' && xmlData[i + 1] === '-' && xmlData[i + 2] === '>') {\n i += 2;\n break;\n }\n }\n } else if (\n xmlData.length > i + 8 &&\n xmlData[i + 1] === 'D' &&\n xmlData[i + 2] === 'O' &&\n xmlData[i + 3] === 'C' &&\n xmlData[i + 4] === 'T' &&\n xmlData[i + 5] === 'Y' &&\n xmlData[i + 6] === 'P' &&\n xmlData[i + 7] === 'E'\n ) {\n let angleBracketsCount = 1;\n for (i += 8; i < xmlData.length; i++) {\n if (xmlData[i] === '<') {\n angleBracketsCount++;\n } else if (xmlData[i] === '>') {\n angleBracketsCount--;\n if (angleBracketsCount === 0) {\n break;\n }\n }\n }\n } else if (\n xmlData.length > i + 9 &&\n xmlData[i + 1] === '[' &&\n xmlData[i + 2] === 'C' &&\n xmlData[i + 3] === 'D' &&\n xmlData[i + 4] === 'A' &&\n xmlData[i + 5] === 'T' &&\n xmlData[i + 6] === 'A' &&\n xmlData[i + 7] === '['\n ) {\n for (i += 8; i < xmlData.length; i++) {\n if (xmlData[i] === ']' && xmlData[i + 1] === ']' && xmlData[i + 2] === '>') {\n i += 2;\n break;\n }\n }\n }\n\n return i;\n}\n\nconst doubleQuote = '\"';\nconst singleQuote = \"'\";\n\n/**\n * Keep reading xmlData until '<' is found outside the attribute value.\n * @param {string} xmlData\n * @param {number} i\n */\nfunction readAttributeStr(xmlData, i) {\n let attrStr = '';\n let startChar = '';\n let tagClosed = false;\n for (; i < xmlData.length; i++) {\n if (xmlData[i] === doubleQuote || xmlData[i] === singleQuote) {\n if (startChar === '') {\n startChar = xmlData[i];\n } else if (startChar !== xmlData[i]) {\n //if vaue is enclosed with double quote then single quotes are allowed inside the value and vice versa\n } else {\n startChar = '';\n }\n } else if (xmlData[i] === '>') {\n if (startChar === '') {\n tagClosed = true;\n break;\n }\n }\n attrStr += xmlData[i];\n }\n if (startChar !== '') {\n return false;\n }\n\n return {\n value: attrStr,\n index: i,\n tagClosed: tagClosed\n };\n}\n\n/**\n * Select all the attributes whether valid or invalid.\n */\nconst validAttrStrRegxp = new RegExp('(\\\\s*)([^\\\\s=]+)(\\\\s*=)?(\\\\s*([\\'\"])(([\\\\s\\\\S])*?)\\\\5)?', 'g');\n\n//attr, =\"sd\", a=\"amit's\", a=\"sd\"b=\"saf\", ab cd=\"\"\n\nfunction validateAttributeString(attrStr, options) {\n //console.log(\"start:\"+attrStr+\":end\");\n\n //if(attrStr.trim().length === 0) return true; //empty string\n\n const matches = util.getAllMatches(attrStr, validAttrStrRegxp);\n const attrNames = {};\n\n for (let i = 0; i < matches.length; i++) {\n if (matches[i][1].length === 0) {\n //nospace before attribute name: a=\"sd\"b=\"saf\"\n return getErrorObject('InvalidAttr', \"Attribute '\"+matches[i][2]+\"' has no space in starting.\", getPositionFromMatch(matches[i]))\n } else if (matches[i][3] !== undefined && matches[i][4] === undefined) {\n return getErrorObject('InvalidAttr', \"Attribute '\"+matches[i][2]+\"' is without value.\", getPositionFromMatch(matches[i]));\n } else if (matches[i][3] === undefined && !options.allowBooleanAttributes) {\n //independent attribute: ab\n return getErrorObject('InvalidAttr', \"boolean attribute '\"+matches[i][2]+\"' is not allowed.\", getPositionFromMatch(matches[i]));\n }\n /* else if(matches[i][6] === undefined){//attribute without value: ab=\n return { err: { code:\"InvalidAttr\",msg:\"attribute \" + matches[i][2] + \" has no value assigned.\"}};\n } */\n const attrName = matches[i][2];\n if (!validateAttrName(attrName)) {\n return getErrorObject('InvalidAttr', \"Attribute '\"+attrName+\"' is an invalid name.\", getPositionFromMatch(matches[i]));\n }\n if (!attrNames.hasOwnProperty(attrName)) {\n //check for duplicate attribute.\n attrNames[attrName] = 1;\n } else {\n return getErrorObject('InvalidAttr', \"Attribute '\"+attrName+\"' is repeated.\", getPositionFromMatch(matches[i]));\n }\n }\n\n return true;\n}\n\nfunction validateNumberAmpersand(xmlData, i) {\n let re = /\\d/;\n if (xmlData[i] === 'x') {\n i++;\n re = /[\\da-fA-F]/;\n }\n for (; i < xmlData.length; i++) {\n if (xmlData[i] === ';')\n return i;\n if (!xmlData[i].match(re))\n break;\n }\n return -1;\n}\n\nfunction validateAmpersand(xmlData, i) {\n // https://www.w3.org/TR/xml/#dt-charref\n i++;\n if (xmlData[i] === ';')\n return -1;\n if (xmlData[i] === '#') {\n i++;\n return validateNumberAmpersand(xmlData, i);\n }\n let count = 0;\n for (; i < xmlData.length; i++, count++) {\n if (xmlData[i].match(/\\w/) && count < 20)\n continue;\n if (xmlData[i] === ';')\n break;\n return -1;\n }\n return i;\n}\n\nfunction getErrorObject(code, message, lineNumber) {\n return {\n err: {\n code: code,\n msg: message,\n line: lineNumber.line || lineNumber,\n col: lineNumber.col,\n },\n };\n}\n\nfunction validateAttrName(attrName) {\n return util.isName(attrName);\n}\n\n// const startsWithXML = /^xml/i;\n\nfunction validateTagName(tagname) {\n return util.isName(tagname) /* && !tagname.match(startsWithXML) */;\n}\n\n//this function returns the line number for the character at the given index\nfunction getLineNumberForPosition(xmlData, index) {\n const lines = xmlData.substring(0, index).split(/\\r?\\n/);\n return {\n line: lines.length,\n\n // column number is last line's length + 1, because column numbering starts at 1:\n col: lines[lines.length - 1].length + 1\n };\n}\n\n//this function returns the position of the first character of match within attrStr\nfunction getPositionFromMatch(match) {\n return match.startIndex + match[1].length;\n}\n", "\nconst defaultOptions = {\n preserveOrder: false,\n attributeNamePrefix: '@_',\n attributesGroupName: false,\n textNodeName: '#text',\n ignoreAttributes: true,\n removeNSPrefix: false, // remove NS from tag name or attribute name if true\n allowBooleanAttributes: false, //a tag can have attributes without any value\n //ignoreRootElement : false,\n parseTagValue: true,\n parseAttributeValue: false,\n trimValues: true, //Trim string values of tag and attributes\n cdataPropName: false,\n numberParseOptions: {\n hex: true,\n leadingZeros: true,\n eNotation: true\n },\n tagValueProcessor: function(tagName, val) {\n return val;\n },\n attributeValueProcessor: function(attrName, val) {\n return val;\n },\n stopNodes: [], //nested tags will not be parsed even for errors\n alwaysCreateTextNode: false,\n isArray: () => false,\n commentPropName: false,\n unpairedTags: [],\n processEntities: true,\n htmlEntities: false,\n ignoreDeclaration: false,\n ignorePiTags: false,\n transformTagName: false,\n transformAttributeName: false,\n};\n \nconst buildOptions = function(options) {\n return Object.assign({}, defaultOptions, options);\n};\n\nexports.buildOptions = buildOptions;\nexports.defaultOptions = defaultOptions;", "'use strict';\n\nclass XmlNode{\n constructor(tagname) {\n this.tagname = tagname;\n this.child = []; //nested tags, text, cdata, comments in order\n this[\":@\"] = {}; //attributes map\n }\n add(key,val){\n // this.child.push( {name : key, val: val, isCdata: isCdata });\n if(key === \"__proto__\") key = \"#__proto__\";\n this.child.push( {[key]: val });\n }\n addChild(node) {\n if(node.tagname === \"__proto__\") node.tagname = \"#__proto__\";\n if(node[\":@\"] && Object.keys(node[\":@\"]).length > 0){\n this.child.push( { [node.tagname]: node.child, [\":@\"]: node[\":@\"] });\n }else{\n this.child.push( { [node.tagname]: node.child });\n }\n };\n};\n\n\nmodule.exports = XmlNode;", "//TODO: handle comments\nfunction readDocType(xmlData, i){\n \n const entities = {};\n if( xmlData[i + 3] === 'O' &&\n xmlData[i + 4] === 'C' &&\n xmlData[i + 5] === 'T' &&\n xmlData[i + 6] === 'Y' &&\n xmlData[i + 7] === 'P' &&\n xmlData[i + 8] === 'E')\n { \n i = i+9;\n let angleBracketsCount = 1;\n let hasBody = false, comment = false;\n let exp = \"\";\n for(;i') { //Read tag content\n if(comment){\n if( xmlData[i - 1] === \"-\" && xmlData[i - 2] === \"-\"){\n comment = false;\n angleBracketsCount--;\n }\n }else{\n angleBracketsCount--;\n }\n if (angleBracketsCount === 0) {\n break;\n }\n }else if( xmlData[i] === '['){\n hasBody = true;\n }else{\n exp += xmlData[i];\n }\n }\n if(angleBracketsCount !== 0){\n throw new Error(`Unclosed DOCTYPE`);\n }\n }else{\n throw new Error(`Invalid Tag instead of DOCTYPE`);\n }\n return {entities, i};\n}\n\nfunction readEntityExp(xmlData,i){\n //External entities are not supported\n // \n\n //Parameter entities are not supported\n // \n\n //Internal entities are supported\n // \n \n //read EntityName\n let entityName = \"\";\n for (; i < xmlData.length && (xmlData[i] !== \"'\" && xmlData[i] !== '\"' ); i++) {\n // if(xmlData[i] === \" \") continue;\n // else \n entityName += xmlData[i];\n }\n entityName = entityName.trim();\n if(entityName.indexOf(\" \") !== -1) throw new Error(\"External entites are not supported\");\n\n //read Entity Value\n const startChar = xmlData[i++];\n let val = \"\"\n for (; i < xmlData.length && xmlData[i] !== startChar ; i++) {\n val += xmlData[i];\n }\n return [entityName, val, i];\n}\n\nfunction isComment(xmlData, i){\n if(xmlData[i+1] === '!' &&\n xmlData[i+2] === '-' &&\n xmlData[i+3] === '-') return true\n return false\n}\nfunction isEntity(xmlData, i){\n if(xmlData[i+1] === '!' &&\n xmlData[i+2] === 'E' &&\n xmlData[i+3] === 'N' &&\n xmlData[i+4] === 'T' &&\n xmlData[i+5] === 'I' &&\n xmlData[i+6] === 'T' &&\n xmlData[i+7] === 'Y') return true\n return false\n}\nfunction isElement(xmlData, i){\n if(xmlData[i+1] === '!' &&\n xmlData[i+2] === 'E' &&\n xmlData[i+3] === 'L' &&\n xmlData[i+4] === 'E' &&\n xmlData[i+5] === 'M' &&\n xmlData[i+6] === 'E' &&\n xmlData[i+7] === 'N' &&\n xmlData[i+8] === 'T') return true\n return false\n}\n\nfunction isAttlist(xmlData, i){\n if(xmlData[i+1] === '!' &&\n xmlData[i+2] === 'A' &&\n xmlData[i+3] === 'T' &&\n xmlData[i+4] === 'T' &&\n xmlData[i+5] === 'L' &&\n xmlData[i+6] === 'I' &&\n xmlData[i+7] === 'S' &&\n xmlData[i+8] === 'T') return true\n return false\n}\nfunction isNotation(xmlData, i){\n if(xmlData[i+1] === '!' &&\n xmlData[i+2] === 'N' &&\n xmlData[i+3] === 'O' &&\n xmlData[i+4] === 'T' &&\n xmlData[i+5] === 'A' &&\n xmlData[i+6] === 'T' &&\n xmlData[i+7] === 'I' &&\n xmlData[i+8] === 'O' &&\n xmlData[i+9] === 'N') return true\n return false\n}\n\nmodule.exports = readDocType;", "const hexRegex = /^[-+]?0x[a-fA-F0-9]+$/;\nconst numRegex = /^([\\-\\+])?(0*)(\\.[0-9]+([eE]\\-?[0-9]+)?|[0-9]+(\\.[0-9]+([eE]\\-?[0-9]+)?)?)$/;\n// const octRegex = /0x[a-z0-9]+/;\n// const binRegex = /0x[a-z0-9]+/;\n\n\n//polyfill\nif (!Number.parseInt && window.parseInt) {\n Number.parseInt = window.parseInt;\n}\nif (!Number.parseFloat && window.parseFloat) {\n Number.parseFloat = window.parseFloat;\n}\n\n \nconst consider = {\n hex : true,\n leadingZeros: true,\n decimalPoint: \"\\.\",\n eNotation: true\n //skipLike: /regex/\n};\n\nfunction toNumber(str, options = {}){\n // const options = Object.assign({}, consider);\n // if(opt.leadingZeros === false){\n // options.leadingZeros = false;\n // }else if(opt.hex === false){\n // options.hex = false;\n // }\n\n options = Object.assign({}, consider, options );\n if(!str || typeof str !== \"string\" ) return str;\n \n let trimmedStr = str.trim();\n // if(trimmedStr === \"0.0\") return 0;\n // else if(trimmedStr === \"+0.0\") return 0;\n // else if(trimmedStr === \"-0.0\") return -0;\n\n if(options.skipLike !== undefined && options.skipLike.test(trimmedStr)) return str;\n else if (options.hex && hexRegex.test(trimmedStr)) {\n return Number.parseInt(trimmedStr, 16);\n // } else if (options.parseOct && octRegex.test(str)) {\n // return Number.parseInt(val, 8);\n // }else if (options.parseBin && binRegex.test(str)) {\n // return Number.parseInt(val, 2);\n }else{\n //separate negative sign, leading zeros, and rest number\n const match = numRegex.exec(trimmedStr);\n if(match){\n const sign = match[1];\n const leadingZeros = match[2];\n let numTrimmedByZeros = trimZeros(match[3]); //complete num without leading zeros\n //trim ending zeros for floating number\n \n const eNotation = match[4] || match[6];\n if(!options.leadingZeros && leadingZeros.length > 0 && sign && trimmedStr[2] !== \".\") return str; //-0123\n else if(!options.leadingZeros && leadingZeros.length > 0 && !sign && trimmedStr[1] !== \".\") return str; //0123\n else{//no leading zeros or leading zeros are allowed\n const num = Number(trimmedStr);\n const numStr = \"\" + num;\n if(numStr.search(/[eE]/) !== -1){ //given number is long and parsed to eNotation\n if(options.eNotation) return num;\n else return str;\n }else if(eNotation){ //given number has enotation\n if(options.eNotation) return num;\n else return str;\n }else if(trimmedStr.indexOf(\".\") !== -1){ //floating number\n // const decimalPart = match[5].substr(1);\n // const intPart = trimmedStr.substr(0,trimmedStr.indexOf(\".\"));\n\n \n // const p = numStr.indexOf(\".\");\n // const givenIntPart = numStr.substr(0,p);\n // const givenDecPart = numStr.substr(p+1);\n if(numStr === \"0\" && (numTrimmedByZeros === \"\") ) return num; //0.0\n else if(numStr === numTrimmedByZeros) return num; //0.456. 0.79000\n else if( sign && numStr === \"-\"+numTrimmedByZeros) return num;\n else return str;\n }\n \n if(leadingZeros){\n // if(numTrimmedByZeros === numStr){\n // if(options.leadingZeros) return num;\n // else return str;\n // }else return str;\n if(numTrimmedByZeros === numStr) return num;\n else if(sign+numTrimmedByZeros === numStr) return num;\n else return str;\n }\n\n if(trimmedStr === numStr) return num;\n else if(trimmedStr === sign+numStr) return num;\n // else{\n // //number with +/- sign\n // trimmedStr.test(/[-+][0-9]);\n\n // }\n return str;\n }\n // else if(!eNotation && trimmedStr && trimmedStr !== Number(trimmedStr) ) return str;\n \n }else{ //non-numeric string\n return str;\n }\n }\n}\n\n/**\n * \n * @param {string} numStr without leading zeros\n * @returns \n */\nfunction trimZeros(numStr){\n if(numStr && numStr.indexOf(\".\") !== -1){//float\n numStr = numStr.replace(/0+$/, \"\"); //remove ending zeros\n if(numStr === \".\") numStr = \"0\";\n else if(numStr[0] === \".\") numStr = \"0\"+numStr;\n else if(numStr[numStr.length-1] === \".\") numStr = numStr.substr(0,numStr.length-1);\n return numStr;\n }\n return numStr;\n}\nmodule.exports = toNumber\n", "'use strict';\n///@ts-check\n\nconst util = require('../util');\nconst xmlNode = require('./xmlNode');\nconst readDocType = require(\"./DocTypeReader\");\nconst toNumber = require(\"strnum\");\n\nconst regx =\n '<((!\\\\[CDATA\\\\[([\\\\s\\\\S]*?)(]]>))|((NAME:)?(NAME))([^>]*)>|((\\\\/)(NAME)\\\\s*>))([^<]*)'\n .replace(/NAME/g, util.nameRegexp);\n\n//const tagsRegx = new RegExp(\"<(\\\\/?[\\\\w:\\\\-\\._]+)([^>]*)>(\\\\s*\"+cdataRegx+\")*([^<]+)?\",\"g\");\n//const tagsRegx = new RegExp(\"<(\\\\/?)((\\\\w*:)?([\\\\w:\\\\-\\._]+))([^>]*)>([^<]*)(\"+cdataRegx+\"([^<]*))*([^<]+)?\",\"g\");\n\nclass OrderedObjParser{\n constructor(options){\n this.options = options;\n this.currentNode = null;\n this.tagsNodeStack = [];\n this.docTypeEntities = {};\n this.lastEntities = {\n \"apos\" : { regex: /&(apos|#39|#x27);/g, val : \"'\"},\n \"gt\" : { regex: /&(gt|#62|#x3E);/g, val : \">\"},\n \"lt\" : { regex: /&(lt|#60|#x3C);/g, val : \"<\"},\n \"quot\" : { regex: /&(quot|#34|#x22);/g, val : \"\\\"\"},\n };\n this.ampEntity = { regex: /&(amp|#38|#x26);/g, val : \"&\"};\n this.htmlEntities = {\n \"space\": { regex: /&(nbsp|#160);/g, val: \" \" },\n // \"lt\" : { regex: /&(lt|#60);/g, val: \"<\" },\n // \"gt\" : { regex: /&(gt|#62);/g, val: \">\" },\n // \"amp\" : { regex: /&(amp|#38);/g, val: \"&\" },\n // \"quot\" : { regex: /&(quot|#34);/g, val: \"\\\"\" },\n // \"apos\" : { regex: /&(apos|#39);/g, val: \"'\" },\n \"cent\" : { regex: /&(cent|#162);/g, val: \"\u00A2\" },\n \"pound\" : { regex: /&(pound|#163);/g, val: \"\u00A3\" },\n \"yen\" : { regex: /&(yen|#165);/g, val: \"\u00A5\" },\n \"euro\" : { regex: /&(euro|#8364);/g, val: \"\u20AC\" },\n \"copyright\" : { regex: /&(copy|#169);/g, val: \"\u00A9\" },\n \"reg\" : { regex: /&(reg|#174);/g, val: \"\u00AE\" },\n \"inr\" : { regex: /&(inr|#8377);/g, val: \"\u20B9\" },\n };\n this.addExternalEntities = addExternalEntities;\n this.parseXml = parseXml;\n this.parseTextData = parseTextData;\n this.resolveNameSpace = resolveNameSpace;\n this.buildAttributesMap = buildAttributesMap;\n this.isItStopNode = isItStopNode;\n this.replaceEntitiesValue = replaceEntitiesValue;\n this.readStopNodeData = readStopNodeData;\n this.saveTextToParentTag = saveTextToParentTag;\n }\n\n}\n\nfunction addExternalEntities(externalEntities){\n const entKeys = Object.keys(externalEntities);\n for (let i = 0; i < entKeys.length; i++) {\n const ent = entKeys[i];\n this.lastEntities[ent] = {\n regex: new RegExp(\"&\"+ent+\";\",\"g\"),\n val : externalEntities[ent]\n }\n }\n}\n\n/**\n * @param {string} val\n * @param {string} tagName\n * @param {string} jPath\n * @param {boolean} dontTrim\n * @param {boolean} hasAttributes\n * @param {boolean} isLeafNode\n * @param {boolean} escapeEntities\n */\nfunction parseTextData(val, tagName, jPath, dontTrim, hasAttributes, isLeafNode, escapeEntities) {\n if (val !== undefined) {\n if (this.options.trimValues && !dontTrim) {\n val = val.trim();\n }\n if(val.length > 0){\n if(!escapeEntities) val = this.replaceEntitiesValue(val);\n \n const newval = this.options.tagValueProcessor(tagName, val, jPath, hasAttributes, isLeafNode);\n if(newval === null || newval === undefined){\n //don't parse\n return val;\n }else if(typeof newval !== typeof val || newval !== val){\n //overwrite\n return newval;\n }else if(this.options.trimValues){\n return parseValue(val, this.options.parseTagValue, this.options.numberParseOptions);\n }else{\n const trimmedVal = val.trim();\n if(trimmedVal === val){\n return parseValue(val, this.options.parseTagValue, this.options.numberParseOptions);\n }else{\n return val;\n }\n }\n }\n }\n}\n\nfunction resolveNameSpace(tagname) {\n if (this.options.removeNSPrefix) {\n const tags = tagname.split(':');\n const prefix = tagname.charAt(0) === '/' ? '/' : '';\n if (tags[0] === 'xmlns') {\n return '';\n }\n if (tags.length === 2) {\n tagname = prefix + tags[1];\n }\n }\n return tagname;\n}\n\n//TODO: change regex to capture NS\n//const attrsRegx = new RegExp(\"([\\\\w\\\\-\\\\.\\\\:]+)\\\\s*=\\\\s*(['\\\"])((.|\\n)*?)\\\\2\",\"gm\");\nconst attrsRegx = new RegExp('([^\\\\s=]+)\\\\s*(=\\\\s*([\\'\"])([\\\\s\\\\S]*?)\\\\3)?', 'gm');\n\nfunction buildAttributesMap(attrStr, jPath) {\n if (!this.options.ignoreAttributes && typeof attrStr === 'string') {\n // attrStr = attrStr.replace(/\\r?\\n/g, ' ');\n //attrStr = attrStr || attrStr.trim();\n\n const matches = util.getAllMatches(attrStr, attrsRegx);\n const len = matches.length; //don't make it inline\n const attrs = {};\n for (let i = 0; i < len; i++) {\n const attrName = this.resolveNameSpace(matches[i][1]);\n let oldVal = matches[i][4];\n let aName = this.options.attributeNamePrefix + attrName;\n if (attrName.length) {\n if (this.options.transformAttributeName) {\n aName = this.options.transformAttributeName(aName);\n }\n if(aName === \"__proto__\") aName = \"#__proto__\";\n if (oldVal !== undefined) {\n if (this.options.trimValues) {\n oldVal = oldVal.trim();\n }\n oldVal = this.replaceEntitiesValue(oldVal);\n const newVal = this.options.attributeValueProcessor(attrName, oldVal, jPath);\n if(newVal === null || newVal === undefined){\n //don't parse\n attrs[aName] = oldVal;\n }else if(typeof newVal !== typeof oldVal || newVal !== oldVal){\n //overwrite\n attrs[aName] = newVal;\n }else{\n //parse\n attrs[aName] = parseValue(\n oldVal,\n this.options.parseAttributeValue,\n this.options.numberParseOptions\n );\n }\n } else if (this.options.allowBooleanAttributes) {\n attrs[aName] = true;\n }\n }\n }\n if (!Object.keys(attrs).length) {\n return;\n }\n if (this.options.attributesGroupName) {\n const attrCollection = {};\n attrCollection[this.options.attributesGroupName] = attrs;\n return attrCollection;\n }\n return attrs;\n }\n}\n\nconst parseXml = function(xmlData) {\n xmlData = xmlData.replace(/\\r\\n?/g, \"\\n\"); //TODO: remove this line\n const xmlObj = new xmlNode('!xml');\n let currentNode = xmlObj;\n let textData = \"\";\n let jPath = \"\";\n for(let i=0; i< xmlData.length; i++){//for each char in XML data\n const ch = xmlData[i];\n if(ch === '<'){\n // const nextIndex = i+1;\n // const _2ndChar = xmlData[nextIndex];\n if( xmlData[i+1] === '/') {//Closing Tag\n const closeIndex = findClosingIndex(xmlData, \">\", i, \"Closing Tag is not closed.\")\n let tagName = xmlData.substring(i+2,closeIndex).trim();\n\n if(this.options.removeNSPrefix){\n const colonIndex = tagName.indexOf(\":\");\n if(colonIndex !== -1){\n tagName = tagName.substr(colonIndex+1);\n }\n }\n\n if(this.options.transformTagName) {\n tagName = this.options.transformTagName(tagName);\n }\n\n if(currentNode){\n textData = this.saveTextToParentTag(textData, currentNode, jPath);\n }\n\n jPath = jPath.substr(0, jPath.lastIndexOf(\".\"));\n \n currentNode = this.tagsNodeStack.pop();//avoid recurssion, set the parent tag scope\n textData = \"\";\n i = closeIndex;\n } else if( xmlData[i+1] === '?') {\n\n let tagData = readTagExp(xmlData,i, false, \"?>\");\n if(!tagData) throw new Error(\"Pi Tag is not closed.\");\n\n textData = this.saveTextToParentTag(textData, currentNode, jPath);\n if( (this.options.ignoreDeclaration && tagData.tagName === \"?xml\") || this.options.ignorePiTags){\n\n }else{\n \n const childNode = new xmlNode(tagData.tagName);\n childNode.add(this.options.textNodeName, \"\");\n \n if(tagData.tagName !== tagData.tagExp && tagData.attrExpPresent){\n childNode[\":@\"] = this.buildAttributesMap(tagData.tagExp, jPath);\n }\n currentNode.addChild(childNode);\n\n }\n\n\n i = tagData.closeIndex + 1;\n } else if(xmlData.substr(i + 1, 3) === '!--') {\n const endIndex = findClosingIndex(xmlData, \"-->\", i+4, \"Comment is not closed.\")\n if(this.options.commentPropName){\n const comment = xmlData.substring(i + 4, endIndex - 2);\n\n textData = this.saveTextToParentTag(textData, currentNode, jPath);\n\n currentNode.add(this.options.commentPropName, [ { [this.options.textNodeName] : comment } ]);\n }\n i = endIndex;\n } else if( xmlData.substr(i + 1, 2) === '!D') {\n const result = readDocType(xmlData, i);\n this.docTypeEntities = result.entities;\n i = result.i;\n }else if(xmlData.substr(i + 1, 2) === '![') {\n const closeIndex = findClosingIndex(xmlData, \"]]>\", i, \"CDATA is not closed.\") - 2;\n const tagExp = xmlData.substring(i + 9,closeIndex);\n\n textData = this.saveTextToParentTag(textData, currentNode, jPath);\n\n //cdata should be set even if it is 0 length string\n if(this.options.cdataPropName){\n // let val = this.parseTextData(tagExp, this.options.cdataPropName, jPath + \".\" + this.options.cdataPropName, true, false, true);\n // if(!val) val = \"\";\n currentNode.add(this.options.cdataPropName, [ { [this.options.textNodeName] : tagExp } ]);\n }else{\n let val = this.parseTextData(tagExp, currentNode.tagname, jPath, true, false, true);\n if(val == undefined) val = \"\";\n currentNode.add(this.options.textNodeName, val);\n }\n \n i = closeIndex + 2;\n }else {//Opening tag\n let result = readTagExp(xmlData,i, this.options.removeNSPrefix);\n let tagName= result.tagName;\n let tagExp = result.tagExp;\n let attrExpPresent = result.attrExpPresent;\n let closeIndex = result.closeIndex;\n\n if (this.options.transformTagName) {\n tagName = this.options.transformTagName(tagName);\n }\n \n //save text as child node\n if (currentNode && textData) {\n if(currentNode.tagname !== '!xml'){\n //when nested tag is found\n textData = this.saveTextToParentTag(textData, currentNode, jPath, false);\n }\n }\n\n if(tagName !== xmlObj.tagname){\n jPath += jPath ? \".\" + tagName : tagName;\n }\n\n //check if last tag was unpaired tag\n const lastTag = currentNode;\n if(lastTag && this.options.unpairedTags.indexOf(lastTag.tagname) !== -1 ){\n currentNode = this.tagsNodeStack.pop();\n }\n\n if (this.isItStopNode(this.options.stopNodes, jPath, tagName)) { //TODO: namespace\n let tagContent = \"\";\n //self-closing tag\n if(tagExp.length > 0 && tagExp.lastIndexOf(\"/\") === tagExp.length - 1){\n i = result.closeIndex;\n }\n //boolean tag\n else if(this.options.unpairedTags.indexOf(tagName) !== -1){\n i = result.closeIndex;\n }\n //normal tag\n else{\n //read until closing tag is found\n const result = this.readStopNodeData(xmlData, tagName, closeIndex + 1);\n if(!result) throw new Error(`Unexpected end of ${tagName}`);\n i = result.i;\n tagContent = result.tagContent;\n }\n\n const childNode = new xmlNode(tagName);\n if(tagName !== tagExp && attrExpPresent){\n childNode[\":@\"] = this.buildAttributesMap(tagExp, jPath);\n }\n if(tagContent) {\n tagContent = this.parseTextData(tagContent, tagName, jPath, true, attrExpPresent, true, true);\n }\n \n jPath = jPath.substr(0, jPath.lastIndexOf(\".\"));\n childNode.add(this.options.textNodeName, tagContent);\n \n currentNode.addChild(childNode);\n }else{\n //selfClosing tag\n if(tagExp.length > 0 && tagExp.lastIndexOf(\"/\") === tagExp.length - 1){\n if(tagName[tagName.length - 1] === \"/\"){ //remove trailing '/'\n tagName = tagName.substr(0, tagName.length - 1);\n tagExp = tagName;\n }else{\n tagExp = tagExp.substr(0, tagExp.length - 1);\n }\n \n if(this.options.transformTagName) {\n tagName = this.options.transformTagName(tagName);\n }\n\n const childNode = new xmlNode(tagName);\n if(tagName !== tagExp && attrExpPresent){\n childNode[\":@\"] = this.buildAttributesMap(tagExp, jPath);\n }\n jPath = jPath.substr(0, jPath.lastIndexOf(\".\"));\n currentNode.addChild(childNode);\n }\n //opening tag\n else{\n const childNode = new xmlNode( tagName);\n this.tagsNodeStack.push(currentNode);\n \n if(tagName !== tagExp && attrExpPresent){\n childNode[\":@\"] = this.buildAttributesMap(tagExp, jPath);\n }\n currentNode.addChild(childNode);\n currentNode = childNode;\n }\n textData = \"\";\n i = closeIndex;\n }\n }\n }else{\n textData += xmlData[i];\n }\n }\n return xmlObj.child;\n}\n\nconst replaceEntitiesValue = function(val){\n\n if(this.options.processEntities){\n for(let entityName in this.docTypeEntities){\n const entity = this.docTypeEntities[entityName];\n val = val.replace( entity.regx, entity.val);\n }\n for(let entityName in this.lastEntities){\n const entity = this.lastEntities[entityName];\n val = val.replace( entity.regex, entity.val);\n }\n if(this.options.htmlEntities){\n for(let entityName in this.htmlEntities){\n const entity = this.htmlEntities[entityName];\n val = val.replace( entity.regex, entity.val);\n }\n }\n val = val.replace( this.ampEntity.regex, this.ampEntity.val);\n }\n return val;\n}\nfunction saveTextToParentTag(textData, currentNode, jPath, isLeafNode) {\n if (textData) { //store previously collected data as textNode\n if(isLeafNode === undefined) isLeafNode = Object.keys(currentNode.child).length === 0\n \n textData = this.parseTextData(textData,\n currentNode.tagname,\n jPath,\n false,\n currentNode[\":@\"] ? Object.keys(currentNode[\":@\"]).length !== 0 : false,\n isLeafNode);\n\n if (textData !== undefined && textData !== \"\")\n currentNode.add(this.options.textNodeName, textData);\n textData = \"\";\n }\n return textData;\n}\n\n//TODO: use jPath to simplify the logic\n/**\n * \n * @param {string[]} stopNodes \n * @param {string} jPath\n * @param {string} currentTagName \n */\nfunction isItStopNode(stopNodes, jPath, currentTagName){\n const allNodesExp = \"*.\" + currentTagName;\n for (const stopNodePath in stopNodes) {\n const stopNodeExp = stopNodes[stopNodePath];\n if( allNodesExp === stopNodeExp || jPath === stopNodeExp ) return true;\n }\n return false;\n}\n\n/**\n * Returns the tag Expression and where it is ending handling single-dobule quotes situation\n * @param {string} xmlData \n * @param {number} i starting index\n * @returns \n */\nfunction tagExpWithClosingIndex(xmlData, i, closingChar = \">\"){\n let attrBoundary;\n let tagExp = \"\";\n for (let index = i; index < xmlData.length; index++) {\n let ch = xmlData[index];\n if (attrBoundary) {\n if (ch === attrBoundary) attrBoundary = \"\";//reset\n } else if (ch === '\"' || ch === \"'\") {\n attrBoundary = ch;\n } else if (ch === closingChar[0]) {\n if(closingChar[1]){\n if(xmlData[index + 1] === closingChar[1]){\n return {\n data: tagExp,\n index: index\n }\n }\n }else{\n return {\n data: tagExp,\n index: index\n }\n }\n } else if (ch === '\\t') {\n ch = \" \"\n }\n tagExp += ch;\n }\n}\n\nfunction findClosingIndex(xmlData, str, i, errMsg){\n const closingIndex = xmlData.indexOf(str, i);\n if(closingIndex === -1){\n throw new Error(errMsg)\n }else{\n return closingIndex + str.length - 1;\n }\n}\n\nfunction readTagExp(xmlData,i, removeNSPrefix, closingChar = \">\"){\n const result = tagExpWithClosingIndex(xmlData, i+1, closingChar);\n if(!result) return;\n let tagExp = result.data;\n const closeIndex = result.index;\n const separatorIndex = tagExp.search(/\\s/);\n let tagName = tagExp;\n let attrExpPresent = true;\n if(separatorIndex !== -1){//separate tag name and attributes expression\n tagName = tagExp.substr(0, separatorIndex).replace(/\\s\\s*$/, '');\n tagExp = tagExp.substr(separatorIndex + 1);\n }\n\n if(removeNSPrefix){\n const colonIndex = tagName.indexOf(\":\");\n if(colonIndex !== -1){\n tagName = tagName.substr(colonIndex+1);\n attrExpPresent = tagName !== result.data.substr(colonIndex + 1);\n }\n }\n\n return {\n tagName: tagName,\n tagExp: tagExp,\n closeIndex: closeIndex,\n attrExpPresent: attrExpPresent,\n }\n}\n/**\n * find paired tag for a stop node\n * @param {string} xmlData \n * @param {string} tagName \n * @param {number} i \n */\nfunction readStopNodeData(xmlData, tagName, i){\n const startIndex = i;\n // Starting at 1 since we already have an open tag\n let openTagCount = 1;\n\n for (; i < xmlData.length; i++) {\n if( xmlData[i] === \"<\"){ \n if (xmlData[i+1] === \"/\") {//close tag\n const closeIndex = findClosingIndex(xmlData, \">\", i, `${tagName} is not closed`);\n let closeTagName = xmlData.substring(i+2,closeIndex).trim();\n if(closeTagName === tagName){\n openTagCount--;\n if (openTagCount === 0) {\n return {\n tagContent: xmlData.substring(startIndex, i),\n i : closeIndex\n }\n }\n }\n i=closeIndex;\n } else if(xmlData[i+1] === '?') { \n const closeIndex = findClosingIndex(xmlData, \"?>\", i+1, \"StopNode is not closed.\")\n i=closeIndex;\n } else if(xmlData.substr(i + 1, 3) === '!--') { \n const closeIndex = findClosingIndex(xmlData, \"-->\", i+3, \"StopNode is not closed.\")\n i=closeIndex;\n } else if(xmlData.substr(i + 1, 2) === '![') { \n const closeIndex = findClosingIndex(xmlData, \"]]>\", i, \"StopNode is not closed.\") - 2;\n i=closeIndex;\n } else {\n const tagData = readTagExp(xmlData, i, '>')\n\n if (tagData) {\n const openTagName = tagData && tagData.tagName;\n if (openTagName === tagName && tagData.tagExp[tagData.tagExp.length-1] !== \"/\") {\n openTagCount++;\n }\n i=tagData.closeIndex;\n }\n }\n }\n }//end for loop\n}\n\nfunction parseValue(val, shouldParse, options) {\n if (shouldParse && typeof val === 'string') {\n //console.log(options)\n const newval = val.trim();\n if(newval === 'true' ) return true;\n else if(newval === 'false' ) return false;\n else return toNumber(val, options);\n } else {\n if (util.isExist(val)) {\n return val;\n } else {\n return '';\n }\n }\n}\n\n\nmodule.exports = OrderedObjParser;\n", "'use strict';\n\n/**\n * \n * @param {array} node \n * @param {any} options \n * @returns \n */\nfunction prettify(node, options){\n return compress( node, options);\n}\n\n/**\n * \n * @param {array} arr \n * @param {object} options \n * @param {string} jPath \n * @returns object\n */\nfunction compress(arr, options, jPath){\n let text;\n const compressedObj = {};\n for (let i = 0; i < arr.length; i++) {\n const tagObj = arr[i];\n const property = propName(tagObj);\n let newJpath = \"\";\n if(jPath === undefined) newJpath = property;\n else newJpath = jPath + \".\" + property;\n\n if(property === options.textNodeName){\n if(text === undefined) text = tagObj[property];\n else text += \"\" + tagObj[property];\n }else if(property === undefined){\n continue;\n }else if(tagObj[property]){\n \n let val = compress(tagObj[property], options, newJpath);\n const isLeaf = isLeafTag(val, options);\n\n if(tagObj[\":@\"]){\n assignAttributes( val, tagObj[\":@\"], newJpath, options);\n }else if(Object.keys(val).length === 1 && val[options.textNodeName] !== undefined && !options.alwaysCreateTextNode){\n val = val[options.textNodeName];\n }else if(Object.keys(val).length === 0){\n if(options.alwaysCreateTextNode) val[options.textNodeName] = \"\";\n else val = \"\";\n }\n\n if(compressedObj[property] !== undefined && compressedObj.hasOwnProperty(property)) {\n if(!Array.isArray(compressedObj[property])) {\n compressedObj[property] = [ compressedObj[property] ];\n }\n compressedObj[property].push(val);\n }else{\n //TODO: if a node is not an array, then check if it should be an array\n //also determine if it is a leaf node\n if (options.isArray(property, newJpath, isLeaf )) {\n compressedObj[property] = [val];\n }else{\n compressedObj[property] = val;\n }\n }\n }\n \n }\n // if(text && text.length > 0) compressedObj[options.textNodeName] = text;\n if(typeof text === \"string\"){\n if(text.length > 0) compressedObj[options.textNodeName] = text;\n }else if(text !== undefined) compressedObj[options.textNodeName] = text;\n return compressedObj;\n}\n\nfunction propName(obj){\n const keys = Object.keys(obj);\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n if(key !== \":@\") return key;\n }\n}\n\nfunction assignAttributes(obj, attrMap, jpath, options){\n if (attrMap) {\n const keys = Object.keys(attrMap);\n const len = keys.length; //don't make it inline\n for (let i = 0; i < len; i++) {\n const atrrName = keys[i];\n if (options.isArray(atrrName, jpath + \".\" + atrrName, true, true)) {\n obj[atrrName] = [ attrMap[atrrName] ];\n } else {\n obj[atrrName] = attrMap[atrrName];\n }\n }\n }\n}\n\nfunction isLeafTag(obj, options){\n const propCount = Object.keys(obj).length;\n if( propCount === 0 || (propCount === 1 && obj[options.textNodeName]) ) return true;\n return false;\n}\nexports.prettify = prettify;\n", "const { buildOptions} = require(\"./OptionsBuilder\");\nconst OrderedObjParser = require(\"./OrderedObjParser\");\nconst { prettify} = require(\"./node2json\");\nconst validator = require('../validator');\n\nclass XMLParser{\n \n constructor(options){\n this.externalEntities = {};\n this.options = buildOptions(options);\n \n }\n /**\n * Parse XML dats to JS object \n * @param {string|Buffer} xmlData \n * @param {boolean|Object} validationOption \n */\n parse(xmlData,validationOption){\n if(typeof xmlData === \"string\"){\n }else if( xmlData.toString){\n xmlData = xmlData.toString();\n }else{\n throw new Error(\"XML data is accepted in String or Bytes[] form.\")\n }\n if( validationOption){\n if(validationOption === true) validationOption = {}; //validate with default options\n \n const result = validator.validate(xmlData, validationOption);\n if (result !== true) {\n throw Error( `${result.err.msg}:${result.err.line}:${result.err.col}` )\n }\n }\n const orderedObjParser = new OrderedObjParser(this.options);\n orderedObjParser.addExternalEntities(this.externalEntities);\n const orderedResult = orderedObjParser.parseXml(xmlData);\n if(this.options.preserveOrder || orderedResult === undefined) return orderedResult;\n else return prettify(orderedResult, this.options);\n }\n\n /**\n * Add Entity which is not by default supported by this library\n * @param {string} key \n * @param {string} value \n */\n addEntity(key, value){\n if(value.indexOf(\"&\") !== -1){\n throw new Error(\"Entity value can't have '&'\")\n }else if(key.indexOf(\"&\") !== -1 || key.indexOf(\";\") !== -1){\n throw new Error(\"An entity must be set without '&' and ';'. Eg. use '#xD' for ' '\")\n }else if(value === \"&\"){\n throw new Error(\"An entity with value '&' is not permitted\");\n }else{\n this.externalEntities[key] = value;\n }\n }\n}\n\nmodule.exports = XMLParser;", "const EOL = \"\\n\";\n\n/**\n * \n * @param {array} jArray \n * @param {any} options \n * @returns \n */\nfunction toXml(jArray, options) {\n let indentation = \"\";\n if (options.format && options.indentBy.length > 0) {\n indentation = EOL;\n }\n return arrToStr(jArray, options, \"\", indentation);\n}\n\nfunction arrToStr(arr, options, jPath, indentation) {\n let xmlStr = \"\";\n let isPreviousElementTag = false;\n\n for (let i = 0; i < arr.length; i++) {\n const tagObj = arr[i];\n const tagName = propName(tagObj);\n let newJPath = \"\";\n if (jPath.length === 0) newJPath = tagName\n else newJPath = `${jPath}.${tagName}`;\n\n if (tagName === options.textNodeName) {\n let tagText = tagObj[tagName];\n if (!isStopNode(newJPath, options)) {\n tagText = options.tagValueProcessor(tagName, tagText);\n tagText = replaceEntitiesValue(tagText, options);\n }\n if (isPreviousElementTag) {\n xmlStr += indentation;\n }\n xmlStr += tagText;\n isPreviousElementTag = false;\n continue;\n } else if (tagName === options.cdataPropName) {\n if (isPreviousElementTag) {\n xmlStr += indentation;\n }\n xmlStr += ``;\n isPreviousElementTag = false;\n continue;\n } else if (tagName === options.commentPropName) {\n xmlStr += indentation + ``;\n isPreviousElementTag = true;\n continue;\n } else if (tagName[0] === \"?\") {\n const attStr = attr_to_str(tagObj[\":@\"], options);\n const tempInd = tagName === \"?xml\" ? \"\" : indentation;\n let piTextNodeName = tagObj[tagName][0][options.textNodeName];\n piTextNodeName = piTextNodeName.length !== 0 ? \" \" + piTextNodeName : \"\"; //remove extra spacing\n xmlStr += tempInd + `<${tagName}${piTextNodeName}${attStr}?>`;\n isPreviousElementTag = true;\n continue;\n }\n let newIdentation = indentation;\n if (newIdentation !== \"\") {\n newIdentation += options.indentBy;\n }\n const attStr = attr_to_str(tagObj[\":@\"], options);\n const tagStart = indentation + `<${tagName}${attStr}`;\n const tagValue = arrToStr(tagObj[tagName], options, newJPath, newIdentation);\n if (options.unpairedTags.indexOf(tagName) !== -1) {\n if (options.suppressUnpairedNode) xmlStr += tagStart + \">\";\n else xmlStr += tagStart + \"/>\";\n } else if ((!tagValue || tagValue.length === 0) && options.suppressEmptyNode) {\n xmlStr += tagStart + \"/>\";\n } else if (tagValue && tagValue.endsWith(\">\")) {\n xmlStr += tagStart + `>${tagValue}${indentation}`;\n } else {\n xmlStr += tagStart + \">\";\n if (tagValue && indentation !== \"\" && (tagValue.includes(\"/>\") || tagValue.includes(\"`;\n }\n isPreviousElementTag = true;\n }\n\n return xmlStr;\n}\n\nfunction propName(obj) {\n const keys = Object.keys(obj);\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n if (key !== \":@\") return key;\n }\n}\n\nfunction attr_to_str(attrMap, options) {\n let attrStr = \"\";\n if (attrMap && !options.ignoreAttributes) {\n for (let attr in attrMap) {\n let attrVal = options.attributeValueProcessor(attr, attrMap[attr]);\n attrVal = replaceEntitiesValue(attrVal, options);\n if (attrVal === true && options.suppressBooleanAttributes) {\n attrStr += ` ${attr.substr(options.attributeNamePrefix.length)}`;\n } else {\n attrStr += ` ${attr.substr(options.attributeNamePrefix.length)}=\"${attrVal}\"`;\n }\n }\n }\n return attrStr;\n}\n\nfunction isStopNode(jPath, options) {\n jPath = jPath.substr(0, jPath.length - options.textNodeName.length - 1);\n let tagName = jPath.substr(jPath.lastIndexOf(\".\") + 1);\n for (let index in options.stopNodes) {\n if (options.stopNodes[index] === jPath || options.stopNodes[index] === \"*.\" + tagName) return true;\n }\n return false;\n}\n\nfunction replaceEntitiesValue(textValue, options) {\n if (textValue && textValue.length > 0 && options.processEntities) {\n for (let i = 0; i < options.entities.length; i++) {\n const entity = options.entities[i];\n textValue = textValue.replace(entity.regex, entity.val);\n }\n }\n return textValue;\n}\nmodule.exports = toXml;\n", "'use strict';\n//parse Empty Node as self closing node\nconst buildFromOrderedJs = require('./orderedJs2Xml');\n\nconst defaultOptions = {\n attributeNamePrefix: '@_',\n attributesGroupName: false,\n textNodeName: '#text',\n ignoreAttributes: true,\n cdataPropName: false,\n format: false,\n indentBy: ' ',\n suppressEmptyNode: false,\n suppressUnpairedNode: true,\n suppressBooleanAttributes: true,\n tagValueProcessor: function(key, a) {\n return a;\n },\n attributeValueProcessor: function(attrName, a) {\n return a;\n },\n preserveOrder: false,\n commentPropName: false,\n unpairedTags: [],\n entities: [\n { regex: new RegExp(\"&\", \"g\"), val: \"&\" },//it must be on top\n { regex: new RegExp(\">\", \"g\"), val: \">\" },\n { regex: new RegExp(\"<\", \"g\"), val: \"<\" },\n { regex: new RegExp(\"\\'\", \"g\"), val: \"'\" },\n { regex: new RegExp(\"\\\"\", \"g\"), val: \""\" }\n ],\n processEntities: true,\n stopNodes: [],\n // transformTagName: false,\n // transformAttributeName: false,\n};\n\nfunction Builder(options) {\n this.options = Object.assign({}, defaultOptions, options);\n if (this.options.ignoreAttributes || this.options.attributesGroupName) {\n this.isAttribute = function(/*a*/) {\n return false;\n };\n } else {\n this.attrPrefixLen = this.options.attributeNamePrefix.length;\n this.isAttribute = isAttribute;\n }\n\n this.processTextOrObjNode = processTextOrObjNode\n\n if (this.options.format) {\n this.indentate = indentate;\n this.tagEndChar = '>\\n';\n this.newLine = '\\n';\n } else {\n this.indentate = function() {\n return '';\n };\n this.tagEndChar = '>';\n this.newLine = '';\n }\n}\n\nBuilder.prototype.build = function(jObj) {\n if(this.options.preserveOrder){\n return buildFromOrderedJs(jObj, this.options);\n }else {\n if(Array.isArray(jObj) && this.options.arrayNodeName && this.options.arrayNodeName.length > 1){\n jObj = {\n [this.options.arrayNodeName] : jObj\n }\n }\n return this.j2x(jObj, 0).val;\n }\n};\n\nBuilder.prototype.j2x = function(jObj, level) {\n let attrStr = '';\n let val = '';\n for (let key in jObj) {\n if (typeof jObj[key] === 'undefined') {\n // supress undefined node\n } else if (jObj[key] === null) {\n if(key[0] === \"?\") val += this.indentate(level) + '<' + key + '?' + this.tagEndChar;\n else val += this.indentate(level) + '<' + key + '/' + this.tagEndChar;\n // val += this.indentate(level) + '<' + key + '/' + this.tagEndChar;\n } else if (jObj[key] instanceof Date) {\n val += this.buildTextValNode(jObj[key], key, '', level);\n } else if (typeof jObj[key] !== 'object') {\n //premitive type\n const attr = this.isAttribute(key);\n if (attr) {\n attrStr += this.buildAttrPairStr(attr, '' + jObj[key]);\n }else {\n //tag value\n if (key === this.options.textNodeName) {\n let newval = this.options.tagValueProcessor(key, '' + jObj[key]);\n val += this.replaceEntitiesValue(newval);\n } else {\n val += this.buildTextValNode(jObj[key], key, '', level);\n }\n }\n } else if (Array.isArray(jObj[key])) {\n //repeated nodes\n const arrLen = jObj[key].length;\n for (let j = 0; j < arrLen; j++) {\n const item = jObj[key][j];\n if (typeof item === 'undefined') {\n // supress undefined node\n } else if (item === null) {\n if(key[0] === \"?\") val += this.indentate(level) + '<' + key + '?' + this.tagEndChar;\n else val += this.indentate(level) + '<' + key + '/' + this.tagEndChar;\n // val += this.indentate(level) + '<' + key + '/' + this.tagEndChar;\n } else if (typeof item === 'object') {\n val += this.processTextOrObjNode(item, key, level)\n } else {\n val += this.buildTextValNode(item, key, '', level);\n }\n }\n } else {\n //nested node\n if (this.options.attributesGroupName && key === this.options.attributesGroupName) {\n const Ks = Object.keys(jObj[key]);\n const L = Ks.length;\n for (let j = 0; j < L; j++) {\n attrStr += this.buildAttrPairStr(Ks[j], '' + jObj[key][Ks[j]]);\n }\n } else {\n val += this.processTextOrObjNode(jObj[key], key, level)\n }\n }\n }\n return {attrStr: attrStr, val: val};\n};\n\nBuilder.prototype.buildAttrPairStr = function(attrName, val){\n val = this.options.attributeValueProcessor(attrName, '' + val);\n val = this.replaceEntitiesValue(val);\n if (this.options.suppressBooleanAttributes && val === \"true\") {\n return ' ' + attrName;\n } else return ' ' + attrName + '=\"' + val + '\"';\n}\n\nfunction processTextOrObjNode (object, key, level) {\n const result = this.j2x(object, level + 1);\n if (object[this.options.textNodeName] !== undefined && Object.keys(object).length === 1) {\n return this.buildTextValNode(object[this.options.textNodeName], key, result.attrStr, level);\n } else {\n return this.buildObjectNode(result.val, key, result.attrStr, level);\n }\n}\n\nBuilder.prototype.buildObjectNode = function(val, key, attrStr, level) {\n if(val === \"\"){\n if(key[0] === \"?\") return this.indentate(level) + '<' + key + attrStr+ '?' + this.tagEndChar;\n else {\n return this.indentate(level) + '<' + key + attrStr + this.closeTag(key) + this.tagEndChar;\n }\n }else{\n\n let tagEndExp = '' + val + tagEndExp );\n } else if (this.options.commentPropName !== false && key === this.options.commentPropName && piClosingChar.length === 0) {\n return this.indentate(level) + `` + this.newLine;\n }else {\n return (\n this.indentate(level) + '<' + key + attrStr + piClosingChar + this.tagEndChar +\n val +\n this.indentate(level) + tagEndExp );\n }\n }\n}\n\nBuilder.prototype.closeTag = function(key){\n let closeTag = \"\";\n if(this.options.unpairedTags.indexOf(key) !== -1){ //unpaired\n if(!this.options.suppressUnpairedNode) closeTag = \"/\"\n }else if(this.options.suppressEmptyNode){ //empty\n closeTag = \"/\";\n }else{\n closeTag = `>` + this.newLine;\n }else if (this.options.commentPropName !== false && key === this.options.commentPropName) {\n return this.indentate(level) + `` + this.newLine;\n }else if(key[0] === \"?\") {//PI tag\n return this.indentate(level) + '<' + key + attrStr+ '?' + this.tagEndChar; \n }else{\n let textValue = this.options.tagValueProcessor(key, val);\n textValue = this.replaceEntitiesValue(textValue);\n \n if( textValue === ''){\n return this.indentate(level) + '<' + key + attrStr + this.closeTag(key) + this.tagEndChar;\n }else{\n return this.indentate(level) + '<' + key + attrStr + '>' +\n textValue +\n ' 0 && this.options.processEntities){\n for (let i=0; i {\n try {\n const inputs = parseInputs();\n const reports = await getTestReports(inputs);\n core.startGroup(`\uD83D\uDE80 Publish results`);\n await publishAnnotations(inputs, reports);\n await publishCommentOnPullRequest(inputs.token, reports);\n core.endGroup();\n } catch (error: any) {\n core.setFailed(error.message);\n }\n}\n\nrun();\n", "require('./').install();\n", "import * as core from '@actions/core';\n\nexport class InvalidGithubTokenError extends Error {}\n\nexport function parseInputs() {\n core.startGroup(`\uD83D\uDCD6 Parsing input values`);\n\n const token = core.getInput('github_token') || process.env.GITHUB_TOKEN;\n if (!token) {\n throw new InvalidGithubTokenError('\u274C A token is required to execute this action');\n }\n const values = {\n token,\n commit: core.getInput('commit'),\n jobName: core.getInput('job_name'),\n summary: core.getMultilineInput('summary'),\n checkName: core.getMultilineInput('check_name'),\n reportPaths: core.getMultilineInput('report_paths'),\n updateCheck: core.getInput('update_check') === 'true',\n requireTests: core.getInput('require_tests') === 'true',\n failOnFailure: core.getInput('fail_on_failure') === 'true',\n projectTokenDictionary: core.getMultilineInput('project_api_key_map'),\n };\n core.debug(JSON.stringify(values, undefined, 4));\n core.endGroup();\n return values;\n}\n", "import * as fs from 'fs';\nimport * as core from '@actions/core';\nimport * as glob from '@actions/glob';\nimport * as github from '@actions/github';\nimport { XMLParser } from 'fast-xml-parser';\nimport { escapeEmoji, retrieve, castArray, parseTestimFailureMessage, getTestStatusesFromPublicAPI } from './utils';\nimport type { parseInputs } from './inputParser';\n\ninterface InternalTestResult {\n name?: string;\n fileName: string;\n skipped: number;\n totalCount: number;\n failedEvaluating: number;\n annotations: Annotation[];\n}\n\nexport interface TestResult {\n fileName: string;\n checkName: string;\n summary: string;\n totalCount: number;\n failedEvaluating: number;\n skipped: number;\n failed: number;\n passed: number;\n annotations: Annotation[];\n}\n\nexport interface Annotation {\n annotation_level: 'failure' | 'notice' | 'warning';\n title: string;\n message: string;\n path: string;\n end_line: number;\n start_line: number;\n raw_details: string;\n testStatus: string;\n isTestimTest: boolean;\n}\n\nexport interface JUnitTestCase {\n name: string;\n classname: string;\n ownedBy: string;\n ownerEmail: string;\n time: string;\n 'system-out': string;\n failure?: { message: string };\n skipped?: {};\n}\n\ninterface JUnitSuite {\n failure: string;\n 'failure-evaluating': string;\n name: string;\n skipped: string;\n tests: string;\n timestamp: string;\n testcase: JUnitTestCase | JUnitTestCase[];\n}\ninterface JUnitReport {\n testsuite?: JUnitSuite;\n testsuites?: { testsuite?: JUnitSuite };\n}\n\nasync function parseFile(file: string, projectTokenDictionaryStrs: string[]) {\n core.debug(`Parsing file ${file}`);\n\n const data: string = fs.readFileSync(file, 'utf8');\n const parser = new XMLParser({ allowBooleanAttributes: true, ignoreAttributes: false, attributeNamePrefix: '' });\n const report = parser.parse(data) as Partial;\n\n return parseSuite(report, file, projectTokenDictionaryStrs);\n}\n\nasync function parseSuite(report: JUnitReport, fileName: string, projectTokenDictionaryStrs: string[]) {\n const testsuite = report.testsuite || report.testsuites?.testsuite;\n const result: InternalTestResult = { fileName, name: testsuite?.name, totalCount: 0, skipped: 0, failedEvaluating: parseInt(testsuite?.['failure-evaluating'] || '0') || 0, annotations: [] };\n if (!testsuite?.testcase) {\n return result;\n }\n\n const testCases = castArray(testsuite.testcase);\n const testListInfo = await getTestStatusesFromPublicAPI(testCases, projectTokenDictionaryStrs);\n\n for (const { failure, skipped, name, ['system-out']: systemOut, classname } of testCases) {\n result.totalCount++;\n const success = !failure;\n\n if (typeof skipped !== 'undefined') {\n result.skipped++;\n }\n\n const isTestimTest = systemOut?.startsWith('https://app.testim.io/#/project');\n const { testId } = systemOut?.match(/\\/test\\/(?.*)\\?/)?.groups || {};\n const testStatus = (testId && testListInfo?.find(({ _id }) => _id === testId)?.testStatus) || 'draft';\n\n let annotation_level: Annotation['annotation_level'] = 'notice';\n if (!success) {\n annotation_level = testStatus === 'evaluating' ? 'warning' : 'failure';\n }\n\n result.annotations.push({\n testStatus,\n isTestimTest,\n annotation_level,\n title: escapeEmoji(isTestimTest ? name : `${classname} - ${name}`),\n message: isTestimTest ? (failure ? parseTestimFailureMessage(failure.message) : systemOut) : failure?.toString() || '',\n raw_details: `${escapeEmoji(classname)} - ${name}:\\n(${failure?.message})`,\n path: systemOut || 'unknown',\n end_line: 1,\n start_line: 1,\n });\n }\n return result;\n}\n\nasync function parseTestReports(checkName: string, summary: string, reportPathsGlob: string, projectTokenDictionaryStrs: string[]) {\n core.debug(`Process test report for: ${reportPathsGlob} (${checkName})`);\n const testResults: TestResult[] = [];\n\n const globber = await glob.create(reportPathsGlob);\n for await (const file of globber.globGenerator()) {\n core.debug(`Parsing report file: ${file}`);\n\n const { totalCount, skipped, annotations, failedEvaluating, name, fileName } = await parseFile(file, projectTokenDictionaryStrs);\n if (totalCount === 0) {\n continue;\n }\n const failed = annotations.filter(an => an.annotation_level !== 'notice').length;\n const passed = totalCount - failed - skipped;\n testResults.push({\n summary,\n checkName: name || checkName,\n fileName,\n totalCount,\n skipped,\n failedEvaluating,\n annotations,\n failed,\n passed,\n });\n }\n\n return testResults;\n}\n\nclass NoTestsFoundError extends Error {}\n\nexport async function getTestReports(inputs: Readonly>) {\n core.startGroup(`\uD83D\uDCE6 Process test results`);\n const reportsCount = inputs.reportPaths.length;\n\n core.info(`Retrieved ${reportsCount} report globs/files to process.`);\n\n const allResults = await Promise.all(\n inputs.reportPaths.map(async (_, i) =>\n parseTestReports(\n retrieve('checkName', inputs.checkName, i, reportsCount),\n retrieve('summary', inputs.summary, i, reportsCount),\n retrieve('reportPaths', inputs.reportPaths, i, reportsCount),\n inputs.projectTokenDictionary,\n ),\n ),\n );\n const testResults = allResults.flat();\n const accumulatedResult: TestResult = {\n checkName: '',\n fileName: '',\n summary: '',\n totalCount: 0,\n skipped: 0,\n failed: 0,\n passed: 0,\n failedEvaluating: 0,\n annotations: [],\n };\n for (const tr of testResults) {\n accumulatedResult.totalCount += tr.totalCount;\n accumulatedResult.skipped += tr.skipped;\n accumulatedResult.failed += tr.failed;\n accumulatedResult.passed += tr.passed;\n accumulatedResult.failedEvaluating += tr.failedEvaluating;\n accumulatedResult.annotations.push(...tr.annotations);\n }\n\n core.setOutput('total', accumulatedResult.totalCount);\n core.setOutput('passed', accumulatedResult.passed);\n core.setOutput('skipped', accumulatedResult.skipped);\n core.setOutput('failed', accumulatedResult.failed);\n core.setOutput('failedEvaluating', accumulatedResult.failedEvaluating);\n\n const foundResults = accumulatedResult.totalCount > 0 || accumulatedResult.skipped > 0;\n if (!foundResults && inputs.requireTests) {\n throw new NoTestsFoundError(`\u274C No test results found for ${inputs.checkName}`);\n }\n\n const pullRequest = github.context.payload.pull_request;\n const link = pullRequest?.html_url || github.context.ref;\n const actualFailed = accumulatedResult.failed - accumulatedResult.failedEvaluating;\n const conclusion: 'success' | 'failure' = actualFailed <= 0 ? 'success' : 'failure';\n const headSha = inputs.commit || pullRequest?.head.sha || github.context.sha;\n core.info(`\u2139\uFE0F Posting with conclusion '${conclusion}' to ${link} (sha: ${headSha})`);\n\n core.endGroup();\n\n return {\n accumulatedResult,\n testResults,\n conclusion,\n headSha,\n };\n}\n", "import * as core from '@actions/core';\nimport * as http from '@actions/http-client';\nimport type { JUnitTestCase } from './junitParser';\n\nexport function retrieve(name: string, items: string[], index: number, total: number): string {\n if (total > 1) {\n if (items.length !== 0 && items.length !== total) {\n core.warning(`${name} has a different number of items than the 'reportPaths' input. This is usually a bug.`);\n }\n\n if (items.length === 0) {\n return '';\n } else if (items.length === 1) {\n return items[0].replace('\\n', '');\n } else if (items.length > index) {\n return items[index].replace('\\n', '');\n } else {\n core.error(`${name} has no valid config for position ${index}.`);\n return '';\n }\n } else if (items.length === 1) {\n return items[0].replace('\\n', '');\n } else {\n return '';\n }\n}\n\nexport function escapeEmoji(input: string) {\n const regex =\n /[\\u{1f300}-\\u{1f5ff}\\u{1f900}-\\u{1f9ff}\\u{1f600}-\\u{1f64f}\\u{1f680}-\\u{1f6ff}\\u{2600}-\\u{26ff}\\u{2700}-\\u{27bf}\\u{1f1e6}-\\u{1f1ff}\\u{1f191}-\\u{1f251}\\u{1f004}\\u{1f0cf}\\u{1f170}-\\u{1f171}\\u{1f17e}-\\u{1f17f}\\u{1f18e}\\u{3030}\\u{2b50}\\u{2b55}\\u{2934}-\\u{2935}\\u{2b05}-\\u{2b07}\\u{2b1b}-\\u{2b1c}\\u{3297}\\u{3299}\\u{303d}\\u{00a9}\\u{00ae}\\u{2122}\\u{23f3}\\u{24c2}\\u{23e9}-\\u{23ef}\\u{25b6}\\u{23f8}-\\u{23fa}]/gu;\n return input.replace(regex, ``);\n}\n\nexport function castArray(value: T | T[]) {\n return Array.isArray(value) ? value : [value];\n}\n\nfunction findMatchingOption(message: string, ...strings: string[]) {\n for (const str of strings) {\n const index = message.indexOf(str);\n if (index > -1) {\n return { index, length: str.length };\n }\n }\n const str = strings.at(-1);\n const index = str ? message.indexOf(str) : -1;\n return { index, length: str?.length || 0 };\n}\n\nexport function parseTestimFailureMessage(textContent: string) {\n const https = 'https://';\n const urlLocation = findMatchingOption(textContent, `More info at: ${https}`, `aborted${https}`, `: ${https}`);\n const msgSubstringLength = urlLocation.length - https.length;\n const message = textContent.substring(0, urlLocation.index + msgSubstringLength);\n const link = `https://${textContent.substring(message.length).split('https://').at(1)}`;\n\n return `${message}\\n${link}`;\n}\n\nfunction getTestimSuiteDetails(testCases: JUnitTestCase[]) {\n const testimResult = testCases.find(({ ['system-out']: syso }) => syso?.includes('https://app.testim.io/#/project'));\n const urlParts = testimResult?.['system-out'].match(/\\/project\\/(?.*)\\/branch\\/(?.*)\\/test/);\n if (!urlParts?.groups) {\n return {};\n }\n const { projectId, branch } = urlParts.groups;\n return { projectId, branch };\n}\n\nfunction parseProjectTokenDictionary(projectTokenDictionaryStrs: string[]) {\n const entries = projectTokenDictionaryStrs.map(str => str.split(':').map(val => val.trim()) as [string, string]).filter(([key, value, ...rest]) => !rest.length || (key && value));\n return Object.fromEntries(entries);\n}\n\nconst httpClient = new http.HttpClient();\nconst projectBranchTestStatusMap = new Map>();\n\nexport async function getTestStatusesFromPublicAPI(testCases: JUnitTestCase[], projectTokenDictionaryStrs: string[]) {\n const { branch, projectId } = getTestimSuiteDetails(testCases);\n const projectTokenDictionary = parseProjectTokenDictionary(projectTokenDictionaryStrs);\n\n if (!branch || !projectId || !projectTokenDictionary[projectId]) {\n return [];\n }\n\n const mapKey = `${projectId}_${branch}`;\n\n if (projectBranchTestStatusMap.has(mapKey)) {\n return await projectBranchTestStatusMap.get(mapKey);\n }\n\n const loadTestList = async () => {\n const res = await httpClient.get(`https://api.testim.io/tests?branch=${branch}&includeTestStatus=true`, {\n Authorization: `Bearer ${projectTokenDictionary[projectId]}`,\n 'Content-Type': 'application/json',\n });\n const { tests, error } = JSON.parse(await res.readBody()) as { error?: string; tests: { _id: string; testStatus?: string }[] };\n if (error) {\n throw new Error(error);\n }\n return tests;\n };\n const testListPerProjectAndBranch = loadTestList();\n\n projectBranchTestStatusMap.set(mapKey, testListPerProjectAndBranch);\n return await testListPerProjectAndBranch;\n}\n", "import * as core from '@actions/core';\nimport * as github from '@actions/github';\nimport type { parseInputs } from './inputParser';\nimport type { getTestReports, TestResult } from './junitParser';\nimport type { SummaryTableCell, SummaryTableRow } from '@actions/core/lib/summary';\n\nasync function annotateTestResult(testResult: TestResult, token: string, headSha: string, updateCheck: boolean, jobName: string): Promise {\n const annotations = testResult.annotations.filter(annotation => annotation.annotation_level !== 'notice');\n const foundResults = testResult.totalCount > 0 || testResult.skipped > 0;\n\n let title = 'No test results found!';\n if (foundResults) {\n title = `${testResult.totalCount} tests run, ${testResult.passed} passed, ${testResult.skipped} skipped, ${testResult.failed} failed (${testResult.failedEvaluating} failed evaluating).`;\n }\n\n core.info(`\u2139\uFE0F - ${testResult.checkName} - ${title}`);\n\n const actualFailed = testResult.failed - testResult.failedEvaluating;\n const conclusion: 'success' | 'failure' = actualFailed <= 0 ? 'success' : 'failure';\n\n for (const annotation of annotations) {\n core.info(` \uD83E\uDDEA - ${annotation.message.split('\\n', 1)[0]}`);\n }\n\n const octokit = github.getOctokit(token);\n if (updateCheck) {\n const checks = await octokit.rest.checks.listForRef({\n ...github.context.repo,\n ref: headSha,\n check_name: jobName,\n status: 'in_progress',\n filter: 'latest',\n });\n\n core.debug(JSON.stringify(checks, null, 2));\n\n const check_run_id = checks.data.check_runs[0].id;\n\n core.info(`\u2139\uFE0F - ${testResult.checkName} - Updating checks ${annotations.length}`);\n for (let i = 0; i < annotations.length; i = i + 50) {\n const sliced = annotations.slice(i, i + 50);\n\n const updateCheckRequest = {\n ...github.context.repo,\n check_run_id,\n output: {\n title,\n summary: testResult.summary,\n annotations: sliced,\n },\n };\n\n core.debug(JSON.stringify(updateCheckRequest, null, 2));\n\n await octokit.rest.checks.update(updateCheckRequest);\n }\n } else {\n const createCheckRequest = {\n ...github.context.repo,\n name: testResult.checkName,\n head_sha: headSha,\n status: 'completed',\n conclusion,\n output: {\n title,\n summary: testResult.summary,\n annotations: annotations.slice(0, 50),\n },\n };\n\n core.debug(JSON.stringify(createCheckRequest, null, 2));\n\n core.info(`\u2139\uFE0F - ${testResult.checkName} - Creating check for`);\n await octokit.rest.checks.create(createCheckRequest);\n }\n}\n\nconst statusToColorDictionary = {\n draft: '\uD83D\uDD35',\n active: '\uD83D\uDFE2',\n quarantine: '\uD83D\uDD34',\n evaluating: '\uD83D\uDFE1',\n};\n\nasync function attachSummary(accumulatedResult: TestResult, testResults: TestResult[]): Promise {\n const table: SummaryTableRow[] = [\n [\n { data: 'Name', header: true },\n { data: 'Tests', header: true },\n { data: 'Passed \u2705', header: true },\n { data: 'Skipped \u21AA\uFE0F', header: true },\n { data: 'Failed \u274C', header: true },\n { data: 'Failed Evaluating \u26A0\uFE0F', header: true },\n ],\n ];\n\n const detailsTable: SummaryTableRow[] = [\n [\n { data: 'Suite', header: true },\n { data: 'Test', header: true },\n { data: 'Result', header: true },\n { data: 'Test Status', header: true },\n ],\n ];\n\n const hasAnnotations = accumulatedResult.annotations.some(annotation => annotation.annotation_level !== 'notice');\n if (!hasAnnotations) {\n detailsTable.push([`-`, `No test annotations available`, `-`, '-']);\n }\n\n for (const testResult of testResults) {\n table.push([\n `${testResult.checkName}`,\n `${testResult.totalCount} run`,\n `${testResult.passed} passed`,\n `${testResult.skipped} skipped`,\n `${testResult.failed} failed`,\n `${testResult.failedEvaluating} failed evaluating`,\n ]);\n\n const annotations = hasAnnotations ? testResult.annotations.filter(annotation => annotation.annotation_level !== 'notice') : [];\n for (const annotation of annotations) {\n const color = statusToColorDictionary[annotation.testStatus as keyof typeof statusToColorDictionary];\n detailsTable.push([\n `${testResult.checkName}`,\n `${annotation.title}`,\n `${annotation.annotation_level === 'notice' ? '\u2705 pass' : `\u274C ${annotation.annotation_level}`}`,\n annotation.isTestimTest ? `${color} ${annotation.testStatus}` : '-',\n ]);\n }\n }\n\n if (testResults.length > 1) {\n table.push([\n 'Total',\n `${accumulatedResult.totalCount} run`,\n `${accumulatedResult.passed} passed`,\n `${accumulatedResult.skipped} skipped`,\n `${accumulatedResult.failed} failed`,\n `${accumulatedResult.failedEvaluating} failed evaluating`,\n ]);\n }\n\n await core.summary.addHeading('Overall').addTable(table).addSeparator().addHeading('Details').addTable(detailsTable).write();\n}\n\nexport async function publishAnnotations(inputs: Readonly>, { accumulatedResult, testResults, conclusion, headSha }: Awaited>) {\n try {\n for (const testResult of testResults) {\n await annotateTestResult(testResult, inputs.token, headSha, inputs.updateCheck, inputs.jobName);\n }\n } catch (error) {\n core.error(`\u274C Failed creating a check using the provided token. (${error})`);\n core.warning(\n `\u26A0\uFE0F This usually indicates insufficient permissions. More details: https://docs.github.com/en/actions/security-guides/automatic-token-authentication#permissions-for-the-github_token`,\n );\n }\n\n const supportsJobSummary = process.env['GITHUB_STEP_SUMMARY'];\n if (supportsJobSummary) {\n try {\n await attachSummary(accumulatedResult, testResults);\n } catch (error) {\n core.error(`\u274C Failed to set the summary using the provided token. (${error})`);\n }\n } else {\n core.warning(`\u26A0\uFE0F Your environment seems to not support job summaries.`);\n }\n\n if (inputs.failOnFailure && conclusion === 'failure') {\n core.setFailed(`\u274C Tests reported ${accumulatedResult.failed} failures`);\n }\n}\n\nfunction buildTableBasedOnPreviousTable(commentBody: string | undefined, accumulatedResult: TestResult): SummaryTableRow[] {\n const currentJobRow = [\n github.context.job,\n `${accumulatedResult.totalCount} run`,\n `${accumulatedResult.passed} passed`,\n `${accumulatedResult.skipped} skipped`,\n `${accumulatedResult.failed} failed`,\n `${accumulatedResult.failedEvaluating} failed evaluating`,\n ];\n if (!commentBody) {\n return [\n [\n { data: 'Job Name', header: true },\n { data: 'Tests', header: true },\n { data: 'Passed \u2705', header: true },\n { data: 'Skipped \u21AA\uFE0F', header: true },\n { data: 'Failed \u274C', header: true },\n { data: 'Failed Evaluating \u26A0\uFE0F', header: true },\n ],\n currentJobRow,\n ];\n }\n const previousTable = commentBody\n .split('')[1]\n .replace(/<\\/(table|tr|td|th)>/g, '')\n .split('')\n .filter(Boolean)\n .map(tr => tr.replace(/td|th/g, '').split('<>').filter(Boolean));\n const header = previousTable.shift()!.map(data => ({ data, header: true }));\n const rowOfCurrentJob = previousTable.find(tr => tr[0] === github.context.job);\n if (rowOfCurrentJob) {\n rowOfCurrentJob[1] = `${accumulatedResult.totalCount} run`;\n rowOfCurrentJob[2] = `${accumulatedResult.passed} passed`;\n rowOfCurrentJob[3] = `${accumulatedResult.skipped} skipped`;\n rowOfCurrentJob[4] = `${accumulatedResult.failed} failed`;\n rowOfCurrentJob[5] = `${accumulatedResult.failedEvaluating} failed evaluating`;\n } else {\n previousTable.push(currentJobRow);\n }\n return [header, ...previousTable];\n}\n\nexport async function publishCommentOnPullRequest(token: string, { accumulatedResult, testResults, conclusion, headSha }: Awaited>) {\n const pullRequest = github.context.payload.pull_request;\n if (!pullRequest) {\n return;\n }\n\n const prNumber = pullRequest.number;\n core.info(`\u2139\uFE0F - Got PR number ${prNumber} with SHA: ${headSha}`);\n\n const octokit = github.getOctokit(token);\n const commentsSearch = await octokit.rest.issues.listComments({\n ...github.context.repo,\n issue_number: prNumber,\n });\n core.info(`\u2139\uFE0F - found ${commentsSearch.data.length} comments at ${commentsSearch.url} with status ${commentsSearch.status}`);\n const comments = commentsSearch.data.filter(({ user, body }) => user?.login === 'github-actions[bot]' && body?.startsWith('

'));\n core.info(`\u2139\uFE0F - found ${comments.length} comments by github-actions, starting with correct HTML`);\n const comment = comments.at(-1);\n const comment_id = comment?.id;\n\n const table = buildTableBasedOnPreviousTable(comment?.body, accumulatedResult);\n\n const tableMapper = (row: SummaryTableRow) => `

${row.map(rowMapper).join('')}`;\n const rowMapper = (row: SummaryTableRow[number]) => {\n const htmlElement = typeof row === 'string' || !row.header ? 'td' : 'th';\n return `<${htmlElement}>${typeof row === 'string' ? row : row.data}`;\n };\n const tableHTML = `
${table.map(tableMapper).join('')}
`;\n const title = `

Test Result Summary ${conclusion === 'success' ? '\u2705' : '\u274C'}

`;\n const seeFullDetailsLink = `See full run details.`;\n const summary = `Parsed ${testResults.length} JUnit files, and has ended with status ${conclusion} ${seeFullDetailsLink}`;\n\n const body = `${title}
${summary}

${tableHTML}`;\n\n if (comment_id) {\n core.info(`\u2139\uFE0F - Updating existing comment: ${comment_id} on PR: #${prNumber}`);\n await octokit.rest.issues.updateComment({ ...github.context.repo, comment_id, body });\n } else {\n core.info(`\u2139\uFE0F - Publishing new comment on PR: #${prNumber}`);\n await octokit.rest.issues.createComment({ ...github.context.repo, issue_number: prNumber, body });\n }\n}\n"], + "mappings": "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AI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,aAAY,CAAC,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GA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AG,GAAE,YAAY,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,YAAY,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,aAAY,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAK,GAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,GAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAS,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAG,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,KAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MA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,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,0BAAyB,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,0BAAyB,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,0BAAyB,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,0BAAyB,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,0BAAyB,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK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MAAK,IAAI,GAAE,UAAS,CAAC,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,KAAI,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,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CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAG,MAAK,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAG,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,KAAI,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,KAAI,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,KAAI,KAAI,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,KAAI,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,KAAI,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,KAAI,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,KAAI,KAAI,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,KAAI,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAG,MAAK,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,uBAAuB,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,uBAAuB,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,GAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,0BAAyB,CAAC,IAAG,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,0BAAyB,CAAC,IAAG,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,0BAAyB,CAAC,IAAG,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,0BAAyB,CAAC,IAAG,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,0BAAyB,CAAC,IAAG,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,0BAAyB,CAAC,IAAG,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,0BAAyB,CAAC,IAAG,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,0BAAyB,CAAC,IAAG,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,0BAAyB,CAAC,IAAG,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,0BAAyB,CAAC,IAAG,IAAG,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,0BAAyB,CAAC,IAAG,IAAG,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,0BAAyB,CAAC,IAAG,IAAG,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,0BAAyB,CAAC,IAAG,IAAG,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,0BAAyB,CAAC,IAAG,IAAG,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,0BAAyB,CAAC,IAAG,IAAG,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,0BAAyB,CAAC,IAAG,IAAG,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,0BAAyB,CAAC,IAAG,IAAG,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,0BAAyB,CAAC,IAAG,IAAG,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,0BAAyB,CAAC,IAAG,IAAG,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,0BAAyB,CAAC,IAAG,IAAG,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,0BAAyB,CAAC,IAAG,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,0BAAyB,CAAC,IAAG,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,0BAAyB,CAAC,IAAG,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,0BAAyB,CAAC,IAAG,KAAI,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,0BAAyB,CAAC,IAAG,KAAI,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,0BAAyB,CAAC,IAAG,KAAI,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,0BAAyB,CAAC,IAAG,KAAI,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,0BAAyB,CAAC,IAAG,KAAI,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,0BAAyB,CAAC,IAAG,KAAI,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,0BAAyB,CAAC,IAAG,KAAI,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,0BAAyB,CAAC,IAAG,KAAI,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,0BAAyB,CAAC,IAAG,KAAI,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,0BAAyB,CAAC,IAAG,KAAI,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,0BAAyB,CAAC,IAAG,KAAI,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,0BAAyB,CAAC,IAAG,KAAI,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,0BAAyB,CAAC,IAAG,KAAI,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,0BAAyB,CAAC,IAAG,KAAI,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,0BAAyB,CAAC,IAAG,KAAI,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,0BAAyB,CAAC,IAAG,KAAI,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,0BAAyB,CAAC,IAAG,KAAI,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,0BAAyB,CAAC,IAAG,KAAI,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,0BAAyB,CAAC,IAAG,KAAI,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,0BAAyB,CAAC,IAAG,KAAI,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,0BAAyB,CAAC,IAAG,KAAI,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,0BAAyB,CAAC,IAAG,KAAI,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,0BAAyB,CAAC,IAAG,KAAI,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAA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AM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,MAAK,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,MAAK,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,MAAK,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,MAAK,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,MAAK,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,MAAK,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,MAAK,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,MAAK,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,MAAK,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,MAAK,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,MAAK,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,MAAK,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,MAAK,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,MAAK,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,OAAM,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,OAAM,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,OAAM,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,OAAM,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,OAAM,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,OAAM,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,OAAM,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,OAAM,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,OAAM,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,OAAM,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,OAAM,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,OAAM,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,OAAM,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,OAAM,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,OAAM,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,OAAM,OAAM,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,OAAM,OAAM,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,OAAM,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,OAAM,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,OAAM,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,OAAM,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,OAAM,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,OAAM,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,OAAM,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,OAAM,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,OAAM,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,OAAM,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,OAAM,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,OAAM,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,OAAM,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,OAAM,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,OAAM,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,OAAM,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,OAAM,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,OAAM,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,OAAM,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,OAAM,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,OAAM,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,OAAM,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,OAAM,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,OAAM,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,OAAM,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,OAAM,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,OAAM,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,OAAM,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,OAAM,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,OAAM,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,OAAM,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,OAAM,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,OAAM,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,OAAM,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,OAAM,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,OAAM,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,KAAK,CAAC,GAAE,CAAC,CAAC,MAAM,IAAK,GAAE,UAAS,CAAC,IAAG,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,IAAG,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,IAAG,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,IAAG,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,OAAM,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,IAAG,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,IAAG,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,IAAG,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,IAAG,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,IAAG,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,IAAG,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,IAAG,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,IAAG,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,IAAG,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,IAAG,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,IAAG,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,IAAG,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,IAAG,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,IAAG,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,IAAG,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,KAAI,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,IAAG,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,KAAI,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,KAAI,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,IAAG,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,IAAG,IAAG,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,KAAI,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,KAAI,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,KAAI,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,KAAI,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,KAAI,EAA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M,KAAK,GAAE,UAAS,CAAC,IAAG,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,IAAG,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,IAAG,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,IAAG,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,IAAG,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,IAAG,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,IAAG,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,IAAG,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,IAAG,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,IAAG,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,IAAG,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,IAAG,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,IAAG,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,IAAG,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,IAAG,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,IAAG,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,IAAG,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,IAAG,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,IAAG,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,IAAG,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,IAAG,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,IAAG,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,IAAG,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,IAAG,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,MAAM,IAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,MAAM,IAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAA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AAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC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CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAS,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,MAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,OAAO,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,OAAO,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,OAAO,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,OAAO,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,OAAO,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,OAAO,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAS,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,QAAO,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,QAAO,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,QAAO,QAAO,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,QAAO,QAAO,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,QAAO,QAAO,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,QAAO,QAAO,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,QAAO,QAAO,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,QAAO,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,QAAO,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,QAAO,QAAO,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,QAAO,QAAO,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,QAAO,QAAO,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,QAAO,QAAO,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAO,IAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,OAAO,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,OAAO,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,OAAO,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,OAAO,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,OAAO,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,OAAO,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,OAAO,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,OAAO,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,0BAAyB,CAAC,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,0BAAyB,CAAC,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,0BAAyB,CAAC,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,0BAAyB,CAAC,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,0BAAyB,CAAC,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,0BAAyB,CAAC,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,0BAAyB,CAAC,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,0BAAyB,CAAC,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,0BAAyB,CAAC,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,0BAAyB,CAAC,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,0BAAyB,CAAC,IAAG,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,0BAAyB,CAAC,IAAG,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,0BAAyB,CAAC,IAAG,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,0BAAyB,CAAC,IAAG,KAAI,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,0BAAyB,CAAC,IAAG,KAAI,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,0BAAyB,CAAC,IAAG,KAAI,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,0BAAyB,CAAC,IAAG,KAAI,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,0BAAyB,CAAC,IAAG,KAAI,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,0BAAyB,CAAC,IAAG,KAAI,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,0BAAyB,CAAC,IAAG,KAAI,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,0BAAyB,CAAC,IAAG,KAAI,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,0BAAyB,CAAC,IAAG,KAAI,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,0BAAyB,CAAC,IAAG,KAAI,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,0BAAyB,CAAC,IAAG,KAAI,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,0BAAyB,CAAC,IAAG,KAAI,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,0BAAyB,CAAC,IAAG,KAAI,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,0BAAyB,CAAC,IAAG,KAAI,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,0BAAyB,CAAC,IAAG,KAAI,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,0BAAyB,CAAC,IAAG,KAAI,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,0BAAyB,CAAC,IAAG,KAAI,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,0BAAyB,CAAC,IAAG,KAAI,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,0BAAyB,CAAC,IAAG,KAAI,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,0BAAyB,CAAC,IAAG,KAAI,EAAE,CAAC,GAAE,CAAC,CAAC,QAA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AC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,OAAO,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,OAAO,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,OAAO,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,OAAO,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAO,KAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CA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AZV;IAcV;QCrBYQ,sBAAsBhC,OAAOiC,OAAOV,UAAU;MACvDrB;IADuD,CAAxB;QCFtBgC,sBAAsB,CAC/B,4BACA,0BACA,4BACA,uBACA,mEACA,uDACA,uFACA,iFACA,iDACA,2CACA,wDACA,oEACA,eACA,cACA,qBACA,sBACA,iCACA,gCACA,8BACA,kCACA,eACA,iBACA,kCACA,qDACA,0CACA,6DACA,uCACA,sBACA,sBACA,qDACA,oDACA,yCACA,wEACA,mEACA,mCACA,mCACA,8DACA,6BACA,0BACA,wCACA,8BACA,6CACA,sCACA,iEACA,0BACA,mCACA,sCACA,yBACA,8CACA,iCACA,+BACA,qDACA,0BACA,2BACA,8BACA,0DACA,yCACA,4BACA,mEACA,4BACA,kCACA,yBACA,0CACA,sDACA,oCACA,yBACA,iDACA,8EACA,yGACA,+EACA,iDACA,6CACA,8CACA,2CACA,2CACA,2CACA,4CACA,sCACA,+CACA,4CACA,6CACA,0CACA,6DACA,kFACA,wDACA,6CACA,+CACA,kEACA,uCACA,sCACA,mEACA,sEACA,kDACA,2EACA,oDACA,wCACA,sDACA,gDACA,2CACA,sCACA,6DACA,qCACA,2DACA,wDACA,sDACA,wDACA,kDACA,oDACA,0CACA,gDACA,yCACA,kEACA,0CACA,oCACA,mCACA,qDACA,mCACA,wDACA,yCACA,oCACA,6CACA,oEACA,2CACA,4DACA,0DACA,0DACA,6DACA,4DACA,kCACA,oCACA,wCACA,kEACA,2CACA,0CACA,sCACA,mCACA,4CACA,mEACA,0DACA,yDACA,uDACA,qEACA,yDACA,8EACA,sCACA,0DACA,6DACA,oDACA,6EACA,wCACA,yCACA,kCACA,mCACA,oCACA,qBACA,6EACA,oBACA,uBACA,sBACA,sBACA,4BACA,sBACA,qBACA,oCACA,iEACA,4FACA,kEACA,oCACA,gCACA,iCACA,8BACA,8BACA,oBACA,wBACA,gCACA,oBACA,uBACA,uBACA,sBACA,2BACA,0DACA,oBACA,kBACA,mCACA,2CACA,8BACA,wBA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", + "names": ["sourceFile", "context", "version", "needle", "section", "module", "module", "fs", "path", "error", "val", "crypto", "version", "URL", "crypto", "import_crypto", "crypto", "import_crypto", "fs", "http", "options", "debug", "error", "socket", "require_tunnel", "module", "http", "HttpCodes", "Headers", "MediaTypes", "HttpClient", "info", "error", "ExitCode", "val", "getInput", "getMultilineInput", "setOutput", "setFailed", "error", "debug", "warning", "info", "startGroup", "endGroup", "core", "MatchKind", "module", "module", "module", "module", "minimatch", "Minimatch", "filter", "makeRe", "braceExpand", "debug", "set", "parse", "core", "fs", "crypto", "core", "fs", "create", "httpClient", "getUserAgent", "navigator", "userAgent", "process", "version", "substr", "platform", "arch", "module", "name", "method", "module", "error", "module", "module", "lowercaseKeys", "object", "Object", "keys", "reduce", "newObj", "key", "toLowerCase", "mergeDeep", "defaults", "options", "result", "assign", "forEach", "isPlainObject", "removeUndefinedProperties", "obj", "undefined", "merge", "route", "method", "url", "split", "headers", "mergedOptions", "mediaType", "previews", "length", "filter", "preview", "includes", "concat", "map", "replace", "addQueryParameters", "parameters", "separator", "test", "names", "name", "q", "encodeURIComponent", "join", "urlVariableRegex", "removeNonChars", "variableName", "extractUrlVariableNames", "matches", "match", "a", "b", "omit", "keysToOmit", "option", "encodeReserved", "str", "part", "encodeURI", "encodeUnreserved", "c", "charCodeAt", "toString", "toUpperCase", "encodeValue", "operator", "value", "isDefined", "isKeyOperator", "getValues", "context", "modifier", "substring", "parseInt", "push", "Array", "isArray", "k", "tmp", "parseUrl", "template", "expand", "bind", "operators", "_", "expression", "literal", "values", "indexOf", "charAt", "substr", "variable", "exec", "parse", "body", "urlVariableNames", "baseUrl", "omittedParameters", "remainingParameters", "isBinaryRequest", "accept", "format", "previewsFromAcceptHeader", "data", "request", "endpointWithDefaults", "withDefaults", "oldDefaults", "newDefaults", "DEFAULTS", "endpoint", "VERSION", "userAgent", "getUserAgent", "require_lib", "module", "val", "require_utils", "module", "module", "module", "val", "error", "module", "res", "parseFile", "module", "URL", "require_lib", "module", "http", "error", "val", "URL", "isDomainOrSubdomain", "isSameProtocol", "abort", "abortAndFinalize", "require_dist_node", "module", "cb", "module", "logOnceCode", "once", "deprecation", "console", "warn", "logOnceHeaders", "RequestError", "Error", "constructor", "message", "statusCode", "options", "captureStackTrace", "name", "status", "headers", "response", "requestCopy", "Object", "assign", "request", "authorization", "replace", "url", "defineProperty", "get", "Deprecation", "VERSION", "getBufferResponse", "response", "arrayBuffer", "fetchWrapper", "requestOptions", "log", "request", "console", "isPlainObject", "body", "Array", "isArray", "JSON", "stringify", "headers", "status", "url", "fetch", "nodeFetch", "Object", "assign", "method", "redirect", "then", "keyAndValue", "matches", "link", "match", "deprecationLink", "pop", "warn", "sunset", "RequestError", "statusText", "data", "undefined", "getResponseData", "error", "toErrorMessage", "catch", "message", "contentType", "get", "test", "json", "text", "getBuffer", "errors", "map", "join", "withDefaults", "oldEndpoint", "newDefaults", "endpoint", "defaults", "newApi", "route", "parameters", "endpointOptions", "merge", "hook", "parse", "bind", "getUserAgent", "VERSION", "_buildMessageForResponseErrors", "data", "errors", "map", "e", "message", "join", "GraphqlResponseError", "Error", "constructor", "request", "headers", "response", "name", "captureStackTrace", "NON_VARIABLE_OPTIONS", "FORBIDDEN_VARIABLE_OPTIONS", "GHES_V3_SUFFIX_REGEX", "graphql", "query", "options", "Promise", "reject", "key", "includes", "parsedOptions", "Object", "assign", "requestOptions", "keys", "reduce", "result", "variables", "baseUrl", "endpoint", "DEFAULTS", "test", "url", "replace", "then", "withDefaults", "newDefaults", "newRequest", "defaults", "newApi", "bind", "Request", "getUserAgent", "method", "withCustomRequest", "customRequest", "REGEX_IS_INSTALLATION_LEGACY", "REGEX_IS_INSTALLATION", "REGEX_IS_USER_TO_SERVER", "auth", "token", "isApp", "split", "length", "isInstallation", "test", "isUserToServer", "tokenType", "type", "withAuthorizationPrefix", "hook", "request", "route", "parameters", "endpoint", "merge", "headers", "authorization", "createTokenAuth", "Error", "replace", "Object", "assign", "bind", "VERSION", "Octokit", "constructor", "options", "hook", "Collection", "requestDefaults", "baseUrl", "request", "endpoint", "DEFAULTS", "headers", "Object", "assign", "bind", "mediaType", "previews", "format", "userAgent", "getUserAgent", "filter", "Boolean", "join", "timeZone", "defaults", "graphql", "withCustomRequest", "log", "debug", "info", "warn", "console", "error", "authStrategy", "auth", "type", "createTokenAuth", "wrap", "otherOptions", "octokit", "octokitOptions", "classConstructor", "plugins", "forEach", "plugin", "OctokitWithDefaults", "args", "newPlugins", "_a", "currentPlugins", "NewOctokit", "concat", "includes", "Endpoints", "actions", "addCustomLabelsToSelfHostedRunnerForOrg", "addCustomLabelsToSelfHostedRunnerForRepo", "addSelectedRepoToOrgSecret", "approveWorkflowRun", "cancelWorkflowRun", "createOrUpdateEnvironmentSecret", "createOrUpdateOrgSecret", "createOrUpdateRepoSecret", "createRegistrationTokenForOrg", "createRegistrationTokenForRepo", "createRemoveTokenForOrg", "createRemoveTokenForRepo", "createWorkflowDispatch", "deleteActionsCacheById", "deleteActionsCacheByKey", "deleteArtifact", "deleteEnvironmentSecret", "deleteOrgSecret", "deleteRepoSecret", "deleteSelfHostedRunnerFromOrg", "deleteSelfHostedRunnerFromRepo", "deleteWorkflowRun", "deleteWorkflowRunLogs", "disableSelectedRepositoryGithubActionsOrganization", "disableWorkflow", "downloadArtifact", "downloadJobLogsForWorkflowRun", "downloadWorkflowRunAttemptLogs", "downloadWorkflowRunLogs", "enableSelectedRepositoryGithubActionsOrganization", "enableWorkflow", "getActionsCacheList", "getActionsCacheUsage", "getActionsCacheUsageByRepoForOrg", "getActionsCacheUsageForEnterprise", "getActionsCacheUsageForOrg", "getAllowedActionsOrganization", "getAllowedActionsRepository", "getArtifact", "getEnvironmentPublicKey", "getEnvironmentSecret", "getGithubActionsDefaultWorkflowPermissionsEnterprise", "getGithubActionsDefaultWorkflowPermissionsOrganization", "getGithubActionsDefaultWorkflowPermissionsRepository", "getGithubActionsPermissionsOrganization", "getGithubActionsPermissionsRepository", "getJobForWorkflowRun", "getOrgPublicKey", "getOrgSecret", "getPendingDeploymentsForRun", "getRepoPermissions", "renamed", "getRepoPublicKey", "getRepoSecret", "getReviewsForRun", "getSelfHostedRunnerForOrg", "getSelfHostedRunnerForRepo", "getWorkflow", "getWorkflowAccessToRepository", "getWorkflowRun", "getWorkflowRunAttempt", "getWorkflowRunUsage", "getWorkflowUsage", "listArtifactsForRepo", "listEnvironmentSecrets", "listJobsForWorkflowRun", "listJobsForWorkflowRunAttempt", "listLabelsForSelfHostedRunnerForOrg", "listLabelsForSelfHostedRunnerForRepo", "listOrgSecrets", "listRepoSecrets", "listRepoWorkflows", "listRunnerApplicationsForOrg", "listRunnerApplicationsForRepo", "listSelectedReposForOrgSecret", "listSelectedRepositoriesEnabledGithubActionsOrganization", "listSelfHostedRunnersForOrg", "listSelfHostedRunnersForRepo", "listWorkflowRunArtifacts", "listWorkflowRuns", "listWorkflowRunsForRepo", "reRunJobForWorkflowRun", "reRunWorkflow", "reRunWorkflowFailedJobs", "removeAllCustomLabelsFromSelfHostedRunnerForOrg", "removeAllCustomLabelsFromSelfHostedRunnerForRepo", "removeCustomLabelFromSelfHostedRunnerForOrg", "removeCustomLabelFromSelfHostedRunnerForRepo", "removeSelectedRepoFromOrgSecret", "reviewPendingDeploymentsForRun", "setAllowedActionsOrganization", "setAllowedActionsRepository", "setCustomLabelsForSelfHostedRunnerForOrg", "setCustomLabelsForSelfHostedRunnerForRepo", "setGithubActionsDefaultWorkflowPermissionsEnterprise", "setGithubActionsDefaultWorkflowPermissionsOrganization", "setGithubActionsDefaultWorkflowPermissionsRepository", "setGithubActionsPermissionsOrganization", "setGithubActionsPermissionsRepository", "setSelectedReposForOrgSecret", "setSelectedRepositoriesEnabledGithubActionsOrganization", "setWorkflowAccessToRepository", "activity", "checkRepoIsStarredByAuthenticatedUser", "deleteRepoSubscription", "deleteThreadSubscription", "getFeeds", "getRepoSubscription", "getThread", "getThreadSubscriptionForAuthenticatedUser", "listEventsForAuthenticatedUser", "listNotificationsForAuthenticatedUser", "listOrgEventsForAuthenticatedUser", "listPublicEvents", "listPublicEventsForRepoNetwork", "listPublicEventsForUser", "listPublicOrgEvents", "listReceivedEventsForUser", "listReceivedPublicEventsForUser", "listRepoEvents", "listRepoNotificationsForAuthenticatedUser", "listReposStarredByAuthenticatedUser", "listReposStarredByUser", "listReposWatchedByUser", "listStargazersForRepo", "listWatchedReposForAuthenticatedUser", "listWatchersForRepo", "markNotificationsAsRead", "markRepoNotificationsAsRead", "markThreadAsRead", "setRepoSubscription", "setThreadSubscription", "starRepoForAuthenticatedUser", "unstarRepoForAuthenticatedUser", "apps", "addRepoToInstallation", "addRepoToInstallationForAuthenticatedUser", "checkToken", "createFromManifest", "createInstallationAccessToken", "deleteAuthorization", "deleteInstallation", "deleteToken", "getAuthenticated", "getBySlug", "getInstallation", "getOrgInstallation", "getRepoInstallation", "getSubscriptionPlanForAccount", "getSubscriptionPlanForAccountStubbed", "getUserInstallation", "getWebhookConfigForApp", "getWebhookDelivery", "listAccountsForPlan", "listAccountsForPlanStubbed", "listInstallationReposForAuthenticatedUser", "listInstallations", "listInstallationsForAuthenticatedUser", "listPlans", "listPlansStubbed", "listReposAccessibleToInstallation", "listSubscriptionsForAuthenticatedUser", "listSubscriptionsForAuthenticatedUserStubbed", "listWebhookDeliveries", "redeliverWebhookDelivery", "removeRepoFromInstallation", "removeRepoFromInstallationForAuthenticatedUser", "resetToken", "revokeInstallationAccessToken", "scopeToken", "suspendInstallation", "unsuspendInstallation", "updateWebhookConfigForApp", "billing", "getGithubActionsBillingOrg", "getGithubActionsBillingUser", "getGithubAdvancedSecurityBillingGhe", "getGithubAdvancedSecurityBillingOrg", "getGithubPackagesBillingOrg", "getGithubPackagesBillingUser", "getSharedStorageBillingOrg", "getSharedStorageBillingUser", "checks", "create", "createSuite", "get", "getSuite", "listAnnotations", "listForRef", "listForSuite", "listSuitesForRef", "rerequestRun", "rerequestSuite", "setSuitesPreferences", "update", "codeScanning", "deleteAnalysis", "getAlert", "renamedParameters", "alert_id", "getAnalysis", "getSarif", "listAlertInstances", "listAlertsForOrg", "listAlertsForRepo", "listAlertsInstances", "listRecentAnalyses", "updateAlert", "uploadSarif", "codesOfConduct", "getAllCodesOfConduct", "getConductCode", "codespaces", "addRepositoryForSecretForAuthenticatedUser", "codespaceMachinesForAuthenticatedUser", "createForAuthenticatedUser", "createOrUpdateSecretForAuthenticatedUser", "createWithPrForAuthenticatedUser", "createWithRepoForAuthenticatedUser", "deleteForAuthenticatedUser", "deleteFromOrganization", "deleteSecretForAuthenticatedUser", "exportForAuthenticatedUser", "getExportDetailsForAuthenticatedUser", "getForAuthenticatedUser", "getPublicKeyForAuthenticatedUser", "getSecretForAuthenticatedUser", "listDevcontainersInRepositoryForAuthenticatedUser", "listForAuthenticatedUser", "listInOrganization", "org_id", "listInRepositoryForAuthenticatedUser", "listRepositoriesForSecretForAuthenticatedUser", "listSecretsForAuthenticatedUser", "removeRepositoryForSecretForAuthenticatedUser", "repoMachinesForAuthenticatedUser", "setRepositoriesForSecretForAuthenticatedUser", "startForAuthenticatedUser", "stopForAuthenticatedUser", "stopInOrganization", "updateForAuthenticatedUser", "dependabot", "dependencyGraph", "createRepositorySnapshot", "diffRange", "emojis", "enterpriseAdmin", "addCustomLabelsToSelfHostedRunnerForEnterprise", "disableSelectedOrganizationGithubActionsEnterprise", "enableSelectedOrganizationGithubActionsEnterprise", "getAllowedActionsEnterprise", "getGithubActionsPermissionsEnterprise", "getServerStatistics", "listLabelsForSelfHostedRunnerForEnterprise", "listSelectedOrganizationsEnabledGithubActionsEnterprise", "removeAllCustomLabelsFromSelfHostedRunnerForEnterprise", "removeCustomLabelFromSelfHostedRunnerForEnterprise", "setAllowedActionsEnterprise", "setCustomLabelsForSelfHostedRunnerForEnterprise", "setGithubActionsPermissionsEnterprise", "setSelectedOrganizationsEnabledGithubActionsEnterprise", "gists", "checkIsStarred", "createComment", "delete", "deleteComment", "fork", "getComment", "getRevision", "list", "listComments", "listCommits", "listForUser", "listForks", "listPublic", "listStarred", "star", "unstar", "updateComment", "git", "createBlob", "createCommit", "createRef", "createTag", "createTree", "deleteRef", "getBlob", "getCommit", "getRef", "getTag", "getTree", "listMatchingRefs", "updateRef", "gitignore", "getAllTemplates", "getTemplate", "interactions", "getRestrictionsForAuthenticatedUser", "getRestrictionsForOrg", "getRestrictionsForRepo", "getRestrictionsForYourPublicRepos", "removeRestrictionsForAuthenticatedUser", "removeRestrictionsForOrg", "removeRestrictionsForRepo", "removeRestrictionsForYourPublicRepos", "setRestrictionsForAuthenticatedUser", "setRestrictionsForOrg", "setRestrictionsForRepo", "setRestrictionsForYourPublicRepos", "issues", "addAssignees", "addLabels", "checkUserCanBeAssigned", "createLabel", "createMilestone", "deleteLabel", "deleteMilestone", "getEvent", "getLabel", "getMilestone", "listAssignees", "listCommentsForRepo", "listEvents", "listEventsForRepo", "listEventsForTimeline", "listForOrg", "listForRepo", "listLabelsForMilestone", "listLabelsForRepo", "listLabelsOnIssue", "listMilestones", "lock", "removeAllLabels", "removeAssignees", "removeLabel", "setLabels", "unlock", "updateLabel", "updateMilestone", "licenses", "getAllCommonlyUsed", "getForRepo", "markdown", "render", "renderRaw", "headers", "meta", "getOctocat", "getZen", "root", "migrations", "cancelImport", "deleteArchiveForAuthenticatedUser", "deleteArchiveForOrg", "downloadArchiveForOrg", "getArchiveForAuthenticatedUser", "getCommitAuthors", "getImportStatus", "getLargeFiles", "getStatusForAuthenticatedUser", "getStatusForOrg", "listReposForAuthenticatedUser", "listReposForOrg", "listReposForUser", "mapCommitAuthor", "setLfsPreference", "startForOrg", "startImport", "unlockRepoForAuthenticatedUser", "unlockRepoForOrg", "updateImport", "orgs", "blockUser", "cancelInvitation", "checkBlockedUser", "checkMembershipForUser", "checkPublicMembershipForUser", "convertMemberToOutsideCollaborator", "createInvitation", "createWebhook", "deleteWebhook", "getMembershipForAuthenticatedUser", "getMembershipForUser", "getWebhook", "getWebhookConfigForOrg", "listAppInstallations", "listBlockedUsers", "listCustomRoles", "listFailedInvitations", "listInvitationTeams", "listMembers", "listMembershipsForAuthenticatedUser", "listOutsideCollaborators", "listPendingInvitations", "listPublicMembers", "listWebhooks", "pingWebhook", "removeMember", "removeMembershipForUser", "removeOutsideCollaborator", "removePublicMembershipForAuthenticatedUser", "setMembershipForUser", "setPublicMembershipForAuthenticatedUser", "unblockUser", "updateMembershipForAuthenticatedUser", "updateWebhook", "updateWebhookConfigForOrg", "packages", "deletePackageForAuthenticatedUser", "deletePackageForOrg", "deletePackageForUser", "deletePackageVersionForAuthenticatedUser", "deletePackageVersionForOrg", "deletePackageVersionForUser", "getAllPackageVersionsForAPackageOwnedByAnOrg", "getAllPackageVersionsForAPackageOwnedByTheAuthenticatedUser", "getAllPackageVersionsForPackageOwnedByAuthenticatedUser", "getAllPackageVersionsForPackageOwnedByOrg", "getAllPackageVersionsForPackageOwnedByUser", "getPackageForAuthenticatedUser", "getPackageForOrganization", "getPackageForUser", "getPackageVersionForAuthenticatedUser", "getPackageVersionForOrganization", "getPackageVersionForUser", "listPackagesForAuthenticatedUser", "listPackagesForOrganization", "listPackagesForUser", "restorePackageForAuthenticatedUser", "restorePackageForOrg", "restorePackageForUser", "restorePackageVersionForAuthenticatedUser", "restorePackageVersionForOrg", "restorePackageVersionForUser", "projects", "addCollaborator", "createCard", "createColumn", "createForOrg", "createForRepo", "deleteCard", "deleteColumn", "getCard", "getColumn", "getPermissionForUser", "listCards", "listCollaborators", "listColumns", "moveCard", "moveColumn", "removeCollaborator", "updateCard", "updateColumn", "pulls", "checkIfMerged", "createReplyForReviewComment", "createReview", "createReviewComment", "deletePendingReview", "deleteReviewComment", "dismissReview", "getReview", "getReviewComment", "listCommentsForReview", "listFiles", "listRequestedReviewers", "listReviewComments", "listReviewCommentsForRepo", "listReviews", "merge", "removeRequestedReviewers", "requestReviewers", "submitReview", "updateBranch", "updateReview", "updateReviewComment", "rateLimit", "reactions", "createForCommitComment", "createForIssue", "createForIssueComment", "createForPullRequestReviewComment", "createForRelease", "createForTeamDiscussionCommentInOrg", "createForTeamDiscussionInOrg", "deleteForCommitComment", "deleteForIssue", "deleteForIssueComment", "deleteForPullRequestComment", "deleteForRelease", "deleteForTeamDiscussion", "deleteForTeamDiscussionComment", "listForCommitComment", "listForIssue", "listForIssueComment", "listForPullRequestReviewComment", "listForRelease", "listForTeamDiscussionCommentInOrg", "listForTeamDiscussionInOrg", "repos", "acceptInvitation", "acceptInvitationForAuthenticatedUser", "addAppAccessRestrictions", "mapToData", "addStatusCheckContexts", "addTeamAccessRestrictions", "addUserAccessRestrictions", "checkCollaborator", "checkVulnerabilityAlerts", "codeownersErrors", "compareCommits", "compareCommitsWithBasehead", "createAutolink", "createCommitComment", "createCommitSignatureProtection", "createCommitStatus", "createDeployKey", "createDeployment", "createDeploymentStatus", "createDispatchEvent", "createFork", "createInOrg", "createOrUpdateEnvironment", "createOrUpdateFileContents", "createPagesSite", "createRelease", "createTagProtection", "createUsingTemplate", "declineInvitation", "declineInvitationForAuthenticatedUser", "deleteAccessRestrictions", "deleteAdminBranchProtection", "deleteAnEnvironment", "deleteAutolink", "deleteBranchProtection", "deleteCommitComment", "deleteCommitSignatureProtection", "deleteDeployKey", "deleteDeployment", "deleteFile", "deleteInvitation", "deletePagesSite", "deletePullRequestReviewProtection", "deleteRelease", "deleteReleaseAsset", "deleteTagProtection", "disableAutomatedSecurityFixes", "disableLfsForRepo", "disableVulnerabilityAlerts", "downloadArchive", "downloadTarballArchive", "downloadZipballArchive", "enableAutomatedSecurityFixes", "enableLfsForRepo", "enableVulnerabilityAlerts", "generateReleaseNotes", "getAccessRestrictions", "getAdminBranchProtection", "getAllEnvironments", "getAllStatusCheckContexts", "getAllTopics", "getAppsWithAccessToProtectedBranch", "getAutolink", "getBranch", "getBranchProtection", "getClones", "getCodeFrequencyStats", "getCollaboratorPermissionLevel", "getCombinedStatusForRef", "getCommitActivityStats", "getCommitComment", "getCommitSignatureProtection", "getCommunityProfileMetrics", "getContent", "getContributorsStats", "getDeployKey", "getDeployment", "getDeploymentStatus", "getEnvironment", "getLatestPagesBuild", "getLatestRelease", "getPages", "getPagesBuild", "getPagesHealthCheck", "getParticipationStats", "getPullRequestReviewProtection", "getPunchCardStats", "getReadme", "getReadmeInDirectory", "getRelease", "getReleaseAsset", "getReleaseByTag", "getStatusChecksProtection", "getTeamsWithAccessToProtectedBranch", "getTopPaths", "getTopReferrers", "getUsersWithAccessToProtectedBranch", "getViews", "getWebhookConfigForRepo", "listAutolinks", "listBranches", "listBranchesForHeadCommit", "listCommentsForCommit", "listCommitCommentsForRepo", "listCommitStatusesForRef", "listContributors", "listDeployKeys", "listDeploymentStatuses", "listDeployments", "listInvitations", "listInvitationsForAuthenticatedUser", "listLanguages", "listPagesBuilds", "listPullRequestsAssociatedWithCommit", "listReleaseAssets", "listReleases", "listTagProtection", "listTags", "listTeams", "mergeUpstream", "removeAppAccessRestrictions", "removeStatusCheckContexts", "removeStatusCheckProtection", "removeTeamAccessRestrictions", "removeUserAccessRestrictions", "renameBranch", "replaceAllTopics", "requestPagesBuild", "setAdminBranchProtection", "setAppAccessRestrictions", "setStatusCheckContexts", "setTeamAccessRestrictions", "setUserAccessRestrictions", "testPushWebhook", "transfer", "updateBranchProtection", "updateCommitComment", "updateInformationAboutPagesSite", "updateInvitation", "updatePullRequestReviewProtection", "updateRelease", "updateReleaseAsset", "updateStatusCheckPotection", "updateStatusCheckProtection", "updateWebhookConfigForRepo", "uploadReleaseAsset", "baseUrl", "search", "code", "commits", "issuesAndPullRequests", "labels", "topics", "users", "secretScanning", "listAlertsForEnterprise", "listLocationsForAlert", "teams", "addOrUpdateMembershipForUserInOrg", "addOrUpdateProjectPermissionsInOrg", "addOrUpdateRepoPermissionsInOrg", "checkPermissionsForProjectInOrg", "checkPermissionsForRepoInOrg", "createDiscussionCommentInOrg", "createDiscussionInOrg", "deleteDiscussionCommentInOrg", "deleteDiscussionInOrg", "deleteInOrg", "getByName", "getDiscussionCommentInOrg", "getDiscussionInOrg", "getMembershipForUserInOrg", "listChildInOrg", "listDiscussionCommentsInOrg", "listDiscussionsInOrg", "listMembersInOrg", "listPendingInvitationsInOrg", "listProjectsInOrg", "listReposInOrg", "removeMembershipForUserInOrg", "removeProjectInOrg", "removeRepoInOrg", "updateDiscussionCommentInOrg", "updateDiscussionInOrg", "updateInOrg", "addEmailForAuthenticated", "addEmailForAuthenticatedUser", "block", "checkBlocked", "checkFollowingForUser", "checkPersonIsFollowedByAuthenticated", "createGpgKeyForAuthenticated", "createGpgKeyForAuthenticatedUser", "createPublicSshKeyForAuthenticated", "createPublicSshKeyForAuthenticatedUser", "deleteEmailForAuthenticated", "deleteEmailForAuthenticatedUser", "deleteGpgKeyForAuthenticated", "deleteGpgKeyForAuthenticatedUser", "deletePublicSshKeyForAuthenticated", "deletePublicSshKeyForAuthenticatedUser", "follow", "getByUsername", "getContextForUser", "getGpgKeyForAuthenticated", "getGpgKeyForAuthenticatedUser", "getPublicSshKeyForAuthenticated", "getPublicSshKeyForAuthenticatedUser", "listBlockedByAuthenticated", "listBlockedByAuthenticatedUser", "listEmailsForAuthenticated", "listEmailsForAuthenticatedUser", "listFollowedByAuthenticated", "listFollowedByAuthenticatedUser", "listFollowersForAuthenticatedUser", "listFollowersForUser", "listFollowingForUser", "listGpgKeysForAuthenticated", "listGpgKeysForAuthenticatedUser", "listGpgKeysForUser", "listPublicEmailsForAuthenticated", "listPublicEmailsForAuthenticatedUser", "listPublicKeysForUser", "listPublicSshKeysForAuthenticated", "listPublicSshKeysForAuthenticatedUser", "setPrimaryEmailVisibilityForAuthenticated", "setPrimaryEmailVisibilityForAuthenticatedUser", "unblock", "unfollow", "updateAuthenticated", "VERSION", "endpointsToMethods", "octokit", "endpointsMap", "newMethods", "scope", "endpoints", "Object", "entries", "methodName", "endpoint", "route", "defaults", "decorations", "method", "url", "split", "endpointDefaults", "assign", "scopeMethods", "decorate", "request", "requestWithDefaults", "withDecorations", "args", "options", "data", "undefined", "newScope", "newMethodName", "log", "warn", "deprecated", "name", "alias", "restEndpointMethods", "api", "ENDPOINTS", "rest", "legacyRestEndpointMethods", "VERSION", "normalizePaginatedListResponse", "response", "data", "responseNeedsNormalization", "incompleteResults", "incomplete_results", "repositorySelection", "repository_selection", "totalCount", "total_count", "namespaceKey", "Object", "keys", "iterator", "octokit", "route", "parameters", "options", "endpoint", "request", "requestMethod", "method", "headers", "url", "Symbol", "asyncIterator", "next", "done", "normalizedResponse", "link", "match", "value", "error", "status", "paginate", "mapFn", "undefined", "gather", "results", "then", "result", "earlyExit", "concat", "composePaginateRest", "assign", "paginatingEndpoints", "isPaginatingEndpoint", "arg", "includes", "paginateRest", "bind", "getOctokit", "require_util", "val", "module", "val", "module", "entityName", "val", "module", "module", "val", "result", "entityName", "val", "module", "XMLParser", "module", "attStr", "module", "val", "module", "XMLParser", "core", "core", "core", "str", "index", "val", "error", "summary", "core", "github", "error", "body", "summary", "error"] +} diff --git a/node_modules/.bin/esbuild b/node_modules/.bin/esbuild new file mode 120000 index 0000000..c83ac07 --- /dev/null +++ b/node_modules/.bin/esbuild @@ -0,0 +1 @@ +../esbuild/bin/esbuild \ No newline at end of file diff --git a/node_modules/.bin/fxparser b/node_modules/.bin/fxparser new file mode 120000 index 0000000..75327ed --- /dev/null +++ b/node_modules/.bin/fxparser @@ -0,0 +1 @@ +../fast-xml-parser/src/cli/cli.js \ No newline at end of file diff --git a/node_modules/.bin/tsx b/node_modules/.bin/tsx new file mode 120000 index 0000000..50d83c6 --- /dev/null +++ b/node_modules/.bin/tsx @@ -0,0 +1 @@ +../tsx/dist/cli.js \ No newline at end of file diff --git a/node_modules/.bin/uuid b/node_modules/.bin/uuid new file mode 120000 index 0000000..588f70e --- /dev/null +++ b/node_modules/.bin/uuid @@ -0,0 +1 @@ +../uuid/dist/bin/uuid \ No newline at end of file diff --git a/node_modules/.bin/xml-js b/node_modules/.bin/xml-js new file mode 120000 index 0000000..d6e0670 --- /dev/null +++ b/node_modules/.bin/xml-js @@ -0,0 +1 @@ +../xml-js/bin/cli.js \ No newline at end of file diff --git a/node_modules/.yarn-integrity b/node_modules/.yarn-integrity new file mode 100644 index 0000000..6a9d464 --- /dev/null +++ b/node_modules/.yarn-integrity @@ -0,0 +1,395 @@ +{ + "systemParams": "linux-x64-108", + "modulesFolders": [ + "node_modules" + ], + "flags": [ + "production" + ], + "linkedModules": [], + "topLevelPatterns": [ + "@actions/core@^1.10.0", + "@actions/github@^5.1.1", + "@actions/glob@^0.4.0", + "@types/node@18", + "@typescript-eslint/parser@^5.52.0", + "esbuild@^0.17.10", + "eslint-plugin-github@^4.6.1", + "eslint@^8.34.0", + "fast-xml-parser@^4.1.3", + "global@^4.4.0", + "prettier@^2.8.4", + "source-map-support@^0.5.21", + "tsx@^3.12.3", + "typescript@^4.9.5", + "xml-js@^1.6.11" + ], + "lockfileEntries": { + "@actions/core@^1.10.0": "https://registry.yarnpkg.com/@actions/core/-/core-1.10.0.tgz#44551c3c71163949a2f06e94d9ca2157a0cfac4f", + "@actions/core@^1.9.1": "https://registry.yarnpkg.com/@actions/core/-/core-1.10.0.tgz#44551c3c71163949a2f06e94d9ca2157a0cfac4f", + "@actions/github@^5.1.1": "https://registry.yarnpkg.com/@actions/github/-/github-5.1.1.tgz#40b9b9e1323a5efcf4ff7dadd33d8ea51651bbcb", + "@actions/glob@^0.4.0": "https://registry.yarnpkg.com/@actions/glob/-/glob-0.4.0.tgz#b169b1c1c72f41e5df7b3d9349539c88fa68403c", + "@actions/http-client@^2.0.1": "https://registry.yarnpkg.com/@actions/http-client/-/http-client-2.0.1.tgz#873f4ca98fe32f6839462a6f046332677322f99c", + "@babel/runtime@^7.20.7": "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.21.0.tgz#5b55c9d394e5fcf304909a8b00c07dc217b56673", + "@esbuild-kit/cjs-loader@^2.4.2": "https://registry.yarnpkg.com/@esbuild-kit/cjs-loader/-/cjs-loader-2.4.2.tgz#cb4dde00fbf744a68c4f20162ea15a8242d0fa54", + "@esbuild-kit/core-utils@^3.0.0": "https://registry.yarnpkg.com/@esbuild-kit/core-utils/-/core-utils-3.1.0.tgz#49945d533dbd5e1b7620aa0fc522c15e6ec089c5", + "@esbuild-kit/esm-loader@^2.5.5": "https://registry.yarnpkg.com/@esbuild-kit/esm-loader/-/esm-loader-2.5.5.tgz#b82da14fcee3fc1d219869756c06f43f67d1ca71", + "@esbuild/android-arm64@0.17.10": "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.17.10.tgz#ad2ee47dd021035abdfb0c38848ff77a1e1918c4", + "@esbuild/android-arm@0.17.10": "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.17.10.tgz#bb5a68af8adeb94b30eadee7307404dc5237d076", + "@esbuild/android-x64@0.17.10": "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.17.10.tgz#751d5d8ae9ece1efa9627b689c888eb85b102360", + "@esbuild/darwin-arm64@0.17.10": "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.17.10.tgz#85601ee7efb2129cd3218d5bcbe8da1173bc1e8b", + "@esbuild/darwin-x64@0.17.10": "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.17.10.tgz#362c7e988c61fe72d5edef4f717e4b4fc728da98", + "@esbuild/freebsd-arm64@0.17.10": "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.10.tgz#e8a85a46ede7c3a048a12f16b9d551d25adc8bb1", + "@esbuild/freebsd-x64@0.17.10": "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.17.10.tgz#cd0a1b68bffbcb5b65e65b3fd542e8c7c3edd86b", + "@esbuild/linux-arm64@0.17.10": "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.17.10.tgz#13b183f432512ed9d9281cc89476caeebe9e9123", + "@esbuild/linux-arm@0.17.10": "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.17.10.tgz#dd11e0a5faa3ea94dc80278a601c3be7b4fdf1da", + "@esbuild/linux-ia32@0.17.10": "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.17.10.tgz#4d836f87b92807d9292379963c4888270d282405", + "@esbuild/linux-loong64@0.17.10": "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.17.10.tgz#92eb2ee200c17ef12c7fb3b648231948699e7a4c", + "@esbuild/linux-mips64el@0.17.10": "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.17.10.tgz#14f7d50c40fe7f7ee545a9bd07c6f6e4cba5570e", + "@esbuild/linux-ppc64@0.17.10": "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.17.10.tgz#1ab5802e93ae511ce9783e1cb95f37df0f84c4af", + "@esbuild/linux-riscv64@0.17.10": "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.17.10.tgz#4fae25201ef7ad868731d16c8b50b0e386c4774a", + "@esbuild/linux-s390x@0.17.10": "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.17.10.tgz#126254d8335bb3586918b1ca60beb4abb46e6d54", + "@esbuild/linux-x64@0.17.10": "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.17.10.tgz#7fa4667b2df81ea0538e1b75e607cf04e526ce91", + "@esbuild/netbsd-x64@0.17.10": "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.17.10.tgz#2d24727ddc2305619685bf237a46d6087a02ee9a", + "@esbuild/openbsd-x64@0.17.10": "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.17.10.tgz#bf3fc38ee6ecf028c1f0cfe11f61d53cc75fef12", + "@esbuild/sunos-x64@0.17.10": "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.17.10.tgz#8deabd6dfec6256f80bb101bc59d29dbae99c69b", + "@esbuild/win32-arm64@0.17.10": "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.17.10.tgz#1ec1ee04c788c4c57a83370b6abf79587b3e4965", + "@esbuild/win32-ia32@0.17.10": "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.17.10.tgz#a362528d7f3ad5d44fa8710a96764677ef92ebe9", + "@esbuild/win32-x64@0.17.10": "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.17.10.tgz#ac779220f2da96afd480fb3f3148a292f66e7fc3", + "@eslint/eslintrc@^2.0.0": "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.0.0.tgz#943309d8697c52fc82c076e90c1c74fbbe69dbff", + "@eslint/js@8.35.0": "https://registry.yarnpkg.com/@eslint/js/-/js-8.35.0.tgz#b7569632b0b788a0ca0e438235154e45d42813a7", + "@github/browserslist-config@^1.0.0": "https://registry.yarnpkg.com/@github/browserslist-config/-/browserslist-config-1.0.0.tgz#952fe6da3e6b8ed6a368f3a1a08a9d2ef84e8d04", + "@humanwhocodes/config-array@^0.11.8": "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.8.tgz#03595ac2075a4dc0f191cc2131de14fbd7d410b9", + "@humanwhocodes/module-importer@^1.0.1": "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c", + "@humanwhocodes/object-schema@^1.2.1": "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45", + "@nodelib/fs.scandir@2.1.5": "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5", + "@nodelib/fs.stat@2.0.5": "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b", + "@nodelib/fs.stat@^2.0.2": "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b", + "@nodelib/fs.walk@^1.2.3": "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a", + "@nodelib/fs.walk@^1.2.8": "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a", + "@octokit/auth-token@^2.4.4": "https://registry.yarnpkg.com/@octokit/auth-token/-/auth-token-2.5.0.tgz#27c37ea26c205f28443402477ffd261311f21e36", + "@octokit/core@^3.6.0": "https://registry.yarnpkg.com/@octokit/core/-/core-3.6.0.tgz#3376cb9f3008d9b3d110370d90e0a1fcd5fe6085", + "@octokit/endpoint@^6.0.1": "https://registry.yarnpkg.com/@octokit/endpoint/-/endpoint-6.0.12.tgz#3b4d47a4b0e79b1027fb8d75d4221928b2d05658", + "@octokit/graphql@^4.5.8": "https://registry.yarnpkg.com/@octokit/graphql/-/graphql-4.8.0.tgz#664d9b11c0e12112cbf78e10f49a05959aa22cc3", + "@octokit/openapi-types@^12.11.0": "https://registry.yarnpkg.com/@octokit/openapi-types/-/openapi-types-12.11.0.tgz#da5638d64f2b919bca89ce6602d059f1b52d3ef0", + "@octokit/plugin-paginate-rest@^2.17.0": "https://registry.yarnpkg.com/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-2.21.3.tgz#7f12532797775640dbb8224da577da7dc210c87e", + "@octokit/plugin-rest-endpoint-methods@^5.13.0": "https://registry.yarnpkg.com/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-5.16.2.tgz#7ee8bf586df97dd6868cf68f641354e908c25342", + "@octokit/request-error@^2.0.5": "https://registry.yarnpkg.com/@octokit/request-error/-/request-error-2.1.0.tgz#9e150357831bfc788d13a4fd4b1913d60c74d677", + "@octokit/request-error@^2.1.0": "https://registry.yarnpkg.com/@octokit/request-error/-/request-error-2.1.0.tgz#9e150357831bfc788d13a4fd4b1913d60c74d677", + "@octokit/request@^5.6.0": "https://registry.yarnpkg.com/@octokit/request/-/request-5.6.3.tgz#19a022515a5bba965ac06c9d1334514eb50c48b0", + "@octokit/request@^5.6.3": "https://registry.yarnpkg.com/@octokit/request/-/request-5.6.3.tgz#19a022515a5bba965ac06c9d1334514eb50c48b0", + "@octokit/types@^6.0.3": "https://registry.yarnpkg.com/@octokit/types/-/types-6.41.0.tgz#e58ef78d78596d2fb7df9c6259802464b5f84a04", + "@octokit/types@^6.16.1": "https://registry.yarnpkg.com/@octokit/types/-/types-6.41.0.tgz#e58ef78d78596d2fb7df9c6259802464b5f84a04", + "@octokit/types@^6.39.0": "https://registry.yarnpkg.com/@octokit/types/-/types-6.41.0.tgz#e58ef78d78596d2fb7df9c6259802464b5f84a04", + "@octokit/types@^6.40.0": "https://registry.yarnpkg.com/@octokit/types/-/types-6.41.0.tgz#e58ef78d78596d2fb7df9c6259802464b5f84a04", + "@types/json-schema@^7.0.9": "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.11.tgz#d421b6c527a3037f7c84433fd2c4229e016863d3", + "@types/json5@^0.0.29": "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee", + "@types/node@18": "https://registry.yarnpkg.com/@types/node/-/node-18.14.1.tgz#90dad8476f1e42797c49d6f8b69aaf9f876fc69f", + "@types/semver@^7.3.12": "https://registry.yarnpkg.com/@types/semver/-/semver-7.3.13.tgz#da4bfd73f49bd541d28920ab0e2bf0ee80f71c91", + "@typescript-eslint/eslint-plugin@^5.1.0": "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.53.0.tgz#24b8b4a952f3c615fe070e3c461dd852b5056734", + "@typescript-eslint/parser@^5.1.0": "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.53.0.tgz#a1f2b9ae73b83181098747e96683f1b249ecab52", + "@typescript-eslint/parser@^5.52.0": "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.53.0.tgz#a1f2b9ae73b83181098747e96683f1b249ecab52", + "@typescript-eslint/scope-manager@5.53.0": "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.53.0.tgz#42b54f280e33c82939275a42649701024f3fafef", + "@typescript-eslint/type-utils@5.53.0": "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.53.0.tgz#41665449935ba9b4e6a1ba6e2a3f4b2c31d6cf97", + "@typescript-eslint/types@5.53.0": "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.53.0.tgz#f79eca62b97e518ee124086a21a24f3be267026f", + "@typescript-eslint/typescript-estree@5.53.0": "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.53.0.tgz#bc651dc28cf18ab248ecd18a4c886c744aebd690", + "@typescript-eslint/utils@5.53.0": "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.53.0.tgz#e55eaad9d6fffa120575ffaa530c7e802f13bce8", + "@typescript-eslint/visitor-keys@5.53.0": "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.53.0.tgz#8a5126623937cdd909c30d8fa72f79fa56cc1a9f", + "acorn-jsx@^5.3.2": "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937", + "acorn@^8.8.0": "https://registry.yarnpkg.com/acorn/-/acorn-8.8.2.tgz#1b2f25db02af965399b9776b0c2c391276d37c4a", + "ajv@^6.10.0": "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4", + "ajv@^6.12.4": "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4", + "ansi-regex@^5.0.1": "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304", + "ansi-styles@^4.1.0": "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937", + "argparse@^2.0.1": "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38", + "aria-query@^5.1.3": "https://registry.yarnpkg.com/aria-query/-/aria-query-5.1.3.tgz#19db27cd101152773631396f7a95a3b58c22c35e", + "array-includes@^3.1.5": "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.6.tgz#9e9e720e194f198266ba9e18c29e6a9b0e4b225f", + "array-includes@^3.1.6": "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.6.tgz#9e9e720e194f198266ba9e18c29e6a9b0e4b225f", + "array-union@^2.1.0": "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d", + "array.prototype.flat@^1.3.1": "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.3.1.tgz#ffc6576a7ca3efc2f46a143b9d1dda9b4b3cf5e2", + "array.prototype.flatmap@^1.3.1": "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.3.1.tgz#1aae7903c2100433cb8261cd4ed310aab5c4a183", + "ast-types-flow@^0.0.7": "https://registry.yarnpkg.com/ast-types-flow/-/ast-types-flow-0.0.7.tgz#f70b735c6bca1a5c9c22d982c3e39e7feba3bdad", + "available-typed-arrays@^1.0.5": "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz#92f95616501069d07d10edb2fc37d3e1c65123b7", + "axe-core@^4.6.2": "https://registry.yarnpkg.com/axe-core/-/axe-core-4.6.3.tgz#fc0db6fdb65cc7a80ccf85286d91d64ababa3ece", + "axobject-query@^3.1.1": "https://registry.yarnpkg.com/axobject-query/-/axobject-query-3.1.1.tgz#3b6e5c6d4e43ca7ba51c5babf99d22a9c68485e1", + "balanced-match@^1.0.0": "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee", + "before-after-hook@^2.2.0": "https://registry.yarnpkg.com/before-after-hook/-/before-after-hook-2.2.3.tgz#c51e809c81a4e354084422b9b26bad88249c517c", + "brace-expansion@^1.1.7": "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd", + "braces@^3.0.2": "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107", + "browserslist@^4.21.0": "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.5.tgz#75c5dae60063ee641f977e00edd3cfb2fb7af6a7", + "buffer-from@^1.0.0": "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5", + "call-bind@^1.0.0": "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c", + "call-bind@^1.0.2": "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c", + "callsites@^3.0.0": "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73", + "caniuse-lite@^1.0.30001449": "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001458.tgz#871e35866b4654a7d25eccca86864f411825540c", + "chalk@^4.0.0": "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01", + "color-convert@^2.0.1": "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3", + "color-name@~1.1.4": "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2", + "concat-map@0.0.1": "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b", + "cross-spawn@^7.0.2": "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6", + "damerau-levenshtein@^1.0.8": "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz#b43d286ccbd36bc5b2f7ed41caf2d0aba1f8a6e7", + "debug@^3.2.7": "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a", + "debug@^4.1.1": "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865", + "debug@^4.3.2": "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865", + "debug@^4.3.4": "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865", + "deep-equal@^2.0.5": "https://registry.yarnpkg.com/deep-equal/-/deep-equal-2.2.0.tgz#5caeace9c781028b9ff459f33b779346637c43e6", + "deep-is@^0.1.3": "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831", + "define-properties@^1.1.3": "https://registry.yarnpkg.com/define-properties/-/define-properties-1.2.0.tgz#52988570670c9eacedd8064f4a990f2405849bd5", + "define-properties@^1.1.4": "https://registry.yarnpkg.com/define-properties/-/define-properties-1.2.0.tgz#52988570670c9eacedd8064f4a990f2405849bd5", + "deprecation@^2.0.0": "https://registry.yarnpkg.com/deprecation/-/deprecation-2.3.1.tgz#6368cbdb40abf3373b525ac87e4a260c3a700919", + "deprecation@^2.3.1": "https://registry.yarnpkg.com/deprecation/-/deprecation-2.3.1.tgz#6368cbdb40abf3373b525ac87e4a260c3a700919", + "dir-glob@^3.0.1": "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f", + "doctrine@^2.1.0": "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d", + "doctrine@^3.0.0": "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961", + "dom-walk@^0.1.0": "https://registry.yarnpkg.com/dom-walk/-/dom-walk-0.1.2.tgz#0c548bef048f4d1f2a97249002236060daa3fd84", + "electron-to-chromium@^1.4.284": "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.311.tgz#953bc9a4767f5ce8ec125f9a1ad8e00e8f67e479", + "emoji-regex@^9.2.2": "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72", + "es-abstract@^1.19.0": "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.21.1.tgz#e6105a099967c08377830a0c9cb589d570dd86c6", + "es-abstract@^1.20.4": "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.21.1.tgz#e6105a099967c08377830a0c9cb589d570dd86c6", + "es-get-iterator@^1.1.2": "https://registry.yarnpkg.com/es-get-iterator/-/es-get-iterator-1.1.3.tgz#3ef87523c5d464d41084b2c3c9c214f1199763d6", + "es-set-tostringtag@^2.0.1": "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz#338d502f6f674301d710b80c8592de8a15f09cd8", + "es-shim-unscopables@^1.0.0": "https://registry.yarnpkg.com/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz#702e632193201e3edf8713635d083d378e510241", + "es-to-primitive@^1.2.1": "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a", + "esbuild@^0.17.10": "https://registry.yarnpkg.com/esbuild/-/esbuild-0.17.10.tgz#3be050561b34c5dc05b46978f4e1f326d5cc9437", + "esbuild@~0.17.6": "https://registry.yarnpkg.com/esbuild/-/esbuild-0.17.10.tgz#3be050561b34c5dc05b46978f4e1f326d5cc9437", + "escalade@^3.1.1": "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40", + "escape-string-regexp@^1.0.5": "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4", + "escape-string-regexp@^4.0.0": "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34", + "eslint-config-prettier@>=8.0.0": "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-8.6.0.tgz#dec1d29ab728f4fa63061774e1672ac4e363d207", + "eslint-import-resolver-node@^0.3.7": "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.7.tgz#83b375187d412324a1963d84fa664377a23eb4d7", + "eslint-module-utils@^2.7.4": "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.7.4.tgz#4f3e41116aaf13a20792261e61d3a2e7e0583974", + "eslint-plugin-escompat@^3.3.3": "https://registry.yarnpkg.com/eslint-plugin-escompat/-/eslint-plugin-escompat-3.4.0.tgz#cfd8d3b44fd0bc3d07b8ca15e4b0c15de88a0192", + "eslint-plugin-eslint-comments@^3.2.0": "https://registry.yarnpkg.com/eslint-plugin-eslint-comments/-/eslint-plugin-eslint-comments-3.2.0.tgz#9e1cd7b4413526abb313933071d7aba05ca12ffa", + "eslint-plugin-filenames@^1.3.2": "https://registry.yarnpkg.com/eslint-plugin-filenames/-/eslint-plugin-filenames-1.3.2.tgz#7094f00d7aefdd6999e3ac19f72cea058e590cf7", + "eslint-plugin-github@^4.6.1": "https://registry.yarnpkg.com/eslint-plugin-github/-/eslint-plugin-github-4.6.1.tgz#48ba45b729468caba41d7c3e0e5901b8bb068e11", + "eslint-plugin-i18n-text@^1.0.1": "https://registry.yarnpkg.com/eslint-plugin-i18n-text/-/eslint-plugin-i18n-text-1.0.1.tgz#69ce14f9af7d135cbe8114b1b144a57bb83291dc", + "eslint-plugin-import@^2.25.2": "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.27.5.tgz#876a6d03f52608a3e5bb439c2550588e51dd6c65", + "eslint-plugin-jsx-a11y@^6.7.1": "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.7.1.tgz#fca5e02d115f48c9a597a6894d5bcec2f7a76976", + "eslint-plugin-no-only-tests@^3.0.0": "https://registry.yarnpkg.com/eslint-plugin-no-only-tests/-/eslint-plugin-no-only-tests-3.1.0.tgz#f38e4935c6c6c4842bf158b64aaa20c366fe171b", + "eslint-plugin-prettier@^4.0.0": "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.1.tgz#651cbb88b1dab98bfd42f017a12fa6b2d993f94b", + "eslint-rule-documentation@>=1.0.0": "https://registry.yarnpkg.com/eslint-rule-documentation/-/eslint-rule-documentation-1.0.23.tgz#4e0886145597a78d24524ec7e0cf18c6fedc23a8", + "eslint-scope@^5.1.1": "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c", + "eslint-scope@^7.1.1": "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.1.1.tgz#fff34894c2f65e5226d3041ac480b4513a163642", + "eslint-utils@^3.0.0": "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-3.0.0.tgz#8aebaface7345bb33559db0a1f13a1d2d48c3672", + "eslint-visitor-keys@^2.0.0": "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303", + "eslint-visitor-keys@^3.3.0": "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz#f6480fa6b1f30efe2d1968aa8ac745b862469826", + "eslint@^8.34.0": "https://registry.yarnpkg.com/eslint/-/eslint-8.35.0.tgz#fffad7c7e326bae606f0e8f436a6158566d42323", + "espree@^9.4.0": "https://registry.yarnpkg.com/espree/-/espree-9.4.1.tgz#51d6092615567a2c2cff7833445e37c28c0065bd", + "esquery@^1.4.2": "https://registry.yarnpkg.com/esquery/-/esquery-1.4.2.tgz#c6d3fee05dd665808e2ad870631f221f5617b1d1", + "esrecurse@^4.3.0": "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921", + "estraverse@^4.1.1": "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d", + "estraverse@^5.1.0": "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123", + "estraverse@^5.2.0": "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123", + "esutils@^2.0.2": "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64", + "fast-deep-equal@^3.1.1": "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525", + "fast-deep-equal@^3.1.3": "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525", + "fast-diff@^1.1.2": "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.2.0.tgz#73ee11982d86caaf7959828d519cfe927fac5f03", + "fast-glob@^3.2.9": "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.12.tgz#7f39ec99c2e6ab030337142da9e0c18f37afae80", + "fast-json-stable-stringify@^2.0.0": "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633", + "fast-levenshtein@^2.0.6": "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917", + "fast-xml-parser@^4.1.3": "https://registry.yarnpkg.com/fast-xml-parser/-/fast-xml-parser-4.1.3.tgz#0254ad0d4d27f07e6b48254b068c0c137488dd97", + "fastq@^1.6.0": "https://registry.yarnpkg.com/fastq/-/fastq-1.15.0.tgz#d04d07c6a2a68fe4599fea8d2e103a937fae6b3a", + "file-entry-cache@^6.0.1": "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027", + "fill-range@^7.0.1": "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40", + "find-up@^5.0.0": "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc", + "flat-cache@^3.0.4": "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11", + "flatted@^3.1.0": "https://registry.yarnpkg.com/flatted/-/flatted-3.2.7.tgz#609f39207cb614b89d0765b477cb2d437fbf9787", + "for-each@^0.3.3": "https://registry.yarnpkg.com/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e", + "fs.realpath@^1.0.0": "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f", + "fsevents@~2.3.2": "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a", + "function-bind@^1.1.1": "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d", + "function.prototype.name@^1.1.5": "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.5.tgz#cce0505fe1ffb80503e6f9e46cc64e46a12a9621", + "functions-have-names@^1.2.2": "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834", + "get-intrinsic@^1.0.2": "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.0.tgz#7ad1dc0535f3a2904bba075772763e5051f6d05f", + "get-intrinsic@^1.1.1": "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.0.tgz#7ad1dc0535f3a2904bba075772763e5051f6d05f", + "get-intrinsic@^1.1.3": "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.0.tgz#7ad1dc0535f3a2904bba075772763e5051f6d05f", + "get-intrinsic@^1.2.0": "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.0.tgz#7ad1dc0535f3a2904bba075772763e5051f6d05f", + "get-symbol-description@^1.0.0": "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.0.0.tgz#7fdb81c900101fbd564dd5f1a30af5aadc1e58d6", + "get-tsconfig@^4.4.0": "https://registry.yarnpkg.com/get-tsconfig/-/get-tsconfig-4.4.0.tgz#64eee64596668a81b8fce18403f94f245ee0d4e5", + "glob-parent@^5.1.2": "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4", + "glob-parent@^6.0.2": "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3", + "glob@^7.1.3": "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b", + "global@^4.4.0": "https://registry.yarnpkg.com/global/-/global-4.4.0.tgz#3e7b105179006a323ed71aafca3e9c57a5cc6406", + "globals@^13.19.0": "https://registry.yarnpkg.com/globals/-/globals-13.20.0.tgz#ea276a1e508ffd4f1612888f9d1bad1e2717bf82", + "globalthis@^1.0.3": "https://registry.yarnpkg.com/globalthis/-/globalthis-1.0.3.tgz#5852882a52b80dc301b0660273e1ed082f0b6ccf", + "globby@^11.1.0": "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b", + "gopd@^1.0.1": "https://registry.yarnpkg.com/gopd/-/gopd-1.0.1.tgz#29ff76de69dac7489b7c0918a5788e56477c332c", + "grapheme-splitter@^1.0.4": "https://registry.yarnpkg.com/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz#9cf3a665c6247479896834af35cf1dbb4400767e", + "has-bigints@^1.0.1": "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.2.tgz#0871bd3e3d51626f6ca0966668ba35d5602d6eaa", + "has-bigints@^1.0.2": "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.2.tgz#0871bd3e3d51626f6ca0966668ba35d5602d6eaa", + "has-flag@^4.0.0": "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b", + "has-property-descriptors@^1.0.0": "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz#610708600606d36961ed04c196193b6a607fa861", + "has-proto@^1.0.1": "https://registry.yarnpkg.com/has-proto/-/has-proto-1.0.1.tgz#1885c1305538958aff469fef37937c22795408e0", + "has-symbols@^1.0.2": "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8", + "has-symbols@^1.0.3": "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8", + "has-tostringtag@^1.0.0": "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz#7e133818a7d394734f941e73c3d3f9291e658b25", + "has@^1.0.3": "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796", + "ignore@^5.0.5": "https://registry.yarnpkg.com/ignore/-/ignore-5.2.4.tgz#a291c0c6178ff1b960befe47fcdec301674a6324", + "ignore@^5.2.0": "https://registry.yarnpkg.com/ignore/-/ignore-5.2.4.tgz#a291c0c6178ff1b960befe47fcdec301674a6324", + "import-fresh@^3.0.0": "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b", + "import-fresh@^3.2.1": "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b", + "imurmurhash@^0.1.4": "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea", + "inflight@^1.0.4": "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9", + "inherits@2": "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c", + "internal-slot@^1.0.4": "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.5.tgz#f2a2ee21f668f8627a4667f309dc0f4fb6674986", + "is-arguments@^1.1.1": "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.1.1.tgz#15b3f88fda01f2a97fec84ca761a560f123efa9b", + "is-array-buffer@^3.0.1": "https://registry.yarnpkg.com/is-array-buffer/-/is-array-buffer-3.0.1.tgz#deb1db4fcae48308d54ef2442706c0393997052a", + "is-bigint@^1.0.1": "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.4.tgz#08147a1875bc2b32005d41ccd8291dffc6691df3", + "is-boolean-object@^1.1.0": "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.2.tgz#5c6dc200246dd9321ae4b885a114bb1f75f63719", + "is-callable@^1.1.3": "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055", + "is-callable@^1.1.4": "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055", + "is-callable@^1.2.7": "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055", + "is-core-module@^2.11.0": "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.11.0.tgz#ad4cb3e3863e814523c96f3f58d26cc570ff0144", + "is-core-module@^2.9.0": "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.11.0.tgz#ad4cb3e3863e814523c96f3f58d26cc570ff0144", + "is-date-object@^1.0.1": "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.5.tgz#0841d5536e724c25597bf6ea62e1bd38298df31f", + "is-date-object@^1.0.5": "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.5.tgz#0841d5536e724c25597bf6ea62e1bd38298df31f", + "is-extglob@^2.1.1": "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2", + "is-glob@^4.0.0": "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084", + "is-glob@^4.0.1": "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084", + "is-glob@^4.0.3": "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084", + "is-map@^2.0.1": "https://registry.yarnpkg.com/is-map/-/is-map-2.0.2.tgz#00922db8c9bf73e81b7a335827bc2a43f2b91127", + "is-map@^2.0.2": "https://registry.yarnpkg.com/is-map/-/is-map-2.0.2.tgz#00922db8c9bf73e81b7a335827bc2a43f2b91127", + "is-negative-zero@^2.0.2": "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.2.tgz#7bf6f03a28003b8b3965de3ac26f664d765f3150", + "is-number-object@^1.0.4": "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.7.tgz#59d50ada4c45251784e9904f5246c742f07a42fc", + "is-number@^7.0.0": "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b", + "is-path-inside@^3.0.3": "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283", + "is-plain-object@^5.0.0": "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-5.0.0.tgz#4427f50ab3429e9025ea7d52e9043a9ef4159344", + "is-regex@^1.1.4": "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958", + "is-set@^2.0.1": "https://registry.yarnpkg.com/is-set/-/is-set-2.0.2.tgz#90755fa4c2562dc1c5d4024760d6119b94ca18ec", + "is-set@^2.0.2": "https://registry.yarnpkg.com/is-set/-/is-set-2.0.2.tgz#90755fa4c2562dc1c5d4024760d6119b94ca18ec", + "is-shared-array-buffer@^1.0.2": "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz#8f259c573b60b6a32d4058a1a07430c0a7344c79", + "is-string@^1.0.5": "https://registry.yarnpkg.com/is-string/-/is-string-1.0.7.tgz#0dd12bf2006f255bb58f695110eff7491eebc0fd", + "is-string@^1.0.7": "https://registry.yarnpkg.com/is-string/-/is-string-1.0.7.tgz#0dd12bf2006f255bb58f695110eff7491eebc0fd", + "is-symbol@^1.0.2": "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.4.tgz#a6dac93b635b063ca6872236de88910a57af139c", + "is-symbol@^1.0.3": "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.4.tgz#a6dac93b635b063ca6872236de88910a57af139c", + "is-typed-array@^1.1.10": "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.10.tgz#36a5b5cb4189b575d1a3e4b08536bfb485801e3f", + "is-typed-array@^1.1.9": "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.10.tgz#36a5b5cb4189b575d1a3e4b08536bfb485801e3f", + "is-weakmap@^2.0.1": "https://registry.yarnpkg.com/is-weakmap/-/is-weakmap-2.0.1.tgz#5008b59bdc43b698201d18f62b37b2ca243e8cf2", + "is-weakref@^1.0.2": "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.0.2.tgz#9529f383a9338205e89765e0392efc2f100f06f2", + "is-weakset@^2.0.1": "https://registry.yarnpkg.com/is-weakset/-/is-weakset-2.0.2.tgz#4569d67a747a1ce5a994dfd4ef6dcea76e7c0a1d", + "isarray@^2.0.5": "https://registry.yarnpkg.com/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723", + "isexe@^2.0.0": "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10", + "js-sdsl@^4.1.4": "https://registry.yarnpkg.com/js-sdsl/-/js-sdsl-4.3.0.tgz#aeefe32a451f7af88425b11fdb5f58c90ae1d711", + "js-yaml@^4.1.0": "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602", + "json-schema-traverse@^0.4.1": "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660", + "json-stable-stringify-without-jsonify@^1.0.1": "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651", + "json5@^1.0.2": "https://registry.yarnpkg.com/json5/-/json5-1.0.2.tgz#63d98d60f21b313b77c4d6da18bfa69d80e1d593", + "jsx-ast-utils@^3.3.2": "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.3.3.tgz#76b3e6e6cece5c69d49a5792c3d01bd1a0cdc7ea", + "jsx-ast-utils@^3.3.3": "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.3.3.tgz#76b3e6e6cece5c69d49a5792c3d01bd1a0cdc7ea", + "language-subtag-registry@~0.3.2": "https://registry.yarnpkg.com/language-subtag-registry/-/language-subtag-registry-0.3.22.tgz#2e1500861b2e457eba7e7ae86877cbd08fa1fd1d", + "language-tags@=1.0.5": "https://registry.yarnpkg.com/language-tags/-/language-tags-1.0.5.tgz#d321dbc4da30ba8bf3024e040fa5c14661f9193a", + "levn@^0.4.1": "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade", + "locate-path@^6.0.0": "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286", + "lodash.camelcase@4.3.0": "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6", + "lodash.kebabcase@4.1.1": "https://registry.yarnpkg.com/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz#8489b1cb0d29ff88195cceca448ff6d6cc295c36", + "lodash.merge@^4.6.2": "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a", + "lodash.snakecase@4.1.1": "https://registry.yarnpkg.com/lodash.snakecase/-/lodash.snakecase-4.1.1.tgz#39d714a35357147837aefd64b5dcbb16becd8f8d", + "lodash.upperfirst@4.3.1": "https://registry.yarnpkg.com/lodash.upperfirst/-/lodash.upperfirst-4.3.1.tgz#1365edf431480481ef0d1c68957a5ed99d49f7ce", + "lru-cache@^6.0.0": "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94", + "merge2@^1.3.0": "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae", + "merge2@^1.4.1": "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae", + "micromatch@^4.0.4": "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6", + "min-document@^2.19.0": "https://registry.yarnpkg.com/min-document/-/min-document-2.19.0.tgz#7bd282e3f5842ed295bb748cdd9f1ffa2c824685", + "minimatch@^3.0.4": "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b", + "minimatch@^3.0.5": "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b", + "minimatch@^3.1.1": "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b", + "minimatch@^3.1.2": "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b", + "minimist@^1.2.0": "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c", + "minimist@^1.2.6": "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c", + "ms@2.1.2": "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009", + "ms@^2.1.1": "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2", + "natural-compare-lite@^1.4.0": "https://registry.yarnpkg.com/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz#17b09581988979fddafe0201e931ba933c96cbb4", + "natural-compare@^1.4.0": "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7", + "node-fetch@^2.6.7": "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.9.tgz#7c7f744b5cc6eb5fd404e0c7a9fec630a55657e6", + "node-releases@^2.0.8": "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.10.tgz#c311ebae3b6a148c89b1813fd7c4d3c024ef537f", + "object-inspect@^1.12.2": "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.3.tgz#ba62dffd67ee256c8c086dfae69e016cd1f198b9", + "object-inspect@^1.9.0": "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.3.tgz#ba62dffd67ee256c8c086dfae69e016cd1f198b9", + "object-is@^1.1.5": "https://registry.yarnpkg.com/object-is/-/object-is-1.1.5.tgz#b9deeaa5fc7f1846a0faecdceec138e5778f53ac", + "object-keys@^1.1.1": "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e", + "object.assign@^4.1.3": "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.4.tgz#9673c7c7c351ab8c4d0b516f4343ebf4dfb7799f", + "object.assign@^4.1.4": "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.4.tgz#9673c7c7c351ab8c4d0b516f4343ebf4dfb7799f", + "object.entries@^1.1.6": "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.6.tgz#9737d0e5b8291edd340a3e3264bb8a3b00d5fa23", + "object.fromentries@^2.0.6": "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.6.tgz#cdb04da08c539cffa912dcd368b886e0904bfa73", + "object.values@^1.1.6": "https://registry.yarnpkg.com/object.values/-/object.values-1.1.6.tgz#4abbaa71eba47d63589d402856f908243eea9b1d", + "once@^1.3.0": "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1", + "once@^1.4.0": "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1", + "optionator@^0.9.1": "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499", + "p-limit@^3.0.2": "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b", + "p-locate@^5.0.0": "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834", + "parent-module@^1.0.0": "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2", + "path-exists@^4.0.0": "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3", + "path-is-absolute@^1.0.0": "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f", + "path-key@^3.1.0": "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375", + "path-parse@^1.0.7": "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735", + "path-type@^4.0.0": "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b", + "picocolors@^1.0.0": "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c", + "picomatch@^2.3.1": "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42", + "prelude-ls@^1.2.1": "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396", + "prettier-linter-helpers@^1.0.0": "https://registry.yarnpkg.com/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz#d23d41fe1375646de2d0104d3454a3008802cf7b", + "prettier@^2.2.1": "https://registry.yarnpkg.com/prettier/-/prettier-2.8.4.tgz#34dd2595629bfbb79d344ac4a91ff948694463c3", + "prettier@^2.8.4": "https://registry.yarnpkg.com/prettier/-/prettier-2.8.4.tgz#34dd2595629bfbb79d344ac4a91ff948694463c3", + "process@^0.11.10": "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182", + "punycode@^2.1.0": "https://registry.yarnpkg.com/punycode/-/punycode-2.3.0.tgz#f67fa67c94da8f4d0cfff981aee4118064199b8f", + "queue-microtask@^1.2.2": "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243", + "regenerator-runtime@^0.13.11": "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz#f6dca3e7ceec20590d07ada785636a90cdca17f9", + "regexp.prototype.flags@^1.4.3": "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz#87cab30f80f66660181a3bb7bf5981a872b367ac", + "regexpp@^3.2.0": "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2", + "resolve-from@^4.0.0": "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6", + "resolve@^1.22.1": "https://registry.yarnpkg.com/resolve/-/resolve-1.22.1.tgz#27cb2ebb53f91abb49470a928bba7558066ac177", + "reusify@^1.0.4": "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76", + "rimraf@^3.0.2": "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a", + "run-parallel@^1.1.9": "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee", + "safe-regex-test@^1.0.0": "https://registry.yarnpkg.com/safe-regex-test/-/safe-regex-test-1.0.0.tgz#793b874d524eb3640d1873aad03596db2d4f2295", + "sax@^1.2.4": "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9", + "semver@^6.3.0": "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d", + "semver@^7.3.7": "https://registry.yarnpkg.com/semver/-/semver-7.3.8.tgz#07a78feafb3f7b32347d725e33de7e2a2df67798", + "shebang-command@^2.0.0": "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea", + "shebang-regex@^3.0.0": "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172", + "side-channel@^1.0.4": "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf", + "slash@^3.0.0": "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634", + "source-map-support@^0.5.21": "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f", + "source-map@^0.6.0": "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263", + "stop-iteration-iterator@^1.0.0": "https://registry.yarnpkg.com/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz#6a60be0b4ee757d1ed5254858ec66b10c49285e4", + "string.prototype.trimend@^1.0.6": "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz#c4a27fa026d979d79c04f17397f250a462944533", + "string.prototype.trimstart@^1.0.6": "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz#e90ab66aa8e4007d92ef591bbf3cd422c56bdcf4", + "strip-ansi@^6.0.1": "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9", + "strip-bom@^3.0.0": "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3", + "strip-json-comments@^3.1.0": "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006", + "strip-json-comments@^3.1.1": "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006", + "strnum@^1.0.5": "https://registry.yarnpkg.com/strnum/-/strnum-1.0.5.tgz#5c4e829fe15ad4ff0d20c3db5ac97b73c9b072db", + "supports-color@^7.1.0": "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da", + "supports-preserve-symlinks-flag@^1.0.0": "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09", + "svg-element-attributes@^1.3.1": "https://registry.yarnpkg.com/svg-element-attributes/-/svg-element-attributes-1.3.1.tgz#0c55afac6284291ab563d0913c062cf78a8c0ddb", + "text-table@^0.2.0": "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4", + "to-regex-range@^5.0.1": "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4", + "tr46@~0.0.3": "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a", + "tsconfig-paths@^3.14.1": "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.14.2.tgz#6e32f1f79412decd261f92d633a9dc1cfa99f088", + "tslib@^1.8.1": "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00", + "tsutils@^3.21.0": "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623", + "tsx@^3.12.3": "https://registry.yarnpkg.com/tsx/-/tsx-3.12.3.tgz#b29f6c9246d4e3ea46451cd81d7cbc98f45c4b8a", + "tunnel@^0.0.6": "https://registry.yarnpkg.com/tunnel/-/tunnel-0.0.6.tgz#72f1314b34a5b192db012324df2cc587ca47f92c", + "type-check@^0.4.0": "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1", + "type-check@~0.4.0": "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1", + "type-fest@^0.20.2": "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4", + "typed-array-length@^1.0.4": "https://registry.yarnpkg.com/typed-array-length/-/typed-array-length-1.0.4.tgz#89d83785e5c4098bec72e08b319651f0eac9c1bb", + "typescript@^4.9.5": "https://registry.yarnpkg.com/typescript/-/typescript-4.9.5.tgz#095979f9bcc0d09da324d58d03ce8f8374cbe65a", + "unbox-primitive@^1.0.2": "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.2.tgz#29032021057d5e6cdbd08c5129c226dff8ed6f9e", + "universal-user-agent@^6.0.0": "https://registry.yarnpkg.com/universal-user-agent/-/universal-user-agent-6.0.0.tgz#3381f8503b251c0d9cd21bc1de939ec9df5480ee", + "update-browserslist-db@^1.0.10": "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz#0f54b876545726f17d00cd9a2561e6dade943ff3", + "uri-js@^4.2.2": "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e", + "uuid@^8.3.2": "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2", + "webidl-conversions@^3.0.0": "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871", + "whatwg-url@^5.0.0": "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d", + "which-boxed-primitive@^1.0.2": "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6", + "which-collection@^1.0.1": "https://registry.yarnpkg.com/which-collection/-/which-collection-1.0.1.tgz#70eab71ebbbd2aefaf32f917082fc62cdcb70906", + "which-typed-array@^1.1.9": "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.9.tgz#307cf898025848cf995e795e8423c7f337efbde6", + "which@^2.0.1": "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1", + "word-wrap@^1.2.3": "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c", + "wrappy@1": "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f", + "xml-js@^1.6.11": "https://registry.yarnpkg.com/xml-js/-/xml-js-1.6.11.tgz#927d2f6947f7f1c19a316dd8eea3614e8b18f8e9", + "yallist@^4.0.0": "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72", + "yocto-queue@^0.1.0": "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" + }, + "files": [], + "artifacts": {} +} \ No newline at end of file diff --git a/node_modules/@actions/core/LICENSE.md b/node_modules/@actions/core/LICENSE.md new file mode 100644 index 0000000..dbae2ed --- /dev/null +++ b/node_modules/@actions/core/LICENSE.md @@ -0,0 +1,9 @@ +The MIT License (MIT) + +Copyright 2019 GitHub + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/node_modules/@actions/core/README.md b/node_modules/@actions/core/README.md new file mode 100644 index 0000000..3c20c8e --- /dev/null +++ b/node_modules/@actions/core/README.md @@ -0,0 +1,335 @@ +# `@actions/core` + +> Core functions for setting results, logging, registering secrets and exporting variables across actions + +## Usage + +### Import the package + +```js +// javascript +const core = require('@actions/core'); + +// typescript +import * as core from '@actions/core'; +``` + +#### Inputs/Outputs + +Action inputs can be read with `getInput` which returns a `string` or `getBooleanInput` which parses a boolean based on the [yaml 1.2 specification](https://yaml.org/spec/1.2/spec.html#id2804923). If `required` set to be false, the input should have a default value in `action.yml`. + +Outputs can be set with `setOutput` which makes them available to be mapped into inputs of other actions to ensure they are decoupled. + +```js +const myInput = core.getInput('inputName', { required: true }); +const myBooleanInput = core.getBooleanInput('booleanInputName', { required: true }); +const myMultilineInput = core.getMultilineInput('multilineInputName', { required: true }); +core.setOutput('outputKey', 'outputVal'); +``` + +#### Exporting variables + +Since each step runs in a separate process, you can use `exportVariable` to add it to this step and future steps environment blocks. + +```js +core.exportVariable('envVar', 'Val'); +``` + +#### Setting a secret + +Setting a secret registers the secret with the runner to ensure it is masked in logs. + +```js +core.setSecret('myPassword'); +``` + +#### PATH Manipulation + +To make a tool's path available in the path for the remainder of the job (without altering the machine or containers state), use `addPath`. The runner will prepend the path given to the jobs PATH. + +```js +core.addPath('/path/to/mytool'); +``` + +#### Exit codes + +You should use this library to set the failing exit code for your action. If status is not set and the script runs to completion, that will lead to a success. + +```js +const core = require('@actions/core'); + +try { + // Do stuff +} +catch (err) { + // setFailed logs the message and sets a failing exit code + core.setFailed(`Action failed with error ${err}`); +} +``` + +Note that `setNeutral` is not yet implemented in actions V2 but equivalent functionality is being planned. + +#### Logging + +Finally, this library provides some utilities for logging. Note that debug logging is hidden from the logs by default. This behavior can be toggled by enabling the [Step Debug Logs](../../docs/action-debugging.md#step-debug-logs). + +```js +const core = require('@actions/core'); + +const myInput = core.getInput('input'); +try { + core.debug('Inside try block'); + + if (!myInput) { + core.warning('myInput was not set'); + } + + if (core.isDebug()) { + // curl -v https://github.com + } else { + // curl https://github.com + } + + // Do stuff + core.info('Output to the actions build log') + + core.notice('This is a message that will also emit an annotation') +} +catch (err) { + core.error(`Error ${err}, action may still succeed though`); +} +``` + +This library can also wrap chunks of output in foldable groups. + +```js +const core = require('@actions/core') + +// Manually wrap output +core.startGroup('Do some function') +doSomeFunction() +core.endGroup() + +// Wrap an asynchronous function call +const result = await core.group('Do something async', async () => { + const response = await doSomeHTTPRequest() + return response +}) +``` + +#### Annotations + +This library has 3 methods that will produce [annotations](https://docs.github.com/en/rest/reference/checks#create-a-check-run). +```js +core.error('This is a bad error. This will also fail the build.') + +core.warning('Something went wrong, but it\'s not bad enough to fail the build.') + +core.notice('Something happened that you might want to know about.') +``` + +These will surface to the UI in the Actions page and on Pull Requests. They look something like this: + +![Annotations Image](../../docs/assets/annotations.png) + +These annotations can also be attached to particular lines and columns of your source files to show exactly where a problem is occuring. + +These options are: +```typescript +export interface AnnotationProperties { + /** + * A title for the annotation. + */ + title?: string + + /** + * The name of the file for which the annotation should be created. + */ + file?: string + + /** + * The start line for the annotation. + */ + startLine?: number + + /** + * The end line for the annotation. Defaults to `startLine` when `startLine` is provided. + */ + endLine?: number + + /** + * The start column for the annotation. Cannot be sent when `startLine` and `endLine` are different values. + */ + startColumn?: number + + /** + * The start column for the annotation. Cannot be sent when `startLine` and `endLine` are different values. + * Defaults to `startColumn` when `startColumn` is provided. + */ + endColumn?: number +} +``` + +#### Styling output + +Colored output is supported in the Action logs via standard [ANSI escape codes](https://en.wikipedia.org/wiki/ANSI_escape_code). 3/4 bit, 8 bit and 24 bit colors are all supported. + +Foreground colors: + +```js +// 3/4 bit +core.info('\u001b[35mThis foreground will be magenta') + +// 8 bit +core.info('\u001b[38;5;6mThis foreground will be cyan') + +// 24 bit +core.info('\u001b[38;2;255;0;0mThis foreground will be bright red') +``` + +Background colors: + +```js +// 3/4 bit +core.info('\u001b[43mThis background will be yellow'); + +// 8 bit +core.info('\u001b[48;5;6mThis background will be cyan') + +// 24 bit +core.info('\u001b[48;2;255;0;0mThis background will be bright red') +``` + +Special styles: + +```js +core.info('\u001b[1mBold text') +core.info('\u001b[3mItalic text') +core.info('\u001b[4mUnderlined text') +``` + +ANSI escape codes can be combined with one another: + +```js +core.info('\u001b[31;46mRed foreground with a cyan background and \u001b[1mbold text at the end'); +``` + +> Note: Escape codes reset at the start of each line + +```js +core.info('\u001b[35mThis foreground will be magenta') +core.info('This foreground will reset to the default') +``` + +Manually typing escape codes can be a little difficult, but you can use third party modules such as [ansi-styles](https://github.com/chalk/ansi-styles). + +```js +const style = require('ansi-styles'); +core.info(style.color.ansi16m.hex('#abcdef') + 'Hello world!') +``` + +#### Action state + +You can use this library to save state and get state for sharing information between a given wrapper action: + +**action.yml**: + +```yaml +name: 'Wrapper action sample' +inputs: + name: + default: 'GitHub' +runs: + using: 'node12' + main: 'main.js' + post: 'cleanup.js' +``` + +In action's `main.js`: + +```js +const core = require('@actions/core'); + +core.saveState("pidToKill", 12345); +``` + +In action's `cleanup.js`: + +```js +const core = require('@actions/core'); + +var pid = core.getState("pidToKill"); + +process.kill(pid); +``` + +#### OIDC Token + +You can use these methods to interact with the GitHub OIDC provider and get a JWT ID token which would help to get access token from third party cloud providers. + +**Method Name**: getIDToken() + +**Inputs** + +audience : optional + +**Outputs** + +A [JWT](https://jwt.io/) ID Token + +In action's `main.ts`: +```js +const core = require('@actions/core'); +async function getIDTokenAction(): Promise { + + const audience = core.getInput('audience', {required: false}) + + const id_token1 = await core.getIDToken() // ID Token with default audience + const id_token2 = await core.getIDToken(audience) // ID token with custom audience + + // this id_token can be used to get access token from third party cloud providers +} +getIDTokenAction() +``` + +In action's `actions.yml`: + +```yaml +name: 'GetIDToken' +description: 'Get ID token from Github OIDC provider' +inputs: + audience: + description: 'Audience for which the ID token is intended for' + required: false +outputs: + id_token1: + description: 'ID token obtained from OIDC provider' + id_token2: + description: 'ID token obtained from OIDC provider' +runs: + using: 'node12' + main: 'dist/index.js' +``` + +#### Filesystem path helpers + +You can use these methods to manipulate file paths across operating systems. + +The `toPosixPath` function converts input paths to Posix-style (Linux) paths. +The `toWin32Path` function converts input paths to Windows-style paths. These +functions work independently of the underlying runner operating system. + +```js +toPosixPath('\\foo\\bar') // => /foo/bar +toWin32Path('/foo/bar') // => \foo\bar +``` + +The `toPlatformPath` function converts input paths to the expected value on the runner's operating system. + +```js +// On a Windows runner. +toPlatformPath('/foo/bar') // => \foo\bar + +// On a Linux runner. +toPlatformPath('\\foo\\bar') // => /foo/bar +``` diff --git a/node_modules/@actions/core/lib/command.d.ts b/node_modules/@actions/core/lib/command.d.ts new file mode 100644 index 0000000..53f8f4b --- /dev/null +++ b/node_modules/@actions/core/lib/command.d.ts @@ -0,0 +1,15 @@ +export interface CommandProperties { + [key: string]: any; +} +/** + * Commands + * + * Command Format: + * ::name key=value,key=value::message + * + * Examples: + * ::warning::This is the message + * ::set-env name=MY_VAR::some value + */ +export declare function issueCommand(command: string, properties: CommandProperties, message: any): void; +export declare function issue(name: string, message?: string): void; diff --git a/node_modules/@actions/core/lib/command.js b/node_modules/@actions/core/lib/command.js new file mode 100644 index 0000000..0b28c66 --- /dev/null +++ b/node_modules/@actions/core/lib/command.js @@ -0,0 +1,92 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__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(exports, "__esModule", { value: true }); +exports.issue = exports.issueCommand = void 0; +const os = __importStar(require("os")); +const utils_1 = require("./utils"); +/** + * Commands + * + * Command Format: + * ::name key=value,key=value::message + * + * Examples: + * ::warning::This is the message + * ::set-env name=MY_VAR::some value + */ +function issueCommand(command, properties, message) { + const cmd = new Command(command, properties, message); + process.stdout.write(cmd.toString() + os.EOL); +} +exports.issueCommand = issueCommand; +function issue(name, message = '') { + issueCommand(name, {}, message); +} +exports.issue = issue; +const CMD_STRING = '::'; +class Command { + constructor(command, properties, message) { + if (!command) { + command = 'missing.command'; + } + 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)}`; + } + } + } + } + cmdStr += `${CMD_STRING}${escapeData(this.message)}`; + return cmdStr; + } +} +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'); +} +//# sourceMappingURL=command.js.map \ No newline at end of file diff --git a/node_modules/@actions/core/lib/command.js.map b/node_modules/@actions/core/lib/command.js.map new file mode 100644 index 0000000..51c7c63 --- /dev/null +++ b/node_modules/@actions/core/lib/command.js.map @@ -0,0 +1 @@ +{"version":3,"file":"command.js","sourceRoot":"","sources":["../src/command.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA,uCAAwB;AACxB,mCAAsC;AAWtC;;;;;;;;;GASG;AACH,SAAgB,YAAY,CAC1B,OAAe,EACf,UAA6B,EAC7B,OAAY;IAEZ,MAAM,GAAG,GAAG,IAAI,OAAO,CAAC,OAAO,EAAE,UAAU,EAAE,OAAO,CAAC,CAAA;IACrD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAAA;AAC/C,CAAC;AAPD,oCAOC;AAED,SAAgB,KAAK,CAAC,IAAY,EAAE,OAAO,GAAG,EAAE;IAC9C,YAAY,CAAC,IAAI,EAAE,EAAE,EAAE,OAAO,CAAC,CAAA;AACjC,CAAC;AAFD,sBAEC;AAED,MAAM,UAAU,GAAG,IAAI,CAAA;AAEvB,MAAM,OAAO;IAKX,YAAY,OAAe,EAAE,UAA6B,EAAE,OAAe;QACzE,IAAI,CAAC,OAAO,EAAE;YACZ,OAAO,GAAG,iBAAiB,CAAA;SAC5B;QAED,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;QACtB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAA;QAC5B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;IACxB,CAAC;IAED,QAAQ;QACN,IAAI,MAAM,GAAG,UAAU,GAAG,IAAI,CAAC,OAAO,CAAA;QAEtC,IAAI,IAAI,CAAC,UAAU,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;YAC9D,MAAM,IAAI,GAAG,CAAA;YACb,IAAI,KAAK,GAAG,IAAI,CAAA;YAChB,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,UAAU,EAAE;gBACjC,IAAI,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;oBACvC,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAA;oBAChC,IAAI,GAAG,EAAE;wBACP,IAAI,KAAK,EAAE;4BACT,KAAK,GAAG,KAAK,CAAA;yBACd;6BAAM;4BACL,MAAM,IAAI,GAAG,CAAA;yBACd;wBAED,MAAM,IAAI,GAAG,GAAG,IAAI,cAAc,CAAC,GAAG,CAAC,EAAE,CAAA;qBAC1C;iBACF;aACF;SACF;QAED,MAAM,IAAI,GAAG,UAAU,GAAG,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAA;QACpD,OAAO,MAAM,CAAA;IACf,CAAC;CACF;AAED,SAAS,UAAU,CAAC,CAAM;IACxB,OAAO,sBAAc,CAAC,CAAC,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC;SACpB,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC;SACrB,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;AAC1B,CAAC;AAED,SAAS,cAAc,CAAC,CAAM;IAC5B,OAAO,sBAAc,CAAC,CAAC,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC;SACpB,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC;SACrB,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC;SACpB,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;AACzB,CAAC"} \ No newline at end of file diff --git a/node_modules/@actions/core/lib/core.d.ts b/node_modules/@actions/core/lib/core.d.ts new file mode 100644 index 0000000..1defb57 --- /dev/null +++ b/node_modules/@actions/core/lib/core.d.ts @@ -0,0 +1,198 @@ +/** + * Interface for getInput options + */ +export interface InputOptions { + /** Optional. Whether the input is required. If required and not present, will throw. Defaults to false */ + required?: boolean; + /** Optional. Whether leading/trailing whitespace will be trimmed for the input. Defaults to true */ + trimWhitespace?: boolean; +} +/** + * The code to exit an action + */ +export declare enum ExitCode { + /** + * A code indicating that the action was successful + */ + Success = 0, + /** + * A code indicating that the action was a failure + */ + Failure = 1 +} +/** + * Optional properties that can be sent with annotatation commands (notice, error, and warning) + * See: https://docs.github.com/en/rest/reference/checks#create-a-check-run for more information about annotations. + */ +export interface AnnotationProperties { + /** + * A title for the annotation. + */ + title?: string; + /** + * The path of the file for which the annotation should be created. + */ + file?: string; + /** + * The start line for the annotation. + */ + startLine?: number; + /** + * The end line for the annotation. Defaults to `startLine` when `startLine` is provided. + */ + endLine?: number; + /** + * The start column for the annotation. Cannot be sent when `startLine` and `endLine` are different values. + */ + startColumn?: number; + /** + * The start column for the annotation. Cannot be sent when `startLine` and `endLine` are different values. + * Defaults to `startColumn` when `startColumn` is provided. + */ + endColumn?: number; +} +/** + * Sets env variable for this action and future actions in the job + * @param name the name of the variable to set + * @param val the value of the variable. Non-string values will be converted to a string via JSON.stringify + */ +export declare function exportVariable(name: string, val: any): void; +/** + * Registers a secret which will get masked from logs + * @param secret value of the secret + */ +export declare function setSecret(secret: string): void; +/** + * Prepends inputPath to the PATH (for this action and future actions) + * @param inputPath + */ +export declare function addPath(inputPath: string): void; +/** + * Gets the value of an input. + * Unless trimWhitespace is set to false in InputOptions, the value is also trimmed. + * Returns an empty string if the value is not defined. + * + * @param name name of the input to get + * @param options optional. See InputOptions. + * @returns string + */ +export declare function getInput(name: string, options?: InputOptions): string; +/** + * Gets the values of an multiline input. Each value is also trimmed. + * + * @param name name of the input to get + * @param options optional. See InputOptions. + * @returns string[] + * + */ +export declare function getMultilineInput(name: string, options?: InputOptions): string[]; +/** + * Gets the input value of the boolean type in the YAML 1.2 "core schema" specification. + * Support boolean input list: `true | True | TRUE | false | False | FALSE` . + * The return value is also in boolean type. + * ref: https://yaml.org/spec/1.2/spec.html#id2804923 + * + * @param name name of the input to get + * @param options optional. See InputOptions. + * @returns boolean + */ +export declare function getBooleanInput(name: string, options?: InputOptions): boolean; +/** + * Sets the value of an output. + * + * @param name name of the output to set + * @param value value to store. Non-string values will be converted to a string via JSON.stringify + */ +export declare function setOutput(name: string, value: any): void; +/** + * Enables or disables the echoing of commands into stdout for the rest of the step. + * Echoing is disabled by default if ACTIONS_STEP_DEBUG is not set. + * + */ +export declare function setCommandEcho(enabled: boolean): void; +/** + * Sets the action status to failed. + * When the action exits it will be with an exit code of 1 + * @param message add error issue message + */ +export declare function setFailed(message: string | Error): void; +/** + * Gets whether Actions Step Debug is on or not + */ +export declare function isDebug(): boolean; +/** + * Writes debug message to user log + * @param message debug message + */ +export declare function debug(message: string): void; +/** + * Adds an error issue + * @param message error issue message. Errors will be converted to string via toString() + * @param properties optional properties to add to the annotation. + */ +export declare function error(message: string | Error, properties?: AnnotationProperties): void; +/** + * Adds a warning issue + * @param message warning issue message. Errors will be converted to string via toString() + * @param properties optional properties to add to the annotation. + */ +export declare function warning(message: string | Error, properties?: AnnotationProperties): void; +/** + * Adds a notice issue + * @param message notice issue message. Errors will be converted to string via toString() + * @param properties optional properties to add to the annotation. + */ +export declare function notice(message: string | Error, properties?: AnnotationProperties): void; +/** + * Writes info to log with console.log. + * @param message info message + */ +export declare function info(message: string): void; +/** + * Begin an output group. + * + * Output until the next `groupEnd` will be foldable in this group + * + * @param name The name of the output group + */ +export declare function startGroup(name: string): void; +/** + * End an output group. + */ +export declare function endGroup(): void; +/** + * Wrap an asynchronous function call in a group. + * + * Returns the same type as the function itself. + * + * @param name The name of the group + * @param fn The function to wrap in the group + */ +export declare function group(name: string, fn: () => Promise): Promise; +/** + * Saves state for current action, the state can only be retrieved by this action's post job execution. + * + * @param name name of the state to store + * @param value value to store. Non-string values will be converted to a string via JSON.stringify + */ +export declare function saveState(name: string, value: any): void; +/** + * Gets the value of an state set by this action's main execution. + * + * @param name name of the state to get + * @returns string + */ +export declare function getState(name: string): string; +export declare function getIDToken(aud?: string): Promise; +/** + * Summary exports + */ +export { summary } from './summary'; +/** + * @deprecated use core.summary + */ +export { markdownSummary } from './summary'; +/** + * Path exports + */ +export { toPosixPath, toWin32Path, toPlatformPath } from './path-utils'; diff --git a/node_modules/@actions/core/lib/core.js b/node_modules/@actions/core/lib/core.js new file mode 100644 index 0000000..48df6ad --- /dev/null +++ b/node_modules/@actions/core/lib/core.js @@ -0,0 +1,336 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__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 = (this && this.__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(exports, "__esModule", { value: true }); +exports.getIDToken = exports.getState = exports.saveState = exports.group = exports.endGroup = exports.startGroup = exports.info = exports.notice = exports.warning = exports.error = exports.debug = exports.isDebug = exports.setFailed = exports.setCommandEcho = exports.setOutput = exports.getBooleanInput = exports.getMultilineInput = exports.getInput = exports.addPath = exports.setSecret = exports.exportVariable = exports.ExitCode = void 0; +const command_1 = require("./command"); +const file_command_1 = require("./file-command"); +const utils_1 = require("./utils"); +const os = __importStar(require("os")); +const path = __importStar(require("path")); +const oidc_utils_1 = require("./oidc-utils"); +/** + * The code to exit an action + */ +var ExitCode; +(function (ExitCode) { + /** + * A code indicating that the action was successful + */ + ExitCode[ExitCode["Success"] = 0] = "Success"; + /** + * A code indicating that the action was a failure + */ + ExitCode[ExitCode["Failure"] = 1] = "Failure"; +})(ExitCode = exports.ExitCode || (exports.ExitCode = {})); +//----------------------------------------------------------------------- +// Variables +//----------------------------------------------------------------------- +/** + * Sets env variable for this action and future actions in the job + * @param name the name of the variable to set + * @param val the value of the variable. Non-string values will be converted to a string via JSON.stringify + */ +// eslint-disable-next-line @typescript-eslint/no-explicit-any +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); +} +exports.exportVariable = exportVariable; +/** + * Registers a secret which will get masked from logs + * @param secret value of the secret + */ +function setSecret(secret) { + command_1.issueCommand('add-mask', {}, secret); +} +exports.setSecret = setSecret; +/** + * Prepends inputPath to the PATH (for this action and future actions) + * @param inputPath + */ +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}${path.delimiter}${process.env['PATH']}`; +} +exports.addPath = addPath; +/** + * Gets the value of an input. + * Unless trimWhitespace is set to false in InputOptions, the value is also trimmed. + * Returns an empty string if the value is not defined. + * + * @param name name of the input to get + * @param options optional. See InputOptions. + * @returns string + */ +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(); +} +exports.getInput = getInput; +/** + * Gets the values of an multiline input. Each value is also trimmed. + * + * @param name name of the input to get + * @param options optional. See InputOptions. + * @returns string[] + * + */ +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()); +} +exports.getMultilineInput = getMultilineInput; +/** + * Gets the input value of the boolean type in the YAML 1.2 "core schema" specification. + * Support boolean input list: `true | True | TRUE | false | False | FALSE` . + * The return value is also in boolean type. + * ref: https://yaml.org/spec/1.2/spec.html#id2804923 + * + * @param name name of the input to get + * @param options optional. See InputOptions. + * @returns boolean + */ +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}\n` + + `Support boolean input list: \`true | True | TRUE | false | False | FALSE\``); +} +exports.getBooleanInput = getBooleanInput; +/** + * Sets the value of an output. + * + * @param name name of the output to set + * @param value value to store. Non-string values will be converted to a string via JSON.stringify + */ +// eslint-disable-next-line @typescript-eslint/no-explicit-any +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)); +} +exports.setOutput = setOutput; +/** + * Enables or disables the echoing of commands into stdout for the rest of the step. + * Echoing is disabled by default if ACTIONS_STEP_DEBUG is not set. + * + */ +function setCommandEcho(enabled) { + command_1.issue('echo', enabled ? 'on' : 'off'); +} +exports.setCommandEcho = setCommandEcho; +//----------------------------------------------------------------------- +// Results +//----------------------------------------------------------------------- +/** + * Sets the action status to failed. + * When the action exits it will be with an exit code of 1 + * @param message add error issue message + */ +function setFailed(message) { + process.exitCode = ExitCode.Failure; + error(message); +} +exports.setFailed = setFailed; +//----------------------------------------------------------------------- +// Logging Commands +//----------------------------------------------------------------------- +/** + * Gets whether Actions Step Debug is on or not + */ +function isDebug() { + return process.env['RUNNER_DEBUG'] === '1'; +} +exports.isDebug = isDebug; +/** + * Writes debug message to user log + * @param message debug message + */ +function debug(message) { + command_1.issueCommand('debug', {}, message); +} +exports.debug = debug; +/** + * Adds an error issue + * @param message error issue message. Errors will be converted to string via toString() + * @param properties optional properties to add to the annotation. + */ +function error(message, properties = {}) { + command_1.issueCommand('error', utils_1.toCommandProperties(properties), message instanceof Error ? message.toString() : message); +} +exports.error = error; +/** + * Adds a warning issue + * @param message warning issue message. Errors will be converted to string via toString() + * @param properties optional properties to add to the annotation. + */ +function warning(message, properties = {}) { + command_1.issueCommand('warning', utils_1.toCommandProperties(properties), message instanceof Error ? message.toString() : message); +} +exports.warning = warning; +/** + * Adds a notice issue + * @param message notice issue message. Errors will be converted to string via toString() + * @param properties optional properties to add to the annotation. + */ +function notice(message, properties = {}) { + command_1.issueCommand('notice', utils_1.toCommandProperties(properties), message instanceof Error ? message.toString() : message); +} +exports.notice = notice; +/** + * Writes info to log with console.log. + * @param message info message + */ +function info(message) { + process.stdout.write(message + os.EOL); +} +exports.info = info; +/** + * Begin an output group. + * + * Output until the next `groupEnd` will be foldable in this group + * + * @param name The name of the output group + */ +function startGroup(name) { + command_1.issue('group', name); +} +exports.startGroup = startGroup; +/** + * End an output group. + */ +function endGroup() { + command_1.issue('endgroup'); +} +exports.endGroup = endGroup; +/** + * Wrap an asynchronous function call in a group. + * + * Returns the same type as the function itself. + * + * @param name The name of the group + * @param fn The function to wrap in the group + */ +function group(name, fn) { + return __awaiter(this, void 0, void 0, function* () { + startGroup(name); + let result; + try { + result = yield fn(); + } + finally { + endGroup(); + } + return result; + }); +} +exports.group = group; +//----------------------------------------------------------------------- +// Wrapper action state +//----------------------------------------------------------------------- +/** + * Saves state for current action, the state can only be retrieved by this action's post job execution. + * + * @param name name of the state to store + * @param value value to store. Non-string values will be converted to a string via JSON.stringify + */ +// eslint-disable-next-line @typescript-eslint/no-explicit-any +function saveState(name, value) { + const filePath = process.env['GITHUB_STATE'] || ''; + if (filePath) { + return file_command_1.issueFileCommand('STATE', file_command_1.prepareKeyValueMessage(name, value)); + } + command_1.issueCommand('save-state', { name }, utils_1.toCommandValue(value)); +} +exports.saveState = saveState; +/** + * Gets the value of an state set by this action's main execution. + * + * @param name name of the state to get + * @returns string + */ +function getState(name) { + return process.env[`STATE_${name}`] || ''; +} +exports.getState = getState; +function getIDToken(aud) { + return __awaiter(this, void 0, void 0, function* () { + return yield oidc_utils_1.OidcClient.getIDToken(aud); + }); +} +exports.getIDToken = getIDToken; +/** + * Summary exports + */ +var summary_1 = require("./summary"); +Object.defineProperty(exports, "summary", { enumerable: true, get: function () { return summary_1.summary; } }); +/** + * @deprecated use core.summary + */ +var summary_2 = require("./summary"); +Object.defineProperty(exports, "markdownSummary", { enumerable: true, get: function () { return summary_2.markdownSummary; } }); +/** + * Path exports + */ +var path_utils_1 = require("./path-utils"); +Object.defineProperty(exports, "toPosixPath", { enumerable: true, get: function () { return path_utils_1.toPosixPath; } }); +Object.defineProperty(exports, "toWin32Path", { enumerable: true, get: function () { return path_utils_1.toWin32Path; } }); +Object.defineProperty(exports, "toPlatformPath", { enumerable: true, get: function () { return path_utils_1.toPlatformPath; } }); +//# sourceMappingURL=core.js.map \ No newline at end of file diff --git a/node_modules/@actions/core/lib/core.js.map b/node_modules/@actions/core/lib/core.js.map new file mode 100644 index 0000000..99f7fd8 --- /dev/null +++ b/node_modules/@actions/core/lib/core.js.map @@ -0,0 +1 @@ +{"version":3,"file":"core.js","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@actions/core/lib/file-command.d.ts b/node_modules/@actions/core/lib/file-command.d.ts new file mode 100644 index 0000000..2d1f2f4 --- /dev/null +++ b/node_modules/@actions/core/lib/file-command.d.ts @@ -0,0 +1,2 @@ +export declare function issueFileCommand(command: string, message: any): void; +export declare function prepareKeyValueMessage(key: string, value: any): string; diff --git a/node_modules/@actions/core/lib/file-command.js b/node_modules/@actions/core/lib/file-command.js new file mode 100644 index 0000000..2d0d738 --- /dev/null +++ b/node_modules/@actions/core/lib/file-command.js @@ -0,0 +1,58 @@ +"use strict"; +// For internal use, subject to change. +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__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(exports, "__esModule", { value: true }); +exports.prepareKeyValueMessage = exports.issueFileCommand = void 0; +// We use any as a valid input type +/* eslint-disable @typescript-eslint/no-explicit-any */ +const fs = __importStar(require("fs")); +const os = __importStar(require("os")); +const uuid_1 = require("uuid"); +const 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}`); + } + if (!fs.existsSync(filePath)) { + throw new Error(`Missing file at path: ${filePath}`); + } + fs.appendFileSync(filePath, `${utils_1.toCommandValue(message)}${os.EOL}`, { + encoding: 'utf8' + }); +} +exports.issueFileCommand = issueFileCommand; +function prepareKeyValueMessage(key, value) { + const delimiter = `ghadelimiter_${uuid_1.v4()}`; + const convertedValue = utils_1.toCommandValue(value); + // These should realistically never happen, but just in case someone finds a + // way to exploit uuid generation let's not allow keys or values that contain + // the delimiter. + 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}${os.EOL}${convertedValue}${os.EOL}${delimiter}`; +} +exports.prepareKeyValueMessage = prepareKeyValueMessage; +//# sourceMappingURL=file-command.js.map \ No newline at end of file diff --git a/node_modules/@actions/core/lib/file-command.js.map b/node_modules/@actions/core/lib/file-command.js.map new file mode 100644 index 0000000..b1a9d54 --- /dev/null +++ b/node_modules/@actions/core/lib/file-command.js.map @@ -0,0 +1 @@ +{"version":3,"file":"file-command.js","sourceRoot":"","sources":["../src/file-command.ts"],"names":[],"mappings":";AAAA,uCAAuC;;;;;;;;;;;;;;;;;;;;;;AAEvC,mCAAmC;AACnC,uDAAuD;AAEvD,uCAAwB;AACxB,uCAAwB;AACxB,+BAAiC;AACjC,mCAAsC;AAEtC,SAAgB,gBAAgB,CAAC,OAAe,EAAE,OAAY;IAC5D,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,OAAO,EAAE,CAAC,CAAA;IACjD,IAAI,CAAC,QAAQ,EAAE;QACb,MAAM,IAAI,KAAK,CACb,wDAAwD,OAAO,EAAE,CAClE,CAAA;KACF;IACD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE;QAC5B,MAAM,IAAI,KAAK,CAAC,yBAAyB,QAAQ,EAAE,CAAC,CAAA;KACrD;IAED,EAAE,CAAC,cAAc,CAAC,QAAQ,EAAE,GAAG,sBAAc,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,EAAE;QACjE,QAAQ,EAAE,MAAM;KACjB,CAAC,CAAA;AACJ,CAAC;AAdD,4CAcC;AAED,SAAgB,sBAAsB,CAAC,GAAW,EAAE,KAAU;IAC5D,MAAM,SAAS,GAAG,gBAAgB,SAAM,EAAE,EAAE,CAAA;IAC5C,MAAM,cAAc,GAAG,sBAAc,CAAC,KAAK,CAAC,CAAA;IAE5C,4EAA4E;IAC5E,6EAA6E;IAC7E,iBAAiB;IACjB,IAAI,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE;QAC3B,MAAM,IAAI,KAAK,CACb,4DAA4D,SAAS,GAAG,CACzE,CAAA;KACF;IAED,IAAI,cAAc,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE;QACtC,MAAM,IAAI,KAAK,CACb,6DAA6D,SAAS,GAAG,CAC1E,CAAA;KACF;IAED,OAAO,GAAG,GAAG,KAAK,SAAS,GAAG,EAAE,CAAC,GAAG,GAAG,cAAc,GAAG,EAAE,CAAC,GAAG,GAAG,SAAS,EAAE,CAAA;AAC9E,CAAC;AApBD,wDAoBC"} \ No newline at end of file diff --git a/node_modules/@actions/core/lib/oidc-utils.d.ts b/node_modules/@actions/core/lib/oidc-utils.d.ts new file mode 100644 index 0000000..657c7f4 --- /dev/null +++ b/node_modules/@actions/core/lib/oidc-utils.d.ts @@ -0,0 +1,7 @@ +export declare class OidcClient { + private static createHttpClient; + private static getRequestToken; + private static getIDTokenUrl; + private static getCall; + static getIDToken(audience?: string): Promise; +} diff --git a/node_modules/@actions/core/lib/oidc-utils.js b/node_modules/@actions/core/lib/oidc-utils.js new file mode 100644 index 0000000..f701277 --- /dev/null +++ b/node_modules/@actions/core/lib/oidc-utils.js @@ -0,0 +1,77 @@ +"use strict"; +var __awaiter = (this && this.__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(exports, "__esModule", { value: true }); +exports.OidcClient = void 0; +const http_client_1 = require("@actions/http-client"); +const auth_1 = require("@actions/http-client/lib/auth"); +const core_1 = require("./core"); +class OidcClient { + 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. \n + Error Code : ${error.statusCode}\n + 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; + }); + } + static getIDToken(audience) { + return __awaiter(this, void 0, void 0, function* () { + try { + // New ID Token is requested from action service + let id_token_url = OidcClient.getIDTokenUrl(); + if (audience) { + const encodedAudience = encodeURIComponent(audience); + id_token_url = `${id_token_url}&audience=${encodedAudience}`; + } + 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}`); + } + }); + } +} +exports.OidcClient = OidcClient; +//# sourceMappingURL=oidc-utils.js.map \ No newline at end of file diff --git a/node_modules/@actions/core/lib/oidc-utils.js.map b/node_modules/@actions/core/lib/oidc-utils.js.map new file mode 100644 index 0000000..284fa1d --- /dev/null +++ b/node_modules/@actions/core/lib/oidc-utils.js.map @@ -0,0 +1 @@ +{"version":3,"file":"oidc-utils.js","sourceRoot":"","sources":["../src/oidc-utils.ts"],"names":[],"mappings":";;;;;;;;;;;;AAGA,sDAA+C;AAC/C,wDAAqE;AACrE,iCAAuC;AAKvC,MAAa,UAAU;IACb,MAAM,CAAC,gBAAgB,CAC7B,UAAU,GAAG,IAAI,EACjB,QAAQ,GAAG,EAAE;QAEb,MAAM,cAAc,GAAmB;YACrC,YAAY,EAAE,UAAU;YACxB,UAAU,EAAE,QAAQ;SACrB,CAAA;QAED,OAAO,IAAI,wBAAU,CACnB,qBAAqB,EACrB,CAAC,IAAI,8BAAuB,CAAC,UAAU,CAAC,eAAe,EAAE,CAAC,CAAC,EAC3D,cAAc,CACf,CAAA;IACH,CAAC;IAEO,MAAM,CAAC,eAAe;QAC5B,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAA;QAC3D,IAAI,CAAC,KAAK,EAAE;YACV,MAAM,IAAI,KAAK,CACb,2DAA2D,CAC5D,CAAA;SACF;QACD,OAAO,KAAK,CAAA;IACd,CAAC;IAEO,MAAM,CAAC,aAAa;QAC1B,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAA;QAC9D,IAAI,CAAC,UAAU,EAAE;YACf,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAA;SAC3E;QACD,OAAO,UAAU,CAAA;IACnB,CAAC;IAEO,MAAM,CAAO,OAAO,CAAC,YAAoB;;;YAC/C,MAAM,UAAU,GAAG,UAAU,CAAC,gBAAgB,EAAE,CAAA;YAEhD,MAAM,GAAG,GAAG,MAAM,UAAU;iBACzB,OAAO,CAAgB,YAAY,CAAC;iBACpC,KAAK,CAAC,KAAK,CAAC,EAAE;gBACb,MAAM,IAAI,KAAK,CACb;uBACa,KAAK,CAAC,UAAU;yBACd,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,CACtC,CAAA;YACH,CAAC,CAAC,CAAA;YAEJ,MAAM,QAAQ,SAAG,GAAG,CAAC,MAAM,0CAAE,KAAK,CAAA;YAClC,IAAI,CAAC,QAAQ,EAAE;gBACb,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAA;aACjE;YACD,OAAO,QAAQ,CAAA;;KAChB;IAED,MAAM,CAAO,UAAU,CAAC,QAAiB;;YACvC,IAAI;gBACF,gDAAgD;gBAChD,IAAI,YAAY,GAAW,UAAU,CAAC,aAAa,EAAE,CAAA;gBACrD,IAAI,QAAQ,EAAE;oBACZ,MAAM,eAAe,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAA;oBACpD,YAAY,GAAG,GAAG,YAAY,aAAa,eAAe,EAAE,CAAA;iBAC7D;gBAED,YAAK,CAAC,mBAAmB,YAAY,EAAE,CAAC,CAAA;gBAExC,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC,YAAY,CAAC,CAAA;gBACvD,gBAAS,CAAC,QAAQ,CAAC,CAAA;gBACnB,OAAO,QAAQ,CAAA;aAChB;YAAC,OAAO,KAAK,EAAE;gBACd,MAAM,IAAI,KAAK,CAAC,kBAAkB,KAAK,CAAC,OAAO,EAAE,CAAC,CAAA;aACnD;QACH,CAAC;KAAA;CACF;AAzED,gCAyEC"} \ No newline at end of file diff --git a/node_modules/@actions/core/lib/path-utils.d.ts b/node_modules/@actions/core/lib/path-utils.d.ts new file mode 100644 index 0000000..1fee9f3 --- /dev/null +++ b/node_modules/@actions/core/lib/path-utils.d.ts @@ -0,0 +1,25 @@ +/** + * toPosixPath converts the given path to the posix form. On Windows, \\ will be + * replaced with /. + * + * @param pth. Path to transform. + * @return string Posix path. + */ +export declare function toPosixPath(pth: string): string; +/** + * toWin32Path converts the given path to the win32 form. On Linux, / will be + * replaced with \\. + * + * @param pth. Path to transform. + * @return string Win32 path. + */ +export declare function toWin32Path(pth: string): string; +/** + * toPlatformPath converts the given path to a platform-specific path. It does + * this by replacing instances of / and \ with the platform-specific path + * separator. + * + * @param pth The path to platformize. + * @return string The platform-specific path. + */ +export declare function toPlatformPath(pth: string): string; diff --git a/node_modules/@actions/core/lib/path-utils.js b/node_modules/@actions/core/lib/path-utils.js new file mode 100644 index 0000000..7251c82 --- /dev/null +++ b/node_modules/@actions/core/lib/path-utils.js @@ -0,0 +1,58 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__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(exports, "__esModule", { value: true }); +exports.toPlatformPath = exports.toWin32Path = exports.toPosixPath = void 0; +const path = __importStar(require("path")); +/** + * toPosixPath converts the given path to the posix form. On Windows, \\ will be + * replaced with /. + * + * @param pth. Path to transform. + * @return string Posix path. + */ +function toPosixPath(pth) { + return pth.replace(/[\\]/g, '/'); +} +exports.toPosixPath = toPosixPath; +/** + * toWin32Path converts the given path to the win32 form. On Linux, / will be + * replaced with \\. + * + * @param pth. Path to transform. + * @return string Win32 path. + */ +function toWin32Path(pth) { + return pth.replace(/[/]/g, '\\'); +} +exports.toWin32Path = toWin32Path; +/** + * toPlatformPath converts the given path to a platform-specific path. It does + * this by replacing instances of / and \ with the platform-specific path + * separator. + * + * @param pth The path to platformize. + * @return string The platform-specific path. + */ +function toPlatformPath(pth) { + return pth.replace(/[/\\]/g, path.sep); +} +exports.toPlatformPath = toPlatformPath; +//# sourceMappingURL=path-utils.js.map \ No newline at end of file diff --git a/node_modules/@actions/core/lib/path-utils.js.map b/node_modules/@actions/core/lib/path-utils.js.map new file mode 100644 index 0000000..7ab1cac --- /dev/null +++ b/node_modules/@actions/core/lib/path-utils.js.map @@ -0,0 +1 @@ +{"version":3,"file":"path-utils.js","sourceRoot":"","sources":["../src/path-utils.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA,2CAA4B;AAE5B;;;;;;GAMG;AACH,SAAgB,WAAW,CAAC,GAAW;IACrC,OAAO,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAA;AAClC,CAAC;AAFD,kCAEC;AAED;;;;;;GAMG;AACH,SAAgB,WAAW,CAAC,GAAW;IACrC,OAAO,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;AAClC,CAAC;AAFD,kCAEC;AAED;;;;;;;GAOG;AACH,SAAgB,cAAc,CAAC,GAAW;IACxC,OAAO,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,CAAA;AACxC,CAAC;AAFD,wCAEC"} \ No newline at end of file diff --git a/node_modules/@actions/core/lib/summary.d.ts b/node_modules/@actions/core/lib/summary.d.ts new file mode 100644 index 0000000..bb79255 --- /dev/null +++ b/node_modules/@actions/core/lib/summary.d.ts @@ -0,0 +1,202 @@ +export declare const SUMMARY_ENV_VAR = "GITHUB_STEP_SUMMARY"; +export declare const SUMMARY_DOCS_URL = "https://docs.github.com/actions/using-workflows/workflow-commands-for-github-actions#adding-a-job-summary"; +export declare type SummaryTableRow = (SummaryTableCell | string)[]; +export interface SummaryTableCell { + /** + * Cell content + */ + data: string; + /** + * Render cell as header + * (optional) default: false + */ + header?: boolean; + /** + * Number of columns the cell extends + * (optional) default: '1' + */ + colspan?: string; + /** + * Number of rows the cell extends + * (optional) default: '1' + */ + rowspan?: string; +} +export interface SummaryImageOptions { + /** + * The width of the image in pixels. Must be an integer without a unit. + * (optional) + */ + width?: string; + /** + * The height of the image in pixels. Must be an integer without a unit. + * (optional) + */ + height?: string; +} +export interface SummaryWriteOptions { + /** + * Replace all existing content in summary file with buffer contents + * (optional) default: false + */ + overwrite?: boolean; +} +declare class Summary { + private _buffer; + private _filePath?; + constructor(); + /** + * 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 + */ + private 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 + */ + private wrap; + /** + * 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?: SummaryWriteOptions): Promise; + /** + * Clears the summary buffer and wipes the summary file + * + * @returns {Summary} summary instance + */ + clear(): Promise; + /** + * Returns the current summary buffer as a string + * + * @returns {string} string of summary buffer + */ + stringify(): string; + /** + * If the summary buffer is empty + * + * @returns {boolen} true if the buffer is empty + */ + isEmptyBuffer(): boolean; + /** + * Resets the summary buffer without writing to summary file + * + * @returns {Summary} summary instance + */ + emptyBuffer(): Summary; + /** + * 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: string, addEOL?: boolean): Summary; + /** + * Adds the operating system-specific end-of-line marker to the buffer + * + * @returns {Summary} summary instance + */ + addEOL(): Summary; + /** + * 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: string, lang?: string): Summary; + /** + * 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: string[], ordered?: boolean): Summary; + /** + * Adds an HTML table to the summary buffer + * + * @param {SummaryTableCell[]} rows table rows + * + * @returns {Summary} summary instance + */ + addTable(rows: SummaryTableRow[]): Summary; + /** + * 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: string, content: string): Summary; + /** + * 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: string, alt: string, options?: SummaryImageOptions): Summary; + /** + * 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: string, level?: number | string): Summary; + /** + * Adds an HTML thematic break (
) to the summary buffer + * + * @returns {Summary} summary instance + */ + addSeparator(): Summary; + /** + * Adds an HTML line break (
) to the summary buffer + * + * @returns {Summary} summary instance + */ + addBreak(): Summary; + /** + * 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: string, cite?: string): Summary; + /** + * 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: string, href: string): Summary; +} +/** + * @deprecated use `core.summary` + */ +export declare const markdownSummary: Summary; +export declare const summary: Summary; +export {}; diff --git a/node_modules/@actions/core/lib/summary.js b/node_modules/@actions/core/lib/summary.js new file mode 100644 index 0000000..04a335b --- /dev/null +++ b/node_modules/@actions/core/lib/summary.js @@ -0,0 +1,283 @@ +"use strict"; +var __awaiter = (this && this.__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(exports, "__esModule", { value: true }); +exports.summary = exports.markdownSummary = exports.SUMMARY_DOCS_URL = exports.SUMMARY_ENV_VAR = void 0; +const os_1 = require("os"); +const fs_1 = require("fs"); +const { access, appendFile, writeFile } = fs_1.promises; +exports.SUMMARY_ENV_VAR = 'GITHUB_STEP_SUMMARY'; +exports.SUMMARY_DOCS_URL = 'https://docs.github.com/actions/using-workflows/workflow-commands-for-github-actions#adding-a-job-summary'; +class Summary { + constructor() { + this._buffer = ''; + } + /** + * Finds the summary file path from the environment, rejects if env var is not found or file does not exist + * Also checks r/w permissions. + * + * @returns step summary file path + */ + filePath() { + return __awaiter(this, void 0, void 0, function* () { + if (this._filePath) { + return this._filePath; + } + const pathFromEnv = process.env[exports.SUMMARY_ENV_VAR]; + if (!pathFromEnv) { + throw new Error(`Unable to find environment variable for $${exports.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; + }); + } + /** + * 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(os_1.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(); + } +} +const _summary = new Summary(); +/** + * @deprecated use `core.summary` + */ +exports.markdownSummary = _summary; +exports.summary = _summary; +//# sourceMappingURL=summary.js.map \ No newline at end of file diff --git a/node_modules/@actions/core/lib/summary.js.map b/node_modules/@actions/core/lib/summary.js.map new file mode 100644 index 0000000..d598f26 --- /dev/null +++ b/node_modules/@actions/core/lib/summary.js.map @@ -0,0 +1 @@ +{"version":3,"file":"summary.js","sourceRoot":"","sources":["../src/summary.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@actions/core/lib/utils.d.ts b/node_modules/@actions/core/lib/utils.d.ts new file mode 100644 index 0000000..3b9e28d --- /dev/null +++ b/node_modules/@actions/core/lib/utils.d.ts @@ -0,0 +1,14 @@ +import { AnnotationProperties } from './core'; +import { CommandProperties } from './command'; +/** + * Sanitizes an input into a string so it can be passed into issueCommand safely + * @param input input to sanitize into a string + */ +export declare function toCommandValue(input: any): string; +/** + * + * @param annotationProperties + * @returns The command properties to send with the actual annotation command + * See IssueCommandProperties: https://github.com/actions/runner/blob/main/src/Runner.Worker/ActionCommandManager.cs#L646 + */ +export declare function toCommandProperties(annotationProperties: AnnotationProperties): CommandProperties; diff --git a/node_modules/@actions/core/lib/utils.js b/node_modules/@actions/core/lib/utils.js new file mode 100644 index 0000000..9b5ca44 --- /dev/null +++ b/node_modules/@actions/core/lib/utils.js @@ -0,0 +1,40 @@ +"use strict"; +// We use any as a valid input type +/* eslint-disable @typescript-eslint/no-explicit-any */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.toCommandProperties = exports.toCommandValue = void 0; +/** + * Sanitizes an input into a string so it can be passed into issueCommand safely + * @param input input to sanitize into a string + */ +function toCommandValue(input) { + if (input === null || input === undefined) { + return ''; + } + else if (typeof input === 'string' || input instanceof String) { + return input; + } + return JSON.stringify(input); +} +exports.toCommandValue = toCommandValue; +/** + * + * @param annotationProperties + * @returns The command properties to send with the actual annotation command + * See IssueCommandProperties: https://github.com/actions/runner/blob/main/src/Runner.Worker/ActionCommandManager.cs#L646 + */ +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 + }; +} +exports.toCommandProperties = toCommandProperties; +//# sourceMappingURL=utils.js.map \ No newline at end of file diff --git a/node_modules/@actions/core/lib/utils.js.map b/node_modules/@actions/core/lib/utils.js.map new file mode 100644 index 0000000..8211bb7 --- /dev/null +++ b/node_modules/@actions/core/lib/utils.js.map @@ -0,0 +1 @@ +{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":";AAAA,mCAAmC;AACnC,uDAAuD;;;AAKvD;;;GAGG;AACH,SAAgB,cAAc,CAAC,KAAU;IACvC,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE;QACzC,OAAO,EAAE,CAAA;KACV;SAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,YAAY,MAAM,EAAE;QAC/D,OAAO,KAAe,CAAA;KACvB;IACD,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;AAC9B,CAAC;AAPD,wCAOC;AAED;;;;;GAKG;AACH,SAAgB,mBAAmB,CACjC,oBAA0C;IAE1C,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,MAAM,EAAE;QAC7C,OAAO,EAAE,CAAA;KACV;IAED,OAAO;QACL,KAAK,EAAE,oBAAoB,CAAC,KAAK;QACjC,IAAI,EAAE,oBAAoB,CAAC,IAAI;QAC/B,IAAI,EAAE,oBAAoB,CAAC,SAAS;QACpC,OAAO,EAAE,oBAAoB,CAAC,OAAO;QACrC,GAAG,EAAE,oBAAoB,CAAC,WAAW;QACrC,SAAS,EAAE,oBAAoB,CAAC,SAAS;KAC1C,CAAA;AACH,CAAC;AAfD,kDAeC"} \ No newline at end of file diff --git a/node_modules/@actions/core/node_modules/.bin/uuid b/node_modules/@actions/core/node_modules/.bin/uuid new file mode 120000 index 0000000..72316a4 --- /dev/null +++ b/node_modules/@actions/core/node_modules/.bin/uuid @@ -0,0 +1 @@ +../../../../uuid/dist/bin/uuid \ No newline at end of file diff --git a/node_modules/@actions/core/package.json b/node_modules/@actions/core/package.json new file mode 100644 index 0000000..1f3824d --- /dev/null +++ b/node_modules/@actions/core/package.json @@ -0,0 +1,46 @@ +{ + "name": "@actions/core", + "version": "1.10.0", + "description": "Actions core lib", + "keywords": [ + "github", + "actions", + "core" + ], + "homepage": "https://github.com/actions/toolkit/tree/main/packages/core", + "license": "MIT", + "main": "lib/core.js", + "types": "lib/core.d.ts", + "directories": { + "lib": "lib", + "test": "__tests__" + }, + "files": [ + "lib", + "!.DS_Store" + ], + "publishConfig": { + "access": "public" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/actions/toolkit.git", + "directory": "packages/core" + }, + "scripts": { + "audit-moderate": "npm install && npm audit --json --audit-level=moderate > audit.json", + "test": "echo \"Error: run tests from root\" && exit 1", + "tsc": "tsc" + }, + "bugs": { + "url": "https://github.com/actions/toolkit/issues" + }, + "dependencies": { + "@actions/http-client": "^2.0.1", + "uuid": "^8.3.2" + }, + "devDependencies": { + "@types/node": "^12.0.2", + "@types/uuid": "^8.3.4" + } +} diff --git a/node_modules/@actions/github/LICENSE.md b/node_modules/@actions/github/LICENSE.md new file mode 100644 index 0000000..dbae2ed --- /dev/null +++ b/node_modules/@actions/github/LICENSE.md @@ -0,0 +1,9 @@ +The MIT License (MIT) + +Copyright 2019 GitHub + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/node_modules/@actions/github/README.md b/node_modules/@actions/github/README.md new file mode 100644 index 0000000..30e6a68 --- /dev/null +++ b/node_modules/@actions/github/README.md @@ -0,0 +1,98 @@ +# `@actions/github` + +> A hydrated Octokit client. + +## Usage + +Returns an authenticated Octokit client that follows the machine [proxy settings](https://help.github.com/en/actions/hosting-your-own-runners/using-a-proxy-server-with-self-hosted-runners) and correctly sets GHES base urls. See https://octokit.github.io/rest.js for the API. + +```js +const github = require('@actions/github'); +const core = require('@actions/core'); + +async function run() { + // This should be a token with access to your repository scoped in as a secret. + // The YML workflow will need to set myToken with the GitHub Secret Token + // myToken: ${{ secrets.GITHUB_TOKEN }} + // https://help.github.com/en/actions/automating-your-workflow-with-github-actions/authenticating-with-the-github_token#about-the-github_token-secret + const myToken = core.getInput('myToken'); + + const octokit = github.getOctokit(myToken) + + // You can also pass in additional options as a second parameter to getOctokit + // const octokit = github.getOctokit(myToken, {userAgent: "MyActionVersion1"}); + + const { data: pullRequest } = await octokit.rest.pulls.get({ + owner: 'octokit', + repo: 'rest.js', + pull_number: 123, + mediaType: { + format: 'diff' + } + }); + + console.log(pullRequest); +} + +run(); +``` + +You can also make GraphQL requests. See https://github.com/octokit/graphql.js for the API. + +```js +const result = await octokit.graphql(query, variables); +``` + +Finally, you can get the context of the current action: + +```js +const github = require('@actions/github'); + +const context = github.context; + +const newIssue = await octokit.rest.issues.create({ + ...context.repo, + title: 'New issue!', + body: 'Hello Universe!' +}); +``` + +## Webhook payload typescript definitions + +The npm module `@octokit/webhooks-definitions` provides type definitions for the response payloads. You can cast the payload to these types for better type information. + +First, install the npm module `npm install @octokit/webhooks-definitions` + +Then, assert the type based on the eventName +```ts +import * as core from '@actions/core' +import * as github from '@actions/github' +import {PushEvent} from '@octokit/webhooks-definitions/schema' + +if (github.context.eventName === 'push') { + const pushPayload = github.context.payload as PushEvent + core.info(`The head commit is: ${pushPayload.head_commit}`) +} +``` + +## Extending the Octokit instance +`@octokit/core` now supports the [plugin architecture](https://github.com/octokit/core.js#plugins). You can extend the GitHub instance using plugins. + +For example, using the `@octokit/plugin-enterprise-server` you can now access enterprise admin apis on GHES instances. + +```ts +import { GitHub, getOctokitOptions } from '@actions/github/lib/utils' +import { enterpriseServer220Admin } from '@octokit/plugin-enterprise-server' + +const octokit = GitHub.plugin(enterpriseServer220Admin) +// or override some of the default values as well +// const octokit = GitHub.plugin(enterpriseServer220Admin).defaults({userAgent: "MyNewUserAgent"}) + +const myToken = core.getInput('myToken'); +const myOctokit = new octokit(getOctokitOptions(token)) +// Create a new user +myOctokit.rest.enterpriseAdmin.createUser({ + login: "testuser", + email: "testuser@test.com", +}); +``` diff --git a/node_modules/@actions/github/lib/context.d.ts b/node_modules/@actions/github/lib/context.d.ts new file mode 100644 index 0000000..7d3a7de --- /dev/null +++ b/node_modules/@actions/github/lib/context.d.ts @@ -0,0 +1,32 @@ +import { WebhookPayload } from './interfaces'; +export declare class Context { + /** + * Webhook payload object that triggered the workflow + */ + payload: WebhookPayload; + eventName: string; + sha: string; + ref: string; + workflow: string; + action: string; + actor: string; + job: string; + runNumber: number; + runId: number; + apiUrl: string; + serverUrl: string; + graphqlUrl: string; + /** + * Hydrate the context from the environment + */ + constructor(); + get issue(): { + owner: string; + repo: string; + number: number; + }; + get repo(): { + owner: string; + repo: string; + }; +} diff --git a/node_modules/@actions/github/lib/context.js b/node_modules/@actions/github/lib/context.js new file mode 100644 index 0000000..767933c --- /dev/null +++ b/node_modules/@actions/github/lib/context.js @@ -0,0 +1,54 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.Context = void 0; +const fs_1 = require("fs"); +const os_1 = require("os"); +class Context { + /** + * Hydrate the context from the environment + */ + 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 path = process.env.GITHUB_EVENT_PATH; + process.stdout.write(`GITHUB_EVENT_PATH ${path} 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 [owner, repo] = process.env.GITHUB_REPOSITORY.split('/'); + return { owner, repo }; + } + if (this.payload.repository) { + return { + owner: this.payload.repository.owner.login, + repo: this.payload.repository.name + }; + } + throw new Error("context.repo requires a GITHUB_REPOSITORY environment variable like 'owner/repo'"); + } +} +exports.Context = Context; +//# sourceMappingURL=context.js.map \ No newline at end of file diff --git a/node_modules/@actions/github/lib/context.js.map b/node_modules/@actions/github/lib/context.js.map new file mode 100644 index 0000000..91fb9a9 --- /dev/null +++ b/node_modules/@actions/github/lib/context.js.map @@ -0,0 +1 @@ +{"version":3,"file":"context.js","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":";;;AAEA,2BAA2C;AAC3C,2BAAsB;AAEtB,MAAa,OAAO;IAmBlB;;OAEG;IACH;;QACE,IAAI,CAAC,OAAO,GAAG,EAAE,CAAA;QACjB,IAAI,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE;YACjC,IAAI,eAAU,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,EAAE;gBAC7C,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,CACvB,iBAAY,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,EAAC,QAAQ,EAAE,MAAM,EAAC,CAAC,CAChE,CAAA;aACF;iBAAM;gBACL,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAA;gBAC1C,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,qBAAqB,IAAI,kBAAkB,QAAG,EAAE,CAAC,CAAA;aACvE;SACF;QACD,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,iBAA2B,CAAA;QACxD,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,UAAoB,CAAA;QAC3C,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,UAAoB,CAAA;QAC3C,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,eAAyB,CAAA;QACrD,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,aAAuB,CAAA;QACjD,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,YAAsB,CAAA;QAC/C,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,UAAoB,CAAA;QAC3C,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,iBAA2B,EAAE,EAAE,CAAC,CAAA;QACtE,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,aAAuB,EAAE,EAAE,CAAC,CAAA;QAC9D,IAAI,CAAC,MAAM,SAAG,OAAO,CAAC,GAAG,CAAC,cAAc,mCAAI,wBAAwB,CAAA;QACpE,IAAI,CAAC,SAAS,SAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,mCAAI,oBAAoB,CAAA;QACtE,IAAI,CAAC,UAAU,SACb,OAAO,CAAC,GAAG,CAAC,kBAAkB,mCAAI,gCAAgC,CAAA;IACtE,CAAC;IAED,IAAI,KAAK;QACP,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAA;QAE5B,uCACK,IAAI,CAAC,IAAI,KACZ,MAAM,EAAE,CAAC,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,YAAY,IAAI,OAAO,CAAC,CAAC,MAAM,IAClE;IACH,CAAC;IAED,IAAI,IAAI;QACN,IAAI,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE;YACjC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;YAC9D,OAAO,EAAC,KAAK,EAAE,IAAI,EAAC,CAAA;SACrB;QAED,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE;YAC3B,OAAO;gBACL,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK;gBAC1C,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI;aACnC,CAAA;SACF;QAED,MAAM,IAAI,KAAK,CACb,kFAAkF,CACnF,CAAA;IACH,CAAC;CACF;AA3ED,0BA2EC"} \ No newline at end of file diff --git a/node_modules/@actions/github/lib/github.d.ts b/node_modules/@actions/github/lib/github.d.ts new file mode 100644 index 0000000..8c2121d --- /dev/null +++ b/node_modules/@actions/github/lib/github.d.ts @@ -0,0 +1,11 @@ +import * as Context from './context'; +import { GitHub } from './utils'; +import { OctokitOptions, OctokitPlugin } from '@octokit/core/dist-types/types'; +export declare const context: Context.Context; +/** + * Returns a hydrated octokit ready to use for GitHub Actions + * + * @param token the repo PAT or GITHUB_TOKEN + * @param options other options to set + */ +export declare function getOctokit(token: string, options?: OctokitOptions, ...additionalPlugins: OctokitPlugin[]): InstanceType; diff --git a/node_modules/@actions/github/lib/github.js b/node_modules/@actions/github/lib/github.js new file mode 100644 index 0000000..b717a6b --- /dev/null +++ b/node_modules/@actions/github/lib/github.js @@ -0,0 +1,37 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__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(exports, "__esModule", { value: true }); +exports.getOctokit = exports.context = void 0; +const Context = __importStar(require("./context")); +const utils_1 = require("./utils"); +exports.context = new Context.Context(); +/** + * Returns a hydrated octokit ready to use for GitHub Actions + * + * @param token the repo PAT or GITHUB_TOKEN + * @param options other options to set + */ +function getOctokit(token, options, ...additionalPlugins) { + const GitHubWithPlugins = utils_1.GitHub.plugin(...additionalPlugins); + return new GitHubWithPlugins(utils_1.getOctokitOptions(token, options)); +} +exports.getOctokit = getOctokit; +//# sourceMappingURL=github.js.map \ No newline at end of file diff --git a/node_modules/@actions/github/lib/github.js.map b/node_modules/@actions/github/lib/github.js.map new file mode 100644 index 0000000..60be74b --- /dev/null +++ b/node_modules/@actions/github/lib/github.js.map @@ -0,0 +1 @@ +{"version":3,"file":"github.js","sourceRoot":"","sources":["../src/github.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA,mDAAoC;AACpC,mCAAiD;AAKpC,QAAA,OAAO,GAAG,IAAI,OAAO,CAAC,OAAO,EAAE,CAAA;AAE5C;;;;;GAKG;AACH,SAAgB,UAAU,CACxB,KAAa,EACb,OAAwB,EACxB,GAAG,iBAAkC;IAErC,MAAM,iBAAiB,GAAG,cAAM,CAAC,MAAM,CAAC,GAAG,iBAAiB,CAAC,CAAA;IAC7D,OAAO,IAAI,iBAAiB,CAAC,yBAAiB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAA;AACjE,CAAC;AAPD,gCAOC"} \ No newline at end of file diff --git a/node_modules/@actions/github/lib/interfaces.d.ts b/node_modules/@actions/github/lib/interfaces.d.ts new file mode 100644 index 0000000..f810333 --- /dev/null +++ b/node_modules/@actions/github/lib/interfaces.d.ts @@ -0,0 +1,40 @@ +export interface PayloadRepository { + [key: string]: any; + full_name?: string; + name: string; + owner: { + [key: string]: any; + login: string; + name?: string; + }; + html_url?: string; +} +export interface WebhookPayload { + [key: string]: any; + repository?: PayloadRepository; + issue?: { + [key: string]: any; + number: number; + html_url?: string; + body?: string; + }; + pull_request?: { + [key: string]: any; + number: number; + html_url?: string; + body?: string; + }; + sender?: { + [key: string]: any; + type: string; + }; + action?: string; + installation?: { + id: number; + [key: string]: any; + }; + comment?: { + id: number; + [key: string]: any; + }; +} diff --git a/node_modules/@actions/github/lib/interfaces.js b/node_modules/@actions/github/lib/interfaces.js new file mode 100644 index 0000000..a660b5e --- /dev/null +++ b/node_modules/@actions/github/lib/interfaces.js @@ -0,0 +1,4 @@ +"use strict"; +/* eslint-disable @typescript-eslint/no-explicit-any */ +Object.defineProperty(exports, "__esModule", { value: true }); +//# sourceMappingURL=interfaces.js.map \ No newline at end of file diff --git a/node_modules/@actions/github/lib/interfaces.js.map b/node_modules/@actions/github/lib/interfaces.js.map new file mode 100644 index 0000000..dc2c960 --- /dev/null +++ b/node_modules/@actions/github/lib/interfaces.js.map @@ -0,0 +1 @@ +{"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../src/interfaces.ts"],"names":[],"mappings":";AAAA,uDAAuD"} \ No newline at end of file diff --git a/node_modules/@actions/github/lib/internal/utils.d.ts b/node_modules/@actions/github/lib/internal/utils.d.ts new file mode 100644 index 0000000..5790d91 --- /dev/null +++ b/node_modules/@actions/github/lib/internal/utils.d.ts @@ -0,0 +1,6 @@ +/// +import * as http from 'http'; +import { OctokitOptions } from '@octokit/core/dist-types/types'; +export declare function getAuthString(token: string, options: OctokitOptions): string | undefined; +export declare function getProxyAgent(destinationUrl: string): http.Agent; +export declare function getApiBaseUrl(): string; diff --git a/node_modules/@actions/github/lib/internal/utils.js b/node_modules/@actions/github/lib/internal/utils.js new file mode 100644 index 0000000..175a4da --- /dev/null +++ b/node_modules/@actions/github/lib/internal/utils.js @@ -0,0 +1,43 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__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(exports, "__esModule", { value: true }); +exports.getApiBaseUrl = exports.getProxyAgent = exports.getAuthString = void 0; +const httpClient = __importStar(require("@actions/http-client")); +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}`; +} +exports.getAuthString = getAuthString; +function getProxyAgent(destinationUrl) { + const hc = new httpClient.HttpClient(); + return hc.getAgent(destinationUrl); +} +exports.getProxyAgent = getProxyAgent; +function getApiBaseUrl() { + return process.env['GITHUB_API_URL'] || 'https://api.github.com'; +} +exports.getApiBaseUrl = getApiBaseUrl; +//# sourceMappingURL=utils.js.map \ No newline at end of file diff --git a/node_modules/@actions/github/lib/internal/utils.js.map b/node_modules/@actions/github/lib/internal/utils.js.map new file mode 100644 index 0000000..f1f519d --- /dev/null +++ b/node_modules/@actions/github/lib/internal/utils.js.map @@ -0,0 +1 @@ +{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/internal/utils.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AACA,iEAAkD;AAGlD,SAAgB,aAAa,CAC3B,KAAa,EACb,OAAuB;IAEvB,IAAI,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;QAC3B,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAA;KAC5D;SAAM,IAAI,KAAK,IAAI,OAAO,CAAC,IAAI,EAAE;QAChC,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAA;KAC5E;IAED,OAAO,OAAO,OAAO,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,KAAK,EAAE,CAAA;AAC3E,CAAC;AAXD,sCAWC;AAED,SAAgB,aAAa,CAAC,cAAsB;IAClD,MAAM,EAAE,GAAG,IAAI,UAAU,CAAC,UAAU,EAAE,CAAA;IACtC,OAAO,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAA;AACpC,CAAC;AAHD,sCAGC;AAED,SAAgB,aAAa;IAC3B,OAAO,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,IAAI,wBAAwB,CAAA;AAClE,CAAC;AAFD,sCAEC"} \ No newline at end of file diff --git a/node_modules/@actions/github/lib/utils.d.ts b/node_modules/@actions/github/lib/utils.d.ts new file mode 100644 index 0000000..e889ee0 --- /dev/null +++ b/node_modules/@actions/github/lib/utils.d.ts @@ -0,0 +1,15 @@ +import * as Context from './context'; +import { Octokit } from '@octokit/core'; +import { OctokitOptions } from '@octokit/core/dist-types/types'; +export declare const context: Context.Context; +export declare const defaults: OctokitOptions; +export declare const GitHub: typeof Octokit & import("@octokit/core/dist-types/types").Constructor; +/** + * Convience function to correctly format Octokit Options to pass into the constructor. + * + * @param token the repo PAT or GITHUB_TOKEN + * @param options other options to set + */ +export declare function getOctokitOptions(token: string, options?: OctokitOptions): OctokitOptions; diff --git a/node_modules/@actions/github/lib/utils.js b/node_modules/@actions/github/lib/utils.js new file mode 100644 index 0000000..d803f01 --- /dev/null +++ b/node_modules/@actions/github/lib/utils.js @@ -0,0 +1,54 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__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(exports, "__esModule", { value: true }); +exports.getOctokitOptions = exports.GitHub = exports.defaults = exports.context = void 0; +const Context = __importStar(require("./context")); +const Utils = __importStar(require("./internal/utils")); +// octokit + plugins +const core_1 = require("@octokit/core"); +const plugin_rest_endpoint_methods_1 = require("@octokit/plugin-rest-endpoint-methods"); +const plugin_paginate_rest_1 = require("@octokit/plugin-paginate-rest"); +exports.context = new Context.Context(); +const baseUrl = Utils.getApiBaseUrl(); +exports.defaults = { + baseUrl, + request: { + agent: Utils.getProxyAgent(baseUrl) + } +}; +exports.GitHub = core_1.Octokit.plugin(plugin_rest_endpoint_methods_1.restEndpointMethods, plugin_paginate_rest_1.paginateRest).defaults(exports.defaults); +/** + * Convience function to correctly format Octokit Options to pass into the constructor. + * + * @param token the repo PAT or GITHUB_TOKEN + * @param options other options to set + */ +function getOctokitOptions(token, options) { + const opts = Object.assign({}, options || {}); // Shallow clone - don't mutate the object provided by the caller + // Auth + const auth = Utils.getAuthString(token, opts); + if (auth) { + opts.auth = auth; + } + return opts; +} +exports.getOctokitOptions = getOctokitOptions; +//# sourceMappingURL=utils.js.map \ No newline at end of file diff --git a/node_modules/@actions/github/lib/utils.js.map b/node_modules/@actions/github/lib/utils.js.map new file mode 100644 index 0000000..7221d06 --- /dev/null +++ b/node_modules/@actions/github/lib/utils.js.map @@ -0,0 +1 @@ +{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA,mDAAoC;AACpC,wDAAyC;AAEzC,oBAAoB;AACpB,wCAAqC;AAErC,wFAAyE;AACzE,wEAA0D;AAE7C,QAAA,OAAO,GAAG,IAAI,OAAO,CAAC,OAAO,EAAE,CAAA;AAE5C,MAAM,OAAO,GAAG,KAAK,CAAC,aAAa,EAAE,CAAA;AACxB,QAAA,QAAQ,GAAmB;IACtC,OAAO;IACP,OAAO,EAAE;QACP,KAAK,EAAE,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC;KACpC;CACF,CAAA;AAEY,QAAA,MAAM,GAAG,cAAO,CAAC,MAAM,CAClC,kDAAmB,EACnB,mCAAY,CACb,CAAC,QAAQ,CAAC,gBAAQ,CAAC,CAAA;AAEpB;;;;;GAKG;AACH,SAAgB,iBAAiB,CAC/B,KAAa,EACb,OAAwB;IAExB,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,OAAO,IAAI,EAAE,CAAC,CAAA,CAAC,iEAAiE;IAE/G,OAAO;IACP,MAAM,IAAI,GAAG,KAAK,CAAC,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;IAC7C,IAAI,IAAI,EAAE;QACR,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;KACjB;IAED,OAAO,IAAI,CAAA;AACb,CAAC;AAbD,8CAaC"} \ No newline at end of file diff --git a/node_modules/@actions/github/package.json b/node_modules/@actions/github/package.json new file mode 100644 index 0000000..3bcbe30 --- /dev/null +++ b/node_modules/@actions/github/package.json @@ -0,0 +1,49 @@ +{ + "name": "@actions/github", + "version": "5.1.1", + "description": "Actions github lib", + "keywords": [ + "github", + "actions" + ], + "homepage": "https://github.com/actions/toolkit/tree/main/packages/github", + "license": "MIT", + "main": "lib/github.js", + "types": "lib/github.d.ts", + "directories": { + "lib": "lib", + "test": "__tests__" + }, + "files": [ + "lib", + "!.DS_Store" + ], + "publishConfig": { + "access": "public" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/actions/toolkit.git", + "directory": "packages/github" + }, + "scripts": { + "audit-moderate": "npm install && npm audit --json --audit-level=moderate > audit.json", + "test": "jest", + "build": "tsc", + "format": "prettier --write **/*.ts", + "format-check": "prettier --check **/*.ts", + "tsc": "tsc" + }, + "bugs": { + "url": "https://github.com/actions/toolkit/issues" + }, + "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" + }, + "devDependencies": { + "proxy": "^1.0.2" + } +} diff --git a/node_modules/@actions/glob/LICENSE.md b/node_modules/@actions/glob/LICENSE.md new file mode 100644 index 0000000..dbae2ed --- /dev/null +++ b/node_modules/@actions/glob/LICENSE.md @@ -0,0 +1,9 @@ +The MIT License (MIT) + +Copyright 2019 GitHub + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/node_modules/@actions/glob/README.md b/node_modules/@actions/glob/README.md new file mode 100644 index 0000000..9575bea --- /dev/null +++ b/node_modules/@actions/glob/README.md @@ -0,0 +1,113 @@ +# `@actions/glob` + +## Usage + +### Basic + +You can use this package to search for files matching glob patterns. + +Relative paths and absolute paths are both allowed. Relative paths are rooted against the current working directory. + +```js +const glob = require('@actions/glob'); + +const patterns = ['**/tar.gz', '**/tar.bz'] +const globber = await glob.create(patterns.join('\n')) +const files = await globber.glob() +``` + +### Opt out of following symbolic links + +```js +const glob = require('@actions/glob'); + +const globber = await glob.create('**', {followSymbolicLinks: false}) +const files = await globber.glob() +``` + +### Iterator + +When dealing with a large amount of results, consider iterating the results as they are returned: + +```js +const glob = require('@actions/glob'); + +const globber = await glob.create('**') +for await (const file of globber.globGenerator()) { + console.log(file) +} +``` + +## Recommended action inputs + +Glob follows symbolic links by default. Following is often appropriate unless deleting files. + +Users may want to opt-out from following symbolic links for other reasons. For example, +excessive amounts of symbolic links can create the appearance of very, very many files +and slow the search. + +When an action allows a user to specify input patterns, it is generally recommended to +allow users to opt-out from following symbolic links. + +Snippet from `action.yml`: + +```yaml +inputs: + files: + description: 'Files to print' + required: true + follow-symbolic-links: + description: 'Indicates whether to follow symbolic links' + default: true +``` + +And corresponding toolkit consumption: + +```js +const core = require('@actions/core') +const glob = require('@actions/glob') + +const globOptions = { + followSymbolicLinks: core.getInput('follow-symbolic-links').toUpper() !== 'FALSE' +} +const globber = glob.create(core.getInput('files'), globOptions) +for await (const file of globber.globGenerator()) { + console.log(file) +} +``` + +## Patterns + +### Glob behavior + +Patterns `*`, `?`, `[...]`, `**` (globstar) are supported. + +With the following behaviors: +- File names that begin with `.` may be included in the results +- Case insensitive on Windows +- Directory separator `/` and `\` both supported on Windows + +### Tilde expansion + +Supports basic tilde expansion, for current user HOME replacement only. + +Example: +- `~` may expand to /Users/johndoe +- `~/foo` may expand to /Users/johndoe/foo + +### Comments + +Patterns that begin with `#` are treated as comments. + +### Exclude patterns + +Leading `!` changes the meaning of an include pattern to exclude. + +Multiple leading `!` flips the meaning. + +### Escaping + +Wrapping special characters in `[]` can be used to escape literal glob characters +in a file name. For example the literal file name `hello[a-z]` can be escaped as `hello[[]a-z]`. + +On Linux/macOS `\` is also treated as an escape character. diff --git a/node_modules/@actions/glob/lib/glob.d.ts b/node_modules/@actions/glob/lib/glob.d.ts new file mode 100644 index 0000000..3f640e8 --- /dev/null +++ b/node_modules/@actions/glob/lib/glob.d.ts @@ -0,0 +1,20 @@ +import { Globber } from './internal-globber'; +import { GlobOptions } from './internal-glob-options'; +import { HashFileOptions } from './internal-hash-file-options'; +export { Globber, GlobOptions }; +/** + * Constructs a globber + * + * @param patterns Patterns separated by newlines + * @param options Glob options + */ +export declare function create(patterns: string, options?: GlobOptions): Promise; +/** + * Computes the sha256 hash of a glob + * + * @param patterns Patterns separated by newlines + * @param currentWorkspace Workspace used when matching files + * @param options Glob options + * @param verbose Enables verbose logging + */ +export declare function hashFiles(patterns: string, currentWorkspace?: string, options?: HashFileOptions, verbose?: Boolean): Promise; diff --git a/node_modules/@actions/glob/lib/glob.js b/node_modules/@actions/glob/lib/glob.js new file mode 100644 index 0000000..fea8afd --- /dev/null +++ b/node_modules/@actions/glob/lib/glob.js @@ -0,0 +1,46 @@ +"use strict"; +var __awaiter = (this && this.__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(exports, "__esModule", { value: true }); +exports.hashFiles = exports.create = void 0; +const internal_globber_1 = require("./internal-globber"); +const internal_hash_files_1 = require("./internal-hash-files"); +/** + * Constructs a globber + * + * @param patterns Patterns separated by newlines + * @param options Glob options + */ +function create(patterns, options) { + return __awaiter(this, void 0, void 0, function* () { + return yield internal_globber_1.DefaultGlobber.create(patterns, options); + }); +} +exports.create = create; +/** + * Computes the sha256 hash of a glob + * + * @param patterns Patterns separated by newlines + * @param currentWorkspace Workspace used when matching files + * @param options Glob options + * @param verbose Enables verbose logging + */ +function hashFiles(patterns, currentWorkspace = '', options, verbose = false) { + return __awaiter(this, void 0, void 0, function* () { + let followSymbolicLinks = true; + if (options && typeof options.followSymbolicLinks === 'boolean') { + followSymbolicLinks = options.followSymbolicLinks; + } + const globber = yield create(patterns, { followSymbolicLinks }); + return internal_hash_files_1.hashFiles(globber, currentWorkspace, verbose); + }); +} +exports.hashFiles = hashFiles; +//# sourceMappingURL=glob.js.map \ No newline at end of file diff --git a/node_modules/@actions/glob/lib/glob.js.map b/node_modules/@actions/glob/lib/glob.js.map new file mode 100644 index 0000000..91c24ce --- /dev/null +++ b/node_modules/@actions/glob/lib/glob.js.map @@ -0,0 +1 @@ +{"version":3,"file":"glob.js","sourceRoot":"","sources":["../src/glob.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,yDAA0D;AAG1D,+DAA6D;AAI7D;;;;;GAKG;AACH,SAAsB,MAAM,CAC1B,QAAgB,EAChB,OAAqB;;QAErB,OAAO,MAAM,iCAAc,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;IACvD,CAAC;CAAA;AALD,wBAKC;AAED;;;;;;;GAOG;AACH,SAAsB,SAAS,CAC7B,QAAgB,EAChB,gBAAgB,GAAG,EAAE,EACrB,OAAyB,EACzB,UAAmB,KAAK;;QAExB,IAAI,mBAAmB,GAAG,IAAI,CAAA;QAC9B,IAAI,OAAO,IAAI,OAAO,OAAO,CAAC,mBAAmB,KAAK,SAAS,EAAE;YAC/D,mBAAmB,GAAG,OAAO,CAAC,mBAAmB,CAAA;SAClD;QACD,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,QAAQ,EAAE,EAAC,mBAAmB,EAAC,CAAC,CAAA;QAC7D,OAAO,+BAAU,CAAC,OAAO,EAAE,gBAAgB,EAAE,OAAO,CAAC,CAAA;IACvD,CAAC;CAAA;AAZD,8BAYC"} \ No newline at end of file diff --git a/node_modules/@actions/glob/lib/internal-glob-options-helper.d.ts b/node_modules/@actions/glob/lib/internal-glob-options-helper.d.ts new file mode 100644 index 0000000..8a78960 --- /dev/null +++ b/node_modules/@actions/glob/lib/internal-glob-options-helper.d.ts @@ -0,0 +1,5 @@ +import { GlobOptions } from './internal-glob-options'; +/** + * Returns a copy with defaults filled in. + */ +export declare function getOptions(copy?: GlobOptions): GlobOptions; diff --git a/node_modules/@actions/glob/lib/internal-glob-options-helper.js b/node_modules/@actions/glob/lib/internal-glob-options-helper.js new file mode 100644 index 0000000..bd3391b --- /dev/null +++ b/node_modules/@actions/glob/lib/internal-glob-options-helper.js @@ -0,0 +1,55 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__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(exports, "__esModule", { value: true }); +exports.getOptions = void 0; +const core = __importStar(require("@actions/core")); +/** + * Returns a copy with defaults filled in. + */ +function getOptions(copy) { + const result = { + followSymbolicLinks: true, + implicitDescendants: true, + matchDirectories: true, + omitBrokenSymbolicLinks: true + }; + if (copy) { + if (typeof copy.followSymbolicLinks === 'boolean') { + result.followSymbolicLinks = copy.followSymbolicLinks; + core.debug(`followSymbolicLinks '${result.followSymbolicLinks}'`); + } + if (typeof copy.implicitDescendants === 'boolean') { + result.implicitDescendants = copy.implicitDescendants; + core.debug(`implicitDescendants '${result.implicitDescendants}'`); + } + if (typeof copy.matchDirectories === 'boolean') { + result.matchDirectories = copy.matchDirectories; + core.debug(`matchDirectories '${result.matchDirectories}'`); + } + if (typeof copy.omitBrokenSymbolicLinks === 'boolean') { + result.omitBrokenSymbolicLinks = copy.omitBrokenSymbolicLinks; + core.debug(`omitBrokenSymbolicLinks '${result.omitBrokenSymbolicLinks}'`); + } + } + return result; +} +exports.getOptions = getOptions; +//# sourceMappingURL=internal-glob-options-helper.js.map \ No newline at end of file diff --git a/node_modules/@actions/glob/lib/internal-glob-options-helper.js.map b/node_modules/@actions/glob/lib/internal-glob-options-helper.js.map new file mode 100644 index 0000000..d2a918c --- /dev/null +++ b/node_modules/@actions/glob/lib/internal-glob-options-helper.js.map @@ -0,0 +1 @@ +{"version":3,"file":"internal-glob-options-helper.js","sourceRoot":"","sources":["../src/internal-glob-options-helper.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA,oDAAqC;AAGrC;;GAEG;AACH,SAAgB,UAAU,CAAC,IAAkB;IAC3C,MAAM,MAAM,GAAgB;QAC1B,mBAAmB,EAAE,IAAI;QACzB,mBAAmB,EAAE,IAAI;QACzB,gBAAgB,EAAE,IAAI;QACtB,uBAAuB,EAAE,IAAI;KAC9B,CAAA;IAED,IAAI,IAAI,EAAE;QACR,IAAI,OAAO,IAAI,CAAC,mBAAmB,KAAK,SAAS,EAAE;YACjD,MAAM,CAAC,mBAAmB,GAAG,IAAI,CAAC,mBAAmB,CAAA;YACrD,IAAI,CAAC,KAAK,CAAC,wBAAwB,MAAM,CAAC,mBAAmB,GAAG,CAAC,CAAA;SAClE;QAED,IAAI,OAAO,IAAI,CAAC,mBAAmB,KAAK,SAAS,EAAE;YACjD,MAAM,CAAC,mBAAmB,GAAG,IAAI,CAAC,mBAAmB,CAAA;YACrD,IAAI,CAAC,KAAK,CAAC,wBAAwB,MAAM,CAAC,mBAAmB,GAAG,CAAC,CAAA;SAClE;QAED,IAAI,OAAO,IAAI,CAAC,gBAAgB,KAAK,SAAS,EAAE;YAC9C,MAAM,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAA;YAC/C,IAAI,CAAC,KAAK,CAAC,qBAAqB,MAAM,CAAC,gBAAgB,GAAG,CAAC,CAAA;SAC5D;QAED,IAAI,OAAO,IAAI,CAAC,uBAAuB,KAAK,SAAS,EAAE;YACrD,MAAM,CAAC,uBAAuB,GAAG,IAAI,CAAC,uBAAuB,CAAA;YAC7D,IAAI,CAAC,KAAK,CAAC,4BAA4B,MAAM,CAAC,uBAAuB,GAAG,CAAC,CAAA;SAC1E;KACF;IAED,OAAO,MAAM,CAAA;AACf,CAAC;AA/BD,gCA+BC"} \ No newline at end of file diff --git a/node_modules/@actions/glob/lib/internal-glob-options.d.ts b/node_modules/@actions/glob/lib/internal-glob-options.d.ts new file mode 100644 index 0000000..fe04859 --- /dev/null +++ b/node_modules/@actions/glob/lib/internal-glob-options.d.ts @@ -0,0 +1,36 @@ +/** + * Options to control globbing behavior + */ +export interface GlobOptions { + /** + * Indicates whether to follow symbolic links. Generally should set to false + * when deleting files. + * + * @default true + */ + followSymbolicLinks?: boolean; + /** + * Indicates whether directories that match a glob pattern, should implicitly + * cause all descendant paths to be matched. + * + * For example, given the directory `my-dir`, the following glob patterns + * would produce the same results: `my-dir/**`, `my-dir/`, `my-dir` + * + * @default true + */ + implicitDescendants?: boolean; + /** + * Indicates whether matching directories should be included in the + * result set. + * + * @default true + */ + matchDirectories?: boolean; + /** + * Indicates whether broken symbolic should be ignored and omitted from the + * result set. Otherwise an error will be thrown. + * + * @default true + */ + omitBrokenSymbolicLinks?: boolean; +} diff --git a/node_modules/@actions/glob/lib/internal-glob-options.js b/node_modules/@actions/glob/lib/internal-glob-options.js new file mode 100644 index 0000000..8960c70 --- /dev/null +++ b/node_modules/@actions/glob/lib/internal-glob-options.js @@ -0,0 +1,3 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +//# sourceMappingURL=internal-glob-options.js.map \ No newline at end of file diff --git a/node_modules/@actions/glob/lib/internal-glob-options.js.map b/node_modules/@actions/glob/lib/internal-glob-options.js.map new file mode 100644 index 0000000..dec7953 --- /dev/null +++ b/node_modules/@actions/glob/lib/internal-glob-options.js.map @@ -0,0 +1 @@ +{"version":3,"file":"internal-glob-options.js","sourceRoot":"","sources":["../src/internal-glob-options.ts"],"names":[],"mappings":""} \ No newline at end of file diff --git a/node_modules/@actions/glob/lib/internal-globber.d.ts b/node_modules/@actions/glob/lib/internal-globber.d.ts new file mode 100644 index 0000000..6d0036b --- /dev/null +++ b/node_modules/@actions/glob/lib/internal-globber.d.ts @@ -0,0 +1,42 @@ +import { GlobOptions } from './internal-glob-options'; +export { GlobOptions }; +/** + * Used to match files and directories + */ +export interface Globber { + /** + * Returns the search path preceding the first glob segment, from each pattern. + * Duplicates and descendants of other paths are filtered out. + * + * Example 1: The patterns `/foo/*` and `/bar/*` returns `/foo` and `/bar`. + * + * Example 2: The patterns `/foo/*` and `/foo/bar/*` returns `/foo`. + */ + getSearchPaths(): string[]; + /** + * Returns files and directories matching the glob patterns. + * + * Order of the results is not guaranteed. + */ + glob(): Promise; + /** + * Returns files and directories matching the glob patterns. + * + * Order of the results is not guaranteed. + */ + globGenerator(): AsyncGenerator; +} +export declare class DefaultGlobber implements Globber { + private readonly options; + private readonly patterns; + private readonly searchPaths; + private constructor(); + getSearchPaths(): string[]; + glob(): Promise; + globGenerator(): AsyncGenerator; + /** + * Constructs a DefaultGlobber + */ + static create(patterns: string, options?: GlobOptions): Promise; + private static stat; +} diff --git a/node_modules/@actions/glob/lib/internal-globber.js b/node_modules/@actions/glob/lib/internal-globber.js new file mode 100644 index 0000000..788fb77 --- /dev/null +++ b/node_modules/@actions/glob/lib/internal-globber.js @@ -0,0 +1,235 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__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 = (this && this.__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()); + }); +}; +var __asyncValues = (this && this.__asyncValues) || function (o) { + if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); + var m = o[Symbol.asyncIterator], i; + return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i); + function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; } + function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); } +}; +var __await = (this && this.__await) || function (v) { return this instanceof __await ? (this.v = v, this) : new __await(v); } +var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _arguments, generator) { + if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); + var g = generator.apply(thisArg, _arguments || []), i, q = []; + return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; + function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } + function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } + function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } + function fulfill(value) { resume("next", value); } + function reject(value) { resume("throw", value); } + function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.DefaultGlobber = void 0; +const core = __importStar(require("@actions/core")); +const fs = __importStar(require("fs")); +const globOptionsHelper = __importStar(require("./internal-glob-options-helper")); +const path = __importStar(require("path")); +const patternHelper = __importStar(require("./internal-pattern-helper")); +const internal_match_kind_1 = require("./internal-match-kind"); +const internal_pattern_1 = require("./internal-pattern"); +const internal_search_state_1 = require("./internal-search-state"); +const IS_WINDOWS = process.platform === 'win32'; +class DefaultGlobber { + constructor(options) { + this.patterns = []; + this.searchPaths = []; + this.options = globOptionsHelper.getOptions(options); + } + getSearchPaths() { + // Return a copy + return this.searchPaths.slice(); + } + glob() { + var e_1, _a; + return __awaiter(this, void 0, void 0, function* () { + const result = []; + try { + for (var _b = __asyncValues(this.globGenerator()), _c; _c = yield _b.next(), !_c.done;) { + const itemPath = _c.value; + result.push(itemPath); + } + } + catch (e_1_1) { e_1 = { error: e_1_1 }; } + finally { + try { + if (_c && !_c.done && (_a = _b.return)) yield _a.call(_b); + } + finally { if (e_1) throw e_1.error; } + } + return result; + }); + } + globGenerator() { + return __asyncGenerator(this, arguments, function* globGenerator_1() { + // Fill in defaults options + const options = globOptionsHelper.getOptions(this.options); + // Implicit descendants? + const patterns = []; + for (const pattern of this.patterns) { + patterns.push(pattern); + if (options.implicitDescendants && + (pattern.trailingSeparator || + pattern.segments[pattern.segments.length - 1] !== '**')) { + patterns.push(new internal_pattern_1.Pattern(pattern.negate, true, pattern.segments.concat('**'))); + } + } + // Push the search paths + const stack = []; + for (const searchPath of patternHelper.getSearchPaths(patterns)) { + core.debug(`Search path '${searchPath}'`); + // Exists? + try { + // Intentionally using lstat. Detection for broken symlink + // will be performed later (if following symlinks). + yield __await(fs.promises.lstat(searchPath)); + } + catch (err) { + if (err.code === 'ENOENT') { + continue; + } + throw err; + } + stack.unshift(new internal_search_state_1.SearchState(searchPath, 1)); + } + // Search + const traversalChain = []; // used to detect cycles + while (stack.length) { + // Pop + const item = stack.pop(); + // Match? + const match = patternHelper.match(patterns, item.path); + const partialMatch = !!match || patternHelper.partialMatch(patterns, item.path); + if (!match && !partialMatch) { + continue; + } + // Stat + const stats = yield __await(DefaultGlobber.stat(item, options, traversalChain) + // Broken symlink, or symlink cycle detected, or no longer exists + ); + // Broken symlink, or symlink cycle detected, or no longer exists + if (!stats) { + continue; + } + // Directory + if (stats.isDirectory()) { + // Matched + if (match & internal_match_kind_1.MatchKind.Directory && options.matchDirectories) { + yield yield __await(item.path); + } + // Descend? + else if (!partialMatch) { + continue; + } + // Push the child items in reverse + const childLevel = item.level + 1; + const childItems = (yield __await(fs.promises.readdir(item.path))).map(x => new internal_search_state_1.SearchState(path.join(item.path, x), childLevel)); + stack.push(...childItems.reverse()); + } + // File + else if (match & internal_match_kind_1.MatchKind.File) { + yield yield __await(item.path); + } + } + }); + } + /** + * Constructs a DefaultGlobber + */ + static create(patterns, options) { + return __awaiter(this, void 0, void 0, function* () { + const result = new DefaultGlobber(options); + if (IS_WINDOWS) { + patterns = patterns.replace(/\r\n/g, '\n'); + patterns = patterns.replace(/\r/g, '\n'); + } + const lines = patterns.split('\n').map(x => x.trim()); + for (const line of lines) { + // Empty or comment + if (!line || line.startsWith('#')) { + continue; + } + // Pattern + else { + result.patterns.push(new internal_pattern_1.Pattern(line)); + } + } + result.searchPaths.push(...patternHelper.getSearchPaths(result.patterns)); + return result; + }); + } + static stat(item, options, traversalChain) { + return __awaiter(this, void 0, void 0, function* () { + // Note: + // `stat` returns info about the target of a symlink (or symlink chain) + // `lstat` returns info about a symlink itself + let stats; + if (options.followSymbolicLinks) { + try { + // Use `stat` (following symlinks) + stats = yield fs.promises.stat(item.path); + } + catch (err) { + if (err.code === 'ENOENT') { + if (options.omitBrokenSymbolicLinks) { + core.debug(`Broken symlink '${item.path}'`); + return undefined; + } + throw new Error(`No information found for the path '${item.path}'. This may indicate a broken symbolic link.`); + } + throw err; + } + } + else { + // Use `lstat` (not following symlinks) + stats = yield fs.promises.lstat(item.path); + } + // Note, isDirectory() returns false for the lstat of a symlink + if (stats.isDirectory() && options.followSymbolicLinks) { + // Get the realpath + const realPath = yield fs.promises.realpath(item.path); + // Fixup the traversal chain to match the item level + while (traversalChain.length >= item.level) { + traversalChain.pop(); + } + // Test for a cycle + if (traversalChain.some((x) => x === realPath)) { + core.debug(`Symlink cycle detected for path '${item.path}' and realpath '${realPath}'`); + return undefined; + } + // Update the traversal chain + traversalChain.push(realPath); + } + return stats; + }); + } +} +exports.DefaultGlobber = DefaultGlobber; +//# sourceMappingURL=internal-globber.js.map \ No newline at end of file diff --git a/node_modules/@actions/glob/lib/internal-globber.js.map b/node_modules/@actions/glob/lib/internal-globber.js.map new file mode 100644 index 0000000..a060d4c --- /dev/null +++ b/node_modules/@actions/glob/lib/internal-globber.js.map @@ -0,0 +1 @@ +{"version":3,"file":"internal-globber.js","sourceRoot":"","sources":["../src/internal-globber.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,oDAAqC;AACrC,uCAAwB;AACxB,kFAAmE;AACnE,2CAA4B;AAC5B,yEAA0D;AAE1D,+DAA+C;AAC/C,yDAA0C;AAC1C,mEAAmD;AAEnD,MAAM,UAAU,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAA;AAiC/C,MAAa,cAAc;IAKzB,YAAoB,OAAqB;QAHxB,aAAQ,GAAc,EAAE,CAAA;QACxB,gBAAW,GAAa,EAAE,CAAA;QAGzC,IAAI,CAAC,OAAO,GAAG,iBAAiB,CAAC,UAAU,CAAC,OAAO,CAAC,CAAA;IACtD,CAAC;IAED,cAAc;QACZ,gBAAgB;QAChB,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAA;IACjC,CAAC;IAEK,IAAI;;;YACR,MAAM,MAAM,GAAa,EAAE,CAAA;;gBAC3B,KAA6B,IAAA,KAAA,cAAA,IAAI,CAAC,aAAa,EAAE,CAAA,IAAA;oBAAtC,MAAM,QAAQ,WAAA,CAAA;oBACvB,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;iBACtB;;;;;;;;;YACD,OAAO,MAAM,CAAA;;KACd;IAEM,aAAa;;YAClB,2BAA2B;YAC3B,MAAM,OAAO,GAAG,iBAAiB,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;YAC1D,wBAAwB;YACxB,MAAM,QAAQ,GAAc,EAAE,CAAA;YAC9B,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE;gBACnC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;gBACtB,IACE,OAAO,CAAC,mBAAmB;oBAC3B,CAAC,OAAO,CAAC,iBAAiB;wBACxB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC,EACzD;oBACA,QAAQ,CAAC,IAAI,CACX,IAAI,0BAAO,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CACjE,CAAA;iBACF;aACF;YAED,wBAAwB;YAExB,MAAM,KAAK,GAAkB,EAAE,CAAA;YAC/B,KAAK,MAAM,UAAU,IAAI,aAAa,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE;gBAC/D,IAAI,CAAC,KAAK,CAAC,gBAAgB,UAAU,GAAG,CAAC,CAAA;gBAEzC,UAAU;gBACV,IAAI;oBACF,0DAA0D;oBAC1D,mDAAmD;oBACnD,cAAM,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,CAAA,CAAA;iBACpC;gBAAC,OAAO,GAAG,EAAE;oBACZ,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,EAAE;wBACzB,SAAQ;qBACT;oBACD,MAAM,GAAG,CAAA;iBACV;gBAED,KAAK,CAAC,OAAO,CAAC,IAAI,mCAAW,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAA;aAC9C;YAED,SAAS;YACT,MAAM,cAAc,GAAa,EAAE,CAAA,CAAC,wBAAwB;YAC5D,OAAO,KAAK,CAAC,MAAM,EAAE;gBACnB,MAAM;gBACN,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,EAAiB,CAAA;gBAEvC,SAAS;gBACT,MAAM,KAAK,GAAG,aAAa,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,CAAA;gBACtD,MAAM,YAAY,GAChB,CAAC,CAAC,KAAK,IAAI,aAAa,CAAC,YAAY,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,CAAA;gBAC5D,IAAI,CAAC,KAAK,IAAI,CAAC,YAAY,EAAE;oBAC3B,SAAQ;iBACT;gBAED,OAAO;gBACP,MAAM,KAAK,GAAyB,cAAM,cAAc,CAAC,IAAI,CAC3D,IAAI,EACJ,OAAO,EACP,cAAc,CACf;gBAED,iEAAiE;iBAFhE,CAAA;gBAED,iEAAiE;gBACjE,IAAI,CAAC,KAAK,EAAE;oBACV,SAAQ;iBACT;gBAED,YAAY;gBACZ,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE;oBACvB,UAAU;oBACV,IAAI,KAAK,GAAG,+BAAS,CAAC,SAAS,IAAI,OAAO,CAAC,gBAAgB,EAAE;wBAC3D,oBAAM,IAAI,CAAC,IAAI,CAAA,CAAA;qBAChB;oBACD,WAAW;yBACN,IAAI,CAAC,YAAY,EAAE;wBACtB,SAAQ;qBACT;oBAED,kCAAkC;oBAClC,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,CAAA;oBACjC,MAAM,UAAU,GAAG,CAAC,cAAM,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA,CAAC,CAAC,GAAG,CAC3D,CAAC,CAAC,EAAE,CAAC,IAAI,mCAAW,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,UAAU,CAAC,CAC1D,CAAA;oBACD,KAAK,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,OAAO,EAAE,CAAC,CAAA;iBACpC;gBACD,OAAO;qBACF,IAAI,KAAK,GAAG,+BAAS,CAAC,IAAI,EAAE;oBAC/B,oBAAM,IAAI,CAAC,IAAI,CAAA,CAAA;iBAChB;aACF;QACH,CAAC;KAAA;IAED;;OAEG;IACH,MAAM,CAAO,MAAM,CACjB,QAAgB,EAChB,OAAqB;;YAErB,MAAM,MAAM,GAAG,IAAI,cAAc,CAAC,OAAO,CAAC,CAAA;YAE1C,IAAI,UAAU,EAAE;gBACd,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;gBAC1C,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;aACzC;YAED,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAA;YACrD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;gBACxB,mBAAmB;gBACnB,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;oBACjC,SAAQ;iBACT;gBACD,UAAU;qBACL;oBACH,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,0BAAO,CAAC,IAAI,CAAC,CAAC,CAAA;iBACxC;aACF;YAED,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,cAAc,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAA;YAEzE,OAAO,MAAM,CAAA;QACf,CAAC;KAAA;IAEO,MAAM,CAAO,IAAI,CACvB,IAAiB,EACjB,OAAoB,EACpB,cAAwB;;YAExB,QAAQ;YACR,uEAAuE;YACvE,8CAA8C;YAC9C,IAAI,KAAe,CAAA;YACnB,IAAI,OAAO,CAAC,mBAAmB,EAAE;gBAC/B,IAAI;oBACF,kCAAkC;oBAClC,KAAK,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;iBAC1C;gBAAC,OAAO,GAAG,EAAE;oBACZ,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,EAAE;wBACzB,IAAI,OAAO,CAAC,uBAAuB,EAAE;4BACnC,IAAI,CAAC,KAAK,CAAC,mBAAmB,IAAI,CAAC,IAAI,GAAG,CAAC,CAAA;4BAC3C,OAAO,SAAS,CAAA;yBACjB;wBAED,MAAM,IAAI,KAAK,CACb,sCAAsC,IAAI,CAAC,IAAI,8CAA8C,CAC9F,CAAA;qBACF;oBAED,MAAM,GAAG,CAAA;iBACV;aACF;iBAAM;gBACL,uCAAuC;gBACvC,KAAK,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;aAC3C;YAED,+DAA+D;YAC/D,IAAI,KAAK,CAAC,WAAW,EAAE,IAAI,OAAO,CAAC,mBAAmB,EAAE;gBACtD,mBAAmB;gBACnB,MAAM,QAAQ,GAAW,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;gBAE9D,oDAAoD;gBACpD,OAAO,cAAc,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,EAAE;oBAC1C,cAAc,CAAC,GAAG,EAAE,CAAA;iBACrB;gBAED,mBAAmB;gBACnB,IAAI,cAAc,CAAC,IAAI,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,KAAK,QAAQ,CAAC,EAAE;oBACtD,IAAI,CAAC,KAAK,CACR,oCAAoC,IAAI,CAAC,IAAI,mBAAmB,QAAQ,GAAG,CAC5E,CAAA;oBACD,OAAO,SAAS,CAAA;iBACjB;gBAED,6BAA6B;gBAC7B,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;aAC9B;YAED,OAAO,KAAK,CAAA;QACd,CAAC;KAAA;CACF;AAvMD,wCAuMC"} \ No newline at end of file diff --git a/node_modules/@actions/glob/lib/internal-hash-file-options.d.ts b/node_modules/@actions/glob/lib/internal-hash-file-options.d.ts new file mode 100644 index 0000000..57c6d3a --- /dev/null +++ b/node_modules/@actions/glob/lib/internal-hash-file-options.d.ts @@ -0,0 +1,12 @@ +/** + * Options to control globbing behavior + */ +export interface HashFileOptions { + /** + * Indicates whether to follow symbolic links. Generally should set to false + * when deleting files. + * + * @default true + */ + followSymbolicLinks?: boolean; +} diff --git a/node_modules/@actions/glob/lib/internal-hash-file-options.js b/node_modules/@actions/glob/lib/internal-hash-file-options.js new file mode 100644 index 0000000..8436284 --- /dev/null +++ b/node_modules/@actions/glob/lib/internal-hash-file-options.js @@ -0,0 +1,3 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +//# sourceMappingURL=internal-hash-file-options.js.map \ No newline at end of file diff --git a/node_modules/@actions/glob/lib/internal-hash-file-options.js.map b/node_modules/@actions/glob/lib/internal-hash-file-options.js.map new file mode 100644 index 0000000..b0b0304 --- /dev/null +++ b/node_modules/@actions/glob/lib/internal-hash-file-options.js.map @@ -0,0 +1 @@ +{"version":3,"file":"internal-hash-file-options.js","sourceRoot":"","sources":["../src/internal-hash-file-options.ts"],"names":[],"mappings":""} \ No newline at end of file diff --git a/node_modules/@actions/glob/lib/internal-hash-files.d.ts b/node_modules/@actions/glob/lib/internal-hash-files.d.ts new file mode 100644 index 0000000..69bb1ba --- /dev/null +++ b/node_modules/@actions/glob/lib/internal-hash-files.d.ts @@ -0,0 +1,2 @@ +import { Globber } from './glob'; +export declare function hashFiles(globber: Globber, currentWorkspace: string, verbose?: Boolean): Promise; diff --git a/node_modules/@actions/glob/lib/internal-hash-files.js b/node_modules/@actions/glob/lib/internal-hash-files.js new file mode 100644 index 0000000..8db5306 --- /dev/null +++ b/node_modules/@actions/glob/lib/internal-hash-files.js @@ -0,0 +1,97 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__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 = (this && this.__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()); + }); +}; +var __asyncValues = (this && this.__asyncValues) || function (o) { + if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); + var m = o[Symbol.asyncIterator], i; + return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i); + function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; } + function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); } +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.hashFiles = void 0; +const crypto = __importStar(require("crypto")); +const core = __importStar(require("@actions/core")); +const fs = __importStar(require("fs")); +const stream = __importStar(require("stream")); +const util = __importStar(require("util")); +const path = __importStar(require("path")); +function hashFiles(globber, currentWorkspace, verbose = false) { + var e_1, _a; + var _b; + return __awaiter(this, void 0, void 0, function* () { + const writeDelegate = verbose ? core.info : core.debug; + let hasMatch = false; + const githubWorkspace = currentWorkspace + ? currentWorkspace + : (_b = process.env['GITHUB_WORKSPACE']) !== null && _b !== void 0 ? _b : process.cwd(); + const result = crypto.createHash('sha256'); + let count = 0; + try { + for (var _c = __asyncValues(globber.globGenerator()), _d; _d = yield _c.next(), !_d.done;) { + const file = _d.value; + writeDelegate(file); + if (!file.startsWith(`${githubWorkspace}${path.sep}`)) { + writeDelegate(`Ignore '${file}' since it is not under GITHUB_WORKSPACE.`); + continue; + } + if (fs.statSync(file).isDirectory()) { + writeDelegate(`Skip directory '${file}'.`); + continue; + } + const hash = crypto.createHash('sha256'); + const pipeline = util.promisify(stream.pipeline); + yield pipeline(fs.createReadStream(file), hash); + result.write(hash.digest()); + count++; + if (!hasMatch) { + hasMatch = true; + } + } + } + catch (e_1_1) { e_1 = { error: e_1_1 }; } + finally { + try { + if (_d && !_d.done && (_a = _c.return)) yield _a.call(_c); + } + finally { if (e_1) throw e_1.error; } + } + result.end(); + if (hasMatch) { + writeDelegate(`Found ${count} files to hash.`); + return result.digest('hex'); + } + else { + writeDelegate(`No matches found for glob`); + return ''; + } + }); +} +exports.hashFiles = hashFiles; +//# sourceMappingURL=internal-hash-files.js.map \ No newline at end of file diff --git a/node_modules/@actions/glob/lib/internal-hash-files.js.map b/node_modules/@actions/glob/lib/internal-hash-files.js.map new file mode 100644 index 0000000..662261f --- /dev/null +++ b/node_modules/@actions/glob/lib/internal-hash-files.js.map @@ -0,0 +1 @@ +{"version":3,"file":"internal-hash-files.js","sourceRoot":"","sources":["../src/internal-hash-files.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+CAAgC;AAChC,oDAAqC;AACrC,uCAAwB;AACxB,+CAAgC;AAChC,2CAA4B;AAC5B,2CAA4B;AAG5B,SAAsB,SAAS,CAC7B,OAAgB,EAChB,gBAAwB,EACxB,UAAmB,KAAK;;;;QAExB,MAAM,aAAa,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAA;QACtD,IAAI,QAAQ,GAAG,KAAK,CAAA;QACpB,MAAM,eAAe,GAAG,gBAAgB;YACtC,CAAC,CAAC,gBAAgB;YAClB,CAAC,OAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,mCAAI,OAAO,CAAC,GAAG,EAAE,CAAA;QACpD,MAAM,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAA;QAC1C,IAAI,KAAK,GAAG,CAAC,CAAA;;YACb,KAAyB,IAAA,KAAA,cAAA,OAAO,CAAC,aAAa,EAAE,CAAA,IAAA;gBAArC,MAAM,IAAI,WAAA,CAAA;gBACnB,aAAa,CAAC,IAAI,CAAC,CAAA;gBACnB,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,eAAe,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE;oBACrD,aAAa,CAAC,WAAW,IAAI,2CAA2C,CAAC,CAAA;oBACzE,SAAQ;iBACT;gBACD,IAAI,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,EAAE;oBACnC,aAAa,CAAC,mBAAmB,IAAI,IAAI,CAAC,CAAA;oBAC1C,SAAQ;iBACT;gBACD,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAA;gBACxC,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;gBAChD,MAAM,QAAQ,CAAC,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAA;gBAC/C,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAA;gBAC3B,KAAK,EAAE,CAAA;gBACP,IAAI,CAAC,QAAQ,EAAE;oBACb,QAAQ,GAAG,IAAI,CAAA;iBAChB;aACF;;;;;;;;;QACD,MAAM,CAAC,GAAG,EAAE,CAAA;QAEZ,IAAI,QAAQ,EAAE;YACZ,aAAa,CAAC,SAAS,KAAK,iBAAiB,CAAC,CAAA;YAC9C,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;SAC5B;aAAM;YACL,aAAa,CAAC,2BAA2B,CAAC,CAAA;YAC1C,OAAO,EAAE,CAAA;SACV;;CACF;AAxCD,8BAwCC"} \ No newline at end of file diff --git a/node_modules/@actions/glob/lib/internal-match-kind.d.ts b/node_modules/@actions/glob/lib/internal-match-kind.d.ts new file mode 100644 index 0000000..a7e60aa --- /dev/null +++ b/node_modules/@actions/glob/lib/internal-match-kind.d.ts @@ -0,0 +1,13 @@ +/** + * Indicates whether a pattern matches a path + */ +export declare enum MatchKind { + /** Not matched */ + None = 0, + /** Matched if the path is a directory */ + Directory = 1, + /** Matched if the path is a regular file */ + File = 2, + /** Matched */ + All = 3 +} diff --git a/node_modules/@actions/glob/lib/internal-match-kind.js b/node_modules/@actions/glob/lib/internal-match-kind.js new file mode 100644 index 0000000..37146ae --- /dev/null +++ b/node_modules/@actions/glob/lib/internal-match-kind.js @@ -0,0 +1,18 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.MatchKind = void 0; +/** + * Indicates whether a pattern matches a path + */ +var MatchKind; +(function (MatchKind) { + /** Not matched */ + MatchKind[MatchKind["None"] = 0] = "None"; + /** Matched if the path is a directory */ + MatchKind[MatchKind["Directory"] = 1] = "Directory"; + /** Matched if the path is a regular file */ + MatchKind[MatchKind["File"] = 2] = "File"; + /** Matched */ + MatchKind[MatchKind["All"] = 3] = "All"; +})(MatchKind = exports.MatchKind || (exports.MatchKind = {})); +//# sourceMappingURL=internal-match-kind.js.map \ No newline at end of file diff --git a/node_modules/@actions/glob/lib/internal-match-kind.js.map b/node_modules/@actions/glob/lib/internal-match-kind.js.map new file mode 100644 index 0000000..6fa3c9f --- /dev/null +++ b/node_modules/@actions/glob/lib/internal-match-kind.js.map @@ -0,0 +1 @@ +{"version":3,"file":"internal-match-kind.js","sourceRoot":"","sources":["../src/internal-match-kind.ts"],"names":[],"mappings":";;;AAAA;;GAEG;AACH,IAAY,SAYX;AAZD,WAAY,SAAS;IACnB,kBAAkB;IAClB,yCAAQ,CAAA;IAER,yCAAyC;IACzC,mDAAa,CAAA;IAEb,4CAA4C;IAC5C,yCAAQ,CAAA;IAER,cAAc;IACd,uCAAsB,CAAA;AACxB,CAAC,EAZW,SAAS,GAAT,iBAAS,KAAT,iBAAS,QAYpB"} \ No newline at end of file diff --git a/node_modules/@actions/glob/lib/internal-path-helper.d.ts b/node_modules/@actions/glob/lib/internal-path-helper.d.ts new file mode 100644 index 0000000..0375c36 --- /dev/null +++ b/node_modules/@actions/glob/lib/internal-path-helper.d.ts @@ -0,0 +1,42 @@ +/** + * Similar to path.dirname except normalizes the path separators and slightly better handling for Windows UNC paths. + * + * For example, on Linux/macOS: + * - `/ => /` + * - `/hello => /` + * + * For example, on Windows: + * - `C:\ => C:\` + * - `C:\hello => C:\` + * - `C: => C:` + * - `C:hello => C:` + * - `\ => \` + * - `\hello => \` + * - `\\hello => \\hello` + * - `\\hello\world => \\hello\world` + */ +export declare function dirname(p: string): string; +/** + * Roots the path if not already rooted. On Windows, relative roots like `\` + * or `C:` are expanded based on the current working directory. + */ +export declare function ensureAbsoluteRoot(root: string, itemPath: string): string; +/** + * On Linux/macOS, true if path starts with `/`. On Windows, true for paths like: + * `\\hello\share` and `C:\hello` (and using alternate separator). + */ +export declare function hasAbsoluteRoot(itemPath: string): boolean; +/** + * On Linux/macOS, true if path starts with `/`. On Windows, true for paths like: + * `\`, `\hello`, `\\hello\share`, `C:`, and `C:\hello` (and using alternate separator). + */ +export declare function hasRoot(itemPath: string): boolean; +/** + * Removes redundant slashes and converts `/` to `\` on Windows + */ +export declare function normalizeSeparators(p: string): string; +/** + * Normalizes the path separators and trims the trailing separator (when safe). + * For example, `/foo/ => /foo` but `/ => /` + */ +export declare function safeTrimTrailingSeparator(p: string): string; diff --git a/node_modules/@actions/glob/lib/internal-path-helper.js b/node_modules/@actions/glob/lib/internal-path-helper.js new file mode 100644 index 0000000..5057add --- /dev/null +++ b/node_modules/@actions/glob/lib/internal-path-helper.js @@ -0,0 +1,198 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__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 __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.safeTrimTrailingSeparator = exports.normalizeSeparators = exports.hasRoot = exports.hasAbsoluteRoot = exports.ensureAbsoluteRoot = exports.dirname = void 0; +const path = __importStar(require("path")); +const assert_1 = __importDefault(require("assert")); +const IS_WINDOWS = process.platform === 'win32'; +/** + * Similar to path.dirname except normalizes the path separators and slightly better handling for Windows UNC paths. + * + * For example, on Linux/macOS: + * - `/ => /` + * - `/hello => /` + * + * For example, on Windows: + * - `C:\ => C:\` + * - `C:\hello => C:\` + * - `C: => C:` + * - `C:hello => C:` + * - `\ => \` + * - `\hello => \` + * - `\\hello => \\hello` + * - `\\hello\world => \\hello\world` + */ +function dirname(p) { + // Normalize slashes and trim unnecessary trailing slash + p = safeTrimTrailingSeparator(p); + // Windows UNC root, e.g. \\hello or \\hello\world + if (IS_WINDOWS && /^\\\\[^\\]+(\\[^\\]+)?$/.test(p)) { + return p; + } + // Get dirname + let result = path.dirname(p); + // Trim trailing slash for Windows UNC root, e.g. \\hello\world\ + if (IS_WINDOWS && /^\\\\[^\\]+\\[^\\]+\\$/.test(result)) { + result = safeTrimTrailingSeparator(result); + } + return result; +} +exports.dirname = dirname; +/** + * Roots the path if not already rooted. On Windows, relative roots like `\` + * or `C:` are expanded based on the current working directory. + */ +function ensureAbsoluteRoot(root, itemPath) { + assert_1.default(root, `ensureAbsoluteRoot parameter 'root' must not be empty`); + assert_1.default(itemPath, `ensureAbsoluteRoot parameter 'itemPath' must not be empty`); + // Already rooted + if (hasAbsoluteRoot(itemPath)) { + return itemPath; + } + // Windows + if (IS_WINDOWS) { + // Check for itemPath like C: or C:foo + if (itemPath.match(/^[A-Z]:[^\\/]|^[A-Z]:$/i)) { + let cwd = process.cwd(); + assert_1.default(cwd.match(/^[A-Z]:\\/i), `Expected current directory to start with an absolute drive root. Actual '${cwd}'`); + // Drive letter matches cwd? Expand to cwd + if (itemPath[0].toUpperCase() === cwd[0].toUpperCase()) { + // Drive only, e.g. C: + if (itemPath.length === 2) { + // Preserve specified drive letter case (upper or lower) + return `${itemPath[0]}:\\${cwd.substr(3)}`; + } + // Drive + path, e.g. C:foo + else { + if (!cwd.endsWith('\\')) { + cwd += '\\'; + } + // Preserve specified drive letter case (upper or lower) + return `${itemPath[0]}:\\${cwd.substr(3)}${itemPath.substr(2)}`; + } + } + // Different drive + else { + return `${itemPath[0]}:\\${itemPath.substr(2)}`; + } + } + // Check for itemPath like \ or \foo + else if (normalizeSeparators(itemPath).match(/^\\$|^\\[^\\]/)) { + const cwd = process.cwd(); + assert_1.default(cwd.match(/^[A-Z]:\\/i), `Expected current directory to start with an absolute drive root. Actual '${cwd}'`); + return `${cwd[0]}:\\${itemPath.substr(1)}`; + } + } + assert_1.default(hasAbsoluteRoot(root), `ensureAbsoluteRoot parameter 'root' must have an absolute root`); + // Otherwise ensure root ends with a separator + if (root.endsWith('/') || (IS_WINDOWS && root.endsWith('\\'))) { + // Intentionally empty + } + else { + // Append separator + root += path.sep; + } + return root + itemPath; +} +exports.ensureAbsoluteRoot = ensureAbsoluteRoot; +/** + * On Linux/macOS, true if path starts with `/`. On Windows, true for paths like: + * `\\hello\share` and `C:\hello` (and using alternate separator). + */ +function hasAbsoluteRoot(itemPath) { + assert_1.default(itemPath, `hasAbsoluteRoot parameter 'itemPath' must not be empty`); + // Normalize separators + itemPath = normalizeSeparators(itemPath); + // Windows + if (IS_WINDOWS) { + // E.g. \\hello\share or C:\hello + return itemPath.startsWith('\\\\') || /^[A-Z]:\\/i.test(itemPath); + } + // E.g. /hello + return itemPath.startsWith('/'); +} +exports.hasAbsoluteRoot = hasAbsoluteRoot; +/** + * On Linux/macOS, true if path starts with `/`. On Windows, true for paths like: + * `\`, `\hello`, `\\hello\share`, `C:`, and `C:\hello` (and using alternate separator). + */ +function hasRoot(itemPath) { + assert_1.default(itemPath, `isRooted parameter 'itemPath' must not be empty`); + // Normalize separators + itemPath = normalizeSeparators(itemPath); + // Windows + if (IS_WINDOWS) { + // E.g. \ or \hello or \\hello + // E.g. C: or C:\hello + return itemPath.startsWith('\\') || /^[A-Z]:/i.test(itemPath); + } + // E.g. /hello + return itemPath.startsWith('/'); +} +exports.hasRoot = hasRoot; +/** + * Removes redundant slashes and converts `/` to `\` on Windows + */ +function normalizeSeparators(p) { + p = p || ''; + // Windows + if (IS_WINDOWS) { + // Convert slashes on Windows + p = p.replace(/\//g, '\\'); + // Remove redundant slashes + const isUnc = /^\\\\+[^\\]/.test(p); // e.g. \\hello + return (isUnc ? '\\' : '') + p.replace(/\\\\+/g, '\\'); // preserve leading \\ for UNC + } + // Remove redundant slashes + return p.replace(/\/\/+/g, '/'); +} +exports.normalizeSeparators = normalizeSeparators; +/** + * Normalizes the path separators and trims the trailing separator (when safe). + * For example, `/foo/ => /foo` but `/ => /` + */ +function safeTrimTrailingSeparator(p) { + // Short-circuit if empty + if (!p) { + return ''; + } + // Normalize separators + p = normalizeSeparators(p); + // No trailing slash + if (!p.endsWith(path.sep)) { + return p; + } + // Check '/' on Linux/macOS and '\' on Windows + if (p === path.sep) { + return p; + } + // On Windows check if drive root. E.g. C:\ + if (IS_WINDOWS && /^[A-Z]:\\$/i.test(p)) { + return p; + } + // Otherwise trim trailing slash + return p.substr(0, p.length - 1); +} +exports.safeTrimTrailingSeparator = safeTrimTrailingSeparator; +//# sourceMappingURL=internal-path-helper.js.map \ No newline at end of file diff --git a/node_modules/@actions/glob/lib/internal-path-helper.js.map b/node_modules/@actions/glob/lib/internal-path-helper.js.map new file mode 100644 index 0000000..1dc7ef9 --- /dev/null +++ b/node_modules/@actions/glob/lib/internal-path-helper.js.map @@ -0,0 +1 @@ +{"version":3,"file":"internal-path-helper.js","sourceRoot":"","sources":["../src/internal-path-helper.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@actions/glob/lib/internal-path.d.ts b/node_modules/@actions/glob/lib/internal-path.d.ts new file mode 100644 index 0000000..5e0a264 --- /dev/null +++ b/node_modules/@actions/glob/lib/internal-path.d.ts @@ -0,0 +1,15 @@ +/** + * Helper class for parsing paths into segments + */ +export declare class Path { + segments: string[]; + /** + * Constructs a Path + * @param itemPath Path or array of segments + */ + constructor(itemPath: string | string[]); + /** + * Converts the path to it's string representation + */ + toString(): string; +} diff --git a/node_modules/@actions/glob/lib/internal-path.js b/node_modules/@actions/glob/lib/internal-path.js new file mode 100644 index 0000000..88a8715 --- /dev/null +++ b/node_modules/@actions/glob/lib/internal-path.js @@ -0,0 +1,113 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__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 __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.Path = void 0; +const path = __importStar(require("path")); +const pathHelper = __importStar(require("./internal-path-helper")); +const assert_1 = __importDefault(require("assert")); +const IS_WINDOWS = process.platform === 'win32'; +/** + * Helper class for parsing paths into segments + */ +class Path { + /** + * Constructs a Path + * @param itemPath Path or array of segments + */ + constructor(itemPath) { + this.segments = []; + // String + if (typeof itemPath === 'string') { + assert_1.default(itemPath, `Parameter 'itemPath' must not be empty`); + // Normalize slashes and trim unnecessary trailing slash + itemPath = pathHelper.safeTrimTrailingSeparator(itemPath); + // Not rooted + if (!pathHelper.hasRoot(itemPath)) { + this.segments = itemPath.split(path.sep); + } + // Rooted + else { + // Add all segments, while not at the root + let remaining = itemPath; + let dir = pathHelper.dirname(remaining); + while (dir !== remaining) { + // Add the segment + const basename = path.basename(remaining); + this.segments.unshift(basename); + // Truncate the last segment + remaining = dir; + dir = pathHelper.dirname(remaining); + } + // Remainder is the root + this.segments.unshift(remaining); + } + } + // Array + else { + // Must not be empty + assert_1.default(itemPath.length > 0, `Parameter 'itemPath' must not be an empty array`); + // Each segment + for (let i = 0; i < itemPath.length; i++) { + let segment = itemPath[i]; + // Must not be empty + assert_1.default(segment, `Parameter 'itemPath' must not contain any empty segments`); + // Normalize slashes + segment = pathHelper.normalizeSeparators(itemPath[i]); + // Root segment + if (i === 0 && pathHelper.hasRoot(segment)) { + segment = pathHelper.safeTrimTrailingSeparator(segment); + assert_1.default(segment === pathHelper.dirname(segment), `Parameter 'itemPath' root segment contains information for multiple segments`); + this.segments.push(segment); + } + // All other segments + else { + // Must not contain slash + assert_1.default(!segment.includes(path.sep), `Parameter 'itemPath' contains unexpected path separators`); + this.segments.push(segment); + } + } + } + } + /** + * Converts the path to it's string representation + */ + toString() { + // First segment + let result = this.segments[0]; + // All others + let skipSlash = result.endsWith(path.sep) || (IS_WINDOWS && /^[A-Z]:$/i.test(result)); + for (let i = 1; i < this.segments.length; i++) { + if (skipSlash) { + skipSlash = false; + } + else { + result += path.sep; + } + result += this.segments[i]; + } + return result; + } +} +exports.Path = Path; +//# sourceMappingURL=internal-path.js.map \ No newline at end of file diff --git a/node_modules/@actions/glob/lib/internal-path.js.map b/node_modules/@actions/glob/lib/internal-path.js.map new file mode 100644 index 0000000..8e8eeb5 --- /dev/null +++ b/node_modules/@actions/glob/lib/internal-path.js.map @@ -0,0 +1 @@ +{"version":3,"file":"internal-path.js","sourceRoot":"","sources":["../src/internal-path.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@actions/glob/lib/internal-pattern-helper.d.ts b/node_modules/@actions/glob/lib/internal-pattern-helper.d.ts new file mode 100644 index 0000000..c5dcc07 --- /dev/null +++ b/node_modules/@actions/glob/lib/internal-pattern-helper.d.ts @@ -0,0 +1,15 @@ +import { MatchKind } from './internal-match-kind'; +import { Pattern } from './internal-pattern'; +/** + * Given an array of patterns, returns an array of paths to search. + * Duplicates and paths under other included paths are filtered out. + */ +export declare function getSearchPaths(patterns: Pattern[]): string[]; +/** + * Matches the patterns against the path + */ +export declare function match(patterns: Pattern[], itemPath: string): MatchKind; +/** + * Checks whether to descend further into the directory + */ +export declare function partialMatch(patterns: Pattern[], itemPath: string): boolean; diff --git a/node_modules/@actions/glob/lib/internal-pattern-helper.js b/node_modules/@actions/glob/lib/internal-pattern-helper.js new file mode 100644 index 0000000..a7a0440 --- /dev/null +++ b/node_modules/@actions/glob/lib/internal-pattern-helper.js @@ -0,0 +1,94 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__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(exports, "__esModule", { value: true }); +exports.partialMatch = exports.match = exports.getSearchPaths = void 0; +const pathHelper = __importStar(require("./internal-path-helper")); +const internal_match_kind_1 = require("./internal-match-kind"); +const IS_WINDOWS = process.platform === 'win32'; +/** + * Given an array of patterns, returns an array of paths to search. + * Duplicates and paths under other included paths are filtered out. + */ +function getSearchPaths(patterns) { + // Ignore negate patterns + patterns = patterns.filter(x => !x.negate); + // Create a map of all search paths + const searchPathMap = {}; + for (const pattern of patterns) { + const key = IS_WINDOWS + ? pattern.searchPath.toUpperCase() + : pattern.searchPath; + searchPathMap[key] = 'candidate'; + } + const result = []; + for (const pattern of patterns) { + // Check if already included + const key = IS_WINDOWS + ? pattern.searchPath.toUpperCase() + : pattern.searchPath; + if (searchPathMap[key] === 'included') { + continue; + } + // Check for an ancestor search path + let foundAncestor = false; + let tempKey = key; + let parent = pathHelper.dirname(tempKey); + while (parent !== tempKey) { + if (searchPathMap[parent]) { + foundAncestor = true; + break; + } + tempKey = parent; + parent = pathHelper.dirname(tempKey); + } + // Include the search pattern in the result + if (!foundAncestor) { + result.push(pattern.searchPath); + searchPathMap[key] = 'included'; + } + } + return result; +} +exports.getSearchPaths = getSearchPaths; +/** + * Matches the patterns against the path + */ +function match(patterns, itemPath) { + let result = internal_match_kind_1.MatchKind.None; + for (const pattern of patterns) { + if (pattern.negate) { + result &= ~pattern.match(itemPath); + } + else { + result |= pattern.match(itemPath); + } + } + return result; +} +exports.match = match; +/** + * Checks whether to descend further into the directory + */ +function partialMatch(patterns, itemPath) { + return patterns.some(x => !x.negate && x.partialMatch(itemPath)); +} +exports.partialMatch = partialMatch; +//# sourceMappingURL=internal-pattern-helper.js.map \ No newline at end of file diff --git a/node_modules/@actions/glob/lib/internal-pattern-helper.js.map b/node_modules/@actions/glob/lib/internal-pattern-helper.js.map new file mode 100644 index 0000000..ae37285 --- /dev/null +++ b/node_modules/@actions/glob/lib/internal-pattern-helper.js.map @@ -0,0 +1 @@ +{"version":3,"file":"internal-pattern-helper.js","sourceRoot":"","sources":["../src/internal-pattern-helper.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA,mEAAoD;AACpD,+DAA+C;AAG/C,MAAM,UAAU,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAA;AAE/C;;;GAGG;AACH,SAAgB,cAAc,CAAC,QAAmB;IAChD,yBAAyB;IACzB,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAA;IAE1C,mCAAmC;IACnC,MAAM,aAAa,GAA4B,EAAE,CAAA;IACjD,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE;QAC9B,MAAM,GAAG,GAAG,UAAU;YACpB,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,WAAW,EAAE;YAClC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAA;QACtB,aAAa,CAAC,GAAG,CAAC,GAAG,WAAW,CAAA;KACjC;IAED,MAAM,MAAM,GAAa,EAAE,CAAA;IAE3B,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE;QAC9B,4BAA4B;QAC5B,MAAM,GAAG,GAAG,UAAU;YACpB,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,WAAW,EAAE;YAClC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAA;QACtB,IAAI,aAAa,CAAC,GAAG,CAAC,KAAK,UAAU,EAAE;YACrC,SAAQ;SACT;QAED,oCAAoC;QACpC,IAAI,aAAa,GAAG,KAAK,CAAA;QACzB,IAAI,OAAO,GAAG,GAAG,CAAA;QACjB,IAAI,MAAM,GAAG,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;QACxC,OAAO,MAAM,KAAK,OAAO,EAAE;YACzB,IAAI,aAAa,CAAC,MAAM,CAAC,EAAE;gBACzB,aAAa,GAAG,IAAI,CAAA;gBACpB,MAAK;aACN;YAED,OAAO,GAAG,MAAM,CAAA;YAChB,MAAM,GAAG,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;SACrC;QAED,2CAA2C;QAC3C,IAAI,CAAC,aAAa,EAAE;YAClB,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAA;YAC/B,aAAa,CAAC,GAAG,CAAC,GAAG,UAAU,CAAA;SAChC;KACF;IAED,OAAO,MAAM,CAAA;AACf,CAAC;AA9CD,wCA8CC;AAED;;GAEG;AACH,SAAgB,KAAK,CAAC,QAAmB,EAAE,QAAgB;IACzD,IAAI,MAAM,GAAc,+BAAS,CAAC,IAAI,CAAA;IAEtC,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE;QAC9B,IAAI,OAAO,CAAC,MAAM,EAAE;YAClB,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;SACnC;aAAM;YACL,MAAM,IAAI,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;SAClC;KACF;IAED,OAAO,MAAM,CAAA;AACf,CAAC;AAZD,sBAYC;AAED;;GAEG;AACH,SAAgB,YAAY,CAAC,QAAmB,EAAE,QAAgB;IAChE,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAA;AAClE,CAAC;AAFD,oCAEC"} \ No newline at end of file diff --git a/node_modules/@actions/glob/lib/internal-pattern.d.ts b/node_modules/@actions/glob/lib/internal-pattern.d.ts new file mode 100644 index 0000000..2c2224c --- /dev/null +++ b/node_modules/@actions/glob/lib/internal-pattern.d.ts @@ -0,0 +1,64 @@ +import { MatchKind } from './internal-match-kind'; +export declare class Pattern { + /** + * Indicates whether matches should be excluded from the result set + */ + readonly negate: boolean; + /** + * The directory to search. The literal path prior to the first glob segment. + */ + readonly searchPath: string; + /** + * The path/pattern segments. Note, only the first segment (the root directory) + * may contain a directory separator character. Use the trailingSeparator field + * to determine whether the pattern ended with a trailing slash. + */ + readonly segments: string[]; + /** + * Indicates the pattern should only match directories, not regular files. + */ + readonly trailingSeparator: boolean; + /** + * The Minimatch object used for matching + */ + private readonly minimatch; + /** + * Used to workaround a limitation with Minimatch when determining a partial + * match and the path is a root directory. For example, when the pattern is + * `/foo/**` or `C:\foo\**` and the path is `/` or `C:\`. + */ + private readonly rootRegExp; + /** + * Indicates that the pattern is implicitly added as opposed to user specified. + */ + private readonly isImplicitPattern; + constructor(pattern: string); + constructor(pattern: string, isImplicitPattern: boolean, segments: undefined, homedir: string); + constructor(negate: boolean, isImplicitPattern: boolean, segments: string[], homedir?: string); + /** + * Matches the pattern against the specified path + */ + match(itemPath: string): MatchKind; + /** + * Indicates whether the pattern may match descendants of the specified path + */ + partialMatch(itemPath: string): boolean; + /** + * Escapes glob patterns within a path + */ + static globEscape(s: string): string; + /** + * Normalizes slashes and ensures absolute root + */ + private static fixupPattern; + /** + * Attempts to unescape a pattern segment to create a literal path segment. + * Otherwise returns empty string. + */ + private static getLiteral; + /** + * Escapes regexp special characters + * https://javascript.info/regexp-escaping + */ + private static regExpEscape; +} diff --git a/node_modules/@actions/glob/lib/internal-pattern.js b/node_modules/@actions/glob/lib/internal-pattern.js new file mode 100644 index 0000000..a17ffe9 --- /dev/null +++ b/node_modules/@actions/glob/lib/internal-pattern.js @@ -0,0 +1,255 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__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 __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.Pattern = void 0; +const os = __importStar(require("os")); +const path = __importStar(require("path")); +const pathHelper = __importStar(require("./internal-path-helper")); +const assert_1 = __importDefault(require("assert")); +const minimatch_1 = require("minimatch"); +const internal_match_kind_1 = require("./internal-match-kind"); +const internal_path_1 = require("./internal-path"); +const IS_WINDOWS = process.platform === 'win32'; +class Pattern { + constructor(patternOrNegate, isImplicitPattern = false, segments, homedir) { + /** + * Indicates whether matches should be excluded from the result set + */ + this.negate = false; + // Pattern overload + let pattern; + if (typeof patternOrNegate === 'string') { + pattern = patternOrNegate.trim(); + } + // Segments overload + else { + // Convert to pattern + segments = segments || []; + assert_1.default(segments.length, `Parameter 'segments' must not empty`); + const root = Pattern.getLiteral(segments[0]); + assert_1.default(root && pathHelper.hasAbsoluteRoot(root), `Parameter 'segments' first element must be a root path`); + pattern = new internal_path_1.Path(segments).toString().trim(); + if (patternOrNegate) { + pattern = `!${pattern}`; + } + } + // Negate + while (pattern.startsWith('!')) { + this.negate = !this.negate; + pattern = pattern.substr(1).trim(); + } + // Normalize slashes and ensures absolute root + pattern = Pattern.fixupPattern(pattern, homedir); + // Segments + this.segments = new internal_path_1.Path(pattern).segments; + // Trailing slash indicates the pattern should only match directories, not regular files + this.trailingSeparator = pathHelper + .normalizeSeparators(pattern) + .endsWith(path.sep); + pattern = pathHelper.safeTrimTrailingSeparator(pattern); + // Search path (literal path prior to the first glob segment) + let foundGlob = false; + const searchSegments = this.segments + .map(x => Pattern.getLiteral(x)) + .filter(x => !foundGlob && !(foundGlob = x === '')); + this.searchPath = new internal_path_1.Path(searchSegments).toString(); + // Root RegExp (required when determining partial match) + this.rootRegExp = new RegExp(Pattern.regExpEscape(searchSegments[0]), IS_WINDOWS ? 'i' : ''); + this.isImplicitPattern = isImplicitPattern; + // Create minimatch + const minimatchOptions = { + dot: true, + nobrace: true, + nocase: IS_WINDOWS, + nocomment: true, + noext: true, + nonegate: true + }; + pattern = IS_WINDOWS ? pattern.replace(/\\/g, '/') : pattern; + this.minimatch = new minimatch_1.Minimatch(pattern, minimatchOptions); + } + /** + * Matches the pattern against the specified path + */ + match(itemPath) { + // Last segment is globstar? + if (this.segments[this.segments.length - 1] === '**') { + // Normalize slashes + itemPath = pathHelper.normalizeSeparators(itemPath); + // Append a trailing slash. Otherwise Minimatch will not match the directory immediately + // preceding the globstar. For example, given the pattern `/foo/**`, Minimatch returns + // false for `/foo` but returns true for `/foo/`. Append a trailing slash to handle that quirk. + if (!itemPath.endsWith(path.sep) && this.isImplicitPattern === false) { + // Note, this is safe because the constructor ensures the pattern has an absolute root. + // For example, formats like C: and C:foo on Windows are resolved to an absolute root. + itemPath = `${itemPath}${path.sep}`; + } + } + else { + // Normalize slashes and trim unnecessary trailing slash + itemPath = pathHelper.safeTrimTrailingSeparator(itemPath); + } + // Match + if (this.minimatch.match(itemPath)) { + return this.trailingSeparator ? internal_match_kind_1.MatchKind.Directory : internal_match_kind_1.MatchKind.All; + } + return internal_match_kind_1.MatchKind.None; + } + /** + * Indicates whether the pattern may match descendants of the specified path + */ + partialMatch(itemPath) { + // Normalize slashes and trim unnecessary trailing slash + itemPath = pathHelper.safeTrimTrailingSeparator(itemPath); + // matchOne does not handle root path correctly + if (pathHelper.dirname(itemPath) === itemPath) { + return this.rootRegExp.test(itemPath); + } + return this.minimatch.matchOne(itemPath.split(IS_WINDOWS ? /\\+/ : /\/+/), this.minimatch.set[0], true); + } + /** + * Escapes glob patterns within a path + */ + static globEscape(s) { + return (IS_WINDOWS ? s : s.replace(/\\/g, '\\\\')) // escape '\' on Linux/macOS + .replace(/(\[)(?=[^/]+\])/g, '[[]') // escape '[' when ']' follows within the path segment + .replace(/\?/g, '[?]') // escape '?' + .replace(/\*/g, '[*]'); // escape '*' + } + /** + * Normalizes slashes and ensures absolute root + */ + static fixupPattern(pattern, homedir) { + // Empty + assert_1.default(pattern, 'pattern cannot be empty'); + // Must not contain `.` segment, unless first segment + // Must not contain `..` segment + const literalSegments = new internal_path_1.Path(pattern).segments.map(x => Pattern.getLiteral(x)); + assert_1.default(literalSegments.every((x, i) => (x !== '.' || i === 0) && x !== '..'), `Invalid pattern '${pattern}'. Relative pathing '.' and '..' is not allowed.`); + // Must not contain globs in root, e.g. Windows UNC path \\foo\b*r + assert_1.default(!pathHelper.hasRoot(pattern) || literalSegments[0], `Invalid pattern '${pattern}'. Root segment must not contain globs.`); + // Normalize slashes + pattern = pathHelper.normalizeSeparators(pattern); + // Replace leading `.` segment + if (pattern === '.' || pattern.startsWith(`.${path.sep}`)) { + pattern = Pattern.globEscape(process.cwd()) + pattern.substr(1); + } + // Replace leading `~` segment + else if (pattern === '~' || pattern.startsWith(`~${path.sep}`)) { + homedir = homedir || os.homedir(); + assert_1.default(homedir, 'Unable to determine HOME directory'); + assert_1.default(pathHelper.hasAbsoluteRoot(homedir), `Expected HOME directory to be a rooted path. Actual '${homedir}'`); + pattern = Pattern.globEscape(homedir) + pattern.substr(1); + } + // Replace relative drive root, e.g. pattern is C: or C:foo + else if (IS_WINDOWS && + (pattern.match(/^[A-Z]:$/i) || pattern.match(/^[A-Z]:[^\\]/i))) { + let root = pathHelper.ensureAbsoluteRoot('C:\\dummy-root', pattern.substr(0, 2)); + if (pattern.length > 2 && !root.endsWith('\\')) { + root += '\\'; + } + pattern = Pattern.globEscape(root) + pattern.substr(2); + } + // Replace relative root, e.g. pattern is \ or \foo + else if (IS_WINDOWS && (pattern === '\\' || pattern.match(/^\\[^\\]/))) { + let root = pathHelper.ensureAbsoluteRoot('C:\\dummy-root', '\\'); + if (!root.endsWith('\\')) { + root += '\\'; + } + pattern = Pattern.globEscape(root) + pattern.substr(1); + } + // Otherwise ensure absolute root + else { + pattern = pathHelper.ensureAbsoluteRoot(Pattern.globEscape(process.cwd()), pattern); + } + return pathHelper.normalizeSeparators(pattern); + } + /** + * Attempts to unescape a pattern segment to create a literal path segment. + * Otherwise returns empty string. + */ + static getLiteral(segment) { + let literal = ''; + for (let i = 0; i < segment.length; i++) { + const c = segment[i]; + // Escape + if (c === '\\' && !IS_WINDOWS && i + 1 < segment.length) { + literal += segment[++i]; + continue; + } + // Wildcard + else if (c === '*' || c === '?') { + return ''; + } + // Character set + else if (c === '[' && i + 1 < segment.length) { + let set = ''; + let closed = -1; + for (let i2 = i + 1; i2 < segment.length; i2++) { + const c2 = segment[i2]; + // Escape + if (c2 === '\\' && !IS_WINDOWS && i2 + 1 < segment.length) { + set += segment[++i2]; + continue; + } + // Closed + else if (c2 === ']') { + closed = i2; + break; + } + // Otherwise + else { + set += c2; + } + } + // Closed? + if (closed >= 0) { + // Cannot convert + if (set.length > 1) { + return ''; + } + // Convert to literal + if (set) { + literal += set; + i = closed; + continue; + } + } + // Otherwise fall thru + } + // Append + literal += c; + } + return literal; + } + /** + * Escapes regexp special characters + * https://javascript.info/regexp-escaping + */ + static regExpEscape(s) { + return s.replace(/[[\\^$.|?*+()]/g, '\\$&'); + } +} +exports.Pattern = Pattern; +//# sourceMappingURL=internal-pattern.js.map \ No newline at end of file diff --git a/node_modules/@actions/glob/lib/internal-pattern.js.map b/node_modules/@actions/glob/lib/internal-pattern.js.map new file mode 100644 index 0000000..08e172d --- /dev/null +++ b/node_modules/@actions/glob/lib/internal-pattern.js.map @@ -0,0 +1 @@ +{"version":3,"file":"internal-pattern.js","sourceRoot":"","sources":["../src/internal-pattern.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA,uCAAwB;AACxB,2CAA4B;AAC5B,mEAAoD;AACpD,oDAA2B;AAC3B,yCAA8E;AAC9E,+DAA+C;AAC/C,mDAAoC;AAEpC,MAAM,UAAU,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAA;AAE/C,MAAa,OAAO;IAqDlB,YACE,eAAiC,EACjC,iBAAiB,GAAG,KAAK,EACzB,QAAmB,EACnB,OAAgB;QAxDlB;;WAEG;QACM,WAAM,GAAY,KAAK,CAAA;QAuD9B,mBAAmB;QACnB,IAAI,OAAe,CAAA;QACnB,IAAI,OAAO,eAAe,KAAK,QAAQ,EAAE;YACvC,OAAO,GAAG,eAAe,CAAC,IAAI,EAAE,CAAA;SACjC;QACD,oBAAoB;aACf;YACH,qBAAqB;YACrB,QAAQ,GAAG,QAAQ,IAAI,EAAE,CAAA;YACzB,gBAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,qCAAqC,CAAC,CAAA;YAC9D,MAAM,IAAI,GAAG,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAA;YAC5C,gBAAM,CACJ,IAAI,IAAI,UAAU,CAAC,eAAe,CAAC,IAAI,CAAC,EACxC,wDAAwD,CACzD,CAAA;YACD,OAAO,GAAG,IAAI,oBAAI,CAAC,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAA;YAC9C,IAAI,eAAe,EAAE;gBACnB,OAAO,GAAG,IAAI,OAAO,EAAE,CAAA;aACxB;SACF;QAED,SAAS;QACT,OAAO,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;YAC9B,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,CAAA;YAC1B,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAA;SACnC;QAED,8CAA8C;QAC9C,OAAO,GAAG,OAAO,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;QAEhD,WAAW;QACX,IAAI,CAAC,QAAQ,GAAG,IAAI,oBAAI,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAA;QAE1C,wFAAwF;QACxF,IAAI,CAAC,iBAAiB,GAAG,UAAU;aAChC,mBAAmB,CAAC,OAAO,CAAC;aAC5B,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QACrB,OAAO,GAAG,UAAU,CAAC,yBAAyB,CAAC,OAAO,CAAC,CAAA;QAEvD,6DAA6D;QAC7D,IAAI,SAAS,GAAG,KAAK,CAAA;QACrB,MAAM,cAAc,GAAG,IAAI,CAAC,QAAQ;aACjC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;aAC/B,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,SAAS,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAA;QACrD,IAAI,CAAC,UAAU,GAAG,IAAI,oBAAI,CAAC,cAAc,CAAC,CAAC,QAAQ,EAAE,CAAA;QAErD,wDAAwD;QACxD,IAAI,CAAC,UAAU,GAAG,IAAI,MAAM,CAC1B,OAAO,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,EACvC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CACtB,CAAA;QAED,IAAI,CAAC,iBAAiB,GAAG,iBAAiB,CAAA;QAE1C,mBAAmB;QACnB,MAAM,gBAAgB,GAAsB;YAC1C,GAAG,EAAE,IAAI;YACT,OAAO,EAAE,IAAI;YACb,MAAM,EAAE,UAAU;YAClB,SAAS,EAAE,IAAI;YACf,KAAK,EAAE,IAAI;YACX,QAAQ,EAAE,IAAI;SACf,CAAA;QACD,OAAO,GAAG,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAA;QAC5D,IAAI,CAAC,SAAS,GAAG,IAAI,qBAAS,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAA;IAC3D,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,QAAgB;QACpB,4BAA4B;QAC5B,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,IAAI,EAAE;YACpD,oBAAoB;YACpB,QAAQ,GAAG,UAAU,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAA;YAEnD,wFAAwF;YACxF,sFAAsF;YACtF,+FAA+F;YAC/F,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,iBAAiB,KAAK,KAAK,EAAE;gBACpE,uFAAuF;gBACvF,sFAAsF;gBACtF,QAAQ,GAAG,GAAG,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;aACpC;SACF;aAAM;YACL,wDAAwD;YACxD,QAAQ,GAAG,UAAU,CAAC,yBAAyB,CAAC,QAAQ,CAAC,CAAA;SAC1D;QAED,QAAQ;QACR,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE;YAClC,OAAO,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,+BAAS,CAAC,SAAS,CAAC,CAAC,CAAC,+BAAS,CAAC,GAAG,CAAA;SACpE;QAED,OAAO,+BAAS,CAAC,IAAI,CAAA;IACvB,CAAC;IAED;;OAEG;IACH,YAAY,CAAC,QAAgB;QAC3B,wDAAwD;QACxD,QAAQ,GAAG,UAAU,CAAC,yBAAyB,CAAC,QAAQ,CAAC,CAAA;QAEzD,+CAA+C;QAC/C,IAAI,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,QAAQ,EAAE;YAC7C,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;SACtC;QAED,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,CAC5B,QAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,EAC1C,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EACrB,IAAI,CACL,CAAA;IACH,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,UAAU,CAAC,CAAS;QACzB,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,4BAA4B;aAC5E,OAAO,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC,sDAAsD;aACzF,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,aAAa;aACnC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA,CAAC,aAAa;IACxC,CAAC;IAED;;OAEG;IACK,MAAM,CAAC,YAAY,CAAC,OAAe,EAAE,OAAgB;QAC3D,QAAQ;QACR,gBAAM,CAAC,OAAO,EAAE,yBAAyB,CAAC,CAAA;QAE1C,qDAAqD;QACrD,gCAAgC;QAChC,MAAM,eAAe,GAAG,IAAI,oBAAI,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CACzD,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CACtB,CAAA;QACD,gBAAM,CACJ,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,EACrE,oBAAoB,OAAO,kDAAkD,CAC9E,CAAA;QAED,kEAAkE;QAClE,gBAAM,CACJ,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,eAAe,CAAC,CAAC,CAAC,EAClD,oBAAoB,OAAO,yCAAyC,CACrE,CAAA;QAED,oBAAoB;QACpB,OAAO,GAAG,UAAU,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAA;QAEjD,8BAA8B;QAC9B,IAAI,OAAO,KAAK,GAAG,IAAI,OAAO,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE;YACzD,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;SAChE;QACD,8BAA8B;aACzB,IAAI,OAAO,KAAK,GAAG,IAAI,OAAO,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE;YAC9D,OAAO,GAAG,OAAO,IAAI,EAAE,CAAC,OAAO,EAAE,CAAA;YACjC,gBAAM,CAAC,OAAO,EAAE,oCAAoC,CAAC,CAAA;YACrD,gBAAM,CACJ,UAAU,CAAC,eAAe,CAAC,OAAO,CAAC,EACnC,wDAAwD,OAAO,GAAG,CACnE,CAAA;YACD,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;SAC1D;QACD,2DAA2D;aACtD,IACH,UAAU;YACV,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,EAC9D;YACA,IAAI,IAAI,GAAG,UAAU,CAAC,kBAAkB,CACtC,gBAAgB,EAChB,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CACrB,CAAA;YACD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;gBAC9C,IAAI,IAAI,IAAI,CAAA;aACb;YACD,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;SACvD;QACD,mDAAmD;aAC9C,IAAI,UAAU,IAAI,CAAC,OAAO,KAAK,IAAI,IAAI,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,EAAE;YACtE,IAAI,IAAI,GAAG,UAAU,CAAC,kBAAkB,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAA;YAChE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;gBACxB,IAAI,IAAI,IAAI,CAAA;aACb;YACD,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;SACvD;QACD,iCAAiC;aAC5B;YACH,OAAO,GAAG,UAAU,CAAC,kBAAkB,CACrC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,EACjC,OAAO,CACR,CAAA;SACF;QAED,OAAO,UAAU,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAA;IAChD,CAAC;IAED;;;OAGG;IACK,MAAM,CAAC,UAAU,CAAC,OAAe;QACvC,IAAI,OAAO,GAAG,EAAE,CAAA;QAChB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACvC,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;YACpB,SAAS;YACT,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,UAAU,IAAI,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE;gBACvD,OAAO,IAAI,OAAO,CAAC,EAAE,CAAC,CAAC,CAAA;gBACvB,SAAQ;aACT;YACD,WAAW;iBACN,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,EAAE;gBAC/B,OAAO,EAAE,CAAA;aACV;YACD,gBAAgB;iBACX,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE;gBAC5C,IAAI,GAAG,GAAG,EAAE,CAAA;gBACZ,IAAI,MAAM,GAAG,CAAC,CAAC,CAAA;gBACf,KAAK,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE;oBAC9C,MAAM,EAAE,GAAG,OAAO,CAAC,EAAE,CAAC,CAAA;oBACtB,SAAS;oBACT,IAAI,EAAE,KAAK,IAAI,IAAI,CAAC,UAAU,IAAI,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE;wBACzD,GAAG,IAAI,OAAO,CAAC,EAAE,EAAE,CAAC,CAAA;wBACpB,SAAQ;qBACT;oBACD,SAAS;yBACJ,IAAI,EAAE,KAAK,GAAG,EAAE;wBACnB,MAAM,GAAG,EAAE,CAAA;wBACX,MAAK;qBACN;oBACD,YAAY;yBACP;wBACH,GAAG,IAAI,EAAE,CAAA;qBACV;iBACF;gBAED,UAAU;gBACV,IAAI,MAAM,IAAI,CAAC,EAAE;oBACf,iBAAiB;oBACjB,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE;wBAClB,OAAO,EAAE,CAAA;qBACV;oBAED,qBAAqB;oBACrB,IAAI,GAAG,EAAE;wBACP,OAAO,IAAI,GAAG,CAAA;wBACd,CAAC,GAAG,MAAM,CAAA;wBACV,SAAQ;qBACT;iBACF;gBAED,sBAAsB;aACvB;YAED,SAAS;YACT,OAAO,IAAI,CAAC,CAAA;SACb;QAED,OAAO,OAAO,CAAA;IAChB,CAAC;IAED;;;OAGG;IACK,MAAM,CAAC,YAAY,CAAC,CAAS;QACnC,OAAO,CAAC,CAAC,OAAO,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAA;IAC7C,CAAC;CACF;AAzUD,0BAyUC"} \ No newline at end of file diff --git a/node_modules/@actions/glob/lib/internal-search-state.d.ts b/node_modules/@actions/glob/lib/internal-search-state.d.ts new file mode 100644 index 0000000..aac344e --- /dev/null +++ b/node_modules/@actions/glob/lib/internal-search-state.d.ts @@ -0,0 +1,5 @@ +export declare class SearchState { + readonly path: string; + readonly level: number; + constructor(path: string, level: number); +} diff --git a/node_modules/@actions/glob/lib/internal-search-state.js b/node_modules/@actions/glob/lib/internal-search-state.js new file mode 100644 index 0000000..5d266ce --- /dev/null +++ b/node_modules/@actions/glob/lib/internal-search-state.js @@ -0,0 +1,11 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.SearchState = void 0; +class SearchState { + constructor(path, level) { + this.path = path; + this.level = level; + } +} +exports.SearchState = SearchState; +//# sourceMappingURL=internal-search-state.js.map \ No newline at end of file diff --git a/node_modules/@actions/glob/lib/internal-search-state.js.map b/node_modules/@actions/glob/lib/internal-search-state.js.map new file mode 100644 index 0000000..4421012 --- /dev/null +++ b/node_modules/@actions/glob/lib/internal-search-state.js.map @@ -0,0 +1 @@ +{"version":3,"file":"internal-search-state.js","sourceRoot":"","sources":["../src/internal-search-state.ts"],"names":[],"mappings":";;;AAAA,MAAa,WAAW;IAItB,YAAY,IAAY,EAAE,KAAa;QACrC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;QAChB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;IACpB,CAAC;CACF;AARD,kCAQC"} \ No newline at end of file diff --git a/node_modules/@actions/glob/package.json b/node_modules/@actions/glob/package.json new file mode 100644 index 0000000..62e6bd2 --- /dev/null +++ b/node_modules/@actions/glob/package.json @@ -0,0 +1,43 @@ +{ + "name": "@actions/glob", + "version": "0.4.0", + "preview": true, + "description": "Actions glob lib", + "keywords": [ + "github", + "actions", + "glob" + ], + "homepage": "https://github.com/actions/toolkit/tree/main/packages/glob", + "license": "MIT", + "main": "lib/glob.js", + "types": "lib/glob.d.ts", + "directories": { + "lib": "lib", + "test": "__tests__" + }, + "files": [ + "lib", + "!.DS_Store" + ], + "publishConfig": { + "access": "public" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/actions/toolkit.git", + "directory": "packages/glob" + }, + "scripts": { + "audit-moderate": "npm install && npm audit --json --audit-level=moderate > audit.json", + "test": "echo \"Error: run tests from root\" && exit 1", + "tsc": "tsc" + }, + "bugs": { + "url": "https://github.com/actions/toolkit/issues" + }, + "dependencies": { + "@actions/core": "^1.9.1", + "minimatch": "^3.0.4" + } +} diff --git a/node_modules/@actions/http-client/LICENSE b/node_modules/@actions/http-client/LICENSE new file mode 100644 index 0000000..5823a51 --- /dev/null +++ b/node_modules/@actions/http-client/LICENSE @@ -0,0 +1,21 @@ +Actions Http Client for Node.js + +Copyright (c) GitHub, Inc. + +All rights reserved. + +MIT License + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and +associated documentation files (the "Software"), to deal in the Software without restriction, +including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, +and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT +LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/@actions/http-client/README.md b/node_modules/@actions/http-client/README.md new file mode 100644 index 0000000..7e06ade --- /dev/null +++ b/node_modules/@actions/http-client/README.md @@ -0,0 +1,73 @@ +# `@actions/http-client` + +A lightweight HTTP client optimized for building actions. + +## Features + + - HTTP client with TypeScript generics and async/await/Promises + - Typings included! + - [Proxy support](https://help.github.com/en/actions/automating-your-workflow-with-github-actions/about-self-hosted-runners#using-a-proxy-server-with-self-hosted-runners) just works with actions and the runner + - Targets ES2019 (runner runs actions with node 12+). Only supported on node 12+. + - Basic, Bearer and PAT Support out of the box. Extensible handlers for others. + - Redirects supported + +Features and releases [here](./RELEASES.md) + +## Install + +``` +npm install @actions/http-client --save +``` + +## Samples + +See the [tests](./__tests__) for detailed examples. + +## Errors + +### HTTP + +The HTTP client does not throw unless truly exceptional. + +* A request that successfully executes resulting in a 404, 500 etc... will return a response object with a status code and a body. +* Redirects (3xx) will be followed by default. + +See the [tests](./__tests__) for detailed examples. + +## Debugging + +To enable detailed console logging of all HTTP requests and responses, set the NODE_DEBUG environment varible: + +```shell +export NODE_DEBUG=http +``` + +## Node support + +The http-client is built using the latest LTS version of Node 12. It may work on previous node LTS versions but it's tested and officially supported on Node12+. + +## Support and Versioning + +We follow semver and will hold compatibility between major versions and increment the minor version with new features and capabilities (while holding compat). + +## Contributing + +We welcome PRs. Please create an issue and if applicable, a design before proceeding with code. + +once: + +``` +npm install +``` + +To build: + +``` +npm run build +``` + +To run all tests: + +``` +npm test +``` diff --git a/node_modules/@actions/http-client/lib/auth.d.ts b/node_modules/@actions/http-client/lib/auth.d.ts new file mode 100644 index 0000000..8cc9fc3 --- /dev/null +++ b/node_modules/@actions/http-client/lib/auth.d.ts @@ -0,0 +1,26 @@ +/// +import * as http from 'http'; +import * as ifm from './interfaces'; +import { HttpClientResponse } from './index'; +export declare class BasicCredentialHandler implements ifm.RequestHandler { + username: string; + password: string; + constructor(username: string, password: string); + prepareRequest(options: http.RequestOptions): void; + canHandleAuthentication(): boolean; + handleAuthentication(): Promise; +} +export declare class BearerCredentialHandler implements ifm.RequestHandler { + token: string; + constructor(token: string); + prepareRequest(options: http.RequestOptions): void; + canHandleAuthentication(): boolean; + handleAuthentication(): Promise; +} +export declare class PersonalAccessTokenCredentialHandler implements ifm.RequestHandler { + token: string; + constructor(token: string); + prepareRequest(options: http.RequestOptions): void; + canHandleAuthentication(): boolean; + handleAuthentication(): Promise; +} diff --git a/node_modules/@actions/http-client/lib/auth.js b/node_modules/@actions/http-client/lib/auth.js new file mode 100644 index 0000000..2c150a3 --- /dev/null +++ b/node_modules/@actions/http-client/lib/auth.js @@ -0,0 +1,81 @@ +"use strict"; +var __awaiter = (this && this.__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(exports, "__esModule", { value: true }); +exports.PersonalAccessTokenCredentialHandler = exports.BearerCredentialHandler = exports.BasicCredentialHandler = void 0; +class BasicCredentialHandler { + 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')}`; + } + // This handler cannot handle 401 + canHandleAuthentication() { + return false; + } + handleAuthentication() { + return __awaiter(this, void 0, void 0, function* () { + throw new Error('not implemented'); + }); + } +} +exports.BasicCredentialHandler = BasicCredentialHandler; +class BearerCredentialHandler { + constructor(token) { + this.token = token; + } + // currently implements pre-authorization + // TODO: support preAuth = false where it hooks on 401 + prepareRequest(options) { + if (!options.headers) { + throw Error('The request has no headers'); + } + options.headers['Authorization'] = `Bearer ${this.token}`; + } + // This handler cannot handle 401 + canHandleAuthentication() { + return false; + } + handleAuthentication() { + return __awaiter(this, void 0, void 0, function* () { + throw new Error('not implemented'); + }); + } +} +exports.BearerCredentialHandler = BearerCredentialHandler; +class PersonalAccessTokenCredentialHandler { + constructor(token) { + this.token = token; + } + // currently implements pre-authorization + // TODO: support preAuth = false where it hooks on 401 + prepareRequest(options) { + if (!options.headers) { + throw Error('The request has no headers'); + } + options.headers['Authorization'] = `Basic ${Buffer.from(`PAT:${this.token}`).toString('base64')}`; + } + // This handler cannot handle 401 + canHandleAuthentication() { + return false; + } + handleAuthentication() { + return __awaiter(this, void 0, void 0, function* () { + throw new Error('not implemented'); + }); + } +} +exports.PersonalAccessTokenCredentialHandler = PersonalAccessTokenCredentialHandler; +//# sourceMappingURL=auth.js.map \ No newline at end of file diff --git a/node_modules/@actions/http-client/lib/auth.js.map b/node_modules/@actions/http-client/lib/auth.js.map new file mode 100644 index 0000000..7d3a18a --- /dev/null +++ b/node_modules/@actions/http-client/lib/auth.js.map @@ -0,0 +1 @@ +{"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":";;;;;;;;;;;;AAIA,MAAa,sBAAsB;IAIjC,YAAY,QAAgB,EAAE,QAAgB;QAC5C,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;QACxB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;IAC1B,CAAC;IAED,cAAc,CAAC,OAA4B;QACzC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE;YACpB,MAAM,KAAK,CAAC,4BAA4B,CAAC,CAAA;SAC1C;QACD,OAAO,CAAC,OAAO,CAAC,eAAe,CAAC,GAAG,SAAS,MAAM,CAAC,IAAI,CACrD,GAAG,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,EAAE,CACpC,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAA;IACxB,CAAC;IAED,iCAAiC;IACjC,uBAAuB;QACrB,OAAO,KAAK,CAAA;IACd,CAAC;IAEK,oBAAoB;;YACxB,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAA;QACpC,CAAC;KAAA;CACF;AA1BD,wDA0BC;AAED,MAAa,uBAAuB;IAGlC,YAAY,KAAa;QACvB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;IACpB,CAAC;IAED,yCAAyC;IACzC,sDAAsD;IACtD,cAAc,CAAC,OAA4B;QACzC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE;YACpB,MAAM,KAAK,CAAC,4BAA4B,CAAC,CAAA;SAC1C;QACD,OAAO,CAAC,OAAO,CAAC,eAAe,CAAC,GAAG,UAAU,IAAI,CAAC,KAAK,EAAE,CAAA;IAC3D,CAAC;IAED,iCAAiC;IACjC,uBAAuB;QACrB,OAAO,KAAK,CAAA;IACd,CAAC;IAEK,oBAAoB;;YACxB,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAA;QACpC,CAAC;KAAA;CACF;AAxBD,0DAwBC;AAED,MAAa,oCAAoC;IAI/C,YAAY,KAAa;QACvB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;IACpB,CAAC;IAED,yCAAyC;IACzC,sDAAsD;IACtD,cAAc,CAAC,OAA4B;QACzC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE;YACpB,MAAM,KAAK,CAAC,4BAA4B,CAAC,CAAA;SAC1C;QACD,OAAO,CAAC,OAAO,CAAC,eAAe,CAAC,GAAG,SAAS,MAAM,CAAC,IAAI,CACrD,OAAO,IAAI,CAAC,KAAK,EAAE,CACpB,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAA;IACxB,CAAC;IAED,iCAAiC;IACjC,uBAAuB;QACrB,OAAO,KAAK,CAAA;IACd,CAAC;IAEK,oBAAoB;;YACxB,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAA;QACpC,CAAC;KAAA;CACF;AA3BD,oFA2BC"} \ No newline at end of file diff --git a/node_modules/@actions/http-client/lib/index.d.ts b/node_modules/@actions/http-client/lib/index.d.ts new file mode 100644 index 0000000..fe733d1 --- /dev/null +++ b/node_modules/@actions/http-client/lib/index.d.ts @@ -0,0 +1,123 @@ +/// +import * as http from 'http'; +import * as ifm from './interfaces'; +export declare enum HttpCodes { + OK = 200, + MultipleChoices = 300, + MovedPermanently = 301, + ResourceMoved = 302, + SeeOther = 303, + NotModified = 304, + UseProxy = 305, + SwitchProxy = 306, + TemporaryRedirect = 307, + PermanentRedirect = 308, + BadRequest = 400, + Unauthorized = 401, + PaymentRequired = 402, + Forbidden = 403, + NotFound = 404, + MethodNotAllowed = 405, + NotAcceptable = 406, + ProxyAuthenticationRequired = 407, + RequestTimeout = 408, + Conflict = 409, + Gone = 410, + TooManyRequests = 429, + InternalServerError = 500, + NotImplemented = 501, + BadGateway = 502, + ServiceUnavailable = 503, + GatewayTimeout = 504 +} +export declare enum Headers { + Accept = "accept", + ContentType = "content-type" +} +export declare enum MediaTypes { + ApplicationJson = "application/json" +} +/** + * Returns the proxy URL, depending upon the supplied url and proxy environment variables. + * @param serverUrl The server URL where the request will be sent. For example, https://api.github.com + */ +export declare function getProxyUrl(serverUrl: string): string; +export declare class HttpClientError extends Error { + constructor(message: string, statusCode: number); + statusCode: number; + result?: any; +} +export declare class HttpClientResponse { + constructor(message: http.IncomingMessage); + message: http.IncomingMessage; + readBody(): Promise; +} +export declare function isHttps(requestUrl: string): boolean; +export declare class HttpClient { + userAgent: string | undefined; + handlers: ifm.RequestHandler[]; + requestOptions: ifm.RequestOptions | undefined; + private _ignoreSslError; + private _socketTimeout; + private _allowRedirects; + private _allowRedirectDowngrade; + private _maxRedirects; + private _allowRetries; + private _maxRetries; + private _agent; + private _proxyAgent; + private _keepAlive; + private _disposed; + constructor(userAgent?: string, handlers?: ifm.RequestHandler[], requestOptions?: ifm.RequestOptions); + options(requestUrl: string, additionalHeaders?: http.OutgoingHttpHeaders): Promise; + get(requestUrl: string, additionalHeaders?: http.OutgoingHttpHeaders): Promise; + del(requestUrl: string, additionalHeaders?: http.OutgoingHttpHeaders): Promise; + post(requestUrl: string, data: string, additionalHeaders?: http.OutgoingHttpHeaders): Promise; + patch(requestUrl: string, data: string, additionalHeaders?: http.OutgoingHttpHeaders): Promise; + put(requestUrl: string, data: string, additionalHeaders?: http.OutgoingHttpHeaders): Promise; + head(requestUrl: string, additionalHeaders?: http.OutgoingHttpHeaders): Promise; + sendStream(verb: string, requestUrl: string, stream: NodeJS.ReadableStream, additionalHeaders?: http.OutgoingHttpHeaders): Promise; + /** + * Gets a typed object from an endpoint + * Be aware that not found returns a null. Other errors (4xx, 5xx) reject the promise + */ + getJson(requestUrl: string, additionalHeaders?: http.OutgoingHttpHeaders): Promise>; + postJson(requestUrl: string, obj: any, additionalHeaders?: http.OutgoingHttpHeaders): Promise>; + putJson(requestUrl: string, obj: any, additionalHeaders?: http.OutgoingHttpHeaders): Promise>; + patchJson(requestUrl: string, obj: any, additionalHeaders?: http.OutgoingHttpHeaders): Promise>; + /** + * 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: string, requestUrl: string, data: string | NodeJS.ReadableStream | null, headers?: http.OutgoingHttpHeaders): Promise; + /** + * Needs to be called if keepAlive is set to true in request options. + */ + dispose(): void; + /** + * Raw request. + * @param info + * @param data + */ + requestRaw(info: ifm.RequestInfo, data: string | NodeJS.ReadableStream | null): Promise; + /** + * Raw request with callback. + * @param info + * @param data + * @param onResult + */ + requestRawWithCallback(info: ifm.RequestInfo, data: string | NodeJS.ReadableStream | null, onResult: (err?: Error, res?: HttpClientResponse) => void): void; + /** + * Gets an http agent. This function is useful when you need an http agent that handles + * routing through a proxy server - depending upon the url and proxy environment variables. + * @param serverUrl The server URL where the request will be sent. For example, https://api.github.com + */ + getAgent(serverUrl: string): http.Agent; + private _prepareRequest; + private _mergeHeaders; + private _getExistingOrDefaultHeader; + private _getAgent; + private _performExponentialBackoff; + private _processResponse; +} diff --git a/node_modules/@actions/http-client/lib/index.js b/node_modules/@actions/http-client/lib/index.js new file mode 100644 index 0000000..a1b7d03 --- /dev/null +++ b/node_modules/@actions/http-client/lib/index.js @@ -0,0 +1,605 @@ +"use strict"; +/* eslint-disable @typescript-eslint/no-explicit-any */ +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__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 = (this && this.__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(exports, "__esModule", { value: true }); +exports.HttpClient = exports.isHttps = exports.HttpClientResponse = exports.HttpClientError = exports.getProxyUrl = exports.MediaTypes = exports.Headers = exports.HttpCodes = void 0; +const http = __importStar(require("http")); +const https = __importStar(require("https")); +const pm = __importStar(require("./proxy")); +const tunnel = __importStar(require("tunnel")); +var HttpCodes; +(function (HttpCodes) { + HttpCodes[HttpCodes["OK"] = 200] = "OK"; + HttpCodes[HttpCodes["MultipleChoices"] = 300] = "MultipleChoices"; + HttpCodes[HttpCodes["MovedPermanently"] = 301] = "MovedPermanently"; + HttpCodes[HttpCodes["ResourceMoved"] = 302] = "ResourceMoved"; + HttpCodes[HttpCodes["SeeOther"] = 303] = "SeeOther"; + HttpCodes[HttpCodes["NotModified"] = 304] = "NotModified"; + HttpCodes[HttpCodes["UseProxy"] = 305] = "UseProxy"; + HttpCodes[HttpCodes["SwitchProxy"] = 306] = "SwitchProxy"; + HttpCodes[HttpCodes["TemporaryRedirect"] = 307] = "TemporaryRedirect"; + HttpCodes[HttpCodes["PermanentRedirect"] = 308] = "PermanentRedirect"; + HttpCodes[HttpCodes["BadRequest"] = 400] = "BadRequest"; + HttpCodes[HttpCodes["Unauthorized"] = 401] = "Unauthorized"; + HttpCodes[HttpCodes["PaymentRequired"] = 402] = "PaymentRequired"; + HttpCodes[HttpCodes["Forbidden"] = 403] = "Forbidden"; + HttpCodes[HttpCodes["NotFound"] = 404] = "NotFound"; + HttpCodes[HttpCodes["MethodNotAllowed"] = 405] = "MethodNotAllowed"; + HttpCodes[HttpCodes["NotAcceptable"] = 406] = "NotAcceptable"; + HttpCodes[HttpCodes["ProxyAuthenticationRequired"] = 407] = "ProxyAuthenticationRequired"; + HttpCodes[HttpCodes["RequestTimeout"] = 408] = "RequestTimeout"; + HttpCodes[HttpCodes["Conflict"] = 409] = "Conflict"; + HttpCodes[HttpCodes["Gone"] = 410] = "Gone"; + HttpCodes[HttpCodes["TooManyRequests"] = 429] = "TooManyRequests"; + HttpCodes[HttpCodes["InternalServerError"] = 500] = "InternalServerError"; + HttpCodes[HttpCodes["NotImplemented"] = 501] = "NotImplemented"; + HttpCodes[HttpCodes["BadGateway"] = 502] = "BadGateway"; + HttpCodes[HttpCodes["ServiceUnavailable"] = 503] = "ServiceUnavailable"; + HttpCodes[HttpCodes["GatewayTimeout"] = 504] = "GatewayTimeout"; +})(HttpCodes = exports.HttpCodes || (exports.HttpCodes = {})); +var Headers; +(function (Headers) { + Headers["Accept"] = "accept"; + Headers["ContentType"] = "content-type"; +})(Headers = exports.Headers || (exports.Headers = {})); +var MediaTypes; +(function (MediaTypes) { + MediaTypes["ApplicationJson"] = "application/json"; +})(MediaTypes = exports.MediaTypes || (exports.MediaTypes = {})); +/** + * Returns the proxy URL, depending upon the supplied url and proxy environment variables. + * @param serverUrl The server URL where the request will be sent. For example, https://api.github.com + */ +function getProxyUrl(serverUrl) { + const proxyUrl = pm.getProxyUrl(new URL(serverUrl)); + return proxyUrl ? proxyUrl.href : ''; +} +exports.getProxyUrl = getProxyUrl; +const HttpRedirectCodes = [ + HttpCodes.MovedPermanently, + HttpCodes.ResourceMoved, + HttpCodes.SeeOther, + HttpCodes.TemporaryRedirect, + HttpCodes.PermanentRedirect +]; +const HttpResponseRetryCodes = [ + HttpCodes.BadGateway, + HttpCodes.ServiceUnavailable, + HttpCodes.GatewayTimeout +]; +const RetryableHttpVerbs = ['OPTIONS', 'GET', 'DELETE', 'HEAD']; +const ExponentialBackoffCeiling = 10; +const ExponentialBackoffTimeSlice = 5; +class HttpClientError extends Error { + constructor(message, statusCode) { + super(message); + this.name = 'HttpClientError'; + this.statusCode = statusCode; + Object.setPrototypeOf(this, HttpClientError.prototype); + } +} +exports.HttpClientError = HttpClientError; +class HttpClientResponse { + constructor(message) { + this.message = message; + } + 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()); + }); + })); + }); + } +} +exports.HttpClientResponse = HttpClientResponse; +function isHttps(requestUrl) { + const parsedUrl = new URL(requestUrl); + return parsedUrl.protocol === 'https:'; +} +exports.isHttps = isHttps; +class HttpClient { + 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; + } + if (requestOptions.allowRetries != null) { + this._allowRetries = requestOptions.allowRetries; + } + if (requestOptions.maxRetries != null) { + this._maxRetries = requestOptions.maxRetries; + } + } + } + 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 || {}); + }); + } + del(requestUrl, additionalHeaders) { + return __awaiter(this, void 0, void 0, function* () { + return this.request('DELETE', requestUrl, null, additionalHeaders || {}); + }); + } + post(requestUrl, data, additionalHeaders) { + return __awaiter(this, void 0, void 0, function* () { + return this.request('POST', requestUrl, data, additionalHeaders || {}); + }); + } + patch(requestUrl, data, additionalHeaders) { + return __awaiter(this, void 0, void 0, function* () { + return this.request('PATCH', requestUrl, data, additionalHeaders || {}); + }); + } + put(requestUrl, data, additionalHeaders) { + return __awaiter(this, void 0, void 0, function* () { + return this.request('PUT', requestUrl, data, additionalHeaders || {}); + }); + } + head(requestUrl, additionalHeaders) { + return __awaiter(this, void 0, void 0, function* () { + return this.request('HEAD', requestUrl, null, additionalHeaders || {}); + }); + } + sendStream(verb, requestUrl, stream, additionalHeaders) { + return __awaiter(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, 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); + }); + } + 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); + }); + } + 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); + }); + } + 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); + }); + } + /** + * 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 __awaiter(this, void 0, void 0, function* () { + if (this._disposed) { + throw new Error('Client has already been disposed.'); + } + const parsedUrl = new URL(requestUrl); + let info = this._prepareRequest(verb, parsedUrl, headers); + // Only perform retries on reads since writes may not be idempotent. + const maxTries = this._allowRetries && RetryableHttpVerbs.includes(verb) + ? this._maxRetries + 1 + : 1; + let numTries = 0; + let response; + do { + response = yield this.requestRaw(info, data); + // Check if it's an authentication challenge + 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 { + // We have received an unauthorized response but have no handlers to handle it. + // Let the response return to the caller. + 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) { + // if there's no location to redirect to, we won't + 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.'); + } + // we need to finish reading the response before reassigning response + // which will leak the open socket. + yield response.readBody(); + // strip authorization header if redirected to a different hostname + if (parsedRedirectUrl.hostname !== parsedUrl.hostname) { + for (const header in headers) { + // header names are case insensitive + if (header.toLowerCase() === 'authorization') { + delete headers[header]; + } + } + } + // let's make the request with the new redirectUrl + info = this._prepareRequest(verb, parsedRedirectUrl, headers); + response = yield this.requestRaw(info, data); + redirectsRemaining--; + } + if (!response.message.statusCode || + !HttpResponseRetryCodes.includes(response.message.statusCode)) { + // If not a retry code, return immediately instead of retrying + return response; + } + numTries += 1; + if (numTries < maxTries) { + yield response.readBody(); + yield this._performExponentialBackoff(numTries); + } + } while (numTries < maxTries); + return response; + }); + } + /** + * Needs to be called if keepAlive is set to true in request options. + */ + dispose() { + if (this._agent) { + this._agent.destroy(); + } + this._disposed = true; + } + /** + * Raw request. + * @param info + * @param data + */ + requestRaw(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) { + // If `err` is not passed, then `res` must be passed. + reject(new Error('Unknown error')); + } + else { + resolve(res); + } + } + this.requestRawWithCallback(info, data, callbackForResult); + }); + }); + } + /** + * Raw request with callback. + * @param info + * @param data + * @param onResult + */ + requestRawWithCallback(info, data, onResult) { + if (typeof data === 'string') { + if (!info.options.headers) { + info.options.headers = {}; + } + info.options.headers['Content-Length'] = Buffer.byteLength(data, 'utf8'); + } + let callbackCalled = false; + function handleResult(err, res) { + if (!callbackCalled) { + callbackCalled = true; + onResult(err, res); + } + } + const req = info.httpModule.request(info.options, (msg) => { + const res = new HttpClientResponse(msg); + handleResult(undefined, res); + }); + let socket; + req.on('socket', sock => { + socket = sock; + }); + // If we ever get disconnected, we want the socket to timeout eventually + req.setTimeout(this._socketTimeout || 3 * 60000, () => { + if (socket) { + socket.end(); + } + handleResult(new Error(`Request timeout: ${info.options.path}`)); + }); + req.on('error', function (err) { + // err has statusCode property + // res should have headers + handleResult(err); + }); + if (data && typeof data === 'string') { + req.write(data, 'utf8'); + } + if (data && typeof data !== 'string') { + data.on('close', function () { + req.end(); + }); + data.pipe(req); + } + else { + req.end(); + } + } + /** + * Gets an http agent. This function is useful when you need an http agent that handles + * routing through a proxy server - depending upon the url and proxy environment variables. + * @param serverUrl The server URL where the request will be sent. For example, https://api.github.com + */ + getAgent(serverUrl) { + const parsedUrl = new URL(serverUrl); + return this._getAgent(parsedUrl); + } + _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; + } + info.options.agent = this._getAgent(info.parsedUrl); + // gives handlers an opportunity to participate + if (this.handlers) { + for (const handler of this.handlers) { + handler.prepareRequest(info.options); + } + } + return info; + } + _mergeHeaders(headers) { + if (this.requestOptions && this.requestOptions.headers) { + return Object.assign({}, lowercaseKeys(this.requestOptions.headers), lowercaseKeys(headers || {})); + } + return lowercaseKeys(headers || {}); + } + _getExistingOrDefaultHeader(additionalHeaders, header, _default) { + let clientHeader; + if (this.requestOptions && this.requestOptions.headers) { + clientHeader = lowercaseKeys(this.requestOptions.headers)[header]; + } + return additionalHeaders[header] || clientHeader || _default; + } + _getAgent(parsedUrl) { + let agent; + const proxyUrl = pm.getProxyUrl(parsedUrl); + const useProxy = proxyUrl && proxyUrl.hostname; + if (this._keepAlive && useProxy) { + agent = this._proxyAgent; + } + if (this._keepAlive && !useProxy) { + agent = this._agent; + } + // if agent is already assigned use that agent. + if (agent) { + return agent; + } + const usingSsl = parsedUrl.protocol === 'https:'; + let maxSockets = 100; + if (this.requestOptions) { + maxSockets = this.requestOptions.maxSockets || http.globalAgent.maxSockets; + } + // This is `useProxy` again, but we need to check `proxyURl` directly for TypeScripts's flow analysis. + 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; + } + // if reusing agent across request and tunneling agent isn't assigned create a new agent + if (this._keepAlive && !agent) { + const options = { keepAlive: this._keepAlive, maxSockets }; + agent = usingSsl ? new https.Agent(options) : new http.Agent(options); + this._agent = agent; + } + // if not using private agent and tunnel agent isn't setup then use global agent + if (!agent) { + agent = usingSsl ? https.globalAgent : http.globalAgent; + } + if (usingSsl && this._ignoreSslError) { + // we don't want to set NODE_TLS_REJECT_UNAUTHORIZED=0 since that will affect request for entire process + // http.RequestOptions doesn't expose a way to modify RequestOptions.agent.options + // we have to cast it to any and change it directly + agent.options = Object.assign(agent.options || {}, { + rejectUnauthorized: false + }); + } + 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)); + }); + } + _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: {} + }; + // not found leads to null obj returned + if (statusCode === HttpCodes.NotFound) { + resolve(response); + } + // get the result from the body + 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) { + // Invalid resource (contents not json); leaving result obj null + } + // note that 3xx redirects are handled by the http layer. + if (statusCode > 299) { + let msg; + // if exception/error in body, attempt to get better error + if (obj && obj.message) { + msg = obj.message; + } + else if (contents && contents.length > 0) { + // it may be the case that the exception is in the body message as string + msg = contents; + } + else { + msg = `Failed request: (${statusCode})`; + } + const err = new HttpClientError(msg, statusCode); + err.result = response.result; + reject(err); + } + else { + resolve(response); + } + })); + }); + } +} +exports.HttpClient = HttpClient; +const lowercaseKeys = (obj) => Object.keys(obj).reduce((c, k) => ((c[k.toLowerCase()] = obj[k]), c), {}); +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/node_modules/@actions/http-client/lib/index.js.map b/node_modules/@actions/http-client/lib/index.js.map new file mode 100644 index 0000000..ca8ea41 --- /dev/null +++ b/node_modules/@actions/http-client/lib/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@actions/http-client/lib/interfaces.d.ts b/node_modules/@actions/http-client/lib/interfaces.d.ts new file mode 100644 index 0000000..54fd4a8 --- /dev/null +++ b/node_modules/@actions/http-client/lib/interfaces.d.ts @@ -0,0 +1,44 @@ +/// +import * as http from 'http'; +import * as https from 'https'; +import { HttpClientResponse } from './index'; +export interface HttpClient { + options(requestUrl: string, additionalHeaders?: http.OutgoingHttpHeaders): Promise; + get(requestUrl: string, additionalHeaders?: http.OutgoingHttpHeaders): Promise; + del(requestUrl: string, additionalHeaders?: http.OutgoingHttpHeaders): Promise; + post(requestUrl: string, data: string, additionalHeaders?: http.OutgoingHttpHeaders): Promise; + patch(requestUrl: string, data: string, additionalHeaders?: http.OutgoingHttpHeaders): Promise; + put(requestUrl: string, data: string, additionalHeaders?: http.OutgoingHttpHeaders): Promise; + sendStream(verb: string, requestUrl: string, stream: NodeJS.ReadableStream, additionalHeaders?: http.OutgoingHttpHeaders): Promise; + request(verb: string, requestUrl: string, data: string | NodeJS.ReadableStream, headers: http.OutgoingHttpHeaders): Promise; + requestRaw(info: RequestInfo, data: string | NodeJS.ReadableStream): Promise; + requestRawWithCallback(info: RequestInfo, data: string | NodeJS.ReadableStream, onResult: (err?: Error, res?: HttpClientResponse) => void): void; +} +export interface RequestHandler { + prepareRequest(options: http.RequestOptions): void; + canHandleAuthentication(response: HttpClientResponse): boolean; + handleAuthentication(httpClient: HttpClient, requestInfo: RequestInfo, data: string | NodeJS.ReadableStream | null): Promise; +} +export interface RequestInfo { + options: http.RequestOptions; + parsedUrl: URL; + httpModule: typeof http | typeof https; +} +export interface RequestOptions { + headers?: http.OutgoingHttpHeaders; + socketTimeout?: number; + ignoreSslError?: boolean; + allowRedirects?: boolean; + allowRedirectDowngrade?: boolean; + maxRedirects?: number; + maxSockets?: number; + keepAlive?: boolean; + deserializeDates?: boolean; + allowRetries?: boolean; + maxRetries?: number; +} +export interface TypedResponse { + statusCode: number; + result: T | null; + headers: http.IncomingHttpHeaders; +} diff --git a/node_modules/@actions/http-client/lib/interfaces.js b/node_modules/@actions/http-client/lib/interfaces.js new file mode 100644 index 0000000..db91911 --- /dev/null +++ b/node_modules/@actions/http-client/lib/interfaces.js @@ -0,0 +1,3 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +//# sourceMappingURL=interfaces.js.map \ No newline at end of file diff --git a/node_modules/@actions/http-client/lib/interfaces.js.map b/node_modules/@actions/http-client/lib/interfaces.js.map new file mode 100644 index 0000000..8fb5f7d --- /dev/null +++ b/node_modules/@actions/http-client/lib/interfaces.js.map @@ -0,0 +1 @@ +{"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../src/interfaces.ts"],"names":[],"mappings":""} \ No newline at end of file diff --git a/node_modules/@actions/http-client/lib/proxy.d.ts b/node_modules/@actions/http-client/lib/proxy.d.ts new file mode 100644 index 0000000..4599865 --- /dev/null +++ b/node_modules/@actions/http-client/lib/proxy.d.ts @@ -0,0 +1,2 @@ +export declare function getProxyUrl(reqUrl: URL): URL | undefined; +export declare function checkBypass(reqUrl: URL): boolean; diff --git a/node_modules/@actions/http-client/lib/proxy.js b/node_modules/@actions/http-client/lib/proxy.js new file mode 100644 index 0000000..528ffe4 --- /dev/null +++ b/node_modules/@actions/http-client/lib/proxy.js @@ -0,0 +1,61 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.checkBypass = exports.getProxyUrl = void 0; +function getProxyUrl(reqUrl) { + const usingSsl = reqUrl.protocol === 'https:'; + if (checkBypass(reqUrl)) { + return undefined; + } + 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 undefined; + } +} +exports.getProxyUrl = getProxyUrl; +function checkBypass(reqUrl) { + if (!reqUrl.hostname) { + return false; + } + const noProxy = process.env['no_proxy'] || process.env['NO_PROXY'] || ''; + if (!noProxy) { + return false; + } + // Determine the request port + let reqPort; + if (reqUrl.port) { + reqPort = Number(reqUrl.port); + } + else if (reqUrl.protocol === 'http:') { + reqPort = 80; + } + else if (reqUrl.protocol === 'https:') { + reqPort = 443; + } + // Format the request hostname and hostname with port + const upperReqHosts = [reqUrl.hostname.toUpperCase()]; + if (typeof reqPort === 'number') { + upperReqHosts.push(`${upperReqHosts[0]}:${reqPort}`); + } + // Compare request host against noproxy + for (const upperNoProxyItem of noProxy + .split(',') + .map(x => x.trim().toUpperCase()) + .filter(x => x)) { + if (upperReqHosts.some(x => x === upperNoProxyItem)) { + return true; + } + } + return false; +} +exports.checkBypass = checkBypass; +//# sourceMappingURL=proxy.js.map \ No newline at end of file diff --git a/node_modules/@actions/http-client/lib/proxy.js.map b/node_modules/@actions/http-client/lib/proxy.js.map new file mode 100644 index 0000000..4440de9 --- /dev/null +++ b/node_modules/@actions/http-client/lib/proxy.js.map @@ -0,0 +1 @@ +{"version":3,"file":"proxy.js","sourceRoot":"","sources":["../src/proxy.ts"],"names":[],"mappings":";;;AAAA,SAAgB,WAAW,CAAC,MAAW;IACrC,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,KAAK,QAAQ,CAAA;IAE7C,IAAI,WAAW,CAAC,MAAM,CAAC,EAAE;QACvB,OAAO,SAAS,CAAA;KACjB;IAED,MAAM,QAAQ,GAAG,CAAC,GAAG,EAAE;QACrB,IAAI,QAAQ,EAAE;YACZ,OAAO,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAA;SAChE;aAAM;YACL,OAAO,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAA;SAC9D;IACH,CAAC,CAAC,EAAE,CAAA;IAEJ,IAAI,QAAQ,EAAE;QACZ,OAAO,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAA;KACzB;SAAM;QACL,OAAO,SAAS,CAAA;KACjB;AACH,CAAC;AApBD,kCAoBC;AAED,SAAgB,WAAW,CAAC,MAAW;IACrC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE;QACpB,OAAO,KAAK,CAAA;KACb;IAED,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE,CAAA;IACxE,IAAI,CAAC,OAAO,EAAE;QACZ,OAAO,KAAK,CAAA;KACb;IAED,6BAA6B;IAC7B,IAAI,OAA2B,CAAA;IAC/B,IAAI,MAAM,CAAC,IAAI,EAAE;QACf,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;KAC9B;SAAM,IAAI,MAAM,CAAC,QAAQ,KAAK,OAAO,EAAE;QACtC,OAAO,GAAG,EAAE,CAAA;KACb;SAAM,IAAI,MAAM,CAAC,QAAQ,KAAK,QAAQ,EAAE;QACvC,OAAO,GAAG,GAAG,CAAA;KACd;IAED,qDAAqD;IACrD,MAAM,aAAa,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAA;IACrD,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;QAC/B,aAAa,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,IAAI,OAAO,EAAE,CAAC,CAAA;KACrD;IAED,uCAAuC;IACvC,KAAK,MAAM,gBAAgB,IAAI,OAAO;SACnC,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;SAChC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;QACjB,IAAI,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,gBAAgB,CAAC,EAAE;YACnD,OAAO,IAAI,CAAA;SACZ;KACF;IAED,OAAO,KAAK,CAAA;AACd,CAAC;AArCD,kCAqCC"} \ No newline at end of file diff --git a/node_modules/@actions/http-client/package.json b/node_modules/@actions/http-client/package.json new file mode 100644 index 0000000..c1de221 --- /dev/null +++ b/node_modules/@actions/http-client/package.json @@ -0,0 +1,48 @@ +{ + "name": "@actions/http-client", + "version": "2.0.1", + "description": "Actions Http Client", + "keywords": [ + "github", + "actions", + "http" + ], + "homepage": "https://github.com/actions/toolkit/tree/main/packages/http-client", + "license": "MIT", + "main": "lib/index.js", + "types": "lib/index.d.ts", + "directories": { + "lib": "lib", + "test": "__tests__" + }, + "files": [ + "lib", + "!.DS_Store" + ], + "publishConfig": { + "access": "public" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/actions/toolkit.git", + "directory": "packages/http-client" + }, + "scripts": { + "audit-moderate": "npm install && npm audit --json --audit-level=moderate > audit.json", + "test": "echo \"Error: run tests from root\" && exit 1", + "build": "tsc", + "format": "prettier --write **/*.ts", + "format-check": "prettier --check **/*.ts", + "tsc": "tsc" + }, + "bugs": { + "url": "https://github.com/actions/toolkit/issues" + }, + "devDependencies": { + "@types/tunnel": "0.0.3", + "proxy": "^1.0.1" + }, + "dependencies": { + "tunnel": "^0.0.6" + } +} diff --git a/node_modules/@esbuild-kit/cjs-loader/LICENSE b/node_modules/@esbuild-kit/cjs-loader/LICENSE new file mode 100644 index 0000000..bf183d2 --- /dev/null +++ b/node_modules/@esbuild-kit/cjs-loader/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) Hiroki Osame + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. \ No newline at end of file diff --git a/node_modules/@esbuild-kit/cjs-loader/README.md b/node_modules/@esbuild-kit/cjs-loader/README.md new file mode 100644 index 0000000..d3b8423 --- /dev/null +++ b/node_modules/@esbuild-kit/cjs-loader/README.md @@ -0,0 +1,65 @@ +# cjs-loader + +Node.js `require()` hook to instantaneously transform ESM & TypeScript to CommonJS on demand using [esbuild](https://esbuild.github.io/). + +### Features +- Transforms ESM & TypeScript to CommonJS on demand +- Supports TS extensions `.cjs` & `.mjs` (`.cts` & `.mts`) +- Cached for performance boost +- Supports Node.js v12.16.2+ +- Handles `node:` import prefixes +- Resolves `tsconfig.json` [`paths`](https://www.typescriptlang.org/tsconfig#paths) + +> **Tip:** +> +> _cjs-loader_ doesn't hook into dynamic `import()` calls. +> +> Use this with [esm-loader](https://github.com/esbuild-kit/esm-loader) for `import()` support. Alternatively, use [tsx](https://github.com/esbuild-kit/tsx) to handle them both automatically. + +## Install + +```sh +npm install --save-dev @esbuild-kit/cjs-loader +``` + +## Usage + +Pass `@esbuild-kit/cjs-loader` into the [`--require`](https://nodejs.org/api/cli.html#-r---require-module) flag +```sh +node -r @esbuild-kit/cjs-loader ./file.js +``` + +### TypeScript configuration +The following properties are used from `tsconfig.json` in the working directory: +- [`strict`](https://www.typescriptlang.org/tsconfig#strict): Whether to transform to strict mode +- [`jsx`](https://esbuild.github.io/api/#jsx): Whether to transform JSX + > **Warning:** When set to `preserve`, the JSX syntax will remain untransformed. To prevent Node.js from throwing a syntax error, chain another Node.js loader that can transform JSX to JS. +- [`jsxFactory`](https://esbuild.github.io/api/#jsx-factory): How to transform JSX +- [`jsxFragmentFactory`](https://esbuild.github.io/api/#jsx-fragment): How to transform JSX Fragments +- [`jsxImportSource`](https://www.typescriptlang.org/tsconfig#jsxImportSource): Where to import JSX functions from +- [`allowJs`](https://www.typescriptlang.org/tsconfig#allowJs): Whether to apply the tsconfig to JS files +- [`paths`](https://www.typescriptlang.org/tsconfig#paths): For resolving aliases + +#### Custom `tsconfig.json` path +By default, `tsconfig.json` will be detected from the current working directory. + +To set a custom path, use the `ESBK_TSCONFIG_PATH` environment variable: + +```sh +ESBK_TSCONFIG_PATH=./path/to/tsconfig.custom.json node -r @esbuild-kit/cjs-loader ./file.js +``` + +### Cache +Modules transformations are cached in the system cache directory ([`TMPDIR`](https://en.wikipedia.org/wiki/TMPDIR)). Transforms are cached by content hash so duplicate dependencies are not re-transformed. + +Set environment variable `ESBK_DISABLE_CACHE` to a truthy value to disable the cache: + +```sh +ESBK_DISABLE_CACHE=1 node -r @esbuild-kit/cjs-loader ./file.js +``` + +## Related + +- [tsx](https://github.com/esbuild-kit/tsx) - Node.js runtime powered by esbuild using [`@esbuild-kit/cjs-loader`](https://github.com/esbuild-kit/cjs-loader) and [`@esbuild-kit/esm-loader`](https://github.com/esbuild-kit/esm-loader). + +- [@esbuild-kit/esm-loader](https://github.com/esbuild-kit/esm-loader) - TypeScript to ESM transpiler using the Node.js loader API. diff --git a/node_modules/@esbuild-kit/cjs-loader/dist/index.js b/node_modules/@esbuild-kit/cjs-loader/dist/index.js new file mode 100755 index 0000000..ec6a3cf --- /dev/null +++ b/node_modules/@esbuild-kit/cjs-loader/dist/index.js @@ -0,0 +1 @@ +"use strict";var S=require("path"),y=require("fs"),P=require("module"),r=require("@esbuild-kit/core-utils"),l=require("get-tsconfig");function f(s){return s&&typeof s=="object"&&"default"in s?s:{default:s}}var d=f(S),E=f(y),u=f(P);const O=/^\.{0,2}\//,M=/\.[cm]?tsx?$/,b=`${d.default.sep}node_modules${d.default.sep}`,i=process.env.ESBK_TSCONFIG_PATH?{path:d.default.resolve(process.env.ESBK_TSCONFIG_PATH),config:l.parseTsconfig(process.env.ESBK_TSCONFIG_PATH)}:l.getTsconfig(),v=i&&l.createFilesMatcher(i),h=i&&l.createPathsMatcher(i),T=r.installSourceMapSupport(),j=r.compareNodeVersion([13,2,0])>=0||r.compareNodeVersion([12,20,0])>=0&&r.compareNodeVersion([13,0,0])<0;function F(s,e){process.send&&process.send({type:"dependency",path:e});let t=E.default.readFileSync(e,"utf8");if(e.endsWith(".cjs")&&j){const o=r.transformDynamicImport(e,t);o&&(t=T(o,e))}else{const o=r.transformSync(t,e,{tsconfigRaw:v==null?void 0:v(e)});t=T(o,e)}s._compile(t,e)}const g=u.default._extensions;[".js",".ts",".tsx",".jsx"].forEach(s=>{g[s]=F}),Object.defineProperty(g,".mjs",{value:F,enumerable:!1});const x=r.compareNodeVersion([16,0,0])>=0||r.compareNodeVersion([14,18,0])>=0,p=u.default._resolveFilename;u.default._resolveFilename=function(s,e,t,o){var c;if(!x&&s.startsWith("node:")&&(s=s.slice(5)),h&&!O.test(s)&&!((c=e==null?void 0:e.filename)!=null&&c.includes(b))){const a=h(s);for(const m of a){const _=N.call(this,m,e,t,o);if(_)return _;try{return p.call(this,m,e,t,o)}catch{}}}const n=N.call(this,s,e,t,o);return n||p.call(this,s,e,t,o)};function N(s,e,t,o){const c=r.resolveTsPath(s);if(e&&M.test(e.filename)&&c)try{return p.call(this,c,e,t,o)}catch(n){const{code:a}=n;if(a!=="MODULE_NOT_FOUND"&&a!=="ERR_PACKAGE_PATH_NOT_EXPORTED")throw n}} diff --git a/node_modules/@esbuild-kit/cjs-loader/package.json b/node_modules/@esbuild-kit/cjs-loader/package.json new file mode 100644 index 0000000..defc3e3 --- /dev/null +++ b/node_modules/@esbuild-kit/cjs-loader/package.json @@ -0,0 +1,32 @@ +{ + "name": "@esbuild-kit/cjs-loader", + "version": "2.4.2", + "publishConfig": { + "access": "public" + }, + "description": "Node.js loader for compiling ESM & TypeScript modules to CommonJS", + "keywords": [ + "esbuild", + "loader", + "node", + "cjs", + "commonjs", + "esm", + "typescript" + ], + "license": "MIT", + "repository": "esbuild-kit/cjs-loader", + "author": { + "name": "Hiroki Osame", + "email": "hiroki.osame@gmail.com" + }, + "files": [ + "dist" + ], + "main": "./dist/index.js", + "exports": "./dist/index.js", + "dependencies": { + "@esbuild-kit/core-utils": "^3.0.0", + "get-tsconfig": "^4.4.0" + } +} \ No newline at end of file diff --git a/node_modules/@esbuild-kit/core-utils/LICENSE b/node_modules/@esbuild-kit/core-utils/LICENSE new file mode 100644 index 0000000..bf183d2 --- /dev/null +++ b/node_modules/@esbuild-kit/core-utils/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) Hiroki Osame + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. \ No newline at end of file diff --git a/node_modules/@esbuild-kit/core-utils/README.md b/node_modules/@esbuild-kit/core-utils/README.md new file mode 100644 index 0000000..ccec3c5 --- /dev/null +++ b/node_modules/@esbuild-kit/core-utils/README.md @@ -0,0 +1,11 @@ +# @esbuild-kit/core-utils + +Core utility functions used by [@esbuild-kit/cjs-loader](https://github.com/esbuild-kit/cjs-loader) and [@esbuild-kit/esm-loader](https://github.com/esbuild-kit/esm-loader). + +## Library + +### esbuild +Transform defaults, caching, and source-map handling. + +### Source map support +Uses [native source-map](https://nodejs.org/api/process.html#processsetsourcemapsenabledval) if available, fallsback to [source-map-support](https://www.npmjs.com/package/source-map-support). diff --git a/node_modules/@esbuild-kit/core-utils/dist/index.d.ts b/node_modules/@esbuild-kit/core-utils/dist/index.d.ts new file mode 100644 index 0000000..23d3451 --- /dev/null +++ b/node_modules/@esbuild-kit/core-utils/dist/index.d.ts @@ -0,0 +1,26 @@ +import { UrlAndMap } from 'source-map-support'; +import { TransformOptions } from 'esbuild'; + +type Transformed = { + code: string; + map: RawSourceMap; + warnings?: any[]; +}; + +type RawSourceMap = UrlAndMap['map']; +declare function installSourceMapSupport(): ({ code, map }: Transformed, filePath: string) => string; + +declare function transformDynamicImport(filePath: string, code: string): { + code: string; + map: any; +} | undefined; + +declare function transformSync(code: string, filePath: string, extendOptions?: TransformOptions): Transformed; +declare function transform(code: string, filePath: string, extendOptions?: TransformOptions): Promise; + +declare function resolveTsPath(filePath: string): string | undefined; + +type Version = [number, number, number]; +declare const compareNodeVersion: (version: Version) => number; + +export { RawSourceMap, compareNodeVersion, installSourceMapSupport, resolveTsPath, transform, transformDynamicImport, transformSync }; diff --git a/node_modules/@esbuild-kit/core-utils/dist/index.js b/node_modules/@esbuild-kit/core-utils/dist/index.js new file mode 100755 index 0000000..fe59c05 --- /dev/null +++ b/node_modules/@esbuild-kit/core-utils/dist/index.js @@ -0,0 +1,23 @@ +"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var Yt=require("source-map-support"),Ot=require("url"),se=require("esbuild"),_t=require("crypto"),Ht=require("fs"),jt=require("path"),Tt=require("os");function P(i){return i&&typeof i=="object"&&"default"in i?i:{default:i}}var Pt=P(Yt),Xt=P(_t),G=P(Ht),Y=P(jt),$t=P(Tt);const Zt=` +//# sourceMappingURL=data:application/json;base64,`;function Wt(){if("setSourceMapsEnabled"in process&&typeof Error.prepareStackTrace!="function")return process.setSourceMapsEnabled(!0),({code:A,map:r})=>A+Zt+Buffer.from(JSON.stringify(r),"utf8").toString("base64");const e=new Map;return Pt.default.install({environment:"node",retrieveSourceMap(A){const r=e.get(A);return r?{url:A,map:r}:null}}),({code:A,map:r},s)=>(e.set(s,r),A)}const ve=i=>Xt.default.createHash("sha1").update(i).digest("hex"),Vt=",".charCodeAt(0),zt=";".charCodeAt(0),Ue="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",xe=new Uint8Array(64),eA=new Uint8Array(128);for(let i=0;i0&&(a===A&&(h+=Be.decode(s),a=0),s[a++]=zt),C.length!==0){e[0]=0;for(let f=0;fr&&(h+=Be.decode(c),s.copyWithin(0,r,a),a-=r),f>0&&(s[a++]=Vt),a=X(s,a,e,n,0),n.length!==1&&(a=X(s,a,e,n,1),a=X(s,a,e,n,2),a=X(s,a,e,n,3),n.length!==4&&(a=X(s,a,e,n,4)))}}}return h+Be.decode(s.subarray(0,a))}function X(i,e,A,r,s){const c=r[s];let a=c-A[s];A[s]=c,a=a<0?-a<<1|1:a<<1;do{let h=a&31;a>>>=5,a>0&&(h|=32),i[e++]=xe[h]}while(a>0);return e}class fe{constructor(e){this.bits=e instanceof fe?e.bits.slice():[]}add(e){this.bits[e>>5]|=1<<(e&31)}has(e){return!!(this.bits[e>>5]&1<<(e&31))}}class ee{constructor(e,A,r){this.start=e,this.end=A,this.original=r,this.intro="",this.outro="",this.content=r,this.storeName=!1,this.edited=!1,this.previous=null,this.next=null}appendLeft(e){this.outro+=e}appendRight(e){this.intro=this.intro+e}clone(){const e=new ee(this.start,this.end,this.original);return e.intro=this.intro,e.outro=this.outro,e.content=this.content,e.storeName=this.storeName,e.edited=this.edited,e}contains(e){return this.startwindow.btoa(unescape(encodeURIComponent(i))):typeof Buffer=="function"?i=>Buffer.from(i,"utf-8").toString("base64"):()=>{throw new Error("Unsupported environment: `window.btoa` or `Buffer` should be supported.")}}const nA=AA();class rA{constructor(e){this.version=3,this.file=e.file,this.sources=e.sources,this.sourcesContent=e.sourcesContent,this.names=e.names,this.mappings=tA(e.mappings)}toString(){return JSON.stringify(this)}toUrl(){return"data:application/json;charset=utf-8;base64,"+nA(this.toString())}}function iA(i){const e=i.split(` +`),A=e.filter(c=>/^\t+/.test(c)),r=e.filter(c=>/^ {2,}/.test(c));if(A.length===0&&r.length===0)return null;if(A.length>=r.length)return" ";const s=r.reduce((c,a)=>{const h=/^ +/.exec(a)[0].length;return Math.min(h,c)},1/0);return new Array(s+1).join(" ")}function sA(i,e){const A=i.split(/[/\\]/),r=e.split(/[/\\]/);for(A.pop();A[0]===r[0];)A.shift(),r.shift();if(A.length){let s=A.length;for(;s--;)A[s]=".."}return A.concat(r).join("/")}const oA=Object.prototype.toString;function aA(i){return oA.call(i)==="[object Object]"}function Fe(i){const e=i.split(` +`),A=[];for(let r=0,s=0;r>1;s=0&&c.push(s),this.rawSegments.push(c)}else this.pending&&this.rawSegments.push(this.pending);this.advance(A),this.pending=null}addUneditedChunk(e,A,r,s,c){let a=A.start,h=!0;for(;a1){for(let r=0;r{const h=c(a.start);a.intro.length&&s.advance(a.intro),a.edited?s.addEdit(A,a.content,h,a.storeName?r.indexOf(a.original):-1):s.addUneditedChunk(A,a,this.original,h,this.sourcemapLocations),a.outro.length&&s.advance(a.outro)}),{file:e.file?e.file.split(/[/\\]/).pop():null,sources:[e.source?sA(e.file||"",e.source):null],sourcesContent:e.includeContent?[this.original]:[null],names:r,mappings:s.raw}}generateMap(e){return new rA(this.generateDecodedMap(e))}_ensureindentStr(){this.indentStr===void 0&&(this.indentStr=iA(this.original))}_getRawIndentString(){return this._ensureindentStr(),this.indentStr}getIndentString(){return this._ensureindentStr(),this.indentStr===null?" ":this.indentStr}indent(e,A){const r=/^[^\r\n]/gm;if(aA(e)&&(A=e,e=void 0),e===void 0&&(this._ensureindentStr(),e=this.indentStr||" "),e==="")return this;A=A||{};const s={};A.exclude&&(typeof A.exclude[0]=="number"?[A.exclude]:A.exclude).forEach(f=>{for(let n=f[0];nc?`${e}${C}`:(c=!0,C);this.intro=this.intro.replace(r,a);let h=0,Q=this.firstChunk;for(;Q;){const C=Q.end;if(Q.edited)s[h]||(Q.content=Q.content.replace(r,a),Q.content.length&&(c=Q.content[Q.content.length-1]===` +`));else for(h=Q.start;h=e&&r<=A)throw new Error("Cannot move a selection inside itself");this._split(e),this._split(A),this._split(r);const s=this.byStart[e],c=this.byEnd[A],a=s.previous,h=c.next,Q=this.byStart[r];if(!Q&&c===this.lastChunk)return this;const C=Q?Q.previous:this.lastChunk;return a&&(a.next=h),h&&(h.previous=a),C&&(C.next=s),Q&&(Q.previous=c),s.previous||(this.firstChunk=c.next),c.next||(this.lastChunk=s.previous,this.lastChunk.next=null),s.previous=C,c.next=Q||null,C||(this.firstChunk=s),Q||(this.lastChunk=c),this}overwrite(e,A,r,s){return s=s||{},this.update(e,A,r,{...s,overwrite:!s.contentOnly})}update(e,A,r,s){if(typeof r!="string")throw new TypeError("replacement content must be a string");for(;e<0;)e+=this.original.length;for(;A<0;)A+=this.original.length;if(A>this.original.length)throw new Error("end is out of bounds");if(e===A)throw new Error("Cannot overwrite a zero-length range \u2013 use appendLeft or prependRight instead");this._split(e),this._split(A),s===!0&&(O.storeName||(console.warn("The final argument to magicString.overwrite(...) should be an options object. See https://github.com/rich-harris/magic-string"),O.storeName=!0),s={storeName:!0});const c=s!==void 0?s.storeName:!1,a=s!==void 0?s.overwrite:!1;if(c){const C=this.original.slice(e,A);Object.defineProperty(this.storedNames,C,{writable:!0,value:!0,enumerable:!0})}const h=this.byStart[e],Q=this.byEnd[A];if(h){let C=h;for(;C!==Q;){if(C.next!==this.byStart[C.end])throw new Error("Cannot overwrite across a split point");C=C.next,C.edit("",!1)}h.edit(r,c,!a)}else{const C=new ee(e,A,"").edit(r,c);Q.next=C,C.previous=Q}return this}prepend(e){if(typeof e!="string")throw new TypeError("outro content must be a string");return this.intro=e+this.intro,this}prependLeft(e,A){if(typeof A!="string")throw new TypeError("inserted content must be a string");this._split(e);const r=this.byEnd[e];return r?r.prependLeft(A):this.intro=A+this.intro,this}prependRight(e,A){if(typeof A!="string")throw new TypeError("inserted content must be a string");this._split(e);const r=this.byStart[e];return r?r.prependRight(A):this.outro=A+this.outro,this}remove(e,A){for(;e<0;)e+=this.original.length;for(;A<0;)A+=this.original.length;if(e===A)return this;if(e<0||A>this.original.length)throw new Error("Character is out of bounds");if(e>A)throw new Error("end must be greater than start");this._split(e),this._split(A);let r=this.byStart[e];for(;r;)r.intro="",r.outro="",r.edit(""),r=A>r.end?this.byStart[r.end]:null;return this}lastChar(){if(this.outro.length)return this.outro[this.outro.length-1];let e=this.lastChunk;do{if(e.outro.length)return e.outro[e.outro.length-1];if(e.content.length)return e.content[e.content.length-1];if(e.intro.length)return e.intro[e.intro.length-1]}while(e=e.previous);return this.intro.length?this.intro[this.intro.length-1]:""}lastLine(){let e=this.outro.lastIndexOf($);if(e!==-1)return this.outro.substr(e+1);let A=this.outro,r=this.lastChunk;do{if(r.outro.length>0){if(e=r.outro.lastIndexOf($),e!==-1)return r.outro.substr(e+1)+A;A=r.outro+A}if(r.content.length>0){if(e=r.content.lastIndexOf($),e!==-1)return r.content.substr(e+1)+A;A=r.content+A}if(r.intro.length>0){if(e=r.intro.lastIndexOf($),e!==-1)return r.intro.substr(e+1)+A;A=r.intro+A}}while(r=r.previous);return e=this.intro.lastIndexOf($),e!==-1?this.intro.substr(e+1)+A:this.intro+A}slice(e=0,A=this.original.length){for(;e<0;)e+=this.original.length;for(;A<0;)A+=this.original.length;let r="",s=this.firstChunk;for(;s&&(s.start>e||s.end<=e);){if(s.start=A)return r;s=s.next}if(s&&s.edited&&s.start!==e)throw new Error(`Cannot use replaced character ${e} as slice start anchor.`);const c=s;for(;s;){s.intro&&(c!==s||s.start===e)&&(r+=s.intro);const a=s.start=A;if(a&&s.edited&&s.end!==A)throw new Error(`Cannot use replaced character ${A} as slice end anchor.`);const h=c===s?e-s.start:0,Q=a?s.content.length+A-s.end:s.content.length;if(r+=s.content.slice(h,Q),s.outro&&(!a||s.end===A)&&(r+=s.outro),a)break;s=s.next}return r}snip(e,A){const r=this.clone();return r.remove(0,e),r.remove(A,r.original.length),r}_split(e){if(this.byStart[e]||this.byEnd[e])return;let A=this.lastSearchedChunk;const r=e>A.end;for(;A;){if(A.contains(e))return this._splitChunk(A,e);A=r?this.byStart[A.end]:this.byEnd[A.start]}}_splitChunk(e,A){if(e.edited&&e.content.length){const s=Fe(this.original)(A);throw new Error(`Cannot split a chunk that has already been edited (${s.line}:${s.column} \u2013 "${e.original}")`)}const r=e.split(A);return this.byEnd[A]=e,this.byStart[A]=r,this.byEnd[r.end]=r,e===this.lastChunk&&(this.lastChunk=r),this.lastSearchedChunk=e,!0}toString(){let e=this.intro,A=this.firstChunk;for(;A;)e+=A.toString(),A=A.next;return e+this.outro}isEmpty(){let e=this.firstChunk;do if(e.intro.length&&e.intro.trim()||e.content.length&&e.content.trim()||e.outro.length&&e.outro.trim())return!1;while(e=e.next);return!0}length(){let e=this.firstChunk,A=0;do A+=e.intro.length+e.content.length+e.outro.length;while(e=e.next);return A}trimLines(){return this.trim("[\\r\\n]")}trim(e){return this.trimStart(e).trimEnd(e)}trimEndAborted(e){const A=new RegExp((e||"\\s")+"+$");if(this.outro=this.outro.replace(A,""),this.outro.length)return!0;let r=this.lastChunk;do{const s=r.end,c=r.trimEnd(A);if(r.end!==s&&(this.lastChunk===r&&(this.lastChunk=r.next),this.byEnd[r.end]=r,this.byStart[r.next.start]=r.next,this.byEnd[r.next.end]=r.next),c)return!0;r=r.previous}while(r);return!1}trimEnd(e){return this.trimEndAborted(e),this}trimStartAborted(e){const A=new RegExp("^"+(e||"\\s")+"+");if(this.intro=this.intro.replace(A,""),this.intro.length)return!0;let r=this.firstChunk;do{const s=r.end,c=r.trimStart(A);if(r.end!==s&&(r===this.lastChunk&&(this.lastChunk=r.next),this.byEnd[r.end]=r,this.byStart[r.next.start]=r.next,this.byEnd[r.next.end]=r.next),c)return!0;r=r.next}while(r);return!1}trimStart(e){return this.trimStartAborted(e),this}hasChanged(){return this.original!==this.toString()}_replaceRegexp(e,A){function r(c,a){return typeof A=="string"?A.replace(/\$(\$|&|\d+)/g,(h,Q)=>Q==="$"?"$":Q==="&"?c[0]:+Q{a.index!=null&&this.overwrite(a.index,a.index+a[0].length,r(a,this.original))});else{const c=this.original.match(e);c&&c.index!=null&&this.overwrite(c.index,c.index+c[0].length,r(c,this.original))}return this}_replaceString(e,A){const{original:r}=this,s=r.indexOf(e);return s!==-1&&this.overwrite(s,s+e.length,A),this}replace(e,A){return typeof e=="string"?this._replaceString(e,A):this._replaceRegexp(e,A)}_replaceAllString(e,A){const{original:r}=this,s=e.length;for(let c=r.indexOf(e);c!==-1;c=r.indexOf(e,c+s))this.overwrite(c,c+s,A);return this}replaceAll(e,A){if(typeof e=="string")return this._replaceAllString(e,A);if(!e.global)throw new TypeError("MagicString.prototype.replaceAll called with a non-global RegExp argument");return this._replaceRegexp(e,A)}}const lA=new Uint8Array(new Uint16Array([1]).buffer)[0]===1;function Re(i,e="@"){if(!p)return qe.then(()=>Re(i));const A=i.length+1,r=(p.__heap_base.value||p.__heap_base)+4*A-p.memory.buffer.byteLength;r>0&&p.memory.grow(Math.ceil(r/65536));const s=p.sa(A-1);if((lA?fA:uA)(i,new Uint16Array(p.memory.buffer,s,A)),!p.parse())throw Object.assign(new Error(`Parse error ${e}:${i.slice(0,p.e()).split(` +`).length}:${p.e()-i.lastIndexOf(` +`,p.e()-1)}`),{idx:p.e()});const c=[],a=[];for(;p.ri();){const Q=p.is(),C=p.ie(),f=p.ai(),n=p.id(),k=p.ss(),K=p.se();let b;p.ip()&&(b=h(i.slice(n===-1?Q-1:Q,n===-1?C+1:C))),c.push({n:b,s:Q,e:C,ss:k,se:K,d:n,a:f})}for(;p.re();){const Q=p.es(),C=p.ee(),f=p.els(),n=p.ele(),k=i.slice(Q,C),K=k[0],b=f<0?void 0:i.slice(f,n),L=b?b[0]:"";a.push({s:Q,e:C,ls:f,le:n,n:K==='"'||K==="'"?h(k):k,ln:L==='"'||L==="'"?h(b):b})}function h(Q){try{return(0,eval)(Q)}catch{}}return[c,a,!!p.f()]}function uA(i,e){const A=i.length;let r=0;for(;r>>8}}function fA(i,e){const A=i.length;let r=0;for(;ri.charCodeAt(0)))).then(WebAssembly.instantiate).then(({exports:i})=>{p=i});var Ee;let D,oe,de,Z=2<<19;const Me=new Uint8Array(new Uint16Array([1]).buffer)[0]===1?function(i,e){const A=i.length;let r=0;for(;r>>8}},QA="xportmportlassetaromsyncunctionssertvoyiedelecontininstantybreareturdebuggeawaithrwhileforifcatcfinallels";let m,Ge,I;function hA(i,e="@"){m=i,Ge=e;const A=2*m.length+(2<<18);if(A>Z||!D){for(;A>Z;)Z*=2;oe=new ArrayBuffer(Z),Me(QA,new Uint16Array(oe,16,105)),D=function(a,h,Q){var C=new a.Int8Array(Q),f=new a.Int16Array(Q),n=new a.Int32Array(Q),k=new a.Uint8Array(Q),K=new a.Uint16Array(Q),b=1024;function L(){var t=0,o=0,l=0,g=0,u=0,B=0,F=0;F=b,b=b+10240|0,C[795]=1,f[395]=0,f[396]=0,n[67]=n[2],C[796]=0,n[66]=0,C[794]=0,n[68]=F+2048,n[69]=F,C[797]=0,t=(n[3]|0)+-2|0,n[70]=t,o=t+(n[64]<<1)|0,n[71]=o;e:for(;;){if(l=t+2|0,n[70]=l,t>>>0>=o>>>0){u=18;break}A:do switch(f[l>>1]|0){case 9:case 10:case 11:case 12:case 13:case 32:break;case 101:{if((f[396]|0)==0&&H(l)|0&&(N(t+4|0,16,10)|0)==0&&(U(),(C[795]|0)==0)){u=9;break e}else u=17;break}case 105:{H(l)|0&&(N(t+4|0,26,10)|0)==0&&te(),u=17;break}case 59:{u=17;break}case 47:switch(f[t+4>>1]|0){case 47:{Ce();break A}case 42:{he(1);break A}default:{u=16;break e}}default:{u=16;break e}}while(0);(u|0)==17&&(u=0,n[67]=n[70]),t=n[70]|0,o=n[71]|0}(u|0)==9?(t=n[70]|0,n[67]=t,u=19):(u|0)==16?(C[795]=0,n[70]=t,u=19):(u|0)==18&&(C[794]|0?t=0:(t=l,u=19));do if((u|0)==19){e:for(;;){if(o=t+2|0,n[70]=o,g=o,t>>>0>=(n[71]|0)>>>0){u=82;break}A:do switch(f[o>>1]|0){case 9:case 10:case 11:case 12:case 13:case 32:break;case 101:{(f[396]|0)==0&&H(o)|0&&(N(t+4|0,16,10)|0)==0&&U(),u=81;break}case 105:{H(o)|0&&(N(t+4|0,26,10)|0)==0&&te(),u=81;break}case 99:{H(o)|0&&(N(t+4|0,36,8)|0)==0&&j(f[t+12>>1]|0)|0&&(C[797]=1),u=81;break}case 40:{g=n[68]|0,o=f[396]|0,u=o&65535,n[g+(u<<3)>>2]=1,l=n[67]|0,f[396]=o+1<<16>>16,n[g+(u<<3)+4>>2]=l,u=81;break}case 41:{if(o=f[396]|0,!(o<<16>>16)){u=36;break e}o=o+-1<<16>>16,f[396]=o,l=f[395]|0,l<<16>>16!=0&&(B=n[(n[69]|0)+((l&65535)+-1<<2)>>2]|0,(n[B+20>>2]|0)==(n[(n[68]|0)+((o&65535)<<3)+4>>2]|0))&&(o=B+4|0,n[o>>2]|0||(n[o>>2]=g),n[B+12>>2]=t+4,f[395]=l+-1<<16>>16),u=81;break}case 123:{u=n[67]|0,g=n[61]|0,t=u;do if((f[u>>1]|0)==41&(g|0)!=0&&(n[g+4>>2]|0)==(u|0))if(o=n[62]|0,n[61]=o,o){n[o+28>>2]=0;break}else{n[57]=0;break}while(0);g=n[68]|0,l=f[396]|0,u=l&65535,n[g+(u<<3)>>2]=(C[797]|0)==0?2:6,f[396]=l+1<<16>>16,n[g+(u<<3)+4>>2]=t,C[797]=0,u=81;break}case 125:{if(t=f[396]|0,!(t<<16>>16)){u=49;break e}g=n[68]|0,u=t+-1<<16>>16,f[396]=u,(n[g+((u&65535)<<3)>>2]|0)==4&&ne(),u=81;break}case 39:{J(39),u=81;break}case 34:{J(34),u=81;break}case 47:switch(f[t+4>>1]|0){case 47:{Ce();break A}case 42:{he(1);break A}default:{t=n[67]|0,g=f[t>>1]|0;t:do if(kt(g)|0)switch(g<<16>>16){case 46:if(((f[t+-2>>1]|0)+-48&65535)<10){u=66;break t}else{u=69;break t}case 43:if((f[t+-2>>1]|0)==43){u=66;break t}else{u=69;break t}case 45:if((f[t+-2>>1]|0)==45){u=66;break t}else{u=69;break t}default:{u=69;break t}}else{switch(g<<16>>16){case 41:if(bt(n[(n[68]|0)+(K[396]<<3)+4>>2]|0)|0){u=69;break t}else{u=66;break t}case 125:break;default:{u=66;break t}}o=n[68]|0,l=K[396]|0,!(dt(n[o+(l<<3)+4>>2]|0)|0)&&(n[o+(l<<3)>>2]|0)!=6?u=66:u=69}while(0);t:do if((u|0)==66)if(u=0,Ae(t)|0)u=69;else{switch(g<<16>>16){case 0:{u=69;break t}case 47:{if(C[796]|0){u=69;break t}break}default:}l=n[3]|0,o=g;do{if(t>>>0<=l>>>0)break;t=t+-2|0,n[67]=t,o=f[t>>1]|0}while(!(ge(o)|0));if(ie(o)|0){do{if(t>>>0<=l>>>0)break;t=t+-2|0,n[67]=t}while(ie(f[t>>1]|0)|0);if(wt(t)|0){Ne(),C[796]=0,u=81;break A}else t=1}else t=1}while(0);(u|0)==69&&(Ne(),t=0),C[796]=t,u=81;break A}}case 96:{g=n[68]|0,l=f[396]|0,u=l&65535,n[g+(u<<3)+4>>2]=n[67],f[396]=l+1<<16>>16,n[g+(u<<3)>>2]=3,ne(),u=81;break}default:u=81}while(0);(u|0)==81&&(u=0,n[67]=n[70]),t=n[70]|0}if((u|0)==36){S(),t=0;break}else if((u|0)==49){S(),t=0;break}else if((u|0)==82){t=(C[794]|0)==0?(f[395]|f[396])<<16>>16==0:0;break}}while(0);return b=F,t|0}function U(){var t=0,o=0,l=0,g=0,u=0,B=0,F=0,d=0,w=0;B=n[70]|0,F=n[63]|0,w=B+12|0,n[70]=w,l=E(1)|0,t=n[70]|0,(t|0)==(w|0)&&!(re(l)|0)||(d=3);e:do if((d|0)==3){A:do switch(l<<16>>16){case 123:{for(n[70]=t+2,t=E(1)|0,l=n[70]|0;;){if(T(t)|0?(J(t),t=(n[70]|0)+2|0,n[70]=t):(v(t)|0,t=n[70]|0),E(1)|0,t=Ke(l,t)|0,t<<16>>16==44&&(n[70]=(n[70]|0)+2,t=E(1)|0),o=l,l=n[70]|0,t<<16>>16==125){d=15;break}if((l|0)==(o|0)){d=12;break}if(l>>>0>(n[71]|0)>>>0){d=14;break}}if((d|0)==12){S();break e}else if((d|0)==14){S();break e}else if((d|0)==15){n[70]=l+2;break A}break}case 42:{n[70]=t+2,E(1)|0,w=n[70]|0,Ke(w,w)|0;break}default:{switch(C[795]=0,l<<16>>16){case 100:{switch(B=t+14|0,n[70]=B,o=E(1)|0,o<<16>>16){case 97:{o=n[70]|0,(N(o+2|0,56,8)|0)==0&&(u=o+10|0,ie(f[u>>1]|0)|0)?(n[70]=u,g=E(0)|0,d=22):(o=97,d=31);break}case 102:{g=o,d=22;break}case 99:{o=n[70]|0,(N(o+2|0,36,8)|0)==0&&(g=o+10|0,w=f[g>>1]|0,j(w)|0|w<<16>>16==123)?(n[70]=g,w=E(1)|0,o=n[70]|0,v(w)|0,w<<16>>16==123?d=35:d=33):(o=99,d=31);break}default:v(o)|0,w=E(1)|0,o=n[70]|0,v(w)|0,w<<16>>16==59?d=35:d=33}t:do if((d|0)==22)if(o=n[70]|0,N(o+2|0,64,14)|0)o=g,d=31;else{if(l=o+16|0,o=f[l>>1]|0,!(j(o)|0))switch(o<<16>>16){case 40:case 42:break;default:{o=g,d=31;break t}}n[70]=l,o=E(1)|0,o<<16>>16==42?(n[70]=(n[70]|0)+2,l=E(1)|0):l=o,o=n[70]|0,v(l)|0,l<<16>>16==40?d=35:d=33}while(0);(d|0)==31?(v(o)|0,d=35):(d|0)==33&&(l=n[70]|0,l>>>0>o>>>0?(M(t,B,o,l),t=(n[70]|0)+-2|0):d=35),(d|0)==35&&(M(t,B,0,0),t=t+12|0),n[70]=t;break e}case 97:{n[70]=t+10,E(0)|0,t=n[70]|0,d=38;break}case 102:{d=38;break}case 99:{if((N(t+2|0,36,8)|0)==0&&(o=t+10|0,ge(f[o>>1]|0)|0)){n[70]=o,w=E(1)|0,d=n[70]|0,v(w)|0,w=n[70]|0,M(d,w,d,w),n[70]=(n[70]|0)+-2;break e}t=t+4|0,n[70]=t;break}case 108:case 118:break;default:break e}if((d|0)==38){n[70]=t+16,t=E(1)|0,t<<16>>16==42&&(n[70]=(n[70]|0)+2,t=E(1)|0),d=n[70]|0,v(t)|0,w=n[70]|0,M(d,w,d,w),n[70]=(n[70]|0)+-2;break e}t=t+4|0,n[70]=t,C[795]=0;t:for(;;){switch(n[70]=t+2,w=E(1)|0,t=n[70]|0,(v(w)|0)<<16>>16){case 91:case 123:break t;default:}if(o=n[70]|0,(o|0)==(t|0))break e;if(M(t,o,t,o),(E(1)|0)<<16>>16!=44)break;t=n[70]|0}n[70]=(n[70]|0)+-2;break e}}while(0);if(w=(E(1)|0)<<16>>16==102,t=n[70]|0,w&&(N(t+2|0,50,6)|0)==0)for(n[70]=t+8,x(B,E(1)|0),t=(F|0)==0?232:F+16|0;;){if(t=n[t>>2]|0,!t)break e;n[t+12>>2]=0,n[t+8>>2]=0,t=t+16|0}n[70]=t+-2}while(0)}function te(){var t=0,o=0,l=0,g=0,u=0,B=0;u=n[70]|0,t=u+12|0,n[70]=t;e:do switch((E(1)|0)<<16>>16){case 40:{if(o=n[68]|0,B=f[396]|0,l=B&65535,n[o+(l<<3)>>2]=5,t=n[70]|0,f[396]=B+1<<16>>16,n[o+(l<<3)+4>>2]=t,(f[n[67]>>1]|0)!=46){switch(n[70]=t+2,B=E(1)|0,Qe(u,n[70]|0,0,t),o=n[61]|0,l=n[69]|0,u=f[395]|0,f[395]=u+1<<16>>16,n[l+((u&65535)<<2)>>2]=o,B<<16>>16){case 39:{J(39);break}case 34:{J(34);break}default:{n[70]=(n[70]|0)+-2;break e}}switch(t=(n[70]|0)+2|0,n[70]=t,(E(1)|0)<<16>>16){case 44:{n[70]=(n[70]|0)+2,E(1)|0,u=n[61]|0,n[u+4>>2]=t,B=n[70]|0,n[u+16>>2]=B,C[u+24>>0]=1,n[70]=B+-2;break e}case 41:{f[396]=(f[396]|0)+-1<<16>>16,B=n[61]|0,n[B+4>>2]=t,n[B+12>>2]=(n[70]|0)+2,C[B+24>>0]=1,f[395]=(f[395]|0)+-1<<16>>16;break e}default:{n[70]=(n[70]|0)+-2;break e}}}break}case 46:{if(n[70]=(n[70]|0)+2,(E(1)|0)<<16>>16==109&&(o=n[70]|0,(N(o+2|0,44,6)|0)==0)){if(t=n[67]|0,!(Se(t)|0)&&(f[t>>1]|0)==46)break e;Qe(u,u,o+8|0,2)}break}case 42:case 39:case 34:{g=18;break}case 123:{if(t=n[70]|0,f[396]|0){n[70]=t+-2;break e}for(;!(t>>>0>=(n[71]|0)>>>0);){if(t=E(1)|0,T(t)|0)J(t);else if(t<<16>>16==125){g=33;break}t=(n[70]|0)+2|0,n[70]=t}if((g|0)==33&&(n[70]=(n[70]|0)+2),B=(E(1)|0)<<16>>16==102,t=n[70]|0,B&&N(t+2|0,50,6)|0){S();break e}if(n[70]=t+8,t=E(1)|0,T(t)|0){x(u,t);break e}else{S();break e}}default:(n[70]|0)==(t|0)?n[70]=u+10:g=18}while(0);do if((g|0)==18){if(f[396]|0){n[70]=(n[70]|0)+-2;break}for(t=n[71]|0,o=n[70]|0;;){if(o>>>0>=t>>>0){g=25;break}if(l=f[o>>1]|0,T(l)|0){g=23;break}B=o+2|0,n[70]=B,o=B}if((g|0)==23){x(u,l);break}else if((g|0)==25){S();break}}while(0)}function Ae(t){t=t|0;e:do switch(f[t>>1]|0){case 100:switch(f[t+-2>>1]|0){case 105:{t=y(t+-4|0,88,2)|0;break e}case 108:{t=y(t+-4|0,92,3)|0;break e}default:{t=0;break e}}case 101:switch(f[t+-2>>1]|0){case 115:switch(f[t+-4>>1]|0){case 108:{t=_(t+-6|0,101)|0;break e}case 97:{t=_(t+-6|0,99)|0;break e}default:{t=0;break e}}case 116:{t=y(t+-4|0,98,4)|0;break e}case 117:{t=y(t+-4|0,106,6)|0;break e}default:{t=0;break e}}case 102:{if((f[t+-2>>1]|0)==111&&(f[t+-4>>1]|0)==101)switch(f[t+-6>>1]|0){case 99:{t=y(t+-8|0,118,6)|0;break e}case 112:{t=y(t+-8|0,130,2)|0;break e}default:{t=0;break e}}else t=0;break}case 107:{t=y(t+-2|0,134,4)|0;break}case 110:{t=t+-2|0,_(t,105)|0?t=1:t=y(t,142,5)|0;break}case 111:{t=_(t+-2|0,100)|0;break}case 114:{t=y(t+-2|0,152,7)|0;break}case 116:{t=y(t+-2|0,166,4)|0;break}case 119:switch(f[t+-2>>1]|0){case 101:{t=_(t+-4|0,110)|0;break e}case 111:{t=y(t+-4|0,174,3)|0;break e}default:{t=0;break e}}default:t=0}while(0);return t|0}function x(t,o){t=t|0,o=o|0;var l=0,g=0;switch(l=(n[70]|0)+2|0,o<<16>>16){case 39:{J(39),g=5;break}case 34:{J(34),g=5;break}default:S()}do if((g|0)==5){if(Qe(t,l,n[70]|0,1),n[70]=(n[70]|0)+2,g=(E(0)|0)<<16>>16==97,o=n[70]|0,g&&(N(o+2|0,78,10)|0)==0){if(n[70]=o+12,(E(1)|0)<<16>>16!=123){n[70]=o;break}t=n[70]|0,l=t;e:for(;;){switch(n[70]=l+2,l=E(1)|0,l<<16>>16){case 39:{J(39),n[70]=(n[70]|0)+2,l=E(1)|0;break}case 34:{J(34),n[70]=(n[70]|0)+2,l=E(1)|0;break}default:l=v(l)|0}if(l<<16>>16!=58){g=16;break}switch(n[70]=(n[70]|0)+2,(E(1)|0)<<16>>16){case 39:{J(39);break}case 34:{J(34);break}default:{g=20;break e}}switch(n[70]=(n[70]|0)+2,(E(1)|0)<<16>>16){case 125:{g=25;break e}case 44:break;default:{g=24;break e}}if(n[70]=(n[70]|0)+2,(E(1)|0)<<16>>16==125){g=25;break}l=n[70]|0}if((g|0)==16){n[70]=o;break}else if((g|0)==20){n[70]=o;break}else if((g|0)==24){n[70]=o;break}else if((g|0)==25){g=n[61]|0,n[g+16>>2]=t,n[g+12>>2]=(n[70]|0)+2;break}}n[70]=o+-2}while(0)}function ne(){var t=0,o=0,l=0,g=0;o=n[71]|0,l=n[70]|0;e:for(;;){if(t=l+2|0,l>>>0>=o>>>0){o=10;break}switch(f[t>>1]|0){case 96:{o=7;break e}case 36:{if((f[l+4>>1]|0)==123){o=6;break e}break}case 92:{t=l+4|0;break}default:}l=t}(o|0)==6?(t=l+4|0,n[70]=t,o=n[68]|0,g=f[396]|0,l=g&65535,n[o+(l<<3)>>2]=4,f[396]=g+1<<16>>16,n[o+(l<<3)+4>>2]=t):(o|0)==7?(n[70]=t,l=n[68]|0,g=(f[396]|0)+-1<<16>>16,f[396]=g,(n[l+((g&65535)<<3)>>2]|0)!=3&&S()):(o|0)==10&&(n[70]=t,S())}function E(t){t=t|0;var o=0,l=0,g=0;l=n[70]|0;e:do{o=f[l>>1]|0;A:do if(o<<16>>16!=47)if(t){if(j(o)|0)break;break e}else{if(ie(o)|0)break;break e}else switch(f[l+2>>1]|0){case 47:{Ce();break A}case 42:{he(t);break A}default:{o=47;break e}}while(0);g=n[70]|0,l=g+2|0,n[70]=l}while(g>>>0<(n[71]|0)>>>0);return o|0}function J(t){t=t|0;var o=0,l=0,g=0,u=0;for(u=n[71]|0,o=n[70]|0;;){if(g=o+2|0,o>>>0>=u>>>0){o=9;break}if(l=f[g>>1]|0,l<<16>>16==t<<16>>16){o=10;break}if(l<<16>>16==92)l=o+4|0,(f[l>>1]|0)==13?(o=o+6|0,o=(f[o>>1]|0)==10?o:l):o=l;else if(Le(l)|0){o=9;break}else o=g}(o|0)==9?(n[70]=g,S()):(o|0)==10&&(n[70]=g)}function Ke(t,o){t=t|0,o=o|0;var l=0,g=0,u=0,B=0;return l=n[70]|0,g=f[l>>1]|0,B=(t|0)==(o|0),u=B?0:t,B=B?0:o,g<<16>>16==97&&(n[70]=l+4,l=E(1)|0,t=n[70]|0,T(l)|0?(J(l),o=(n[70]|0)+2|0,n[70]=o):(v(l)|0,o=n[70]|0),g=E(1)|0,l=n[70]|0),(l|0)!=(t|0)&&M(t,o,u,B),g|0}function Qe(t,o,l,g){t=t|0,o=o|0,l=l|0,g=g|0;var u=0,B=0;u=n[65]|0,n[65]=u+32,B=n[61]|0,n[((B|0)==0?228:B+28|0)>>2]=u,n[62]=B,n[61]=u,n[u+8>>2]=t,(g|0)==2?t=l:t=(g|0)==1?l+2|0:0,n[u+12>>2]=t,n[u>>2]=o,n[u+4>>2]=l,n[u+16>>2]=0,n[u+20>>2]=g,C[u+24>>0]=(g|0)==1&1,n[u+28>>2]=0}function Et(){var t=0,o=0,l=0;l=n[71]|0,o=n[70]|0;e:for(;;){if(t=o+2|0,o>>>0>=l>>>0){o=6;break}switch(f[t>>1]|0){case 13:case 10:{o=6;break e}case 93:{o=7;break e}case 92:{t=o+4|0;break}default:}o=t}return(o|0)==6?(n[70]=t,S(),t=0):(o|0)==7&&(n[70]=t,t=93),t|0}function Ne(){var t=0,o=0,l=0;e:for(;;){if(t=n[70]|0,o=t+2|0,n[70]=o,t>>>0>=(n[71]|0)>>>0){l=7;break}switch(f[o>>1]|0){case 13:case 10:{l=7;break e}case 47:break e;case 91:{Et()|0;break}case 92:{n[70]=t+4;break}default:}}(l|0)==7&&S()}function dt(t){switch(t=t|0,f[t>>1]|0){case 62:{t=(f[t+-2>>1]|0)==61;break}case 41:case 59:{t=1;break}case 104:{t=y(t+-2|0,200,4)|0;break}case 121:{t=y(t+-2|0,208,6)|0;break}case 101:{t=y(t+-2|0,220,3)|0;break}default:t=0}return t|0}function he(t){t=t|0;var o=0,l=0,g=0,u=0,B=0;for(u=(n[70]|0)+2|0,n[70]=u,l=n[71]|0;o=u+2|0,!(u>>>0>=l>>>0||(g=f[o>>1]|0,!t&&Le(g)|0));){if(g<<16>>16==42&&(f[u+4>>1]|0)==47){B=8;break}u=o}(B|0)==8&&(n[70]=o,o=u+4|0),n[70]=o}function N(t,o,l){t=t|0,o=o|0,l=l|0;var g=0,u=0;e:do if(!l)t=0;else{for(;g=C[t>>0]|0,u=C[o>>0]|0,g<<24>>24==u<<24>>24;)if(l=l+-1|0,l)t=t+1|0,o=o+1|0;else{t=0;break e}t=(g&255)-(u&255)|0}while(0);return t|0}function re(t){t=t|0;e:do switch(t<<16>>16){case 38:case 37:case 33:{t=1;break}default:if((t&-8)<<16>>16==40|(t+-58&65535)<6)t=1;else{switch(t<<16>>16){case 91:case 93:case 94:{t=1;break e}default:}t=(t+-123&65535)<4}}while(0);return t|0}function kt(t){t=t|0;e:do switch(t<<16>>16){case 38:case 37:case 33:break;default:if(!((t+-58&65535)<6|(t+-40&65535)<7&t<<16>>16!=41)){switch(t<<16>>16){case 91:case 94:break e;default:}return t<<16>>16!=125&(t+-123&65535)<4|0}}while(0);return 1}function Je(t){t=t|0;var o=0;o=f[t>>1]|0;e:do if((o+-9&65535)>=5){switch(o<<16>>16){case 160:case 32:{o=1;break e}default:}if(re(o)|0)return o<<16>>16!=46|(Se(t)|0)|0;o=0}else o=1;while(0);return o|0}function It(t){t=t|0;var o=0,l=0,g=0,u=0;return l=b,b=b+16|0,g=l,n[g>>2]=0,n[64]=t,o=n[3]|0,u=o+(t<<1)|0,t=u+2|0,f[u>>1]=0,n[g>>2]=t,n[65]=t,n[57]=0,n[61]=0,n[59]=0,n[58]=0,n[63]=0,n[60]=0,b=l,o|0}function y(t,o,l){t=t|0,o=o|0,l=l|0;var g=0,u=0;return g=t+(0-l<<1)|0,u=g+2|0,t=n[3]|0,u>>>0>=t>>>0&&(N(u,o,l<<1)|0)==0?(u|0)==(t|0)?t=1:t=Je(g)|0:t=0,t|0}function M(t,o,l,g){t=t|0,o=o|0,l=l|0,g=g|0;var u=0,B=0;u=n[65]|0,n[65]=u+20,B=n[63]|0,n[((B|0)==0?232:B+16|0)>>2]=u,n[63]=u,n[u>>2]=t,n[u+4>>2]=o,n[u+8>>2]=l,n[u+12>>2]=g,n[u+16>>2]=0}function wt(t){switch(t=t|0,f[t>>1]|0){case 107:{t=y(t+-2|0,134,4)|0;break}case 101:{(f[t+-2>>1]|0)==117?t=y(t+-4|0,106,6)|0:t=0;break}default:t=0}return t|0}function _(t,o){t=t|0,o=o|0;var l=0;return l=n[3]|0,l>>>0<=t>>>0&&(f[t>>1]|0)==o<<16>>16?(l|0)==(t|0)?l=1:l=ge(f[t+-2>>1]|0)|0:l=0,l|0}function ge(t){t=t|0;e:do if((t+-9&65535)<5)t=1;else{switch(t<<16>>16){case 32:case 160:{t=1;break e}default:}t=t<<16>>16!=46&(re(t)|0)}while(0);return t|0}function Ce(){var t=0,o=0,l=0;t=n[71]|0,l=n[70]|0;e:for(;o=l+2|0,!(l>>>0>=t>>>0);)switch(f[o>>1]|0){case 13:case 10:break e;default:l=o}n[70]=o}function v(t){for(t=t|0;!(j(t)|0||re(t)|0);)if(t=(n[70]|0)+2|0,n[70]=t,t=f[t>>1]|0,!(t<<16>>16)){t=0;break}return t|0}function pt(){var t=0;switch(t=n[(n[59]|0)+20>>2]|0,t|0){case 1:{t=-1;break}case 2:{t=-2;break}default:t=t-(n[3]|0)>>1}return t|0}function bt(t){return t=t|0,!(y(t,180,5)|0)&&!(y(t,190,3)|0)?t=y(t,196,2)|0:t=1,t|0}function ie(t){switch(t=t|0,t<<16>>16){case 160:case 32:case 12:case 11:case 9:{t=1;break}default:t=0}return t|0}function Se(t){return t=t|0,(f[t>>1]|0)==46&&(f[t+-2>>1]|0)==46?t=(f[t+-4>>1]|0)==46:t=0,t|0}function H(t){return t=t|0,(n[3]|0)==(t|0)?t=1:t=Je(t+-2|0)|0,t|0}function mt(){var t=0;return t=n[(n[60]|0)+12>>2]|0,t?t=t-(n[3]|0)>>1:t=-1,t|0}function Dt(){var t=0;return t=n[(n[59]|0)+12>>2]|0,t?t=t-(n[3]|0)>>1:t=-1,t|0}function yt(){var t=0;return t=n[(n[60]|0)+8>>2]|0,t?t=t-(n[3]|0)>>1:t=-1,t|0}function Kt(){var t=0;return t=n[(n[59]|0)+16>>2]|0,t?t=t-(n[3]|0)>>1:t=-1,t|0}function Nt(){var t=0;return t=n[(n[59]|0)+4>>2]|0,t?t=t-(n[3]|0)>>1:t=-1,t|0}function Jt(){var t=0;return t=n[59]|0,t=n[((t|0)==0?228:t+28|0)>>2]|0,n[59]=t,(t|0)!=0|0}function St(){var t=0;return t=n[60]|0,t=n[((t|0)==0?232:t+16|0)>>2]|0,n[60]=t,(t|0)!=0|0}function S(){C[794]=1,n[66]=(n[70]|0)-(n[3]|0)>>1,n[70]=(n[71]|0)+2}function j(t){return t=t|0,(t|128)<<16>>16==160|(t+-9&65535)<5|0}function T(t){return t=t|0,t<<16>>16==39|t<<16>>16==34|0}function Lt(){return(n[(n[59]|0)+8>>2]|0)-(n[3]|0)>>1|0}function vt(){return(n[(n[60]|0)+4>>2]|0)-(n[3]|0)>>1|0}function Le(t){return t=t|0,t<<16>>16==13|t<<16>>16==10|0}function Ut(){return(n[n[59]>>2]|0)-(n[3]|0)>>1|0}function xt(){return(n[n[60]>>2]|0)-(n[3]|0)>>1|0}function Ft(){return k[(n[59]|0)+24>>0]|0|0}function Rt(t){t=t|0,n[3]=t}function qt(){return(C[795]|0)!=0|0}function Mt(){return n[66]|0}function Gt(t){return t=t|0,b=t+992+15&-16,992}return{su:Gt,ai:Kt,e:Mt,ee:vt,ele:mt,els:yt,es:xt,f:qt,id:pt,ie:Nt,ip:Ft,is:Ut,p:L,re:St,ri:Jt,sa:It,se:Dt,ses:Rt,ss:Lt}}(typeof self<"u"?self:global,{},oe),de=D.su(Z-(2<<17))}const r=m.length+1;D.ses(de),D.sa(r-1),Me(m,new Uint16Array(oe,de,r)),D.p()||(I=D.e(),R());const s=[],c=[];for(;D.ri();){const a=D.is(),h=D.ie(),Q=D.ai(),C=D.id(),f=D.ss(),n=D.se();let k;D.ip()&&(k=ke(C===-1?a:a+1,m.charCodeAt(C===-1?a-1:a))),s.push({n:k,s:a,e:h,ss:f,se:n,d:C,a:Q})}for(;D.re();){const a=D.es(),h=D.ee(),Q=D.els(),C=D.ele(),f=m.charCodeAt(a),n=Q>=0?m.charCodeAt(Q):-1;c.push({s:a,e:h,ls:Q,le:C,n:f===34||f===39?ke(a+1,f):m.slice(a,h),ln:Q<0?void 0:n===34||n===39?ke(Q+1,n):m.slice(Q,C)})}return[s,c,!!D.f()]}function ke(i,e){I=i;let A="",r=I;for(;;){I>=m.length&&R();const s=m.charCodeAt(I);if(s===e)break;s===92?(A+=m.slice(r,I),A+=gA(),r=I):(s===8232||s===8233||Ye(s)&&R(),++I)}return A+=m.slice(r,I++),A}function gA(){let i=m.charCodeAt(++I);switch(++I,i){case 110:return` +`;case 114:return"\r";case 120:return String.fromCharCode(Ie(2));case 117:return function(){const e=m.charCodeAt(I);let A;return e===123?(++I,A=Ie(m.indexOf("}",I)-I),++I,A>1114111&&R()):A=Ie(4),A<=65535?String.fromCharCode(A):(A-=65536,String.fromCharCode(55296+(A>>10),56320+(1023&A)))}();case 116:return" ";case 98:return"\b";case 118:return"\v";case 102:return"\f";case 13:m.charCodeAt(I)===10&&++I;case 10:return"";case 56:case 57:R();default:if(i>=48&&i<=55){let e=m.substr(I-1,3).match(/^[0-7]+/)[0],A=parseInt(e,8);return A>255&&(e=e.slice(0,-1),A=parseInt(e,8)),I+=e.length-1,i=m.charCodeAt(I),e==="0"&&i!==56&&i!==57||R(),String.fromCharCode(A)}return Ye(i)?"":String.fromCharCode(i)}}function Ie(i){const e=I;let A=0,r=0;for(let s=0;s=97)c=a-97+10;else if(a>=65)c=a-65+10;else{if(!(a>=48&&a<=57))break;c=a-48}if(c>=16)break;r=a,A=16*A+c}else r!==95&&s!==0||R(),r=a}return r!==95&&I-e===i||R(),A}function Ye(i){return i===13||i===10}function R(){throw Object.assign(Error(`Parse error ${Ge}:${m.slice(0,I).split(` +`).length}:${I-m.lastIndexOf(` +`,I-1)}`),{idx:I})}let Oe=!1;qe.then(()=>{Oe=!0});const CA=i=>Oe?Re(i):hA(i),BA=`.then((mod)=>{ + const exports = Object.keys(mod); + if( + exports.length===1&&exports[0]==='default'&&mod.default.__esModule + ){ + return mod.default + } + return mod +})`.replace(/[\n\t]+/g,"");function we(i,e){if(!e.includes("import"))return;const A=CA(e)[0].filter(s=>s.d>-1);if(A.length===0)return;const r=new ye(e);for(const s of A)r.appendRight(s.se,BA);return{code:r.toString(),map:r.generateMap({source:i,hires:!0})}}function EA(i){try{const e=G.default.readFileSync(i,"utf8");return JSON.parse(e)}catch{}}const _e=()=>Math.floor(Date.now()/1e8);class dA extends Map{cacheDirectory=Y.default.join($t.default.tmpdir(),"esbuild-kit");cacheFiles;constructor(){super(),G.default.mkdirSync(this.cacheDirectory,{recursive:!0}),this.cacheFiles=G.default.readdirSync(this.cacheDirectory).map(e=>{const[A,r]=e.split("-");return{time:Number(A),key:r,fileName:e}}),setImmediate(()=>this.expireDiskCache())}get(e){const A=super.get(e);if(A)return A;const r=this.cacheFiles.find(a=>a.key===e);if(!r)return;const s=Y.default.join(this.cacheDirectory,r.fileName),c=EA(s);if(!c){G.default.promises.unlink(s).then(()=>{const a=this.cacheFiles.indexOf(r);this.cacheFiles.splice(a,1)},()=>{});return}return super.set(e,c),c}set(e,A){if(super.set(e,A),A){const r=_e();G.default.promises.writeFile(Y.default.join(this.cacheDirectory,`${r}-${e}`),JSON.stringify(A)).catch(()=>{})}return this}expireDiskCache(){const e=_e();for(const A of this.cacheFiles)e-A.time>7&&G.default.promises.unlink(Y.default.join(this.cacheDirectory,A.fileName)).catch(()=>{})}}var ae=process.env.ESBK_DISABLE_CACHE?new Map:new dA;const He=",".charCodeAt(0),kA=";".charCodeAt(0),je="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",Te=new Uint8Array(64),Pe=new Uint8Array(128);for(let i=0;i>>=1,h&&(s=-2147483648|-s),A[r]+=s,e}function Xe(i,e,A){return e>=A?!1:i.charCodeAt(e)!==He}function pA(i){i.sort(bA)}function bA(i,e){return i[0]-e[0]}function mA(i){const e=new Int32Array(5),A=1024*16,r=A-36,s=new Uint8Array(A),c=s.subarray(0,r);let a=0,h="";for(let Q=0;Q0&&(a===A&&(h+=pe.decode(s),a=0),s[a++]=kA),C.length!==0){e[0]=0;for(let f=0;fr&&(h+=pe.decode(c),s.copyWithin(0,r,a),a-=r),f>0&&(s[a++]=He),a=V(s,a,e,n,0),n.length!==1&&(a=V(s,a,e,n,1),a=V(s,a,e,n,2),a=V(s,a,e,n,3),n.length!==4&&(a=V(s,a,e,n,4)))}}}return h+pe.decode(s.subarray(0,a))}function V(i,e,A,r,s){const c=r[s];let a=c-A[s];A[s]=c,a=a<0?-a<<1|1:a<<1;do{let h=a&31;a>>>=5,a>0&&(h|=32),i[e++]=Te[h]}while(a>0);return e}const DA=/^[\w+.-]+:\/\//,yA=/^([\w+.-]+:)\/\/([^@/#?]*@)?([^:/#?]*)(:\d+)?(\/[^#?]*)?/,KA=/^file:(?:\/\/((?![a-z]:)[^/]*)?)?(\/?.*)/i;function NA(i){return DA.test(i)}function JA(i){return i.startsWith("//")}function $e(i){return i.startsWith("/")}function SA(i){return i.startsWith("file:")}function ce(i){const e=yA.exec(i);return Ze(e[1],e[2]||"",e[3],e[4]||"",e[5]||"/")}function LA(i){const e=KA.exec(i),A=e[2];return Ze("file:","",e[1]||"","",$e(A)?A:"/"+A)}function Ze(i,e,A,r,s){return{scheme:i,user:e,host:A,port:r,path:s,relativePath:!1}}function We(i){if(JA(i)){const A=ce("http:"+i);return A.scheme="",A}if($e(i)){const A=ce("http://foo.com"+i);return A.scheme="",A.host="",A}if(SA(i))return LA(i);if(NA(i))return ce(i);const e=ce("http://foo.com/"+i);return e.scheme="",e.host="",e.relativePath=!0,e}function vA(i){if(i.endsWith("/.."))return i;const e=i.lastIndexOf("/");return i.slice(0,e+1)}function UA(i,e){!i.relativePath||(Ve(e),i.path==="/"?i.path=e.path:i.path=vA(e.path)+i.path,i.relativePath=e.relativePath)}function Ve(i){const{relativePath:e}=i,A=i.path.split("/");let r=1,s=0,c=!1;for(let h=1;h>1),c=i[s][q]-e;if(c===0)return le=!0,s;c<0?A=s+1:r=s-1}return le=!1,A-1}function OA(i,e,A){for(let r=A+1;r=0&&i[r][q]===e;A=r--);return A}function HA(){return{lastKey:-1,lastNeedle:-1,lastIndex:-1}}function jA(i,e,A,r){const{lastKey:s,lastNeedle:c,lastIndex:a}=A;let h=0,Q=i.length-1;if(r===s){if(e===c)return le=a!==-1&&i[a][q]===e,a;e>=c?h=a===-1?0:a:Q=a}return A.lastKey=r,A.lastNeedle=e,A.lastIndex=YA(i,e,h,Q)}const tt=-1,TA=1;let be,At;class nt{constructor(e,A){this._decodedMemo=HA(),this._bySources=void 0,this._bySourceMemos=void 0;const r=typeof e=="string";if(!r&&e._decodedMemo)return e;const s=r?JSON.parse(e):e,{version:c,file:a,names:h,sourceRoot:Q,sources:C,sourcesContent:f}=s;this.version=c,this.file=a,this.names=h,this.sourceRoot=Q,this.sources=C,this.sourcesContent=f;const n=ze(Q||"",FA(A));this.resolvedSources=C.map(K=>ze(K||"",n));const{mappings:k}=s;typeof k=="string"?(this._encoded=k,this._decoded=void 0):(this._encoded=void 0,this._decoded=RA(k,r))}}be=i=>i._decoded||(i._decoded=IA(i._encoded)),At=(i,e,A)=>{const r=be(i);return e>=r.length?null:PA(r[e],i._decodedMemo,e,A,TA)};function PA(i,e,A,r,s){let c=jA(i,r,e,A);return le?c=(s===tt?OA:_A)(i,r,c):s===tt&&c++,c===-1||c===i.length?null:i[c]}let rt,ue;class it{constructor(){this._indexes={__proto__:null},this.array=[]}}rt=(i,e)=>i._indexes[e],ue=(i,e)=>{const A=rt(i,e);if(A!==void 0)return A;const{array:r,_indexes:s}=i;return s[e]=r.push(e)-1};let st,ot,me,at;class XA{constructor({file:e,sourceRoot:A}={}){this._names=new it,this._sources=new it,this._sourcesContent=[],this._mappings=[],this.file=e,this.sourceRoot=A}}st=(i,e,A,r,s,c,a)=>{const{_mappings:h,_sources:Q,_sourcesContent:C,_names:f}=i,n=$A(h,e);if(r==null){const L=[A],U=ct(n,A,L);return lt(n,U,L)}const k=ue(Q,r),K=a?[A,k,s,c,ue(f,a)]:[A,k,s,c],b=ct(n,A,K);k===C.length&&(C[k]=null),lt(n,b,K)},ot=(i,e,A)=>{const{_sources:r,_sourcesContent:s}=i;s[ue(r,e)]=A},me=i=>{const{file:e,sourceRoot:A,_mappings:r,_sources:s,_sourcesContent:c,_names:a}=i;return{version:3,file:e,names:a.array,sourceRoot:A||void 0,sources:s.array,sourcesContent:c,mappings:r}},at=i=>{const e=me(i);return Object.assign(Object.assign({},e),{mappings:mA(e.mappings)})};function $A(i,e){for(let A=i.length;A<=e;A++)i[A]=[];return i[e]}function ct(i,e,A){let r=i.length;for(let s=r-1;s>=0;s--,r--){const c=i[s],a=c[0];if(a>e)continue;if(ae;r--)i[r]=i[r-1];i[e]=A}}const ut={source:null,column:null,line:null,name:null,content:null},WA=[];function ft(i,e,A,r){return{map:i,sources:e,source:A,content:r}}function Qt(i,e){return ft(i,e,"",null)}function VA(i,e){return ft(null,WA,i,e)}function zA(i){const e=new XA({file:i.map.file}),{sources:A,map:r}=i,s=r.names,c=be(r);for(let a=0;anew nt(c,"")),r=A.pop();for(let c=0;c1)throw new Error(`Transformation map ${c} must have exactly one source file. +Did you specify these with the most recent transformation maps first?`);let s=gt(r,e,"",0);for(let c=A.length-1;c>=0;c--)s=Qt(A[c],[s]);return s}function gt(i,e,A,r){const{resolvedSources:s,sourcesContent:c}=i,a=r+1,h=s.map((Q,C)=>{const f={importer:A,depth:a,source:Q||"",content:void 0},n=e(f.source,f),{source:k,content:K}=f;if(n)return gt(new nt(n,k),e,k,a);const b=K!==void 0?K:c?c[C]:null;return VA(k,b)});return Qt(i,h)}class An{constructor(e,A){const r=A.decodedMappings?me(e):at(e);this.version=r.version,this.file=r.file,this.mappings=r.mappings,this.names=r.names,this.sourceRoot=r.sourceRoot,this.sources=r.sources,A.excludeContent||(this.sourcesContent=r.sourcesContent)}toString(){return JSON.stringify(this)}}function Ct(i,e,A){const r=typeof A=="object"?A:{excludeContent:!!A,decodedMappings:!1},s=tn(i,e);return new An(zA(s),r)}function nn(i,e,A){const r=[],s=[],c={code:e};for(const a of A){const h=a(i,c.code);h&&(Object.assign(c,h),r.unshift(h.map),h.warnings&&s.push(...h.warnings))}return{...c,map:Ct(r,()=>null),warnings:s}}async function rn(i,e,A){const r=[],s=[],c={code:e};for(const a of A){const h=await a(i,c.code);h&&(Object.assign(c,h),r.unshift(h.map),h.warnings&&s.push(...h.warnings))}return{...c,map:Ct(r,()=>null),warnings:s}}const sn=process.versions.node,Bt=i=>{const e={target:`node${sn}`,loader:"default",sourcemap:!0,minifyWhitespace:!0,keepNames:!0,...i};if(e.sourcefile){const{sourcefile:A}=e,r=Y.default.extname(A);r?(r===".cts"||r===".mts")&&(e.sourcefile=`${A.slice(0,-3)}ts`):e.sourcefile+=".js"}return e};function on(i,e,A){const r={};e.endsWith(".cjs")||e.endsWith(".cts")||(r["import.meta.url"]=`'${Ot.pathToFileURL(e)}'`);const s=Bt({format:"cjs",sourcefile:e,define:r,banner:"(()=>{",footer:"})()",...A}),c=ve(i+JSON.stringify(s)+se.version);let a=ae.get(c);if(a||(a=nn(e,i,[(h,Q)=>{const C=se.transformSync(Q,s);return s.sourcefile!==h&&(C.map=C.map.replace(JSON.stringify(s.sourcefile),JSON.stringify(h))),C},we]),ae.set(c,a)),a.warnings&&a.warnings.length>0){const{warnings:h}=a;for(const Q of h)console.log(Q)}return a}async function an(i,e,A){const r=Bt({format:"esm",sourcefile:e,...A}),s=ve(i+JSON.stringify(r)+se.version);let c=ae.get(s);if(c||(c=await rn(e,i,[async(a,h)=>{const Q=await se.transform(h,r);return r.sourcefile!==a&&(Q.map=Q.map.replace(JSON.stringify(r.sourcefile),JSON.stringify(a))),Q},we]),ae.set(s,c)),c.warnings&&c.warnings.length>0){const{warnings:a}=c;for(const h of a)console.log(h)}return c}const cn={".js":".ts",".cjs":".cts",".mjs":".mts"};function ln(i){const e=Y.default.extname(i),A=cn[e];if(A)return i.slice(0,-e.length)+A}const De=process.versions.node.split(".").map(Number),un=i=>De[0]-i[0]||De[1]-i[1]||De[2]-i[2];exports.compareNodeVersion=un,exports.installSourceMapSupport=Wt,exports.resolveTsPath=ln,exports.transform=an,exports.transformDynamicImport=we,exports.transformSync=on; diff --git a/node_modules/@esbuild-kit/core-utils/node_modules/.bin/esbuild b/node_modules/@esbuild-kit/core-utils/node_modules/.bin/esbuild new file mode 120000 index 0000000..eeb5545 --- /dev/null +++ b/node_modules/@esbuild-kit/core-utils/node_modules/.bin/esbuild @@ -0,0 +1 @@ +../../../../esbuild/bin/esbuild \ No newline at end of file diff --git a/node_modules/@esbuild-kit/core-utils/package.json b/node_modules/@esbuild-kit/core-utils/package.json new file mode 100644 index 0000000..4a91880 --- /dev/null +++ b/node_modules/@esbuild-kit/core-utils/package.json @@ -0,0 +1,33 @@ +{ + "name": "@esbuild-kit/core-utils", + "version": "3.1.0", + "publishConfig": { + "access": "public" + }, + "license": "MIT", + "repository": "esbuild-kit/core-utils", + "author": { + "name": "Hiroki Osame", + "email": "hiroki.osame@gmail.com" + }, + "files": [ + "dist" + ], + "main": "./dist/index.js", + "types": "./dist/index.d.ts", + "exports": { + "types": "./dist/index.d.ts", + "default": "./dist/index.js" + }, + "imports": { + "#esbuild-kit/core-utils": { + "types": "./src/index.ts", + "development": "./src/index.ts", + "default": "./dist/index.js" + } + }, + "dependencies": { + "esbuild": "~0.17.6", + "source-map-support": "^0.5.21" + } +} \ No newline at end of file diff --git a/node_modules/@esbuild-kit/esm-loader/LICENSE b/node_modules/@esbuild-kit/esm-loader/LICENSE new file mode 100644 index 0000000..bf183d2 --- /dev/null +++ b/node_modules/@esbuild-kit/esm-loader/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) Hiroki Osame + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. \ No newline at end of file diff --git a/node_modules/@esbuild-kit/esm-loader/README.md b/node_modules/@esbuild-kit/esm-loader/README.md new file mode 100644 index 0000000..3a60a11 --- /dev/null +++ b/node_modules/@esbuild-kit/esm-loader/README.md @@ -0,0 +1,103 @@ +# esm-loader + +Node.js `import` hook to instantaneously transform TypeScript to ESM on demand using [esbuild](https://esbuild.github.io/). + +### Features +- Transforms TypeScript to ESM on demand +- Classic Node.js resolution (extensionless & directory imports) +- Cached for performance boost +- Supports Node.js v12.20.0+ +- Handles `node:` import prefixes +- Resolves `tsconfig.json` [`paths`](https://www.typescriptlang.org/tsconfig#paths) + +> **Tip:** +> +> _esm-loader_ doesn't hook into `require()` calls or transform CommonJS files (`.js` in commonjs package, `.cjs`, `.cts`). +> +> Use this with [cjs-loader](https://github.com/esbuild-kit/cjs-loader) for CommonJS support. Alternatively, use [tsx](https://github.com/esbuild-kit/tsx) to handle them both automatically. + +## Install + +```sh +npm install --save-dev @esbuild-kit/esm-loader +``` + +## Usage + +Pass `@esbuild-kit/esm-loader` into the [`--loader`](https://nodejs.org/api/cli.html#--experimental-loadermodule) flag. +```sh +node --loader @esbuild-kit/esm-loader ./file.ts +``` + +### TypeScript configuration +The following properties are used from `tsconfig.json` in the working directory: +- [`strict`](https://www.typescriptlang.org/tsconfig#strict): Whether to transform to strict mode +- [`jsx`](https://esbuild.github.io/api/#jsx): Whether to transform JSX + > **Warning:** When set to `preserve`, the JSX syntax will remain untransformed. To prevent Node.js from throwing a syntax error, chain another Node.js loader that can transform JSX to JS. +- [`jsxFactory`](https://esbuild.github.io/api/#jsx-factory): How to transform JSX +- [`jsxFragmentFactory`](https://esbuild.github.io/api/#jsx-fragment): How to transform JSX Fragments +- [`jsxImportSource`](https://www.typescriptlang.org/tsconfig#jsxImportSource): Where to import JSX functions from +- [`allowJs`](https://www.typescriptlang.org/tsconfig#allowJs): Whether to apply the tsconfig to JS files +- [`paths`](https://www.typescriptlang.org/tsconfig#paths): For resolving aliases + +#### Custom `tsconfig.json` path +By default, `tsconfig.json` will be detected from the current working directory. + +To set a custom path, use the `ESBK_TSCONFIG_PATH` environment variable: + +```sh +ESBK_TSCONFIG_PATH=./path/to/tsconfig.custom.json node --loader @esbuild-kit/esm-loader ./file.ts +``` + +### Cache +Modules transformations are cached in the system cache directory ([`TMPDIR`](https://en.wikipedia.org/wiki/TMPDIR)). Transforms are cached by content hash so duplicate dependencies are not re-transformed. + +Set environment variable `ESBK_DISABLE_CACHE` to a truthy value to disable the cache: + +```sh +ESBK_DISABLE_CACHE=1 node --loader @esbuild-kit/esm-loader ./file.ts +``` + +## FAQ + +### Can it import JSON modules? +Yes. This loader transpiles JSON modules so it's also compatible with named imports. + +### Can it import ESM modules over network? + +Node.js has built-in support for network imports [behind the `--experimental-network-imports` flag](https://nodejs.org/api/esm.html#network-based-loading-is-not-enabled-by-default). + +You can pass it in with `esm-loader`: + +```sh +node --loader @esbuild-kit/esm-loader --experimental-network-imports ./file.ts +``` + +### Can it resolve files without an extension? + +In ESM, import paths must be explicit (must include file name and extension). + +For backwards compatibility, this loader adds support for classic Node resolution for extensions: `.js`, `.json`, `.ts`, `.tsx`, `.jsx`. Resolving a `index` file by the directory name works too. + +```js +import file from './file' // -> ./file.js +import directory from './directory' // -> ./directory/index.js +``` + +### Can it use Node.js's CommonJS resolution algorithm? + +ESM import resolution expects explicit import paths, whereas CommonJS resolution expects implicit imports (eg. extensionless & directory imports). + +As a result of this change, Node.js changes how it imports a path that matches both a file and directory. In ESM, the directory would be imported, but in CJS, the file would be imported. + +To use to the CommonJS resolution algorithm, use the [`--experimental-specifier-resolution=node`](https://nodejs.org/api/cli.html#--experimental-specifier-resolutionmode) flag. + +```sh +node --loader @esbuild-kit/esm-loader --experimental-specifier-resolution=node ./file.ts +``` + +## Related + +- [tsx](https://github.com/esbuild-kit/tsx) - Node.js runtime powered by esbuild using [`@esbuild-kit/cjs-loader`](https://github.com/esbuild-kit/cjs-loader) and [`@esbuild-kit/esm-loader`](https://github.com/esbuild-kit/esm-loader). + +- [@esbuild-kit/cjs-loader](https://github.com/esbuild-kit/cjs-loader) - TypeScript & ESM to CJS transpiler using the Node.js loader API. diff --git a/node_modules/@esbuild-kit/esm-loader/dist/index.js b/node_modules/@esbuild-kit/esm-loader/dist/index.js new file mode 100755 index 0000000..53f38c7 --- /dev/null +++ b/node_modules/@esbuild-kit/esm-loader/dist/index.js @@ -0,0 +1 @@ +import g from"path";import{fileURLToPath as _,pathToFileURL as R}from"url";import{installSourceMapSupport as F,compareNodeVersion as w,resolveTsPath as U,transform as P,transformDynamicImport as l}from"@esbuild-kit/core-utils";import{parseTsconfig as D,getTsconfig as I,createFilesMatcher as W,createPathsMatcher as v}from"get-tsconfig";import T from"fs";const p=new Map;async function A(t){if(p.has(t))return p.get(t);if(!await T.promises.access(t).then(()=>!0,()=>!1)){p.set(t,void 0);return}const o=await T.promises.readFile(t,"utf8");try{const a=JSON.parse(o);return p.set(t,a),a}catch{throw new Error(`Error parsing: ${t}`)}}async function J(t){let s=new URL("package.json",t);for(;!s.pathname.endsWith("/node_modules/package.json");){const o=_(s),a=await A(o);if(a)return a;const r=s;if(s=new URL("../package.json",s),s.pathname===r.pathname)break}}async function M(t){var s;const o=await J(t);return(s=o==null?void 0:o.type)!=null?s:"commonjs"}const f=F(),h=process.env.ESBK_TSCONFIG_PATH?{path:g.resolve(process.env.ESBK_TSCONFIG_PATH),config:D(process.env.ESBK_TSCONFIG_PATH)}:I(),k=h&&W(h),N=h&&v(h),y="file://",d=/\.([cm]?ts|[tj]sx)$/,L=t=>{const s=g.extname(t);if(s===".json")return"json";if(s===".mjs"||s===".mts")return"module";if(s===".cjs"||s===".cts")return"commonjs"},S=t=>{const s=L(t);if(s)return s;if(d.test(t))return M(t)},C=[".js",".json",".ts",".tsx",".jsx"];async function E(t,s,o){let a;for(const r of C)try{return await u(t+r,s,o,!0)}catch(n){if(a===void 0){const{message:c}=n;n.message=n.message.replace(`${r}'`,"'"),n.stack=n.stack.replace(c,n.message),a=n}}throw a}async function O(t,s,o){const a=t.endsWith("/"),r=a?"index":"/index";try{return await E(t+r,s,o)}catch(n){if(!a)try{return await E(t,s,o)}catch{}const{message:c}=n;throw n.message=n.message.replace(`${r.replace("/",g.sep)}'`,"'"),n.stack=n.stack.replace(c,n.message),n}}const K=/^\.{0,2}\//,x=w([14,13,1])>=0||w([12,20,0])>=0,u=async function(t,s,o,a){var r;if(!x&&t.startsWith("node:")&&(t=t.slice(5)),t.endsWith("/"))return await O(t,s,o);const n=t.startsWith(y)||K.test(t);if(N&&!n&&!((r=s.parentURL)!=null&&r.includes("/node_modules/"))){const e=N(t);for(const i of e)try{return await u(R(i).toString(),s,o)}catch{}}if(d.test(s.parentURL)){const e=U(t);if(e)try{return await u(e,s,o,!0)}catch(i){const{code:m}=i;if(m!=="ERR_MODULE_NOT_FOUND"&&m!=="ERR_PACKAGE_PATH_NOT_EXPORTED")throw i}}let c;try{c=await o(t,s,o)}catch(e){if(e instanceof Error&&!a){const{code:i}=e;if(i==="ERR_UNSUPPORTED_DIR_IMPORT")try{return await O(t,s,o)}catch(m){if(m.code!=="ERR_PACKAGE_IMPORT_NOT_DEFINED")throw m}if(i==="ERR_MODULE_NOT_FOUND")try{return await E(t,s,o)}catch{}}throw e}return!c.format&&c.url.startsWith(y)&&(c.format=await S(c.url)),c},b=async function(t,s,o){var a;process.send&&process.send({type:"dependency",path:t}),t.endsWith(".json")&&(s.importAssertions||(s.importAssertions={}),s.importAssertions.type="json");const r=await o(t,s,o);if(!r.source)return r;const n=t.startsWith("file://")?_(t):t,c=r.source.toString();if(r.format==="json"||d.test(t)){const e=await P(c,n,{tsconfigRaw:(a=k)==null?void 0:a(n)});return{format:"module",source:f(e,t)}}if(r.format==="module"){const e=l(n,c);e&&(r.source=f(e,t))}return r},G=async function(t,s,o){if(t.endsWith(".json"))return{format:"module"};try{return await o(t,s,o)}catch(a){if(a.code==="ERR_UNKNOWN_FILE_EXTENSION"&&t.startsWith(y)){const r=await S(t);if(r)return{format:r}}throw a}},H=async function(t,s,o){var a;const{url:r}=s,n=r.startsWith("file://")?_(r):r;if(process.send&&process.send({type:"dependency",path:r}),r.endsWith(".json")||d.test(r)){const e=await P(t.toString(),n,{tsconfigRaw:(a=k)==null?void 0:a(n)});return{source:f(e,r)}}const c=await o(t,s,o);if(s.format==="module"){const e=l(n,c.source.toString());e&&(c.source=f(e,r))}return c},j=w([16,12,0])<0,$=j?G:void 0,B=j?H:void 0;export{$ as getFormat,b as load,u as resolve,B as transformSource}; diff --git a/node_modules/@esbuild-kit/esm-loader/package.json b/node_modules/@esbuild-kit/esm-loader/package.json new file mode 100644 index 0000000..7897492 --- /dev/null +++ b/node_modules/@esbuild-kit/esm-loader/package.json @@ -0,0 +1,31 @@ +{ + "name": "@esbuild-kit/esm-loader", + "version": "2.5.5", + "publishConfig": { + "access": "public" + }, + "description": "Node.js loader for compiling TypeScript modules to ESM", + "keywords": [ + "esbuild", + "loader", + "node", + "esm", + "typescript" + ], + "license": "MIT", + "repository": "esbuild-kit/esm-loader", + "author": { + "name": "Hiroki Osame", + "email": "hiroki.osame@gmail.com" + }, + "type": "module", + "files": [ + "dist" + ], + "main": "./dist/index.js", + "exports": "./dist/index.js", + "dependencies": { + "@esbuild-kit/core-utils": "^3.0.0", + "get-tsconfig": "^4.4.0" + } +} \ No newline at end of file diff --git a/node_modules/@esbuild/linux-x64/README.md b/node_modules/@esbuild/linux-x64/README.md new file mode 100644 index 0000000..b2f1930 --- /dev/null +++ b/node_modules/@esbuild/linux-x64/README.md @@ -0,0 +1,3 @@ +# esbuild + +This is the Linux 64-bit binary for esbuild, a JavaScript bundler and minifier. See https://github.com/evanw/esbuild for details. diff --git a/node_modules/@esbuild/linux-x64/bin/esbuild b/node_modules/@esbuild/linux-x64/bin/esbuild new file mode 100755 index 0000000000000000000000000000000000000000..ca29317a11104a4d533972b4b0718006ee79d563 GIT binary patch literal 9003008 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%0Dj_(-NMO3zt-Y#N#S}Yf%m0U(9E*TpJ3n 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ℑK`3W3^go%aPR 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¬KWd?0 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 GM-2C9nkVb1CjXu<@7?y=tKHh}$sEo=X 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%0AFXYPym4i>R{n!6t8>XaB2`U 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

c1`fJ_*!7>PL>L_nJurfdEpJ<&Hz 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 d;3t(aV7P^qkJ5~ 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�zMxMcL>Kd(1Jr=^4(9lu^GENN* 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

QblbLRPNbfQ{q<5JxyjOVa_%IWc0yio- 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%0D3o4b9+cuf7SOAcK3IGJK5U2Z1i@5_;9Ky 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

drAET9nh`=xIccIXWo&>&Cu^|4j~N2 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�)pH3fQH;$j2rE}!x?Vyi`b}3-%73@XC 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

L|dK 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

jm41VAZG zi`t}`-?ET)eL(T>I*~MZD5MG^BdPMM{}ux>XDifN4=zx=fo=fP!oQK8Cz*UP1uOc$ z4zdFD50aY>f&n#yYP2^NJi%d#M#V6HhWPWiNQU!cOnE8`K6fwO4Vy`?3xM*#FwFgg z5{2dW=C^G-a|B9yk!v`u^^(eeGYs{#Ru{haVZ|5b*f2xJC%a7-3JeiZ;x~I`8d>OBSl z6i?0zW+xTWcti9mqdr2DeK^04aT@3n9$0q#MS-}Vz#=}dh@tE_&ECR8a9>)VR*;r# zjhh4j2;xQL_IQ6=oc#dGnhq)ge!PX{%D;vkc2FZEsD#7f`hxa-0X-}%8;VR<@nR}G zk{ZEs?M7zo(JL+?*o2VBZo^co3o#rz zSaYcLy7;aZYdhmI=rTc{=rR>@>0OD75o(u8w75wOplq~ZH_N$%y`$Q~Uim}cQS)iQ ztt`vL6`c;YSBo)>E1-UsT{v`N3|8OjPhV1$Y@aZ8T zvY4Wt6{{l_J{uH#HY)hM{{Ia=yUR}jKDi>FHkJ|9P-5|i2e9r1APdWnLAJC*`ir5A zjOCQg1e_>8^wZ)F^0xjWDvo?Zm7z|qi^`c)*qVjl=^~o zRM<$;{liiH;CC;o>BCBEl3rt{^?gLm`O`=~pcDg)r~Nh{JJn^a*2C$I zowp&Jm3BxD80O?2_JdnNd|-X>${X5WZI2Bs_38s+`(HX5w*SS~!uH252}P>blrqd2 z2>Vy`8CeuBeq?^QI{+A^a3sluJ^r{Vzhd?}`XAPQjCmg`4!MMdnRIxwtT?E|KxX!T z;BC-3xoq!*6}b;-s-DwwLdl2Tg5S6{00T6esiB>@YfCm~WD-vBs9Mlic~^cys6cxB-b zlNe@1Yd@C#xk!>(7&0=0+28!qsosa8J}HWc0UDUKQX&NC84DSCe1yIm`N8aeM!&(- zYZ&qk<{OO53d%P&&`#MfUo=mt0O;h8x-%vIVs;aRH<918&vktKH|>Do*5czAIrfLx zCAMLSEA16b>;Q`Gx5M-e1&GXpz%BS+hAD}cIRzw+D%kC1L1qUv~|b<2$UO> z$>Y=ESzY=+thxQ>d%QQ77TsWEC6}C8Uh2Mc=B>Xj=~PzQ7-H%`Cx<~xhMg{-za zKDhPHTW6M>R#;xzW!lXpIL+X+n~E&go?h)#f^wUC=*f?1y zHX%aWdZ|NzPGD1&;Tb6wND&w)e-U*97>L$a+o>7o&`gkF5&ZAk>!!US{ZQ6=ZU>8L zF-dQTy~d(-U9f1WBWqD@_ZKMnB*a|oD7xKLQPjU{hImA3(C>Ost**)(v>xE${u*h^ z`4)pJLrFc&>cWmsgfzpDy+1wA2A@(iNeio=5TOD@jDYrmpkd!9CU{JV5s^Ly*SE2| z$MuJ8G5x#L>0fAvy(ORr`e{9?0Y~E-rnB8PGvC!VB6;4NHYY|@jcC)DYj#PNNJW|q zr2!@}+6*=IgZoj(c&USr0R&dWwEXrU^tic%QR={3#!YMcRf+z#-HR*&?9>1l)%Dyr zG4@7~6wmU;N-`#h6V`(AAE6|UvkV_l7CDu%U3sWFp;}-Mm$0PiO2#PYLReNul_Z+d zc{yGy*V0#3qr6$h5AdOq4Jz~WfEvrwP3;m;uP-Ad*05w~C_JE~DG(N9yRu*T1M*$X z`2-m!-?;FCow}7JQU|i&i4sS-BT8JfgSvnnd(go0Duf^QEhZf|$t{`lO$uA}MuQKK zKc-aaFX$J`0A4Ag$WwiWJcB_TS#^>l2xI)8IzC&`aJ>K1#<B`(y)K;{N&Gj|AZ z`OIgW;C(n>)k=8J!gjrpO>dhV9aHlmNnyIKTjDeFZM_4%mPi%%|fN)P^opl zu24q+zjBW#44AvOjccjG`WpyXh^dL-N)RJKibI{Z&AgOI$v}=M=tDLyKClpc)bZU< z5V?xSU_*QH5+yNz1XBAW$hr%V$l;QTsZvbC+0|_bv3^mA^-~ZltoBrPiGx|?r~GMy z3-W;gyAorYc>rVk%Z@l;?R(Y+*1yNLG&ToV*ElsA0xV+SJX8qzH$_*e!4)jE!L_u- zD(iuXQwG;B7XVxzz1z`TLJJ%EV0t0O%_I8X?APr4!a(6yq$R)=I*fJ{ z;YXg7Rw-{lxj0|aTF^%CM9RcRyFf1dC^PmWpZW;(>FrCI)_8nG63FKW3z+yRmp_XL zyJ=)M2rBI)&)PDppOL=FNU!C=Q)+9v(Wk*ktm7^nogs?NYB#7=@`T!w;|Hs6u{vBM z!PsR%(VDLt3a$COG4kjR^=K3y?ZcyL5f9c`C0Yoy5}*An+lpJC<#!k`wg81^q$v{| zJ_js<-$_t-DPb~<@L7TID0d({7P1HCI*AqP5|mGo0{~ICxdJ=H^9FzsDPXLP!VLZi zt7jsi#@d3LQV1`VlTuozmm_Q29Fv{`dwmqr&U$X99uD(gw`$sprl|Dyjlv_b{!=xy zdojEo;1O;gp?ls4$_}D(-ip+KG)*HP`xw`$cM#nG;=f?OZC^~Oi({z=mf9?}^ct`f zW`zRTLo#y`)o*4taMzz1-9rNX;Sr3brF}%#J5A~xL@)0H2OoS_HK*CFYl+Qnm&Y~N zPMTAD6P_33VsAnnmg*x<@>dHxh%$)6OlJqtr}MeI2>CkY4eC<#Ct)mUGJowPf%}9d z#E(UkJG+S96jMbUJ~H;WT|{?G)cz@iEpQ)#_D^A2!UHQqLJ73zmX6!smkEKFW`UZ| zG#qMPc9%v!=9fs%liLSBf`3rl^~st51nY_b%1%lEnA=>bd-eP?<(+u^FLChikHi0j z*6{z(DdT?+@&9%_{%1P)k87@-G}jdWSVcc&`~&m~|66_{{+}jtTEqYNlj2{Z7-I21 zPvQSc;(t^W|Gz$U{8N9?@d5KG{Bii1h@|-V0IvFoQU|SY3Eq2N&GQAbU&~`}dq9|F z;(w{Q-&1&(#y^?$c~v-Zl?y~lC0e9buAHh!!9QON+yC*)v8M>4pEYw15q*=VwNk}Y zx}>V3Di2(Ry`p5TJZf_JAkCv~<}$)^cYV5HjzB zojFTx(5lX*f&*J&q!l}@ZZBpoDbIrM!9Mo-5A(4s*vSVgFDtCw1bwfl4L8+3y1u^c zfbG>4+e_MERvB%WYSuQai?JMEQB%^zh8W(a6KVoIb3C{eQ;DIbYuIj6+WosRRBIQm z*jhXsLOdm*c&O2IA2Pq<++&z@kDQP1Fn+X@s?v~AJ;!`Y^3bWuVxLgong-9^zgY@3 zm*UFBH>FNWp9-AXORd-2vUb3~0?8)DQis8_gx~U{fky0l;X1<@tgm4;V3e|;%|VxD zL*MygBN=X;DjgaJ*UgnIgb<3le9fV>3H z;$|;a0k@bfYpv5E$yBDZ4!Cn39|Kpb#|^ks3P}@t#kzaC=4j3=mwxeyrZ=o(^v2OgVQ$Md`%Ye0r0$S+QyR#tyj_-ohzG6$ZkEq_<+Z=x97h zDM}~WFM}u)73tK(m@seN3mP4@K2|4}*%Gy}FsztG0yb^PXoz5lHFz7q5LtgU4jB*P z%EQLx8UxtuSir)*si)YsA&cb9NXRH-U%FH5kKLQ%KzrJ6ZP1=K?8iZi^V_eDt=ooe z4q!V>)jwO;uNAI8-fly8eNOB3*UyfDZlY~B&YzLB0d%dJ)}j0AA_3UQ zDq4vx16S15sVwFMVZ%60w0G0RDm23D8zs-j4uTD~V9DKzaR)evg489m3;hR(n_*T8v8hkw~R|urEUD+~x zm4T_IbJ#C0>(jidrG=z0Aq#SspA^FSH|G_@R9{Kf3j^|pgZ#}Bk>|NZy+|9iInzdnvR9$0KM z$I@&t2h^zoW&e$`=kTWXUnS@7JgXk0cZjpU|@XCou=H`u_~2|M#W-KiEdPwd_WX@>90|HdDR@ z5BlhhgiD8ipl3tHMn5VNg4yqnV86h3P@>@Pj)|j+@n51-?F7D zs(Po{s&_^+)!VBT{_Vx*iR!(b;zo3C3K>V|E>1lMN_X)ch2?Wn&uQ1T1ihkj1+AiK zwpzKpq&-do-dc}ru2`VuOLH;^lZdpFxFt&RXY_V8s)pt8eQ{UBhe6*T#im|83+7O7 zJf&*y#>S?0v>z&vp1&NW%jRIHC3iO&Ed7)JIv2WI~J2L2{xI<#PLS)}7#4;=G zjM{oYv%bxMtrc6v)EH))8eXCAwJ(af(NVC5g6C8F#Imh6G`vby!_fHV@ONTpkYu(N z!(|OCqp(`4JRem8UWiS$4!&~&)(eu+LtRdTy6m*ht;wXj;6|U5)eZD(?FRoV^>~|e zw;6Yi{=CL{yc~Be>(5u*pgE$s{(St$^k>IDevyjSkJ!h-RVl>1ry`k!wY40zo|~A$ z=5^pWQore1Tm)9e+DpHcN}S|5_TjN)&-@EmTkx0{TZu&5(<`y&Sg)V)wgINVEU4$G+gq9kGW%e*W?Udvv~7E7$Iz`nGGbj6NXFk!`fz6j%_v(OPF zK@@e$UWqk(yRpJ%E&mR%S8h%205n~{d>b>$6Kgp@y0<0U{2Nzu09f*rd|k=)I9Ot{ z{IFiW50r{!Se|9}`W4jt^jT)2>S)WEHI)izDO?QXSKNir5jsyHX7Xvc+G(P_RM*PT zX#_xbKwv2r8)?Tv%b*GpO|PYNW=8WV3&RL*@S^W;es*QTY6XmUt!pn)n=ySPw<0u` z$$mio&Y|et$xqpm3JLUyI~zh81*c-$`qtOH`kkg0C9rqd%Wbj4Bd21nen-Kfsfmp9 z=iUNDjWueH9*AnOe(?QdnWJsc-9M-m&?zbKCgP3c=rElAPW;YBeAa4q&>Fxyj@Y^g zcP$HoOMc$6Ac%BrMGVkCR;`TZe<}WNV6S03TfD+}mMcs_DwYtkzBxB?noNHebCOq2 zM*%ZuZ=la6Bk^DU;1MwK0xcYlNLBX1y{ZaX(W29+h>Tbe2v?D%0^w@16vJrp2Q=1S zrxSYfNHE=l@{R1+2GRvpY2;Qlh+dqg1M*Z+aAZ?PcPQEg&ZWyB!y;LfQ(NS+KJ=Ks zlYZf2#(79>I3Nht)Dk?;@g(PfX_YC?AK+ZIk&8dTz7=AX^9OiXtHK~LQ!O(q1hx0< zVU88;|1sd7IK@87km@@bn>XVdIiEF%OT}~OSUjZc`0fD46YMM^NRLOz)$A&BcRm76 zAzh}BVV?LThG8zaIEG~=LNTR2*hsF%R z=1rWxw46fEj$_t&@-VwoJQWz`yaro15JMt(L)-kJVZa7)I`GW9 z5|N?5-Rbz#C2{0{Eh9Q&;y6V8>8N+kJ{%dkL5>WK{07S*m;nM%Sjy)@i}0c^jKCO( zxT}^$#}8{sWy~2vfv#=!4LoGdPd<44fa!R4+2?)HQD7JfzN#g%}1jn4$o1 zKskRh5t9tWym;B=*x&beNJzW})I=r5zS9X=oOh5@T!I*Qa2?At=&TQtVaU%E>$H2& zSF_ZRmr6b!XM6+Z&jjpceRl<_HIv*Ikv350iA>h%p_um?Avl;r!&B;es_O7a^gs3e z>=f&jSyIvPxj8Bf1=<>v@r{{q219f^zu0ZJ_4;HDv>(eq!1Duqj(@T%8MXYNk4yj& zo5?FgtXx5(HS%1YJ;il}o%k*ON^Vgy%ys%Kr~4Wl10N`L_IJzzifNx%?g3vwbSVE1 z^4xkVuh;c17p93Wb*vIX#d*(s4|&P;>PWZ*Ne;D*8Zi&#h zq-z;e`9_Xa9aC7t)=1{|rSm-l$RwAK-t&vDEt9UQwG-2Fs=N9!0L zr&jDhbYRo8{=XuURJl#`SNJ*}uq&i*F%`s(@7K=vEeuX7iicCv_CK7{DtsuQ$~Z#p za&;U?AOcDg>t{dXx3+$w6(LM_BJ8nPz(SE~1Wh+}fRO%nNL=vrpa|(sux$GhHCi$&B+yX7)yVLXRGl^Nw+R3`m%XnLkynZ z)#U~>s*Eu8XGz2ZR57TUlIB#+s{In2@A{F>II99h{HuqLoG{5h%0E1i)k%dHVYi1nXOgF~JzkgH+i9ey@(1~Hu?og( zM9v8S0xxN6q{uZtB@iy~2ExMDlm4PkQ=(Gt|2!xz3zzL99Ukw>dm&Tm{iKn5K{MpfY+jEWbIU z(Ww0l2_;8lxC3T8gfox5oFjqPs%u8X0x=^Lkf~NO8SW7}9C@FQu;fBuBoy~!cZ5>G z2STZ6pOi{zy+Q^`KpT;dQJhnNPxi8n<*(pzs3LzsE%uPqGzNKptn*y1N8%ib_5U`^ zc9$Vv)u8t-Pgvan0~s|T#{hr{ROWPYCeY*n@JsC6TQD>#&P6x zRDQ3NNIh)df=vkfGo9{3&70*LtI%z%8Y%=zm3yW8@Ksnx7NA|T+o9f6dGwwM(3>dk zrt7se2(B!VF2%>|ihQzq=6|6MB5cOnP32d2yMIl4WxCFK4Z|P*k{bRXHT;R=PGR`5 z@?#|@V7j%{_|sY#KaU#Q6o3V$tT&vtnuhHx*z6XBmasDIRaKANCqhPMOD z+G!+CB0EY_{j2jP_^-{GG|~&XQF1P2#x)~LxasWdTK2J)s0sAhZp)i_`0 zJ5bG8pqfW^foix*$U54FR1-t_n*Z%4c>K8P6`W<2t2iRzR&peyP#yxTz?l9x#+*vI z2q9$04=TFAGF>3#Fy;+E?+gF=lYb&-3P-BK(SB1X6d(+-DQ6-ITXW_la%NX>=88*& zGXtS^84)I{63)a5H1g*$7z4~%z^C9qk#aVZB0h1!T?Bg=i!>^Auk}I&j=`m)Wr9oL zgL9X&_$23y;bfigm^4M7Yct!}PSarhgMnkSViG0_|DT zm9Y*~e)|iG$}i>zX40@uty6gu{pdr=V~4(j7qmd%rt7V>XrqH}Lpu;6qg!tyW?r2Y zSO57f)L-6c?wGv@gIB=t?dRYDjEiJ^Np(LTpnzd-5f@EOZ;LR(qhK>#lgz#O&!v6C zX}F{>EiX|j!#OFumk+|%rC60Hq2vc=>l$g#)vyL*>-&5h{MvMEeQZtO_n1We+45m{ zYK!nOiBQ*CJYJwK}THe%p+WnBHAoZr0u^2TRA-BshMJS^kME~_9h9rILv&fhrj zj4n(gd;rhVEXs^ z@oTjgk8wueR)4T&ug+nV6Wr^S?V~1>dSvY^>A=>iF;f9SLi~^jc~*cH68Jh#`XXhu zM~$Mdfz2VB;Rvp5gZByOoZLeQ@qNiuoU$xE5c_DziGR_djaVhyj{~if<1uYDaD~!N zq7&IDi8j4MoyyjHvWTn#ic+78BZK4ZPYFef?}}w1-+9eZ1U3z^{*8Z%BY{7SIHmdr z#?`;KPmA@Zv;LcO{e1{UGil5US@vsju8$$H_ljcsU)DnX(HfL7VQbnkl{^?z30D>3 zb%baI4uaye@A1ypI~i--7% z@&-;$Mjy2T_$ptj@TDVDjyvc6 zm`R&@1NfoMfU@%y@3D)69Y(L`px3pJ9D~aZ@s*emT;Kf-HD0P~^l}(x(u6;W(15*S zCKWfYQ8vB918%ymL~o-lMW4S`fU!9}5YH5$i8&fhG^@`@;t<{{b_{bjo<;6}mKKL1 zg`Zzj8)~vXj&)9~Pxs{_bzdA*o0(ATK|kN>B_ogI3PvSb{v3YH6&@X&H5om2VYo_v z8}bJQMZG`g&Y5<6#C+BSKtXlKF&h&vpn};#e0cmK4Ep)ecTq9qliWVyw`xglgoZ~!JFs2~1r@j=?Jt^4CgP<**qu@(!wv`71 z2l57On8*MLtiL@O4JKk#1Bn1m+CXYw6{E#8=FIUsL)vbS;}eqWan5yVvQ^8GnMwEd z6o|^HO8tq3s}WuJGXd{?JSpKtI$^>HqqpO-CSlaizHGyH_wVE2d)f>ezUQ%C2fp8) z-wJ%!{z?X3b{~#JxXEcJYqEFlwP+_B?O3I{3C##g)Le?Lzt$tRiE3#=#hg4E58Z23 zBawN09R4K%+y*B$dU4QmvOlYiv4-RwnlH8XUa4PAko}drf2-^lgAPG#nKG07(yD-2 zc1(?s9aEE20-@1>b0=q@$vj$`CsQJ~(TCO!E|G`!2$->vO27>NrKeKmCKOO#BC;n2 z)MEjH!OH=HlBeUKysXHE^18EQL13O2g>vkX9oMSH1;~i&Q7vfw5RgXnvunp+(adSO z84c+xhTC-fv$$q1jA>?u91ipE0_<78#Rjb*hx?9}_-;gUUT8zt25pD&aM{d%Tmx1% zq5+(0N0n@-LI*?R0L*{%vByKA4Q@`h7NH@E92Llbejgu;S=H?QUI)bJ{Q4{j>9W+L zT0Fx3F!k&`_3R}UGw`Tdq!r?~X8Twnq*UZCt~WIOr{vQnC7<%C1z~kZ{^3?A(>_jXD|Xv%LGwfowEc}M+`SQ~m8T?an6 zs!qd>ZmdQG%%nvFaG0Cf1#UDtVXi_G)-G;`hDz-$tJ5<`k5*_ikINg_MQdLs*>%aB?qgLeO1X`s$>V)-Ku1VXvs8HGEtTM z=2*1-A$I%0_2;1R?yBHUlt4$f@*<79?Z#Cxw<`9sDz;P=L(3mRVqr8eP^7k_FUnBv zSH)(lVr@MO{v^f5w8crPh=WM_g2k||{{r}+{gZoe=MFoJB8Y0LTrMHzg#>+l(4Ky%$fFu4JN^)i>sSU%tOS{(a||_x<>OaQyrF zzeej%#7;F=kNEd*#=LLC_s3Snwf~}eAIvWA4Nz2biI{u&LasF_0CG3*!ppdkhswU3 zdZ5v|mZ~u|LJq6fvbXf0kq^N2B&xTrjW*ir`M2=2Qa6gl$Utf@|Ae{xi9^yeARn@> zahFU8&rZ%NO)eSZd9}2wFLQR+5+9)jfhMzN113)Ek*~x~zlf454ckjlOEJ~av0ixI zyhhfjl;U<+pYLdOf;*DLOeqefg2~xYms=D^>&wAf8jH>d{U$O6ia?Ee(|IeHD zAKE6p9Yt>R|I89VI@;Mfco(b%iF@c&knE=DELMln>kK1nOfnG{=aPhovc{!IPH&ZK7I_lA6&Q9SrgqQ2r10N2#bJ{Yf_A?iOGTq53_m! z7WXE!jt|h+l=vnejDbCG1^)l5_K!9Gt5teH`@1vahTLNNS7Q9hq+d7b*PR5}&#MX6%x@5J0+NH1Y-92UtKH9->W+kG-D9^<|4M-5pPSV$wPd3oNyF>^ zsm6CI^`9AE|1*=E`p^E~*S`|+#{qQ$k?#M9X#K0N)DZgb`;Yp+&5f)7(}_<1ulrxu zZ-j9^_Sm@kE28xuz2e9Ek3(Hs!Y`yc4s4L+kOt4or+XH!$8J6dk}cMzS3ZkDwnFp6 zPBSkGnw9-7$X+SPez^&0%TJ;2L1-Tu>2wB=;EzpTm#&3uYHaY-rZm0@Guvg2`@3ou z4k{-Qck4dOUyP*;u3KZU42Mz^%Q@BA`m_)#E zgE%EE1ghEFTY*I%nG8m}N$r}7DyI>v+XM%l_Ybnc9b|_Jq(hHNhng~%-9I1t7c)QD z{X>QW;jf;IJCeKs)=RfFO0!CG;=T3cc)Mkh@ZuVv+UvCv?T$qK1GE>t^Bj<(nql9Ofmo}c_{I4fwSnKXQm2jEG949H+30dNd)R&;@=JRBgfKVfES**zHv#XWGJII~mPJp&R-5baridD%UeBU}%6>G*#^ z**%vfR2TO$!W|3C@9`mvVkeYuGgGwKRq)h^Nw$Gqa7!0{CtY|fz6*lii(96j9#E6r zR*&B@z|&DouDKLO{8phD+9y);hf?#l_?p!(l3-S6?pBA+4qY7^q!BQ z#J*b#`%b=>yjao_oUW*_6bWjRgW1=6XpzBZvsi~gcCUx7tbTC*8ZwUGYnWgSQjPLB z7awGx2!7*0xd zIaOVaE(O1f&qRmYd4hX!?>EOcMqYrk#vziR2$^;1j6SBkVD~W8302D(TNI0s65;V zXLVqw!k}&(Lv>J(fyClNMRL3pQvUlx*w!Lrn99$evB%I=ottbOzK(ssyC@C+5|G3f zaFc?Df77Me7(mc!4A%A6;A3QbKqoT%o~U}pNj9+rd1z!I^=tIEe&cT37q})N1q9(>E6~X;a5(C7E2cVdAhQmz|b%`kp zn}@9N`6tIxL#LBqX@wsjGZO;*<%lbGGPZr3g&s|o9@&`sNJyb@bGwwmUdS*EpEU5W z)UI(?$l5>vN{}Cq6l3=d7<_eCV8x2$60zzB>}&qQmdncR^De}h#J!Sp%8p-J@})n0 zo4;{uZs<+_;a!9y7T5fJw&f;nsRx>H?8L6fVbqCD2*CEDfs_&c#w|wUI|2(NNjTDJ zZYRoLgn=Z^8%!6qgL9s+cKB;1vjWcj*pXEW;gx<2fnLD*{@nC!*pu0H#xs$(5xrK; zdr$E1xFz88$tKebGY{yOMky^xzsPs)&c$iW=?x%2kii6y0rsoSJLt#i3+wN50yClN z=i%MCS?gyG*VB(;HqE#=?*Yd*aPGM&Q|~|CeIF0UCR=mf34}Fsg1We6Oel#vximo_ zTRL3%pCAejfKdL$Yl({1dG{lCGpdM_KTnP(e&X48^OYcqVdz*?9*_hcl&Uld+{o`V z`(CQp*9|}k`%20_^eJDCw{60?EM?&2YH%*-5b+l_=U&}}b3ZT+*K@Hzu(*?lb{Od& zMLAd5Z^FONL_Y6?N`-&xcxO%||4K`z#=k6T^RI@w;!QF$_*nDrU#sx+Siqx9f^hfbmqwHrYIUI6=_a7o8M^+c^#<=wD_nnK@ZFz z$8e?lN0dN%>^&7*z86`nlr5}3erah%YcF04+CRn38Y~$pMXSD-EoE6CR>~^*3Q3EZ z6;c-b`BS8<&7Y99Pe)E;l&gr^!{{YZP(Wm0ty4rTTmFfnRywOh?bVd7m~ms28&Pbu zs6Bcaa8P`&60;x#7HcAAW!_b26pD%yv)0Z$MHbKv?Kx7ZM<6K5#aV4n!ni|*HK&SO z*rWaTG^L75r5;TcZTVfidh`~cBnYe%Z~=xb$yb*8zb;<~!s(~vYj55u`6?})ntWwZ zTfUw|KN>p#fZ19~z;Nb^k+0N`>`5?2Pm0x#28boq`b=1tcoH-%_Bm*Br~v?@>Lo-HTlY-QTZws zlPy}s`k@Z{!li)91+(JiD>zC@i^)I~IQmMge0`9*;7N3q{s||OuZOPU*Na8zgg%y% z<5{z}jVHL6a8xs6rad#ZXCKS&ZpvWqG~NdJtr=`-Om#K_`wM$LW8;ref86Nf%PHSW z6FB$A8e`SdUq83$nkz$aE^YH4wlL$lc?4@9eZ8!ht`*z$e)fr+fqsQM$aID&%jw=N z{n5SsB~80`X>9k}w$ME_0Gmz4l-49UPzzKmXo|2( z>@S4KWI9(Oo0GU`#0}OZG%97PcSLoZH|DMXkOJboG0qQbd3Kb*BH7&U5!$ItnzM57 z#{SV!e$>eu_}7L18&tWkKdaRQ~o$ItuGRfh-NEe(D z?>PT(!~6=Xl=E*XrBC_6EhLc8pHpjih4YVB|K`{67f4daO3*vC7r(jhQRoTMLgqA1 z;fTi^t){uhQN-H)tp(6C=eSZD^q$brdam%Rvsr}eu|jthoRi3Rc@Y#kEA=rhmDw9e zB|$ZHj@U1R*M-Hg2afU*B*~xjTP?>mV5;AIPQl2IB?iL3NP%Wkf!|QJ&V{txkixr) z_4r$zvx=^Yh7q3H_BoAPs6UOwvPfriXhdj(RsCD`2~=(UX~-UiFhiJe*g319;3eRz zm)qoE2tLoN-y_Y?KhY%|R5$VvU0b|?pC|jf>n`W*@sSv3f1(tO#MGt0rUBt#UGf_? z!5_MAA~BEXg!1A*A=JQw5i~3$DTxA9eFrRRVb^Mnv3XP`TMd}M$l&m+a4){FW1=kY zL52{xo*)51{}J$sZVX3=WKu^WPO+C`2z=r`_@EK^uxsWyqMu>@xGfzFexOJRKb91Y z%+bor@Pxz3hYprPc?Y)NE6-As1+Z16h&fXq?C6*7+@R%8qm@9;4@%EPH@x7GG!U5?yr_m=SWETD95 z(#LSpR%tu{K$xx)19_hFX6#`=xBmwpI>ngpdEb-YI+G;+pIZ_9`SD*;trRatR3$fZhTrVqN>O1b1~6K`1lO!W_u6Em%Ky5$-rX z>I`X%(Ts<_xkW`YTDY-x4%eyK4heSVAP(# znYo9qF?%KER&Fg$!XA3-LE3aALDZLF^vwe$yZ7dcA;>6@XJ(nG0oQU&@T z_g}9o#hJ4w5URuZW!S$_GiMg(hfE`JbOv^FAe~5M&Af$CkU}>`j^;t z+GqVL4)BQO^=|-n!`%k+63W9jzqG%>XxO$CB8f|}{{%%yX30iYzI*N%&ws5gPz2}*r|&>KiwVWlGC!jJhK6JyEQfv~G9+X^Rj!==6>Gz64krZnAQ z3@c#vatE?LnsH?yYv-(s4bt5X-7O=gTf30(AP{;d+Bqoh)-1>hUN4nv4bgd%+ycLh zZ&G*_@oe=yT_abtRpifZy5lFF#}$8fY!SZ$iqBQZ6*M=&Fh*B@u^r=MV-=)&&BKI! zQUDifaQ2&OhozBe@?v(?t@U@zGk7Wb^kgvoWYEG9MH3L4;P@SeC$PgvgfM{f6JcKC zP!lDOPrm2G@JAbEM*6N`cE>~USVQ=IsSg;j#xr1o@)YZmhoU{hBl|p5MVi7S0!*$y z?)JpOGxAmwa4PswJ#I2TV1(!)xfUC0ZE;q){l2TQ!3f=trL)Nm@jXVATd8lrb_Jgy z2)R&zR5N%K8g|7IfMDyU&# zKlq~0(8+nwRf_%(XXgSRRdwzE1QH2IoS<{#&_k|hE;II|qc3fwG3fR;Z?-3M+XY#5)H&`Z&7 zIp>OAmj5g=d=L8mLEI*PhdB^Rx6}=jnGdyMs~P88y{{8kZj+}B0}M^gNREi1r%;CV zx}-W8?u_DtDBU#un9yUFehnnofMh4InM?vM2M09*YDE3HX+}h-Z0}-`weNQ4#seKUdXJnGjHoXr46Cf&HcdY|^w{Z# zYWriHy5m#me1OY9qHOd&f;e4wy+sH5{nPw=HnU}Sk=*T9k6AZ1Gn_RWx}hE9=yA-8 z#aVNY2q$tMU2KE#M|%W9*W}OUx&7@(-{Qo*zSodVlJ(<_p#o1LQA50x% z^0lhu_bG4qykY90{C#Q$gNNEt-#=2iHnen1hIZrd7A_WkOLx^* z(Iq6*%na3`>7DLGG#E!txh6IQ)yLigqaXlnA9e@J`C)cWhZZWNG%r{VdVqFdaYf^v z2Ht0%Wf+oWg+`~&2p55xT~wIXB0ePS28P!KV%~^9|E;q^#}sK8a@`@uqMGFChXf)4 z+((m_AQCnk4WEZhkl;lo#3$5LGArsbMg~8K0^I1Gda~f&>AlU<`-S@cPew9AKjn+A8o>p6+!@A(KDMN>JH)&7BS%R! z+Fi>{m!zq$M4P51X*hd>glV+&>Cn73C`juM#Od!vOw3~?ggMA$;tsS958oS34&?B$ zfg_N$lBRiTv4EzBdLvq1>#Pc0-Z?RvIQ_WY8hewf%wEYSGy?ppapZ9p?fZ)BCbUgt z3$x?}l!(T|5IwYAu0;{gAs;M~k~nN9kCbx`*|LeRWDHA`gcg2A?JSf+^WIf6RME_G z1;unin!2KRj*D1Dz2NtQxDf76&5o6YyzWGop4u-TDP^_2I{tdc1kDai1p@(uQ$iv{ zYE&lCRu)K@ z#H&Vct{P1&cYAfRwv%Az*#|?j6AS2kZF+72Kd=fjjppB3_Nmo7ji)0k#;3rmJisTb&|~~e{joRNl9+Px=@t<{?A;9d zGTK@>033U_*-B){6$_D|rDYfL2+jYsA>WjmI&Dn01-uzPEMgWu{s_twd@G-`rTMj@ z$3kgaXBy9G3wS~24b2q|d-Cg#mVvmYI&tyHY8_3aFvLjby6X7F@Z%MoI%0VXvRSMu z<&?Zb&5$4)hr0M>%gr{nZV9hgF`!MZb1F?+ zcbz0<7C^GWMcCjm8-k$=WR{tG=*jHg#h8rRSwDq@?+!j0-c_v{5gR}MD;wu#tE|5U zDZM;zF5|M>+xNbB-#$r{PJ`R29X&Oin9B>>>!gA0bLZra)D4adSTW>Xf@_Pcd`-94 zd!}@D*8_U%E$G&$FhJK>8I@jMJhw>GNV-aIp9YL>ThkE2a@M`Z0ZrxHPgRE*THQ-)wC!*DV#L?3nY%9Un!7rV6?e87F>+9`5v@Z{ zPc6NnM?IX0-^Q}WyHPcCA&Jf*cLU3!cXJ<~Uerf46v#dG@)vP;z~8ng>9$8iH9}5N zjgw6eh+!0MvrSE%QeE0QwN_|Fa9@HQ=xKa;T{CH9_{Iy8N3s$iVri|8?!^YgZcOHz zaJH`Pnhc}I*jxf$lQHm`7`8-@Oda_8m(4z-$?=KfodISl&t|om(OdXqR`&k=?QWkN z`mgPCvz>fnlqS<__=j;X);%@YuRadVcL6d?GMLDkhA1xTdmIRP_dv` zNU(H-OJ54jTMeB?OV@|y$#sOUBwVyJEO+Ygc9tpB(NgzS`P`6zQE@*4*X&yov)&A? z!Jq`XBta~IBvD6puoh~K7LBLS(Xq0E*G0Elz~v!QV{I515JuYyDeDa03|t8VSH22b zHU-u=8f{e~Aetlq<&x*nPVPTi0ebxyuX zoHPGS(D)G3qd)X;lBl7Ua|4k*b+lv`!b;W#7s9SlFS%Ls$k8?*axAWiw<%aK%h4xv zKnbh7_(xI9si=%gS|kfNsU6gT$dNf9JgApW|B*(IUU z$jp|9fb#nC$N#< zM>MF{^kk-~9o#M>*J%fI-l~X&PhPPw$lHjE!ggvnRW@Bai zRcYwZhS~3-{s~Zj?a1o*^VLPKOJQDeyfK-mU*XVc1)^44k;{;S^(9T4>rO}PflAhE z$=up}w1btWnRdXXH9}a8smBTean7)r8dXSowp^%af{QL4ajMjHTo(1`i2huamkovb zG`pL_S@i#xF8ZI&{F&!l!K#lm`tP_F&V`F7(2rVnlLJqTmOd-~WLnzfT_?Q@l9(y1g`?O6`|Iik(cetb-%Qb8v(cZs;lWuu5G$MOuagIPnSBfL_$U8&kw(>k;C!WfMnfM^ z9y}>ZnBO9ov(-#|z#`RxA6vDJUJG^mCt43dZ%-RiXCnC7a;01ScE0~VuVTXcvzrqEVw zF6TRakEL2FsH~WXM#|h6VR1oWmmq^#V9&qD9;;pnCMGG2-+l{ zz#GD>QeE~_xdnthixCBnbq6)*!WV%YiS3&h!VJpdJTVsjy9oZf3^{TGn;3V5=Di7? z6^4O;m^!q&2u9eUFfI12*c8dK_sHQk6BF*fz4Ilnl7!@uhtM!>Q<9JUCP zS35%XL!(=+(WSnvY=1!}bm0dDZOgBupbdFJ4|5`SeP!7#GwyI?(SBU_?#KIc-Ln17 zuC{j5AH_F4?Bbht<-rV%?`{;a63Eo9XVN_zX5OZ_aKf0jlDejRW_E{IB;n_3T&+S3 z^=>3H!#o9fwSG41g_*TP4wYzfA(FuqQyB^8(NGX#M8?p<8`ZKhmxu1+yz?+7jX};l zmg!`}JSKZMn8L}%9cMeG+A}K13eA+rc=!u#`9zDrCJZSU-=w?1_l!w1WWLG$racy0 zS6I{6RwuqWNy=4iG;!QF{+leNL&ox`JHYNw9; zu)+Huf)nTh0RpsJP|b`&rW$^l0->wq=HzJc5JBm^tvFV8l+|=VB>v69j{cG4ZH3;+ zszD}!A!LNd90|?esrf-<#rQ6nXJCdwOL@7Yt8huAw7qU{b^PhbCNEmLX706Yh4bU{ zMQ}Ny2w9~+%H;*CbZL7uG#)J`FiuB?e~4@tBq}(>IJ?zbg-#`&c1Wq25I(V{2IJ}k zEEzQb065`t^hca(6GHQ|q_D_ZKx<1L6TLr)B+G-eGzvLi?fuEZpqZ zqfb0mMT*!4xEq~g6|3N*IBK}=IB{+ZKx;kwjuupOOur@4)so~;aWsB;Ise1>|F-x- zeO!s1!B?US9`FH|y@Pn>*Ikk!%G4B{!BghtH3uwNLf9mIn(0&B5i zOwtnZeB|nfKPRm;_e~yljt*3X$wXY%Kt0}xkBcnbk1p`Yp_{mWinEzx0wKaTHw(o6 z_!%dqnv|Lx2Nj}kwt4*(9uaR#eV1gwn?kKwsak$CJ5X4U0Lpl{=sOOS2>~dlNwa7s zyR?rL_WVea_U;veDG0XoKl!K=Sbfz}{M&#P4Zs>dDfONrnUb`oh0Q14!G^rH)JqoN z}4BNT@$DqNWKW9DYW7+_4uYPOkJVW zG^QjUy={XWw$3%MhDxN^miaZ4ENW(wHxv-|pH1Zdt=T_061%N7tL_Mf z@Qy)`y^m*RV*FtmHV}9x z7Z|qJjJqwnSMaoYnxvpjK?J=9WYWb#rHsV?{FhG0Yaoj_=_mX$`Z(Ns|Bo5~st8I3 zRbeIs{WC!SZ#EcjLmNVWtZkCFC)6AIkx4r~9i@<@qW^_VE?sR-Ve{iBWR{%4d_Hah z{u#n{76=e%5=j+;h&ez?!C7mNP7<-s8lwBPxkmCg_W8unl53H)sreEEP@(u=&upIfFOBVX zdLQxhe((SIyMFwfKh3sk@g956*P2rAqO7HrBVOG4q)hU?M~o)jEnh^8W_eR*9hb9i z(-9c>10i`lgCA?NUt%(Z;i5Jz27?mPSCDl%Y*AKl48p&FIM|^Byt@D1&tHXZfqifO z+S%2jov>N@?9LMmmBX~IEs=-dK=};v>jy=X5oAz15?-zdGoG@axJ4R8;3aUt;3gbV zgE|tGUQ#Ym=qe+9XlKLT{CdvctD!3Tv61;bs0>cVZ0G7iB}l8JuF@~+dh;spEV$dD zS$!^0pN9%@g?@a@yZb4ux>~I;H4io1KOb#6xQE3iqvf$SgrU?u0A~im1njJX-VcX} z2!VP#r2DsFI$4>OfVXnlcBm{5MIsLsHZZXiGA=Rzr>!e4p~q)xXN&@%z2=VnKyCh4 z=j%zoUhed3IdRdicNnugBVO^2GK zHEW_?JYEh?};cnKOaCr z{HnvW9;Ocg%=VT(@C<;7X=KuC^{R$qo`q0P)s-rT!`-UG_0E=e)Dc|oscDZ0@f|!? z^_pf}$s&|XmDXsA29AosU z@ojhG`-YUu#&=g(O%J&_h4HnyMJDzljX#Qob;DQ4I6pu}SzYp`AV^z;zGxNrQSKmW zl8`+?^QuFDBIRXOXeOWJdkfEqZkoY4a$CrKaxU^<>JD+HzdtP|>(bG=PTFEWj zqIIzUxmWx_s`E=5&>;(@o9BK77xs~Z9RF|{Lt)+9{Ow=&IwzXw^aW0_*gW@`YCN~# zCtA8Kv|tWOE3qgO2OEv)+sfBVS#2m{rzMx~MDH|^bY4YFpGmS&K z+H!K4o=zt3I=Z6y6G~drD$4Xn*SkQ_b&2{=`bub?9mk?kn@oz}#$R5Y9DJC; zov6j9^&)%s-Qc|#NnVRiR)+IKGKB`fHZB%FS0#*vv2rGvLV@K>r8at_R z5Y)5l~o{;&1=DH&g#h zDk2=_k)c^ACF}i4OkUWD|8M$fl)1DojIy_|?j^-X?CoE--X?3C243;L-(LjB!j|v? z6vwmqsf9eQore`lBof)=U2mzF$zSyjw^s!JE8bFNKxZj!oqLEvr=V{GuET))8?|=y zMZwYcqonT`|E`-}OWsTK97sD1AovTzn%RE{hdG-9Q;X%ultLN=lZS_IjAlzrQDbj- z@>+og`yPJ{{!QLaSgF~j0aFSb{%5_JsT8E%#fHDX{`f~>vfCMMs%GTqwRXM&N}zw* zIZBRxVBW{Y|N2W>vZ7dCe@W0jb~|B&7ct6MytWbH9=p9b>yEGS zu2?~0s;(G`-qv=WA1kPX+fWna`ksm!**@*q@E3#GzY$D&Co>gicF)(3XEQy}zjEnlzWu(NfBdPb=3aIUz0j^2Zgx)iCz-C|Ch`849jD-~_u;2-=}mkTdG__Job6t(EK(06#oVt;%E1+2g8t0k&F(_fzC4e)7-N| zb9;XO4>~lLrv9@Ip`T-!_&lfnvVcOqklx;BT}x-bB82SMS>howd*%1NgM(x;`s$~K z7CcLNqxJI_os&)YU+RapW*#zgi7Xq#Zsbw_Rk0=7f(2_Jd=-f4{SS*!ECrxwSd;Q5 z^5^qVl#uemJ;kCN7|wW6EQ@^VtRG^0Dovy;pZpls4pM3EAZ8a)LAdn1y!w%`ve8dz zdLz)@^^Xm!v8VH#x}ps^KT_}oT~Mf+mH?7OLGT7rdY3nqz#@Ml`A+(k^R;=;5X$Ni z-I~q$xUc^;Q!)#D`oM=&7!4;7V$$Cqbo%?;0l?I~{KFm3sf$ z&%_uP>dPYSymg(#ADSj+_7#>83sOj<&|`U;uydKO35i3MFu?BIh3o+1M=7OUplb&N z+hqI>G_F>^Ry{t#KKUwoa#-m#r)PN+roP$fZ5aeO$zcPZEvKlN?W~p_dSf4x!^&3 z<^dti;o+?~v7@u93D4v+l66c3Oe}vgg%kaDB_pD5*XkQkL7mRAI{IVDkJP71XOcWv zq+281Ng$@qlXwS|Ndj8xvsNryy!SYmfi0kC9d=rlUADsf|CTn_`o291ln3gUXo*;f z+}rbIYH-UsuX+(!)LbXsZ9<;LkNvw^K-Z+!(u%!dPz^P$RQH*_sL%PIbrfC1EHBt+ z{LtXo8wEP&4c&bO*<)qztrQRCODkWb+BgC${lgorun*2B9@qs>H(0%mO98H}+|7z@ zab*AmMT!~U3M)d8t-tGGw8yW5dM(TC`uw&fxA8mcdvbZtO_#g7%fwxDy z^*5%9i9ToJ_KF2b zGPnO1cJPBG!oJhq(W&!<-8TkhBV`j*zn>qgXigKmM179Ru%$zjj5mD9!-vXNEu`N6$bv+jFTQ{}3e z`{mVqIj>_NmET5zW&4-_(A#syu<9?bK5T7OvZe(^nO8ih8!E91nAnMId9!->D;)Ab zcdLiDRu6wQA~My#27Xlc-=wX+4;b|2y+c1x&@aq4B($vgQY56IXS5yjcb8S-$X0I_ zRNd@sF9lnDfu0(Rv%*PmXP^Bu5cbqR)2gS_M0=WC&+@XHdzxHh%nn&|uE+BrU$UF( zw8oXN^S*AK8gk(S7{#T>3MP5(u583iF;V~|aRfL%z*zCigWl2l#G5q`Trfi{N3b6Aly}_Aepfa1B1%Y04eF_T3j^x^^zYL566xN+qd!1~SjqFJ zl6LQtRh>2`k%+;Q_^A^o*ur5TCwI`gDaR{-S~94@u?Mz69nS~RWfPxT5}9{3~1PMGPe&zl96oo@`jc?LUy)f z<*|#WJbYMZWpXUkD#9g@Wo>*{g_VkId4n)QN1%HrclM1A-(Ed@W8?`G+%_P(oFCEt zZJHCW!rGmmyzRd7hR(yL7jVZxbMoS+8ulJGV-fn<(Y88ge6Y@Y?{nmZccXx%w-Z21 ztxfG3KCJZK27SID^E2@+T{*kn=p3pIBZq$SV&+Ju-UYk>H^KOY7JMI3%osvbT{dp0 z%ajc6yBaUF%&iMh0v;-p7lD#J;$;{(10_O%@vKl%J$!5R@J*R0*;L)XU0a@iiwaTS z&td;QhXHoje(>ElWniNpg=Qaze!*7%V32`Bs$Z?O}l!fJW7;JMm zuSnE4YtQ6G`%4{o<=@s ziHqSRw)=!RR||Y7$-DpqoQ9vc9dbmtq1ZqBzhEqxJEHm|TVHuA7YbRI@{I{IR+jjK zgO3#CNI`SQPfZu#7yGx~>g-6Ep;rCEfXic*cl+kII#d7bLDp#!H(Y*606bI=XeV{M ze*$k>OC16G3?PFjy8z!~x`Sc~mn3D}LGdN$x(5K5d_0d<=-*@(0LY%9$(rr4y;o0l z@jZt(uM9D2%+<-Qp98ZIujK4i`!R)s5dq?cFCvF>_Og4YAGsf*@5-Gkam4D;Za_-+- zx$~XQ@}`eNO_!VUjKfjRoUI}>w9-PqMrljZaux7%ItuI`uRN3Ctwgce_j1r3&9|1H z`PRy#;aE8oSsa3)rq?yBtmjk-H#)X!36addiK@Im{`#dC?qekFe^L=~J>{J%EXuRR%HL^6y|X0_FBBS+Rj2J?dnBK{l@=c! zSg-GNXa1u_s%`1Ef>K&#jh_6j<=ITvU7t+18d36TF|FE}PjHd{0PN57P}`?(C9Y8w$duH5jm{xfnPcgX)2O8tW- zhpJIX%aJ>5DU|m8t3&Cm5xt?*ih$B7UF04_fPEoKH`x-X3xxqnzl_p_a+7K-b2-Uq z40peARl=hqmTMT2x&QU*s4T@q?DGC`jL5Xf-T9FGlRH^GdB+Y(W#7L&oB2ilZH>U@>UBinr{8Z{apILM9_F!?i!_=uFu?xFx!!D74oz{0Wv z5dN4&FKv~vZ7V`+jepW(IWVIsa8KWz4)dlgIN2zDft9sYNytrdu}oV47Yw)1%gJqd zvb8)YfDDDUza!m-xd#mz#*1d1wZ48iAS01o#-@SRd10pg27 zT2i(khxC=OC}*QJ^`%nqtHCgIG7R4B!+Q~c3G)lM+Pa$Pl8R?HcLQ{Q0L)L_jwYa? z7GVEE5~pF9B^W*~{QrQVP)!(SC3f~;+7opbtL9%P^mY`wU#Vr%a4}ZFiZFSS_ zzM~!Sw=iy9)2)?5{;%K{?2{bdN?pGWK zYvVjk)1x}_0y<4orp8}vD z9tJKmN3{zO)CE_D%RB1pZaBHEa%kU^OHLq!*wM16EmIL{*}qwsrxQDc>#18eSf$0>MAwS>)3!i_i06D)K6^St-8`xGY+ve zVRseIJMGH1oO{SIS6BQ3qTmA@J~DqEP|>)%0a)f75KV@&JBn-yWs=_M{gcw&I$mL$ zrUF*QUb>@#HRJT3Rm67pue&>?Ky>t*CpTGy?Av!DsK@+-2w4R$(BNiJV+|6&u=|+0 z1NeJY{TqZKgcdg2GOjILv_WUox`PYD!}o;QBn*W)(X4$42UeG^t2?MU6(N5xq*_eR zR3>3!eDcVGU|ge#`+ZgXm1#s`JC@e?I?Uf|0fH9K!qyKCNj&43&B6NN?8BY>R!&vj z!qdM}310J*>hr0X%W}o<_g73gT(H#Y{bc8VKI-WOlKdk*)<>0nBnx^>R{!4m=#)Sx z|BZpM`OmxZu>ILAkouXN#UXDXw;K%vat8`bDcaBWU)%%g6+e`5ZqFtgJQ2Pr4)lnF zzSh+ZlKf8DR14EO-yWw*6|J$={SLY51(5L=!R8QT(9oO|7uYaLE4G+et zY$IJ-@s<6DD066zNu8rZsFJzk*BiUd`~mE?>MqzVnR|{)x?V{SD@kUHOw?jYzbhA2j;KO9 zY{#2&_0)c5aqpN3yN{~(f85NE6M`RC^W(VS$Hii(21XZiK{B^t@@ZLSiNYJ>{rw&{ zDg7)X^v&fBCMjB{<$ywU>Wro;^vH{~RFI&#MEWAkEe!ORz@`;Wh$fC7q~l*UG3unxH_H#={NKOl-eH`KnD3lMLt7* zT+e~)zIL}raecAZL+1n3Ab|4MZWuJ6kXC?t6vX};KnbQXz%(|1>2kre`H=k)C78wr zFlB-vnrntq!pV!XZMN^OlEUIf@Wek|qu3U0z#q`NU_PkZR5L(=IX`6)GXI89*8bnt zX}yZ&oksK$%eOsC@BVS{7m8(rdL>@5J&Y7FhnD5xMlw;X6$yQKHqt(LDS=~|bx%_Ze1X}nb&$jYC) znxAkP-b|3;6j$Z}m$XqyN4TUrUDBVGl;@HfUD9uq^v|UR()V1_-Aa1HC0*%~nv}G` zC52tmtt4UJacQT!v~MZfgDz>fOS(Wwce$j4T+*3JnnzM|Pgl?H9@pfEi9f^ddYISU zWtX=7>&5vuBci?i&##nxn8hm7VhBDGITKgi^cP+lN>6qEozVPyjLg5y%=K#clWn>N zF7{@2IGICyr1qDe?aJ3x$&)#TVY}%BPQCc=A=@pK<0LDb|1v)4a2!(&^q8A!E@!bC z92nwM>);okN2&bve)&RIK743K`CoS{Pl?^fQ{ptg#PP1g8y9Dkn9;4oel4z0`Hu!W zh!1h)pT1Xe$A|dLZsohiMEE;mMdpa47WZ&8$^TNG_P@*@0FE2qwc||U4~?*$=SlyG zkgJhqiBJvenaqFio8``;=UpcE1{oxByrTbmr_&qpj8d5CHL`qpSYJX?0`Z<+p)Y2+ z;maa&c;7gh-UTvCQxPqMeEUmi;T!#3yF&vJ#dUJFeIPs>Id-RmCwm=7C6;#WZ_wG2 zKIo0B)g#Q*O(U!d;_qryu0ZwCs!e=sjc!_R9rP0)mp# z!J=`{cjBb{H`Qt*Lsw=BAOLh-LNW7grhd5CZ|R(Oymd-vxMnqNt2;?^Sqa9Mx_&Dt zoF#j$Q;lTboAg>|Y$stGWZ_bjZvx{a;fEa7QfBqu`!@gk zg|-{H=q@F(KZN*%)Gw5p%ncn2qh6puK%&I7^9JfE$TCK^qhXR|Nu~i@G4i1IpiSE- z>%G?snQ?kyeW;=2Y=S*~;^fevMA@#17FhD3J$%lh7vd}h9rUQrFKJ%UWnjf#9u#iz z9&EMe9Xs%^bomd?*(OOL|9I}2lSDz!hA}@YtM}F7?K-BBMWp?FV2sdor>jOMI%bhc z_L3c{msokoc%;1&I!`=KZG@0MhPF^?s>D!J)_iGsmJYnl@($Im{eXPep6rH4xsl%! z)m8zA734K-t3P7@{+LB)wQAJXh*jP@7?c#yc#+xseUAwMH7H9m_h!HLp$4DtTY$D| zy3_3T>c&J_TqA+~pD;Z8-gBfX zG4pn|Sdhgco$QLdm|*=}L3Vp-w{r3f(ugqYO?;c3%E|mWEhrqaD<}g@(_$GZ@2&c~ zWw>gE%V0H-VWTo6bLZ_HleH2=xhPFGhiRx)iFaZuW%41Igl&;o}D%|F<{HG)2j)s_f)3qr<}@h?E}k5$1Jpg8LLorPj8 zOw@^x=2z+G78o#7wZQ^42YV zM|XEM@h&Qg?PIsha$ePBaaYikckM&uv-r1qGUc&LN@n)YicadoP-6oyzI#apFUF zc14M)kCK5SCCNcq5Iv^xCygd;FLPHqw!T+4bf=e5bR&aa&PEN$=ugjAM?WXXpcPx) zARG}~uRlmJ)5Njwo!L-wO#QK%JerM8+!rS1*)~tl9x=&=uHyu6z3Blet|RZPH%_Yo zVwV<9Uf^PM$0M!bkI;hq^zzu?yoSBUgqr?o%+5U0u=lF^OQXq(Y|bRTBWLu-9g)z2 z?~oI-kalZkXS=XFn0evlr)6Q}`)Gj{C@mpp@-)yvWLOinppL&Ju~DV?5{rg=R6UV# zi2bPx`cknBqSPAI45TRaf@t#65fhp@o3U5c6rxo%%&*D z44dqwBWh&T9p{c^3rtvdK8}$ml&!gttRfr=DXZ+TnAND!_A1*V%|Y(~SBsOzEvh`M zGt~liIbg%>{qWCkY1lg;)bv|ABNPHXs*fKz0kq&(e#XJ6PstEX@=a^839ct(1^yQ8 zzOPj$I23u+v}&2%?2xim8QZX5Mv3yip4Ab02 zCc0LiNdO`#2heo{yk)?Bd*UJ;? z%Ng6bV4V!Ue`)F9{0OrgAeDPo{-uR!Iz3B2`rqBiAUBwT-1xU4U>JW;HCgf5`a@Cf zwjlnjueRA~*Mbbtp#{w*4sGwkadiiTlecDfyvE-?;nI)h&hQ0dXu-FAiItaKl?-px z_VyXXY<$#lBtP%tXRiC1UlD703ZGH#jC1%JS}@EiugmL0Nc~2mFFy94euy7opF6#O zY|T?d;^)p7sBQkqTl>0w%CuY7cg!)!x~3Q`bI*TNjXdjZ+xrIOBa)Nk*34Ri_R-lfD3~c-b&?gF?yzJNP=prbgK8vi&QbEO z9~YYcb5f(p^OGDq5Nh00qY0DwG!8M^ko|=mGrSn zWR;a{KdKMjJqBoR|LMo_#@Ou5ok9MZUw0hBUk1njZRIytw7#BG)qfN0GwtHaMFTmc zs*Ni9rpnAK_wuySm5Xxx#B6Inb*wG(A;nFjTfFa`qYW4t7d7boRCr^PSJx&nX0JE$ zs`IU`@t@zcPg}i7E()AMXHhQZ=$9_E180+waAGaPXhZh}d-n^27EO==OPI-jM*}+>z(S zY*5Ke6>qQ%5;Y0m-Wl7QJ4Xry8d{U9H973;onx{dmpQhOpCP$h#kmp_zh?kd`3HA%Eqkci7V!0lzPadwr`e z{kQe^JsUs^%q#h52f+BJy->hVO97$Uo3>oy921WE1KXjV^vJR6MNmVI<;o$2K{+1e zhxf9+B!}(%JuC@oECZHUu$Ii-w}`zdmmQ*gH-6<5t@ZBz!pgqyD*I(`m91B0{i&=O z3t}>V`|O*tY!4EbTMr7|+1j*LNXl&|**pKpzZ0{=-iVC?H#y`Gskp4A{h#-fM?bgP zS3jBGJNRuES!=Kw_@PWKdLmhn-;cWZ)?{v9K%vi{{*FE;UCe~{LEhgxIjC?r%}t!_ z>@y1InSUe{8BO$!CNAWVgG;nOHaX;cGT7xgIx|{FzL;)F@QqWUU{KR6vFQ_Y_9wT& zk=9ojC@xmm4s!Pysd4pAzO0JGT67kOZme3ejD%{A(yvZ%y78O!Z;2qsVsdJ^A3K56MZ^2 zs_t%}VxE;;W!H~`Gx<#?zapitPCFJSeV`{l^bo4%+y6wSCx;YT<4}vvo(67pNTf+8 zE=2?2K$$S&k~4Gi@(6%txqi?c;uFphc+@B3({&RB6xmEkZ_|^GPa0H>v=8HtBev{E z)hOJ;gPOy>t?$WUgMlke+sU%|H}TWa_k2ildVx=Dyd<_h`I6`T^a$~8uu}F;yq8^E%yTSFg}>_3lSb5k$v!Gue^*d{UO0Y|?b3>s zeP@odsw8vAo^U2;%)R_}ZY<{5z_N>Yfq_pY**oS>>I!9I+PQV9nth}@?D{4D-4v!k zH^nTM=x=)BN{YPXm>lM-El*j$z=Hw^7l5D^Tm(8@wuDi-yWl``%wyQ zj@q(-NQXkO(MDs6HY3f4Sq1LNQ=b}Ft7|xE-DITo$*lW3;oMNuX8_PFT3Iegpm|AV zRDvrxPXY+@KRPFE2#U0|fH9T_=r7*NIi~yfo&6iU3~r)Y&KWL+?427){jv|uUfOWh zv31{X_}ZxY`3-ZkPYKPRWlD#1?c~^Op(Si<1?{O!=1+W;2@q-P+oxwzKkM@3IF&(B zLx^grhd3?KSq$)T?#uH`mOlKTWGU_v?^k{Q?%ywu;dg$%U$UHAotS%Xhot=#ObPtS z#f~XE`38R3VSRUDhnzmr7P)~~?%WkT>O44C#z{>=JG zCdZ~u>Y+aw|9mNbzB&Vf?c&eGvj2!brJpTw%yX7wp54MB%p*A+PWn&iR>;U;9^ni` zotov?=FusRZN6(LoB$ad9s!6qsW;Ij@$ zK{Gm9+#;P0R%xJVV-*I`hp%z9z=knc8hVp{E|#dfOx&=DWDT`u0Jx!=lO?>7j^wlF zZq%j|T|tQtZ^04tucD#k*t#cthc&xo3G>Ac#2tx{YzdnK)?01<9v5ogXutEnJT&iaYYnjN9FTRs04l1%c<&64!x-uM5(VQc&hM`EoYNJd@l)R9w{Kjm6I+bquV+Wa4c8$ZKp zHIleBFOn$bc&6zC8qPhozB%1==-;K{YUie*5A(v|J~2uP2>-{l2JHsqgOCS0_Jb$sa&W$1~!=kxW*_nDFvnyu#{!Ne{nncEs*iK{@hU zZk=9Rwfbp#Hj9s-YA;InQzsx0eJr~EeT8*G&;AYh^{wB@iak*dS$95hG6;C`RAC`h z`BFGOM)R#k9FYZ^wUS}%0B3)7OFI`20 z+}dV1KNY{^s(Lh|s^f#I%s%JWhD(gv2BvEp(zhE}2k_JT;86o>Qbt{`y%d1;p|%II z0BSH`71O>fYLM4p9p5h?V^`UD4bf-THS6KNWxCs`|&kuKrbQ^HF8`i(i|lkn``; zwf(H7TmP2u(>vAG^Ksj;qq z#5e)b6H^03eWS8l|Hkr@{@vrM8k|wpZ-T1SzkB@J9DPns*ETn+8(6pS(;M&VYCo_G zSJwu0d0+P{BAyShj!jo|_$l2gI*^~<0j{DuGAerM6(8wdf4?G!@mG-q&bDy&_-_3> ziJ$au<^LM0PS2>SIjBngTd8BnU>irDi_^7@JFpvACH(YmadmkEy88FSEdko6`V~2` zaK2SE6v0t^pDN1JOonL6J@$L76?nn?kvoJ>-roNafMo}gZh5?v61pVj;mt_Q7r$Wn zWB1o=b^6aCNJ?zl@$jVFZMBUXJxZ*5p{9STkfpMjGGQCnaYb-_4~JEogq}v{)U~_Xn$D{47p*9Fe{a% z4V+Oq*c`IuIoZC1BoY-Msl<23yPRAkf|lv$e8A5+Nr_XGb9Bo}%{_{a+)nh&*n6=u zH2w`M1D&I@GAV1;1D+?95867GELi5feKm|1_p9tW1^Ru5DYC76q-9~aC{)9>4R?P} zoy5FnChu?|y}j#ZdV6>{ITOT^>V1R$()YO}dl7T!3sG{CdbcN`&p&oUYKDg7@Oy}K z=^p3%XuJe{6GXdWO4fj^y`Qt>TKqSGpLlpC3E{+w275Fw(xY*&l;+SpZ88yYP#g*k zH+E(Z zH?FZ9aZBcWnghda^OOUX<&JRTkx9y&e9|@Xg#7{l0OOQk9%NRUjbq~W+Hlb);l{RX zH5unu^2yFSG?u9)%9?0)y$kxPPDT?Af=u4SYOZx9us_UgdfZdZ4d3okoAzinS44aS zzlpu%eaAX}sC81LKu?E;vzt|kcoQ*#I>=G~<`CTEz4tKKP`WTDmPyrXaf+T;rY_An zr83b(5AuLu_uRpeqMeb(7J*+GcgYe+h{6VXdGsWz%?p@XKy`w+IbM8&7)Cl7sM-mo? z6Z1BTXcIr(Y7fCDA5nLY5yix?7fAf`?8CEH3`xL_^!k3kcQi@-jZFP5;75m_Qyu@+ z3O}rE^#}Y+;jYy_p~b&3usmJ3U~XPuQTx+HZ53>b|s62f^*u?mAORwnLTs3tDrZo-PjH#$4BLCs$(8sC&0 z8Jn1V_oT7$hwc-+WL0OsIW~UP-IK(Wr8{Ro)!dQf!pbKElXvSwA}r*^E8gGj z)!l!tSMEQ*YZP*A*n1bSq?`1u{da~q-dwVjCSB_CGbYy_*cxGO8=pv%xxO24hrAYiAk`O9e0oWh!eiL_&LnUj&_;ehvDQOoV>4d(-EU2 z0-i9sg%}v(&|&h9BQ#{3FNT`~p%T%F>3gCQNzeyd)p*kg1L zh>jduRkEf2EZ88la2ZLFqUS|9<&jVR8fpFP+{p0ftFxbxH=?|{^e>@>H<6{f^wZG7 z%Xs0g%Z|zV#=U2|>Mm@2U1MIE_|qaA?h{vNxD_Ax$?W5*aT_KthmM%Cfp~&8w|&K8 zv!FJiJ+^uhGr(3$@A!NA?Jsr(B|W#^;AELI0-(=1kzIMGA5vNJdEIt1bGonbzgEZJ ztd75{D4`s>lOc6j$^oVulL`<>#N>Rc_l!G zQ}DeFmbz81IhJa#k6Y?SrM~~5YFO*tKvHvt{`dn4haUQkub7qls>*CB$2G;8eB;kz zu85UUMCidu!T*Qd1hLE}i1{Da<%?6(v$svv{-jMs-T|Z2g?pP_3T?_4lJk1buFu83 zfP+s1;~9Ee@Jg?km$iKg{w+|Ig%SlN*wu4pACJYIZ8r;M)BVu8${U~l^8;rbRnh8& zD&zfd`+w%b>W)-DFwJwPbLEZeT$U7B1};T{6KpVNSTq^w3+qlVYJDS*po3_3-^%{$ zxEXWChGwbvL1_zP+U4E&fCix*IR^iESMtkQ`7Y+o4N3q!PdEQP>*l|3rhWitqk1Mx z@G`%3qQ!-hx}&CHW=)p6W}f=_(xBcYLwr$WchiS9)_V%>xZIyz!U=zNL2_x^DluK& z-;jsWT57`ag!qYfQVf>l|>0@P?V&xqm|L z;*H+qs}O2gsI3yDtG*dhWabtxoS_{n@2I@A9YFINQr^paxsge&vg1-+=zd zlMtuAVhH10ltv6@pL9?v5aeHM*3Y$Q9KRw?9` z>d+;&i=WWVQAO*S;;o7ys^W&`P*c9eOS3s|T@D#a7peH%+1-g80gz)e|Fu+Nv*ks+ z=$3T?rqD7Y!`F^W>`=o6lVMeV$Y+bl`;L0*-je{i;Hj3$3%I_~_<6)Tlo9g4E8EnFKu z(W;J=uDj!Ab8JB4BO{HNYC7+z8xq8qf8O_w!G2lOdxdRS|Up~-|2x<1g$`=q-{7sbGVsTs8cz!^Zld_93;%o4xG^Z zU5slawmT=ZcoT2w^3hUjF|_m%efKjrJ>ok5FcsPfP>UYaTVjzo6f~=$NbKp)SUw5P zNau4Et#2G!(YTsoI47z-h>VzeKSucHUr@B$Y?dBzpWP3?+GJC} z?q7)}jqh2!b5aZI_iZ@N5qgG!O6JQ-Fu?8=6Pn8eU{(CmpM0A7Sr3StGa#-`)_xZ0 zTwBrl7BIFt7+)8R->ziY35@B}+t>dR7>o9Uar(Eq!H7u8fYB@M1|bz1ghb3E)_n-0 zKm8O!GooYg&{=1n<;On<<2MkZ6s=Wfx9fsz$CI3fKR%hm@%i?XVC~d*q0nfy{Y-6S zQV7PnpZ`*y->_mi)i8mb#efEta%Fgs0qw1wk!&Cn^-A#R3d`6mOj+nVPINNwo#K zDyIv%WEOFPeX-M6#qD>pUY&MDB?753tSwS&1EwkaIk;W6sV8p#c7@+VAGP7+-A3>3 zn&JoLl8IADknDVOG>7n&yduYi5hBE5UT=nUh%gh;^*`8xM&NA{SY;B72?wUVJCV;(XVFI|mIxqovKb^r>Q!^eWR3$^TwpXWL-%Fo+u75BtO27VMBd7U? zW$C=6cS~n$Gr3sOvj4*FPGRb~6l$IBcdVzOQ5+xi z^Nae|wRD)jcJ6om^+O#S$ZE3cxFgwDg@c8`)NlA*c-eb)m*Xn>@OrpO-OiHvjBqIW(e;6Dp2oOC`M%?UDw>f z?hPWNSa3;fvFu%4PJD!I2Kq?)l`RRE3caj~N2*w%=nTTFVZA?~Syn&`_Npn@0kW7h z_+&ZPYdv4cU8Z_)E8UE5ndvrMw1#W?xUJQ{H#$6gr_zhVnEhQ%%Q7I={>D&~B*W;I z?l8tTcHhM4eMn%HLtaltSTU`4Mo|A!D+5b%CRV%N9e!VM^hMXP!-&3y8hr^+<~@g6 z0^yb$p4bYwro4s|9SlQ4kgRL5$CW#){yH{VvQWc9a?MF1C)*iuUa@z{Fh^V?MO-*y zdRynNzr^RH|5KAa*SWiXB+}yQr#)*bYN)xZM$sR3Ud zv>&ax{*SWt)#?WI-}w)F?lu(8YZX7Hc|rlvh6|3|pE-(4UQyL#mfg_qJbDxC+E@87 ziLWPv_n7~oW~JT4Z6Er~8^!v{yT|_&4r-yy!YL&p>Q8k7wSG70X)%@x$)T~$xVc_{ThXDcINX_`~pLbA?G^mwLP+Qg8FZQ91 z3TlN)t7?9Dzxsgz{nS09IUiXSkXlQYSlMr_3?bIR?)92HE|N&`=}47r8k&5QWZY{m6v zsb0P-uD#zj(rpb7`>(OGoi*z27-d90H81xImGHj8e=p{}-G4_IHMj8IQ3-%S=CJo$ z!U;$SN|bm%bqPVSVlVCzR90<`^kym{;f|JR>PP&u0n#rVA6MMm!NmsfqfAaJVEup4swDOPb{yfz5H0u}MvP1KKXVnjRZqyC5lK;FOT-+R5@B(>51?Lrq z2KD1n9vU>RfM*TQLTDoY4%kJeIB;k@V<4gb+$DO#e(O+YRHo@kAKiufu9;H8*C6- z3{a~N&8izON!S=Fs08fg3E23oJNvgfPS5ln72(3$`;hqQUIBhR*l z(ysv-pmMkU=p+qbb~yt$zIzkF;ss?yxKfr_*-h5O03TPTzbqA|%&fP;JIUI3nIbJD zf;Pr^VLPw-w`SpTy^*2?mi~p?#?>;X5NUF-)q6YvL%;q=6gj?x*Bjg`M3{e}dkv?S z3)e|Lo7ot0yp1p33u-qxQ#nWL_xUxU07!_~ga-?E1|Fc`s`B7RX ziEas0&aJqMt&Zh_jPRdHZW+pLUVohGf>>vwX?ctG-Yb!>uuujF@X zv6ajH;Pwol=C%H7pni6tfa($q`Je4d1J%a|N`fH+BJYAOfHsiZJF5#I`>ptez_IVp z<^3Q0DuJ8j{f@WZm9W!pqF-8O^<0how3k&^PyK6_XrhOw26v=J7F}s3^7-gk*~1s8 zvj;$0c_y{<@Rmt(+@=o2w?i0r6hNAj1StP_-RQr@%Id7FR`gr_G<1ZWjEP{zeC42tiw>74PKwD$L zj^N<&X5d@X=rd|#y4kkIfT5L194$4`xwQlc*i^U*7$53=XVQLSnYyHRJ=*Dy-vp10 zUtyR2tSW7hX6utciB9BCeCK+M=x2O`2Pc|va`(Pd6s;ecpQkFIAN1oz8ib&T4kOwQ zVtY}!yKBJgahd-R8J+%Zt~*;_7Anct!dWhfCa7B@@8nD4U4N{_(HHq;MT%*hM z6J=6tc?C24Z&LuC7;>*3fnVyVuqZO^AsGloi8{Qu7k06bua#%0T{vD`y-b0L?<3BjXh3Oj{q!YHBrJ+kr4?NVt!H&VmT`Stc&qeH>B4Y2A}rNz|51O zcHo0bu&rpfldft>e0^x=W;IwygCkkKbR$IE^t75ql0QX)^(R}(|ajzyAHaS z-!;+iWzX`V1wRs9_ku$Pnt{YCuX|n+sIq5FKD!+L`mi2@4I*<+RqrBm?0lNi4q>xP z>8>nq8a82#HgzrAnIryNwA&slvT`Bmx>t$L$n~l%*B1qzDjqkRouf+eNFJ^_4{*w*q8!g>!7Hi6CTp^V-JL~g1X2T^bOewAJH+pkw z3AON;$RoJ~|71CVl`)dEX=cGmpBy%q=Kzo%Fsiyk6&CWlk_@RXp zl}ypv%J{?)S5+5nk~eRPqK}F;D-NxC_?C;3gO5^AmQxk(fs_tw%Y>3v)X7RZqXwda zv!;qrAs^04%tMtGt)01JlLODv$I7bg&ycTGw7>Wzm8AVjnS;+&WY?uTa>gc3+M&dW z&6UZUa>!kM-FwxgUTEGyKwEv?o&f$2LJQx^Rr%FjLj2aSy%xuYWc#j)|p zJ8~Gmf|UiuenaMVp%m%57jKSh^FTs*X>r;y|MLI!`fm2Y-a?=ymI`qR%}m zH1B-o1D%Dg@n9@Lw7H#$vLR&9S<9cjNI_t}on-Xp=2TL+$u^q9tg020Ovc~A4=tJv zCup5V>6*H;WmVA_$jYKF%LMbVJ!QW0KD0%X|0xli@fZ}@svvb%ehHsp8dtYal%T0r z?>3m7pt@gv%8?=p04RNWPCZ_mBL_s2*Kp#-+tc3A9(x;o1oOmjoc_E?U4akhwuSg` zUid$0qb^%Ot@3H&jCM95;bkXHRx-Ivw15M|qAjJxNU2$ff$I3i)Gm-3RkTv8HypSi zs~>%;D6TkWG#|0VpCuopj6%6ssOgNTm!}c-aIaxSgeVxbXS)l=7Z(6yvBBshgf`6! z90e*)5p2uthhIkmHW3lmir%S>__}V;UJtY|ZU9nHStaGfyf#m!nO5T@c)P~!Pa_)m zEoKZ?C8Hy9MBBBMCmL0XC9bMUeuKnkE9rIolW2Sm!MEPmbEtxGwW04^m8{8@TQMx6 zyb4CFD%xZ|>Q+EIw~{jr!Mj?)uQ?UN*P{kP$7m?=QXJP4Wy26q!5}_59|VOSdqWgG zQDcN|u!iv?^M8G+hH5LaTdR_TIV9nJqXpl;TUGjcD0vlhUzNPMZ$$l24+u1g6uqc0!RYW06ydkvUOq%(o$&5_-W>n)8~&Bf z&KvxDv3tu2Ezq6@@por#Xn_n_yd4l)(9gZ~3oS5W1F;jDqY%AEU#kzFAiB*Y&U$&zn){0=;G%gp1k3&me z#5pHCBVhJ~n(iaw#q^WZpUr9KrkgaK>AZy=RF zr$rG?q6u7Z2ETWN+A})=^)Jb+zcI7^x^(?FS^c=OQ&#^rt1K0bKkYrt>v{1@69_7t z0j~Z?Y0KOz2#w{&p9sQg!?f3ox|!LV4RU0a}$f;wZfcD0w3}6bZA}* zDq(=aMfl>kq>nz|NCa~~0)j&Gp44|@sOJ4fFGcHZZftcE;w#bY4dK$)LJMPjL(RH` zhl017HT^{s%QXEFhogzHDtXd?s`>BDo@kXGPDaJQQEiT@C6cWOw%A4eU4hUMuE);a z6S?l0h~ShPCsOn@*ONqxc7$7ZBYC_?_Nqwfhj;X)Z_(1vLksUG50UI4x61L?zZPvi z=P+i)!Fl`{LD=&Pbtx?yT!!qA!q;(rRcqbRQ?E7e)~aYxiy8Q_;+u`ZRJktLafDL-gMJn-Bc+}-`=N8H!1YM%? zkv-eBv%=%mK0hu0iGDcvze1c#$$5$+FIiXD(N%AEpg8R;{;D^ztGb`0tMe|h*G=96 zo-Py>KUkY-Dk6r&BC!J@NDUn5Xz$I9drSvEIIV-{u*u;9{vW?8acO&wV<5*r^EX@c z8O#&s3$e4d{&ukuvp07!N5?ZTkEArr(~4)>_$z~XI{rH#Zl2EmuoeP=(wWmHYrU&K z@K6osXh8hzCkbco!ixQe*5`~G3(%K8Y1v;fL9~UZ0ek1|?2ZFbOG(;;lzOR`%renZ`$>5g%yny)hauMS5^A=+bs#f?HyrBE#4tKz4fFw_mGR;E8lPsu)+;CRHb^H z?^o!?Khwq#TVd8etTTy+rCwl6Zz~@Peo(T~>(|aToVYSHtFD~m-3y5Plwu!>t>!OB zh!)e^@`6aKmlutfLnY-ySwQAZ9}tPPFng5`?Pv*V?08I0J*(T*F=Gb&;MzxDv_&-n zc!DZ4iwC3ol-hzGWc)xV6IZSLv9fh%XvvO!eyOZaF22C*P%i9tvEl~U*M;%Cts!md z?CMc`*AuGPtGvxH{J8!2WM+U?Z}Fu*GE+~Zi3j}S-+$5z{sm#kHVttGz&)X=BVN(#u(PYH| z!TdtRt|1){g=m<2uOy(u$sgp2s93vl#YVg?uQ1&De&G$gjG(~I|Hs_Bz(-YGd%y`K zkRW)11dNI@=%|UJ1_dQb$_ylW24)~CR#e(z!4z+8L6SgPc}$ouu(!aHqmOo2 zU@r$DfG2s#8=zBURjqWF;S0OBA{Wgbk(W=)oWzj3V}u(o!R zzXAp>J^c7meh9xTHn#BUW%5LwdS0_u)s>YHOu*}Ck5OjV*#Xnnp-@|yert8tP7Fm1 zSvyk&$?E})$CUTc|A=foL9SfCnSxC&4chF#VF3}750OW!dJJ#q)11>xnaJ0-Zn!!4 zTuv1p))X)^Ljm&+)^uJ$b!KOgR_bSV4}@<=Y`hEnd5u%vkMPh)XeP9|xwsj+F{Km2 z%wMt!?N=*UHkmthgQsu+6U7LJe=xpZ=qsdyeATs6!Js!_uxV+CzUzGF;SjY*52cG1 zszbV=)xA3*ZIk1_96H%U3q8vZEtQWGt^kDI@^*x}9`s+ws&x7w$&KyX(z5Q*3MM<{ zbN-#n?Yn;S?r#dKN9QKDREW3`s_lR{peQJak67!=3MG;Uu7<)&H0ffih=z#(DiCWV zJedOKz5gt%9?OEpu{kKnpR*n9I7gfJb27z>mPb*fcMX5BJ9RtDo5u3a3z%cDM%p!P zU39F|8?=BO!t#6GG`sFTtswBA_>(=RyaR9O)pU2U-U7DUZCNk3jcnG+*0(Rp?GCxJA1G0BQG_gm!n-=6wZRM-MuA*UTx7YgD+P*x|8a)%sH&?dDw@ z`(|B+TP7!c+AYqI+ig~wTp?Z-phs)f1I)43WR(<>l=bn$%ndiSlh(a>+b;2{eaiO* z+NWPxf8qSPTiOJij+0G!n@H7b2;?Z%B3m#|rp&yFUSO0@Vh(TNif8U@ zK+qd5t@#?WF7UG$kKyIZh@RM6R|}D56K+8ih+P@&hyjLV(qqQJTf+;2OoNqbDfSfp zFwGynB9OO33o*79RK_@RwlZMeM@qaXpuN--NZuAjl;Ht)z*E&fKFDDkZVtE=w?yGl zW{L-!_3=bJ1i$d$jm|f4^~W2!-{T@dG!FOEas6#!cTM4(1Ert)!#_m>ZVBWa z)fdFhitax}{Fs#SS4xX}0&O#`jV`1!GZ$}J3M2JJrG zk0NvYd3#H4LVp70ggMaBPjIt9w;Kh%>rZZq)(?jcR!@fa*)%veVTHxxHCq>1`>aEg zh%*pLB3NI`Jtq2{RwHgPIVeh~m-m|>=vb?8d&b5*dz{t$Jsjg89rotnk24sybjY*};#5E-@qG2Ia9 z`z!(!p?je~-4$o;Hxd@P%DRf~We+zq=jxaqwUrmD z>K~LG^eM&i7t2GH6U)+>H`#=*hi5{@y%9{~pB>3Nx*g;N!gJ`?K(@kgih+rG+VkX} zkswKGGYE>+gJHr5p@f8G6cVt0-KK>`;tpy9cto6RAs{Nd<3(a!(7|hSd*gNWXm=l3 zK!a~QrLDX~TRF0Wbxh2elvp@5t|)c)app(xuMAs244v*?dMlpK)8tsE&zC(l?ecR7Fb&|@*K?EHu{(n(I=3_FP z?NvPWDwP?S#LU+Iqw$r#D*0N+t*0c8YNnE)%`h;c38*q+olpi0#lgv*i ztjX#FZ66Qdw%tj`Qw?>6b?{aj{m|`HvAXi(lQ{h>%^boJDm0}}j0t$MoxstW^i-j9{faC9ID|Zolvekzzw&@$y zY;ZBYxnr=e_QQ3gUqZ{dVLvM}1|!yHT8ur?{<}%pe@ze}?7v(H(*C=QSJS@2#6pdb zA9`PE`kfwf|HyuMZyQNrIwNm$(s`;{ ziJ5n7>z8e#Y$$m0>m(vAgpgioxWdRJZNuc7?P&6Auw148*eoqz>Z!iEeI3=F^3495 zIdyk)(#fORMybMGznYGs`?u6Y76Y4Ayi^+$6&na4SoUE0@P~Vz>hlwDfQ!GD%L~%W z0PG>0paXC#)Ur zQ#a_NZS})Y{W(&7IeB{f)sOSHt^W6{eq8i7#Kv->`D9?@-HySVw!=jnegyCi;_5@= zR-utTn9XW&RempiW3Tlyp^4`dvV=pM_|bea3m1_JV3m1Qaiu2f(hKnoR<>FcsD~G^ zJWS3~9EuO(t;nyZa9)%&E*@_D3cFH5 zf5?8sw#cRc7z1ct&(Os`Nh%u&`y3*?qoqk@)3g;Td^=9Z=DdpGOOo>`Ft4I9iszW0 z!mx@?F2P3{LHA|o zMy8u;Oz7?)GuXgbirSoDw2sfU^-ByW&E~>yY~q4e0bE+fZ|wu*^L(_H@wR2-D04zS zgx6O^;N0&|K7>d$GlvDj&y>r^{g$K`w?6(*3;hxG2F%{e1LH69hcB=A`T_L$nkl>> zq84Tr#7vp?hv+XP^jWl*-z-k{CI1sOh>RTdC&QL{5Zc+915gQxDiHoHX^ibd#HSKO z9dgQ^qspGjOWwgL%WE+48>b^O@KnL>v!e9T;Vq(1aDB8J&wloApVb)qWWA2tv(Hbh z1}cKsW8LKWmg%b1Mn%1`C(;EjL^1X+@&B3?|7R2&@c(KK68L|RSMYzi+5}9#zKZW- z`Xz17`N&4R+=TaZyr{*MvnXU*Wh9JcIxF*ESPbTW^r<$?zlIe7d%#cR;07?zc%HA~ zD>Jk*(m+OYd?VHD*teD;Y4wDU&Ig`x~cw|&vbBZq+E4OVkMmm)uVj(B)y9NIl-`n{>h9cmH?*R)U z4H4|tjZr4D$EsojhY+rVP8Tpgz}bwl3-}WcpSVpVT<5dw{=gbgvCixLVI0~Tz9SPS2wZIux;X#e zK&X=pg67#ROq8WqbDY?R4&BHL8 zz`p`KktZ3=AJ&pGJNjx(O`*xrt@YMLdJ#W-u+O11Ez~Hjv3s$IW%$j@XXcKF_e9ru z2wOmnF`d=K3j~FQy$pXbL>hokC7FJ++o%Cdo>JjAdluj}suvn{-a4x@8_6_TNOQHF z#v7_V7wLL4oeQlwH`bDCrS6^`RKiD*us1rVptVS36Yl9?m^L&c6gecKy{IxU3T!xB zsi>o=^P661W9qfJuOlsdHy-`E5c|syB9$skf!=7MW^xOLU}m?%u)jtUeTGNkSZ-N& z>~Neq!`r|PsKZjoP9Pu#6`v4LL2%&k>j)T$%d3ohi=h|#TPv=~5}I^&t)zKIMm+o| z8=;5SEOK&KHIh`UP1GBQiDn_}_f&ozM}KH9M0Q$-a9e<=9L8qoKjePXYPQeXsvc;f ztB-%bB9_7W3vSz;8La*{w@);Y=5JAvDf;+TJM=M@n>v)d=CFGnf+*qvzLBdF6Ju#W zP~(8){agD@VFHlqL#EP%P)by%A(U+(n*8YER3Vj8l5&X=@fAs)HwdZJDu;y~X=|G#y^*PTB)?V#`{RUI7!uQ^i zY+yHDs5ZY0Ny3?P(Vu=f&~~A(R^J0SuNQaj%SmVX9N-e{DC!vjQHBT12JbiXKfrzT z7Gph#OeKKAEPs*|m@aRx$Jc;G{roEI+sx^iFfB;v;6m zNP)LRSaa|z+R8rK%26FugBm}P9`5^6diV}5XkBl3NR$+{_D-8yCvqbmO#yG>K}mb-aVLoGB8SG>8Pv=f1FReR1I`#a*I-3f-c1VcU1ZE4JEp_LG)R;b zlzwzBk%}VS+nXo2{%ut9PXqvj{3CKGp2V&IZm4CB24`z(!TD71AzZN% z)v>1*L3NjOM^N29vPo6Frhen1yHTr|Ux{zl=d{$D0K#f14T~jmGOM{OipJC|J*wEi z4%S;8Z#*F5cM9Wo#;n=;Lh*;r(57Mj#Dw_}bViszJsgg4F}^UB(`k{caXC7ZiYF@1-V`p6Ee!jZBm{&JZ$N_y@&yG{0hbb5(LI;Ec(4m=9vISUu5cyDw%nR`K zA{ESL6dSM_oL0b=(A9y~r|y_es>yEhw$J*!&4g~}oO=awdK-dC=#LB$f*0V5evp~t zV7#xv2pbq%5&*Mz#hz_~&<&g*i1weuv;$Kzeu9g5mB`-Mwd6XYYp|XMrPwmVw=QUJ zmy)`z(PAaZq838uO@~+lPmO_K(oYt$j(+bfA}3D&qkaRSf8ZkQ$eRU;@+J;|Lwjvu z^E&H#;eXNtZZ*efOe7giwst~JXoa+7l8)Ij<#p0k>&pmJNp@SH1lPF(ChL=ggf^Sg zB#9PeDH>_gFI6+_yLMNY|>!A1iYhjoq-ZI|lD~KL`TISk#DKhVp;Z!`9+U05}E*7f%5zTRavp z7jpFAq2vH6MsA(^ACoZTaigNt{9bM4BH}i#)g5pJf7yL7Vf3I`%>l;{cL_y*-v@u@ z5Lw%Br$m+8aJPyCLUw&K6Y#-WhPxWkH-fY?NaI-|!jt5)tylUhLQW$MXApm~#L!M^ z&WZ6sbwB9NHB74;n{V&Ya( zIFBIhN@79VGBAHS@dC1}FT@id1L)QZ_VGuHjXrP=dsK%#uGqN2%V<3nCoW0WLW?lC zxUESl>0;iK`)V2M(`7|N%YC7M!2tT~fN-pV!_rL?uO-0kpdzMNrbLNrb zdpyAwSK$S!NAe%H4i5wQTJGj2A+^dbAZS@E#o8x$aO} z`YFdg&Nh*Ld?;TT1COE_Yd|ixvA%RBFX#DS%~HAf~QdHJ|l@gDMO9Y7d+U8@j}6^#^@LHp~mzVu-)ZtsDwL>H0O0?gS-tXtHJ*P zg5MQBPAwv0IW zMoPY}2ENUcmPKD=rUJxqUZ5A|eK6w|`2EKB=eF?Rr?K;9K|!H8Dfu>|-_wEdZ*e_| z-Lc#w__h2^1Ct3CPk-C5C_rd?6PTjLYV7D1`evdZS?rJl>Yg zf${J_$GCG$b5J1+;L>$D`GARv3e9`Cv1UP$m-~IkO2&e`w@WYgw$vf_tsMazmH&P8 zkogf13!qycnM|P-SXy@wCk!ti!2X0YpThhzXE9P%0{3rA_KjDugrkECj4cIl3XLB>4P z(ek!`e8bSIVRFR2k)7aA7wDnd+|^h)0!TI`LV*KV(R~w&acfNx;OLb7S3a1jb8p7B zd-LKSeLe)|eK-4L()xbYE%_EfT<0cZBNB-k# zWWdCiMwuyY9+7F}nzqx3nm_)6W_+uDhbx70&QlZnzXMB1I>bZ>@de05eau_vL_s+7 z$!&)yVC|=?!-sTlFzN$2jW`xwoBcgj036RExn~z+8PY3|10IZpq~BN+ME*byLh4p? zQ7e({_jXk7_nUmlN0j^gZWK#_aJFJI13h-f5zc9a>6-$1A506ur3g+Q)^Ygo zK%YXc@Zv~EhG;YPB19-iVXOvO<8#_a0}&_KQ%FZh7dh45s;;ek!2@W4ALBS1jp1xG zhP6)yJ`AQ%F;Tpb%OJc7mf#C8_R?&KAAMxpcUon$AbyClqG6azUN#KN<~5Z6bh-?w zZVbx;UYU<%Src_Mox9gq8Zu4BC=RCUD7@Vf;+^|w5R-WZa`$h6_YT!p4SL>*nRgb1 zd#^2=v%9o66?GwQ#ll3^h!Gp?zReihm;x7{XcL6oG=CVv2eA%ThCNz{egUvStfOxc zre#ck(H9;00se7SUlJ=rCp*l-nS2pZApn&<1a=XbH`dWL6nYRiW(hCmq8eO6`LCsk zeCjt4M*&3w6ZTkL=?h|}4!qW*=5OoSXVf@hu^?(udsn-MeHQwcoi^Brh@%fUY_b^l zD2pG-e4>>n&I=rq5Km<=2Rx~pQ#%wlAPg|1izkbXF5sj%r(wp0J~ML@oEY^mAUQeB zrr-Cby{Y6PJ3pNOzOX7mR#2ls|3LbpMq#HlS>Az1ZMGhe+s%}Zad%c`#P3(A{;u7W+tyF&EaeBnqnjB@rx|2SX|9>|pdM2{H*N)alu3|h@| z#^Q<|!E@8*pINl9Y3si(i>HFkALBrhSFHTqN(G zbB~ehJUOolXUHU#`a}75q>$NM2u&LdG}tO+Y+221XV@j%zxGT0FVX9`b%Gm>_JI2h}pm=SDhgkHFFE>)f@{#n=Mm4x%a+81Qh!NykXYZI0l)>t}lX z;gou4r^-@&MspNWKuc*V7Ctjm@jaUElUUM>dz^Pd=l-Qo3uMy6V6%El<=3nvx*U4p z(rbxlT==xFA8aBfqIv+G?$kGk>_nkYz*Mn;P^%B%sHSau!J0RC{P5+1jeY|w7-go6 zfPe{I?W}VU|14w5_Q*KaA36ao$!4z{0`F`3D9{&M`!I4Yfh4AmWHdHMzKh_AHXbV%=ujV_STbsP?2JmtblIA*=yhG?5~k;B55 zvh;BrECA1T3{dn)4tluL8dgp$#Q`-mQmTPpn86Z^g;}_S^6&3}0ax*z)9^xqZSe*! zT-;x9nHSLF26kH(%7zRK4;D-#5UeGXCElQUN4WzO)4LWToN%^5aou68tRcmuUi9LC zByPv+0PWyb3Mt9ny1i)y>Fe#thh) z%MmnxaYR492j~f;sD*g+rY8WKJEr(IJ)-*Co1#N7Gv0sz7oh-$W6Uo<_Gb~`y7q+t zw;Mp}eVMmzKLog){O&v6=t~FhdK+@RujvFz2D1DKZ2&Pa2r(+fs%w54%1iNwf1{u= zpU}X5x2Zpd%;_6}b!OVAa96BMo71C%+eLc6`J>~u!f%+7QXvN=?DPs2`kD>}`W^}- zV*-zGFQCZ)22-{|nzWuDMias&>uFqv8U^#gGfsG=d|%VvKr-A%Am7t2MC>qEGasZ; z*ctF_O+Y3ru+*~XZh2_7Cdm~ij4{PfJgCou)Mxc@H6GfP7p#{rA$^~@aEa_l@VJPv zPPtL*myd=1;$z&9M`uAY1V;&#yE>Nmt@CfwKctxrj`d18ku7qIw;)7#Be^3Lq`JW?S3 z-}lfAa}^UHYF7YHRvPBFh=tUUpCFZLbAE+;>padK3H=))m7T4BLs@WZ|Fk(zp%mR5 z1)j992pAa3Z~2Ceg;4dFw8&V#NK1ArK^EzpY=BHIomc{6Vj3NHa(1; zbwIJHw`0OFyG=^?;gXel=Hm91infwN;MZDv_hGj?45LiwuT+l(e2s6iyu{mE6 zR)}4!k_guD^&9fKrj}X4T^L%IcC^rIOqW#p9PU_XQrQ!Fc;O;Rw6a<*RZHda*b-j2 zy15HDqvW?b6}JVWAZfTgyfLF1|$UIO&|qho+-v;3{x{ZYQRiyU~${F^q}K5l@Og zuA>eyv?0hgma~oJRKHdO73o-S`x1apo?DV>9qxs+Ff<-w-R0<6upZ~W8SjNY>f<+O z)6(IqXr|_T)_-`7FX}!^#jcLfL45muGS!gjBT}eY^1!C>eMD2sumS-v3K3L?C3}E7P7CB?ZtUX~2_LgUh`P+$M8*@ z{uUPdEj^|zC43_j@M%OtN))id*19_ALwn4CS=K3r&sykn$dZr+Mj`*GaKAU9@$E5X zi_D)9Y7>C7thKVEZWdwS;f?2b;{pq;6Y%h_tS#*g(afb+Y^3#+M@P6p2$ZCFZs9eQ z8#!DE4wzwO`yC)%k`xalzwx1Dgg>Wd(piIuHYPT{)TCIS^u%k#ET6+2QquqCj2U_K zD`D~e@Z53%5AOVOekbPt!Au!C3KlxTNZAyCS%Z7$q4}tdnl)uZiMV5cFj}SJerJ>< zho9J`EJi7Ta6xUe7z)I_Hi|tJ&E3o3b0LjY*~QydK2y}k;X2LOb@8|WAU+jbUz66r z?8~iWM7fCsE+7m(9;p{Nj?5}Fws@N&1;)rMJ!hoLE2dX((>`d(3mJT48zPHAAA}AC z5IJk!-;fJRo~^hfz75G*W!3cuMukqPB06$6MA3{r3J}sXdkDq0dy%Vz+!GFTZ|GXrE(UTh4 z*G-@M6HP;dS`qb;L?cM^G}oFOKQ$-3y9VmNE!>RLX-7qe|f6wXOYroK@-J zCz4Q%o_Blpj1=9tJ=@_#iZ`^T24>FpIZ&$nCJ`8o*3mqeO{H%WojcC&_u;`FdYOGW zelcw1h~|xSX`vgqNP_J(KxqKX>8)14>fu{6F#k9epOa8=z(`roZAjc4yje4MK~?4t zKc#TI1L3RZvq@97ua=h0AEea(@=y`~P%00W+FSP%`-^Njy%!IyGzLaPBMoUereyWd zOg~8EP%ZRJXyC265Tw`*giCig9DJBn;aylBBx@E9{n;sa=cwt*s_Egd`YU1*vEuLZ zA#H(EgR4J8-79`Xg4x93!-mT)FuNsdl}kAbfJ(;k<08s%)Xzy%zz{0QsFa(Oc`;y8 z!&!Wst|SXREP{$ZT(tyca;w(d?x=HUbqWwsNiF8XkTX{Dvn|{paWxaG5_~zE!7GzX z(;#U?rpi)H2|ch-&i;oW*b%MjMcx=Im$Hw?jm??pPP+xnR(S@sO@f3xaTP3f#TyC&3Zvbq~)%=8nPa&bTj|O?H zpb7qL0JdofC$PNgNk|YZ& z#LUg--n1F#>G0w~o;|<@F$hH;(DQpbUocNBqu;W`rHYQw^Dp3+Oyq$+aoLyf-jfJf z(f*+Se2&!&EVuWj;@kKS@D0O^)r@VQ$>&r(qfh@@Ir5c!dhUmKLp*Sa%^>m$_B4|Z zV5~vHZxn)(%x)V_kba2(h%$lhhw{Jp!WPMts4l@`@xfY?ORRJNqp&9US|dRQ_-K{K z1aJyR!fMFD7jqb*sQ?utKJNU5k|bUtj%k4OJe(PPIU9_9z*U*j^2P0-N28t$v(7?6 zzr2O*qll7%vD{PW;fi&Lcp%F^g%H>T`nI+II*$H!J)Bzi8f3R{w^w*^fN|hR0x(*a zj*|C}DsL$NACe5Z=~Vy1R@Cc(RgR5l1M%7_XYv>XZKy9+P=Ca!NS3DXaj_Rj1qo26 z!sv+sZ17HNxLiv)@r%dkBCguxn35q7Wvpm7c`AkXl8mlhPmjcUy4m%BKO{B|C)mwE zePdfjx~pWkHIOcP&_BX+g|$=56@B0Cp}pGgF9pX| z!!bzS+@^!H;nmX01a{>KT<{L1%0e9a+!QVBTQ8zzj_&fVMYof@P5be#&>YrM*mti# zeIqO*tqPRBh%YuW8KIAogR7R28cNf#2qI?Ett?1PMf?4E8)p@BrWk{TPzFcJSe7Lh z%zeVd`GoZR<_}jh+X%BOoV~u7-c|Zv%_3){K>~`9frvcKF&M;+1vv=9g#{TRbG0tU zBVGahNB?XKdhN3Wq>e#oN56Q;ix%m5q1a`MP&GX6t8t<4*X;j710>?q2Hqh0DkDy9 z;9>Mw+XebUs|0iKo7(JW@Ht?79LRaom-i+P3V%}~JAGjv*fqlJ-JL7UT%OfDMx;5) zCokLn*%LX&I(4HS%58A)n!uP&NIKF?$$_B?M~6nf4`vLA5?nsmpn)1V!a+4Oyhs2X zu2$e~w91!*MI(R(Mge6n6G-O(W#tabSk=p*^iqugj?pC4OS|CwpJUqmKVo|qX4Itu zhHYBa3P8v4k3%%js^1V=Mzws;*##YIZ2i7VW;KXmi&&nXw}=gv$!!(yHU^jB7ZY3c z5q>t7Db7{=2?q)jTaCrnX19Y+kh@gZ;t39}N?BofIc(-CzNEehNvw1E3g>I$6-EGD z&0*V+R;}B?Qmn4{fs&8gsl0MqYvqyE7)PxyNGMn&rk0GdUdKFb^KT(K;WXemQA8vY zwqg_Ax~Pp(O2rmKsn@SYS+Uv+VB6(ZiO}9Y&@gwzS}_&cR1jg$MK}&Y%;V155$8+S zMy6ucB+Y>T`0_li5^NT%wd9Od#R53BfdynovF|s&HP@b{H8&-+rVt7}#MV&jhC-}a zeL0@C>jngzh%AH?W)Q>}#7tPlp(aVZ22KxzI86;b zlphN}IEXY19MJK$3>+JSQ=<`9W;WA=dw#SE^IG1;O}Jn&hvGd{i{%0%xPC$I3mU1R zC_P^fU;G)Nvfz`Te+Cc zHa^skHx=hCUW0pW&WC84BOgGmMtX{A%obNmFB3IpAiASW1i^InKHkK%W%1MoZP_l$ zkm1FoHif@=i(@3$j>-(Os3N&9EgO+VmW&e?nkg*2mrWE9#pl%kJuzGL4*3cW8#0&0}c%YU0szAlGnhnR5br)neT1B(;xF zQRv|LGrAz;($uubH$Y{aGtCxF=8_z!0ezrC+#+D@)xEG+@z#7IZGyjp%-OIWT8DQj zWSy)h15v{Z1%6x$$XyLqA{;Ot$7ZiK;P5dEczods!Q*pqDFX_VBE+N?!{giE5aD)Tc80P`ibi7or)eW}f+b|E%DVAZn%&#_exGzU9r4}|Zu-nSku8(9pnj`=80 zu=dQAkFios4v#5J^+}84Ry}p|T1C&qRS)s!B6cLU@c9+eT9z2YoxasL!hGeMg2A>3 zkMN8eDSym4HuDh#jzo}Ep+7{M+#OGU=*_NJZ+7^TYxO))RiC{Z3spB}e+vGylh1#J*Vc~9 z6y>S0wsOe75Q21{5Iy+6JWEv4t#}1fAL1if_42jZI)$rEpN$<^4yS_R*p4zqpCgC> z37#yKNx@Z(Kq)Ms4hYyq@^gd?W2>H{_CL$|iMzNG<&?Pf6PDNe`5lN?^)_#eWlKpw ziGoOzAlknthV0pI16jln@xQlFvb9Oz)y;T?}yn`f;_veSZfB+zX*SIzuzA zUMTnrfhPEnkbi*{q`~D3e?Au!wJ_&^)!dIRz4Y<}t@L~G(|9Vonal>1N^85raYR4A zdy{Y-aI%Y+AtAWV%ec_vN(}Ro2|W-^p>1OkZBffmWEt+lLdtc)F>OV2)1kh{(|-xQ z_E1-vqk*&23-d2Yc6yr=ZwFBQ>#XDpNEHu(A%p*W*uNsS8B7me0h3+f@+`W3;Ft$Y zV^G3HehXYNPF5VEkvcqmZJO6;4js~H!k!Ad-dbg=4%1c*cSf8Z50%hDBpqd@c!r1l z4Qa!}gB!fqe0MngvL{`l-$8JkpR=&R3yqT~DwhX_b*$R7k0=$k*b@ zK#v7NO@|nCymvwR+q(I18pJEg{n=#HW9<3+s5bX5s*`AKfPD^nH98>qf!%6(Mu zd?}k)z)+#aWR$P0pXCE&s(;v0Q$4_LPxZgq+m=f$BsJI`9QXGjO2dOgrXoEoGf+Zh zu-7+PQd`beR#^vR^SJ_9Y|oW=wKW z^uhgomU2!ClSx&4qC6d6bk~rVnD*7#mItiLr62!NepKPg&D8SCG37sbBY?m&js~C@ z%;MZ-X!iW(UBCpcX&?s`??0Nl3R#oN5X-4NEeXKT%!pK!I^}*Gba~BvCdujMz^ zV5a`!+^dqT%)35nkzIy^#DfUC3}Id?V3L^o(({*-Lg+t4(#9@BkCcHMU2ddFAmAdZ zv{eTvL^M>ogJ=Oz3`-}agy(%IfA5DJy&KpSAOiO{8k%m7O4Cj3ucSTIcspT#W0*4n z>W{+wpZdbMT;LM-Tbjsj^?Z#2k(dQ(Q8*@2p$*%L4Fox4j5g2cMw$$yHSL>(G1TMO z9qE7Sz{I&F-0i8|4<^9_2AnlDj9VBl)>VSDUN_@ow8HU_RQPcb%8sr+3-^S5(Kz6% z_+&2!YPJgkqe7Klls79r87GR27u{oc1**su*fCk&&vTc{wbDHiS3mcI$TKWJa$V;R z%9Y&FDg|D0WCyKwlb0Fm#jA~+Y7k-Ip_deksq73wDHq(B=U&EZ__3hh1b9CD0usojt-_1{O~UYdH>@%n!l)q3)?F;l>%eTBTEw5~iZb%7H z@C}&NDN}>HV0EjjLQwln{jWo+H>^p5MeuefPG;NVC%zI+TUY?l4C)fp>^Gz_x*^pe zE@u)Dea2lV@QQPI@FSk6P+Wbxa@ity^@iDOzkF(#%~tX@l>aWUNaU^A>;cZ113l!* z{P!%4>I`7`BvaE_3>j=`u|evW!oneDB<0EA!|MpiW)8ukHYtdar%mf`sEixmi6w9x z@Kw|@jqNz#?<)bFh%r8MaK>tWqHWtoB30fRsS2^f^}L4Ci-|lgIfHMTb(hd4pPgYd zo?LR*x92*9zSa~yfyJCfu@Sj3S-L#UOu%6HhbB_u-0165nY z&S$OhL^b8U_!2_GOOi@KvN6QfLu-Y4|1~zFkq&fLyeXW%1+TRlMMQi?||%KkE6ca{3{3xc{+Yv}UZ` z3ZT8a;+GUO3KpA1(dk-qUnA&4o zv8;FUyWqx})02QSQ-AOkjtf@726kFSeqe&IcQZ9*?R7wK56-W-1IX6UHon0GDOVN| zS-R1B^mdkYbuZ#Y8n(sU02@CJhqjTufiyctw5r5{^pwg%&V^;#~jJ;o$4ZIB< zQ_=VDCu5)8CDR*1`6;n>k8iZweJ^gTw=!8eI~l?rTIvr@eFac3EM@y5g0?cPIPaXY zE@3?-Z$yf=pcaly@q0M{HE@`IZr$wX4up$cfjI}tvS=Fb2A3c3Z+r=DNUOIpyJJrE z1F{)`yngPo4}6B(9o^nGKCx56D3(y5)^2c!XezlHJ^c{dGBA;pa68D>;=BtI_CMHe zVkT*s>$h#zY}~>={%nR_u}docgH*gE*4aeK%Bg=6>!0AnY|s0$#222vi~B`(+51Iy zA>>F&PPkwT47vlhXe)2Tei58~wF{3aTQD++vw}|mw6noVFxl_z{g6}x?@28P4juF$Gat>NIXq5RM`GEQhQ zQ?J@eww(ILFDW0S4#rb-5(2jLzzzA&Eg2XSGvBRJ{T`{TY`lt&kkViu!2}Y@9}p`p z`j!+|sfzm)Pf>8}{C9C$)#2Y4 z%CBf7e9F$Dhy@W*Pvhy$*x18ItB}1GKgn~_Ju*!@jDk4vlh19OfPMbH*0v@LjQt>v zB=HQnO(Jny`Iheu=s9M@Ho00K1^*b|HxB;^n?X499X5N8?CR4wN!I8>HTSt1lEzON z580XvyYLk7t|L}+3RVnY91zcqq2P*Ge1&h+wnA#|O@GJU1;$XMYg{Yk89Na!_E;;e zC@Q(@GaDk2pC-aXjUT;Q6FCVNl~_UH?TM7>X%)AyQKgtsQ-3-Z%8WnI8xWInj`X10 zua?{Z+(a9=c0c^OlAB~e;2#(|(UpgYh`SBf`(g{(WL<_%aV)dLx2I@Zu;~cLoTr}4 z!hLq(eN^EQZ(QMKeBt$BUz)aA!KI6%6SVQbOkICpKj_b`Q}m2OQ!i7cl~0T-ZAe0C z0x3}_v@T7c|N1muzGI6;%y%W6zw-$TPmq6Dgr^|fZTY4LvB!UNX%4h(6Ssg6u)^v& z2{-<52a4??+rUo?zuqzwiaS6H-{Bd7X20##HX*}>U&k^KH*|EWsQpg;;&A(&68ZjL z@jq$*vEv=NYfh=|S~lu(40e4T`K_4&7Q zK}vi9rJd6s=hOkj2)doUT5b@@vB~Oz;@AKW0Eu{CNZqf%=*sYdIKP!@8L+?^BMZVQ zk1P1Q`}xgVQ*b_8eF^e&*Pzn1?Nq)6=D-doa-hJfw|?oNm>}#LseH=#!Nx?N5e@Ls zXi#v`+Gg3EJahiMRPkT*3K9(a2S~#@9L&EQ^CV1QpP~Q3{7clsK0LJAx8S6u&8s4O zjIE)4n(Rs3DyQ0szDNd)Whs>z*v7cyjYf)_<%6b5Ny69@W-WlmvQWFbWr9CE;BvV0 zkbuFepe1A9Z~)P^Dff^A(48b_yPkvN=bE`!P`s((B{-U+(fei`BZBu(tzv1$UNC$m zu%Y;MU<19ZVYJ@K(I{kxTT_6Vo4RsFhZXUpRn1%Yclv|C)mt zozZGw)Lq!A(UpN&TE8Q%6ELSsII~)O;-Z(cUuqW8RvfK6oOVOzGVH(B>-Kj+M8zy4 z^D*80Ar_ja(x&f${P>C-(RDg)#$0X9M@c1}wjJ)jB^up!IC_ZP#ro@@>R;sgc3G5S zz}Qecz4P(L$gkN?Y(7q}?8w<8+Or0cfZJi`C#PG-8|y1OhP(G~)K=Wy8L>;W6%Tj1 zVZq-?Ft|(Hl>TWk{z?5j=*w9j5H~Sp_4L#eYfd{nq{-538qNk@ z<<_@@4%W{;ZWkM(i&{B);+?{e*=OJfaHAsUYVhZ^@D{|NcQ(4#FvuMC8_0OWw7#YP zZj2xF*V|vGtd2LSQ`bYBW(dxo;YRqc^=yigpA|;vI4T<>KjUTYpDgLJEmH9Xh5qQF zZIS4H>!kw_uKy!poQt)e%S=i_1&U^UsZBZ;f8Wo*&ktSrDb6j{KHr4nWx&`X_yaqb z{T#YetW8QC_3{v2BltUtzf;8p+N2G|+RX)<@cQP0M)}<#zk8Fu#K%kcQ=GxypS$=w z6{X)?V0Gv35&3QIj#6$esKvwQZ{hDf{Ou|BYM<}r54HwtpTEnW5BPHsqmDMkwat78 z-DBJ8LDs5mPIFj`6uIRr@83AfdmPeqB4bKFwzpTiNzf7;*c8DKY{cJ*j2Z71Yo)u{ zr@G`~tz>5!D&B;g+rHFhrVjr-8&=Zf!q2XhVr@67RZaYy4NHA=xioxR>`O-M4*8ho z=3bkUft=Y~6@=5E{ef351em-LX=mzx6#miX*WUaFLKp))7%v{p&Fcq<#AK|t2Dhy~sX#>-H`u{n@rHb%{(C}SM5 zfBqUwj9b2kve|sfNJT`tF~at(+u2A=3)zmKg^`t0LKB2R>+rra=ki_&I2})cw688x z%F(MhCscgW$ZDV*-NdVDUtu)cEAQv2GdjXW*RKmmpWEa^EtZmR&%-T!FbcB=g5o>4~iTP(q8{ymqAW3Zb zdF~*~La5_vxh{}H5kmQOb+UdH`zXr8vLB0A7|ya|a|iV&afM%gjw&1mH7=yM>NQix zzKS6^{ygOy8x$2A2%+{x!JqFv1NIy{SL9cYyd4jF-Yfju#g?~Ozd(-T`mX}#n`0h$ zOqTdS3*edvg0lX=(xTX?HkdnH1Wa9|ZYPgJ=+3OyuuU8NJ0e@%aE2$GM>0gF6<-e* zkS80m0ln(NQ-ESak%`U;B0r*FS+3L|pDj_v)<Sb>;+1L* zYFC10L)J-Hu2{qNoCQ>e6F{ZlGeFswCUdkV5)~$rLdt0vRfGPVJBZFAHrTOfH*ctU zmKX743eq=1|IYYebMXxepOhZnie{#pkqWUhdV{CB)IH4Z9u%%$Ol6Byi43+s%nNT1 zEDAt!<-}6v#Nw|s9i?DMl4d>y{CM9FP@I2@0>$Nc3$`!~8nf7P{Js?m6cYjO$@QMf zW2ILiTj6IpN&R>>iP*v8#>VgjN979}&?R3WwI00$8k_)M2bWT8O=eNGR7}>I~9^8qPd~IO<2(*=u69c zk)2$gCSsno_5CxDF7iwpi%}wlD*Wq6Wl5X!2ZT9G+%0a4AjsirIY+kJ0@aIHwN4pX zz%?dVJ{f++JPdTB2b)(Kf*g@P;k2aUhT!A4W%)2-mcsFmSKwB!)|sfQ3z$B4{pZ!#p4p-&A2psd@j9C7WCsGBOfO5{ z7-Ba%Admq=O>|a|DcXuVi>jY|f;AH%&A+qT4qmQS3iL5Np_F%845^xwQRQ&dd0Op3a(Gq~W4zoYq3cnRF7};^$6@1E#ZZ%gN|vzRh-YjDY)a3 z)eYJh}1G_^$B6Ad(pi4g7`|a^#JLWCeQoZcz4O zz6O>7!|uphorVWzssVnX>Sq+iT`hH@^HClZ-Ep3ZJLP)W)Er{0@5cJSD9qwz^{^d+zi zoXEs0tEdJ7BsM5c>y6oHbqZ3b_k(yB*TT9r{ATR~!HQ1Bx(Ut2G?^BC{EYUY<}6A* z8I*c5h!HOGySbae@3a*eHNlfXZT7u*2%cPzEfaFHx1P*P|T`KQ_Q)6fJYPw4>b2wq65)xx=dExH7p zZ1bwWP=`tqJb6S5{gp{Vr*LMmFnx32EwKiaCnGFx&>L*_loX={$p|m&5r-`7|J6bt zp>WmEF&)ejH1xEmq@OgjhttOYBu$t-eRdlqMg!sctu6faM%UB_Pc~~I49K<8 z&t6VH|0r$fdH-w~iwul~;L?Air{CUrtVY`%)Hb;Qj`u30DZS8?L>yR6?6J0kcoE^4 zfUw?Zy_fl8EuK}Xms`JBzmL6r7I);#b=Kp!Ya3p%&H2y&4g7aG1Nq(XKls0n|FH(N zV$%N*|Lr#Zzl#5T9I&;v`u`mNXZ`;N|7U(X{=)|;hX1Yi3jgtJ-Vv@&*IL; zf83pc|7!iQpBy0}#uJy*xg>{dC`aL|#3$;8sKUo?sQH|2S-&>>S?0z3ouTKz+=*?D z_SUX9s127TWwZ4Zd^%}0z=1WRkq~FFV2`lbb8+sElcK+?3GKzUi{^97G7vHeZwo$)Z84~SM-dJ%rRmG;DMYAN<)QeT?9754x8v1$+_J~=hEk4Pw~*gfWVF4=Zk zquF`(CruOumiz5^sVef%v(4f%KTiQ{&~s`iFiW~v3}6FA24-rgzuA8(-#8ohwzlB8 zayQJ~kYxu!Kd@=~l{~Glcko1q($wIIl(NpkPvJ67Re8y(bGki zRg;~Sf=Z*mb@WHuI5V~f1L|=I2-qSz`IC9#iYP>Wf%KTeF#oGlwP2*^ff+Yg0)MG| z10ovgpN92+CvC;lWEHZAfy=3`%h^W39+7+MPGEoFHu#G{m^)>S<|+m8RkZmk-UgGJ z`QJlP#)qN^fS|xp0nk0f)BHKJTtu1aq=jBWG6W9|eR)65ryX!a zY;4-fQuleq-Z@{DcB5t|!&99b`4lL{_q|%*XY&1j;r+&>RMvs^6(8StsY|P@#Y+g) z{dc!w0MfL1gR|<;$E^57@K5vo#mjIBFpIW?9|ejK?!V zGV8m=ADlWGxRF8n0FvBrGrU zs#%>j|7!dy`~*%R{L)Z7`^}V1*p-iKR|Em`CF4H5Fu4v#ubjZvfgswZRWa%fPn@ed z!KMOgP@>mlpillB$mqRqhNdQqPvM$0Tmt5pAdd(N^xZ*ce&$WC_2um>xzV;YLmePn zh!MG$>p*kh{9VvcrC%B|I5Po;+=J+>K4UZWSy<_S6*KCb$7iOTC)%ibYbuviV6DLa z>D2izWSjT`$rrLkq5Sjy!o^rmDb8}*ep8+SA*i;f5A#?P=t*HT)I|P) z?=k+WV`PdDB%~JgTFLanGES@^Xsl8?AR(%giw{@gL7^AyYn$0LFr&!rDCvwLRO9yq zV1x0S$nhJ;@f*j!VmL8~I&1?$l-jC{UFWWm=jEb__uG53xE41nC8>1~XFsd)or4uC zBhE2I)ntNA2iqC#4mkE*@3HkMTIB+khdE_3soA5gEO6gijCE-`JW>z}`km+x^!!!B z0kF`AOlS_g;-3>lec1_IW{9_?)|*_5Bb7EmnJ&qyxJp5EW_Ton|7%rGGZ*&dn>G4> zG89K6q6>q$H6l=XC+zPac+gGg0vaqii4-(24v^-)YqZ+Y4ac;%uw)1T5JrsCF!zis zVGTwmJRMOKN3h5m3W`@ViYg296F*vqVe5^5Z{@)QY7N_Mz4QrW3AuX!cQS$*#J4P2 zpHm%ySrASTMA|_dArJfq8`St_kn3iV*jz+H5C#*X#zBHmksj@hzC*v0|F_3KD=7(@ z^sY{yk0FL$TMSV6p~hd7{NFPE_c-Ifj&R2KfBEg>&+v4y@t-#BJB~f=K2gvAWXwlm zAx93XMqK2>`#{KQbhp8eNR4h4?!L?DQhqq~`ga>&MzA}By5E%ZqwW2b)8K+~*8P?C zmdb{p1yta_Q2w|-kYja&E_<*2E_#9AtmXq0rBJxy1Uv8-_)m!Pu)0}3tV$AgcbQ~{ z&3@4lypHxnM&785))h`B?4d(lIt+=cGECD)7CAE*Zx*pz zh35E_g6bu_Edb~}i2v%+W=CPriRS1HwODyzYD?U;O3s@229x`07l31RhbPm>@bt#! zk;dT0fbo&Y#{nEmYy`|7x8OWNSIIRaO?)zEodk2LL>@F@P#S)e+(*0n<4hYI%G^?VEAcOow-;(hqzL5g)2iq~5XjpF)Yt{O2;|fe$$Wjc z;h;WE&-<`+G|bUF$)(tK5Fb<%^>Q}y_>p_|J~Tv%c}s4j7~mRPf`buI#`!D*GoF-j zsZ$0Sa;{pOD1;#%UkG#=X`_pcEoMoIr&>A>T)|58q^ksx2Ovf3MprP8)|H)&56SRl zLgN~nb>IUJDgY|{RX3+#opah%(g(|D2ne%I4(c;?Aq$(*6dU{o_z}_Y?m|DTHFyvr z*k?^*iR2gitOKoY@4;KVLX0%)TuE?5aKrNAp@u_(9)H^$Z#BQB5anM@@r~_RIu-tG zLPLQ+fFkwikngf>#=-cmL44GdEr9p|{&ppNVuDl=h?ulRuUM~eWW9d;Lt~FJQ)9_3 z{OOio(5nKHuD0S8B3@`CMnUfM@GB&5f#$V(L&{OqgUP$=QI6l0)fezqhoE1bthdaT zlo%sN<*$HC`q>ZNi=rk=15gEGX(T0OAKLw@0!|uN>VT9&y(TXDTjFw;snGN3TpP{HT2$?XA`9|A7BRP3BD{bq=8!J>i@i;O1Qce>WP zvRuJLrx4~r*WY8;L0tvzE6D=03(;pY6DpWHlB?ldO`q%#e5!#`K_s-UM4#cepz!P7 zkDN{m0|CirSqJ}NcUo8naXdo*+k~F02i1R?`xE&`eE&-(>EQu8$U?F>JK?9)eL?b8 zkGA4N;KwO8Y1$B+hc^xJnIPlGp$60gk1Nzb$oLQGD&T*ZU3X|r>3+tb2S69KPzstH)kJP-zh6#QRsTi`p2g$0Vv0a#n@56MnhTRgW5O8!&Z|$l zeNX7xOE_Qfw3|4d^B(%{*2ll+U9};%YrS84X*~i8$|rA5BYhcMUb7~tJ1k<`t>IG- zw1B0#f4ZF!wTp7#c1@i}=tM_tHvOojC=dkJ!Bf7`&3nF~%P@dbcX~+ZU`G!Bpy6i9 zxyb7(Ff&&SH3vMEbG)MAev}S1h!rhU#oO_luxb89tm6GnC7q@ek=n2jTz`@j3dBPP zLLYS!Q6B{(>gzoxD;oZYISbkBnr_`YYUcuIhpQBf~ol0;2nhIbH`O%o<#J+j8`wD6Z}+G3;X-`5KNz$qRADuBO& zanOHW%~#|fE*@tD9msJCtY#(Co71rWliX1Yy@+Q&PWuX&o|Dvp#KaGLr+#D>(_f5T}9UlKC~4jJlQWDPCca;7Y?eMhIy|A8NAF89 zLRrWa*%UWVEBsjo@Pa>2Y}LOIeI2lAy2!Du-IJ-)#Vsz(#Sp>}*#WsXK-K@>6#k*Uz6;R{g#v44judKh#zZjES zoBO2tUYW#=aM0O&9V;K^;!3U3h1X77us(nySsFC3xW;>|HchKMj3)RI2G<9Lu@)M{ z)MnQm&=Qhb(vfzwdpH(RWoZzypfidhyzBbX^uj?~yxLQ>Tw>LNX0$oKLoph#eEhQ1Jnp@DFvCSKe`dS z8`fZVLpTk_6}Z_2TRkMxg2YiD}4^~0|d z@Cou4n$~yV)k$mr3Z(?j9V)w+TT(y!6*UfY^#9La*--&r#ErG`UDN?vj|;^>cNV>& zrUs+&I6eW`E^RZw=f+_6Mxk#Gz>xd|F~;$(x3j`$+dT4oj`*Y8fuSmbSHkwg9 z0N=*!0C|D^$Y4Kct;*#FrxO5ywH!DNRYF$vSoZ~xz%QhR;UdbMy{TciSTqbcn+8)c z+YK*5ltMYWJ4yCDZN+qV4~lJ>LN`4Ti^1>i#m2jU6>tMaYtq=74CY1=>?&H5EwpAW z{JTAdL|H(LNyw>)ymnNW%(fGsJ;I8A{g3*;Q~D2x{D0T~SN_}m2UcU4xo+XADmJ(= z{suKRtVoQXbOE)TYI>J*LatnsiT2$ zK$%O5Yl`##(odVc5$SNC&JZtlZY8e=b{%e=AHGrLr=omBQto$Eq4Bx5_R|gp)epHZ z@`es|EKL8}8+sFZoCzqj;^gbTDUTEYxqAaduutO6is2;?ukY-TjC23iJBnTiz0%GO zXv>9BACBPZs7gSyF9GoYGC<>hA2R>#i~tj84OG{Ev+=gEl~amxj#3a;irv3~QTYu^ zJv>jY1?7_{^cUda4C6m&NYT%4(A&iI8612;hzJxNE{8+dI|!$r_r|n`aazDdxevgW zu?O)vxrf5pA-IRuFNQJlk05YjbkBV;;SA=*6qLH>I_5>jtuX^H0^IdRF#Ip9ra(eQ z#Oqe=-(fw?rnhns>%o`esU>prSvZ4Y5dU`nhDjUG+P{a25}KLVzs}#%zc24d$cX;c zHF11)SgUc3@1OCvf4hHFpJMz#s}BJ!!3i*K&iEltBgStgy*8>CKwrGo@!4EZw88 z?+`rsg7(DvXovpqRKA0lHn73LGT3lG0#r;_MkeKwA)!<_@u3l7Y&io9Qh10<$LT-T zRt)X}r?taV#&9a>A`NIp1L~rE@R|)6f`-@)@OSADJb?z(p#htr#D@Rxmsa|Cx=Ehu zSlTtQ1%yf)_Yh1>JFL8S)Hw9VHGUkD|C%rkPqe$rjEf&RjY9Olh#whVRLfN6h>i|_ z%&XpkL76oqlt0;|^Z`fAo^R(f7Dx@HavW)Dt`hOw?70fBtr2grRW;0nBrGj5RqjPm zMA^@*Stc(q6pgUYK`NpVbO_$@jHV?Z^+5RXrN}5&WN&bF1wLJ(RsD`Bz|samrhT06 zFaTrSgA0>)6;{hL1nWztp6lIM!H-E%H}!8&o0s7vc$lM^m16T~m=|zBq@4#*y25qSMH^} zav$ZDv6NSSAo9u&sq7fz7%lubpaA&*yQQcnl%G5g;FkF93eX4!CxEsh;&C9S8zyS< zosw)3TL50I#lJm`tPvv5xV1rm434}?Ben5UZj$8uqg-#MAy{9% z=-$}*aeBB-#YUZyg3o;$gKwt(ag_+wjWZ!sUlhd7Y2l7m(VuOEjTFa3VR2yhXg4_BFh!QD9fSNiNHF;39_#^Kg0?xlhi(nT#vCcK3$% z)q+0+OCz!x2HyAJN<^8hAtf z<+Jp!fSns*>!IfZ;>fsFY*+$_z~XNsd!{PDVJe8UBe>4^DVvBiHnzv-wfch7*qC+f zj}B&?89(<0_Zak6p%6XRfkN3bUN5@2tR@P{6{wKQXB(A(3?OZVPuONBHRHfhLI7JW zgJ?ZWw(O)IUzgyq|2vVzxX7>*r{sqASh=ai4Ph(gIObdcu$-mwBfTVoyrLaqjsOAz z-yDN4T_;on`)`)yH+`e z8UPzYRs-0V^C12)6VNT;5TX1(&n2o}#8X%>c>ISQi=W-d39VWtw2NW6$BKLWMxc~4 zwRL+739KT#vd(cM2hdn>2Jr|1l6tThe=@{IE@bn>W~MtuWq)W-qy_Z(%P*&92{$>04rbg^9(GGR@GfthOn&1w|Oe;b2A-Z|}y_3t!Z3UW0% zH#?jgf-0Ui_R6zO8~hkg8%N}$O&csrH!|H0O^kd$o+f;BKtq$uaV*J{>11I*BB62P zQN`SB0?9#GkXICQ6FUSB%wm-!A{+u5%AZ;(>b*%V=W5p?yBSrovSMZ%0JcGU|G6>nE2Mk~} z?6oI=fi-_3GGcS1HvefDNN@z}QoJC>kS?+2eNHI3xNy$yvhFyH^|xCm;8@Vzh5bM6 zzdQOPU&Sf44sJXTnas;8@s-Qr-rms1@KAfbF!=+7X8aWBEXk^#MKW(oJ>KmG8f#TS zJO^@s%WLVP<~L6H5cwt0ch4xZ_h7hm`;7(mR(r*aV>A|^I`Vz6eRwY9z{OjePvJ23 znfq4=Y^~}%whN4zgHBCQ5f8ueuzTc!e)Gpczj2VB9{#=``OV)d%G`iuir;t#jv9oS z-`E4F)FOGnu>9erjl5(1(@|z1@4vL!zlF^u00T$WeBR`2@#nqg(?%VIH%cHULSF&c z`QiD|gNJlgQmFtJ3i=IV{dogLD!GpA|ibVs@QsD(7{-J=LiAU1$~A1Ddpq zO#;c!?tlg;{{^(>a7KJeioe3``rmJb&-PE9PrY#DPl7!n>~iiT z8v*vrbI-?(x1z4*5M)np#fi@6my87iCdC0K)kS!?KfHvrs`wYx>y@)nVk?K=6eP9M zFN>M@FM2M#F`$mHuC3b-_r`60<7Bj}&v+l`joX0nc|bPE`r*w($EkOS2ZSrIzWOgH zqW}{8P4*!BlJQxF+vcCL)R}dEO(=hqRGb0l?Z4&Th@n$*dyXFq9uy+3UE2$=$K32T zAK$I#Yf0bRafmZ=OlJ-pt<7OF)FP}QxYTZcq!R}ns91|e(HSg5l2wX-5`e=|B`9-o zg)0}wT7xUsAoaM(e$;V=z_kPye;7yL*}M>(oC%3j9=Wb_tCY*#MUphAaQpwE?rq?s zsILC;gk&WkVIu|%2oiMFM3gtdCSo*;8=b`s1f?2zRkK=QL6;7=KuYkJ2N{Q0=Cb;Pk+CkAIZ$l+_^93 zo^$SbyXUrgJGNulPQo)R?#a9?^)Pgmi+hS(S9(%$<>F3jmn`n=IoET3W+9HP=_p#I zkRt;F&dR`mJ)}O^Ji;1W_iqhU5(8uqSqR2SBzEzE?fQXR>Bi7A3#$ ztC!#2;L$VYoU$p%cS$c3u(9Fb-$k__RGrP$EQlwppd24g_1pz(9t>*orP3o{LBLv$ zQ(V`9nK<}I=twtr?Hzb#uXMB0QImc>R`Pea4(IPeI1mn3C+FA~(4Wdd+y3N@f&7mv zhk~%Md4Lf?lSQdhhFa5=BK zsqZcI~`3v$$< z$YiWvf02WtB%6(&qDms3f!gFjV;;m*u9pqckzaBQT4+NGcDnNx`%ivJoOeI)Uu+a> z5Z8O6`d(gv2^@g23IZLC1gAQB#xAKs56MUVa9eaCJ~F4+B-dj7hGdhV0{KE-?guJ* z0CbUMji?zcu>}`oJ+3^ZIR9Pu;>9P6nRZ5Ia?FD=Bqf_|zT;jz)qLF-3A%!449>i7 zg6>5V(ojsl9xXvQm-W+^i=UQGlE z9R^8ufIg)3MK;Mi0)zuQIc2D#D$WF#uS2C9DFro}r_N zVc?OGf?xyc8Hp_%j>gbbsNjQpST}5MV}?qlD`bVK+l-^yb#;$a4dFvrYEEX27rl%| z>NaDwfjxvmPy@#57W6LFZ?~+Pall}R_P0mlQiZ!E)Ozdjf9bdVuafg#@_L{-p|A*#Df_CxN+W+Dx(xFCqPa%zBa z%$2C6m`3h0-sJAanSoFdaY*cLe=b5^xff_RkAJmi5D};D+G=)*QKwDDb5wWC>1Hq4 zo!At#vj**0tcxuj0>1-(NMn0(A8!oD-YZdeD_T00A+4vIl~3%Va+?5uj7pHxg zh*k}6tJ3nhvKT7~o=$j!^PlGsEjU4`=W>FCG#n=DF`u4;soAxPQ-gFWmgPn91oAUZ zLTtu~US0`2xYlmwkEpMUW`4nDe#B;ALPB>@L>59Wk*z>5>RDXhK1Op|R9 zQO+O(ScYkYYaKZpXRwktxj0V~D%wu_NXRzCOF$}_nzXGyIJ7n-5_S$g}mRCh%R9kSW43 zL27&?g-(-W4HHAr-)DCVg81uR!d)1YXO{7qUSZ)m&#*S}Tu;4JHYIh2Pe8^vitQ6V zLwJ+B8%JXXfZd*o zp4Z-isWRmgM5DWxe1PA9Tx2q{@FXx~2QnEEJ(6MwofP5)Y7$YTf@g697T_bZ!1oW} zC)_r~jq&;={a{0^>@^O1X8R$Y+@?pVO)R}&d##ECo2SlxGHy)7)^f)=hZG0wO%=MTAfgYZKCah?pO$Ztagb|~F z{QBS;#wzvO7{(t_^+N;*_*d|V3dB$Cr$(B3B=cvimFJt4ed%uepiA*1T#aewkKO$7 z5dH`v8e8PC3TuM>eXLpP4=gpz{P7Hb@OxG5X}Al7cR~6!mdfpBBQ^f$9`n&ixwflT zX5a@rMfd$eJVnpUfT!s5TNr+YTJ{->f!uN%HRj<~weo^IH1~5pP4u@cWo+O6(NooY zmZ~|xnjb~Ys*by)4#f0rH}=adYyoc@*TtW{W5`gZP?Oy68Q~{dBBh&U`}u)^cT>`-BXu<^Y!*8s|hTg>g

3jL9Qc;3ys5~dR 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Ãi8BvlNF(R1ch;^ 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

    J-^%JLUins=jD*p3>|D`}xO2h)FDk+*N9I`|y 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
      pWlgO*R*sU^0`C$eSN@~z!svCqAs!Wk4khnvW zsa9;O@${pdDAUHep~U?Pl;K4~u1R!Ku{(Z@5rs`snjukM)vcIilw=e${kH8b7t~4r zTsZRP?BS!QZA*`saTqfBb`ZFMUMGQBC=@!HSXepl?Rxl)xX#wwTwEs?+bAFVvVgeG z8pU;(0E)2S{M+*@9RBZBEHfj1l7@flDio+#3Mgy{5-7kC;Tnd;bgwfwq2FPxcA74O zGdvPrxH2;Li~4;aT<^h!Ze$w7BekL+$msDQjSP={8^Jle!Xmedh(nzax82nZsZvwf zQJYjconpINZr>CH;@)5R8t%0G_R?rl@$@aqM+}i+fRTGegB(0^|YzG2sJmXXEsZEY+ z%ueZ6vG_+2G1|uVGlmp;N9^XalRA@cB0%^oY}>P^WqE=4aq-P><*#2F-HP{&zYZSw zf8ej9jlWhjiic4t`a?9kg|RczukC@AN_u9cQQ{1S(@(QaO$7#92CVZ=`k6@GpCWV; z%zp{DEee{fhK(XVw^cix2)A)Z7H}uGaegKH6^yuB#}G7&-|qXoli#qbQ~Y+z2;(>F z4SYLdo|wof*eMJZENoLty0gyiU>t&ea!UsIRhw0JVl?}tDh;XIjozpQ32o8>>6#+n z$?4?lPbR>w!fO13MrKzW^FqEw6v>8v*N+tmuy zp9$yEa3AoV?2qrtfLr z%0K5AJ*N1lz5frcKRo|pr=K8>Nm2{?!&ufTeyP(6W|(Z--8obJjjGMeIZvh%Mf}33 zCYL&~d35-JUghD1#Q(JW(E%dM2I;7sZ*)2e^`vP&BuR}N(gsNq*HBR`8ET>hS#Cwf zi!tm#^N2-SyZc(Im||D;KaOIf;F@WlbaKsZvE-I)?%yI|0Km7 zOso&~l^VUPj%JUo62*hmt$xRaxs=X%@MHC%Q|An%Mn+)^+Ey9lpAEBaU^jC9vlZoh z(do<&grmumbFJKS-l@eh?-S=V$lTg{SgZWYb8}wpU<~{<+==oAZ_Vc$I~*z*1o*-6 z5~Isc*xc+aQ9zunj=yg?EZEb2gn6ADw2ib{Z{<6$`TG-k=e{ED3+n5M+e95j-t*y} zS&+N)~fr9yN{yXOC4E|fY^AF~aZ|A>Pk{R`1_QUHB&)*7lAzK;mNelt}7fG`Z zMV4Ww$O^V=oI~=f|3B8w1-{DS`1?UP5S4fW6;0J>tWo2YU_}!!nqZKF1`SGU1g-H> zOsm!?iAJD$;z^Xl;nAqnOT|j-rD(Oq)=LDd;Ub_|MX-v}R&2dIG1}s#O0}Bz`05Xti zXh6yK*XINb(CKIB>t9dbsq=c_zia6KOyB6$2WmR)W#7xdf3bQQ(@3ycDG!u_Qx-{~ z9zH76!|~Ov@efQoBDnAoR!F0_S^+je+T5#&nkQ5?fkd8N-X!Cn7n%Ie{j*R=4}5zQ zrky+AlQ=LxAY4(=)U~T*B(nJ=1nH+Jtp3>tOCr2L`5IlOo4A}Az6gD~qv1Q)V-Oi< zWnokchkgu_HTloI?*b+4&4}l^1+k0MlfKb8u-~#ieJM?}3j+JF3TFG?0nuWM?9TQK zdWGXM{QY|R{oI%~J%1gv z$u*y>DPi582lc$B5=-*mu>!O5{9odEr|u;KIpT$pRm8|DUg59Z0aJp!OAdp=U-W7n zfI$BkyBEMa$cF;a`4aW3xXpNR2^^fons69l-h_DXs*z0fYy8`;cI*g!m6DpAO`TVt zj5|R4uQtebwDmVk5m{|ZsnjT1yd}CUuY0YIR^k42V`tTvAZ9=f4W7gVwn*^vXtHsF zs>tos?LHy-1N(WS=$?_FvcjXAS==<7$7fzM%a-mf33#pZe_rHj_2- z|5*FOT_AWjv50|!D>n!C7XUG^i|xVe9r$P8s-}OK$MRJEFWp^4diJQv1N;e-VFzg~ zvQH{L1a1VQPdENOM1yNr8WRzJ{xuE_feNqAJN;!^cF=i?xK7h8e31Qbt8+e|>f)o- zVL6}U`t^ceS>g85cQB%5m%^IROd@9-z?RZm6uF3r7?!N@*J@W1)q}>!UNaBM@@Mij zQT7KvJCDoxOKLvNKHhCY8jF!n`;^6>#!Y?CzS`{@Ra?@#BE%OD+{tP zh_FDjcBCd-gcJEsEg%*qH5sNll_3I~s2l){v__QMR`#YLi!m z&0NGkG-dlyHH40&Tqm7=**SpWo35=$@l+$LQdcbk3stGPi}^7d<(+t2rZ+FqTrg;0 zG%=r7Oz`VFZ{vaHJoFfdx`?(U$`-vXRG_eh+s4KfVGU(*X&v%TMGDvskh2t0kbDNi zN)cNFI{?f%FXM{XTUduBv|bu5MvJZ?6Xko?zLbuiPMwq*HZgH|_I8c$hz8X%l9F*9 zdRxwTq99Scv;2D>+a!&V6Pn2pwn8@7m`tVhUB8oVVDag(s!|L+u9-g_TIJ=esVvUw zyc-~D2%9tN*qqVC=8XDabH)j3R9$G0E!Y_`JnanU)~e%f_$K0C-csj9-a1LzQ%SbY zHsD&9nI@>s?bE2Q@{aAEh&T86)sinb^(|EY19|a( z1J?MkC(jOB)oE;%J8UfvvBihoCSnxJPGd`3e>lOx%isEAu$3)r&1yGnnTFI0TjkW! zeynPtRM(<3(#kWCMwXwEB|7iE{&9wVj4dtS>xH#VnFh9>1QmtN4BCnat89^ zcL|=%Z;fM&|372rNuundHv*mw!#^u(GI{o-nqZVZfOlR>ix=5vr5k^y)^zFaxrS=za?U>Z^q`K0Z2gYx zX#AVaSZ!S|G21>v8-Cu(!Io0D?G8%rBLB_~@`MNSF@)|#4jN|5q&NOlhWIIGenKf` z{zy-zYqtYKQmbq-ZR?zs8SNZO<(^;3=Pgb?Ya;^w8IuyoXLU#N*?zHSNfJo}BLIU# zqmk9OC=oBTt-&mg4j&^DY($_9200NvR@{pW{q})CAp++={_CZ3+Hx@OU?CC_X?wUg zV#H;ND`ART2mfit4Cc3r1JpD8K6JK3Eh!gMF0y8s%``kp*h~ZSgBW~slWW=H|e+2%WF5DAPQpQ~wKGwpY;V*)w!3{9^1vE~)p-SK2rRhR_OoLa0o z-9$Ra3aC_`7}SKIu8nGm7dd1&D(f`x!zbHTuQNuqAr=jc-Ujf2hzc#oPu` z*T1pS`l+OeN_1LzWbWquv;4bXVWC87J*jR_ix+wDH9pJ>KGbD=xaDtrm=S!a)d&6; zvbt4bYVbiDS*(J4m0B63R)?vlsMuL`Gw zaFk~ITc4NX5y$5I!ZohqRiD5NdruRUroN_(=noE>={WNpcOY2Xx`=NlIL>|acT%v0 z$K__4Fdnj8{#2!fjKr}SiLxOE66~_+*BH7!PeCJ1(7~nn`%y-x*@%;?lI10dvJHPz zGj>v<*qX$0D^nh(_``!T;zZ6UmApxmEwEzw$|O!DUGhS&VhW%X;5qWz!$jrrpH>uu z*HjSZ^4m$!ONT)&FG`e+H?Vb5svJiU7{s%9AeL+wXuXQ~L=~bBK3*t#^IWTEk(lQu zJ&US58z|9|=X#|Z1(QwHopyDO*Ho+qs4o9NYo1l2G}Yi1;OpwRPh+&=gS29) zWZS#^jVfG#4};P^iFt$i)IKq@vc|mdJEw-jY=ImcXp>grit;Ri z47ANBH4g5(G^TLeQQh(~gw@Zt?qdBY){^tM&`l^Bxq7Z?r!|SP!~P-$<;dYXI(YB= zzSVu5o?|k?KJOoqPTh5CJ=)ASnzMx;>zUpy$edmZxq1%2`!8x62DmRbxRIx} z8_D#q_?cP62PVoM+GN8+*tQ(W>KYp!@SaQYZ`|DxFINCaRBgd|V0u-Bye{NN2hOWe zbK34#VydQw6GObn@XLsE%}F`MsM6}QqkRluGP^4`5CnSnBh*$r~LeeG^R>%~Kr|lIFNn5B`ISS4h5=x-QO}cfA;`8RZ6U zi{7z{Fs(b5wUw8=-#9pVvofTvYx}xv$`JGJu%YHf4qJ!e`MtNl0GrdT1wU1bsmTRm$r2UAev;iYP5QTv zgtVyz?i-UYm6%xcB3J&6Ce6G^(z&IuNJZ0ZIk`k?)^1W#+g}mwwazTIb!M^uYuc2W zJhXLvyKBpG%!1$guUhlCfzdknDwV>22%fJIbvT;IyIBvxg6UY|6zHIM!*u{9FLh}( zQ)C5X%FUV>J#kB{d6l>=`RHPmLwIYxsZ1TW^LTGg7P}%Un*Y=NWOr7@V=6E{dfXZ% zK(PwW+36->!kWtDNk=8hKHeDgU}j7Ut#L7i45uxae!Fy6+Ch9vvHYEWR4uhnO6R!DH<(TTYZ`IT}Yl@^i_h_OhU4*Ix9uWuK7% z{w(Irv%LNkRwO+j7YpR{=A#D=j9#ThcgPp<%k#1t262GeuF*%28)W#IHMzT6Oy!W% z!ofeA14c5XGQkeaXp8ngnoQcrHz%CJhb=rHh4cZjjrk*WaS4}xmy4Ty5+#6@M=tNJ z{95USO7KQ>-zB36o5t)ro5n18fqVBHQ2*0b_#69A>lPXz4pqB=awW6=UtbbqpdwBv z=3`dZw`1N(tUn}AM}6$%-)D*|kP6~DDDF*-_`!?mWylT?D*Of+t<$N~FtcoGDA)RS z=>?MB4OS5s+66gQR}`s2;#0mAHi?MHBDB+kERMldrt-V92RoQlY+BPKV=+lVA}?%( z3lp{8=+H~^$~F9$DMud`b2l%#d%`4s;u2EsJ(4CsI5OC2) zCl10GdSVe=W7~Fu^=;c}r0CsF14E16+Caaxo83RCUwGfN-~Pc*$lcJplAhJE94L9VtH!_c zL!Cqsu9JHfb)Cn5kYRpy@h4wSB6pX2QFf&Z>Xa-=%u>5nXH zTI6Dik#VE-=?1o5BeE{eM({UA+gO{FJg0!(5kDHB=#O(AS4Fw&kkFYSHuL@Hb2hoLCvpu&<{haGWVy?0yUUMQ09Ya9|9!zjeut z{$u;vp!of@!h%934dKWP<=4c#P<(mgewOS0?)@#7k)=Lfmis3pRKtE67IT!{%b(gf zD(kUAd#08rU}yTx?kOH(o-7wYbdcS4SpT$nvc(1apHp($uhtDs$t_^%aP0!z?J*YD>+U(lLiq^G~R8C?IsmH@T#v}7>-!(V2_fKy^$7hiqp-uRZN zMLsxq7tSi@{>^o6NVu>pBe6d+ti5YZNI~RNy-A;2Obtt}=~J1b@85;a-u^3yR7~eU zr!6evWvy#PiM~Gg2g+-(Yr}-OkHnhvS_QJGG5LzTS6<{cY=8bu+7Ob;B~tbK zV$JB1*Ry8eGr_A_I(I8|UsBMH@~Y)G*bO~de4XA_I`_YPn6XnB4(~qplY1N-gXtt) z+>4y`IjrR6fBG0o-k(>7Ry+~RAN;QjGJSpg>G9yEMEEZj{(})qU`>qJhImKn|AXujdEdY<<_!Aq8GA{ox_!QioQy*9FMJC@XhB z$zj5h-GK_kE9Zzu&30`1Pv;G;lE+;o4}_JBO;_SS_J{wyh9Oo%7fiJg-jS zPU?}FJuELOmB>v~-uXb^I3vejJ4yKW;V+w|ZMreK2U6_GRqEhDl41p>zfXJIp}xQ* z*@NOf@WF%}QlpIxpsSuaPa8n@MxHI@5vfvmnKpoyqu>76`M*Qbjd*8`w1&vQA8NWI zZdr2BZ@kR}pxgf$Z5?CPnCblId3yFD8_p#^l~$W4)vxSb;6KKNRkSPdm&lBo$|5%sQ?~|f-Yaag|FF*WWq^^R28(hlNYc6jxD4FT zb|C>*WzB%+tn{07TlvmZ~)=e)^5D`cP+s=dg@ zn@ITXcrfJUynBoJu@hxyKMjho4_F9Mb#Iq?wZE^S$@nl_8dt>p=vnY8Bd1)tid!&W zB0cMIQ+VuQA+559#cCeSGF6Dxx<2%HmI8kf6oYBp0j``4S#3I7la)7Z%i=;=PCFnE z6~+ySJCaw*R#UiwadD+Fk2!}m+}rQy>>y>vS;fjTsfVD+oHpsI2^2()Yy8{ssEiX%aY9rxuCPxFBG_Mq?5J_M2 zEq7cy$)4@|DWZ$!Zq^2fx=g*gkWB=1Pw;36d0R<+1+d4n%g^u2XBN!infAf8z`2({!#ir{J(=}r$1Y^#UTbV3VWlQbHRpVcJj4Hv4=|8J*6OPs^%4%FI z&N14C&Py+n^P$O^dwz$UXp%UlLx%fPl^3b|z#2L1 zQO1YA=`j}UUSx_(d+)b2d<{u$#t_6OefE#A=@_!M)!|(GbwL92YmNBdt)DaEFJl6w zV97nnQ#N(^x%B4@5IvbE+r-glvzkR=-gTy?O)+sQr-+Ph05Bxhf)$OM5+~@Or9COW zbI$?ov?Ghd(X`8oy53r*y2?1g5tAOPc>lx>Itzk0fhw4-VB--TWQ(OxikONK2Q;?( zB?4&n)v1nqEgH};EV20uVAz6$X)p+|t_Gbo>^~qsKmg~rwSzbRzz1Xj3D(xZ{sjNw zzlT^{+nWJ|zpsu@9&?t9{BjF9f9>noHop1(HTl2mI6%`)QBOocUh}(o7U^|=VXl6e zqU@Kspg`{-<30RG7_UuZu!L=&6Y)4cx$0D^9mSBX_KdYmh7YrFc9;P}T zvTrhOS~Ai$W}h+f>zDN0psua(gx^SAs_HvbWx&iL=;izoTb~;241_@wcsCoN7Z?r! zwnhx@wU|}TF9KL7Uj(#0#KI!0GABC#YOi6x0BWX5fLglNCjrnpwQ$2-u7%$-B&3m{ zxsd7G0Oy}1w9{341;9c}CPqNNyxaJvmC~C0s{lCN@cZ5%36i&#LeIcVPaU03j;1Th z#l@C~ajDoQ8zw8zXmu|XJ{dF4Xa!OA#af}?fC;qFB`)c?i6fb>u&Y=WddhFS>;l!y z_E9gt@-l2Q`$5o{=W0lsXCB%j{t8(zTkuk+?aU};z@5w_#!QyFcqkKOWoqKVaAXxS zE31e|s?WySEo?FGdU-r>Na65cODpF(9QOi>KxOOGfkWsO-l|%kW~%1fN$)#dy7lQN z^&X3!`26(MS&^({^`Pmi%d-d4G5ju|DYZmy)nwC9l5+<$c$Sre++=KL-tz`zC2RKJ zp#GM(NO}pl5#0?io1ij&D?n6vyfp$uW}^G<10(RyvVr=g7dqU5(NdU!wnWo zlXoQczOpCx(hR@lg4Z-{-aZFpG&vA2%nOk5>#qed9S~rlJ!}5x%ly-Bf0GyNmmuD{ zm*=`yfdg9Ivsb!aRRFILV8O4|2@tiZ!*4lr9}S< z|LT4cHKg0bNX*vtX>#CF?IRfKX@)g3&V$*HAiK=j&O)sqUH7CuDYF1K@vD0k#@W3J z>-0&*RgJ5YHrsn30c091d;cG!vYt4S-c`{{L8`C-SFT3%pL$Qjqmqs(#$| z`b)gNpG5S(ep3DE{UuKBCsDIMD|?4=5lfgC21#@Rg!N3Vp{tq>*h4K39Hn1pFKx(X zdsrAgEarg&_T9Q|V_0Z&_^`!FpIvW-wo+SF>c?(H=BsMtY6k#Z^j@XflGcBl2RP5D z1auZ`Q02`lRHO8st#@XSEvlS!HB0GR?RP=p<{(||QMzyGcNMM+(ybw+Z?tq4R6)Ah zr2K1m*Q#wcYc{IF0}XSMLQoH1SQ5VY7seBeQxoeZ5Q^W-_2Fe2vnlR7vhF$;Vfy?C zmUWjftB;3MiR_&HSy4mu8U?ht_0g)0MlQ3C@?a{#;_&u@r=(hfZ~kwDCb9@1tdZiMF073VV@vivt`Sol%9q z%e}5XlN*nM<(~CZV(Wlt%atT?_SSaM)@h(h_nU=`uo#BW8T#VSD7Ub+2k&B2y|3Xn zY*)Pf08u^KayNg8YjGo>76ve8t`8sL#w^51@#{}ptN84O3ss2{1T;&(ysL!XbAxvk z)O!KH;uq!9;LNt)$1R`c$voZ_Ri%9DOp$$e$n&4st*6BTq8mkr7S8>OmRl0)sU;}=@`FJm1jUC}tKGPQkWYBERYoR(dcIxDv;PZ1xmG{>ys{u4`szJNd#~tpBD-r4PR?;F}QN2Ev5s zV*T>IFnBKy-WLb&)%*&F$|oF_*ze;iqhv=bkC(f&!Tf}2U;{5?# z134}$oPrZeiY>>qs?-f`3I3bK8sUfQqQqlmiK_LFyT`4DYVCaD)@LaY;wWqa@X218 zx?u~|RSvx2BYwuWu4h;E@~$1YNjH#R+@cz7c?9JzmRKV7ox#6|x1bS<58~FvP zBuy&HZ2Ki8&xX9onK|QrvF*ew;yC4U8?|AhXqQ>NB~bllBdQ}NwO(`+wH_4Isyyjh zuYZGDpS^wCTKz}+NklS#^jmc)Ut*r%^Ur}>4%|>Ej{}_cU-eTK#jf&ovyuGucI+YT zi>T9!jB-h@-c8coB$?1s3pK&@>WvrK^g#M_J@+j%g!*0Ea}4sTAt;?_!CvGq3L8Gv zRj`g{T6(MMtaM3#bV=V=(kPOgS;n8fJ}@V=b?(l>X&b9sPr}#R7iPAheqyf(>}{=_NZndtDD( zrk}o^e}3K@KWn+c=6|q%34ZkIze}DZ-fdDJ>eYvOElQkSKHT~jSe~D_PeNn7tx!}7 zd0*T&vwz$|;S}eU0ENcB(wK)+42}5#bPTm#)pMHBzNn)~!?j zy~v>Z_jf^c{%(t$rz=M4PIt3mbmD=w;$ChASaCN=OzY0az>~%9QLO|p8&~Jr`Bct| zAi(}1ihl_1?~Iv$bu20V$ESmv_N+H{oC44+f5^Ny-I?`Gtn5G44`M@|O!|IGg+ zUo!SrpD9Lbe%Eou{e^M$2jjZ^_PWW$L<-~gRfb5Oa$z$(d~bJ}K}@V)%$A5ec>|#k zHw1c-mtG-A>V3|GFqGAcZhV3rpLFHFkXCm6FWx|@fE5C6Pt#VnuimM8Qu+BeLM+b3 z;U}*lGO9!8&w%FGV}j#f^ix}F5pr9JQ1bGxy9LoQ=AKR6U6)$L#tN~p%}&1D*3Izt zM$EqzVI_CMYP%9a5vRhW2l*?`^!m? zVJ9va!TwACPitQ9?$l+`A)SrB{hV+5>rnjMcBjOT=NEVo-6-w zPL}_w%kbfzv|bq|1{vgMe!MUaGWvONHe1hDa2UsND9~p4aL(QE z<`u@t;6FSEDljS-KCWe&k_{6$^@xq5xA_-81vkGd>`4@#%!4sCqbb;agQG##0Cj8< z8jbaK5ij=89zLw$K|u*j*!YF?0=u%UJh)koL}k^QKxJdh3+|T-jci_EAr+XvZ2sEx zw9O3-#Vq{?D8^XEQ(D~ARl$|&hs=_U%|FzB0$vENVYbHCN@1u~&ujcqOKkLVf|W%a zE2Ik%QtdPtFLJ|TKzaG+-=$GNB!xd9CeDb=e9+QA+(X=pNbx%-$l-_=)J+cz!Hw!j zc>8lIQs)}=qkbBt0oyCLoe}+V8;+VAxQ<;LWjSR)uL<4GE@6=^NswzAOF9aos1ko` zvEgUdQ`_h-J>dr|vdP!^C^2TCK$-d)5#nKnCqr3;|0LXcJ1^K!dDbZLHR~ zb2#NL6!_+q!U%rsNJo<~+cNtJ5EFi7f7W^!2mkxEjG}vP-B#V~A)dc_#aGa*^G6xt zJ2+qFzamYq_yI8m{A)q@I)WHN#MN3jI;NV+#X8{3-2d7XA5!RxUx-4)Z4(qD`FGoV zM~EU5ZZlO8yj?3+X9~5F0%=re?QV!5(sU;3h}24L@JA$WXpB^*26PS9wkzaQq%vvu zu;N|g(5DgSl8roEiPJE+GQ};OBl?zTz_`>=nOxyNxSp0Iwhof2t9rc=`@6yoL(LlA zHN?{8!Lhc5&2n+4wYvOOyJil>^0((QXZahvYQiN0y7nMt3ZP^Q%#B}pNmj!SI+pbc ziy`HBgXy|4Z9Ev-EDXxNZcjFU;U)a(fyDpj!h*Dm{Z+|zTFQMHic)PtLscr?Ay}!C z3DWFP&^!74`fMcykq?@2yPr3f**FiDnQ^ljQQmb)tt7ema~kPiE(fsBEc*&xn%>s= z4dV0Gx$$pC$L4q4xV=A+%E2$=*^U3;ZerxX8g-Ce4D0OoAt%&a*H{<4c)LuDtd4HC#9)ELUXoKmb)Dp!?lNjTM!J57>QRu|Fy-||@36d# z_&-hyZ#a;*D&F+GC(qd{-1Bhwv-2OCt`q+m6m7XoPXMxpd!yGs;mWiB7RU_|GYL2D zuO`FplZ%2t7Pu^V9D7F45qB^EuH~!ZYWaXwaUHG30x4ENi*vONX2&*4=fw`5x(To5ehQ4<%hfX)CXB3VHXnfI+}>qy3w!y0d%i3y2zGNmtvM92 z>Gu|c5l{om@kV=hKx9F7)FQyGDqQ73I+d2>aAGuApdn@#T49TZbNYiIxEfsVCt6gl z%|A;)O6O)Pkl6!J;%0xR^rphuUy4=OJez&xF;HofSzhGe`K*8^>~1UIEImZiNmR{>` z{TqeZP;a^XcibEFCoAz^y!ww!VrF3KUZmQaS89kbAvjHD)m4sSp4))$ACFg|Z(f^` zr1g74b!D;}M8WvpqV+*egFe7|$aJ}vab9d>v)fUs&m%RQsr+X@dW-v4KL~a9Kd!|* zT5_WqTW8z4;-FqNpx^$>;P2cQ{^$Pz{)BDdUm*As((um^{Eau5XqwD3JUC_!(&{Of zbhJx)`5KabPtunQDu2V{Um>SD8^7!hV_RR0W$r7MZK^2d@h7ye9b~J&l9LA;;+EOpKcx3bkG#azLpnAnZDZOi9Utv184ov$cw8A z7L>S%AZkQrQz%_ zKFjuu>}PE{r7o8EbU?%Y{2dr=eVxj%UJR|5&Qq4dkKZ;TXnN;LeO!HP9cata-IjzJ zkNVhOEH|*a)_Iq{d!x^Lyew;C>6XTZ)Fnhm&BXaOE;lut#uqd6Q9)*F4}+G{E=-jH z$E+W@_ed7=cTLoSCAW?Hd)Q5(0A4Rr{n8;oMK$pEdk>~YNgy?6w_hXewZWE({r9+6 z(VjT>!y9p=)xS;(Mb0S~Sx2Vul6cFgT~x^dEoebv8H-cd2Eh`iorB-Y#i3CH>4L?c|bv-9pk;Bz^gK>DlGs-}=~B zj2vylDYgwBoum4*@@V`-uih*I_t}GGcn^%ao%6-7wl}TFPtJAxih5YioXV2dGyb4J zz_X1z$J-AkP4V~JuZrt&0QZT2C01!{(h42fl#jL^!`FEGA<7p|O%RWyG!|=DQ2+L#Lb2lqr@{4fK zh(f4DzuiAkZ)m$+nq^P%c1_w&zlyfpp>kgSKNvW0Q`Jr9nFq}O$HzfAH^pal?oW8{ zs<<_s?6VnCWX}(?KNM!~>_&ZG6}SGvEsr0_e0G@v-r(-?)b(4bEt#9TUfm>^4oKg5 zq|9ox6K>Y9#l)`*VM%{kY~T#rJqQNyil>YXPrnLQI?@YS$-m&yfLS`Xvt@*%e-J;N zAw$z)tpB`0q$hs5N{dYPfBMNej{af%bVIqYR$_Bl9)13iAsRcmvKOT0Nb+E#&5cF$ zqyd`ezj=fU$~7UZQM0pa?gPy3HXyW{iS13qW`3{Ku6 zUg&B3s<`r?S&D@QxUc@`V3$}rMt$W9BmWt3@L7@y@hMAz|06oD8ndY}_nX~sw_51v zvwzjLULai3oU*b_J!O9;oZ_E*bw&p-gTQ~NCDQNOVWzn4e{K-z_s5@6#BI?5F`1`c z7W-HInPy@bq@{U&W20gnueI#xdA9ATxda3dCCSpWIM%#cZ~mkg)wc_XC{O6LR>s$I z!^8Kk1P{e?Lp+$tB+#!O3b3L1BDZsBpCEllUj={kBOgJhdRwKLs#;6ynlv&Vy)KQ6 zBL7q!5kaH1hHgBQR^9Wwo2j^8Zq{4Uzw%FiShG|R?20t<_pyLp+lzFoVlF8jqvZX? zOn$!}CwY-=>w`@VgH~14qfUpyl}xLbS*L5SpwnZMVW&lWS_^?@Yiu@XgC6lgf5_kl zD&Y(Xea3>u=kly?vOgubfBQiNpY(tKw(LC{O)L7NNWRW4sS4BPxFbx%@ z`fG(o#`Y8hPi~7tqgy8)s_M{w3@%#H7Qth_793XP(H6UAj!xIAbPR!zeI8SM>4^VK zKSzN)6947&|8iOVqOHHR;vqOIV4jnlzn^8LHt=JcKlh-dzb~aU!vL0C?tBt81l1|n zH_EukdD|7;*sJI}OKF(V3+KcS>4V-Qs@8BxH9L8Ct)OVxK&5I?C%{8qu4=v687{JYmy1*(HUooQx&Ke;(Td|bod+9#_NJkWI#y4V23Maq zj!d0^Iyeg%J|j1^dkDtA7#Y`p54{l&2SqW(xJs8|1fT}!%MnXoR_e6{R$;XDQN!E3 zfR`pyD}2Ktd%Yt1rHI&Cx?Q<@JcxmTnzew|ebDG|f4?_0sB_NzsXM2{3c%VODi~tL z%fIEvxEBvpn)kS=m+5H!w+O`#Gs0kp`#&Q#slQ&ZKPKUZP*&pvn}M4$T9&y)>8Wiy(Am(ZYp9^BvlSaPsYN;eM zLZ2XJD{c06?EVY+9xuCMu6XR=u=~iyFIb8`c9MXACjkrbB>FCWvYX()zD(aAt~4Dy z@VH6F<1R-s?%fhf#{MkmreLFgjQwrq{2(cga16KanReZ|^(&4j&9I-3aq>}YB>&Vx z>rn6ub{vz0_Vds_9=IdxVxdI*K~m`9x&l^7>i=g~IH72U^48_DeL-q*qS{J1AjI3( z^PYuL?2Xv*H)VDX(TMGMkbP`Jw6%s(tK!NtAk;w42{e#~A;utG7~D=_(pb~I9?wGc zoYM;@XrnVDpYoA%6XQdM|5Z|5f851UXrXDdLXH*j6?h#T%>u&Fi4=d5L2gGPNk zy$yvu+VU!y$dP@ohU137)aK%kqpgJ2W~JK1JF(Pa$88@s3{D+U`qJ#}k}naq$-|DL zHlY_+pMpN{Q=O2W;#4qfz~HD{+n~fV`ezI)NHCky_%x3ni3)gQ*cwgBF7m{G<8L-C zkKYaPw!M8XdjW4Q$IOI%^DE}6NdW-^JAc2P0Uf(=xOVa;Ei>&`H z&p?D~KY12795pfvt+n}UccXakRsgF7So)r>^FuYDPix6HU#sJ=T_bH<+BUEjXSVBn zn|8O!b5v%Y2?(`*>Z;DHYoA^E&9g@UXC&i(&e0%W=QOdG;qaSjr#HHBA_I2~wA%)J z276Y*p5tN9<6uweIaT7fN^yj-XCNlMNXI@hww+#hx_{|kOenW1Zh;jN6mOW;`6&pC5LpvN?+XMSDZ{gcCr#>7u;n1cpw(q??1bypU!xZ zLG31}Zf~H!O;>I!sQf$c-9|2TUbn54%;~SoRC(|9eJD?MvJMtG8wx@nV;xItrO8)pBbS#y z9J%9C^wa2q<*gsx?7^Uenwpp$8)x<*xZmbt{Th1=-j`U!tDA| z;hR+08~yTlXmwy_S@aVxQu44-@`a1}djITRl*E31PcKqdnN^~PfR2B6bo4_}m3IvK znSNqgX>EGRRe4ng{oc4NlYUOWGoRe)g>}#m3Y`6j;+Lhm{6ucSY2pZ!_EY%ZBDV;` zNyV~LbKK8tT{B zinbO67BqrD7vWR(J(clB-&6^TIuj20L2fUy^$&)>>+AV=!K^;`yY22?_S zFak4SP~;R8)AbDpv~hNRK~}V7H+|I2nX~4*_HPUD#<&V*7FsVhP@&_#q)_UV?C6re zXI+xrJ?A3|cMa~Iv&Cw+BeS48MEmjH2SA<;{SSI>!1*nll*S~Y6(vYkeEsp-@#0wP1O~uH#eg`? z4zy!cA9HR~@-Q9F6`qj!=Jh;Y7aYYReq|~W!HZXm(>BP$s;xG5_{|wTvqc{#=^|*TZ}z$UsuU5cm`QVUPvXw zNoo_Q>^{o@zvNe$Lrgt$O8~Qv-1gIXeqG|^7qiXW>JrgZs%jx5_R|<}* zPjHJ_D3;utQ}CC?+JAGO`xi^T6#L|z*nkgW%Rb$XA${(Z!(c!EnM2GzF@kl2{M~z1X;hSuyz3;H0GXcxFe0Og74)%U|DIxc&!Aw$gpIZC zJNxs+9) zl6qRPEu4+3qY&a{W3837hHTWG$jjeSs2_dtz4bP9Rw;pw!H_Ujyle+6aG-E3;qlmR zsJQzWJ<*`k7J}-p)VM?x2 zFm6wtDSAu^go77(&w?7&(>q_Vp8iD%X(16WE3g9lggq^sOi!K2KwnDtbo%dl_^XDo zQoF*Md66|++@U1#zB>{zc=sYF-ft}Ub{#CZd`8HEVk5J>`v1H=V8iI6B+eyGy0R1R$y=1XC0muH7Td(gI;TXZ18H<@(dgLX*Gt^%lxRs>IBdjjnp8jZFZ?#A zNw|AVupk#5@Bz>c?%H{LvKl^=^XOSZH|Y1l+&2%Olw>tbl?|nQQi=`8vDkQT=V6tl zZ1P*MVtnh<6^zT}k#=E5)tH2c;?dbm_|&fL>MrgzyUc z45}=BK00q_HA^a6cIpVuH#I9!W$AO#dB;#^&iV228d$oYruNkditkY4V*I7%IiX-esQzMmiZ!WfHO`mi%i>5D({S+yts z+oez`$G(>xaWzzOrl~xN`1f2U)CG*^D78X0c932Ftj0Aw1o66jTFD#qQEk~lZ5_P& zo7g{2ZAT5Ew(aeE*%~4iGHWa8r#7Rcf>lHt!aKP6{_2f9R;Ese> zW~j9s^QMIee2j+Vzj;+~z6G4wc!|it{JbvOIzlW6lhwusRF|L+a-ws(k;f0JJYX4< z=(WW(gRxT-G9P^L=VMeZ9D#5=!^h$u{H6BA^;31%cD^qxg*`uhQ0xGcU!n_u?mwE3 zEGV1E?nI*tI5ObR^Gs4BOmw={MA zGkS~Pp|{eY_k4Z=dgobH&OYyVJ#DoeH}g}OX>3!Y-B6?q3_7K~AtfNv-yU@1QYHKc*BIvVJ4a?cCYKzT`vuV# znV8$Dp?^AUA-n!rjazwuPD-OTtz!c^)d#idi+`-E?XH16`KKzp#wAq* z@KpF=mvpF0TCJpCk<=zx3d?BbT_3FJvEK9AdFNK!li>98?IAGsi`qW=d3xzIvA##o z5wv>$jUQ$zJ5oZO$_MQF1XEDscyNt!i(oIEdk{pDFPD-i!=GOyU}u7zcI~AtD4tQQ`%OP z)+s;LyyNBH_ychElOOfMnfyPu-Pmho)4%;^mBU}X@P~r0KOnw|7=lmXKFk}CULe9SsE8%zr-W)#dZ;j7`zTv*V7<^~0lyvqYyFbS4ifpCtl(K6LiQe*`y;ZZTO!RE)3}@HZ zY+kifKi4r2`1{9kW&T=a6_`(tN;su(_&EIdkQtRIe!ifNz1^PcM5$qHOsbCtTOw|2LGNbg+J@#)LgQqa^_c9 zc;V0Z;nGfexv`2%sz0XxmQ}c2U9NLUXtT%@1QULKhY|m#(;@!F=Y_=g@3}r8I_DRB zwSMZx&ozR(?fK0{ET*{;t7e=lyU%KVBp>m@7~+iBSfEaQh9Nle&WyEeSPN__tmmWLy9d5<0c0d^waXur zPkpOpAe-`afPUbAOq?N=8f7^ao|PIY${_|PkuUQh=pvfoA*zfwNyWWMl_#3&2BLHz zyxV!zKM?K0*n^ow>3mjLQ81It|BahT^u<3Q-?(#xpceok5>(_G4g~B=;-(_IHBt>bT=`7 zxq^vZ=3(3)r_2S>7CGN5iCe5J9XGUL@Tm1%D0;5+#Cp=5Xl<&ba6L&40jkcr*J+6L z{*kWLzxfEwBU{bz$_o3mdj9!pT^My`7oC)w{N~v8gUFXUau&?4aZ^5l#hurTV(Q*WqAh8H#<;md^k&EZD1AeoU18R?^DNI!w^jxpwVut|pQ?|3=jluvr`zih?;J zgYyp0(hZiHG66$xDu~aWPW3G5!7k}t5q~RCm4~S+xHk{aMl5kfG4_vW%g?N};T0^G zmiJsCsOX8r%-pPoMymSoNLv2f+t%_SrNK1$`T0SEv0e0z-z@i+|3(ewrZa~PG>wx% zgTk);U!S08&W>J%E1Gm)sR))>-Q>64M`17W#kfPV{L@^eW<%F*pE*{Jla>P5cHV_) z7EJbrh0Gm2UE|ogL**{Bf3R9*2VhV_^VjY!AU~G_^p%Qa|pG5OxtUU zZF|jH+g|fjSdr6Dq8e&__OFVk(WUFsbNRXFf{Jj{%%G`mE-x?zRVQE@x37+G1&b1p zb|^MmcqM`TN05pwz&A{_z~dj{=l|{a^avQ78JPm+*(p4Z*I-nHa)ej^AcanF zKVSJFZhrmjA2y_=!o)PX4z#j_coKymXnK%%vY}PSgN>AO9tyZ##fBC+{TJ2mU|f~> ztK6Gqt@GR6TY*58`}gtYx9;*9+$TSNLLPDA|9@uO`@m#abM9I~DYBsXuIi7rUW?F4Qk7sQqGlU(9<|%JyK@ zO$xWVK5&-UcC-Q@+w~oaR{P^mb?jSh?7IdNspd(Qml9|B=x|-U2_tIjwa{i&`NeR- zcSG%>0iW&+Xfulor){M}sKPfe@ByC&NA~}vQ?fdE^*?=743PibT13!r`(E}oks4;U zpb7rebJVDylZ3eeV+EU*De}>X9;r27MZD2}-Us>>^;3eoM~Y(I%VMSf`RVMc)K1zF zR}G|S?s3^s4nnMP&v|;T<5}C;^j-NhoOODI<>9-`&w5ur<TB7#7>~>-{(wNLWdmBu$|8OdS{-JVij1=IQ z`(Yf$-j8~>3mQjJvnRKRnxnbn3~R;i*|1j5vkvdjcjeni5n;*lfThjByYdNZTMVSj zC#>l^yPV_4jA>{EBMf)rFD@W^A$rZO$mc3=XmTQMn*;t+b-?nnlxwlcsZ>1wsvc#bt}7oEr6 zWc_m-5_iwm*EaQ$aiZ^<+4T*U^iR53aAcjAtaSR}XLVmFzQ5(K1{T+pmHD}7Z|&4; za5#co2?DJ}Zw-Xe3w=VWZ zPiP~=;Hp<7;_U2&lh|^+{%px)u2vX=Mt09HHA`@iz*gPo6Z2+t$Ckat`J>cJ<%f}S z)M1ITJFEyXC65=z)!gJ!hjlI#s#5bU!RFUl1SfRPwN!WMrG`iF_*cD!f7|$h ze`T$qo8sU6+a3Svi@!xzS$X->4}pIJL-SvWj7alu^_jw1FG(Q(&l>GXJDe~s|6htl z@*=V8OqRcXLRl93x4z$7n0Li9g?U@&ZC?>QjgsK>gBR7>#Je%+Am!3Q$`$FO^MguH z(Q*m*ch`?a^cs<(S_`KlinxVSu?!icxIJ=Sf$Dr}5rl4vm05u4ZhTIuIq5-v3)8;Orszr6^;@%PBf20hozC-Md@}!ju)-&xUqOtYV)*v%$J!`7vXHuN~ zZR|JFIbF&6B0W%beQ{SlnuNV#AKWBZ+#hdW{Xf}TWWU<|ai%!>)j&Vh8uPA?ga1TX zoggddX|`0g33;*PsnuNt?$x`DSMFZ>#NX!^f;+3)A7hPuEp@%-jnrkaN^j6Em8Hvj zgGt0B0EmwEc-Zw*E4&@tsf z;aC^EE1%vs8%UQ=3W&Zl3Rd&CB3?2k+WJSH1W=VozZ2kziZ8gTiKX%+uey8UC$COi z_USPdiN6n+G~flk4T-iMhv1a{V`>Dr@CC)9)PC@M;F$AQAEG^fjfAlE#YSkx3$YTM zeZmYZc%7ZW>}watpyjA9+X8WgyLK4$G1C&eT!_uW{8KN=ECLF*j}wSlfydg-(&N#Y zK=$gQiQUU|9KBa-nAuh5qv-^NXzm2l_UhfUAv?~q?$y+H?#BOjtyeYS%Tel`gI%fw~>1>tXi@PA1D z@*Sif4br8mJEU_3x*)Lx_VUN4k$&>QhV*gU;wwZ;h;-o!j2jR!lr_r%w|kVO|1{Ay z>2K=bwh#kI$xj0RzC$~3yM~VH<~XUYi2X>ea4lYNNC%2j6;36gQ&o<~1UqD6Vi{yv zF^OGL-W+f?DYbW1@-Dl7sUn(NVRVVn1ictxYIvzixg5&rRM?h6WfCFc0I|hP@NW7h z`AwCDF#66YP!LN+{HQ{xBHyPV3PKgyS2@3F_jlXG#DAgBNf`Vmd9w>4&}$Qybwi-H zA<*Z@Kfdn}Z5?g&an^6q$&^n0&s=ZT3G(C;Z7fKe;fR>n!CZ-&GiTZN>^qeakOnA|Wi`K;z5o4^3Fhz5(8o5qiNL&VgtEwncS-5&h#VQcu1&17ev@@y8wlC74o zbW>Ih;w|?6xZQFfrcl^~m|X?M6uI`h!0rP|51?4$3*?ukn&vUbo^;}g(bflfp58oj z(D-B3|7hzkd5_N=JSEzCGf$I+kr$p2J|}l`E?A&o!18+MqO6 zUK-Z=ie`1^b#CRQFaD*R5eqTLZiSe^mYQ>jqzFPsG-3N2CabsRSPgcW6_Jb~TFSx- z#k*D0wuTd8Fihj{isq8KhK73d>me2Kra?2X7bUs}H69YAHx~NGqQu9*T7jT2kR54c z@2lnjjLx}gWx7jS)gS&@m(&Bgq%^wpUw(ovt-IEBNniXsb^NTCzsr6-#*j9`J~Fx# zwew#;tNzM-*JF@k({OlLi=Ucu>Cr9#-Ct^ZxEAaEe_6EqnlO;RisJN>l&3ns4b>pZT?3; z|1a!dVTxX4!kvonUSNk0_+$2y*#lJcSU#|MRET#rt4}>_=JhOcKCYVT+;I|S0Vf@oMU&)Y8qdcq8-M^u3 zd-;1k6pF@EThuv@mN0xQu)O9GG87CgluVZti4H?+*NcRXUh?!J$a*Q#i-eC}SSN?N zqmzODVFD&;aJezn{9r^4k3Mp;c1%WFCmEGpP=Ki2p`L+dqmmc-V2pO7<}4Uqob{xv zFa9qJgm^JvF{fM|$4Vx8^|1zfF!#}AKZZ`0^`s(X{FiIEnTo;BN+Z}mzPh4@587YA zt()PV@`@Vm{prbpQos<6oHi9F+eZrX48Nr&*Wi9EW^Ec{XHz*FgT5y_kXLq`eo8-c zo3f?PZln@ncAb8`$a7K51NU0QXwI*i$eWCnC(2$vNesXebbb)5Q600(?Evml{70_S zlF1n(TZSac?zR#*TqhKCZI5bP;5S^W90Bq`S_c*CSTWh7G6i91NzF{NpqvlEZS)S@ zWd|Kp-t^cl6;70SiCXSN#yLfRg_yx;N z#z6~ANlcr2CQSspiXUgUng1S|xaz=n*+O4{CacfR77r4X2YGShqWMnzF?M3SM;do+ z9-}#IcRNF!T*s-aBiX{TntE`uQ`yUxxM8@Dhh%>knpABu?J+@?2aq%JN zT=bKMSZQwK(B`J>AN{29hq|zbqgUrlDLk@eeZx^=GK0Ys(n0w)kXQ{ccZ$h{H)*5> zVyNR6P7EoVzd`4O({@*XWaW`IT0TJidD5COgPjLvnRTKn-T%aA1ESYjNG{-5oNqG-2Vb!ZrlS+V~tR-SX3MGJM#QRt4BHi;EJoblUW(bm3SJr%a^&3)89v`ujv99qKfkj7f4qczqz z{j9NCdRgP~P~zV+5In^SC8P`0Dn#KL{UXN_W#2nN=t7=wuqSa7P3*5r2|>N{b|LXv z3Tv(O0#oMMAF?U_Z^_nZtMeYs3%;}THs}^MIT$;ynyEr*wwZE^Rdd%oV)lf*y_D3l#Y^L*)$5Ib2ww^5(cP7em z3?yMXZAvzmxgPwFEttR!pG4W)l1PM~B&$o>4BaLEpDlwS%gj~Sf0c>x!6ffaegSBQ zfbNVRUJqfqf2+!_E-%PdqBr8HXGW@n+;3c7#FVQ+QOpmmyU6M_fVb#FvTYqd22c+I zsB}LTwAS$nOHxDGVj%(lw*lFK!g1bpexTQ`Cx5s~c_WUUu4%2hoS1ma$sw{m)0&>! z$V}-){B-RHul3Aw>j;Gan!bb?@sB8xVooMsQouQwMQHQUmW!-aj|V67%B%{1Sy?Z# z>YuQC#Y!i5eBdR@E{O^02T7ZC72rY3#RJEnB>bgk=hm$jI(lJN*IqIcL+$|N41xS@ zk%k@0kTr3N>TGl1zh&UL*&;l(*W&%qFGQ{_L66q(>%Vi2IuuMYh;qOgYp;h`N*BCv z<}Oeln^$VSv$hBc!79oG9$9V4kxM$lM`lNDG|b;8U)db=X8{B+etmqpub3gLmx+NDk1JKDu%;EB6W8E!5la*}| z9sb%5{8(seu~bubTjy~!N7H|uXr_{(uGBe|FKw~p7Q7G+{;cc%YtzSK%cY34#Aid; z4_Y$ilCyrq_?R)hxoOY^KWscd-Zc1|L|fo@fc z${We*?B|Um{9XPeA)_xkOg+enQs8(!n65_^BgENVw*78)&q@=M;9tj!DYuWU1{lME zQMG#1dVdWe7lNYF&Y{`;{6st`pS%{sc7^FGHsFh@G$Km_UD{n|S#gea4=v#)h81&MMB{3}ct{>-=;77QK6&K`iRWG)KZC(k+P3 zI+2rQA9xE*-OE{Z`awZ_vFT^`7`vRVZRI*-X-Z*1qU=|dPCk}10LJ2|VjN$&C2h7y zKV*#TmrZ_O$RIO^n)dyjlGjyA)i1ALY+tg!#`bI~@lN8?RulaMDEg%>^e{N=y1?I2 zZ<^~@DCU=q5+?)Th#6c5la(tze#L+KvDXYxL2UJeJWE_Xp+LWhviFV^y`{J3$}y&T zKBXT2k*fssWxc^gh;9jP^8eBD?+{x(PUBThAa5q81^ZVg$iI4AkrF}IWhZGAAJ0TS z&kF1sOHM_bkV`TdMme33-NnxLnI-;Qm1UW(&&;1=_3Cl*gJwD=Apdwvh^+Yc0pf4} zvnMo5A09MB>UpLw6a8IHPhEijG_kT6znU)Km~aReaBO$uwij^tIcF<(Z*BjT%y^|t z-s$0=d(_Wf{@wJAVHXs}xD#qGU9`350C)jUnEfrXza_-n=wNy&aRuVEA~7DWy@o=( zX2u7V;y(M@;6M$CrH+KAhp|r{f^@$m$O4bEOb8-|x%(yc*u`e~KR*c1SNhfbU8)Gu z8m{D-+x4t%dM!>X0Kc8PBV77+I^$jO{lWbrn#~nlW!)jlK))=0>{lncGMH!_$_z`B zsn*$Yi=CsJNUWLA4Fe==R%GxF?g|Ey<5rwaf)W4Xbx2wWTo*6JD0_p(oaaQDe`y(g z1b(p%d}X306p7*NgCJh@)cF#BmPp-}X{p14Tkj>%5rZt^3H zI~rLVri`-tH`n~NJ65JV(Q72Ll_MA%+g^O;ZoQ6^4eoi|1h866^SFSVg7xZuQ{XEO zmM!o^ji#?T0!|xiZRUgNs8R8$!i_iLMM6K7%gqSkZ2-o5`TxF`sb^0W_Xswyn0Vc{ zHGqB77EYos;XNr-5c7wOR8;}#!!OBY9GpLZ^FbKDZT_Gi$N+?Y;cM=%u=v1J8Cwht z#r+XGQjn%JctV*@Ze031m;sjYB8Swoj~&_+`zws*n&XMEylPZnY4JvJM;L>l0BOMa zvY-sSg@eJ5(kP(_9#xuzN$0F@%>RUge<}Y5i)9NU6uM9=78^YR=WnbO!Q1d%%^k(Q zf2a_P7=S*SUs_g+*TZQWU8ci|21gDiE=R}{z@=!;$O99Yq_Q{LB-K22e^eFO52U|s zQ(gfv0SIcXmdH)M#L!qijj8l0BC&$`yCd2v{Z34!xcz9$VBSo4;gKO^iMDWC6gNk? zRrjRS$+|fTMllwR^SOst0|wKLQMK}eNS&97U%9jmzCPxOiTPY971LNPxV+~NXEJ)= z^$WE{y%DQeWY{o`(fr}|(}&q;Y^{(9hcrlwYp{T@>yD#@mtQvqUI)L`Hh=t8x5C?) zQ)EzIu1!T|x@u|<88HQ^2 zg%igXZ;Ky`ClOJJkD4}h8&uicCBheRKh7rf#Eki>@1w)t?GAq+Mv4OXL#mkSSLJ5q z@-#Z{7%g;i$lMfNFpB&idyqpNK87`ol>sMFOyNyhf6NkS#0elysngX94I^~CmI8nS zL0{mXYI)K+3hTr33;|~rf`Bn2w?%;e!_&6ub?2!5B$eymy{>;H>L1F5{y;qIWKY*t z9~s#Vi(P-N=#xgX*#f@nEDQ< zGw(giHe$qAvHy>`8tnO}Pc=nDELrWejhLSuT*)Q*qfo@}V6TT;YX}-G{i0Wh*}&xG zHPQLY6q3s@OIiGy%ehNN&NfA(4Ng9$u}W^vu*Q*)-mls7VZW5plg*z~Ku$99AJdTMa|_d`vPz4U+a z9#BxX;!Qs3h+LWW3U5gYK#LJu2h6&w`O5hFQieBWnX@DI&}IAJppT>#^wSG zYo=tfqoC#m%NO*^X07ytzf#5D6T^vqr=CD(?xQ)Li+yb3 z$6rD?)>)}v#zC0l%e6t^_;6#up>)Up(Y>$1 z#E%CW)Jf%uvPTXR!^><^to@}YA!}qdG5uiH#Zb>oCsw~%KD-myFYx*xG~R5?LPud} zYcL4dLTs_NbGEL%0hh9Ws5}hfu+fJ>_&#m&Hr&xUq=)CVK5uu<$vFEE)p+1i74`4iRX7S<#t_uXrGj#x#kc$?XEhw) z`mb8QCc7kHRcZ(9RoR0YhgLL~#>Q7v27bqQ(`3Zih=E*{JEd^+s`AN*qiS@t{O^8< znb@{Du)-gGE_|yncx)XAyMC~F-PiyaIuJNI!LeTGu3;U=EuFXRYnI8uIq&1yC$d+uo0ypA4E$m?F1o|h_c zz#n+6)-A5)uI%th!?rrze_fg8<&58iSI%utjZE52Hr@~Y2zP1E`G2&X34B!5`S%kb z8q_#JMdLz^8Z{tjaBHGO6BfCn6AfrFDy^wnr2S(}CBYyl!2x6(ZcSTT_tw_h+G<<3 zQWUE!%HkS81*BEnZ;V!4stDG+-`{iYolF9#{lD+a=R;=Z-m^aE+0S#HGrr{bOuh8* z((rixfMkAIPVmMBpPPLy`Di;bf}!TyK9eu8`Dc|J&u(xgCcq%^gRa)P&F^vtsMDfZ z_6=v*%~(%&9g=I(&v^w)<<9byh;1o zPUP~R9OdL&us`>66MoTGwp#l&6be=zMs8QC-lZB?LigIIyWFs~RXy9A*uxu7p3pkE z)LXUDTO1tdJ=`+mzO{s4=Xkjs{Bb$*yqUkX!f2x>XXlH^G{Vf({LqzbUDwPj%XxGF zzkbT^e(iJY4=({ju8?YqKFRA%$bBDY-Qw!lrhwtMS`E^5C6sRaITz3DMJ4|hOI z^VpoGy){cZONV4V^YIn*x0FfM!n8eO+Vw*}=>SDmY_Fh((yA#YmlVo?s`EN+??sC* zLfUAb-D%xI1LV+Y)98p3h#17YSzD2kiSkQz}dVmed#31P3U=!1_dL4Ldr)oyji$MH9lfXNPoT z9kg=#KE$eJ!_Um60UYPu6b_M*m|u0j#eA&L(oU-Wg!6OtC3p<$8^*ZOao=%j32KBXO(DZ|1k?Ul*bYr!qNd?*-|H>*E&q?QubMeGac0GZ zlP;ayv`@>_KHt-}b+l&Hg~5Eg!PY%!nF`Jw>LsU=+!7QfPL=7h>mGhX&u)q>fJf(W zbS8YJTey$oUJbeB@9qF8CMX^>(?JF);8?X##26MlIjARcT=oMzqVUyk&Q;_VzJ9Qy zmh(SW5Jvl8Nei9wFcW;`o&-~=s0y{bt4~%A?5Z%=Rj9LQEhy_j6N`ZtRuKN7y=)$+ zq1gEy)WU{xqFnsua<$luezCt5?tz0lbr=pd#cjawpg}!JOfNW}(VbPapUwpb+hAwp7?d`EknsdEPeqk17A{y*`!WNBU2AztueH@n3Pjm2oSSQKd_bnSF%Dyh$4K zreN5m>WTe1U;3<{m%HbY=np5di_gZW&xzRJFBZ#j7H{PzEdogd#RfaRbSewKcOrcX zALRc{ewIId&-g>yBcAlV%T7pC#Hyw5^y_*=n7s6-QSiCnSnrE)unK*{g=2NUCR`j03g-iIhToS1f`D~vuqWx?{oZCGH>5+ORIE^8Qi`3KKfwh&yzb(+R zDoFySbUh)jtdLAyi+%maVVVzY!1VHcSZI9+I9-+M>SOAo~r} z(;xV-Nor{Y*x9D`na@j;Fm4cg_^p#$C-2KvjkoG8Z}Gnlj6W2qFgo*1e)vt6A6_a5 zz+=Y33*cF<=GY4RM7sD!={BQ~H-m!K0aBcnd#RV>sI`n4J{8)qUNCu=H+4>X_AlL1 zUNqncmamHYyM7I(_yu+XSotZgJv8Jt)?;nH<+cFi{0uJro?sColfE#L+M;CTxUM=3 zu(sIh6sv$2oEX+=He-9N?8>>vAI^H9(zn6Cwl+q`^98k}?s#S7RlyziZ}S{-0!6y{ z7N|cWTp!I9SVzu<_6y9&a_h6gtq-d*Nrr^cYOo!I+E?% zZC?nf=3?}VA6hGm@`J;Vc~v&|-VPC&CPf<^f_g$hwV!-^;!=-1XD3faH(24VdevLp zexSE7T467DeFp~V3N!}KKc8+^HW81$Sbo!!@zMhq4>t-qnlZ?oc1@ha^!tm z6f9>Ky!}P{x!6n2XwGS@41TtMkHu#~;o{c?d+(*|5~Px+;~DH#ks zgE3#$!t;Bod7+e_=eF1>YZ z_K@&DWvFqfI^qTlej;E?Gn=|ILP-99`aF!_9ko zU+$}2ew)FzUK0{*KRIZ}G`Yb5wk=IAQ61u&%xB^Cq{=(3R-{?t1vA2Y|7c)sgc)2! z+I?vP;+F=&nU4#wm@0VHC-Tkth#QOqI2R4QOytcZWH?an|H8p!I!qt;qCR*9V^owY z=iA3Co@_j_`1Q*qp^WZOz6U%~-SZaS*RI(92)3(b{QKnXa{>03w#T)5`iI~CU-E}* zS~Ojl@34?XTpO{7K1aFz^Z%D@;#aP>l}#K%cAR2DE4<=}WaSG73PB3JFphqxw3ZM_$N2T>h;AcrpWm&;i(N6E#g)Fd*!eEr?p2&ZSsoJoU4?` zFX%H&7L%;mc01iBRnaVdqPYTT@9F-3`0xV72MoB0&&Hi4O-nmQh*eifUX^ui2yE^x zziMNV6(PLHOaIcCVEV_>K;+IgU$^aXsv>TjlQMclG0{96LMcM5w3c;ir-yG`AV&8T z)DipZq&EQ~4-nOAoA7~C4bX%00rcT}M0-;BKZk{IYhM+?JR5)xerG!P(e5Nk82!=p zy9Ph@_lotJITsFH^e|s@HpT86GZB5<^Q#f*Y)oO{#Dabcq~7sMLqro8(;)p6O@HsvjJ-H#jJeCo6A0K*(h12MSa-bdb$pI@SF%8l0CnI7gfPsZ|!RG`2|W zteD0|>>&k;{B}1QIzOl`#H&xW_SoRlHfu`3=m{AC78oAlb#buMc$y5ed6fp6=^$A1 zq{6_uM$eM9E<_vX+!R}U&cx2A@bksgcWE&2Va-!Zio<~=$n4aX#cc^5+KDCjZDF(o z!TJ-T6;KpsHt<9IopKVm%U~w~I$#g{oJs@?hv$<=IrwIYc=bp@Wx$#1hoK(}esm2+ z>$>l?6>PfwwMWbDr`C5$Q_uG0C(=>Msl_>BW-M2*=Wi4zxZD0(4O}N$!Bll|Yu9ox zK#O&JQd{dqvr3p+^@)E`Sb z+qkFGkF~J$gH8B&kr4gK(bms}^rQ7ZG1HZ)rosP2{h2=6+VRWnf+h1%=acFgm{VbX z!BHDj7>Dool$eF;yHC0JW3%UhzO8J4;+metz*KrmvNxW_YyOkR54@&|1t;FC8iFJb2RY-dhO@^wYS-o zgpPJ_yi5JusAB#j?poFEmzO+nzCey4o^}~%J>NNRY3CB!3GRAuLuY%Pb$4rct^y|{ zp57K~v*5Fra2VOnfuA=_6+R`QC*JTQX<)DhLb~f*PVp()T79Tmu!b^nY8(kK=z~M~ zyy%TQGWBY@Fb%>N=-IxOiU4`Y=D>2EtsU(w5l9{FB!^xL~~F|Jg@0 zVXl02iYixVGLp_+2w|}HZ0DLf%3M=Dd_h~*Ax)e=(qYH4Djcah7-QC)>*r0(Da%=Ck?*nWvKM5RZK7-hwf42JAx(LaW~1W> zFaUz%+~LDum%pm0+53u?_4^RjF2@I_l;mf~X?on0k@fU^@<_J(Zl3pwA*8dm9YnnJ zesbyOeUSt9RQ%FmtjWYIjCJxQYyHKPL$qzt(7MoezS{ZVJ`K!#FfQ(@;~)8CbPKzlX|8J@RuV?EtA>*HI ze{T5As~y2~kJzmCk>#MVXM!vp7OroS+c? z@BYFor2KffD@wS>j^6QH>&U_&>y?mnT7s9MRd8luW$9n>Dv0W6TX7n+smr3RT)M0I`)AGEN$E1gks&szI*5P&r@Fn?|q-U{8p$kDz~5a zaupbNPJSdzorFsrE$~NCxa}tpGm;T!+k7$ke=PE~N}Lud*B|E%`+`I<$u|%x^VjIXi;|e7$(N-S@=Vg#6Bi*pndw$;sM2)PZS>^MxpYy zOV{eQ@n6S1E+`kPFC=!OoJ^|1GmDpix74yrJ@!^o1YI~~4-^60qGt1Ui?*nBByzwP zZ(IPv7j*LBqI60DZQ0VezgLCVyS5&brK#FFT?teXuULJhLgaSQA?{H=D6qUL|9C@~ zg7rra1&^?f2FydhhZ|+LCS8v0mnxPBM)jEzwJj@?e>w`v(mO6HfENV*G2LGHdDBla zZR*g^(JD9PbwjkSWfxrBRS9B<<-yKn+bo7*fuK|>072Z86aV^p@kMhq%^vG#(VxaD zievM~oJn-UfwNXGs~(%%8t8m^va-HVWZqxIUml*gkpe;~@~g8{UJHmc|^4!~P{-bn##@e|zhS))A$kKwq#a zczhSJJ@qF0uVq0S5X41l7YX}$6L!Ljm75kDF_&RMlRA)jbVN)*GxMm<72nds;#{4jFo>><_=WIB0Ssg7?DdgNv3|1 zkHKLiAn*&G{=VQE!3Ek|cqb(2_dj+I6*7;x`Md;4+_T7!zS)2TL4Lro0HEA^^DxuD zHuUO76v3`TvT?t)ee0L|w`5;vL&w<{=gUZ#`R={88uwV1GS3e`vGt_AI=umRAf|vx zlk~kSSlX7#QTaljQqf{V@aBKMuytrK^!Zr2Jfh3hb@ehRaSWZM?^W`^&Se$%211jo zJNcWw@pJwrm-d>umCu$~atR+`?f8_v!1_Q^yY%8`-vdw?+wGK)YJ*t{hdbRssR z@Js{}Tgt&V6rK-fykcC=JG zvo5+gr%WhrBlq(bzc`Tn?OSF$^j)O7e!-;Y&8;dP*)0B=tbC}i)&}!2+|iXQN-kDg zEj1N1$Hi{*`fVJX6C~6eF=;j;YEQG;xD=z1IeD}qy;d2ET$l-60qoGEQ|kJW;=WO> zU~lWeb*V`PdG3MLxls>3R+s>sHfkhzod>c%7yj+#P9)R#C>-i8jVz=gLz9hEw=bLc z(#0Ld7A5?=Z(s~10IbSrZ38}a8c#OoyfDot3C;A@&pYO3wBm#9yNjgCT#B{!J7~rC zj~Ae&6|XoBt$4(LI2Y*WJ;Ham^|wAme<|ZpYw+Y@Ao}bm>$2&eUps&P=}$Q6fxzYX zo5`nXH20PFJ3JtuY#cr4<0`e+AiV;V z)1D(j-vfzSmk)EfN`m80CPm5YMbn2!$?&9PUQ=5;`)9tJuIeZ{_62r{|vpSlW}T&5HO9UO)0Y&s?u<3Gi_;8eQW0Us>xzD z(>oSsHMiZ<@@nsp%pv&=)jA~q!UUa<-=*;x{uVSY@8}&Jk^h15x%nec>f}vvV_>CU zv$FrNvM+}GvD=PzaMYpMvRyP>^!4r^JI}2@YcNTCT7TT6`@j31WXy5z=>y4K4qW#a zEYRB&La6NkZU3u_f-5e-2iVJs z=9R0vkJ@OHIAkp_=E`>n9Lt??m|64by%k!6Qu%13i`SX#RUF+oEaIofW#VCDxuIV4=2_G?h6LVMHb`}@#dv0#sa zuRjzAQu3EW4rTPd_Z#&7!3=}S57arf6tL&LIP^Y!#G!2q0v(`29er+kiwo&_R?`i-3D2hr|;2L z;S=jwuC}X!8{nIQjk6xR#vt4%3f3RA4c2zdjmBX8J^*w=`MurXAKqH+ho4AQ({qRu zSY+=Xv?w9`=i0w}+Q3n0PP|3-eJsXh3k98H?-zO|$KB=nl4(l>gq2@!X1xT?0xBSt zRut$4tmRGpMy7XKfaHk%A} zN=it`WhQ^WWmxOZpC=q+X$TnxY&^Kdy?@Zor<(+bJmAq0YIle^xXcwyTfs=12z4GJ z{#%In&lf;p4HHf6$3KJpeBRla`wzpc1NA~m*iE=};br8WGH!hIfA_Q-H#Ucpc^-lr z4%`OAyZjC9H+`7}X83;u_z$f|`^#EDuzb9HJ6^G&yKp@p3J-Uijlzw81^ajFyW=kr zVTGSV7cK4ar29`ttp0B2dH$HbUhXQ7E4**Zs$=6jo$snpP@`I z^U`NiY*XiItpLC9u?P<2XZVZEK~3d>J6gSFjBWv+;4Jyu1HU`T+2= z@qr0vGO86CRf0(3ebeziLpxC^Qk#Uo)8;cYQH&~-sz@!|4#;DzJ2ilb*qa@>{%#tu z&7j-A7Y+5R;IHw==GbY!Gflt$ep?Qsrab?C|36<<4}tAQ_8CcK zsBT4;KrV}@E_nM)Cy?t|PNLXoF+cd(0U;FHIgs16OtwDC|G6+Lfr+%AYkW6+8fYLZ`>|G_|< zT-;YVq_Xioq7oZ_CF3vF_#^o(>}LGs3?EljIDGotOJ@zaKXio~rIX15j}fe@6a_!n z|5X_*OfMQ^$IVf1+kTR5s$jbV3ya$LPVG59!-MHiA1WQOw5+&B3fKY4>3B*Pb*|EA z0Z?J^@baF6rQB{BE4Zh0MYK_Dp~}Hu_H#q0Zny;xbr;F2S}d<>Y5Nbem)=H5e&??q zzs~nUqFwyO7>WcK!>0W#{NPud!R=OJfg14t4PVAuc)xYuZK$*3+AcT)-+o^SUm_@W z$e$TE>PT?bpBxl>GU;GixBj=`&t${s`&IqN=6oQ**W-LL6r8|xHHplMO%$x^E&PSl za;(rqZ6HSS8kq zp`)_IKu+h-1XUI3&MD4B>baWK6CB(brR0?FRClh?0ZH~MAXFV&=;53h%)Imq64 zHMuXDwsby7B4JPq4cBp4M?r+qFJ*Hh5_50xWwhw-7I(qkR%jD$Gw7tJ%nTRi*_T}sI_2g$RY_}(U7)fY97EpoyXR;2`0o;nfV2D&5 zA%&6zmLrPvxokvnj${UfaVBCzHnKkKmaX7j(>@OqMFW(NJN{cJ;uV<~5#C=9-ZbqV zy+2g%_ie>ma%%PdXJyoCTM&Q1*dKB%YG<{U`jnJC!BlNuyT!83*{m?H<{&e^#ZFFBWTGCagzxi-i8ZnZtLIKHu(biX*VIgV_${6yDG*JK7R_69EF(g^R< zm%YVbu<5@kp1XwpS2l6E$`wU9jUx=fsuKQyYcP`Rm`CVDAYxc3#!@|(NIjeIp#b=l z!=J5|*D>M`p!^RGhEn_ihinY@KidD<8601+Ex!nI_u2;Y+MnsEi#z?x{K3iY=QCW~ zkj%2VnjU!5EPi{t{Rj`$g@-ss&b_`wDOyG;b(pULk;t+shcs{B(MBWpmNTV)N%&FMK~IR*04t>(>WwGs0ayyL&ZG`{z=zA6<_WzQ;opK2lE%-r5i@`^h+QLykO2!G05GtCZhnq5`p6OnS zRI%yHV6v`Q+Z-CR1ChV$Dpp+-l%MwR&WG4pW1)5UCMrH0Dr0}ItLQn!_R1m;*m(Lb z6xgaYD|gy3M;?C!Yp5nu(dNr1c>|aCq&GD8UUEZLIzmIAKM5@<#4g*9F_&FLZ4s#j zH(Dq`7K!bAppn?3f8ey9_7;9@MDm*Bwk0viuUiVYS@rhOT|C{<*Pd?u>ZRjhSLhEa z3-oRd0e7rXC!$&al8EUh0~P}n#R*4^vMe`1gv>TaXA(s+6;Mqy$|_68T|ytEUyC(m zK#VBaJR{K_1zHXWInTNjGS^Cfp`~MmyFgwFH0!HEXO)Zz5>GhVhsI~ilGgFDZGik`q}9X!7@O12;Qx4w;NL9xH%mityvJ?OFcMP3 zXM`kPz3s|JC%62{L8p_(-ATj&S6_ToPVgXkS*2_^h7yM^T%?jrXoI)*=ZIet2IEVt zSao@$tsrofbJ+e)1meTYw=j^LGoNMz$+KSWN5Yp{Zy=Vb!mub*PsYse=Z5Uh@j>H$ z#s?=FA9VX8_dAF;!#`TERaYoQ&Q2WAYV8jEV0A%HyX@=ekJt|bzD$3|^ZeEJ57umV z`!cfM7-DF(0nyavEURr6*KtT~?lLjETWvw_a5|uKmaW!tU6<->-?H+H{E+oT|CPG4 zqx>S7tf=?6sKt;vg-jBXED5>63HRA~=xTQi#Lv6sQ=&nRzYZmc`yU?QprsNTzKp)c zl0RZ{$G+U9Uj6<j-v>m> zin!RUB4MP%&M^29B&tJj9Z5cgBZayx>LjVm`|@nL#0jb(!lytKGD$72D{K5H3*#CP5!rn|7H<>i+;ALQ4{am-^qL zS>j<82&-$zE)q;FimsWYXsZZ+unzd!P4hT;F~+ zYnMp1Jv4*)2Z2Ix?AY)xpI3b33B*AMYt|q~d#uq8O{ZW~-!EbK?W57jLpnD9kKz}L z#oL{KswO?5xMubnBq>jyTgYJz)S2P=!Rl*W9GT-7!H9hJjTa}71*J6=gG-vYBCMpO zQ7H4q0@J{GwY4U-D^@CN2NFXPhjblJ#?XQ%fanR?d6 z=g>fG-sh@2@YRv2xQ7I)m95izK4;undY@yeoW0A3yUA;?A8OpQ7M$u17?4QRh^ysFn_j!5$}m{h8?AjMb+ zGV^|fP@IZ1Tob$6MO2u-O>R2Zwds|4H;$#(H5c~i)p{)U2C`$L-ZftPUgUlHlEgiDx?@qsL)WCMZI9k^}qXrJf^GFs(6BR-40Rb$hf2&`X0S^R`cViXCl#uZ!{=rAU5mbis2j@?;15hucqAB%ODW zLDx1bP%}kMRl+%>0O!~84%lrVuzy)W8RU-n*D#QPBb}kvLgW7w4bVaWrqJwUqguRgsI=!afp5st5UKN_Soia)Ucnhg>S}6d z?GXkQCu+B%=WgJ(Ms3j6d;2TjzE77uvwi;f4|Ur8d?&1=UW|piUenfXODw_fdTj%#_7ArUBxnESgMU5XgF=*S&c}c1E?+RL?WH7?cDj&s@~M}J z33v7}7c0hQ{Qw3X*KJa>w`$;;rfhTtF6um@u59s*hs#TC{2EY$((Fsb{V|;(S4_TE z9QTJ6dj2?ZgiadpltM2UyvVIQWYJ8mV;n%})l?e}bU!8C%b7AYo;oI3`L9>i zKjL&meogAM!W!K_ad_N6GoP(;9kV%#zT*D0!r&D51t0$E;9-Slq&|I=IRe!PnIgul z)TLkYtX0XjQj3FsmuP-Vf=d*kq+FpZg4cKih!^f|?0MGHFy5nHjBtsiA-ZfN%F=l` zAu2)Og*)=kP1nM9JA;`y-^lr3m_3O%Yl}2-URG;{_OTF|ok~N)XMRxa6w79&=1Lip$13ce@UEAr^!RpR$ z_VEAY>MNNi=@_MAkErd@UfAcWY?dc0x4aV0YD5(gasITbU?tBxN|Kcu?aj_$W3#7g zf|_e-^d5x^(0*`-#SLW6t+L3O6Ri0Kwq&n9IZXbk=c6@~bSMn&{$eBW5ckxAwSK+x z6U!X^H%Lc~;?F|oV}^~RdmBe+ESr04NegiC(i~{s(z%MXi5IBHW*KR7c@di*6^I;| zwd_l+ZY)bS<7VE6khA>i1wv=?%qTMp8&-=tdRM2`jU>m{XpEs#4@jiP)^;4?;)a}; z)G7$q-A~fs8-D2M%Tc4sPd%XVJ#TrnQGdsDS%@&7aS&lBghE#;ZPSCsa)?-M9Rhh| zYH9E(tPu{sqDLRu-Gfm3N7!&RV~@{baLTKMgJ=5~BTR{YVp?#n6=d4h#63M@J&% zw!W1)fp;l=Wgv%RsPjodw3!QJ0Gbz1_i0lOxZH5(!L#>vFGeKtUk1d}30a;B`_J_% zwp_NX<6PFGioj(v-m{m6#UOKzDMW3t`QurhaIr%E1Grh6XNvL@kxn3a4i^X5sxAxQ+yK4~E9$t$bMd_G*cUgDdr#i*(x+$l7 z>Af~5{63q#ijSs{3v{u`|H2T>5 zD>xfAwu~9X=FG8&yKVB%&yCIB5IcL(hp|CRV`s1Y(2EUv5@Y3n&Ly$=t7B)c<~h+k z@v_+28}x2{?Cdut#EyKmY5yzs<@5EXJ+J7;=aSgZ7G-9-)L!g<#cq!39JBi{_MNBr zzl3*-yA^g&k$-!Cg(Nw^6!Nt-dvbht`prbzr2%lDbzRI)jitSIsPKD$N1Y z1_xJU8fb#xqH_w0;7dnrGTmk^J+ML_Y{>1cBt3O%-gL%#?YPx-jKu%(>}K*AKg;nJ zNc{Ho!lGR%`|M_w?bvzfC&AMSXXqqD=>zL{#Qq}rG_PL8S1)C~*xo$Do7EnkU*BJ0 zeGIgW6IssajiZimO27_e4YNMrL51=bEDwgLdCbFPDOS7-KD7M}7^6WcI=~dHJc1ed1qbhplw@5!jklID{A_oW>LQKO=V?Z%e)vd~>Yope zIN;rRDAk8O6A4wxR2tbUIP=qxtRz+$@?Pz~)?TH4snuO<`ndG0K_PLf|>R*A~N;L(f>g<5z`PtCzMRYVH;6~*{!es9`TSFv-V zVufKbP*c(s?YlH{Nm#0l1stfou(4QrtDA7xD~^HuTxo>Q-e;-l2BOmD z3G~wemwpAhYP2wkYj5NsQ@#py?XrnBWjMu0!ST#e1kx5f-B*C0gpf`WdS{4PE8QqK zW*~s^3+DB4SXnCoiZXt>|InO;x}{oJS)0MilEH7`psnKmE7db|uU~I4bKaBxbm(ra zYX85~+C8>syC3(W-STbPeVSPP;P;s}|K5u>%W0F5+{bsEz&9_#5;&Actr}v!DV5_s z&O-k7{H#rShyS{-4oLz;G;{cCeK!98JcIvSM{fMFYu4Z)biG&TafkeW%__|5yl?NY62>h#0A- zLT)7zqWq2#HR;5P&6t@h95$T&yfM=F@{ubxt853(>qWtD6rLbX`U@eSvL{@@xdRq%k-438|7$@71(@SlAHoM)$1bsQM{gc5p=$BU8A zJr%tq(<=FdX!IW_w6!$c_`W7rC9*+bKc}l@J!G6^9nS_Ail90F)p?kZ{;z)r>C2X9 zBfYr3aI{F+x^Hmi2U#S*4EKu7=Ur?*@7h1zu@33z<2Qz`@50Ht?5j}tXY8xU-ikt3 z?BKz8*(kP;B|$d3lhiml9g{_v&8?*Vu1lYh&m_*i1j^atDx(}JDlyv;7kdIybsZ#t z=Yz8e&;4r{+;&ORZuY*0=;hW9G<3K%5xh0{|E_z}@P*bBSQW@9r>$!!I=aIyPa5*_ zuw+(EW?&Wvw1{$SW<{*K<0J^;ccUHaW(j1;e9{(DfGn9OZLeI@QR6tW?NGyJtxKH{ zx*mTylN!zy4jc30sRLLZZZ9AwykA$C$X$xl2WQUWWaY2bDEA}BQ;D4Xcxrl1VLa8C zQ^fHoX@hHn3l#W(K7B6z5epgIZ-Eez{Rq?+|Hqd8$%QQaaZf}`zg?Yr-1}dqQx|R5 zv*r|0xBhbl)^71j#*a$vZ#g@ohdTxp`HlVlvy5W3^97XAUe1EKfYZ?FStW<-Tm38m zGxuJKVV3#?{0Bofi9Q;6EfhB@6gpnV)WF|zE)~_>6-6BfCw!e{-;7m+eA``gdPQOIQ}?APNU?LS*%epK9okwo>l1AG zG`={0z@`q4fK}|rHcC2P$T@L%xA;jemzt9vPu!vusa&>{CxEBQ@=M5D|Gv0N6`Tgh z5mlZ3iN-y1Ne=NnDf>Qq^_3;dXX>e@(!qQw*7A_j)RV*9y;13mjT-hNNXr%tro0gs*dUIwwsc#0it1hnq!p}s)7JER%`FVT&q9-i?;s75%oy7rG>?+D+ zUu>&uEk$eoZf%|)M>TuWO5(hm-nJPhooM;F;1{aF`guKE>T+q`3|$-G@t!@)_g0}A zLzSs-$Z0-+>pQkj!Cw{Ms`Z&N4caZ$+7xSTiq%1xIw&{E1UVWFoLO$sD{F$_9VZ0A zlX$Ig5NuOn6q4tWb|e^B7M9=z0-n_?SI~{0_v4FUtv z#;5ZebUulW7#~BEYR~vQjjUEb88iDc5P_w536{;)>S$*)Jr>GEXT~DIf`w7&7>?RV z>h`$pLGsjYqtM`)C*G9p=jVgY@^|Dr5vOtZf3d^=dd&eAr$3lGL=j-WeiTa%(`$d& zEs1oWEoQ(b{61T1{HpxwSfM+hA3i9G9t znk3RYb#UzfymJRh=qm!7{h3OUvWwJ;wjzae z4PNSO81J;@S&a9LorDW;-LPu}3Bg;fqK@0v6^? zxR1~&KfK@r`}Y?Y2;D7W%7qvb{4-Q6hfyT(*aI8&;`uI3OYqi3uKYx~neB}mv07k~ zREQow=<=9o_pn9K#ert#SQ?cf@-SVMFS%H&JR&F|L}CqiGI_n)h*yE(8p- zcU=6_4V^7qKSHWl1;{|B4N>q>`zb6oYFXy^#Us(#kT4P;aLKN|_|pIzkuc_rxR1CIH5*T1Lm zfB7%$9?5Y1v%nokpYq+0g9fa=RYOh6~3;Rd>r{5~nQwZEGm_#%%&aqZ+wHzkFbzI*f zs;P_OPPn9bwMFN2a7JTMsZu>4zJC0etpHuy=PXNvl1PK}^DJ{ttPmm6Zs>k42dfWr&>!+~_4zp%fgL24mKF$_tgyx#731v?T1VDv3I6H0gz}HO z@~s^O{P-I`sx7wA;=sp1Lh7qD?92M55g`us+xOr(DDvu41dsXyUOEndv3;}p!ssH> zaKXq}Pr;=%6;EAx3n7jr`&G~UyoDyN%!_v}?WiT3kHmixwwtF4GeU4cX!Vk}khP;& z#dd2h3LLDBZqcqzJswXH#^hip{I09H@Qrx#^BFP!8w@{|d=Ea&)c#Rr@s$@HN{IU# zvDugMuDy@V@3$ozX*JH7??kv^74O6elhtC^2;AIh&ZoJW)T`VJ64&rwiiTa2+FC=D zng60d296j{1Y_sYh1f<5pIVf_K3#g7czR!*_Ti@Pw;$zRm!p62R%dJbVDq(^>gTwC z;cgYp+LzksOMUdEK|M0+BKr&xgq~DI2<7S1&l~=Yqig_bKsT|~@o5e#imELk_CzaM zu+WOmD^bfT+8h>5_}5#jM9c0$RV~H6ykZA8Hfu5SiYKqA$C-DNrU;v9(IYWQw{4Jc zeA49r>KG+JJ78>xSmg)r9hMUe{^l#44EJXP7_MJXrlExW5U&+3`MtEPCHHFl3p?YB z-{^B{YW%_Zr~1PV#{auWjCFVPG2Bn+5AA!xT!OtjH+Hu7Guxg-g6!79pZ)Y<}|Z9mdXePPG!B-Of#QZm?Xxg>-j%0m2yK4yZnW-vCXw3c!h=`lZmT9s!6=q?Q5u~3 z&ulp)8P16G7N%3$K8fQ(*{YKsc8dX)8eXbtDkx_9*$N^V%eSTz)KirvQkGRj z#xjYZRs};^6^lk9N@h~3zRQKkWg0*gI@du9=!iK_VoXWW%{Z@z`!0hWAy2I0z^z`z zOR?*2qbT;(i?KO7Q!6(AfI=2Fx4L{?<1Wdkiur7MTIUm2Uxll4e6P-yt;LPIv}_&R znAftkZ_|D3WS=1TSG?SKTx^am4WxFTBH;r&+Z8W&42bY&Fk46bE)bH$W|La4lb@Ge z$rvubMB3=5uXu~O-tnNdUhZ!r%HV`<(GjlzP&!cWnN#_;0R&MJ%am`J%;( zjacgxl^Jhp|9MU0aRTH-N1UNLp7+jS&V&hWDbuv2^Fu$V;fWHDRB@dhg&J&V;u1lF zkD}t`*pFT09l^Llw*7z)NYygAI^my@i={t#s6`N=7DO`PwsvGf(a`KJ#Jx&J+p!AT z88vrgZfD1B34b&VES`KYd@-u~UFzb0jK(Jp3a!;vFB_TDd1!3@u>Bq_WZkF`tSu66 ziRKVBZTKI?-k{ii#-7sYm$@~LO!vr975sZ$HdeLI$>0)cCa2DYo23h`;A7jl3L6j4 z{2a>q7d8!XbeLLdDq|fYVYP2-(bY#;N>>A`*FuR@jR0Mll@Z2IOpL072wG6{n^T|a!XBP|Z zc4Zp-$r@iOA95E-Mia2g(c^8({VyJLahjmx#cWLY%JcVbee6=W?c~_;3#Q)~ZKC_!6dbekuNryZ zFwMTA5S9;J9sK#jBa3KV?5} zg4;OzIpB0O_H(Pq9sic>FV7D@QS{678;w4nPyI8KqMRRr4t~kEusM2KXH^R-cU4RC z%v{iWGZp;kcXX{tc&@$d#(#F=C7gYnM#24`=jr~>XjV?}B{>(~pfar2vaGYFT z6fB_(=YMqC?_SO){W{&7EYAnT1XAvz=5Y za&!Dd-O3Ox6cEz)X?RkHJv;B7KBqWXW9Q_f@pHd$W-jNJX$1QI~`r%5$n0-_s9@#+MWP=t?MwGab3H>pqs3AjBV%!U11G#T4b4x?wIw;eX+9Q-5pWw>o*h zC1|h#hn*xJR>_>EZxgJh?#^`GJ-KJpT`zUVPJvF5H1?&3d~Oi!=p%<#rt8$-Tz4!6dmA*;K^J?8{?ii`&H-n!Z5)(4&7G4M1e__;EJy6mE}uu^p!s8Z2 zJ&^;!YYH=jhm>ka#JT0$yMkXHhasC{u9;>!NeyYu(8CaV2=W!DM-3{frbr5qulkE% zP@q+`CJDJLw6GrcJGkFs5TYd(ft`y4KDB&kXK=&&nxA_$cX+eG~5q)iI z9lzml9)db!5dTxFa+{86Ibl!}2eHWjN>qP-(;=Z6c(k;_ex!F@UR8%MWSv}3%c`1l zyCle&F#qU{Ml34RL~O8liRbF~%*R{#Seh+^g8i&wR4|%E)Ig7l-21kI<97X-Fvbh( z_eF5?^IUM4CDeLCD0m14-!+o2=pd`1nC(AJ`(M@$hW|GeGdzc!>2T@57L@dXh$-dZ zc*J~j_N7^HB(wH&fMIWn1vlq{jefxcFC7MQ%(H?5L4(2HIoZs|5d6p$yf!Ro4N8?zxXczoS7*H`mc8>z~uy$CuO@6y{nONSx%+;=Rf`+RxkOTZ}K}o_^a*0tL-E)AHgXrHgwU#?zRd>zb{el&Y z%Ox)U0I+|19sp;5ogo_U5o4k~hIB(&fXOf1`?*GX37)B5u$WZ3H(5gQz|eB zU|VqHJ=&r>gHA_8ouXpx;rVCdhp-^?-4u?1Gb(*P!uO2w&<{HaV>n5`jPth07K?u4 za+MoD^MvSh?uXrxbMarxLSz)j1we_=x7^;8aR~KTM8l86y5olv%iQNgP?2^HBHS>H z53Y^+=+Jsw{R?{Hcbzo4nLjZlYt7z~l2tZY0NYlhW4poJrtBaW%o;;!OLo_*U7|ih zY1jAenZBnoW}4xkRuFSRT|mbtv0gS6Y0zHdHv$DuO3-z zRaAOnuFw;%EP&EL;_hHu`*<|COS%m%T))_yzpGM@9KLdHaWD6Qk@<7kx~=B?!t`jL zsq&mZxlZ~nB9DdZotZ%VM-G^{sAb|6)zdB_7CN`IE_X1gQ}}8&hth-JxA>HZyk~R}A0OLao^K+(s}{-)3!S+E;1h2EB@}_x76|PiGp9f;8(9XHfu-? zQuPU*~fRQ+?S7)cE{Gq2i&n3GH@b@AgPus7~L^)h9Inu z_R`0D=~EcZfWM|pY|pok%D?du+^>psQl(XIpbDlw6YvDda$U5MM#K<%s|0}L^l`b# zDXbz!V_-);*r9~nUDa&fRP0d~*M+NNwYw^!r>H-a0YhYPHh6f^4rE5IWQO6_h@Sk5 z72aDwD2uKvKQ8VdSZ4bH45qp+IOs7=xH~7Ri8|}}o#T-Xzi!n6^w1B0l%Z0;sE<{i z>x0Jt{Q`^d43|X$+#hgR=aD%N;pzY}+JZxts(0J+?G=m@{vyQpX>Fxk=`WDdVkSxx zA8gqm{wW5;Cczi9ps7ew5F(@+imsiWW$)eo zqf+L;Vs5l`Um-Wf3chy5zvI8L_;*6xY>(eU0rntbGNGGb(^Jq#KFgoJXZ+!_+~qMR zBr5hGqrlRRg04qI9gX5h!XYXeyZTr1ekB)gj;EfsTW~)+Ir(b7m-{3|lwbSl*sQTY zB*AFK?aj^UuInHc?4U&IB5_X_{fBwpWW4eQY5YwKvH&O6m6i%CH01=Mx(jiXGd|aqTj87Oc87deA zN5cQu4%YthrkFp39$T6 zx)`JyG$K|&CJ0-f#2As7VWhD0UQJn>Vwv0wx30w1w|0+LsNo_(-Fb$RTeW8R@O7eT zv$p8f)n;WA^ZYY8y2Q=OOaO`3*pDZ}`XwtrxJ6aCj^M#Cy6f0}z^7eDN;H2hVel-$ z1$G(mf_#1&eQbRtG8Tfihco=k1wUr=KQp;{eSS9QBg?s0#XU zdRgsjBlXXkHTYQXrLQ)OPrGxj>6ntNv*~=~bX)1aVfrpv30LQ#T7r*SXORCd#!CoFGiVIH};EzPAl zvDw%2J-C?@}J%7nEOK1DVTek#sYI+VPgtEajkFUcSfrYb5%kT>#Vpbi}TE{h~|4TZfh2W zH*O2CMP>ZFwqK(rb)0~@>KD9m)1ijH7W2N7dRDNxg-A?x^h&-R)EIb(dAe?o+7by8 z7N#u~aWp;WXA@29=Ux01<*SsoOBUGcuo&+b@mmAT6_?Y{YtmfHeh#_N?R?F@mJ`_< zfBz)~ug&5ujp%-;UrHdbuvJ;)_DIFM(O!s$S3!|{|VQ`oOYCC z9a<o^Kqex1z#Ehq^rw=et!keL$G?j2e4Kk|8DuW_*Vq6 zF*!{qv`mF!W_7~Y(TAHkD1R&G(Jq{FaCE~pDL_Kt%YK|`w_QhDF#VstWxHVh_uVe4 zx|LA{69WewgE(wCuo?6O&ue!KlmBPoJmAv<8V0W(APFz0`WhfHos?r!tOdAYMv&f-nK{#yB0#~zm*MG-8$A3OW&=3h0o zw4L}Axg#vOG46;l`D|T#el>Hz|G;hHdzyUT|EMfKL@7IIMLA7lq3%OY8f^O0v>3d_ zFZk{KT6DO}AAc6A5eZp=r09SOO1)HdQP&0Bg~5b1g3WYZC=#GwV zdIEd?*NDHFG8Fr$NWOzY`3?#fB3e2(#TM7)cRqy~%;xZ-{NT)?4t%KNoUYOw316%t zKTp)r_Tv|w{OvDh(M|qlB#~SyG*%0_f;2wrulW+N_6q7%3&pimFhJE}ugmjgN+M_M zP<3w0)Z$Qhw@k(6ZCX}cOyVot3|)quf(?hRgmnG9vIbc1uDc7~{eLTBN}-*f@Y7Hs zu`axPd4t8u`RVktRU12l7pq?Gv;j(QL8=>tM3OoCg(ZTHUeIObV@4n2u7p1Bo5LCO z;IwI?hfEQ{F<5(Vv{=vd^aC4yf4Tq2xMSo44m$qwU;B@yd};eHDPEfahyJPbf8Ty= zj_nI{TYp>g&<5wEyN;=*r?BXC{am=9&aAezvN>u(L!!O1j!e!8C6PD zPH8P0UYHBW->FbkxcO{A7{?!REgWcNTCO-Kr>TzxA*VeW=ISVW&iNZPF?12Z*W{g0 zZ7_cixxK-Jvfu@ic9fW4d7)Y(5;@nA$nNAb$Pdbn6p2tsPKDrteH_7Lt8f4MbF|QJ zgbVHHBh>Fb(O{KmuxbbNaS04CLmwLrhrfzG8jo65eNcC*7%=W<7XqXHXWK_*oqbHH z!Yt~1vE$$!^gTZ0 zql^|!#%?{^fK5krYhglbrv5S1@7f-7NH6-VcyUH=Lhv0B zK`(e#>J9WtTU#FvpTef`?lg&m{qt7OAvsApRSiFlrc~49|jM0rmnZJdwS#?pg zFsDT#m;9A^Z$E?qeRYmp4CB#SbPt%`Egw;+PvYOMl}u*;ymzZRbUHR=|FL`24)5+BA!xR_h6spPf!3~`++f<8f zs(PrY@|mn$n9@{nH1&2foyYb*rZnfZN!)W9Cw7SKnQJ2r^9T7e+Pc|SKz);-zA1PW zEHU>iR;;Qdm{hBMhPHzd055M>dl)fprp~pgpo})23uX0PoK4@8mHXNVaXE&@K#I(| z)9~g*ZmvxKPnjBe3Ae8?|2K9S0<2t>;Oy^%11xp1MP!E{pZT~}VktaT1mpML<0>>@ z@|)udaWRt}c?&2YOM50EhCnOkzrt@CzlO$x;e9fQ#XE;sKmHqtHSmj-UicBp zaqC(vsxER3@&9*fR3uDeh3&g-hdyI-4j1Mo-)$Bg8iXwk@`h?2%1qcan(>@DKMP^s z`dkPb?h7ujHt3UnH^kYUZPq(`sa*0az&f4_UexZo_Io)iOR96i22DvR(gGCsSb!6r zi57rR8lB@Wmh+te56o=`VI08@yuX|if>)U}QiZ0N1KHvX0pLIGTG`XuLhv47t`%*d z`FZ2>L6x-=gn!|L{Q)ah0($K==3R9i^j&edc%fjDRGLq*!(h~%AynJH;{Hk}pNqF6 zpCu6B33cAg&vNp?60Uvde>(k<3YsUNtUZ~oCzks``}veFvxwHuwKPt;w*}1_pcv3v zJ@xxfd`qU|EPn7){O2buFRW)8CeT>50m$=`4`!|B-dnYvT8rhQiyXd>F4iaZ&uqci z#Y1EIoKa{#+~HPU931kf_rY8(1CDUV6*+EtWEc{V8$pWCF`tY{><9pN7ELkM^6nr?(^ zLkwQ~O^9MfxN4!O{m(t9H_D&$u_oEw|B%!+emt7l&+pG#?b6S*+D22=;c8chtDQ)O zt6i<=cYkVOus`tzBHiU$J@8?Wm0*#pGK<`t&(V}UnH)sjT$-%hIa8!ubzG`-ifmF- zx@}?RmI&hu#?NyYza_%>f@}3e$-9U)W*1?=&94t;p@;`tp#!k@9O8&E+n2H6*CC{A z>m*zIh~V>~<8Kh$Bp5gR%@Y~aGZvK1+49f`P;~`N~}`yE>iflI@eLEW#mcD53ug^pf&%{U}=rs>p&LM})uYPhv}fmka;Tg=e>+D`P+ zgHTDE4%CorirvfWQWK^*4)G$jd2F#Zs{22C#syLQeZ_!>_|bHRU|Xe077M_zfOX-K z<}DNKdW{2H!&|@@$~EJ#vCX7X9Y$ELGalU@h%Z^;O#TbC<*v*MoIXF-tyHO z%P68Z%{Be2ZOF=LuB*49En$-BuiBrd4f#00oqT895lu*fDJ(vwy}dZQgQJc*7IsI; zZojnuE@|de(C_R7CeD1f$Pn_LFr|q5l(y#C^Lg$Z7OH5e{hk$`fC}@Mu!*ZJ3zg63 zlZc5(m5V+6+R2kky;ZMyi{ClWd$eW7eQR~P!OQ(n8ymLIG4r>k(=ecuv%_#Bl}lPd zpepHG!?ROv->7w{%l{Y*X?(-DsnM6wQ-kV8bv9BLfpE>mu2e*8QlPdimHRzP`K>Le z)!wRiB#;+e^sVOK-}FewKfO;ihdsRSuWmV^FIU^H^8BAzxdneaHFeoeqmG1Ktnxm6 zhfRI1S}ODwe|EC&CiMG^<%CoJ*fkw}n1jC;zm{~6h{IjS)F$$Ul=d2%@K60ul>aXI zSxM}gKTtmY={kz9kEd3vc>JJMHlpZ4F4b)iOIN2aDbd8@ttV5kHSG`d) z@O5v&FW>+DveUkqs#d4~Kw1<3^j%7E9mt#U#h;&?82FmEVAr*GG*s@g_71K*iGTWD zBKI8%>|}2;ogsJC&lYtMPqC58at++V(0|J6#s{wT7DPoeE%g4f7C!IZ0;v$<1D~h4 z7HjT>uI4mNRxPW0X|ZAVJa!}S2DS-PWFvI1TFkv)zT6d?ZoD+l^#YIm5{w zFfg9noEw{S4{sBx-`eKlDY5w%4MczCO|RIT*}UPlbRLcz*h?up=6qje{UN_Tpo}V? zk)CE4jclQjlXx+5?(~w;Jexi+mxt6pK&2r=5iH3t2JkL1kb80NF;cFnc;T`G#TuJM z1;rszZ(@vMdd=-i^bK;qOQYuVcKaRWi4DUbfcIQ`{zyp+pPYd^W#rt8N=E5K{74OG zglII0HGJdPY6iNU#rDDJfpzMt+a`WY(J7h`DDCdVTcViw3_7TfQ4tl3phmuF@MaSs5(+9mfdTwISdwTOPYK*gj?|c3j z`?5(K?_PDCTw)JC@cdf)@}X*cM2)lU=f^5&SQ-}mx88q3YGa3tQTJ zE4L`?@fMX6ZbcQhYEqvUkFGgOSg-7vF2$CNIE$B``M7xf(golLOT0L!`TIua&Eki% z-%jL-^YRSUyQpAER>5GOOql|{kxKoc654b17xLsGop%cE<6EoHEWd|LRQOD(IztBVFm(wl}1pm8?m_J1|MU*iab^_qEa7_ z?$#3hWK9a6`|MAyikp{bvswT!`OH}Vu=;;RpuMJNuObnS{8tgrkDkvnfD5o_pX`zo zo$A>I+B0f_R5kcon3IT|u{`cCFe527wUi?D1olqs)7o@CrvT45^DLbJ9A3K+ImrHd zaw}VA?ajNo0g2f44@K;%Q%w<@p${09mQCYZXKy365aPwm$Au=SZ^LVYDU0!(m}r5w z{tDsUqppH{k0&+}u6BGYp=71XaN9WE_IJMEMvm`77Is`9HhY}DrpxRMBkyCgNAY07 z%#&)z#%7@#JHrkR3L;uoed)}i^h5pU(QaW6#g9`=stm8PQpLclu z5EtBx|9QhGnVSj-#PjT`6SGpo6Qf_`NAITZaynXPG0&;C!`zvqc z27WXR<7r_{`oi*favG;Ghg7!=D;d<H1Of9Mm~+w{esUq#wNT_(|RRwpaV#NX5KWVIdxj4*;mt+u~(AC z4}jubGhG0LLocUiNH`t;$zol;`|1}6x^IfU8$<^#*d@yO6d_@Rl--eWb%z`_g*k)F%TmFB| zO7h(C$tf5{SC!_>_#ZEQ+=r)#Rx3Z!M>c%n9}cjO7~N)FX#Br}X?ElP*Nw%Ejvfgu zqZu2KXBqeD=N9{RiLhwdcszJ8K*`wPvw{tsgw6T0+|M5rir`!(1N=uAxR(h)W^;wP z5jZN&vK##=s%lp<$vwa6JJ^;T<>H{|?NJ;U`G7?9w}Sz2#Oq*Dl)cN9-Hore@pS=% zusF+q@)}%9$@pLZH}aU%4)BG%y=}Y&{_{tMXZ7<=)gbZD3$4;FLuJtVWIGST#F?pU zgnr4&n|~yhMBL@CL`5Xe@^8==b1tvd{?>hBO(Z6CVg<=ljO0Pw-vHyM{<*GxB6Z!p zRzKn2pfA+tK1Av-boHr+cWX$daGMJEr?9@b!a-};6_l+e66rHY@YetSv@RVuyQ(R# zdRa9N5X3A_4D%vH%88G7920#B) zQBJc;7SXSr{{g7KzC`((wtnBe(QE}#K|PqWva=Jtm_4%aLH{T1!Ld}k_Lw7cg1mQM zVr%212Eq2w%qVa%Gav^ZUCSG;p#uEKag~8_u(RSdd`e&ufm*5%9AnR15TK3WH3B6F zMDcK%RN-bM)a1EK)g3_vIu{v+>ZNMyI`;cNti63;RK@lGpC}6fi5t{tl%__Ficb(! zG%2QTc+ic+5)^9`KN_D?MUA+TCh>4kS0pGlY=HK+P;U5}kpeS}aqhnKoPhSV7Y zRy8$o%V0V0l9Eo0v<5H)&yHY?NuCMN+vuRT-CXnY?faHpqwyCaAaVRPCuBX7l|yqo zY_nZ=HGjR*UqaKlE1sbOlW+v44lp<_^4Y5FSbqG2uau?ezvDV=x^(lmY*RRS4FMr& zXgSSY>XlAdugLB^%-(xT57sdF^BE#!94*tAo75t<>ga{!&FCUCsPZ(1|_yL-9rK7CC_cYpTWPThU|y07VO`~UNj4wbsJjy8YTSD+0Aze0zh zYlC-zKi#{#Wq2Jtgj6{Vf9%z#+W5|Wk}|~*zBetSPk;E$PJP-zNn-X%)|JZpC> z7uikQb7TK#+CC^ooK3(h$FL^7>^*ed4kK)>{HZ(H+wN_htiYN;0tzIez9pevdZIV^ zhngnR9hniZLF}nEe^NU>>gn+BVcqoYr#0A5SvjZ5Z=-)YP8T%@4yrRHG8 zpuCsQ(l4y;E=bSfzF2UBBML0&3-b{IKKrd%pN6&(&vQ?&R=aN%|GvN}r)KmNJ2sj)h%VKNeXjr0q|Y}*=Q!X64-Z8SL()zH$Tk5f%) z`D3O<>6!d-(qzdWRUFde%?R1%r}I!1IV!IfmKuSD`^`456f~Sn{QDpHTrnE$BmzR` zzY@35`Mb1})z5K(mkNuJ_mcq<59GlCQwR|K*bXEASRBx@8t`%9rc@xsAMeDjQ}&MY zaMhbpjYC85tt3M~KHcrl*}PTjBQDi+ztY}Q$=@0Mn{Nvi{j!rRD4Q#ao_jAQ~@Sc%3Q!iQ4)BFdmqGfMMIq7c#DWEceo{YEuG$Qzk-f8XP zENUA&wuZ{I&uWrmnSYWzo{kI^a!Qs7c@+Prp`XXUqnlZ?fG!GBF>3iFxpz zsecioMza+`v)T~FLOFycgJe3Q|f6|!*n&uqt&|9?{QHO za_If#F$%V=aQ-Kv#oC3u9B-uA+c_d^9Vtd0~>48~wI8eKdPrX8)F3+#TT;Y<~mnRx`J47PI`9nqbL7(EIq&c&-lDaP4KydvuJX$ z!I7?^*ZjOZ%@oa->XJh_((w#3QM_a2B zn~UNMOGq6($zic!E#3M~@ON79s`!IXSwXfYYHSibebi|E>PF$hudAYM`Lm)6@8`_G zc5ii@n63kj#zo%|CW>S6e^m~?<_{xAX^$6|>I!|^mDZ#7e137YuIvD8TZ4Y|yt68v zZqJrknWov=^QBzu?P9=IJUMATe(N|YT=?dLX~y>t5vw83_^hi|ojeTl+Qi1D*|iuw zj$y}FG(I~@HN*5XaUMG;H^;`LEnAG~Mn_XyGDxV*!s={_?fN~KR+7b;Qr>YSF+p>@ zxW6foyK-SC>qQNN5@#L>|GZ;`B190|FYn%MaAt|^HaNM2jRpq`^Gk%jUwlOZRE9%0 z>7F6u3o&?zZ$9(LbQs}zgi11h06O2Bo-OaMj|jgwxmpP1IR%r^7umB0nD4f8cP4E7 z`jYJM{RUB0B3#Kv@~Y&mFVkMzYtMl^JULrsF)c0<1oNzAF9BeHv(9Dbjes z`#=J3q8~G~#oy$-%%7>5Gql(I+RdNeLSR&5CyeN-jFQTBwS*hSEVu5!6S7ikxKaBv zGMX~GxMs7yN~)<${_~i)I^kcce}PI+|3Y0=|7TPk)SpBBj*-G47V^Sa+qU3G4&T_5 z0;>eo#;(qYpygxXuVA^!+~v0%LN$SvI7nRSo2<25+WIoX6`to8R^`H4p4G{YS+3q2 zi><=?n_Pv~E@g_W%v?9^l;MEz`@&&AFUfkQ!Vu*g)&W&`BWI}3Jx59ha1sYH2*otJ zt7-d)*x%7#x}=}1#d0%q6uGDKNIE^D;qSUVfX!wk8v1Bjh1O<1ZR7Mamgg^6ntvC~ z-l|}Fy%AkQz222i8KMWY{vQzir#nIPXjKoz3EniK*If61 zMKt!|0M(_SdY5ig7Yo(U_kWJ<)Ak43k9K4G0f%jGj~|Qt;giYGfJ*Vc+$V}iA!DiA zo<3XxWS)%rJ#tAZqmGUSdRN`VD0jDA70e>1$|sik`S}PBy?Ix<)X#epC^wTxYo99H zD(X`Y^WNr*6SSN~NMmCBW5$z)@_7k|aw`LEZ&gb{E!t7E3$*>h-_aJqwhBGRc!}9P zb0AmmjK<93FgS>54KLd1?OHPBxD0i-{sdkn8hnSx@BPBJe49cOEKEh=}O#3HCeYwQN^my`khH zgAP}(a3F=_ME%J8PCAD$)KljWeM{|lLErl}Uu8zKc{@hvOH_CJCeTGzPSMEb>nj7^sUy_B7Hgo?5%*m7 z+50qYBqf)voj&_(b&}VOJVHMo-wledmRt`2kiXQD?^&z8)slU!g$z`t+Ki^0*q{+n z$5L1L%E>8;dum(Zt>D@{t=LoW#4i|Z- z+X}3S%aKNR4JVgb*=dM{q?i6I_NS^u?$0Ca+fU^GLKl*L#eZxK$Z$bjr51Cb3X7u2 zy(%jc-&$Xph^+Iyjw>1UdAk@uJD z?VGJ9+BYBBrTk;N2uU+!$9IyPuEoA zSL!D{^y^xtgVR6W83JaTKeTY~w#SPLM0V&OcEzVHud_Bfg(>y**{WPy3LMq?Y{v#V+rG@@bqe^o zTzZE2xZze#`&m{j(N||;>d3Eti0%wB(yty;$Y>7pwP;R%vV#@?r2bYpQO+%r!+1#a z^*HqumZ&n}JA#;^xxO^*N7eAY#ELI-3E(lBeG~t`U+5M8uOZHonQ5QS-jbmo?Hd$< zN4VFa%@LM{y+4+I)Om=ONJDn>N{zt_pyCJ7B>E0jc~^h>CSCwNfv)w$nN~DZb$Ke_PzjU;UWL zj#>DHf|Vc{I`3_QzqcQ@xocHcwgAdXO@Ism`YM5_p>fIdLZ6)o+fL>_^eX;AJkeR+ zBL`^JfOas9;jq;#9oZp0{;JMv)$jryXn3-yRk8_=P2>`k839cJwg!h=S_1$t7k~sUV>;3>5}GuqlLMRG zZDrea_1z=93;UZx%lVL_P?XJ*(>A=;Cv`@VuLm-h7it`#E~#5Vn?Y?oKr-xH&ISd) zDR)ma2KKg=kEmS^wmJ(*_taK0bZ>bNG@OthprK;_jKRu8L&IQ!py2_(F{(JTXBA8S z0-35OqMse#&Zq?)(4~QA$H2(XZ2rZ+8ib$sxyvuUxc;c~r~ZI+><#-~(tLf+wHLFI z!*6EQjZM^+h5F_{2vA_13A)+`9)K@oWll|;Rj<&=yQv1^=rV-F8gxFwhK8f`q~TCU zJQqMbUtW0azCrwNZ|bR_zn7lS17&MI@cZlSexUNiH$-8O2Yg7V4j|w&HQ_);{;nb_HQ7}$pzl$3N7$!P7&C5|h4C|^h1u44T{qp_3+NE`BA}aU& z(5WYoM7TN<>tFE3Ya1yI9OH&O5_8VxuX^B8*ja$TxDq$mSMA5e` zgF(Tm?AIYmDVsyPB8QFK+@9*9EX~ZlT+Ogo=`Y+PSf@8hj1NCiairF|%4Efn;|U5l zTJxeqUojs!i4dN`Tc-S+Tvj9GeB$4!2O?X6WPiQxg?A0Pxyr z0$@l(f56S_%&A=60W0omuWa6ymDMk6=D?8~EUuu_nYu=9_BTq54=)G2t~FY?4<&l& zvN@BBuNcRfP-FitpaNicsH5L6Gq8{@D%#d{=2RHZS86(ta}3Dg`zu-fVCza%>|18g z9|+m;PJcuSP2ok~HksxOyZCy2HUM_-ka=_*SzL5f-z$cWQ5z2Ai?YHOxHO!kTDRyq zb778MH<}maBk!6~whe@uN?|C z*jlnjT8!a|Eh-a&AH;R$?{mDQ-ogSdore%Y&Zn$C_Gv@!_x+WdaO8$6T#NOD5dE(L z&61%|X^&a|-ZnT4!Jb*(Nt zA&<~+H~&_4Ido}_EmYfXS6a}Os@0N?t*Hp#u{_+empw%f@AfY;6aH#tcH}sYw}`vW zp_R}6;G&DKjQt?Ss*D+vXH{i+uBb^$rPO3UqWth07MSjO%XLn7)k^^tvF6+)CueHC z_sRoS?vQD&oW51L>K^5MYte{~5{BCOmYxIaW-U5{t9K~MzvhWg&p*rc4Mfponx1`_ z&F0YE6^`6ec172p?#D!h^<7>|r?_QR;yn2MK}3$CU=&m|pHM6fBX(R>;$ffqzr3(> zaOT~$`w75yzQqIL*zh=XCS))FVbZ$^37A#`UmejHCi$NHPz%XaP&J z2X@`=7!YoKjb|*zbq!aBTUYBnhaFvhvEX;d(QxL`Md8+;^Ckm#>yGXX=lZXMv$G-H z%{0~A_8)wHTt>5J{olW1K_!!K=Eq+R>Vs7K#%&c2q*D`T<3QSxJ$p#F^-!=YDJUyE z_gnmIdcFyCWW}yC3ARph+JGe>IjeIj3H?wIL+>69Bf_5ab|8JVb7J_{S&7XaOzF>` zq_o(+cfk++jhlUg*BL^g+Ml>hj<1Z*ZoJqO3_<}N*Y#Q+a!ZcQfb=YKG!oycBRA0p zVs#mKedw*7S0(>LP7+|PyV|1KXAf*RkSt&bgJc27j{j|e4{!7(ENQ*e`kn4sR~9g)nvl|XD-*j^S}1QY z83MMcj#&XyWc}2&N{!n?1n|>hFypoIS7BGGuPl3c_C2YuwrMSrm66pN3sqIHsr0yu zon?qo45Fi=38I}Zk^WI#UFY69mYUsXpWAlJ_@A<) z*+`+UNd!71{B$1kw`qG(?9Ha_17m+sklZ?j%e_oaS^2h`z$cnH^1*HVKvXKg!&nsi zlS=2dk)yBNH{{@_V#U2*bcM!a`e}xVL-^_n- zc1b(eL9ti(pBq~(U*N0e5YZVKlpXh76lqF(R$8Zk53*Chb7QZk&Y_4P%a|)(_=3!V z7jy-wq2Dz6!T$ZpHvTJ{y6yK8(j~OH&SQUDU^ny^@+a9*;s5?N2z1$W(T*-9U@e@U zezb~5!n*9omm3kpZg8V&;|n`bbsT3353p94E0O1T>}fVjf@9`KXYJN_o*N*IVSl~-toi*&?b%KesvmV92cpIJG5d6+&qi(6THXoKyo!luVMB>U=5JD z!*iHcfjDPq^dcU&d;gX5cA_AIrt_|zY$JVV?JNIh@AmERHzK_&+g{?lXf~xE4Tgl7 zK3n%D@7!?bk7-5mrA^NGzhze{X#P;^i{eYM8z7$eR}_~#d*0$U=RvSVcE8x)#P3!r zQMF`fX`QBHCthgZE;T&o6CJBM7%Vl5N!#nhCXB$x&g<~vN%3!>mZEKbaAn(vO)hAa+W}jQ$ z=WV;oFTB-yaCKu<@+2&F+b+Czk7)B(fg+M{2#G_ z-VLfCt{DpG1C6m)R=ab-AX8qi&y%6Sm%|T|g=ZXb0^$+&LvO~>1a*V{8gYqQ<0CHA zu?Ym30^4qwa&~GpE`?82_26yBVV=FrahQ75!g55KB{7j2ui3r7*WUY~h|uR8tImnR z($6{T44R2upjv!Uno_2gr-#sw{mGA|LsCd$l8#3yJyX~ytjM#W8pEZJq3Sab2>V@T zd`d|a;bONl)iaXH^)>4@6yzA5>r}!k?>8w z7EXKQ*wtVZxkMv#7VuV~=?!5wJ#yaA^x!>qLYV0qZ~9rHpej8ePj~9q!E2YK+pB?n z_^&ZNjH&TX?k=wfQSZ*j(j|fuY|JX>>a5I(CYl9=taKr-a;;jM%3=@?GW~j^&i4D9 zI)ZgS&3%LQ`vZO4qkq1YnEdLG>YZg$8G_z}{UN9MJ7#@g>8xf>ZtseH*OKtJ%(ap= z7@@9lDa8*#zi8fJlYS^aG^@zTT2@^boEqkXsK}w~$zz75S|Qu~{%5dImQ9K@?5+IZ z+ML((1IGx{T@*D2-Oc>Xl6!;J;AG*dL&=}`(eNN9!8_zEA06$f9pA7xf+t&_3c(GG zp42j0A9K7zt)se)bEKb0A;){I#;>w71H1nBSMohVy`@&vKRzhQB$zjT?mw4;qmB3(sIJ%Hwgzt0OX&4ogoij(sV{v59NEX-{Yy+sma=Q}9Qq)zuZ%U_uE4k-rL}$%)mr=j>H- zNj=;MI;3-~p%P+iUs7!C8t;nlyO}`M6@+g^h(E_R950Ur)vDFiks7NOX-3t?SJ!ZG z_%Y_(?}2lt|C||6Hd$+T?xu|&7J|(2v%Yz|NC38O^g0!)M;qRb?+4?$I0J3zpH~0r z)L)|U9VYr@hgSiZR6CE zzK^dgaa0BWo{?^UUb@kYA8!0k(|XlIhO$rtUyz&0iV=vYOj?L)GH6AgIG!!?|6*~@ zo<4=x9f^ADya^LE-A&<$gOgdztBvlHckdeJ*R@m2=q1#8C==j4uBG zhR0$W9r!ywMG=nPJiXE2lj9%zYD_SHzgF~tF4R9yy3G5VOu*f2Ge5exc=s!B%W zoZ^VOU+R^fD^#){sC?$_!?VoPEMIBFmLUyHhxe<$DkYr0jVq-V_{-@A%sX>ua5`^t zMB?aUlLo5~`vvtd1f~V$KD(>@P@%`TGz|6n4J8-@{Neg)b$ne#=`GN2a)DkIe;mgC z-TM-bn(_Wbsf&c%_yE5rlrS0ce_ zOdVEdM|G;d?su7d);eGG)%yAL?|BkkWpn3)&bZ9sZx~QqWrzJ=L1CUF;^T4Oso98ude0!28p-rC+s^1JoDn9 z$!rxjP^^&VD1Rnpn*WH0@*nAs!P$c0U&c%4TAJr~k1Iv0l5T5*G#!1SdzI7u9Mzw6 zE^}|_-fwr|Y`#Q#fZ+$57?k|2=@Nh=4F2_4{hw2dN>TD1gC&m&>_-7VsuCv?XyyW2 z_+6skdLB*8jwoLfRHjD}MCoX~Ya==zkhK*jOi=YY!D-Y+4~1Os4#~6(oTjF{fEMHh5=cQw!7f_O`_6e)Y83vs%A7C84>-W~6dt6EbJ8tnr?i zV>^giats##d14aot8oB_L0;YsQ?L0{RWNm^zjWJ@pc~M{juyX16+$ zBXZ_i;I8_wTLyzGgJvz0T>+~N=Qy>DxQH>KyY-DL(ZUzGi+3hVuV6( zyxqT?u8jGA3Y@fUVkBN3wYuoy$x-MRUZSA#uT)F;N{#L3W&*hR^dmcK;TtcJXvGnptSrJ$L(vbnmIqh`O=?Gc<)Je`JJL4Tx*siJP zCQr0pIM35dfP{f^ZB#^%fui14_>K0nLA~#9V+WV%$D5c8h_ z<3@WI&^fVp*CEyyUUMeP{_Yr=GC5~AIMa$a(U3g&$}sQu*}=cVQCI5%z69S1x3XUu{ooVU*c zRMZdeByG2E?xSXJY99}UcH!B3buj-<>9fSB30*AHWrZhjX&8|Xwn2X#qPU%KYa#6l z?!H)8J1PGDw?uG%5^fzrOH2OAKL`KN$(k75i+jMu+<0IO@O^5gVL;tt$F{a^41RdQ zk8S+0n!Q!CY|@=q?TkVysy4RhN@pEwpKmroZ@<}A_Lv%1R<)_@R=dtER;93+$$N`E z%`MK7k(K-zQ-)E~d~@b`rA^epjX_?TE4-KAPK{r<)-T)xrdM5A?+gcjonN+I z*JSAGvodI=pD2_@96EFFZ^d0wDAYqU!coPN0o=)Ba{Ud^%&&&@K{F7Dn>F99}9VY z^~|E2rOcvRfhqvOyP75ihjF-z{y{1nwSQk;ADAIFyzPsylYh4DdP6ZRe`TH~2bmek z*8VCPe6iSUg#M#tU(8;oC-`v}7q3wn(71(m2_hJ$FJ21Yayz%)v~RnmL+`vt@}=eb z+whn*9uJK@*aQvMUM&>gxS9mrLARtRnaLBC2vtb=s*YtUOVzclv+R(5D5=)x0MM;z zd_f9Zf!+K0md|B-3AdbUgP!~LaBlYxvzc)cC53 z*blw8A9^XFcbj3y1;1)ERZ^AC;Tq2KE2Oe^|6bpz@&&rK4%FA|S{Qc#m{qTT4s0A*+=tQ&zrZOJbrRfLvGU-BVuO+@paAHWvg{Zus3~C z6gwgHAVvKz7~kgY6RRgzHiVkKm>4T+-fpQRcT>SV-T3n83@W{fN*gW{It89Ow@}ya z8MXKfNOa=$JxKK3Hb}IJ=DfZ4A?B5j+{bKTwn{1sE@|&tPyV+)D3rqK70ym1u_{q%H+Jl> z^zU8c+BACldJ?xEOfRBI*LV;MX!P$5{Vx4GuFo#avv~qQRH$9b@tE>MCNW|ZI1lS}o%}@mVPq{`QIWX7&pnx#p z;8g9mpYIrIGWR&Kp|;gz21dW|yg_|Th+ZbYiy|5(F5Fq*{W%1|>evN7((*_J(jW;R^-nSJ6(>N>fp)9 zF7Nz>Z=v#(t4R3fBW-NP6_+xC*r4ryw;xsJMiz#OBJ|8*UR?~7Cv%%mm6#zrG2qv! z2z{`P)I_1^SEInH7Ko*6oybPMcOS0V-N`3ShN-}#YAvwiqi|l6c98=_;2^b7Xm5}2 zh>FZ+zOTH_jPL2dV<$>t`}8(kFWI%>`+ganqZY#uN_0_0)ce(~B4_)U?*bp+DFyIH z0U7m<{fi2iS>C5Qh{)Fsx7j;?B%4=ifH4s-f7bdmlwhuQ?~ZaZvTRN7itKhEIQ#Ic z>S-? z4{lS4q|xaxbrD{OrJOGwyy^(qkJ%b1lM3T&HWXdsU+7{H8j8mPW9{?+XsUP~BAePaB|3V+rnXuyv5Z zESY~=sYH==I)Q#H*qTCg9Q@VOv2n^8nm@>YPZ-8V<&QgXn&?ecSu{>-hs}v$zTH?O zrs_+8`1jWl*$OuT?5g5n>3!ShU-N#KpAJfa{di83g`amZwhPz)vCBK?Y7M12Ty_d0 zyBLYJT|mPgf_Nm8FE@|gnGp@>#+KoL%Nc=7ty0b9@d!=dY9W-rc>^<`p*t={U*n9t~0DC*4VDDOl@C@vE zKlx53(o%0^IE>Pi)9t^xmXyaI7KwJStm~hRt6WElHq_BOA_ydU=i0(!8XP0sJytF} zYj}@#HM`jt6p5%63r@8*;7B{JKsaa@D>VN~112*^8i)84i z(h+WcU(gHAQv_$LLi~U}s-~rhLa#r(GtKB27~|y*&Lx)t=Tm>{3(lF)xXub<(@y3R+3#-gJ^yu=LWG4CSBVbn7Mxdke3m5W`onO?bn z8Hi@T2Vgxn4<_NwRh9}M7zPBs6TBM&@5-Iq?Yuutt9|{De@_{Bod~p7e@3eL!#uI0 zw#UuB6;1kA2)e+YVcs~`*&R<*!Nk3-0!9n zM}%7*LY8i4|-MEy=hYzIX+xyACjJ`omo_JH_S7K zC*JAjX&(965@8xfw#m?!INiPDZ`W)Jvei^6iA5Br$$5Kga$vRf(_FOW`MDn5y;~ng zD?TC_ntZ9t#$#ZE4bR~6bGRJ;*S_XnR#1JgSP$K54;`3Tw;yhb` z&>*Hhu!`M{#T8gif?XT-<_v?A$2WvIzhH7~|Fn{XTGKDw`UD>}f7fZ^kMNsApOT@U zcYqt=)jR&&K5?^!m_2W(qWr+kMzssGDbO{UyJ~{Z6#ZTNy}C^GV=g&D`p4*0Uw!YF z@1xewVgl<4`mTn&7cHW|?FNKP8uzhT0Nc>4=-ObIAwMA=p??V^A3s7#{Q8_--9}-< zNx1bb3J5R0n=KLg;}D%+?dQ&cRn~iZrQketbAjrDHPni@)RMO!8UU+(U0mFCui_}@ zOy)3+eOn!q!#;uW)MBjr&DFy()=Ac>Y+J!8PbSn{a6jwK=`Y)c>Hd!<;W&qJEciiYsLthj?>GMO2j zD--u8jM~$`AML*NS|)tp{2y$Mj13p|tROqAZ$1z*iyp?R&M8iBa)K1e(MW6H@2SpS z(YaS}BNXYYkzLBpu*_eF=eeL^qIz!V$1a9Z!fKO%;k3A_>=g)k^{ku;&Yk(Rc#&Kv$Owf)8JgD!3AuWbJdR4AT_G)C06(8MCPmrDy5CVwBhWZ z)UP$G(N(U}WJ0S0*Pb`()TR(`=pn9*h`GA8&hTYi%@W^ z{vFKH%C46=VPocQ9NSd9Z$;CWBO3lznVdlSvq)BD+1hFOBRdEo_tvjc?SEv7r=}oq zRkdx9{Jxa$+r<+z1X~l9y2D1j&r7~xxl^c4NopP*>b}+=TmQbx`d2F1329vaKpm?+ z(uiyoqzGYGGqZ1_6XN8^J<0stDjFvgrZ4Ec3%>@Y&SVcTocv}B-p=wj{nwh+vVlQq zDjgBq*B`*NI&jkZ(OKR-FA8rG(!f%w_vj6>^P)&7(;xEp`tVK0@`)5fIe&WGkS_L_ zjA)qd?1v&4tcz5BNmX)ec2(K(hH+6g$|#8rab$>vsv4A7P!aKDo$rZWRJ|%RX~&(@ z7*TK+gM^^Fj)+5}pP#JjK|lXk38V-QzEDq`2JhW*1Km$)<7UEyGREB7XGG@srq*PL z<2HWRGJf=4@s*5UksxL`rH>?Ym(ql>1Mi8G-6o@B)2d1-{NcU>K0z?}Ooxs83Jjf6 zC2>V+X8h{oZJH{*hT%ORydBXM zS2MSXMcI!9dIO(wEOD_Duac+$-f=I8!~*W`&LfK^9Zw{046y)y0yf(hC`@&A1oX9S zmm5xYg8?I-qb6iiVO0i}4!b=UwJG%4Psru7`yWvzH^&wU?k)CizQH+iL+TZ~^&g}A z6Ev89r{y~X91g$S8Ju*LaR9om7eI926lS?YK5}4z!l;_8R;Cn;@a z1km3GXu+YP-lVq;_!|Sjf)?2sx36+qgba-FGPU(MYq!z6sLD}~QD0&b%Y9`XW$NPPKd`TewWzMOh>u#YhO+)F z_Q|<Q1-%*iAxC6Rr(XJtW9UC7C=gC+`HR!~!%{cJB3hxD zVkTBI#q7!yskY}n87KDSMCTkfmn-wlH0WNvP#=Lvo_XM~Ebr5sgnBb< zN^~yXO{j+&?9|IVU;pLC+ie0}Csyew!3rI#PN);6bUp3K-t$rzn+f=|UXhWPf?yi6 zI6t)8HJZ5Bee^@kwlu8J*#ho8?R(n!^SJvYVH1?a_~GqNTX4KUW-z9t;m@p}(|||E zu51+wO0^o&efO=_PQPqbq9RWcJBzyCx`@}R1QpdLA8e)}9f&o@?{ClxJE@3L(aN%D zq=5h~^xYZLY+m&-s1rLkZ@gQ^2b>vwuz?QK%c%;&r5y$G#F?v{nR>3MSfUnh#_ zt}v{-uHY3=F$O6rDb%wYhiJM_CXz9=T`Qw z(mfL)hx~zQa-f{f$Cf#SBRugBMKkDu@dvfm5sb8SB(yB|>xn@yLN*MQqOf{n$p!%V z$~x7Hn#4K03LkRjz1GuYXzP3+Kf)ld(gG_&o|2P>oO0cST<49+1f0G!_N3xn`vN@8 z6};j@GdVyi-_7hDvO06hEt2LfJHQ9iv4Pq9e5AUm{Q zj#*#?!xCs}3(Ii$M+g z{dd3wGB*GT7{VVMFdR-jx8TnZHHb428bbMXyCF-i2>C zIlNXZb)i)bQUuW=)#4*ZTNEP7+MuejL?h#tN@TczC9_IVfv>wQys6(HQ?r>^Y2}ER zN&SM`%6NyMuPR#;PA=ecR=xtbGBz^K-K@<)b2G@VGGIjpYFNv8jl@xXp~HahwyP~5 zJ_rBV>kjf7L9SxK@Cs-Ld_Zf;9Z_ACaJ6KBe?H(_P$MTrZ#uPYOX^C@l4OAzxq&_i z{&Tsv`RR@R+gs3gFmAy(^&Y=oLr+@u0rqa#iC38d~z(cR+6c;hKUczzgS$r61ERjtt zq$*Iwrlt+>!-Trhz|(mA=@{UT*4(EsUCD4X?#TAnmnuoE-3Is)Z$*WMLcN4Y=;i6K zg*8jt`5Z98X9Rpk+fmMyy|-<7IpY*NH&nxPC;8Qa)l+iv0 zNbA!gw?0|$WAlgW)IZiIjfU1IT{G6D4twqRJRE3$@uQh!WpEauo98syd-D4Q8_925 z$P>;YjV7D*OS7>Ern!fgJzs>yon(fMyt10AF{}Ml790;Q*`uMG;z-oU6S&lko8t{y;XF*)%*TQ8VIDcWT@j3w67!-;C=tT zH@iB=Mv2*g>`S^G^uZ=v9{FG;?sXN1;(ToW;TIsgB%8Lq+wRv&D1t)0e9Bm*5D?KX zXbWeOjfbl0Fc|&N0ScJR>kn!3N{#Rf-U?5Q$G-35wd!L5Ainh5K4GQSXSik3l=ScU z$FnxfY5p;x@W0?6T2bI1(8E;L5bz8q@m+tlhzvUs8&=9Ru|*idy}Wt%IAQ}C=2awsY2P z>kN6zi9ARj*K&{1^UK7AguFFIi9$lp&3xXi-^yeH#vfBl|NZ>m>gNCJg1h;{b_1Uy zespF2+ck0bBD*z*WJZ?f_6*8DXKb4CFS*cBKKX~H+^y8j7?N?Ji~lliAPI`~mMho; z0xZyw6iJ=HHNPQtqUMNSPL>!PSQRv5@{_sc+N7KD7C0vubi=kOrwGo{jyND>e0#p?Qy@+fBTdVF0Q|)uIogiQ7E8+_O~|FcWTP^xpZD(M#s% z4U-Tp(GK`asbs_^f=magl4Ndt7j*>Dj^-?%B|+_Pz!k|Uwj+b zhS*r1a=l|j-J>4-@L;?|9qLx8xA+RS3@R|#QW?=GYr5R~$T8jBVR$Q%lKuPI?B8d(<9R848ax{?z-#Xw~TJGXB(PUb&EGGAwO9_z=J> zJnKE23KtF%1tw!R^%W%^&p ztq*;S$*V{VX@}%s8im=nkoiQg<4gODQ(?Sugd~VhI1h|>#@?)YPX$aN<0=um-P|TO z=e&^dJoqX5VGW{xNNu~uS6j(6%P4e~K91ZmH38Syu&v(ULFi2g8L zECh>HblG0{o(nNO6|p@W}!3=^=H<%|I!sLcBV-Mz5KfYC-SyNfpz#!|t6iP#xU09m{b&iH(2q4;x6hVKTIV zQ^<%PIml07$GE}NYz+>#jKGu?G*n4`zC?M;-1BMTHMry2;l>?zo#oCSy{}GtsTC*7 zd~9SJw!8t+L}=_9G1S~~x&Z0|Jq5&tT>a&4o(+J{3<4WMU?ud4zj>wR0tyXcrukQI4#ArU*aeWh-YDwO3Usv#Nx8pu*-2CO+ZS1d2N?`%+?Z&0^&6F;O>(9 z2>`H=I&bMIP`5TqvPLRnN09>B)@wxb^_3P62^wUrXnpCK$b_n_Xn5RmqL$a*JNjAu zi-sqzuyNl?d-lUwt&rJ8ABq$vdU^^|%4!Pswh$8`bZ+A#ui#`rNakK$bflr!z6a&b z!snA?vT%0}=#k}F?F3sCo;gI{H|F|)dc(6E4=qjo7O_$zTC2fpr&NF$5@$4OAtnaN zBBasXIu8?HaF#v#TP;dz?0Vh!zpa_CfLin5613p^wO|l6?O^iDYF4{52{?Z7+H8MkBl2 zR`Jef=~yy!(O(X8@dukNA})WiYcXCv$m(Q?o$Edock(3$_r!Z?q>yB0rYJyc`bc2g z2Tj70;Lr!a;ri;`%?I8!3*OcdkTHv2ljIOg3X__+31$Y|$T#CBc47a^y1r;Vm?goi z=`~vtp%+)$>|3Qv&``$g%WUJnY9SdK`)ymSAAgI*`q%HXMib2C9<}Mw!#uL}d-R*m z{y?bE?WfhxBHvg2MXvraIb^Zi6u3As>;9ymdPmb}wx&8(iY~glK zsFam=u6=*)T&Lkp=7-pUCV|p!sbM3J6YZLdu#SltYo{x)##@|pYp0sl#Mx?BSGCz^ zjhVV8wK54LEqwwpnrOEbFwwq1tRXco^XWIKl`jprwWG-?||dHub?e| z(owb!_XFpPI6($owvaEh+Ciu51W5Brp$vQa3MFzSNacpBbm%F8Y&i{o6;HE<>2C)B zuuBJt@#$%77tP_;E9;QQkgU*v?Wo@`?;CQ|9l_tZKr?@VYVe;_m7!GmzP!2SWJuK1 zN4wA#s_R&4q`ySVHeFK*w1FAp@%=D<{^dfMG2BwAGi~GL$No)B3R&yqI(CF5&#W_h z#T)2vJLKwCK2&(~Hqt1tyj{~p3Z;J0)#HxNQ3s;Q6ON9TfBd22&dKt(h@p$Nop7|U zng1#`-Wx|!M_fuOswnQD7?g|8hoNEr9S3!40BxXj)}!SDCO^qhNBW^RZ14I01sMRZ zK3Tj08Hf{kxyH+E z!QWnOlnXa9N`{P#!oirJ^yWOZoq~Ijl9Rn%J!+4A)A`T0nrwOnGu06kc@{Su}a0 z{cQQH0h5_5&l_8u?UM9hsszp4L@1X|co+)NbTuDj4lju&W3mUwic8g0b~OI1MmVcs ztT(Y>@jxJnNhrTbFBKs*le^@v9Wlt~>17WC9c{mJjkbNPwYG*B&f50GlTCbs zl7q7Mq*4D+uos?`J!WpwomGWd%>VGLEJ+235L_uBfm>~y%yhQKazGa>|oQ{YV+ zkU9M7Hv5bJFZrvl{YL-Uv#lDv^wK<`KTGp}>OUL*pVHUAC9NVOEyZu$_-}|y8_BFiKje?2F*q~VLNk_1Im@C|HqCGL4v&MuOms(fxO z86;VF{un>Qy5|4WCOz#fup?3hVAnKYJiBvI#)C2hWQxq3)7dU~a=i0*^*ft7zGt5@ zy65Nb{i*98%f?jn4aOj^sr=19Lh0=dBx-|4W6=2FjPtX+qW zdSC(fNLS6P^~1a8AoU~NkoB!~m!NN>zrJtkr_tBBj2$b+RQf^RicD0WsgCCUi;)%f z^VG`%;%{(04%Kfck(3%qsb5&O_V$@bi5WN&HB`1nAQjQ~AfN2V**-{}i3|kGKeEj! zAFIUVnm?RFpX48D(lzN{(;~EQY(Q)gQV?_*6MutXO}m}44R&iDM(8~72IZ z>%FxENJ#!!Aowf|T#NRv;PhqA+R|Maai*qZ=tqB({quilfDhVLN&?eQ-}QND5EGbb zVop$FlMkc1##jLjzI-y84o-XEssl^VU?5enYtUGGq) zhhUZ3)$v$?mSbzM0AVnp_)I&v?B7|Cup^PNh~JP%lPCoeY19=Gu`3en9D7cfrCq_E zUD@H|UpoL!dg~JIt0=$7o-el3H!I`Mtm8F_R6_RDkHATWo;?D6@DEe8xb4101B1Ha zs))8V>l2;6wajIVOPW_$Su|Ff+uTXb-mf2WIW*Q#x@QgzZV4LDtlR1xf0zhI`hj14 z!XQ!#jXT~^!-#s$ag^2&kiWaX|6KAK-&_8Sen9O@@oLrk{qv5<)OBk>prCdww0jpO zCbd#1k>0FwmGSE$tn6rUUuB(ut7}puUcQ?_lFPF(Z(Xcs(a!xVEj8sf^K!FGY1A;@ zcn9q-y3=kMFsoHPtKrgaXKsni6}~MrjlH%9R1W$VXEmStBJSC0?Q{=ZOf||h#9u4-=~r0l_H(q^x3B}F!oIaT=3X31Bhlo~^c6vS*Xk{Cg?}M?D92${Z<;ww+fRFTe3^ zkVO7l)ZU2^WpSJyv7m#`y-Gt68DYss8l;aHCPsy{tvcY#5%_YnPc(QFzU;f-siXT` zNL>H^>H0^9rb>&@KVYtv{h@h>bm&>3rMeJENIw4+(X!WO?ayAHetF}Q(a$TIzR12d z#jj88*E?+gDT<*<7-v;bfT~jWBUOpe%op)9Byw-iMaW z=a;RYX~%DXhKp%r4Avw*@BHmM z!P-sXsSDk30~zp0xBxP$U>jExyOLuErSt226uvPboE-KM=`Ev&eHC5)6*~?;j%H&X zs|FAv780c-?a$#D5jrC|cmDu#CmZ#=^Toe|MIXEIZ*bZ81J>v|a(wCX*t@+7>x6_v z4Wz$DnDAvS{I3tgf7?NFZ}=svvBs1JMj$96e4`GwuR82^1e~6F*z(HdUz}KVz}jf` z_GofOcC_p(19?cVb|s^}JnPu-(f)y$vu2@_5&V zrFLl9GwOqruQxwxlO^BaasUFGSVmFjE#Un1%h*LdP#uAO`hw9r3k-XE@vmK+C}XzU zy5a5jdEe70)vS5n7yXs(n0Bdn^1qtqsn@LkM>y9DCypBg0ScW&2N? zw&z^CchmOWVndSCK8`efHTc?`_=-O_ZQphJ9|BbRltGGNPB>p`NiQ;{!ZvuCcP9}_ zy(z;{Nwi!-Qux+SC0Ug#OH%mOEA`(ul19td3YE9c7lz{7E}4BI|1XLi$^VOE`yzkv zEZjOT#M@+O$Q9sHr)Y^=cKm^xJ^h>LncRpTUWk@U9+`aUkNix!4Y!`=YS{Hy z$^nYiFmO6IxWDz0+}~{FPlmkj@o<1&;%DFQuJ(64n>{&N{##uS?}q>7;LF2xR%xOC zk{*39~doHo+E>z>_%Q{@4b3D<`>-Lxsva3 zi5-*{(CDAxv~?PDg`z)QlrEYK-Phffa*3?rTUYRPw7i7hvrnTA^uuWRaNW`NQCzL< z$CgpY5Wns1<=lWfL8-t2D^XL+L(#OLd#;%q2Wq(vp`Lwow0tDjSfTlk?HL>EnK2YT z<|PUfx?*3(x~nNaR$uHJb#S&m>`I3kDD4I)8T#w$^rz+X)Q;_+ik9E5-@tzxSA%X; zChlJ6c;Ntd{~MH;e=ZLL_{W}?zA3-cuj`JW^OWh2@Dq4r=D+ zw8`8UwKM+r>wCVNAAI-adfo;T{wP;L zsrzv282*FF_ur?+e7{eJXVA*eReC7=$Lb5W?%~RRIwk`L=PpfyQ~oLMHHt6jyB_mX zZ~Vj($MCd=9l;Ex>=a>6*cRls3=4oWG93 z!MK0IA%OvR`64Ls@SZfdpWoYmd_jqQ9EQJCozT#ZpyaNbc^Obh0~ykMwpIQWC1U$U z%e!<9X^9YZK2VW?mIrU3xD7T-fb1_zoN_${ibc5=KbCUcp=;8=qAZIC%3Y*U#IdH$ z2}z4~QGVC75_^tC*`dTH^S6zVSw&%lL@PD%l@?`-_jnur?MwB6s|sxhJ&4lBHgDhh z$PXXlK#1h1cg{nJE!!GyeOwy;Nh2*GL@<;=t7QbUHPN2mqwRk$B zueQP_#?nj>G;%u4xR^-iU1h83-=K^+E!K(zjv9O!O#;Jh;K%23F7m_tVtYo-z-^j} z!vY_$_g{Kpa@3#CrR!`7o5R;x4F~C``jbVpA=uPY2H4`j^w@qUG4gmHDnd{`xgYRD z6*_c=@90p?bif*2R@|ho5r^s!T-~lFZxS3==^R=MR0pC?X~y?0v;7Ym1&Y4z*Kn0f zNh7_U&@jks#51@KlewGPN%$i^Ec^3ji}FTBA*GRW8Y*I8k504zUiPj#*xJRI z24)xXnL@=8b6<`oeClgnsUbvP4IJe3H2k!4L3-Ec30mJjDe%X#9IBtS&DZ5=a8aO> z`Je8tfnDEFsZN*bB*2ETWWZfSy;%)q5(n!~O-4Cs@QVwtJ-o7c+i!UuJK&Oberh?6 z?Y+v4YPNZ`f1=t{QBXy=MGT84$2NZ@@{LW^>kM4wI9$aJ)$@8CYUtMY%D#^_JPHzM z`v+Dy0^9Be6mB=Hz1VIS=ob09#^i(4X-G?;{`V`C0&0Ho7T$U%?~m=60j!q3CPU`l zZ*ktpkV=_=*j8&s#xbv4Z1w}Q8b+}i=2&zTql1X=g$N)q96AGIz6ztFsM%hpMKwH^NWPvsp2x8Y@=*tiPyhexw~^w}7%K zv)98(6@jl*7>73@eUPJ*hcgY9(I55(>UO1#B^IHas zLO@qafYItFlL%nH#YN&B8npVGmv?RzQ;x#V9ZSH!MY9^qh-!u%$?6_D=}o#&;VRos zQU&Wmy;Wx88Rwp*3Y@&Dc>9Y^pl*hoGdbT+7`f%%7@Gl@2sCQ6< z5oz0*SO`);|&{DnGtR&L6Cauvur$jh9cbZ`i+n zt2hn*T}v(5yjpi&7!Xri^*j(y+Jp7sO`g*KpARxNLjQH&cmJWcKKpM_W%j?iXaDz6 z|Ht?2|F|Cgul4(Hc%c75ODES@|CyS0Bve#ex->e^6b6$m!0(H)Rmw2a4sUBL^Xol|p36Cz&`=wj|kZ9+x?Z><%sa zgIPNi+4pqYE(Tlhb!_^Xd__h32NiiIEl>^iep(TWi5&qXHIjIoVcFrirpK`;4nsf2 z8MwcgKGw_r@@JCKgWxx|g**N|ftF32sy2s;W_gKs)3>NUnLqm}aEROi$JREGWN1#g zFULib@Nr-2_{w{uP|43QXo}xsnhAX{1JBI?V;zvC+SL*-pR`(ZX&x)eb$hI$UV#E1 z6yzWJ-fv+F7!PW()zqbJHGSO$AS2Ht`g_N5+8YR(_^IHv6~@8)SvBw;V5rZ8_t4(( z9w&IO9wT@ilLOudR{?K(p8#J<421*u{+BZWmhmLMZNLrRJqhz#*7)S4=Q-be`@Ylr zRm7JURl$@ihG&h(va-wgy_%y-=&7D*4YoBzgfg$6RLB4PU-;WN%-l-)|k>^ zA#VCLlV-5tkidb`e4jMYIO&r z(bX3WeM8pwQw2znZVvHrjh8!=eqh+&$FIA0-}-9Hk}ZaALTQpr>#ZFuzp|gEqA*{} z{Cpb~uVg-F9Vh4two;jq;O8(8p--^Fy#r0`!3?IiDoCv88uuew1 zUe#!Q{*DGL{ukQ&s)`kwlRbx_7WCKnnKR}M{tt|;=l`JC%lyxcz1Z2Gk7Ylm@BtJa z_uVclnzEvQvZ8PE-b(*oI$A`m6%H+~X=14uMOAW4UR81e7Hs5o?4Ko)#2cM2M=XT& z4se88u?6^}FP8CKxE|FKjO)jPGRAfMo*Cm>g9>AXv(klM%q(1xS$MZQH3{L0+O5fU zQKE6n-n?eKG?XUj!eQTW?&PR%|Ks2+@2pZ6-0EIW#Gn6@<*+_^_6D?fhP>;v=|Tjz zO{bVelcY*q{vLZiSW-ag5T2YcBwjwvzCrpkBp*AZ6HY%Fg>Z_(F4#Z$82rK~R5p83zuG?-% zTIa>{fh(Cm^KmUH{?0>ic(-2D9nOGSig}dZE^s2f7C!cYPL9ES$nw>DcC!aDN3@sM z%M~_`7bV`LciyoGLB>u+fDNr?W^s{Fs`)^f)KM9spC*7f`9n4<Z#sOJ2?pcb&)E zWV!uxW|npB?g1Gyt23;bg+tcMzDqs!Gc^`TtC&wuf=;SCr2!*IcT$ZVW1ZB@CdnCD zUoD{%}(^h!#MqJ4>FK@}~vh z##c6J{2Mj?jdT2DUnZ3$bJrXXc&5}4N6-0D3q=60F@L;M790g(g!zPpN zw73WNYG;@zwA5DOvvTbFTC<=r;LNm9ztjb~td->tVwW+FmZ0l(5=d*k;T#n%yhEMK zp-xqZx1W)W7>P#9KAw5Euv@J{7%(DQj5+R(6*>g*bHWGF4;vcrgt>({fUVb^k%{#} z`BRwGbC|H+ZJYh^3qQ?m>H-@zH$Pu=^AkX)0y5)caHAHwV@v3gPKbxPdony;nw4*=MwhLPrW$YdN{w?K0hsXO-kAWLd@zI6tFDY)d}ZvY zw0}I$&*0aXQ+4r`mxfzE28q-$I93-cL;w7fa2nsi5u%$6$%W56OmL&r6qjeiHr^+Oc3p^DmnsR_3yAr#rDvA^6G79Y)B>^adqs=k4Kbx;*~ zGu-=m{(HEUERxC4(gUeO3_~LuwUZ<{CDf~WSJ_)_H773VU(fmr)p^>08(*E{4YmLX zAvnIW-a;8&J86k&w@0)Pp{986-twk)Xfz`0|H|qa7+p@b z+a|8J%cjifn%cAPN$SQw*2nnIFK(i(j5z&T!iWzwi}5gCIGjd$1X52s(go;`ITGQy zVS-O4zNHyieGZ>>n|I;AvVWc7;;TV}Ux1;5;9T>Ppta)J&=EN^YOo+>iZQ!Pg|c7F zIKh_Pbp5ET7#7UX>+H5=^XwbCVBt1+^#R~ASgs$&xqHO_M1^-|VmC6^5x-|J`vFEf ze}A+#aOtfyLQ=x9<1fFWD=eyv`BdP7ei(SLVgWMbPBjuIV#qKB=%DyzZ*)O8m9{ZI1wGte%Nc3WgDlRS$Wt-(#J&)dpU|IUU|T#s_ZrF_+zI)ht4rT zGI3Fk-nN@J8BZ=^7vTUYWVdvN(;{ODxF|JQSWxLVG)ZivcO#6o-6p7a=I{Nkr;c(_ zU)>#*{i4bF2d~A~jr~H-Ciw@qsn1FOie#Rn=frec_=a@t1D30UxsO`U3LoRraI8j; zStb#}Ne^#I4ko7USo**+*ZP167$Swus1St9O0r{@@Z371?5=QYrIlbyp0!s|#CGUTxIp%ga6zP0^~6|#lD>9f2k8CPs4iBL`FD!5b>{1X;uy(orU^}kKgG^J;H;)K;8V6^Is~u zg5@Lk)59G&&AN}zZp?~RWx|p+YzNA*OX<@wE+2>RMs1R*?hODGhWLe@?`Pc+_yD9sCDJ+vw!(wt}1nZLB~tZeIN} z*$R7oC#Cw6ot`E_D~)p$zG#o*Y>J<|N?c6|$-kfHtA}R(I2TPLwCp~H=dM;&HCYTnL8Hk3XI^kgffN)9y_?txn&=_P50H&@{L-G-!9eB-KVNj`BdxRL_J@IP5 zr8qk-P{_oe{QPC+3GF+7Sz5|_ytqkV`Gy1pr4ya#Rf~K&vcnyyL#Fd5CLLK3o`KV`>Nw*(SmgxJT1AvIk`7K)bT{32B~t7mTRlUh9o#`;$* z;UV&U!+w>`$PiimvS#J2syHq?`1)DiGG%gSX>}>wU6;03pHn%MflCoIybB)I#*O@4 z^{TA!(;Jwi7!8b4OprwWNzYVo)E%0oG0aQ66X zz^kgR_y2&o5QdPTfI$=kULYVK2xtOEBW1WifPf$fts-S|0#t$s)&c<}gkY4QfmdFTbdXw9W!+|kfF&H6FOWX(|Nu~uavU-;`1;_R!dMCVR&o7K{2#A zD^>7P&L%VVE`7+>cTDYf=yk__XQMxR>4iRjcEaZ?C-;oY?`uHPPkw%O-G9=4J-Yu} z_G^#VnFdUV{aY&9u*HJo*zoDs92++CZ1}_e*Re;O{a%0d->~1yKWsm7y%!P865x8* z+Z*MJlNokdSEYi!&e==~e&_Hz`Akt$?_ccm0mE1a3?T6zSbt1;z1T5i=R0HH z?&2*7CIe!Xwqx9q_jpZHRwGAFn0f@W0aK4uoAB<`BbbqzdL((m>zH~t_PU!tV|M)w zv?;dyI|*+YNuTf!p8Y=0-XXtFp1?YqZOF$!K9w#gZT)Kc8so^uN2CaHHNmif)TXFbX2zQmki>Gq+)n>aKSDHjzhYtKEB(I9&k`RlfP4gh=P90|Byi>c+BI4PxeP7?m6;cpuL zX5eoIwxf~k{l`ZFoHIJx#|Bw{piw8%YKeH{ziVug_f zj|}HN1hTRU7d_KtH!N11eJc)|`Z8_rJp5sLzKr{rCQdX^{rK7y=m*Df#)rfU(-3&D z(HlnK(&(=Ikj@Ws*nHGd6~+ZS^6nO7!6l9O5b3LrQfp*V90n}R8!XH2kVBzpma{6b z5&V{|UMTw(@iSsV$%By0jWaW5mn@KJG6E#xI7GmgcW{Y8q{%s;-ce z;_dr2?Ys9wQRpnckR%GZ!wO-=3bHpo=-D?ZHLfm)aalHxsF=T+6Ya%ySKWtRpP^N&f^SWGk(zx!jytE>`A5aI z-`XT$-7#SJIAK{GguAjxdt5!`P+6p{{aBE__W@b}YxyI!ajZl_OI3U_&v1Gj`v*gL zSr)+Ij~rZIn!yp=i#sqAEkwd)C&Ts3ukv9lId= zoBN$s-*#r4qzx#V9Z;N_odik60ZF^gQT6DPh<~o69qr;Iy@sN>-AYP?q+bOj-C-qZ zorY7AjbB&C*J>zh^(!kY0$JalroQCq*VW3RcNS#Vb8A)DBd%7HQ8b7DrutQZq^AOs zj@l7fZN4q{IhOj@F$|o0SBd>7niW=3RY>}6K+@AzlE#nelw|d5Tr;j#r=VzlYh@v& zj+`2hHPXt`&VQa;t3M5lle8Q~Q{PIe21$RZU(r$xtR%J6zI&-3`dsq5Zj^-dU0oaf zq2EHc&qeOXx7xq%-N|l|-5y^$=bGDa%sedlvfV*sfi0{=d%%}4bEv(fJ?d0H4ZWna zmEVmwCK(Djh`@%*6DqMYIftdUbsyhof;zgP~sg^wE4w=bPookQoe? zsG98@HQS-4=Yn9KVor@{tG(q`kx4bLlxNM{oTERA=1SBIYPMrDo ze9bOo&H8H1V(~S*o;4d_Yj(C*GjjbkW7+J(@&Z%U)~rNp)+W*RMoj%iit4~zRcxiy zx!$|mafz0haSeF}isl6_hrq-8_?^#OUk|kJzh2i|O?IaUk;Wv}Uon==C9K%khHA3e zTCsDSik$<%m#3g&*FhSsr4_r-t=N1lE%Qa=87P`Ys2J>i4!wRAe$3iYF#FFr<}52o zz5eUF92GCD8Yk%-6wQ068-#4LLaayZ7|GfFf&AC_M!QjukbuGUNNr%V>1kn|DB;GnaY|oXeL*?3Ac#Fk%w^_z8`A&=einf zxR_h9xv}IK6ir7qFTFb~IB9 ztaJrj5icN*0_LlLeJ5)}*c!~FfP1Wfajt;Y@dD1I09oIF_!Tc8mjVV^0j)&R91n72yb&PXSxG(4aWdEMCBY{t)ms@<4`$ zrLKT}@d7$iK(PwgT|3SS&r`siR=`!RfP{Df2QPwvTov$WyntINpq~|x;R-m0U-&%X z00q=g0VCoCbfth)E8w&Fv;mWVu_6FTz}%=bSYh&jJK)I}5XU`1avtT~`!-FIeF2U; zrS(4k(H^h&C%IBJ#>aLy$Mw@Fisl?}MNDOOkcULYUvoigZuC5Jt`(%A<0My5 z@AyRZLME!a-?D;EqM*U?g7!qUM%1hz`-M9lhncxTYlP82-Z4!?5&iRCM-*o+Bgt{1 zn19@BrRlBHwXU?6Z;#V&HHxOMBP&8#8&c^+u73TkAic*u%M~;F0mRuN5o0%zW;ju9uo~in>9bd*&{li4c(e7CylKM>*?`_jB{yH{{$T_uShZsk12cO`IuXa+w$@lMgZH!(ivb z7<@q6cI&I7bUc$oaXI*l|M9CQuh*~mTYi;izrq0CN_@ouJWAtN!|Yca?-Ri|#z#Z( zKTMUZ;~j@HO1J7ysQ!T};iGh{g)>Sw7bkL*Zp006(&EVdCu2wJ?KQ+|BJ1yg5)_QUt=0H%xk{UYD@XH3HPj3g%Nem~jw{YOc5nY&5U z@8SOlQnD;S>Ka)#7pmaF>g-4GfkXM@%|gtro9FPjM?v;eaxztZ$8qh~>Dm){${ljb z965#K3v2O>jxVg>IsJLgbvTD+8KY+Dn`iZb9o}Ldd);uyESn?=x)o z#;Lo@S@7TW)_>6x1|4E{kcyR~@77 zc>AmG>{kgGJHUA!D$o83U6!|XPM59xLKDWHPA7$TS{m#{o{y$|55b9@cEwofw5Aq1 z?O93MY2_4eT)o#^x?{yoJFhU%X-~pB4Y=t9d}F@F%)2@H6m_j(a4i`G|EOv+?@*pUSIFsN87krk!l3bMzz5;h!&lkg0Rrk6^Hx)NmUdzF=tBodms5)$G^W)G&|DpgG- zd|buRf>?8-m7rRDGKY3ZL*J?;THvb3#X5zNKhB1w)8z^u`Rbpj&%K<6FV0?!<8qFf zg9GN#+6)H|h!lo{1^gMznmrdE%xIi~d5%cm#u7wd!qtcW#RbuII9QPVYgfXv&b4YO zuT@QC@;_4V3J54luF5}!$>Y&?3$mNLKN*9vK(D|D^Cc$IO)~1m_%c}I%NM=8_;LfY ztz>L3tYP=JHdDcLdh%|(>qEol=h*8P-xp+WDx`t1PKJ+K71sUNET9+`zs3hSXdV{B zL>jDXmcXfJbHj(2TDYwX1bL~=HS*WqSQ<%*DRFHk4Q^82F)4yi0e^td#OygQwv6#C0 zbqHWihH+auTBR|zMCMQeBTzy1SF@-q1K&6QhzmNOp=kcfI$)DD{EmSy26fVzu|)7& zvtx(~(h;1cuAs|5jT6)tMN_PTs`v!8MHKln&1OohAPs|8Qc#J+p!*FaNeqHEk@Oj8 zjdYDc)A5x#6;u9boFp7)42qd5JWymOpr^ew3_5NyZ6C!=+EbEl~&h+aHPJ&~B#5SxqHoLEp<&=1;fse?^8=QvVXR?5) zXId<)bE>TJuYv2|I-JVeJub*d!>oL|Z>f*m|14%z-DOPIItv$k>oX=|3H^!cmmR2I zH?3dP)(=&ZI!gWU%B-xOY57TJ+MpfBN{&}Gb5eZ0CRC`GvsOUXr~Im7{rLV!JonND z`@3cJ;>NK>cp*&IlvIo#7aqU@BohJqxairB_)SuNpTi3K%M~_RHS+u8m6as*EQ;04 z>QytpbINLNppcW0*()`_L(1x2wKHS2`D&dQTBlc9KAy9WrR(?U`E^lfl-a8h+`lM> zr*C^@;1(T^TyTkl%4a!@ZrA6Gt*AegJtefAGkFOF}!n-r@ zByCYYv=rPd>yotm8bv)$&+2tL-XsA-y{b>YR&*fze(1w~W65%Ge@&%*@E(SW{)75q ztPYzI6_pF=J`9|Iw&~7(n+H;ee&yA=coJDL_^l}iP7K3oZn;L4z1sLzTda7zi(_i5BozZJ5Eh}sGZrXw(Eno zQ~2vI`nPf9H*@4S^vOTj%7>EdoW9y^*`oFP_kS<`-6!7nic;a-t&8%|00~)_B=RYE zK30KFScJ}qjwlX+fl-O&r;R$kTcCd(eIU-`Z};iWkHQ}v&#!p>=vdM5&0{0Q>EW&D z^mwxbYQ~F8)+LOP+|3*@$~Ah}mBWmPtJa?U$!}hCLt55NY0~S^BZokhzUYVD)5XBa(!bY@IKFx1 z`ggzIzI$>jDDv;ww;Q0S`OmO#VtlnuXy1ukpXtjV#Q%;HU2EnY-yG)l`~0>jf5iG% z$}Dbh4hE7RXZ<4Ifl2%Jp7}}2%%}M^UtT^BAF!@>_JHU)Sb6;5WaLA|ksU{x;t%J1 zzNn5&O_LiuQ_z=-5qUR)NQ%+9lb1EY=p5EA;`8o*U7paRxDNUU7daM3F1rH@ZR?T( zIc=Q1I;4FYyv@b7cuxf0FUbBxZ*^85c0p3tX$`UrdRLNJd9PJ(PgArq-)@;#!q;1- z%)AI?zT$Gvc@>(U`)~U!>%94MK&&h=it1oMqf3o)Io`}d`&1@gaZqv^~K)16x6 z@%jU9TaQ}@sMGmG04^E7jv|oeM(crRwn*Q={u_s*?XZqY$*IfqMAmeN) z?bm6m+%AEtxEw)8-! zrEN!tR%x_sDlLm$fJUXmqw_EJ+7%7VK@INBiSQyTX$M3TVP;&M(DpQQgl4V+Gb6}5 ztDb2}bdUtG=F?)$C)u7A{|oo8o&o>zn)oNVR*CN&u}?}Z9*wVo#JB8lE3~49>C~_h zHEawGqcnqgJfhBI7kCf82MfGci^ihvW&v#!kjUrz$3pzKtEbfQ{1)SPmZgrXF8kTt zws|rC@qp*FD}}o>PC=(d6JNnC7*9=-Djt+m%PYR$!8v;b9<)ivrXY=GLv1{`%O0Ge z!HKJL`KVsbf5t_mHg`yE{I9igb@+e6Kdue>hx7ce#DDhxA7QcMxzk`S^>=#?1aUu> zYA}6un4a#QO4FywgRC@thS|NqZnZ?`tVZXo4(F^1=S=0kKWW_b3mY2YRJZ@9)6yw3 zEB61N?VtBn_6Jt=&+e$6+*AL2|787AW-VtNJbwI@@XYJ)RGgRceCj9|sWqbTMK?+m zPWxIfz^%<#4h6ZPxT{`!Q=ablSkqUA6?yKxmGVyVE@$1Kp!>_J%;xO~8 zPNmisd)mfF;$BW9?u-wvzgPUA`pX5TU>`<0am{9=&SOt?^N%}d9$bHJz}*beZfM_9 zRg-^nu$REVGSRN}a9F~<%J3Rw*6BBOtll|nL5wd&c40xGzSl!i4vtcB|C(j5L2vkK z9|;T6DwDt;7>j3EpKJ{fw|Ie!0luRkGKXjg>l6IZ;UR{ZhHxPEDbQ*l!^ zuY!Nd#V`Lv`B8JZa)mu;MICYX(xdV>8xrvv0ACWdMVjjsx2?iHIDHv2RRJLqzj0O0 z|Az?rd)V*AJ~yEKE98%H?O!CpnUB5k$yc^N!Z;rCWRvBw{o8oHdAv;1ymchd(ZkGP zt}Z^22k^E+GE)2e>W^yw-a-9%73hxkpONq*s(xy)>SohiTg~$OybO7{7&S8a}YAha@kf{k7rc@FDJ9Uyw2V632F!JE?{zde<^J`tB79l!Qqm^V zj~Gf#6*YEJXi53oVN$(gqTe9cAAJYc0@^>r;f$gGqg}XZ8;EBYrFOxnYOV}sQcn!K z^eEiirSSD!Y{1lR-1l-#&Ol|_Y%(uB=IHEoB6H51K-bwb#o9hoDqSp=xXr5{Y8KEx zowdPRJtIl|uswK7c7E3gx#WrwbpIKVid~AM(ehV4sop2*@8;LTXoJDD!C>0J%`fBf zYd%tq;aps6+u#w}RH}#FUE!Yg$#P_yqyHpsI;^R>DI!w*^W@!M)bH=sTsy|^k=90j z_jkDQnbZev>^)DOxn5m(Fibmaley|q$F$6^cg=RZ*vYTQQ0J7HKR&;ncw>0~yTST* zA5KDHn^f(D+?s2aD)@)HRDleqA8z9#^=VcCw;!6D{v6i_mn?P^K>pmot^f6Ly|937 zhW#xk;i%VKfluPUKe_&|{81X{xHNp|2IC( z{P?)z169B9JCs>7?H3#$xOaa@`vdrkw*UX)(|yrymoay8ZtDnfP?HJm{Z~ z-}(#t=a8`3fG)^#TmA=UP41Pfeu3i&;eT;`PiI!2#;iWgxwH8%&#!TPNJtc)cw8%0 zm?<&m?foGSq;cz*t+yQ4@48^LyUw2LY>th4n;A&65@dcdW#)}IOl$7Bx?;91*Z-e0 ze>Y`M(EpmDn*aUyDE`-FHU%kf#guf4?a)t>a#pY5N!b_f0Qwwr%p|NLKkbfUGi z-_MSZ^*;Sk9%z=|bYj2zKZuV*KMDF@RaEo8A0Pj>zQMN&$h|&tecR7m-!SRpAM(zM z>l>=%AJM7CYWW{Ou2Z$Vnx|q%^F=!8$nFKLhLkZ#b^2 zO3KNlI9QLvA7I8bW6#;n)!ZAOKhgTjpM8Bl`hL)VAHV(=_TL=NP;`hDC6wSjZjl=s z#WsA1U4)XyJ;i6J>QutqaV5+kZ1X0e*UFPjs>Ew_x<;2Zn7V{=6hFz#8E=hK{s?QK z>p@pZ-&o;x3-^QY`-b0T^|1UFGJkMJrM|KnY3~-S3GK>9;%%+e4tB0=?p(JbmE4Lf zVnuYF!ZNAIV{!bHSxe9XPzOw;gsxBiBfo~b4ra65jAo&xcszsagNHVxA?lvq1Wl85 zMl$~7a?29NAL`w^-@Av3(u23B5ntzh=0L+{{4*||L#NmaCc85Ln78&UxL!+V|Wt=cR?A6Eb7q&1ZJ-r|})V#WQc#VWlS%X&R- zHg;2CoJz-ADc*U;Ty|s5zJ3rZ+?rdsDYx)dQ@2mt>}xl| zD=Pi;wE?9uzxHp;zaD4)`OVpJ8vlg(XSOd|j?O4;U{_&F`@$~Pf9n)se_6ca%kx^! ze-0(JqN=Z46Hry#SA)n8w6CjQ?YI^_c-t?m9|DtE7N;QQN2iclQNP_+|3~zz7N=kB ze_Owc(S9N0TYcH%5IwmZ3q1yV$1#qYtE`Gx!NBdo7tIP$FcP9*DLbg9YL7_=eegK_ z(`~;q;`D1v5M^kP`9=J*_mGPIxo&2NdQGqTkF;Nf^&cetTlyX6`u&^u>&IDG<}yB! zf#(fu;#&BXUO$h7L42vPU^F+p`_v8EX%5^wL8=DdUPw&H(b@i&d$gy+=o)Tny} z89=V5{NF|5d&gPdpEC0$T(zbC5S21xrCh`Lj2@nWdpo6Ifs{{wKV|h4JVrGX2j9FA zX+zDe#e?wp&RZ#i)_1y*C}5-BrVIhjFJGXu3GuP-UH=2D?RA9dHah`zAtaLEwx zR9@CsH}=XcO5BN8L+^}b9lY_}SW)6@vEufx6=e79j>qEpq;BHQ+``1y%9Blft{^D< z*4!a0A>3t^to1=WUp&WF`=BYoNAu+L5C^F@D&Qb{xGbCvYSsI-qaMfqJTH;!=Wytj z$?FH!f-z&Y*N+?Nzp`|x6BXl4i#!jECkis!t~VbgypL;%9PE$iMW^Og1xVsDG=*q` z0F}AP9G(_Z;}Ii+H6CwkoFh&>oi6x;>sOBN-}>?|CqtURN`(7&Ais*TfAEEfSJaU` z8;0SJKikT1WsTDQcY^g%Vf8zW@>865>^e1kYie8#cTs&j|L|khpH+B&iPL^#c-d>i zMnvOsO=nRa+G)Gw;)mgJ+DhqYrSSKc@I8SU=7rw|T1r;z@&$nzUjEZY8ZEH?O#G`I ztdK$fiod_Y3tU+>X4MQu{nLJ^LZQa6Wn^vo^R6^Hc>*B)a`qw=2@n8b}aqQ!) z&+0ArSGpz*M$$EDFxh6wkFGt2-nj$YQ~cq@- zhG(M}V>m(YnLfHQykX0W#F*arLjDP^FJj-{pnj0dn+Di7iS~^fU*S|4eGy>XaG(Ym zSY6x_-i47U+(>dv1a@b|cn8P_r~~gnCt)3b&=}hE&*0A7;&4zRu<5 z|3#d$%)|UL_Dlas_S=4i-x2;#>=&%C>Fm_%hwaw|?GtkUb2*&`@z37>!27mq>@!t< zqrJoqnhct9oIZm7v+i=gal8i>%4f1w^?v9C{R1@%TwfY8{$qO;I1UDtn5sC}fUT3` zt^x0fx4h|jOYoEU&oEGO*#F|!e@~(Qh$0$(3SRhi~B#@?8yt=Xna@t{9nJoQNZn-VWB_~?U+GY?OA zlOoF3#j;+z5&PZLtT**=`h>{T!x!e)TBB=(lc(O;I-z`#oL0(F$+1(BAzp=luuYF? zgjH0C|C6js**uVs?n~f1Ljs@p&++pIYySpr*I}ZX@!PnDs82$ehiLvVd1$zs{J8w# zIPIfX6m6dg6VNC(j7EdR3cs`s5^MBjtkTZ5>r2W{iqYnqe|L7u>h_g$rhcC^u>t=@$W47x4du;j$ZfXTFg2-OvWGhQ4OlA!epLU&!ug8*Gw%BCY!1{$JFHyJ`TP(aAkWP@zrtIua|_@2p(Ibd zhF5na2Z-FJ<7MG$i2v{c-$qigJ^gLekt{G}Cek+bb2zK-ey3stmG=3M<)`xohu8H7 z^3w|Y-#Gc{@7Sr}H||9YHbt1nQ;akZ42#{Sl6KPrBQTz|X!s$P_bEFZUtML9Oh53Q={9ju!^f29}N;PY3~epkRhD_sBL{Byd^ zKjDz>1rcT(gBm6EF5J+AdzyXk-N7P|ewuku(rCR3{(wQh8~B3;?^|~a7n*?VcM>RuXPQz?q^+el`Ql zA!2HvCO`50w-b*uzjzt_%EnB2N)a!aESiXhc7{?4x0UE5lcqcs+)&34r(6=SO!*wi zbL4wTc21C={vz%B_(eapeOL7lXyFYq{M`0UnYD-kATS2tj^D}k%l4%VE{SM^^Yxj@ z%%Xltd{hkw+shsXMRn_Uz&vbGhtv3n3n>_pbMW+8zp-Z{X+W?x%`lS8JB5r`5%y|5 zBLOekXnU;fH?qglW)46$EmohhBL>g+!_Jn@^-G2ae%kfx#QwWJ&VPG>^;7*9{WR?U z>H<0>bnK64BSU`(oVnjCEe*F1{;e|2+j;&LE`OXZnqkM!o|j}i^!ZKk&$i+5uN~1C zNk@XV%{;qO!8+zU3N=eYu&-%`f}4UJI+Cz@qGtI@FVJlyw4{7pTsR06gnu0UF)!a4 zF*iBm98S!iQTvG~-fuC@uRr4JuD-DMTG3Ye;_IU8%MR$r$Y0r7u z^OY9ppY6bvHIuS};z#$-+~N_@&HD1#Om5~pZQmM6ww6U@Qm9z}+Ke`3W<#DM0b>BN zg`!3G@Z{oK`1J1YKjeM*0p5onFeMXMo9pmhWJp>|{K>^@%S&Fx-h0(!#mIe4;ubp8 z0Q_*~TPZW1q8JSL4UQFIW(A{(xkXi&>|$_vGJ?}BxXKn?iVrebF)>wdF%Y0*J&G1S zC{>7jbt>Kvy!>BSpR#MheU!}V+3()NcZ}ybvV)>oQi+RiD65cjUIUn;=cN{8k88zj z3%77GGMpsW-#xvNad4|+9yG15L!j@(BSqFg(_W&zHks#o;hPoTGfP|+U5`U?`yafD zFW5!)tj7mm@7S^h0|dCk-4H7{9QoZ@vEn+LQ=UH=6HTv=%Bq*2S~OrYmQA&PJytw1 zF{|E$_pl}I8ZFd<)_37zOQs^&D^3Zl6p7)Tlq=73;)L9 zQXZ~+Yb_j3?cIEPd8BvYhlu|(*Z;n7R9CzVyKdJRZ{=5;@z#Wa5Qk>QKN0LdtfH&- zZoZ*6PI5(ehvL&BfvBxrJ|8`_Vn-@omzoxNZvUslSEqKOT&) z)rFr`7nc3e3ztRHSwwrtU$_(8>x@g9F&O_*+Ngrl?viD3blSQ0>&Tz(!eXuMuk1L6 zJNbG@XYp1|eIKFu6`YxQD^|Ic>e(~jns8;T=s9^sD2yH}IuG~fQ;$@hP&Ru&v>kmm z4-(F2cNs>q_?NHG{MyAws@&Za4$B2w=s3g7AXI>?^YIQZIG(68?ImhivPmn2mjjrm zv4fSZ(SYbMpZ#Y13I;-rPz{VB%6-#?xkcUJ`V&*99yw{kAEzEkn(#ckSxj;v>3NXL zcOab(1F$CO;C#7ZE9@pI6F!(E#WI{xCFpJE$Ur1Ep5*T#K2zpb%N$({CnCFoSZ%ZISfM%8hJd$pn?Awor-TNxY#7O3X#S@)3TH3ZameDM?FX!R^E)w zELu%_iONE{t(u%z27hp?#v>9$v#liuYg3=^yz5QYyh*ETEJaYojS8xpgZ90kRBJJw z?R&oIjXfkQwr>lseaHCPcluG=zSUWk!Fw(vo}U;hW3g(OeZ%@fna0-kZQDJheR~vs z(qr1bv{VGl>5uKi^H?%pe;+>KQgjavvz<%$7yX!j&1=h1MZ8sEwtUGK(#>Cn9qhSD zCG^Q%i3Tk@y2HLjA{#|{@196VzH2+qtcf$tVmXB`r#&tHl<5a?ioC*Snw-M7Uw*qH zPRc;M2SiTc_}x%B3lnFNH{;K0hZo7HpiDU>6{jqZKV{P+I7MC%T~|)Q9e;UKUV|_i z;3ycmvoUttuY>u^LVR$Jo5h%aXMSYXJ*DQDO4}^Ag-N1rqUq^^uw-dGWK{aBYpepEfhN5N>^%47OpuLtx zX+%L$f*-}Qxkgb@pu~SVSzJtT)e+9pS&M6S3B z_L}?$J(h`MWeH8KALtp$zeyDTz7%xx^r|p>P4>8y;I|jcrW2Pe6i2=u15}DdwGkBK z2))3fT0kY7SUwM^ZlS0YL5Y7;0#H8x<`J_MNXjj|M)9zBKNQ%lgzb1P zOs|I<`}~_S{Fe-E{|RKdx_kcZp)ftc}p z;_iGl%#1@l93>E^{yjI!GW=V4?~HY+Pc+Nsnk&$cW<9PI zO%MT*Q(5_QZRNj9VL$3@E3aoH*R3S|s1_@K6-dFjbFRmw1b@4*Y`y{)RbMs|sIq$% ze?U-u<53^~UE1W4qNZp-ykGI@FxpFJx?Vsbej3YWrqV7X?J`R3JV*TS|5 ztfsw6Sj9Fg>|h~axuLMSq8OaAG)f7)O6YZ6%jO%-_~ZRXkl^#{49GP{vA-;@4{x2} zwzyz@*9Vr({9nVbmoHZPZziNTauKUOWT75gFI698?WAWUXMZntI*(Pq1EipxhIm{` z@LP#x(?F~K&TycoiL~UDZ{TB%jRN*9l4V2Z(&OWRx2SQ?POt-6n5}7 zwtpzBu4pDfi4y!Mmd#(e#-KQIJ5fvTRwF(rs2=g{b%vs55%m$1-GE+88@PT#34RpI z<{CvsfztfP;_eY#E$i7A0wOmb`e+T6h92F2O!@P%`p+~3II$bd(hCahzS!JG6p+gi*n6TAMRBZN>VUE>Lsv zXJO0!DzJfonU&0*10CjO4@C)n6w9Wgn)<8X09DJP1`7&d*RR*jirQNMRM${cEkWV> zRvM)QbQb6OrU%S^E+0UALv6*qagx5{bKtw`)mu)rb}3bB`Yt3?*gT~IMxhS&WvJ#f zo3!VVSR6TZ=GztLF6`_)8| z7k>@djyn~WBQUwUhBH{$C+`Ss)pQswH59d@p6d#f;774+7F{Z+ONbh4QJI2Dj@PSD zQ9X%z6x+ZCU16-CB>$iUpq%!Zi^oO5YOSo#hJsbuvf2pi1MA~ftyaop{&Ye zIoBV`@GHi$*}!EPco7O=3+_-GW(X`Auh{0d#fH}twuPB(z{eNVb!|uqeiX~*QbnZ@ z)xx6E@x`dJoXS@vVUzFied5}0%UYV9~sVK4q3u==5}k5BRW2W9vz$+CHfDbE%@*=X@pY zQ~*J|KJQ}68*uo=C%bMzA%5GjY({duMscJeX<3$LgyzI2OY5>tXmvp|<3mwd9*PqD zD3;9;ELZ^Q*+D>UEmp-o6qFO6ENagif?E1Jpdz8Dt+lC@-XAH-i%%43<|(T?S;H-B zyRe-2WLd?^x{$1e*bX*m!Qo^%@rg40im_}ODQxGZfE~hP`y6E5Ca_kvXIWT=!rr_E zu$G~)L#b|aQGy@EvRTc=7sZirM9s0N&4O}V-J(9-q|)Ryq)>aen|>agDH?C~sA3 ztgIrkb~D!tsJ0@7R@D0^W%=S0Wty>A3;|d(!a7^nN`Y0d%H)tfnerEO-4H?I3*;X%&ijD{wct#kb-CEZ8unX%IXrIY$+%U1b z)J#iA#mnIaK${73^w@)<&H1*O^o-;|Ux+q&kYS!=W*jix1g9!kyE48U;3axIit+PUHZOBELviF*@)j1VY9+!$EERKF z-gB=DFCRR!jhS8mwJ_Q3Ta@5Ov22DY>J*|{ThwepePnYQi@Hov)rlGzifSz=iBFUO zloy|P!0gWzwI1&e)&iJl{tx;H8!sdp;1`?*@yOiKZv25xo>WzLt?Y&L)8ZW4-303^fHBeEn z+yqpkP}JTUE{YQTD3;BWSZD#y7y*>TC+-hGGma5li+JzY|EidA5OL3NAUI&gDISgz zh;!l-%UEBlysz`1T8d>26IKN)Zd6wJM6kMrvQmU4>uN~6+vzAS@f^OOo0g-X~g!<=UG^ua{p{)dWmo25p}!?Ci2i>%S~ zjO6C!VzkDP!TTQ$3kS^B#i_^KC}sFtiDeVfdc4>dupL}Yi57|p%!wBk_DPw*R^`KL zsiCMH)m(?51V4&pvxv(EiX)d0HP)hX1l2cQuR=xjBlge{n%Hf$rXta!yX zzalogp0F)UCj*KtNOEmR34RpI=2Ata5Y@t>G6dyJa#_8K6;*|(D??E&JQOAPQ7oHs zt^&aQPjBb`2aoa7JJJQ`T!t;Ksp9Uw5x6fojvLTyT~${zN+8bZzbwOlmDe6T)7P@n zgmrGb6*s;tRy>=mS)r`H!jk-g62Nl%@7ySlm|6-e%LVLXJm^owQUzAQjtdm_;thb+ z4~2bP#r2O;k>SrTDAR1{CYJ1o3cJCALoz1gB@GsTpa{LI5qtXb3zqHuhe~OWnyh0) z!}y-DnR60OLQ@^?1#RkBZ4yMAUs==X8Oh)77SkQL9@_NcNO7Q<>Nr)I8>IxlSFmi} z?JBy=BkGB1YPj!ke^7?;Se#yTU(}+W+a#!&K-v6=mQ11;Nd8NI43@_ zjQgL?qFQMTs;#(Ht+-xT=f$hmSXo76$@p?WwH1|VMTt+80G2O4@rW6#ux5mHwy-q< ztCUa`e&u$vPuGhb8xkht%K=zt!W{pg48J8=HkB0iLU+L4{heyIQeYJtZMMRmz7DXO z9AOT?-mPT)1Gid&N_FQCSvIRL79*a6>bjvY9p>Zs`kyrz-sy>u{^rY^ST;ARh?b~C z-1y8cn>jBbw>Yw|8?>ovwRupqamHu#jO4w#4&)!#>iA424mAf9N_1+2`z=w(nWfjV zc{xWEx|Otrx2Wyz5t1UchA8S3qFP&2iJqXu%hu+oUW|$tHA0O%1RNI#3xDs%NL(` z#B9wLK zqZmJrWz$4??_Uhw;hR*o9N{_nljYS>-n*lrTANVR;iIl{$qY7JD@ z_oKkNER@xlEa&=28GglBHXn5q#TMlNwrZlnG6d#aA1y3RVRsO=kHfJ6#a110ZAb}z z6w79!qRt_zr$wa;%Dpe)&x(^*tq~hGC2CqIs;7sd1V4&pQ$tZNU1a0au6)%jO>h^) zo3W4Lo*xO^$)UJihh5DmfjB2Vv5fuIvc!r5z%%14D^*w(tk_sty~uiuW4{3_juV!Q z&rm}A_zaJjJ_;*?3^!y$L0k4ekqQzvJrzi3J;z-ej zP~@=*YP19#D@zz)jizTL7h>%QPMi)I$ZvLWG&Z2h;_qCuQHH;jST-Xw#cB-+%d)WV z;0wO{EvZg&m(>ER3z!)nipug(l;B6PY>u2SsAsc*+IpkvbwE%R^xCsZP)mOcR3sF& z^;>Es{g)De^7=0in0d?a9AOT?4t?V`7bW;nESuHmi4DgQHOHd13(6S|x2Vsb z6B~{qY6COZ0BVkhq69yRWz$Phi9qT7kHu{hTrE4CYjLv__wALy^$*20@NkqsoYQ|< zhW~aD)k-@-wH4Q^6*mj3TfEyhR#p*NyEzaWP;JE_T2b-~N&w53U+{<-tFUH-b+)ke z0;^!hL(hsG8xnSND6BJK>K}OiOK@I(!Ln(jutkvJ1`7^nnAy*0usHU$ZFQ{fl}_r- z|FCSwH`=RxhItVqX0!A)q+9qmr)MM&dRMf`gADT|hkgU5o8VMs zZj=)IUcs{Iptaba1ynVQS|X@Q3DrbBi>mXCpgz6A$uByE@)A8B#rSzFo0r>(*0++k zaGa|4pztcF_T1CL%LmVFO_qU zMYR@`#3xDs%8O4tVD_IYYCWC_*2b}_R*A5jkYQPeR*G5=Tn^S@rjr4+Hh$^)-`pr= z_!VQ>OjB4#!UkH{Y=Jq>ZeeQ_)|Rljp|F93>HQBS_)#pIdWw4Ee4zGTr+Q5lRBF6? z3{=!BzX7UIC~EIP7extv6wBtxwqn8&KpI`8Z+22N#8;$yUAp;9d z%)sRuGPWGB)+voj)W`u2I-vfjRdh7WT8!5u05?)L4tk6O@x*SX7~+dJ^?0$9w}?jTMyiUrGSV>%Tl;S}W_b_Fz@E zteCKzSYcVMl=c1)uw;BWz^Y7^lV4DVUon==hSs9kWWp9)tv1XNm=i24Z1Xa);q`=V zVKy0nE!gkckP`eTmd&M#N+GI+MP&-gadL|)R#X+Dt_(%B@KBWCN3m?mTZvYS+u8oR z?kd%+jo_U8!s41L?(WNg`;r5(0nOHZ?rKH}#5w(!W%#f1+Jk5MT2_XzoczMFHa;m< zJe#app{%~blKg@a!1Co6JYs4otn6ICJ|3frr3=hiSZ-kp6!zj^!0Ly>KHlg0M`@HY z{PRC7n++|+k{wZDFIXhvi;SfjEdD?dI({Ko-}nW~nqN#&DeX}cCt?_zIj50|`JcAX zrjFGn700}Yp=Tt2tBXDk41zYjIIJ9KraDel@YockqM4irJ6SgGo-Mk}BkGCKYPcjp zIq|}xo_j)CX(muMKjK(yfVa5Zbqk8|^H??`mDiBGEXzv}o)a`IZ-DaZQnm4+s4Ndf z34RpI=12=s?b$X!Z5^emeTSL0vIHk)Sk&PqqT13+fr^Bpw(g}?5}zmmC@((ofSISP z?qm(OtOLSwLWX56P}YTH$@p@>g2Tyj;uB@~6=T^nQrOOO06R2N6*B^Jf`)|+R@j>Z z0c*+JH2^!b$89c3@S|8ZtDB1r#}PHhqCOOq6EH05(BopmQABOvm~Q|z$3szqAH}li zrKm)p^!~@e?Uw*-|>8%2) zpb}2Bc){k(n~B8p53Qic?%%2+>qQZ#OX(TOuWpt$+IWfN7Y#yH`Q$U#At=M&N-Ud4 zn~BvfC+ubmTO%+hURcJv>}(xI|b^tgveRWwEGrD_J|3;04rrc(h`TCCxoYQ|<#{8o4-f02Vz8I#e%@&puD=cfcvR=;vt7$0fi%+PUpcTgw68fMU}LbH*q?INkK z1Pjs8mtU}~*XIT*<(#F%X}=Sid%M;11RHqTw5rW=oAWeGj)ZJeHweD_PzOeK(E z$~ndx(B`>+xL!dCey?EJ}cGVZ!ShuiDoS3U5^(sFoUv+VQcg8YTEqESp7*MYT(a8f#I51?9vHtJ*?E z^(5+1j`;?xI95;+pC|z+FFx^rX|1f!nt@f>vhsxGgbd5-pse?MgC*n30aj(Qocw|^ z{ED$`HZ&5&CKI;cH)_L}z#M0{uMstQq8hN4<{C`$07ST^P9qSfN2&i&7?RkKXNx!bewr^U&w6?bMEBwwY=NrpoP#xK@!m^Way86UW2qYQs5v240(J-&|uR^P(X1m?sG3ya<_zIUi6 ztd})71&nIg65Y;PHP)>efQLo-7s5wM^$}!l0R?FX~R?>ed0VuEk z@_-qutY&0&wyY#!IkCdBu2WV+vThD#btcQ{zm(xujAc_vVK1Bo*t?ghVhI9sf`x@8 zDeUPUfYl6zz592!xhTPpV%gkvhS;z#QCC~kcUUq|#;3Q$6)oy7_lga>5%mxg*MJSL z_E41IN3m?qR@5hrZT~$wST#E!I48fbxKWCGF9zJXp}3=eb2Xy`;++1=GW_>+QEdWv z=61_6!gBHp%c`ubYsh+q!@U93ZWos17nA^&FTdas(??-d32SU&9}2939p7CfcKp6O zV3&o$8WZN^7nI@8FIYB}6gC+Z_JTzYz8JGmgT)8CT-%6_u#G++Gb75fUZ3wh4bR1| zw(0A3a*89}8=?Ng2Wi7>llnW;26{$vS6x4HA?v@8qq+fO4JX|3Z_4m{0?VdR18JF^ z>3|)&RAHM1cDZ#r3rk%n#(J|GU@b#ohjzM}Qi31FvRMr!q1QN~=2+BvK{@@_qE_7_ zs8K|1;2>{6uQ?uy68tEZO)o_y0;TuA7Pm%lzlqnZkK(@V3S9qCTmuhB3B)=6%`)zP z>x*ioXF|0V1J#Nvg_Vk~O~ehJvipAFVZuT2k8QmJjgIla(Fjjx(QBI=0+*O z?-eYY4qA)-X8={rqDlniTn{a(&Rt@-Pk-g)&z(Yfi5`z){5+P;%cqLgx01K;5>;)s z@SObF@}65DynOJ?HV*FwR9pC-+qWpek7C&jQPe3!wYI3Kf^zznMO~(->O_qUMYR@` zTz@G6DDV2q17?3cQS0&3!P?kg)tV%%Ue^CC>rknv^+0E^4s+-=pw`B}y8bseN*R8| zST@rX){(G*7B*gBPB6EyH41A>*xXRqK*IF?o)Y{hmQ6iHz0m-uz5P_LF@kdPXNwxB zs8=oqs!=Fv@4GIF68tEZ&69P-gd>2``9F&rCOBt(k;UzwFJ>G>+%wE017@7!;V6MP zCqA)^`9I}-eHv6tv8=(ua`I=(+NiAZ9I(2DvQmU4`7)j57>;=lnCltI&2_m- zW60qAABT|xX6xeA1N&c4F3jeP=d)}gT8|g&1Gb~D!g2)W#0v}ivqFQ(;O7NptHs!TN ztHq}}_rJYWvoyg~iN`fn+}+v0eaW%cfM)C7bTy*{;++1=GW=J0?ZGpBEh|-6(RkLz z+r^4!lQk=p)mK=OUr+*AzWjnmOf7|#)dTF~TvaSdU={4RKw&Rl09gG{*vH#k|G@Gf z!KJ$Q$}F1=sba~FsIV_sRL1<@JPj6qpa`A+ljif~7cATHEtS$9HE|+_v6*uMshIz( z3vKFHZN9_a6<);9Gm^j6RUHR9L7QGo#RJV$$EnKPC?)v4f@Sk=is&+rs3&@<;SLDO zi5C|2T(Pv$OrUIj#PQt#Z}A(hTTqOj$FdozyoTguS)LJ|6ErMufb!~6weg{-EDuEq zeiX~*NG(zA**ZXN?WwALC@3dpSk&RUqT14qKt)1PTengxiBFUOloy|Pz|2!tcd~|C z)^=gJ`vXdwCNEIdg=8&cIvKFwaI&2EL>Yd?ST>Cmw(}Ig4)svQwh0UjaY?J#V1>Pz z1z5{a*rC6;%|!`*6w79HveTr?9Fpk1u2-qWuarWLzsEbR!&kiZ8#Qg-vf2Pz9B6 z_SbsB=FBUJ#Qa}vD6+e|DzZcraV}SSM)Ir6q>VP7uk(MQs(kXg>kyRTZzYz^qcy~8 zmlJlgg*_-RCtg_Cj6#781k9}D$Zo)DH+v{b@S|8Z9ToLeDp0j7>K;LzY@NZPnk#DW zc|dgyMb#3N^j}H<%Im*8V768lwQeKp;cjZf5@9*9!m|D{ThzLhtQ}170%|?{8Z7Aa zU&`<+#%n242Hb!B!3A;8F)`2j+KcECZie>XnHPLHD3Q(_gRlTO- zi&5_WS{4;i)MFihsuYTP?Nt{=34RpIrbtm;fYSLti<^Wmz5TT;?#0{0jOP<~Cx>|h zW*q9_D1kVq|FVqvKjpns3#xt5MO7OwtSSk*OQvNFQP%72!D<@H`eHLxll+1b!1Co6 zJYtq7i5*81Hr>L;2&`$mFCLmDid|0FS`PFE6q`<%;~$jaw;mU_!9}E2}=_SK26fIOf~yLe5CeULtlnk5#{e1IGb74e_{?;I|UXrh!)d zotkX_&Wef&${DH9$|P5xDX7=aW&4MszIerLe@cjNe;zT*p(OMgP1tk`%Mq9pA1v&t z8QT7Yt>r*&K(Fb9Iqgpwe$7}m7c1;Y4Yt39WeUuB{NKW23Om@A?H>xOE1IGGv5#N{ z6wBtX5z*^*qLyB)MrWJS#)>LaG90lk*K?D`2M__bo$T%)KF7!{HD(8=O5 z@a3p7tk{aJt;0uT@c&q0tTG~0b=}3;)?j{tST+$g(D-6&!R_Esn^gWS$c}oopkRM3 zST>&~ioy?6hr(-fRN-`dQI_EDO2MBMC%07Gf;Le20Ec1&3a@?1RhSa|D3;A+MYSWU zk42>ks)pU{)@oKsQ7wp?8H(y7C|tivqm+Pd>|DR}fN8C)$05Skk5h5~I!$|VO{cPW zK1wCH_cSb<&rcG&Ja!K93pPD=qZne-^HiRX`M+w=W7b7#vLqZUOK4BiW1v{iNWN;Z zw9s(K;QSwlc>_k9vB@h&GgWO;iVSk$Xi1vQ7LPdNq~&}#WcY9;vvB>?5L4{p1-%xkQ& znvvDnvJMFAL;EbHWnHJNhGg9w%IZv(6F(@!uNcdwlEPl73fQ~Zs+bX2g$7Gf*wd{5 zs~HM=cZ1tpl;B6PZ0@QgHtb8()fV+3zVPx3tJkBy7aMjX>LDhs0UKWJp(w$RV%eOn zs86cc_;K_C)oeSyWPYJ<2C=xy7583C;LZ)j9bNBgMhV0@`31}H-vm)@0(jvsHg~tw;%e6w79! zqRt_zr$wz1RCOBzE$Uyt6C*YyYFa3&r-Q;17=lW5BN)r(Y(*`G1YZbDM}B#WhQMl$ z04#-$iwD>$i1FaHf4zUqd}_1Sl|&RrCMKfdcXU)6Es=`HY=h_-$rE(-#&s=F@y#6F z4cO?87hM}sg5O3goBrQRbJQTJsYN{~C?}DzsEcnA8&w91`B^9|>cJ?(4`bPU3MHY} z11ABtHcR!oM_|sTI2QKF6oD;h4!sU=#5JJT+CRB^QGy@EvYD)?c0~2Ds1iXrbAA>z zO;Ig~ni-1fBPfZllmL_$UwOdPQdU`Ius+UIwPp*;nFq0~-pYD01FZU?tdIZb>pzs? zSBz!z&_Bh7LkP>au&DxbWOcopVBWxKnrVHpa0vk71=Lt%&3 zy3IuieiX}Q^hXazX?-?D7S_rF#9oaK!;#%w~K!5?A$!@r=-gm!AW zbQ~*7a7G;UjO0PObR-Wl%#$3?4VZ3%Q3i0cvj>)$0Jh@CF<$s<)zENe8M?C~EI>E{YQTD3;BWUyBJx z044Ehip3ehIb)6%xBCV$;~?Um;Sg`Yj8i-uB@pMtCzi4PL3v*vhH5F6#hXR%ReP2- zU0LO4g4HdQl_D&OPjb5%7oT{BY^Evf2xR!;Q$i(U#%p}Kf+93460C3jlx2-iom9%#4c)xPEV0@1Hd3+w z(|6G3oz|+&X3@q8?RrM?^SX3oC1jWyq1wFjjO!JY;P(oa&4Mq*aD9ln%A(c_%85@F zHDSDXL|34+{`YcZH(-7}zCn^4r@ zr(M-3!H;6uyl_xdyOF4Q7PV4PPJFVcwc|v!tBHD${u=o_%&IAI|^l}0H60mIFo^oZ%BurkQ-hm6W*)wLQjT6)zLi=w)^E())PfJpQC z=eW5~vYGi*Lh$_4*Qok)E!0etr0PAbne>e0yLGil$!Vy1IfrlqRex@|YbHwYw+hQ9 zf4^9%HBmh*YP_JF_+U{3t`!Gp0+hywDWSYB9*<)DJeEyFc`tqi-j3#~+8E(EH$9g3 z^)KKl}^%9b@)Sjh>xF|1{cRMz`xU}c4}DwE~J2g>j(#*n$kT zVV=O8WZl9N6m~sfTR5s4P;9|6*M^kfN3m=!Ra6R5Ei5V~DCdDBi@N`6X|5_nT^WjM z;h`wOk7C)Bmy1@558C*!u9<3`0g!6{@exvTQo;MVB3D6XQ%WiX*!Zz)+QJ&D%)Lod*o` zjO0&>#87{)hni=G*1QtA_Wjco;kOjaW&^-rO(ttWQ?*ituu`$@F_p2bgsX&gJy}~g zY8$Z9f~BsND8Zi!v1}$P>I+El8wvN1X4hynQ-4PUrtn0B7ui@gr|f~5TH7=`oo5tB z{`>{1zO#u|Jq^do5^`*0(=(F)G)Jnwx-P0-JGAOMpKx8568u(T+1v{*Py>h>XHltw zaw3gI%^5AIUPL{{G2noe#tBODQ%V5JjsF;{C9Ji=KHCpiWeZCZm@{l?VXYMQejUKF zLSdB&bNWAJ_%&nMY%tpXge{1w5fcRFbV>``JWAW2ur16z1DY*Z;u?_>{3w>qrHV=+ zs)a>;htz=cp*S6`W>Lk8szTJ2p{N!fiW2-NmQDF*+W$Xy`u|y~*#W^h`)gZVQ^nnV z3UFU?>^7j;y2oA3D1kU9KVTW_Kb6-WJk!^*jIf+R0?XPsQmlA3S+hb}eT60dK?z{_ z{DVhKErpfs1MK6*s@R7DbLLttY=OdFJQ=Y1p|Fo1bN!<LFbz<4H(mL&~?Tywfva+}F{Nl)y<*>~wjnp=qajYz1p!G35Bl!tkPVz8hApRWX z=xm_bUwYJ4jWYaR#<_2=3<2%*#lTz3tJ*EC$d^tOkoF80Lu-9)fL5L z{RbuZQ7oIk{zLS-ov5W}stq5+7v4~fMSXgu=rxO|k2o?L&}-=rQSCVc)!t~Rs+9-}eazov9hLQD zEwHMDvfg-@s!9Bz1h9PZheymjg>@%vxP{FYSoe6?yTkrJ-o6Apsv>JU0Rmx(9TX%i zYQRP?!neC@LbOs1cGFWig=>rEMCbqNC_2&bZ+6Db5IjIGO+w z7DoaopeO=v)i$F66-k2Rf8SGeyKmBsI?wk#KhHz%t-GAJ&Z$$U&N)?eTjcmVf<4Ma zaFiUcBbcopq~Vk#%c{Qy`{*lx{cwurtX#nCHPl9mOEuWmB!CT$3HHNNrqLF;Nx^CA zSXMjsi4ZSGb)DuZ3-;mSYqVwhM}&mHI_95PRu5_t9#q1tT-Elk*|@u9#0?~LBR6Lm zZi;X%ve;cekd$?qdG8yqD)w_Th0ZW3|Ij%D@5USa5oFM+nIpO)QJL9^pA zgSPH!L3^khWY<6^Gzx0flCZ*)f)k2mb(e-Zk5Hox)Fgqjo5?`^SwjsXR8>r<(E_F8 zBMlX?Pb8^M&{%a}0Be6=%~qjc?KSqvU?pj+x4HtWcTBAPPdfCEG@OjFte*N*WH^Cf zB?hcOz=j!RH(*QuBr+UBu$SneM#->*V0xq^1t%2C>Ou|m?dO2%VxTPCh}b6sm8+q? z>;kClm{46JP^935Vp(n8BV1JiO6=2PeY6;}a5J*L#K0Z9N;tcNaNC%ijpFRFC&HYO z0^w}?#4_gZHC_+0Hq2mU2p0ZGZ!=hnHC9(*O^Jy$Ot8d0kpi$B_K8>2H=hV|&wU24 zHN7=sX#(bM4R(PBd!jSI8kq==Vrus|h;7k!YTx==&C0t!z1R1W*}*aU5#PK=NcSciRLS$+4hh~}llHuhy|N1#Z-3B|JdXtyx_AfaCFr5Q^UDBC_6sEy+V z>OMk!L8mf`tCt@mS7M(?0Z-<;cWZFGS=}woAbJw+4GigB|Mtu<s>~|tqmy+`T zAdU4_d$82ou+(}5_5Qzv<%jR9w_%E9Rg201|00N`HB%&{PB%;~CLKMr3pNzY&d9T@ zChlPTYkcLE#KHGNm~OC88k!C2i+bq|MITd*BN3Cn7!rgAN6VsFyw zX&78e+(5#aAA`Z{6Lp&{!L_0CBzVe*$G;nZ)IRlKgo z8@qw^L3fSyh+x@ch{4)>rAY48cwlvliS@xl;YK6{Clt%-;SWS^mlNtH163_hZP=>P zP?r(vDdumZ*t#hKMG8(Rmen~L>hq6m`)?l3o zHo$Z+mE?K1kY`vlF|B!RQ1qzv3>4fpynz?~QqZubLW&Pai9wtlb-|8kp1aV+rE zZ3e4Qu2Xbn~e8m;XUmP25F<>lHwon_Y< zKT@peguP{!RidU+`_mb5tC?TMCXW*1pBM1?K*Bvc!Oc@iT5=Yy)y3hDVCpB5D)j=8 z*`T3zF|8ZL%~SV7a>hQ9gtMhsR@ZJ7$@L-D1qLfiux$Heu(B=}rRYwqX)&=bAeJ6v zNWlrkvN~KZP_OI&)TVBltqg&(^Xmrci_rr0>`_3)$AsEc9fl$WClt%duc2}PCGq1# z1D7Un_~Vq~JsR#egnNMb>L@8rjKGnCQ~y}T{zr}X{s&;~+pe0mfr2H2AMBH1ZGgtw z+zhNUV`6=~kgSP)A_ZVM>=Uo3m$!%+d^q6oLN8m_-aJGG78TrqD3u~`!2Wwk8Yu4g$hp|EzCu_qs){Bk6>KGGiOCYQt zqyQ|3e(;J~put8E>^cK>qyxdQr3B&+D`SEN`yIg^r9T@b$Lk1Y>j!B#CCRetufaar z2CyFzHD?V1*51rw8!0XwB~sja1Ym<>g8eWbU^>4*3Qqr>Wwqm75#r^jZfm=n4E0bM zBemUqMW~4V7UWj`C9kLjn$8H+#P$rEjhm~8i~J|KIm>Xf7uV|I1{)RBPb77@MYw4X z8j}B{XBj0ux6ROeH;Fi9$FlljvoQ3;R-mowq-D2D&}`dl(AMP%+Cx7=b`4C+MnSFe zPqu9@DLA26R(ENr^9VKCK-CMBZF>#WpEcAVLRH0t8ZA(gUmyiQMe+;0piaMfQSdD-UXx(BEyiWI8ObjgxML%PvpWd4jd|H9&K~nkwmBmO!rAtTW#m6KUJtT1 z%wR1QEc|h@wpe3zCDxRfSi=NM#xGI;mcu^riuz`QF!$Vh09(^RGqyy)PHPQzfd+fx zdw?}ED;vewnt78W`av2_NwTaeG}uK18)v{C5imQyV5FF+!O{sfKPK2Xf@%9i3QqgP zvbs=1y#flY?Nch)Qjg?n`{WWTVxI)Lm3`tB^-Z0Y&vy~~G|{;0)x<^q^WWg+-u7B_ z^Kh*$&fe{$pGdlCs_4Y^pdtBBdX`brtGsuztrjHWlpV_|S6AfNyFlx0(8>kPwoeAl zohxWR9D?i$VnX$fK#_tIie>fDdg1v&LcQEhGgc;0_B5-3+L$9y_Yvv~=47L|dikEo z;7aThDF7;BpLjvtsBHEUS18_Qqy_ zeGso1n<`+xG0JYh5;fSX2LaYCCfEm60Mqt~6r4~jtB2na8D37Pn+((>+=$pG1NF?M zBE!oF^%N7pQ8K(K0!0c=D3;YZ8tU^+#y&O2Y0e69vkqS@)%$-9+|?RxX9M8QjS1IW zIoaln6bNVACzcWauM^gafu|N4tOCJGY>m}4Tv)rASnHVsj$&=0V2OPq1z;)WY-*H0vE(#t^BexvPE-r)`#?9quBae#pH?)&pwOQO#E(ZqPpAizA3j3||Qv>e&N;ijN7ksXPot3Qj1Nm0v^U07}RI z1}+XaBlgL_z4bd0<8KJ}0Mo%yVw@O(BL%|Q_K9W0{~GW8cfi`W&6>3%?TKZ383t>D z#@ZYL)|oM}zP)=gq$u`@6oBQhPrRaDep}>tBf;hxum%CM_h%TeA1)Ebt|r(jCWNCH zn@cd;K9Pn~k}Rui4c4>{U_A|(5-{678L$l+?BLe`^TY(}DV!kyUF0SOr+s2s9ezvr zx((HBZJ)|%p9+7g?bDVyMm~$Qy0o%Stc!YC)435fu|MY6*SPC@i5o~5Om0Rr>2}&B z+}JCZ^%F^ht`X6l4jS~IW-<*NCA}P}iX=2h#3?(LRf4X_TWf*#VWUQ?7c~3#Vh!5o z7Yo|*AY_*u6Y9g+@}AW9?DE%8ZHCj##$-k%p5omR0SW!q{B|d+3Ok z;YtCsw}%+84HtVkbznzPT-j%M6m4NiZxhkGDV8#5bK_pSeFZy*e6l|mcu^riaJ4q)ztuO|6$G8 zBLZe8;|%m@@IIH6cpO)G`9f4&8%_rBMx6$w;0 z=HhFCq{a({wHH1IR6dgEdvKMjMyLu=S9}`W>+z zr3V`&!Rv@++b7a+GRCs%ufab07r=h_PBS(MHylA1UkfCqX|S!I0c>zgupjOSHy0^5 zp;%TcUKbhOMyUG?R3UCe92&#de=ZOiP9an+6Tne?-4}r(1t%2CYLtfR04VXF`Wm|86#GO9z;f6pUQxGdu(Jp@+<;{XnC;RS#(p?oW7 zlEc${EUW$+Y%yrGu}_#8Qr`2leQGKRH@#p(K=%3!meuOlus&mlabh!wgY^-sQUAFI zwXo7~En<=M6G=Dd^(9yDL;WSc93`x|#I^OCG@P2ivdUgAEz|S{zz4LA_8M zmM1AVp;%ToYbZCM^!$&3OA$ERBpJ9V8m<@NrpJW4I08osgtPUVWz7HlQ&@X#6i2zH$TOT>+cNitx6O&2-- zj$n^6>l-D<>j-A+2WdDZ$+GIN!9H3EuphqBoW8EY$r+OG^n0_OF5I zCz4*cLRk3wCp!LUX7)9Ti*>h$1x6xHfw8QrfDg3a5pBFd+Zzk5c$lDF05nw{6KZ?} ziWHnsEUP{mYWoU6eRDuFwo9PCG&u{ySZ@ur>0>~h5fkd0B620;J1GDvGQRVIdU=_! zbtAFn8mxN3Dl~(I!CF34*t(intC;AGlHgoo+4@ZyPR3YP*&3{AIly`vunhv{Y7JJV z!4B>Qm?tJ!Phm`AI8tyzv8;ByB77|*)C(ak!y19|w1zrGL)}BDeRNZ!_gM0Sa7X|1rzRk7&F_Akn5jVa*KI zhtI^aSpJymp<7M87rCVk9ez5?YWvF~qWK?%Lwnu7E;f$&GNK0(Jg-57H-4=}xD?kS zTW<9eNh9@YmP{=^F~Q=vR#|`ZW3`yk!5v;uFal*0eiWur;vn11{k?htcw8#Z0tr8`q77J~N>g;BO>&W2UT~NqmX)O|7LRxA zl)-WXP)LA4!unSrpnYHHmM_3H$9JveiKKNSr8WNb0dQ03-AA>?zCVL8vwn{xoSMe6 zdJ3EYYXY%K43;HWwhhv?Nh&`}u*MMUB_?vCuu6!fbBv_mgko7;sG+`n8BkpeRF**5 zpF1*8XK1J|-v?B7OsFmqC{l1jv8*;P6|O1)CF9d$pKB>*2%No)#K5gTQ#iYWaNC&F zjpFRFsbS7YfpB*JVHxWmG+qy~Hq2n93D!_E^ct+|G*(w)O^Jy$Ot7T?kOHtA{fAf7 zH_r)k&;1X;)_kTJ8;Bbb|J;E6bcQhY#CCu+(u0g*Y|V{e%(kzj;glrHszQTZM6huN zEEP8*A2l#wD>Ya;!RE&V8%Hp$AEe-fVp*N6p|-pPsIT{HzET9rUcYCc#%ZYa+W^%+ zCe+tc!ce5(gko8}_^gON{lljaHK#uTR&LF z{#uRq{fl7DWv~(j%U(WZSX-m9LR*1#SxhXKU_n3dgI0p&{Js*esBfMT=59oN+nA{= z+$}g=+o!r4jEL|Nc}*vrcwkvA)l{xUP3&2ao+bu}4rK2a}n{9^b<+$ z%S3Xgkef25jiV%&%~}}yL=w)HVp+xOYP|6Rus+zUu^I#me}q4SwReDEy;={fZZWYw zm>gCLQgA}CtR8+^Kvij|%Lw%pJ;x}vZi+yWf)k2mb&iJm{CT5) z&7W${_6nTsCK5F+Csq+`$P)Ba@Z$cQKL0jCxQ(yVD$oK`$@JOHQ2HD05(1**Z_jr_K7r{ zl4M!!`06J zmzNPekZ|Bxh_I94X{qou%=BjcMAFyUBErw!)$!HE%pXTJSO>c{h_8e#JL{>->YXLR z)f}Qd`mvVa5<$ZsVbq{KeX5|908Q01qZ)JcRIYM>qwDBHjr zs5}kTg-|!dgc>SPI=<3Sj`)gL-#jU7J@*W-*6h}7RSTBw*chz;oFZ&Ju^Cv6^ev;< zT62w~f02fhF_u+@2D^x0;|$n50XwI)4CiUEbb`%~2{w*kdi*B^Clt%-WDT|DX+VAb zk>;yhpzN+}_{!H%>o)&1JBP1ZzNRDbCecp^d=0EGCvquylN-u^jf7 zG}U{573S_G*xx?Xa-1q)ZR9vkgUun>hfMTFG4{7Vh4lmRmB2;jCs33Iqy&ggpaQ+($Gb7f{;1J;ro$ zl=LP?@JPmq$Fe#@mPrRT;YphPh8ep(81j|--gEdZL z9a|49$uCD?4Iq|1{*#82F_zW7#lqO)B>-E#L(4Et!0i1+1}sH`-A}LsOvFZkEuRpU zAt^YaSXQMPY8atL8mNH+)uFX|EKd;`o=K>Rm{21lP^935Vp(<7Q0tzw$NvvBXQ=|$ zuQl9g4fpyxfIBfJ-0tyV&Pai9wtZq5`JYEcierJNZZlXZg4ITf12onsVm-^GZnwr|H(+tG!2Wcy=)tK3yE7)(aDv(TO&U&3U|Gd$us8k+un)Ft&W?bmy0|aR z#E9W6PJ_L=7GT|Cf_?DEuojSl6N+W^FeC~gUQVc+3{-c%y`P zQv`|>oKP&Qb2QZFkK6IjHqDt5IONqtGYn@}Yq*_j0C#RoxaL2EIU@za+4{{g{M(0x zwPN6@g$8Rc?(mBQiB7Dh9>Utq#9B|MHHx)`f+hMv3czyc2d}8n8mtq+1{knixKS53 ziZ38@Xc&7)gB_~{*!Y-W0|;j82WdDZ$+Ft_kZ`v6F@P=Ks-;*jU~Qy0RfFA6umjAx zMsc=$oRK2Fe<4tjp`K;+u!eF$Hf{TD2dw|bYE<^y+k}e9N7!`82fxikl^(hXJvYxd z$s34-?;|co{eP&}^{?SIh)Lf|+N0NO?5tt?$Eo}8SM{9pcE5jp+Q;M z8fDpu((<*U6io6@PNb}t+t3PNE7eNLYkY%`07iX_)Gz^W?P#p<%ZA_>^ z5hzk{wmQoy^q}zb^rNQ#tlpv}x0DY@B=>!H;pwk$1Lz1du2F4XdnF`i@-OnTgDI9( zg+{svNNSuxS<)KiEsgRUqC5~2Wg=0u=P&O%+J|Mtmm1~$M}YF}dzzO=TBA(TC|lnG z%HWtNKU@(;k#`-eu&h=*AVRy1Aom%N>ee9bHOMrA)X@Qr5?FNvMBa6Pu&l;tkS+u{ z!+^|d4YDU$TBQ>~u8RqBjtzn@rt@8gyUeocra`Jep>0o0#Q21zvh0apj4|?9q{9)_$M-_;03+-0nl*dTOriMV#X354@vA{;Fsqk>T6 zL?}{gtA)i`MEHwAm>Nl48-(R22tp|lwlX^##lzwV!c-^1RCTRJ=tG1H48o+kINPf> z2-j`1%bXP98a0s_W&TW7P>?HXecF>(z?MqQk}^VD#$x|_(!4Gf)Mh>4RUIHI>1PEImZ zSB5Wz3re{o)J^7~1$GX#KNi;7gsCNP)uiv4TZOsUNZT2jz zo~0RiLf$`>KRYbk`4TOErJnrsC0vnrE&P*^TlzGv#=)+Po=>uu{06t|C)Gu~=6}gu zos71qSoa7HYt;?Y%=)I_#b>m%ynFnAc^6MfcHJ|A(+=JPU}BnkpcUXBU!{8~Ag#bG zcZLH6-jo?gl*8yEl1D_wP8H{J4%FKPgOpKW{k5Pwxnj?l#CDnn3A% z2^(0K<#;&MTZ7zi5V!V)@fU{y7M=@$93&WY#VQ;C7HGR|+7lW;U{jdDc+&2tX)pT* zx9aR$T>o-$nEa5VxOa27N&}8ZK271d7i=1;spaFad{V!}t-ss1L_WK5TVvnc57i%? zXjgv?Z|K&);G2ig=^_g74Bas(0LLvDyQ|!jEI)O|yDn|5jAiPJKl2HUYQe{T`dR&h z)}@egGF21|zEvsk{gGx%Hu)r`Y&dS{Enk#MX zZH#x#eT}!gYmZUlKkl|_n}6^9EZ&OW1uQjY2=0YB1L3~KovTB?!AX3{IhMCMe)=s| z%jQ^b_G+OBK$(m$N;PkGCbYct@zc{I^wcz>+1YFX?6J0ds`GO@{hdzQ^4ua-8o@mE)W4fjDN(d(EAO zqX*Ar@Ot1)ca0d_yXzfY^G!Aox@L~6`5@vUJ z-G>hVn)?OjexbR~aE$kBa9m&M-i1Rvjvw*JD#;{0h6~qemAJ%b!^6flwg`ufWX-9o zJC5j>ER$1~Q%#wivYf__3$j^qe9g`3OtEQ8|BBFe(O;xh0$Z95eB8y*BRiz0Ou5FC zkC-yW!TYk18hCqAwgRtdb|MfR=x7llP$`da{tg35#hdP<=qxSABos6ER6K_oyYLzc z={4ya)3>GXPCuO967&%Pf}DpV^{&8z-W84t^vlZec@}@4;~Ts9h!r@0u@xviIwi+< zsyRQFGw)0*&<~d-EQFc?B%M(}IDMm)u=(%ad8_@~UGkU~HN@ zH)q~tcMdqe%6%Dx;r2i*Zp-r3dwgr(re(4M7uLG&@Z*Pre)3cxNPU82&xL5}m?^*FM3?vnCr z?!9t+T<@rb02NiF1`i~%`{KeQxWG1Bf+M7}l!wRNFYzj#YA|Gv;0QGO+As|rCom`8li56DrU!y7V;z^^ zfgI?y#{-%S;XS^|?jj3(`#!X#8-MpeTy9p6u7V?g`iZ8Z+I*LaP%cLjM6HE}A2f3O zpbDQg&-W<@Q0g4L{X)yPV^pBW-N4z|0OXxVd^tOhdIIj9`GLu9h57H{lNo7xd{^yM z!9gu8u;Wc0-&gs*f9J!5|1cMF_wCI01%oH>UY*uQ)Ii%cDrGPiP25TrY~Nokj#iQo z*|ZkNq1jp-_pSW@Ar5c0LmX$d6~~tqVR3Xlt~jP0r4XT?5E4ff+Bge+mNuK+bT5t^ zRTPfYi3S|i;7L?)^Ag%sUP5EbORyGv$+g0~gy;BDuvg=8eLNjsJdCGWdwQ1NDzy9s z(2Zr1%gj7D{bpL9RO@UE-x0^_JuA@RT=j>ZpSD<4yH|nN7FSNK_edA+Lcj=YwNxac z=|c%p@>TRh!SYv-kY&D8=f~mEOi{O3b|x6^-S1W>y#dXa@RU)kgc~pum`VZ&PQRPG4{1 z5c`%(^+ZbDS8G?Xa$`w1%|zGWZVYVtysuh_rz&fT``FL9R?IsGmGW+kpC>0FiJvKU zHTfh8APfBCeN_q%jFy(SG`GpYxwwJxdt%hBZowP*&fiX9W9fJ1iG+fe^ZKBu7gB>4 z@<#Wl8^~`2=^v=W?24`MlY;GV1Ne`17oJjWp45Fvc-YSx+?`_dwL+;EqG+8QT!9DF z{ZTi%0RJ)Gx==t&oMIHv^3Rh#5g3oSssNp_sKCnnXx2E_+y_uI+sCppKXlz&$_uY| zJ7G#i$mBLinb8m4<0Ldb3aNYW20S4B$J;o}RW%ExZ2yDo$=R6?a;DX_a4N3l z`9~Gz`>!v^_rFL{2Cv06wJBO}dhz<9rnU@qX8h0$$4Bjmx;G%WA2%Xx)Lz<$?SwYE z%{BK^+|}_V+NX|%*L$FSn)(kZ8RJ^vIiX!Sy4MKk*GwU8+Uizk;aX>5Y*Y;rwEdXK z`dt`xw`*`XZqWaYx^-gkEWXn&>PC;?3A_=+XkoV^=8w9vxk`H2SL}ZO83bxyQxBu# z+kHa!-}vAfJiz`V)SO-WwBU2NrPg3c&Xj7Hi~eCUt{xFGx@%PjXF734gBV>K+KFse za=fd1j(aLjvXgmM#Prb?YKPm%J zpr`NXU<|)K+*TdNn-lOvUf_O?DS5uF>ekD@Xk#b31{qqZwu1 z=5mmq-JxoCNl*3kiETw4>Y={J{3W*Yb`BZtJAH%zw{5jr#BMZpCXOkbxMS?QQ8&+$GyvheSe4{2lM3wc4|>9>D`R zzZ7k#bDAtjGp@uPDhHonns$jCP4tNNT!u2+lg}}BsKF5}hlXP$gYmfMreQk>0};mxIsH%#<qvyiKVkUDZ8@TUtUpC?9Xru#!oZ zzgoLL^tlRQ=C{uAl>WiBqT5N;<&A?%vb1~Bex5i?9`{x1GQ4l&s7yxz>VDNK@~$q$ zAKI^5;Oyu=dq!{=eFtB?8gZBHSs_0+&UUR{1s$hrCFjhK6oQ0yvEJADk%5q!<$KA^ z`d9&dMD$mTSP(G^vI4lS*{}9C^)Km`zU?i_Irsqnc$-cy?(A*Ka#fY16du|9D@6jC zO|H3D6XfisJYT)_<40C)6EaFoR{Wtn?~xN{cSzqB8UYrN(th~NA#wOc1+ZF{xT^(r z1O{* zapB zf>l-Hs$3^LXsTA=cC_@HhOa*&NiYKXamY0{O`HJa-x^%^_QN?7qJc4J-mPJ&tr;0O zza4`ADH!1W)w;2kQTZ+3Ym$L!UoGD4Sobvg+qYlxMN4!NO0MkXOM#w8HxI$P_~}L# z5#sUk={!f93tfC4Y7SJcH?@8a(9cE}0}g=jxu7%*%WAd1~k^ zQeZDeX5I?Sm*+7F+p_v>e4mM*fq>4%W6{9(lZT7ph?C31#cqfy;ZfeF z-8dpg$ju7yXO7_Wy`n4I(us# zY>J)N-f9JUq>Bb-RUR(s#V~M*R7__8(>DhD0!iHY%8jnd?|3gzkaqT`%pujI|Ernn zK1ap0*ew4)SZM|={x^h<|Gs6ska=)MG1Eh3YzMi*Ov86}rr|HQ4#fJC=NVTUP4q3~ zQ{GEvoy#`vZ29gbIn2NW7V-qS0q{cmrY^pnR&u9Ysk3~0C=@{e^MKP83Un(4{FVkt zv&c7g3$i;swpf8Hj?!@=M^Zu(B1zynpi-YUdx7j-`cz%cjeU{`MszAdJjV7Ja2R2tX`J? z{B!f(ESi49j2otx-r&jnGRw7SeW+XH60B0?;o?qWHbXPtAIA7&8cYw-ALRc$d_wqC8mQJs%JEo(g2ugS~YF#CL$cQ!zBF@mM#2F73t zp((z!AI>oH<17gi38^Jp@g(L?6LAQ&$DccfdwloS;5Fa9bU1u}c^7}Zm-I=ahIO-i zuhReomm+}i1n%WI(mx(wow|q$;HwKRU})pp#F{-fgL4TrqJI-{&Z&o!q_zi@U&_$# zt)d^Q8D*Vifc__A6zicjjHXJ#`-23NF&y*=9)^<@H8jcv=1)q?TIWu*@xQ9%@<KSbXp1ZiVL+%ukkkESC8zZ2qtO6=jzgM zy;X``-{7rnvLo-ltMfaPL9cZkjdwErN$)ZGiPPWavAeg4eqvKO(BUU;D{)ChBB&dT=&Sp)M}=c z)_9;uQ#Hohk~>Kxm*kLK^;#pkzD9H>QFJG0sdWN=RZVmwLXNW-6AcvkY`$Zbb@qqo zIpIMESz!<48R&os_3i4eFnp|rvn0?sHDF1gaWc`nYxFK?vyNz=AyE}*ReuW!xjWE> zwd}}tvKleU2$11ha&Xtrh%lyBPpA*iL3x`yyY5*7&Ga@6Eg2qBTj`L({{~lp=}(t; zHUF;YhR8f^dYAIXOxMGhKSd|pi19ew@4QXtKogsWl-$sU7G|brkC{>8TG6jvU`Bmb z`LWKW=Yf8C^U#uutUzHr5;b$uOGhI1PmU)-qDE*-zm0x7M76ffEeHZMs{V;cQaGXZb)$A~)?Q%iwQ`8&0`+6s*2{007S3TBXpPe5aD|&!}q=>d_Spb zH{?I6-rK0<-#moN21xzj!Ou`Ljjh}Y5#}?nPZNsO*|Gahmc73t8B-!QS#_+`sm^t27xw|-pT9Bgt zW)r4Lryy<}?`>?s0LC$pjh}`NnNhtKI@V2<;#t%I>+Z~TU7=bPZIU+KSaZO$oCvH%c_4-g~U`9pGY*b|HrbW?-aeg=c^ZbFp_|28MmP z2rkS;xS8p@>Gf4nDUP4S=%Q-BpyY^LwXqn(#r<&uaiOBA1s-W>vgQk+oUG_GV&dGmCfHD6JZTHZJf zXN{hclPTSSp@A#)wj;uN*QKsq*@x9Z?R8PD{9LQhKwE`=q?fDU?!rFeY!BSs;t#!z z1B&1AHl9^nqt0seKC7CjuFSEy@9cEqWPJ)Q=={qA9VpQQ7S-8@NoF1c=7`9x0A)SL z!ZY1=NI2b{=56Y7_etI+WG_y}4b1Y)DhMvcSx(?Oxa3FUUH2@O>!~Ff!D=}hcz25Q zPjAxzSLH&vbk?lC!74dB+g152MijA6O;@=pp8`MLro=hDyiHw;PXy6JAlkh&5&g^C zba%Y0dO)2CkWefn5d-?q5ambc#Nz?RhCgX4|3i1E@e%8_w3__vQ801+vfLsY4>_-qkLVtoAaX&^S zvHk_m>Uv`Bi$0eOLz>W7B=?zNNRje2>9ptgrpe7cJGH zKC1V=mX?)nq25}mwm?Hk>W94%`RZN_V_lq%{@ZwV@gQ&GRV5#*?uTR~l}sWTmHuJo zH%#AqUA+WCv77J#CxqmN(NPc@AB`{l%J6RcZL{lZn4e#m^k#I09= z`Zmb;zel$`adhCGRE*`9SY3+S$Y1St+!sGdZFF4GZ**~0T>~4fUUA$B=Hp6^o?Ob& zeZfpv725MvQ*{@BY2!EpnBT}vJM~6wJprF|Y~NPej_v2e zc0j^tdLz?{bu}n*q*W)QVk;$6+vaAB3L59tbk#>d!tSX{g}Obv_PANghOdju^*7y1 z_$(BR&#~gmcnq9z=#M{J@jl0|ILF0{FR|6?)#Lkjm1y7Akst@vRC@$8A=}C7giqMm zxD)E4+S%u}k5i9Wu~acm9H74V816I2FSQ$I@`@q0hW=rx(j|`XH!vQ|Ex9cc4?dF2 z>SS)7J#k94%loNF<@`Pf3C}6+h`&QhdRl>*2nZYJbgOpV^SazGJ}Evhy1u-z^BrfZ zsbNT2-{Ea!{V`oUTaC8wgl<;@zG-RU{Ao$LR8MQ-86`c`*?4GWe^8~1qL)T}V!@5g&+-Y3V zhc`WpJkh6N&Pm1l} zO#zBO6hcbbh^k^8B?t)Q+&5KQRWOe)QXdfl13)6>dc>dVZ{HH1Yc?UWdvAx^A!#64 z#MvenRLDRBJQO0^=Bm1Y)Q}vMuyg8a#xttqGsd1|0Tc^Eb76FlJ7WL2xD`x08zu%q zpvVqd4%?wukqKJL5VZVghh9Y{XemR`VlFcDI$XKiRrLT^M@r9C`4iMm{L>@dpbsdJ zb@11DPNA%kWcMtJMB-%@BJq=0;WkYy@u?zliesItOgid`+$p1?G2 zpUA@c+`;aWSMx9{8hSAd>NsJ1UYg$~HuqbJmLCnC#{DOw5=;8~%aSu^CYSW~m-Wb; z*@Fqg1~CutuU4y_Eu87#xTE7~8AL<~(myV6$|1DSfz4B$A9#f($$J2%bQ;q|ItGpzHy3*NR0#A!DrjMpsokT)_%`lE&^M+T(oa_VhgeiFy8!iN>cB z{Xmnr?qN#Ky14;e!E<=?Wnw%jHZv~z2K&TR(f@7Oo$kfh5LXPX*;YJ~ zqn?$IEMu1C$I8PAXv&evdH##@{4)~s{g)=^BeZ%JwE^g<((xl`ZHmr{$Xe}#>fe8a zhHb!~YGY)sVk!=4V2n;#Q(%j7a^~e=f51GCdxQ*~>f-Zs`wwJ4NMp-nKqy(R*ZC|q zDamF6KFv-Z{7+jSk^aRl?O%+bl2ja6N=d@MSi&Rx3pv6YSSHtXFpS+zC7Ap$1+2|p ziJKh73*muekT3II#X6Eh3K#hd%UhEw#)%$^-;T014Q@xm(!kBG1uqGVjIwyg6F4wFIWNB1zC?9mBjF`GYL=}e9xm>m>@K5dW{GI#$PSCU zUEMpl`7B>#o&`;~Dc2W-Ka=D8O1%MV1ud@1fK`s-tlFM+Xu~ffKIx)tJa{y-n5-;z z4>aj@G?JQ|?(Db}ObQb^5D}k)z|ts`jNk;=+BTiqQPllAz^3yaKp&n4i;MmZv-`Na z9Q@eR`o1-_dpicskFQw2>dxOhk?pIm{kmQJq3rZ}^x7`i(TC(|O)iE|bhibv$qyVr z^N{KnLBoI3E6^}tx>k&JV_(bqY*5UOug|Wi(IgMne$y@|etmZO!SW_|@o(6JFnmgW zn!W)C(rQ3t*Y3k>TeB-_`C6`TO?Itnmm9w!H+@ZdOX$yfFsj<-s+>X(+K7SYS?Q^x5EC_h8t`;KCMnwy#F~S&9k@ zmle7%*S9rz5vmfS{nh=$^p-psup;dp%>20q*6q8SEg6-cpTzb-OGB}tU}ZE9vuGaX z&^+9&<9k}{t4jtDu85MFN_4oi@biij(rcK?xbB(ZX5)r_@vA5H{$r1K#3Cl2PG-b4JJ;DWaC0a3ANtaEE z0}X;VXamuN91Go(a&R`4_H3Hivs>}kDAL;L^;<{jp#v;2ZJS*fG#zaoPK9(R0x=D%lLk2C}_8XjNJUg&pg4K{4%RWPHWxu;ht z9KfF;2b2QMf(Mn;(!%D=5A%HgW-gtqF=e|e7{DDJibT0CkzKM5CAJ@ch6@eb&u2YZfwAEUPj$F;K-HoSdEd8vibBl^<5>ubE4O@;@dF%M_C@> zbN+%vkH0Y4@^`oVip%Xntifx? zB@0&=^M;ysp6{bPUu_<;cTswvYo8yut0k}YtAzacE#6C>>qH@(N|%`&XS=$0;yLF_ za6TeA*a5Pm;;ocwBao8Z9$NCf%g+HH%~UZXN=W*7d|&4K6a$nZ>Se{cG91==xSsc*8a>k3=Tr_o18JY(1k2i( zV!bxTVw6+B&oQ?%+U;$0l+a>-@=9olD&45Sj z&)U%@nN*EDcyvpuF9*bKI@vALs*<{W9@P4a2BCY8I-(C0ihiJ5#EH&T2OeyMpuC6T zp}eOu0Nvj)en*ZD|4a;t=rJ8B{6;uxv(LpsbnHL1m!eyNJL5we(e3&v-y5H_pke!A zWj2~pG#{;z8hX)Jua`MM{E@gKQT4W&30@v8;`Exet@vqMKz4Tb&ppBTVu^OHx-)lQ zabPcH0h_&x$ACG)!O;VWHhgHeuK4IM^Go5Tu<}X2j-=bR%54n43sNvJ;@$DdcsT`15P5mZ&%fLoFCzs} zkjnhzn1S5CfY<{)>RcWF2x}GV$mv=dwyAmEHE40<&`lphrSO8(%*w2H1^UR)pf{y( zEJIwQccsvJvykfQUa7}?|M*mo|Js4Jf9A>D>+-&g*YT-^ti0OKJ6s+Z+z)T$N@P=( z4_!;nkN?D6(Q~hP-gT+@@t@&Zc>f&zsb#>Tf5r-g^W&aOohK=oN-afN)QnbE`flkz z!N22a%C<(1k87_2<4(Pl7wPa3gWZmqxgrx;MnY&$qvC!{4j5~X_!`-cyfbUS5Xd(7Fe*f0^|WC+q%I19sTIs5eMj*24 z&^@dlj@%IT!n_5?F_qq7!U`sZ003!&tWE>jb%1paEkaeqP!B|3lDbT)&h|9`K7NnR z!R7jDnfcNgGuAHGw~4v2ocQpj&HA;EZb_0 zW9?lJfm0o^!vzXjm<@Bp&}j|rNB!&@sRRWK9Lw>xE4d>(`#d?lOx8QG@3@jL6C*$% z_M>VZ@t(zCfe(ihdTX*P*67sX$2y_+QEvMC5a58E@Bm=6!mRMf^VVYUug&!xkljxB zpdcJ}I0AH~%JLX7U_i~t_jhOSFRDh8^0VyP&!HzDXIHG#NS|n=&vMg0L6Wk6uJ7CI z+Aok?3}siW)ldACUHdIGsToh;voBWWr?cl>hQ;o^vdy|=Bo}X#_YF)aWrD=Mt*6FaALGL_!f^r~Q8q#Nn+`BTUb zJ_Ooe8f*w`rbU(~Q3^;G_Z)GO(}y563_!>|a}>%dIUj1%b`%<*M+T~!oc@XkVq%(xh~0ZAsQL<3mfb`c>U)(_l#)31y2-JP`XU z7Q>K0W>$*jFH6NP)UH^#PJ!To38>ddNa(H%^#NoNc7E)X6C69VPj6c*xXIXjbOZBkH7 z4l)3rsT=U&3h0yHSpifT*o81sbbiO<{C1pY57Z_~n=9pMVE41@EL&B!s$Lfz$J62Z znV!edufK`?p?|Yf#}7|y|7I5j3jaoI68sxE!oS(e>kRI|;Z&?0$O+7Cg05wI8xo*w zn8RD2B7@vsY?q$>TM8SE^qL+={i73QcGlxR8Kc`;&fH~vrvDm14ZS(;Lx1w7@9E>{|5u_f!y@3 z@L9tB(9~StUU?|+xLc3S>+}>O`6Iwe0%_MmM+IT3>%s$mYpUx_)s~nyF$&qAox{or z)aqzyuVpa)bH&W!uC?24nTB4dnSXh65+)9;2RSL7Zcs*97Zbqfh%E5nO3Qc=kYrETaGc)3CMGdcJ ze0_#ZbbSBo+s;noDd`$~aY9B}>Vddo%mNg`4J&}nLwtTaPP3C+`A}F-V2_bQsR}Tg z!(qfGpdXKfr=Wc(T$m24HXIfXJ}2zc%#b!{$M>StuH@JzO!BLJA(?2l!&m5El#T}P zFr&*svR5LnSfg(QSG}1R;y;zFFbOkN>)ubz;L@( zp~u2#(I?u!+4%GFKP}NIeZ@ylA5g z*XspoY~LxE{~t+-SgsWX=VAfC8;OwRTiC)D=gP$jTb<>DdZlqvB@HpIB=$bCLo^fP zuE|c{icxC1Yef-=9Db_{-p^jynSWim4JI%?q+gPyB@B$$q!R$b3p>ADpB`2Q?dFD~ z=1n%FiJG?o(nQU_b*<=eg4wnY(`84^T;ze@-=)z))fqLrH-ZgJ5Z)u3$;ZslCu_7PUqo3(xpC!X{W zf7p3;W!ZIL9YNGitOsw4?u$~tbKCSkN7uvG%i`4QSi>F`tD}#}{7g5)aOkyIN+k4u zE3>cKmFz`=BK+sPybi>>EPf0yZrQ> zU2T<$k)Ni2ctrb$JL!a19AGYl{$V+f@DJq(hk{-fS9>ktG0<~+yEggdk_&BPMwk3- zOqgN;D-wg_Q%kU)M<-m2*GLx{My@PU9`7(XsP54TRB=`P3}B9@P{WI?*I5QwD88 z0sSwy2gtnSXYO(Z_>J0pJOL&LyYumFV6GJR&uW)A+TWp_2kT5v@jzUd8Uzl$e1@;( zAepG*|FyG)`%lWFYb2RcxF=ZOyL-rSVh43?=i``kb^YJO-wx*hQVN z#a!w@E56BmUW^up>$-R0n4$OKxT>0|il{IAJvy*{`$JLowl@jlvC6QxlYCnc={`<6 zqcygw`c*qyy!@b#EZUO3hz-tch)E`|Sh>wr#hutByOOo9+Lq;dXg!0vaug9YX1g9* zlasN-Rdp>ML;K(fS7jHR6-8Ca^Ks{@zQ2gy@u#qSeoF?YlzJu`R~g|~rKLaw=n$4otoRdO0_MH+1}_tr+~8h%H{ z@*92C+V`ujglD(*63e_Ot0R!I5R;q=lPs;wE|@0LbBY+;<#7`6M3_BD$m72{(c{Nr zGmw+TW;o_&su`IyB&lq(EZH3Z8$HV35C1(KU}MnZ^{R%dXf7mP45~2$k7J2RbD)?h zcEk*|p?z$_Or~HmjPWq}`DUy?Y2}f$F8s3pbTreMSo`_;{RJz2o&VJFI2;^rexK_r zF}}bW{ePI>e}3_C{U>JL98>#ZzuVbXcT8K~kCOgH`JUALU&wdp@?R(4XX9gQ$p22h zGLw0TGnxM@|1|H>|3<#M<9<=Tu6v%KU2Ux&7|kt?14zd9ytmOQV-5`PH4wF+{ajT$ zsauGRF(-+>kBp;hMOKCfi*T@VfrT*{R_5(#B^kLH^{|6T8nY8(bm0eI^s22#{;AC& z+z?!pfg1w~`XTZgFnYVOmgjaEDHg5Ax^;X?ur4d($C3$RUva%S&#Y#jj#+V}RxZlR zyd4fQ1_%5;adyTSZGJB_VCUFi+RkT%PJw0Zt&Qx7`p^|uI^lo&^ljBxiZM*wFa*es zRUG)euLcZx$iM9VhpD_xPh071?e`WXw_3k}VVbY0XWP64lx~R6vogkjyV_7ks7N?z z;OH-H0!i^dn~%}|;ToVe!Q_B&eCxW03oy{WNZe0jgYpj=aS~j=G|~iXdScmXH9>Yt zw(lS(ynn2yV@?!-bT;yqIq_T4kD0(c1D{3eV!nH%1M_!bYY`&UtG_?Ydch@wQSHZ{ zzMjx zP2R%;@B=wXcaihMmzJzH$^nm3mtLkWSvjaeWZjWeW?<+k@qkeoXlxd0gJmSuvaV@w z$KiqV+iS?ky0ncU$mIyKuJKKFzN1br1Xz=fEy)L28Ej4L5ij~_XD#^o%upSo46J{8 z2>ll)P#AtLl&fwal+@7kdgWOGT<${nQ)p7!$G$(A_6?>-ywb=Rq~nKQ$dCR0aNGV1 zP571hvF2B_exs5|o7v8hC^@Eke{Ftj+{V`VF|@nn#|Hk|{8*2p$5HcNl^>JzeVZJQ z~wqqps2TWpki#)CCo-1^SBI!Vc zC@Jjr2vOvS5QSet$g6t?1{?DyFUbP$^*Qbl`X_7{Mx%5Y3`KLhS(#HRGKLJn_np)5 zi2?nMReck)9FnOpfj1Ug!>1I0igm<=<~}Z;1!7KufYsRP4WBL0vv$Yzaq_jU2G^^| zi>|5MhGaq@;RRe)<4QjT*Yo8CE?Y^%ivqj^wZgm085togGR0E7V@F9=z+A>{E?Fl> z@s{_JS9eSTIKKqh^GTd?pun%RoJcR476)c9p{0{Mj$eVT&y#WgBi9tRx%DYx>4 zfL<+wAD`SyyV*dy*`Ri$ay-2Sx6MX?K*FxcXT+)PC0vCsYdiF$Dh80dfqf21VWX+< zBmS%mpay;Yr9e^Mloh2p&*Q#KT7tg4UUz?P%MNY^x-636um#^n+yOler?%Y@t^iks z(DX8{V(=)j6Zik-`w^#PC0ckpz4v7OD-KZ5T(+1R4><=U(i-I^V z7x6Qi{B}$|?Z;GFaEq1-!o0G@s@>lKUUqko|7~~gCD|WdPx*KD__}ou{sAhgmSHJ_ z{J@PKe9#DZnLCjK2@id7W}K=YtG5U+GN4Jc7)4B?P|MV7Uw(;CZvST&X!5rj?9I=R zYtN1EPm06uS7LD!UsNw}K>$o?;F4vyp&pa<0j)JF$X}mP{nvbi7PIq5TDnH$ZA464 zEMu<<{OB}8kWX;t&&?hg|8)??UJNYLKm|I4CeXXsu{CmdqG~Fk>hm5lTx*s8Fn*15 zqX*Byy~@)2(|5}L^sN!AA34+Z|3ylywS5aDWM7A0fBr3c1b##Df@>&RL^iP41r+)~ zbgD-Dkj zGpG3A)sO_&sdFl*qLDDOp7UPf*~tdNdeek+wxd(a3bs|l_x(R<31-ul ziGP0!>YhsZq)|N^w=m=PD2p==)cu zx~gW&eG7i(l^FSp2I8v;X(czKwi&2xM#;5Q&4Fx^G*joQ=VaGEEC4p_x>iijqW6)O zm2rnGXFE-Hu8tJ{Xrg}dR6Ys%6QD7&$9FhRMyBBRJ8&O1KPJc0{@*#74t9&x{xRe) z+b>2XB7c5T$xvtY>-oWqDQ`&idrCKv?M$d#=E&q$-cFSK(^^%N66g+ac<-TgWK?3K4|YOm={P_PiG7{HRX z+|0aX;ExzJw!0R{w;J&Io!b4_%HN?KmWIe;?t#cI;**_g%pO?824mfql{cMIyuQ4t ze{pSjQ}5z8%bWTYchgbU4JLj&Tw*ebW7%?u9BEN9ci8#G-*F}*Mb~{K6o^XS2&2{ynyFR`5NxXYxXVkChy_R_VVT=KD|=ES;X@V zeDf5(Sr)lvmfD)zCL0%76=xE=Xvk{P#sm`U!oAN+iq_)xp^33lZWAO$-@{r ziz<`j)VLARk+TH~|%HrzdPk?AZ@L5y@3P^Za6}+^;OG{L0q5(IWNW4_B zS{vjdv|b`)C8FYnO@J+|#+J6U`dVylOD|U1TEt6j0?I}E)+nulSOux}*~V71eHFyY z|NA@hJe$o0EARjR=M#1=&s@%&IdkUBnVB=oqTj}4lDYd-p4Rw%rJJZqlN0iu*IY7H zSJPBr@V>?p^SbvnhB$wbl1S9#-Hl@T$2)(i{4wX}=5=Fqiu2dVKg;=R+iwfrYaAf;GW+RjltDa=zE_{ae9z0if?c zvhOH3pc$hAAGG5)D%j)vMIl8HZ{)a@cu77kt)mu=02}^vrSj2}dDP)O@^G{dF6x)Y z=poLtEPANE1hz6%n20)}wfg11vy&(N9_vGFW;Dq(6ans>QUM{Fz;DF8*8KK5$r2YG zQIZw-MP4px2brz5cz4SW*jkhY*q*{Q*mN)p&$6g)god!GFoVtb^OFH=kRFuDPY7F) z(#!%duw$dvuHMIp03-&VWD`EyI*$WO;>GpAke~>`(1>d=EOH)aA;-ZGjCk}%{+ZP8 zt!ZQV@EA-ud{N1p_=1Wrl{vr_;0v+pFc|?@a#i6-Q%F3s;CSP2dgh`p288dB>Z`!* ztD&5Tm3*+^x#Y9Gn%lXoy2YOD);g+CsBd^mJY#E zEjORd5`BKcMuP^IJEQmWItd{*{<-kz#{Yf1YN+wgfgf#w70T84xA48uB6Ay~L(F|5 zT5K+|H*V$95wVgpSa;qVt=4RoKD~^f?#;5!nxdGFnX1I3#p{*lq%&L|8(E|*6^7EM zk09Fco0F?|N3O%qbh(UQk*ijGD}DNYa%Cq-CqL%oUvDQpgQu$#3pjEJv-^x2!F@B^LM;)Sh;jsVP*Q{yLOeZF^@IGGEJ3v@vXM2p}ut6Q4_sK zkY)`2nYjSYldQB5(pd1CEsYEgc#QFd`4fF)lc#*W>w+Spz8n1&m7ZDVN` z#o)j{bp(iDgj?TgrLMk(8(AMiYSp$Sq(hLR0+8^v*RjLUoY}@wOEsVFE&gWEh_Ue- z0sycd*|?SjJ=CwkmRtX?haY79{apQ51ofZnHQv_WA>nkd@g}^6f3w~q_)5IStAg(n zyvB>d@A_2gH62MQA<`NT=?UUoST{xv64tACmgHp~V%Al4lfA{K(0WIoim31we>Xtg zIbP!$j{J0{j~M;0NK4u@i(*1h)xT2+cf&7lX6FKY*|38I_`w||0si*FF;w&U@w%|q z#y5!TR%MxqeL1xn{{8J38$T$zI)$n;SjBbrKUDRFaT$VIs~NrQy^RsCX$D`jz)a~G zm>l{Nm+-%F+Cjqc)7Ol?_p(1IASQcF|G=BAb|--f#s#LuDx=ssyDeJeKQu{oaMC1} z`tp!iYI0F>!mv%#U=WAIQs+f@@F}@5;{WXsv6zDxXrllmGbaFJ>b#Q$%@@4JJ2{;< z)A+|18UG3pKhF;QQ@f<7M)O*EcQy9ngPn(+=sOY0Gcz*0j=% zU7O||Y||#aO4Gj0^fR-pVgE~c-r}ztpKRFw3;d(#HsEX6eQISNlFaa*XL6NKKr)^pr61j4t}}drv@X$)7v~$J|1uA9 zlpZN!Ff5P0k4N&;J|2J3`n0~AMKPzz;h$*n4v6459ko2-T1%fhZ3a^g4|De zMdP3Ai&^}x%8S=`W&pa~m__d81iEpffDhTw-#S(;ItUOR+71YL6sz&ou>a?I@!LDs z{}&z_&DQ@Cfo}D8nqUozBZ?0aim^b^oVkV41q36aQEyFWW+@_P{5I@=obhp0Fg|{h z7r!oqOy^UW|9b*2K#wFf|IslA30U*Xpl2tqZJK=2uzzh{{3~Idjhl(@0UJ5&*edPA z>jwwbC&N_fbrddS(Bh^V{MlMB>A6-oNGN1jt#^L$46*32KDe2~q2aw~OuK{MgQjpM+a z)t}kR%|)SnA4IlGVhjFu{L?h-C7(9ze{ZxH$nB zeqQ{hur5d6Q+lef%ocOG)qdlogRJ(aFS+^upRWD1x#{ot!^#_X5a`y>PQ%`sJM3WV zJ%xHRNea*Q|694^Yj)4o=Fpv0`@o3@+1$rpq}u)zt{(k+Ui_=shQ80c5#1WvL2*{y z=?7a~CDloPm-!B*2lUmHb~Tx#7w9*gz*onIEIilt1WzaF)A;T8PdG>nJo+av&@TYz zsQh_R!6(pq=hsE$7Ub6rmwQxx-BFpH?_~L(ru*d#jn4Bw-@_??4@@CD<(m#*Y0rXE%^5|dYD@abb6aD_i*%f;uaAlx0F-lD*Cz*)U%dAq1*msk zfR4|3Tjc5JcXWPN`6bHNY=;ac06se_2s*~M4W=&~4|Wblgt`tOY>{$i{Fu;{yMX%1UZ?8*#F~m7&x4S09d*~SXT4Px_uEI|aohH$ zos-G~?HmqA;-&dn&;HN01rw{5_O4obLE*%umqc{&br<@en-nJ8O*XOmf zjOO9Nf=7q3Z}6{s+$d1dS|~|pWyb`}4XTEH8fXxzK%+_r1D>l-DPLms^TbB#1I{Q9 zsa!gf)6F*&Ri(H|`x^8vNX0(ePpn|$RE3K<%4SONp$a>YDa<^g8b+N;1>m=W7vIyY zHo=EW4+q0qH5@jN(M|vryh0H|*vC8uXK?)RijsZtp|Z7@o}b@-cU9_T{4&jG)i)$3 zyzz*Lp5Eof=`3DeqW^U=r5&BV@N)mB^#0@a?+P(NA2mFsu3K*>Ys7&zxV;ii8MGt4 z6}sNoW6(ZfQ-F>MiN#56yBoJE#m(XuGH(VA@`I$BlxT~sUw1gaTfgomV7qkYE{po+ zvSo=&Z|uRb$?QY(&>bH+&+_PgJW@UiO#fTF+@kiYo{HqgBHe~o-I!4n*ZCx!uJa+* zvaX#km8F`dGwGW3bS7O*cJo_R$;;j{Syl+qUs1B(Tm0amLdD;z#{OFfQn3~9|5^4G zD_Z}3cGal2F>-ahz7$ekRqAcgLmP==V>uug8WwdceGTmJ3b>2O{6oNyIY6o`WjSM| zV0fYtOB=-st1ad-x0?%j;DXhyIEK|%%mY?mb)MzX*YJc`HTls$bBJrQL+#T>*E}x!LlqLWXIA^M0fPo_|Kv5OY9UJy8@{l z=&3oFGH(C4_x$ZVJI1{G3xOQuilyGnE`W3LPYw8nlGRXnEd8)ml9S}~IZ3+JzeSu{ zC%?eFnk_b?t```hLUp!ZsaMcC;K+r4XD~kPGvmC6`kxGvNSafNc>m~yy041bMLr=q zp~(e(xNUqf?S4>zg!R!NH7whB_)kvbrsmd9G8HQ}sA4sO*u%OgIpJ%+o(5|fp}w_Y z)xlrp*}MvWkqA}g$^!y?n5K8Xt;*WOSl$S14^#O>?~ZU{pZo!6jAawZ{eXdrXu<8{P+oF ziL;``@zJn36+9xg(G`QA9g1U1yptfN2coM82OCid>z6xrWKo!dzgPCS{?7$Y=@kxv zYYxI8@GHA~Urks*j}fdenqpjLABO|M(xL{wLa*S0^l77I z8YE9})AvPu%YpNo!8ie(pXUp!^%TE^UQwv7AHLhn7sppCAB#Cx6Wi_OKvz$spwlE; zRq}?n=%++XPDiJ!$BU@-{EdBfkuUGU^jW*A(sxA4Ho_2zCg`M`@?VOI4m*Eixn>pS z%%Kd`+IKkGhWO#i2rEcV7;K5Ti0C%2H7*RVTEFMC>$k!9%iPb7hK?1qP_RycMhp)H zzx?r7BT0uAL;!$h|MqT9t+5Mk1BDT5nIIp_lm(^pNC-ibd~_O>G1fktJIHoWa`*E! z`2l>DX}B5Viz8T*MW_-vmd+VdzVsZ~+6bH9A*5vGA193X85HncXKZd@GMZX=$f(cl zKVu%S4fq7@#;*ktrx*#)i#C?LrUjrzxyaAvB4O>YcqbM~e$Io=3>CNn<~&IcyDd>5 zO0lIpOGwj{@2zPTlEzp$Fk`r%@cf>M4G<2 zn9nv>wFKgt&J+tSYc!8Z&S$`boW)LqH%sJbtB z8sB(_)}2p^US89uSXgzW8WesX#jBR2@|r$Cy{+$`w^F))f0^&x$MhDRNkPHAPZs>L zj#u#$U{X zWG6|Su2>%ZD;`(IY|3EhCy2;v_L`b-2r z6fZvTDxA#tKyg{(jNScs7$O zvFV#s9pWL22H`6}gK(@~Tp|}VYz@LIaD@iBLPN9SLBj)z7aCsZ-3<*Y*3h6r)MSoV zzkG;Z@O7eFS2UC-Cye?jXlRaeP%zZ8L19@i&Mj^)in+sQSG?;upy1WvvDsf!+l90s zr-V;oMN^9-y8r88Fu&?MHrrhy+)jb6E*@EyeEr|$OD-O1luXNF8_ye}1`6ApX1Sa_ z?8|?m4n+lXd8GZs%Jk)|KlfCI_H)n7z&=wO+m8qf&;#Bq#Z*-K^a<~9Gf9W_pD;Nt zD|Tf)x${39Tk^M>t>&ulW>Jj7dxCI%5EibiZ-cP9Md1~y7RYM_zBUc-jVAbHcS-mp zs$Gp+zJ%wkEa`G%c0{)jY!+FF-DSaRhW`3^$zLmN`lyTTNGxf#60S&}c7*1V8a1v^ z2|7gScaenD6v*>9z96D4=9kb@3f1+;H(kD&&2=~7pCUhdJUmEazAsTl4ZbX+E_vQt zbi5)21Eeu4wz1C^@-P~QZ>dUOiGT*p>ibz+oPhR&AFIy}i)}35Qm8NOM~{2Kzw56E zXalmPs-WbATP!73JuyZv(M%}MX@5tfMg)y&M^-9`-X~#9+F6FIviQGR>}Hrfxqzz* zjWHpNbK&JnOOcV7iE!&Em+~s_iHj3555}a7Nx(0i=Tto>fK|w@nj8d$tsX+I{ z`a8M5x0e=6t8hp4H20UK{)t@}o1b%tdc@m~sOhx_?2Mnp=orbRIw{31PrZuOno_iB zI5GOLoVf8d)s8urB|hv`cPqd7b^Yu%QhOcpHzsGe%&@;58ybPh2wV|_z4)+Ca^4m5 zbVJd#R|8aE#R`Qj=1jG-91f{w1DeB!Xl^YLDA4#Mj4?;)p1^*Ng?LRL(j#4Q5pPa5PYyHHM0_drff`o}_J4A)JMch({V21d0?`9elC#(gp%wO7%qm zC{Hz(xhAHzX{@~eyc5mUAn9>6BW6#U1FP`II;2R=sZn-2lk1l1USwf{935*NFm55OmTCsIg=k5qS zLLh?KM>vC#LPlSs8P=&wrT@@p3d%!w#9O@`V8~u;P$AE3@usYUf>S$z&&DKE_A?pY zP%0Rr`;tKm+}*zdu6~GducXw)vXzGf?}Or>RSrUbYN(EW)({@?q0YCp9=Dlab|o9BP?Q(O1X z+*n#%ihNpHH~^f)(gV)BLIOB5vU~F?mXaO9fW}iX1lRkl*u%wcTa+bL9ce!@mab?1 zb}_QA`6`HUr{h!AWANGZS&cjt@VzzPP0+k0Q%+g>b+uSEXy(O=@6F}0bpMMPgLnLf zF$gWFuVbmBo<$7fzjgzM8w7{4Yxitndx8ItS2TronTuh-H}53g9{2ITn)P~`Km9AS zVZXY=I}vY>!V3Z^Hi65dCrO{c`^Em_PpHc7f{U~pGM8`?433nUOR^$MCmn~oA2?hM zOTJYjX<$k$t)J}01?emjU^fssczHCKixExkBwiPXbYrkAv6nUed=ZUy#h6IT^%S66 zSSv6_8<+fGBSbs>r&;@T^nPKp@ILk(ao6{^#aj2C9UJwBisYVN@i_qB=ajO5SYf0ktZdio6f-{i9eQQavg2`KR*(pn`dZ3VGqT5Pj#6)W!ek;6*ZDpD# zn3o6q&%aO1tMVqcYE@dQN;&|0SKY>{6cd7U_th}V3yUgK8+m;VY2TmoG*V4A)0;i$ zzjwLpO4K4CSS)s_;nmk&5)?sICbfw25mvSexNPC%Q+_wTJHWd?$ec|FI@A+T_Z6C% ztyhv8!Tg35!u(LtUrzJhfRh{EBjEin`-Jy>@V{H#`mjZ~Xn0Db!SZLL_O2|y?O(Zr z3W3-GKNB*8{j4HE8l2XaxR_Y04#=w;28rGq)v~NCv2R3Oe||@CAt+9%XPJlPii)7D<x%9Y^mx zlD*y{(bMGgS$9;XURKAqkmrJpefHtdo;TU$I-(6#7qUo z1zU3+%r<1c9B$wke z#*cc7Vjge`GNd4t)5mN2E74^QXGN#R>u&U#wkZ)Z?s)hNSBNm)GbJpcZdA5b?9Zv* zh}Fw3)`v*AjT9$hOPK54#?thqYCy#b9Gd{{H4nrm@F{V5^m}+>Y3?)oi`Z%u_y0d4 zRi=~2CvF4e=J+kJ3)L_bdmI|2cqMGtC?Jp&KwCatKi5TP0orZR+p0=F^cJ233gFNC z^W)>n61V5M{U8eA>{9GQo9Ga@$mVNj*!3WQc|C|0_(ihgPc2Jtl7rR4`K)09(o)9XJc}qzHLA&!ZgiDMn3BZEryd z-QI$lniv04IU`S#oEsmN+FCf7FO%6?;Mj-lDqNU8iCu;3nIk4Dx6XY8+X|I;sUQ2F zA8spPzqTUP#@51V&xv2I2S73g5@RLm& zZe!tpa_0_BBAP$;WcL?J3)INBmZ+`F9|^h4ALc@&D+nj*KW+O9H`xAy4x!op!avMo z`wPva(yB;{c9H&aTumq|tyEVElTfpw)791C{(@D41$t6xf1#A;aTxz@e?eQ~0pXUK z*GZSv&R?W~SL6J)?_P_a?nJqUCs*yOM3qbHi#eNFxpbE7dzX)&!u4%&9z^e6b+_}& z{(`#=(mroyb5+S(bp;%0ZU3s~##PpoUF>GPZ7{5)bV&_sl?o0nbiuK$ zp)hb|)<%Qy0dx*QdPO+S44OTl^WnB+*l|g4!BQ5LC2U;_7kbszsuHP13597L8XGsL#*BrA3Y5 zTI60^i{uVa8=o4ju7+Tf!GK`on)JBy;99*3?8NU9glgWgt@}*zIc%2int4dzs zf+><1$KI}#8dYdV$*IEOj{SF6r7Pe>L=v4o3p0HZR@Z+`gI5~U-G%yM8q>F*L6`R{ z5kpptsVMoEx9AATicWR<@ugmGr4GoJihWvXV!v(WZV~`0ZY{8UqT-I}3CQ!UutLhP z`9TFn=5v2!z=C0+2{JJ6qgp+H;|J*ldFzU8euzjC3#wDp1)(9vYILjTC^hGgOuOm;N4q*G)UGN< z?em9G3K^RTJN>GLPpbMPZ_VA3`Ic0lvh;2tL(r|1o1<4fex=i^iXuAeRi9d-250rE z-`XfpJC8MVVekik*zfry)#^?^(%~)W@P6>D`1n>OcpGnzth=*T)xY+~s;;}J-$kdY z_GhkSA)l4@yL-gHJM4Robowg|Tk-E9a^c_RLLWAKVPmECeOa&`xYverMe5~oFN}MS zCELVtnunD6iWZEuy2u2P4n#_Rl4jf_Nc z+ymjWbV*(GbW`sJLbupqD06EJz$u=vdu3{$9n}iXZ|O)wS>Jz_FS#oE+3^PHbmORpDoA3mtgD_x~Vi)wZyd$p6($C#ZxxcDy#V z<<6LW!`vD1qstQW`_#ofYX;8(=rZ1C+xuB?t#yN%mKljxQ1Z$-suqgS=x#CB70I+J zC~YB>1yj`n?{d4W7+lj6HvLD&Q3CY8RVC2DJIr-Q#TX8|3F?mCzi@R&?>%#uITHyG znzDIJp?l;K_JgovI}C%0)E{-SC%fWG4@W$l+6WOeyX{TO>6R?YWGj|Y(7=7acSpDM z-T&qE4oOw3gHr3}3K`J^<<{LSdl_MdG+`u5A|2G>`d$Q4%5e&NQuvS7`2tSJ$ehG& zEjB;$?-*tC2gi2r7+jSukN#Vc^ZHMuFAtrZESlD#y06i_6Wv zbroaxsLd6vd(N&LwXQP%1s;2zdzKhnjqc2`b#*C+l4xG~^jDwJHZ&%0^&Y$**}EOK zu8$BgX`ic*aA!GmHVSP3OFexa`)pO}*^04yD_VC^&0cNt73GU<`gU-X5nX z|HYL(Pe|Bjx~J=kq4ON%_V@ZrKqt_izMO(beO0Qy z8ZRYVOtVyR|u=Q2LWL|AXKKd`CqRQ0K%%o1d$jFg32n=7v*Pu zDk@M2`px{eRt_ca&pFbbujMEfV=%iBhXHy>;pz2%-mi?D-)BBgli}ubK)UE2Msw+r z9K`;hU;NMX|E(&FJ-Z{x0iEgLt4-z=scHY4fWH6Q+%~^`-GPYgru%v(vW)iMI#X3g z$kEplA+VGEVpFS)nHlpIwD@aZVEvUI@ccq8xU~fg+0jh}v)?>1?{QYN$Uwx}EKcY9 zWB>H}eyIwXdNE2}vgKyX1K0K5Uz+%+xGux*r|bBLHEziBx~!RXnAtYpQ`_FvTBgwd z!GHgG|GV1EEzC&&+5vHAUtk|s1l(nO*mf(^yFjjI7D@o9W+CbSGz%><*I6B8+ZN5> zXDLNBVq>(N$EomP29)_gWXX?~PLEVZFSRqs7pcb7vyYZiia&1wHi~#3sY!g;i*Oy@ z8(68$b841vjOdCV+c__fo)*(U>ZcMkT%OJDH*b<@(s+&cNdI0l8}?40A;Zd7_3D+_ zcWr#|T9PwVLOKiiE9vG;^_rxbM887Xz05jqOfZttJf_p`4m%P-{Ctka>KVvAb zVehqbrcSRL-LSVVKIew`7nN;Q&)M|p?^pI%BKR8-#{@8{N{!}vLrcIPZ#Uf3dEVtM z&IqjAr|$xjzomuKpBM7em4oUAwJc;u%a@c#kCPhxcz@A7-AEmVU8Jr3DC0}%q-{E$ z@wNS9h#yjN^dog#XZjb7$HY?Mugow2Q6nIx3y7Hl;#wOaL)Vg&}+*F@emYl zi;R|NZLwN=nzi<`)>?$Qj`75txlQwzzwgOUhSF2N`^iw6c?O2nF$T3hS`CWb{>b7% z;F0?^nyy$MX)`yL4qVBH7LR;rF7lzd2#C0hOl=w2@stnoNW=A!x!gsTt7i}-8Jb4| zoz}aqgyl|ggeKBx9Nuc;4##Qgp*F=PL8Oih0{k$JE8Xp5UP4C()fgQa z#AV@`m-#K}j75x{*>J|Jx$#31^Lt%acLsqu*TMt%O2jpFV>8R~I{mR)#hwRY<+yHY zU4JFM29{AvT!;*?Q0O&YO^ntS>K=Pg@Ltn+R4u)@&}u!>)!N@`4eYE8lB+ z4u6$ijT6pI9t#D|C6tTb?GCL_6cW@^`}cTcaNw$I^4g)wl-q%2h1N0K?3ea zks!Pu)$#pH!S|~V@V$iZWgE^Nsh_iHH3ToI)I8(yKq8ZH`Y{*(=5sn#>J)_{5q;*5 zEihX)#0yD#9uc-KRv{+c%Vm9~#0rZAGmY;ZKRVC<) zhpl`_PI&8Pq0v-LLbmCQ`IWl3G}3;&F0`>|&?gEh`W>e~&%E5Nx|CldR^O5n9YWM)&>3I8$Ky&Ji6hCk99NR>By*QV&%+gv$|j&z1z}}V zcr7kOyX`di!^8jR#2=bo3;Dx6!G|_llAQ4SInzElf5>~BK{M;4r5E?(8KPWXY|M0PpKRkZ1;}2GTx*LDEjf4SzxZ6^4lBE+QAKauC8Gi^MG5!!h z@*nv_0M8(*@ryfw(i4C9$D;;~e@G4}$qDlegd%m71HtVw5p+-_Rs(VS=vaEiN`VfS z3~K!z#rcn2)PdmSgcCc;vhE(3Xd#brJnMDav9huhZye51!6ho|hMclAzwS^P_!ify zkc+=2OMl zL5^1mT8>WqWrWf)v|IS9Q4|Az3X7~1o+5lAZ75ztz1rMm77t2m2x_QL$F-q8(|MLf zuf^k6VgXP?y^w&0dc@pi(IL1D^&%V%^(d}}`f=tiiyn`wPFA+up{{J>zN3-38>{B+1+>FihgrYv`dwx=69yJ$2h@wlmuf8W~B!W z+0t`1VRlD=a;;?)-W`P9lIH(-lUPdNO%%jNb{h`QMs4GGg{@Ea7J6x!FNc_p>Q@%N zhgg}uBA-UEwyo9LS_ji_ifRQ&MA&KQ!J_P+V{5-dIz}pPeY4NR^fhh4_(*=(cV6GJ zrd2Ah|0`Cc|+{)vay>LdzDVeCifOHAbx=qh9#+P}f;33mY9Err=Kgo&2)r2)q>ob3y=ILvR=%w}w@hV8P zzez4(Wl(r4ZfbX{Kjd+&t-(JxvutO?Eg_(#Whp3%wq_#Un$4+AF3GopB#9u&c$b9t zv9n3)ED0JV6;Z73d_*PkZp=HORl0x^FOX&hUBFi`2&eis1%=fzt}Z*7DR|spJ59m8 zwvJ|h*B?f#);#LDQm)vr);aI18pgKq>wvBD@(m z!-1P@g$GTx?F>05d<#=R6Z=;46_at3Rgt z732Ttr+?-(x$jxJ+OzQ-PrUHWlbz`%*V{$_4 zY%8A){J>CMs(F)O!FtnLdBS-AJ3rC5JJ4i0U&VxrfD2c3Or@EJ>?o|pxjQ8OO$zY9pfVfa z^?1m%2uB0Fb&MO}wW2}>xIXijmwKn+&Ai=td980oQqMH(%;Q>R>(2gt|B!mV;q~1f zf!7QBzU!^wDcwGO-%alH`aYk#N?uG6yf7X~z;) zsv8;4Qy6B#{c?{#1ocUy4-q=Cj|B8@Pwe=Cw@V_ zFHOp+w}U63zYTc8=~k)@MTc$27BmzcTW|+p{KE}~LoKy22G{m1V{l+}XAA)_pAj(U zcLJsd#;|IJQ1PGnLc+IorjcMOt-@_-XmSEd}R*%Tdw-Ii+!an=sBhT6-}g&NQ^cD7t-2l@%ILH zmKgqo5n6ZS*!cilJ0D;!=L2vhdF(LPUBPFk0d?+gAec}--!m-!WwjGRYm6rNAOY|W zJ+Rk1-WR3q3z>TKnu_$AuEw;NMcvEP9?F-81j$~L-7i!3elAFc{FFHdKb4~K9fi+d zws05N8t~^Y*U-Y(YzLmJTm^$Z!iH1Zsay9iHDkx`73Sr+x27bQ3H;FVg`hf-w|z}} zTaWhkGy>Azt|v>PzSlKg<5onS%)-GJhu-!}8HBOCd(rn7$4QC(}gyMExB&so^V zG(Yx>&;9=a5rV3P(gjrrWm^yylp0v-VJ+f{%|%~?iy%^pqa|oLt}Q_)IS(2mJbvnR z>E6A@frn_9kkER?W~nsM zkxGl0%kmbN(u#0YnmXA^JI;An;NtP$zSxyDkFvbTy@9p_mpT`UN5kT1CA?2CI*;Lj%Zt4PKSF}`)@5Jc(H*4HC_pKsk!*mo0= zm3=q$$n(VCwBfX~xB9d@z_9(_nlFf20`!CsikS#qf>47}Ju9}b+uToRWeox@m~bY8vKoe^;i%4F7@VaN z)k`X|+FVBz4D%X-8s<7OYr}k|^Pq*pqY~TCkO6)6*WooPv^Vh-TCPH8;a8!x=DOac z&;&sh+K6j~E^;2U_;^(4wkU|(PwgCri>!ZfNE(HXZ z+3qBtKv>O3vE#M4fY5>?5T3#{5R}{4*G4=7;RgcYI0K>XlvFE%p;q>1wZ1+Cfv}u4 zR^Jyj;CCNju%o;~ThvA9VXGBg&+XTGYfdX{_$Wb5w;vMY70&jN9M>D;?-|GubUdjI z5~%=QDI|?nx4zz|JUywcEV-xeyhD>4+E6k5iU?FpdkPfs6C&;>0__qJ$>fI3L^P+` zdgMde@lEbM#7o~s@d8Ek-3^?R{MinilRh4tLIbC{{U=@FSs{23J{qZoaRy-C;y2N6 z8E~0-ER0!@Haw&5`dC2w++NoszKZ=#5yMyU#{>AW`04`Rq!7OLWUB30TTJhWX#H%9 z>DT-BZPUuy7SlUn_THLjc&)zgrsV5h-vi>>$zNc+_w6@zYshFi9s?q!j33V$bJ{0r z%&IK1`&#F-zwphl`@O{p&Y?IGNE~!4py>hXk^@jqr?pg1CzAekbGKDgk0+8c&+>px z$MKoq{Luo2H0O_4s$IuAEUh1J&7kWqo|f12LS5lZ?~KD<&Ts#W&Fe$>t&A4gjE|;% zoj-rrt2!uWaZKgJZ6#P9C815;BT}E05OBrI#11+gKhnpRn+NiB6S3P650EU@w~y23 zN#W-LFVfn6jH1pAqarSc%Dm!va;@X*fVeArQ?pJAa$@nBSZn6AhMoHn6N3J4*t?&3 zf9?sf$2A=Imxztp5;N-`6uw|GY5j{TE}SUewvc7lG%74JcPn+Qj3(x61-c zgmTrxkLf4oP3DBuCY_k#Y|B#-Co>fqZfPje)DVAEJUoF&ODm&9gWe&T^BF509q7)F zeL<@CPUk28^Z7A{AC{IQyvF|YKfY03(_Vm6?{z=_WhV%^*rlUooGSAc>e8w^S@!-H z+!?!mkCHnt^B_O!oLY9S>8t~Ej^j^4itC>Mz3LwjtAbqryx7q{FLKC{S3iROIjd9u zycheO%cK5zJ2vY5SpEmG-&yxq|5()fFU3ZEph9}{qb^!!UF0oamwA=kwlx0}9(tf$ zhp=_LnR#G}Yi6W#Gk;Lj_|No~Zb|u6o z14869`lil@VRd-VKj+(@=-{5AYK&hu=acat=z`OPnTg@4$VzNYG`qulFCiYGyfN7d z<&DW&9Nv>#&Q7D&UfOZYGj~~FQuPU2qOs#RglIdwr%TQ{yeCT`vMptIO>~xNi3*ZO zOQ|w%&9hw7*ue)myv}KT4o~9r|gUK1($AYhtNB(bz`j4ME9?&q$G9Jocsi6TQp# zPp@2h+OZskN0B6DTXOIIy2JSGb92AUrzy$3Mvl_16j4Z6&+45&^N{q;90`@aYdlh& zeeJXr)jvprHcb0WVUk?EbLJPW6x5?vaj-O9u;&PL##??bJu(YcB7Xc^BGwTRDv`%K zCGtP2ry*({CV>zT&>$b~c9jVFTbiYSWYn_%W69jUjv+DFPjdd^b~aXn{Ul;k{|eNm zM~;&Ym;9mPxY#L<=Xcaeo6s5`L7j-WSU)!T;Y#XFPPnvNl{M-^^&RT!+V=kn&ugi7 zsj`VGJv-laPjOgphvIllR&o5{WVM*BG@StNVKXV_Z@)|R|IyMFsZOJxoV_Fi!KsXk za*k*OfPDCE+CI1g2C+fgNGi>4B-MAo09Cn7ByDI}2>@2(Uk(h?+17SHi*cr94$hEy zcdCz`upylJqUJ0Hg^dVm4F=n==JM3mV`2SXtKYvowXLjSm*l>(*7iQ-eYd98Wu?O{ zxzgdwE>-KU!oFL*H7~dB>eF|9s!j6Y%O%gpFJ*AvhLYj!`=PP)fY|NsB0+stW1B8G zV>NdPG*n{g%4mIfmq7Lb9(Wy?1C0=4Spz?FA3v_l)F%HsuGDvL>t5(H`ANdgQm!cxCEo|IgHzGjTa2?exRA#uKK_`rc*vt;$ z!sb+Kh}Ntyok56JG(5Kzf&1Bp?C#a3)V5A2-R4lbN&8pZN}h>xJy9sd{^d%;>A!C6 z-ul;n(PQgVKj@Cp_Q?S{+x+ugfj{V>!0+^2;P@U2)JPB>O#P@KKv>98c!jzd#4IuQ zAXRKyT>8q`@RVk%^^b{Y{6WTjw)tu2K4v`H#`iwPMza`Gq1avI<2OUf#WejfU+p%R ze$0+YIRZ*?=3)4Ghg8_%)A{&PBt|#IMk50JEgi_y{>XT_OtI!d+jbNvpmEWB%+k3t zK{^jHg>c6uV(pJ}*Gbw6;ww`xRHRyDITg$*ql|R0;Zv;}UUz<5`yGq!WgzQz9XGag zyNMc%hj4SMGJVvkC}2!Uu9>_teHn&OUJj$i5T$bM(^6-*Kw1UGQ-85K7Olc*xTaOm zO&ZfGd=3v6(fl|yqcd)5Loe#BSst~kHtHWcOFyE}6|d<`N(&Y1|JQ7GTGAJM$jo?{ zw|FEOIaqV@*GuyDN1tgJf6a~8O&9<78h=6mXY%;$BIEsMHq`f-F~@7vet5(9*>zK| zi~pD6W>1S_Xxl_ehe};$wgLMvl260<8*ZF)Jx67MMX9G=XY+&C^g{!#a}FI0XAa^p zh)qO7jWC({Dm~pW{<_)M&hnaWqY)~oj#K}&_!ISq%<-C}M^Y1oNny}6*&X!e(ycIQ zmu>@8E;CGl%H>g^GVELbho2%q|J5rJibi@k*I7M zi9?_hg_i{3F@#;SWR4h%nR;K*86#HvoH1hg9E0ZlfV-K#>VL<*%nl>O*#C=Z)^rb% zs|I&HTZP;0Y-Z99e%?Z9qHT#=@Y=VUIYFkYW9a-z&-wf@Zf~~`5JN?l5U6}%2Uf7| zlt7^G8Y7uqEE^lf-+0Y+vpG9V=c*rWieohjKm95?7sSnCH|rTi1to_fcRIoEsS(qn`5HTF-r zCwADmTq-=aSK@q<$}Cw}y~OG$!!+VFwh?>a#_+xuAlab5DynHnDw=ARxv^f3U) zYyX^zY42yh%Er|gE3)AO-4kQM);d6pecU%PNgCdeg>0|7G@z`lu<) zlB?Bc@F|drox2WX?x9NTCviVB%W(?nMn{Rs^}TGkRg}D(Ly25=a$~MC_5ANh3+^%a8A-T#L8<^xs7aR$2m8o_kY*PB8kAtq$ z1s|rNcfhpV5WQ;g57jr?XGMjy8MH}>t!Tn4RYlOo%-g#2^4N^}+Nn28p8;=d4Mt>aUozL1-PvS*%K2rpfeH}=@v>!)6K-O1CYs<@_a zkcbggSUY#7-nUVfp4h4<{+^lQ^3S+__Q}9z`7a>{*##&0ClX53_ownRRZ_MEnZA~D zMt$9!sbnQ*yhxRjEk2m)`_Gsj_i~cIOlvD1o2!awWMz3j(eduj%{vJ8Ej5E5GthyAl2viH|0eup0lAGGK+_h(!J2)8qYfvXoXl z=Bk=@BanGbn(2dFUemcjRrE^J=kP1H*K~5HN_)g`2dma}{9au9Ff1{nt6B|Kf-SpQQP^aFnSzH$k6^2e`OFue-Q)-r{`%%_i?)mirHr+?20@ zw{NWNGRf^M137{H2{kR8<;;r>lJmq2`~WLU%v}~u$W0dVsU!RWRXcucBGyQP-l29NPP3TBJOF)r0(A!l@|4X#qsaAb zEa(!~HA)-Q+5uxw8iE(b4*(c*g!z@Idhh%!dA&ss_Ldn0v(CWuHEfc%=C)zSV8Dm{ z;sGSUQem&klARnkFbE^eVF(&)3Gi5UF8($V74m;&SX4>DZc-dRIz;jc5>=(Iisoiq zWo5NeODCjLx7f?L#UTB<-*iEGfN`;zkSs!SaY(O7-}I3>y(&Gt7|X{+Rhp3-KM(Tb zCE`44K!|%mZn)P6K}f(&$O4UkCS;i<5=UyWo_WC5=IW`f7DipHo~ogz5{t4urAqwf zW9TW&8W63%DI`wQwd(Qf^sQS9R8F=RU5&ZDX*JTD7%ZVTgHxw<6CtyIhxo6edl$7* zgXr!&Z_V@}Bg>M1`S*ECMn2)xOm=nCrytQIY_Ipv|FtN@tom%# z1O!sstZ2*W%n+%&)+&;2R5!?U#@J`7#%^+Nf_#8wl4rF4gBcOtA8$N?1U!_3#q8F~ z)F1pML0?%1(mhrZ%&^6(>BJ11KRGu%5T>zB<{zC1Y?N*GFStYA9sarIZuQT^mHm!W zE!^gxXs*w+Z2jYJx9@HKkwLn{aC_8O_;-J?XSGCT#oImW9;AhE`%~Xj%ad=7(f(qQ z_7{t!5h+%0jh9BGlr7De>>E_dzQKjEZ!kH#KQ&bMJNJx=AEiM82`G2+sWIyfe!dKk zBW!T0$fi{Pt5?_o$=`prhTeNEdqDEEbsUgCEn|P-av?MvZ%Vp{WCbFxveNicEN}R!vbsx=Z z7Xv^b$tkyg%}{YfrH23~X^1)8kzR?E&-ZDo2AL*O|KlUHe&^0!`B5$>myW{~PN z$)v=A(b@D~9e2h!R?-8qo7X%1bnSv3^nLzCmvYP+m2XMgN+Hnk71 zKPJJ~t^eFcSXC3}BTs~LiWTmmot0=f#?bd-Y$m^=q>;oS&4;n6E(LgzLo|7>BC8jf z#6dR44};@A!?6nXLi^QdsINb@h7sBM`2qTB!;_4*vfg@mIU)ut5R@$Bhz2W6dx$_l zL=q@6?J3Y?^-G{Oz7W4!dZ!KKO?)sKd-s^VXxxC5mNDZuB)6dyGT8Khw!tM%F*NSI zij6JW`bB?#&v^I&txgC8=&2Nml{?}Wt7Z%&#Y$e9d#24|+|l0~68oDAAofuYir5{H zU4b(LLQv6jmFbIv^~%eV-XtEqzrCV$A7sCa#r;2%6G}dtrFx+=r24ha57mE3y|>c9 z<0Pa89af&EGpvZ#*Z`lG0Z%~tD#M?7v}j+cX}x9D?n?)dE~AKlRzRx$rid*GN+8!h3r7MEqT_vbDU7?B+?+c z_AI6pa%}zc<7)WS=D$fVVm{-cteE3oA2W(X;n!akiAFeIGc@#veRKZp^i9*x=o>hW z^kcj`rk0ClD)w)x;=p>EV-jdix&|YuNd@BPWZ)X>I%~f8f82Fqn?<_H<6Dq z;S^q~T!Ba?!syiiSgB%d2GC^0P`H4a13i|q`d1$5rU9x67xJbSw|U9oRJgQqG#O;p z!0dDAMFs(L>1DamOO@WT%k~=0H$j5&^AaZPdhWqsMip69rEAb7zRps{HZ;}}g<-O) z6c5WiFRTPp(8C6m27E|t64mLlnyeyY>7c_t&5#Lro$#x|#0oABr{N25h3Q&N z;Wjoy&G`y)v=3Jq@`b~w_k8sr_EA=K8cE3ssc|1WNMM%1&KZMbiUvtFz4Dt|I*kke z>49!kEK$>erdpseN!QV~V#(|2I5Pw8mr_{{m8cH*4; zdyYD%%lRxGRnvTgR)8_$KYXF4DUQY{t|-O>U0Sph-2O<^dbQa9=f0QrC&uT+Z(`Q{ z>xs}rx}e5B+PSRTqDB7mL5g#Q@FGt8)Sa9if7SlnUb>r5$58^+sd34fv{Rh~JRW(v zbp0psW5)&_zhEYJxjDXy{v*849ZTPo-+q+;;G3`PmqzH-j+)c+zn9!U^ya72^M5Dz zx5*E_T(>sJwz`?~g+EKrZ%gj)d-D&HADmowUoI3`f!_fr{1gg55s}>xtKZ*O)va4H ziy@Iff^zsTarhsv^+&PRABK83qbQT{HwBTn#%`uzV69RH)-DYUtVL{Jx=04rxPtYN zk#l$|%;;xdB^}4*u6Q)q|Epx1uzy;og{1P~1kRM+vOw;><)6i zXwb9Edd!hMipLfJB}u_hB-ApYUZs0-bTl*n7@1wov7N;OMf}CplHK+Tv0bmTt7KU{LNY7 z>dQ-Cg?_#5w_lgF1!>3M&aDmkg1_Q|pk0{@DLpHin@9WWd${fxEb&fcob$dyAr5nC zLM}@@a}gp|S^To-N^=p?aGBWq#M0*=h_){HthA{Z8I`@tW8C@|dzGJxzZP41TJOrG zhww04VQlHmkuvYGoq2ON2d@~=u3&nSyk>RroB&0yuS#FitE%Lg+lPC}G9ar;ZINmn zW_qcZ=?DGlUTtnq3VAi+b4)#~#Kra)7&>9Kw6ZtVUD})Bwh8&skDL#wYeyWRriQ(L zJ|g9)E%_g@OMa-g_)$)nsDOG7zkMI$f-{@Z2_h;ptw}j~Nxs z3eQR`IEEd|+xZ+UJ9e;g36~u*Poe4Bxy#Hbo%hJHsBH8xe^r!h@)llo0wrVU*lQY3 zA+izdHGLZ2hDmh##z_(@xl+9P1a(f$kvUvpx?)u3*%K{Bb-W0|(nfx@K!%ocoRg04x*Sr1d#*~z0(9lTV@-^=r#vN zfsixFfq|cu(EsMW!ZT(EZtOmGgvYtrtlnewej?%`Z#GeLaxXMdF- zF~pyTc>wdp(lG|WCV!?yAdLlfscRr|FH⁡9BRmR+c)ywX#|R0YY_Y8>9NB_024E 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 $1>|5C;H~`QMm- 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 |6m9c3r;&>XR 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

      s6g~F@zOjyy=||;y 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


      VjI)MxH81M(lpJ_R?2RFV`I$cERbA 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�BG%Xw3=v{F#@Z!>zhc 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

      RtUG9<67A5i1ha;Pc0^%1Xfy- z*X$Z9VA}M0V}~Us{RKvqHMdm4m?5W=%M3RW%i>;HK`gsdziOnRE^)M>A} zr)yN+->*u82%)yp5kaQKOS04dZHff1x-hb!f6rX|S@nFE`pEE1ywJWTFJmBF?@fP| z%SL5KIO(^Wy8K@~DDQza{?7=L9UzW>4>1TtiOoct{adS@!?!KvP*8!9b+`(LX6|s6 z?rqN2z7)2SS$Iw0a#Nu9R*UqaWU=1a#o7~>wP&V`O|v*BY5qg2JwaZ@uuFmBDuxNF zD2i)iF|1DING#)ySXqfEmo9pxd!x(Vclsi}3$$}3MLqt6{^KX$KTfq5QS0=A)ODzD zbI?W4$>k~A@~$@RrWLT8Ro$DI|0hn_;>yzF3g>Q&B?}AN*Juk(`)7HqO72~! zi-n-`->5UZ;;frOF9;!LNkU>W4Hmjt(z+s*3QNXg1Z7Pt3s-BZ$S(BcO5R$bc)rD_ z=Sknw3c?dSSkl=ny~$&h1=$`Vz(a&DO5d--RexWw~=4F^GPxS z!>uUb*~L%NLmG(*0KEkZ>GvJQ@^NXJg6oX#0s6LM%n2^mki%1b2Rpdo!YT zZ1!ohkDT_)P2436!*>7@{&WZmP;QHbI2$TVZnVRLF)n8!Yc3Tz`r8ZNQP&(2jR@@x zvUin`32(fT7~3;3wr46+ldI4YFRQLhol_IqXn7zqFP1uwLmQPK>20PT5~tu*;L=3S z{m#_U59f)W@vgG2@e8Dh3DEk7gNi=fEYE}iaOy@Bf=&nzP$b|VSLzYpioz=KnQHNw z8kNfW2D&txd8PljO(=-(_(JH&49Wam{6CdZW&X zC1-8TjV0q-^Vlrg%KNXgHQl5P;e1?sj{k`5zz0-AGiuadf0eybsT^7VxU+Q6Fb4H@LO+3=LXv2uPhR*tMWudrCtSVk2P=*UG@ zRh&e|SfUY^MLqkByY8Ue=bB}xqibu>J=lLVHA1hqY7B|>)qt)A`x>Ot?Emp>En49Z z<{sg%Srh;*y$2DjA7osDtsf@<8&)iKG6Wm8ORgxus5JL84knXx{f91b=Zzr=iEB{;bFhq z*Z%(ZR{m4YM=kse=cBN7a(~(Ee&?fBFZ`7AQI{7kb&K223@hK*WplIKF?=rwSxtkaRxHF0|61tSvCVXy=@yMtV-YPdmd*{4;6c9qEwaCus^x9TGN;`B3T_7kzvc;3 zs!4FgYV;WmJ~3gt^vBGfl3Gx@!xZBqUe3|hAvA2#qh5s`4ClfHeZU!fg?z6FzQa+e z68$cAtKVA`QW#dVz%eL3pdY6s>ypH!mea5@XbYXEMfmBQ##z*k5gCKWFsoD)>axs- zxH%UCOSG84!zi`*D*IM}RR~ z_sA>AY0wNKhBLEhbARF>JVHzMU*FYOg5heps`hfCBx-ckEO@HczhIPHCbMC@`h+1$ z;0xAgah`iMqqAFERop@4@KDiugI&>DEv!xsAbIdJiZc*x%9pvWL@XrYNRjR5k zn!-wd$euRQnxz?JM^Q(`KB7jw2~CNDcnZNH%Cbc!)H}-c0X#Fv*cqVCyx@K~9dCf= zt|<<8q_6%S0@K%@m!WZ<9L}{t_vlx&S_Bs0+wWs)9Zbe>6FDjjO+e^pRCRE3>QsG|dBTV}qS}v+#%DjRnVI2@%ALlJPwp;0${Y6%sUI`d`^uj3#t#O4J5rul z_pXhf9|m3fE2BQ>0TP&5Sj_WQxdk&)6}d&+&(G1xm8g4&? zi%1T)#Fyp{oti3(w&!wZa{FNZR4|sYHYaY2vvZVfagLvh?0MW@95i5^BO3)(83iRe zY17J{hlyP(gu@=8MK#H`1!P|vP1Y3%DPd;~MJ8O5P6qs^ehSvG(P-KHO7~@KB5LyG z#g>wDvaY50??0R1yG-OL!S{t4H3b>X)FO`5i`TRqw)phdEd>z}@aR`!(*Ja4WcIj1 zQyKG>vDp8iGR6zXa^0qXRz$SZehI6JzrT3a&3FCXH>wC|FQ8gA z3@&83=}wgPfn)=v+4_Dav{5Aa0Ib#@d(#ye4^~5eXQ|pbbiQ6yBaPGwA83u=?YFqn zRnC;z%{Q>%FALkV`cI~Q%3nzd>PJ*}^3AwFJw`j0;2TYyq}R5TE5Ye%e?ArcU*6sY zKC0^K`wx&vKyZS9MnDZ36cjb6C=sa>OmqShiIplUt?^Qd6%{3sD4+?G2;(@KwzgWe zEw;Ax>ErX%w$|e1so^3Qt%`Uzw^?yK|0hCXJK+p`l6op9#yhD@4}R zRZ+Y>h|gR7$TRgOCWaKeX+8ykn)JTOy(XGSBG#rGi67iy_n-IP`1yNKK~pL=dSt~L zlsm8Ix%kZe3Q;2aValDnUu@FEZ;3@o2Fl+LQ+=PG5dL6(R!237NST5Pvn!e&`IgjB zsCBwAHcjGHhFX5aJxv8OsuR^}QZ{PAU!scsKIPr}yg1b+^m-{Cff%pfzeImVlU-CC z>9spH>3_bd-ur^a{>5q9_|&`kZi!pL6Dx!I3+KP$1iEo;-W3gV=7k9? zsp_Tt7M9LNH>5TLRdu3C#Hdc(A!1Ox@g^!o|k zxF?5NzsaN1#L1}EAKLV|XqCsIB9LZ+^z~dy*`ze|6%PxG^c>>m>F-dUy5bS|GOt3F z=xO7Uc_&Uwjtx(XPv2TNEk1K=5ddzDP1mS z&+oibA-C63Be;dfqK#&Uqhb8@2TolIwKiD?ZV#=1U1ry;4e_Y}$B-_-q;As#3fgh3 zCG+2vvijlVPK@wIrMn9g1^lBCMzu3Z+Q}uGeP)Bl(p3r=h)4>2h-iNOe((IDiVqtv zesME3@fT|1uhzu>k@^d|x+b3He43{g&0!iX9aho&SrhFp+N&mcS+Dd|g#d|OZLrf= zUhzH}Bn@i3-*aCRB&(R2yj2ljT^;|MG+?6%NJVV*mWtSC-@4`&daDTCy(0B1%@pzH z6yJUnZZ*?H@=(N>7kl?LIvd55HGLMRPS~Rht@vL=xY$0aJJ|b#iEK+gs5n~!LdDr9 zHgZ_j1D}@isD)XZpl`PQ>9&f^b>-6OrPIuB*#I@{%ND-0MUu`&lQ*Pa#Ju{UCV6g1 znGT-abM|OW`CsQS%33c^i$BJ!omU#DHLdGT5l3v z1(xdg6V>s*RFlig&%!_)P-~xr9Qmw%d;#a!9CGOubEm}@4&-ufL;bu%PAXZT%f1rI zEi|SGqrnJWHgP?!!xyJMk&d<1oC0=>_K{R3M*O)7lPDcc)WM0fiMReObmREF!SmA1 zdVN}A&WOUA)_>NM$ii|Lchs;Hgczn#;?nX4S2|(A#mObr{i``McVOyORo&@Eze@|0 zW#s5bSutL&DSvO?)slZgrZ8Zd%15^M3gV4j0`Y$ROn2hh>YKpG5K*tgj*S`}0cfXy zKWm)XGa*l1o8KQwmYlk#vVVSwBDY)AAb2{$IpEMfsjb`>hW8sQh#X+}A{f49wHpEs zaShZY7wsjj;V@(+f|qN`cg{n3&MBQ+xinfDHNAs2dhT(mwuncnZVcw1N1xs^t}uvR z&P5UxSUQ)*CsQD=?TKZ;bhHkW(4j}8^L6OaV?M4vmOoZ*}<#puM>;JFr6N3_Z4m2GGNY1f#1sUNE{iP?s<=X!klX=pDj37;2O<6gah2 z6hJ@xWi2Lwo$)@%jGWY1@QpWB?M+IXCi`cLdhcfyDih0acaJ2pV3Wm?0_ z@V{FVBDI|S;=6tBxYwu9Q}d3KqH5xO6*bavDX%;}gexdBrUenW_bHLZJwcu=3yoBR z%c>l)J#s13rY7^*%y{50FCYk|7QB9Pa>2Wa3qi9*pPxq*Q-a%g%DyN%YhM)6wJ&$@ zC6WxX7jssp89!OI+ho;l^M1ob>+)BE{0A56^=1sW_36(Hj@#TKJStH-Zd|*Y^ZQzM z1X&SO^0?)g0*pbI3^IeRgKP&yZG&uwM)%#8oRwJ`3|HMWe{DNT@E=j$V~M)SHaZ<;%4p@j=(2s+0U7WeqH(U=N?R>(= zT*F>#xChTD8YXl#ltzGFtT=%44)5D?Lj#?>MYIV}cM=y6EIVs8*+bn`Ks2?2eWz`m z2*CN2js*n&O3tVJrCv_@JmQOdAUBA5->!H^5OwMd-d$?FBJE6UG%)^_MIhWy2usS{ z&rZ-6AuW9t^R78X-*z>&guG=GC(2S9w?ELlgFAEI(fcxn#`?ASJdz2w$F=B$%n?%!rPVa5%#L* zXzce8tcvnOnOwvPW^#m6yE>JN=oI_Wh51LH1pd+2FfZjFnH>&!^_g^^nFYuDOGn$! zB$wh%kqmlF9~<1qO2hW}4cl@8+{kQZet-G~EEki$s9!ltADK3w@(zbW5&g4T}sUMX;_QLLWU=AO~`2S`=%<2Eu zANueyfxD)eD0v-1w)pKioFhpJR~iC08>HUt7#vNHIjBRe&+(25&YAx7&L5$Z?EMr| zBx1P%gc`O_N^>GMYOb(6Br=X3;5tMgq)DG#>v>(b`PX`0*UR`6V(T>`0+$*6Gh{(oE0z+-?Ag z0oXfc3P3LVtS>Fh^qz?iX8Zre53=Jw1BxkwxzqS(;B#0@K`a$^z$>gZN!`Jx>Vpbv znYZ`pe*Eo<`1_IMgT{av2)g0_+n|38AOoC$?A%Ba|3L2wh1_>rjPG*c`$xdP@t3LO z>;1gJmHBt5P$!EyqI&~5^q&^IpW*)p-H~!x5{>mAS?WYU7&{8EZcdWo=zs)n&obN; z2LEyE9~lF%sMo*jcR*h1NR(l~jI-K8Edzmzv_YDZyjl{;w$SgcE)0imTN6o6F4ReV zR4;IO``&;zbts#=2;MPUcdjU%93Pb>faz+Nywqs7gX;%PH~2cCS0r{4DfiyB&#t0E z?bQ)Q*X&ey!4Zk~Ccy|v(}j0}@*`MROAJGSr+zP!$cZlbnXi(cNoev|dw-Oon2eUh zuPcAQ=krh6@_%T+$!Ng=hb#YQ^lEoFH?@P?@9R~+e{9Qcs4U$jG)<)?dUtG)tV{dY z>_R7`c}N?s+QWVF*AasWdVzVX%sv@a`)qMVIT`IOc8$G~k;QS}^JT%EPT?NN{5shG z)s~M`n`hi7gpRA?D{uj76f@l5T{6<;XSyya3G;W2F~$sCd26*{9;{}o-`L7JNsz(F zI<;>$+4L*!iLe3a))Td0n4HoPDSz_nVSb^k-ghamO$ok&;(BK7A52`+;azbP6O}i* zY>gd0))Sq?NS>@Em~$JS-d*1orv6O;)Xmh5RJ3qYk*#kW(K){&Sl_^$WVK|Nab%EU z;r-_&ERU?$qDHa&_bIOF ze5PDxj*D0_Zp4-LXIsGpwi~ZI~neg!* z+9>xyZN%4PbeOfD^Zu=t>3KP__^V3E@*xu64FVMKcr(Mkv-}6shb*00dJuixeyH-3 ze1aymM)ww{nuH$Guds&5u(a4w7_K$)OBN-A8X9C!Beu%>?NQ1S>U>iKDzwi-r8uF{zi`T6Z_&h#OzbpVz&v5zX-D-WUCw{CP>~ z9WFRM(-~jR!F8cQG3OS>SB62cD1lUM*Lb6J^6c8r80ES|*NL_!J)US=%7@7ZD`BmR z`AIxm#Anp4JyHJY4jy5%OCdKin_YHs50(wJ9Bq2u<@PBIN2LC$l8CmQqJExZoe_xI zd03R6D_vvYB(9!dS<7Tsv{-^sn^q*vgVDA})Jtgbm74lvI|>@k(`#y@`J_v)xa8Xn z6PvEfZ>(ohP=tW@<-E3~D{>ky3z`)(>1Vaw*zr=D)%Kj1(#$eBmy$FGU65Yuh{XvB zO5vg@ku-I(=%*Ot^WLxj@+{oxauQoM)*ldwbrduVZZ0=4_inm2zpGC0*iw$42J$p#s8W=q>&7jA}vv__4<**A);A>mQwIZSWl4P`k>E6 zbBip&6qQl6j+?DZ_8$+P#-P zl1u43$rfkGa%72^q%OchlvY2EgEv`^&fR7OXW+ZNNBOalA(NW9#`oY!7>W*rnR(~@7ObJll9FcvK&Dqbua~IJu=VQfo^|r1~6a;tZ zVMr7vD6*R_eHq$70~glt{UXV!m|jn5(0s9N-AG1D_QG&?Y-%dY z1yrTqQ>(NWC;qDUe3O=`pY)!x&vxE0_`Qipw)YS>ab+|M0$ov;nKBz-@cw!J=ggMb z*g~o*FyJ&lhHm^!$|$zAQAPkRmHxoJj@NMJK+`OnTKik44SwmptODmsnV+|Olh>Jw z^9w7Qx9efn!;;m#(xrquPWA5maGk|jPp#0Zl|=^ijKoSERK&I)al-*sETV+@dPx0A zx>0|8daU#RxH|cUefWD)eTlx;4@>V`m8@M^5!>18ntf)qac?2T?_=9b7VR6Md`lha z7(Z;U=(iy?)7JZ84+X}hj};?>R}~Q-98K~~^pBQrtPiFBA%JvCmR_wMtBZ836l>2g zj#oVFG^K@ATHy2fAmQ-(?@GV_PRdJpqC7C85?iIx*pg8t7%J9mQu98(>Y;A(n#z4U zE{G&a6RC`^^7hw}m0g~*CX{e;o7U3dxjI=vGsp~Qubaivj6WjftL7i7X)K{Zi>+>y z!GHLO%oG;f^#;FB9s%`NW?P(V{E>>Tp})Na$8gj{mbJY9JU5qv+ESbMY+K3RQlJE0 zUDcEArF&+7UDG-LDPp_(21gQQ$Y1%?!iFi41lefi3yK@Up@$kv!V?yhG!S$pSwiey zW)98s-c|bH;C^=?&6-1-*iqc^68s%0dn$xrx>(z z4jj~n@H0!98q@nq2#PIBT6bZ_30Q!=7o8JH4q=-@{RXm`PTmkr0(!5|9oPm#gdQqIZo7kz)!=f|h2nIsH8;L!V;e+(YrSms|FJc7%= z7CeGeKAS9N!L#(X(vjvpFdynMJdoR3N)P3h(a6OLA1kdDE!nG_L!pZocBhaYSNyXO zj6=jb^_s3l5nb1*87TUI#sULpxqaeT*cef!M8AVkqkXcf?LTiAG6I`)tr(4cK4{d+ zxWMR_tXn(ghAec31aEH>qP)G`J|8sbGH+{s$a()VOEPuizs`qtgF)#Q<(L$wik8cb zrf!PYHWRcR@@pX=1!2{tS7q<}&&0G1!GEuV3Bxsqv$gO6$CW;iS}n-|u8Dqf;Ty3a zz|TdpWTq)CqJ{3@jS^`E9(&#p6eUAMV`Fagd zOL(s4vi2EgBnI>rwZ%!*vG&3#$>V#AEbUxp7=SO8dM$(efBMoF`qOQtIxT4ymd0rs zB)t}RF-&iV*a9@xz4+UkIKt(tV*BA5NIBO@5$r<)`knd?^N&+4h)2i~1DWxum-f#~ z&r>akeI6-tx84|3oR_Y9gg~$!xZ*7y_=)gn;NJ4Mm$iF}UXH(TERQal%H3g)A0Z6;OGnc3~h3{Y_t_F#l1TA}roA^-rF1Zeu ziwIbv2oyIVlhPibny6SrkKWW@E4EDBo|`II&QF~GQl-qG(58Gr;-X}Kc)S$)ueaQRXPmK^xF@b1a zE%}h0dc!x(7`?BU<`M>%Nn0YFW2}y zi9I|+(V#8DAc60By*mEsx}rSq6{`NWaMN##Q>$$I)Z{wMX4u=k6HSmja}BoeEAuYY z`p`PsiNZx1s(^nsoDcu({Y%F`A`v^R=Ef$?I67dSIxNNHv^vK;-bjPYIEPNGL6ngi zWdGG{^O=oj>I=m)1j0hDp=dn65T3c{3db`xcs_Z$l1l;n7Hbd_i%%&{@fZj+@zK;+ znpb~jB-!Sqd2Tq$J|A|N)y8*eRR&=se`Y>Y4saPh$)WdG!V@yscpa$Kime~37fp0( zy{T~|CHC8*7ZV60vP$geA&PO~nT1*w?$2Y?UOm-pHS}||{P|GpC|+udBxXbiEA&J4 z*8)daKIJ62*^bohnDUSN>hAEF5c=o8PzIpuk%UjnxbVRQKD`wAbNJ%f7hXN@+x6A) zn=FPKbUwzto?)#ZMRS9P|MA<7m$xsl|7Ts&r&g)Ow`o)lc+F-D>DIhP~%5!whK7fd#K;&#)BQYvX4M zmY47OB3KwoAOVIF4P_RP&yL6r9Bvd)Oa+RJ1(BdAjS6fX$}|+Y>=QJ=%wvHndTfz* z@kDMR^I}*l!QptvoBFB33GTkuYi%zyyGeZ!Ff-MgRr3W5aZC>kan-q?x^>x?V28sD zE5{B`4Hh?@1GBQjsb(v0|MW!L-h=>}RLn(HP0YI@y?~l#`fqr+=gZ=`V?0Bk%z?9-~9k!Th_T8@2#0O5a zn{F7%DdaiA$NtO(P_?_j_cXrWJBRTd0JuSO2D5|Jff|VWX$I;biF;0GDoBzQ`##@U z-_dj}@H7Abg?G_7EIQOi5*1;Rsk54q0i`xhpmYWbhNVAsFi5vmE0+w?1uky}oCT5i znPj0?pnd*yxKS<=uL!3XdN<8tfiKf(@6YQLo|C4#<7_$|{Dqy)LZ2)k|1Ib?oYQTA zH<)gHK1`n7i+O_}VT(y88{sIK6CSPUR;rVjUjyfD!2MT}dS<%t>7Kb?_W$Sb|2K^P zfAW8U{}0Qu9{dj`)v;@f^OS+&&m-eHyzdJdpM^C;)|;6l^^*=|7&La>=sZfc#;z+4 z?5ma~fkurcr}|=38&=wB&g96d-ctb!^am}k^=`3%(_-0-Q=7y6$r0%pRzg`9n+;== z{xC`?P}aXT9LSE#Ul9}4V4G=tTu^aJG281)OcAQSSVU;~`cmMBS{@TyY$#O{L10iY80QSnNJN+Gy~kzdwI z{fYEU%hWgz-*QSB7)2%bDm& zZ`Q2WcgriT)Mt!`%H(#zw;bWvYL(C-&~iKJqnZU%|8Z&M%r&r9e?Y zJ!$lN56$K1Pl2pEM~5svE?+Enu=mW?dm9IYT5kC_8M^%IVDsRQbGaZ$q3*&3xeWcr zAz(18tqV)D679GFmUi$@wEPJ-FJ$=IYpu%igv|<;*d<|2{ld7r6T_SNEcOnyh|}Sp z3t(|ct1}TLt*oCphR6}s3(f?ySMSJT7BHTlCG8uE@U}`S$xs|1tWXeLW)4<7vNOl} zIu!WcId>3S_OglTSy^q}+>lZ3UuH&mv=$goFc=->_Bf-!=7DPe_DEwNn^6w&CJ3P6 zEW)S|VEkogLLF-A(4Usz`hT!!0M~Dw;Hz|n4}9fWow&Bh8*EbQEC6#b=0fJ~w#4`> zncH)0osXx1#oXJ!q$%;Mk}UT-tMX$|$Y?pgVjJ8tI?y5CpdfHCc&TEC%8nDspEmj3 z&>0s;fJ1O9X0?$W!93v5qN;X|)@=B<5F8=|Z~f7iMDU4&yCOK`3lOZAR}v`66Y;|s zt92*%WAy;~DKpWTY31EJ=_}~bX=i}MlRuO^^rS~wc6Sz(vxjfRwTm@DJZejlxO{ct5`0T>HWx*n3L(I>yAZ^PvgGqL&nEu5NVp!&v-Tf zO6hPk+K0^tq+Q(e2hj3dKbH~`r(nz4ZAQJA5c6C$FT4U+`>TYuQ)I( z_QhTW0JX`82y9QMKNLMxw1A-Lya2>6qlk_bi2wBiN3A`B$efm=i2gbv3sHghTdn@1 zYvvPfhkutJ=kxEMAVQ9=aq_wN6gVIQYYrEb^EQD0dnQ8tRG@$F`+FMe91~%TfjmGe z9{x%_RiFXN`hVv+6dvTZ_*3z@lIlc1bYx-tL+^6TmjE=I-%<&Cf9So(61R~pv6E|{ zH_b^%E9;4H^@9+=s?pTol!#x>*qjiF0eIFht#HE0?g4KFG znxK+Gu-WyzLWO^4L|GiycI`UWzmz{HgSCwv-;o+pJK)7e0#FgC&lIJt*!9{<+Rigp z(!h3O)3Av1(`txw!1pw&t~Vb#4S`rxE{rDe?Dl6m)!tyWM$rVfhd0pr87v9q&Ny{V z{zxYN*^y|xk%@osFp-XkOC+3HK+9eXMi75o!G-3-P|HKK*&U0|N8oP}5SY>S{|bSz zSp>d*Ko$Wl26!t;q?px~`tMw*@irap_W(8XjL3etp#J%-|1Y3sM|l3ou{nglv)Jd^ zh(dz{0h$yS68uQg+p?+DCFyyej8uY(3m{WN20j`9&vIB;;_K$B5rOg7!r?kb)U7#L zuFPxTbI$2*li;(r$YggvX1z994{ntO)^6t_So#uQZ|9mKkiCPv_t*UGf~Dr{_=~22 zuF`x0lxl;y1+My^{e@hKZmJ<}hM67%?v;K?HL#+Pb1!(*i;-y{{`&^Mn{Ng`?& zwJP@l!kvq2rC8XxNY{non)2u8%@R}Tc`Fq_IP8@m7P1>$y=xQj6{ze{H~Yw|iojFK z{R}9OF`tN(-ztkL3+V;#M!Zb&Ah6%?X-qejn^ccoa4vRcHSS&K6i}RS;Z5ftX z|1qxRe3d}A(JE?-Tuf5(^wQbH-I{3AhCl}H=b4qDB}IMxWMJD7&y}2YJ%=L~Wv$53 z1|~CgMcC@s?l{w#JS(J$R03f`C^?@cO~(qSGG|o73TMI!E9SBA=k!ak!fVQ!)b#c4 zD1+qqbOj*IGLXP2E761$)^}RI4Xjqz9tI8ZGKRkb^zWh9mgmuBwd|*=~u8sgN}3?~GY+EtAsej9GOp)w_&V^Hufa0l}pS&1mEg z+uATRn!L0Jb?kc1fR>;;oVSwf$C;tK*%V1uu)f3Dp z%s{6a64R3TC+Cv>Yu!j6)keATXHeh3TYsahfX}0>l&(lELqe0TY~AgAPD$pUWaWZh z_e$je!-Mv-KkM1t#634kwVMA!qWuBEq|O83Kq68nNi8s@=4$blI`EQY8>C9~OUEj+ zj}_lYo=gHE3K7GlV2a-2@Bo8Qki?Z8o@lJkZCjF`PO@h_DhGjqlX_zPSc` zl0!c#9hH|VH5@x-$x}Y4gnh!cn{2H2%vf=a9#A%kvU;qJH`@{1RpmqsDqtTHu8zLRNx>CgwR%|~-fR;r@qF5`*0GHXVTpTOf9py%R z0NWoHmKL)4uBg8^?ah@PRiSe_E{P_NAH}f~;Hq5P*p7}+i`YAoycTO!#X`$>h8CBj zSClO^S}l}GJqspQqaqx+6{<f0IP+k7&yph_5F@t?$h;U*eBfeKmQ=YxW57eTP zxx?IK8Du0)O`&$HMXELk{yOg(ODeb2`p2vnv+IC_cg`VK;hb=6(x3qvVQy4b z9{J7N!Pahg)1!=>GcW6lDuLCgjeWjC>G7Jr+k(3_7q1h%VO7w}OZ^u(wMhX8Ir%Pv zdjc4eNic=EVscnHFT=HmVg~5le-h{&zSyBRL451-w}PT8kRuQvAECS}ZA!ifwJ;G_7`u5Qma!Q%;JqpVeD|wrJu49IfZ( zkzlGyyyoPq_QdmnqWP#CxUXy$-2SvLd;^kbGeNjIzRIjWE9Hv^t|@=GG)Q1#-`d}o zvJ1kgc_vC)l4pYg`onvEiU#0Wk``_L2XoVp-taSW^R+~#V)0XnchMMM)-s|d%9o^m z!&IM1&$j&f(2c9aik<2cD}x6Fgz0QG3h5947YIo514CL1b*3=m*Fv2c=&L7nEHni+ zq9P2nvN8u1Z<+vY&T4YB3Cm2T0i(u~wh$r7f5N zOx{iNyy{)Tu$lkpyMhJ`lf#~Y@n`X=0%pw(Uk(@z(clFf3K4)q!Apb$pKC@qJ-}(f zSG`S<^&KQ1k7r%kAzl^Vgbn`sCMf`AFWTXg5_@GA2iW>_Abfj01(K|SuzdFf5_nc& zVnLB;J*%yLU^IDNuW0!z6`|W!rGG-H&h#DnrD0%TH;-n6z_koVcXtyd$X2P&Ng2@- zL4WP_**Ly|!(&>k!$=Oi%RT|3IG1jT;_F~3L7{9rXAjsE=GMO#Emr3&xk7%0`)bYl ztFX?+I%VB#o0X`4OfYFEJ=6jY*Ds*RKKU@0UmUdL#> zUchLWe=<9q`VT3PWGy<5G*z~!zT>T`QY7o;)UEuI19$JvaJLEY3%UUAOX@wxD}Q46 z|2gEU!U*Vist$Gm8k;oI!H+D@4yUOw8vx!Pz{#Lgl|;IFU&{4g$PUM;4;!_hR-+96SmFhn*jf*?o4FqoX1#Y4m~stQA@JL6vz>*4|bVze&W zxsWBM$7PuRqi8Qc|~d%#1td zVKZP(hy<|UmMFFt6M#RGFCPmFe*L=7WkJ0RP)*hYjo9Jl%nz@1hu_JJjMTB3J|z;G zDr)=q>Y*;2I@PoRgZNr?{KaVe4e$6<#g6Z#j&MKJ#8=nEpO$@6X7)=bn>C|1WFHJa zWY4NY?{DsTUqYZpq(9o6{uoXMKl;OD3elFnkp8ewtXQWw?sonV3Pi~O${;Pa&j(!q zi|1Sb>t-u{Sh@5zD}GqTF@3FZHAo#sy_nbF5@8faaf>i@*jdlb3s)|^+f`X)YGBB= zV= zV8c~5Z(Y{oR8^+g0(jbU;JK&F2XJJjt6vBR+)E=PjOE-+nF;xn znbSO_6_`9_2XS2PLT$Zp+$X68l68bE(4Hdz!n=LGo2pDi*uL$Ogo4MhTx7k%_Redr zPUf?cy2I;*Wo9Ogz;L5WP}U3`axG90D51OaL_g9A{rv~BPY*_e%3zk9Qy(o%E10|J zC%+jB@m|>$O`hLN`8%)7n;=DXA5T-3HPHH(9Ha8CVf?de1bg79J3y@1F}4;{KJo)l zmitj;uxJxPI9+7k!^`AfZT_12e->YWeMA$)TJ>EM2WA*+k+@_-xG84{|9&*oI~NGB z_WY?OcLawYmgS`Hcbt*2tU|tJCHY%$il}&-69cvmj}d1{25h4-J_Nqxb)3bflbeQl zM-?Ii5YzS2HR=m|7)t|K@hf723~Buh`h}9WFv$;yp^3@qqC;RuQd=+vL%&n8!&U z&^;PduLwr#p`)PFxCS>;Y8??&lUOTrrGV>beB*wqr$AI92qQWigZY7Gk(P?Ha2Vge5`r&|1;N_- z&qZ+k&@Y4F(OCp9_*V}I{^z7F2wpe*3lO}Aep4Q^9S9!CcSG<+*uWpbslJb+5qxsq z+1U}y^>IEr5(KZDmqoDC*sU4jqvjl*fIqv8-T8r^A@-N*mrTbdHGY;wv#a*Y?4sRYr;r&gZM^KhBJ~wLe=o5 zq73qFEls*jZ#g^CLJsU39$zfnesHyLlZAi=BjjKSi0)~Xq|oFa#A00Z0hP5w`xDG< z(67F&5s9CT7L=15Kbu+m&RxO|4H(qcI3vs!C{&%05AJ&3m?)G3dQ}vGKIN;BUvKy` z@34P4)bgr59-z&hbf!uJ&p$(CHrqtDV2?1!4-D4k`xaiX_4iO~nmN3smw$4C%&Jh4 zTVPt}zT5iJCcevT((eML-98_4J3+v01J@$2oF0pbPx<%pR2M()U0o3A#t zS9avrD}BhcQYOduurZAIJ#!s5FEfZ;o93_ctY(fHyy9we%wF1I99pfFNXur@*m?I% zz(s#(N;q;ci`f)q@Y54{ z@!uN_Py-AoxW{Y)rlr5jqi%G5w)j@Z#9)TH`82A6uU7vCH}R^|#6!l3K7r)zI!=`R zSY%l2CsIEE{7g;ZfDdyy(*5fF1MEyeWKAqL50Z#!#LS%sUpgGn&%9FTyD{lLA4+=< z|7LbRT)Z8cvi{>@4TV_X-dwsAblq6!wIbN&FiMIj0a6p1OhI@szp$;MQ$>&?ER5zY z`RzIyQb5gTtBOo%5GOJqP?fCx8S^i7J`T9%J}w@&Z$GVwZNH%Yj-b_B+f+Ct&d(e8 zxnJnU1(?@7a#X10D!%c)z`6Nr7ESBSx&9srZ!?L1sfl`kaYt%rDt;9$Es+u$t-&ml zaW%mrikfF5l}m|odM*2j7J7rZim6|3pqpvKlGfO8x#^M~)bARjD?Kb4fZyxH~-{a6pT%}{UaZ7)aNMc{C|%p*K(NJr|S_7!>!!Z4jF7~yx;7r z0TYYHR@YKLGg+{Fq-9*Z{?}5@M@v1ya!kQ5-K}SI>i}-GNxB$%MZaKbM2zTHrp#ZN zH-4}aC#;1|0kUkBzp~VGJ;lkK{G9LP2dSB(+D-hCsNxY+%C92UtxgdqUq73_)L6On z=F%p}&6y_k8R8Ocm$mG&d5-nP#s-xx7@6^jLm1S(zH448T?DS7I+BDaXjps_nY=+D z^P~^6#AWG-k&Pb*aWC&Sni|PY9U|@OaF{y$;iY@(P`s4W-BTZAyK`~VVRWa;NOM^$ zA4;17(?q&1P=S=Nm#rxuv`g9!`GY_OtAbe$V=rNJz21Q2UXm@w0{}8Q$k&l~X+dSy zKO98n)&=RydySJkQJM}#?>thb!N!QK_qgoTH&F|~WXme&;WTTrfm^Q8W&;ON&Q61m zOMqzZY(c~;zLg+|#zf;&V2dfR`2+78Y1m91P9JK@&iuPFMq@}WQRJ085pql(hRGv2 z1!%I&tEpkMrUuSdj|Qc^uPEx7jWsKIs51J$yR;K1<^k+d4t~ zT_*l6qfa=yQgu7ARK{%__lX6&DwZ3YvS@wF8?X<(4JfK;-qFPOMFoU^(-Uo86WqvP zy{5V6yzReMg)TJ+m?ff&!CG9Q3UiFDdSRp@6|o&9Hyq91{x=lyw_p7?Rex(o|N2YQ z$*Sa;A6ZSVZ|bS~Q&Wv@{^jcM8;;@cAtdH-@MFi?)VKI0Q^i8Rhgzp{i(jc>kP7pa zn`3V1&kgb?%iQ(MQ0rlthtx_jSB#&^uT__CyM7P`-1P%o5uq{$ZNe(fJX#c5ez=4P zZRPGQKcv%TRw+TwV()={az{@TDQ-(G!1L^3T!LE~pKGQtHpmC(^l5Am0#*;iDKK88 zNW2OCIc~jYp*{!+HTg})x$&!ao*C$REw;L>E2|NI?gW(HEKc7P^sf5vmy~XC@x4FG z@oL_>OehlHla;3Uo_*rXE$5n(eDPTb>F?;(aB%Xh4YS&?nyx8Ip7pcX&Vp+SlV?57 z=llY{?43)#P=&{D6M!H*C9{-QL#>yY9+7=&$}*zj6G^tZ5u<4083ncK2pSQ>3QUdZ z2O^-)ULpbYV?id9Bi@xvq8298)?@ZE>!bcR7e8XjUU^Hdl9~*Ad>{cLKb$@9MIAFA z2D&^gtaB!V?EH0WG<7=vDiYhCA6oK5o(MYD8gO+|2a+m(759J$){z=0j2fb78kgkw zUye}5>N@<#;lM1(#o%9|0b@+fD8oFHP1s0sDuMPj3XvsemXc)tzPI!w@sUNjA9QYH zXP5Kve>$XTtuYcmEu4BrD?2{Y>Z8$n>qwzciD~+Kerwv%JJk9gd{Mmv`Gl&_&~Be@ zTr>4fSg7qER(X+uzu1>anekX^kNLi6vf$PzH5q9M)^NYM0iwLf2a}&cC)?a`v+w+N zcafNB%yVY(x{G%-Z#V<|?nO=mclM6vI_(gb)it{t7& zV@JKac4Uk#0nW;^;x{XS$Anl4?DK?pjD)y0M~Jr+n-F_5fGAglnK-{lgrAW6;zZbw z1X*sm@xBtvFG+P_#(jdMjz(|HXuazz-saWI02{Tw!Va_aw!*4bm1l)_kA3y;zraPC z%}0n}5z`TAtPA})T0Y-sZ{I>SixrKW5O3BK%+$D^%-QC(jZVE6RQ2p}e)x?hnx5x} z@KRS?N(#fs>??Z(v7~atEd=mXhJzKiFxD}Olh{kg3eHz9U#FTwsCuH2nQi*B_Jh9&*sgjLWKh#lD>0k3=e#E*wP4!?;hh z|0+3TZ}V(-u>4R-D_Y?mg!CDIh8F)u)1nIx)??y~c}}B`26;B}=_`>HJ5Gs=B&{i* z{iME*jPLTk^Vs?hcnM{W)f3y^|AxJZG7REN{ebk8%47sfXGgF3Wl~UB(t!#l0UX*E&sJ|az$I*7lq?K2zpW~khA>3uU_k@n{*%QrL}-l@fI4Iy@UsTcW+PPm~M zmC#Ut?~)$HWvI1*`?}hnBC78Gz{+IpE7)Yc=a1I0jkl5ekppkn)>8|u;bTIrNAe~3 z70AvjsrY17?|MpfcY50)$AWYvkGtO>O6cZSa!@}l^w1>-bZ}z#$)VOi>VEPUyz-$uxRQCtp#Y=8~e7p{4b&8KWQ_x zWCbjQS9@v=226C!>tf@%XCzPVRf8c@llX4f=jZB?f2ry9*P8Mj^T@)rWx;!0mW9qK z-K7W}YGW=o&WgcW-<){9uN<{)OU8mFVz9>Zn#`NoN&;!(u2LlGrY0*3`1TLMJJ-8M zPMp(`L7Hx-cxL!bNjs5sm&JfftjM~S7W_MA-wiLd!(bUbTX1r;jIScs5W2U~vuM&t zAzWnK+vj72rU{`cxP}#XJPVy1OH5_#FA&1iOA2c1)cKFqBwrSP*Z3BQ$Gjg+=Cg@Z zrmQkZp2{eOXCl2m)T&vPoqZZ4%lHelvTmU!OZ?EX0c*?KcCNF2=Guv!IcY_Hl8v9v zVP>O-W-d(5=DkkWdv z%pZY8u-qhIZsD`0D(7WpcC9EKi;D5M*F8M-n6}}iK4@=YOvQC%41CCC+%uVBP z8vK|2;hm1yHlis(!lQf2B?h8{`jT99jMFs7jAMT@SzY8*M&i#z#_W#7KZtz#_sELf zOq!oYdc78jzf>82s*-bU@H?)4U$RNxLi1WlEpi|Y0w44K`?^g%_ou8svYY(+mE}7^ zxBMEoQ2+xb2B8Y-ho93c%}T~X#hnDV5*li6cgqHItto3qx{N}aBt%%8!r|T2h$bH9 z+s7{Wv2bq}8L^YQnY{-t6gs@JZPpOU_q_HMYLu)@q)PZ~r~`Z;YOmhr+Ywq7>T=Toi7|M@jefAFl4T%g^(Sl<%O@0Dt=M zr$U=n@mc_|(ZZlow8_6o(c%o5pMQE7`eh9J zh*vv8uV(S@6wx*XC9N{joBf&iw7ZrP$Bs;WmzgNnKEJng1|#f3IFt85ew(){2Sg#9 z5`7ZFu}@5LrN6MDyM6$Ko_cUa?Dbx4={}rSt;8luf^SS0!#(wb2$x_R`|*R#1IZWU zw9T6>ql%CpD;0iASiIW7h)pp@uXI?FXo(xl&@CS6VxgiwAuNA-%=3pkHHT6mDz=P1km zq1LB(qD?+UjcmZg3})iGu>G$6k28HsWDEK3Ih!AQ?JfId!Png}u47O*V>PC{+hUY5 z?PF&r2fH4Ht(=UoeYyiA#W^n;0tJj6w()*K{8I3<%l(M;GfZ}LY5`>HhKjHtyTa_LE?7+L&xHHXng8cVlmtk`Carl@ z2(WTXR@`vm)Cq@v8604vn@iCRc@>|m=v^NS<|u{5S(T z^*(|IZZlS>ia%8md%u@%9!W{mVWB1CQ8v79MN?ZfsX~-m#`hw|cQ#|x7>w^*^Dr`T ztSu?Y_D(T6u>JUv{WQLJ)$WNjbWU%YUS{)kX6X@~_7&}6toIK?6~=lt(*Cnod@_-s z6pFIo$E>6rCGP;qxyz^)yNKnr_VtYS-&Q>FF%z3q8UAz|_#F^xy-&I% zC)avY*BkhhTjDTsQz@yy9G-)ATUWfs1fogy{* zbF+*tUNuM7h~}$A=|+fj-6j#qta!c4O|q4p#YvXngVvz;qhd9JMQe5kF593J*!85T z$y@LuVa3+=g?*RX>{DP16uGoo##6bpdO*EEb@%D~0ch1yswx&LgR%IZgyN!OnDf_X zT%L7o=%Hlx`uJKY*&~&LB3!_4m$?l7kS$`uGxls<3^YBD@sqsJCPUnD5GHb$VmHK@ zv}~2Fgxa_lL-1jZi*`5?+KQO6R7TqjWBH9`FN>0F1U)^R`iSlkvoK~2%EkL+DDi@R|uF~1~#rJ>dbp%&8z%T~2z zmH4sSp_jAols10jZwUd_T=v3@X^Be)6{^@t6TeSOLD>?2r|9V&2*xB6) zaznIk6G_a)zR~*baXv$D%i-yJ`}p|-!>7X6THk=BgGONgHTef22f-ruHyoUi_*@0{ ze8=79Z*Rd6{CjsqoA>Op?AWK?hdkOou+2VQ1skUQ$h73xk-k3<--PoDVuh8c>g+%NnHywFcp6?{DvzBQ@wYIZjRHmzXiJ-rHQ_^j}@T zlqRs6RDAvSyy-tdD*Z>Px^TMOiSBm#5AJ)QGDk?3k$y0O-<)=qnBKDGvLYeIP#>J_&j}o-H?{PTg$DiMJ*p*lRHx#IO*;>6 zSopbsbR)@Qd64A9o?-ZA7KZv98151qWGQlz4}ko^rky1X^Zz{nCJKOuPVbQjBrgO+ z_;7=10t>)kM+f84<~R4hxoU!?==!0_s{&m#kLotk|_Zs6^X?oL-Mj z8uzTRv2af*-=RAGnWp{)j331jQWLo4yIXk>AaJ*22PhbV%XJW6`&Wl5ce0faFKwma z&-mQ1j`J;hhkmjW`AQAuxOiJe(wMo>nS8UHJ@8NdvzvD+x5@S*!V;CGV^iNDl;gXo z$}ebl&gsicfjFn_@RFQUTPMOfwNLcwI_^uqN}p?e+Oto0mdm(}c&Y4OBN(E1?HdBF z(TD$~&@DH~8bZBuzT872_OEE()x^6xMDC(q>2F)ORgpRra!ctlei0{<(TI}#Q0Xh> ztu8D?49r5Pe%H)GTX|7j+DO?TKwO@UtPX2wB$~{RDxSHI%Z=uIbblG zzapQ$8dcl^9Yl$gu=rFVZ*0>S93+9G%C0Itqxy*AG9tpD3K^}rDLKM37B`~YvY|j z*xR~3`Iy)nAr^qf9-$@T3zRiGRRcGra_Pd->dK`g5L#ITP@k|1)c-J9sP~M4jolQ7 zhdjNhh6s0Qguk>$sm4A#XExAFpU>!}&%fxU&u)6@(~%m*7*>ZK*>Zen@vD3lE8z-( zxA;kOdgg4HO2U{=9c1Yfm%P6ZPx^@vJZIiWvS9bgq)*`Y`DbFpcSn-$8Sf7x@pB+8 zIetUf-a-<1z~5IBG;>uC($q;)#F+M)XhW(){SzEjU5MoPV|J=j&abV27T9qFU7gwG zo>t=wBk$J>criP9J#DlQP3DJOqPbLMp?PCHlhTNo;RC-t;7}{9#(k3#{+b|QX-f#X*-thiN~0v2x*d$`=CE5|nk&;s z4H-&CeGD}}0`KHnEUm>H9a^)(o4mhRS`P*cyG(C0PngExOldCLm?$=?k zeF_DW2ma~-@=ovh^AkwzriY7o&O3gf)GUua=cV|{C&6sl59f2$)|1A}Cir=`dp)a6 z4YQ@nm8D*wL`*iSm;EOFxxwkr_jJ-h^H$>|^yhuT2K{NDaD=czZEn(S7;l|@-d)p6tr{fc}uz}}1WI;4}0hIyZ zoLPihhjUyFn%rNX)SdpJB@%Fb?HgL6b+L?kYnxTYcJS7>=|?-&Zdt^a(2YZAorb3` z=-sB5%C5dtALa8es!7)7*T4`_3sP9Bx$iekXJEW%zh+x-g`)B?>THja1u9r?H2*?G zko98NCmi+^Ch9%2v8*h$pW>v++TLAy0Cag~AACX&mw%-mRQss+%(B!U$@OzoXnm;= zmvN8S+^D{KeWkv9Y)(u?)S1z*u;IczqcvPz{b zNyeV(CxzFUO9?3P`m3-{_4nF zQ4`-#6JMFy81{wHe@J)x z?ySiDILBZ5^B{UT(RAUG@JvA%Kz_)Klc(q z%_rp$`b+btIKSscfA;~6j{QoF9wMHc&lKR$X}trjCo!9+{n6K79=h>WR$-jR)DsID z&ij1%J4~S5Q~rM!zvnP%yy#bIv{d-r&N`x?CtrJwjnUx^=laB)+D(JVezN$}<_TXF zi_g(ddkK~1uhjD4LggK=H}A!T z4c~4(Pd3xXEQ;Wk^<{jY3*G!SSE|iX$zyt;F0|x0S`z-cocVc5Y2r3edFaF(B6XS= zzgU!KrgpO`;ks=-7(B#yU%+2$-lNls+)n>5$j?=3bn6K@n0)C*>oh1Q8XC{a)&-Ik&4XO*ET-8;&hQ4_5ZhKXyW@{S#5IdFPmthO5vi_U6o>t{>J?*sA3j{`H zRpL2J5x-nNf0i%5XLgg{d;jUn@9=ETl7Ld&urD*LRZFKAX?{tat;HJWy}RtCs^rh} zMoT!F7)#`%`Lm8bp(Q^<(t~aMUKM}7V#OQ% zE1Fm4l`i|Ns@EIQ)AwIoLAk%@6M|>Z(eSZ ztW(|2c-61Gs^uf|5+D{X{ zu2k?s-gR%G<>Tr#j8pW)R)^PUA(m&fn*zCmE^d)F((40@DcC+095lav-{!t@v%df> zkkH}^>niGk0F}sN`Z?81tPp|Pt1AA21V_R^=%*ySIB)*Qc$cfmt{EL@ule}zUp=H zy!fA1z8vSn-Nx7A;D1%Y`S9`_cvmc?de>!wqF^ zhWn5sd?g1HXr$}1cxA^IDUez_6l^rUcOAWFgudLEem1i)M=Qy6?J9`gkJnj)L}hoTe1GRUMaW#ZtbmKmo|Q)XWs|pU$2yi; z_TW9udkgM+cWh>`zMPq0A%kP2Aj|)$H5=2GZ@@o$Evi(mP)%~|$@g-%OHlLt;c((%{eSykol)GxPoQfF$B#ev)1KUw{zZ{JM( zN+8cneMtC*T8G}|?IIiXQT@-S_+)LuTg7LOaYd$?(O%UHJx3H3P)x03$v%i6ii?WI zZM5xamP0{Krd4sg{tV29{Iej#_L8e7`gTu!UtM26|3G~l(vUyylk{`?dRYCw`Z&B{ z716@S$F+~!JZ}A}&L1S8HXK9-bUhn$3TD-p=2@z#Wf=rd^24MbcKYEjfAQhVKot%B z>G-o|#deomeM$h+UR+*3{|Nq`Jimy)ht-eN_lBp_2N3^??fzQ*ApS0>-wjM{Y@&TF-gz+S$wiX?$ZOwp-=v{ zlv$UPgp{t)*0lT-0a1T!B-s|>TO{#-nFgIgu$kkey?=i8E)o`0vt~8^T-If)i@cB5 zQ2UvA)A~sK-Yk#g$p>+SyDS`za95+mZ&eFUds<);W^W6sx1$XAGn466S6;(gI!3C7 zCv3s>wM^m_ugREEs#g?z)MRyXNSWK6YMZG(B*y2ZI>dW^#+LyUzulQaWZAvz$49T4PgH#?}Yc)b)F<`YG2F zQ|W6y5hDQ+spjnHmmL51EhwdPNBiWm>`%)8BZJ_?cr9RZzTDgAz&D z2x!H{@)#KE%xT;oy#}UN9xhCSeH)g8R>uN7*%xkra>6 zzU*E49{6kfkMq~GO-X=MB+eh*^th9T<7vaBA-<+MzJX{X6NgSz_x`y<{O=%8!ebLJ z1`SjvrgBov`NffhL4$Qol6Nj*G6~8xK4A#~%f0X;acP(FJs1SVy@|v8d6r%^|6`Vh zHFRW`!2DYC$PTQkFKzI4SUR@x`-A>!%a3yS{YQ@9zyDhigXE=v+iw(++R}#!9ib8Y z;#I%9u7h0{Z2Rc%YE{g5UB7nS@6std962cQYM&8fb;=9Z!h32$r;PBInc}xAr zwj$tjz&5ErPzXe=?1&w24>{SxWCj3%EWw_MpPiD+^V6*kP=>6J{mqf}_)(6mWu4OK z>qJ?UiKSn$2~~^q6RMR)fA20QBuKSoerGfYqU39k@PCV}ZkqqI zYpWU(MzQXdHpu@N{&Y8@rQXigWN`HPqeLmTwNdn8Wn6zUik;0da-mPv9AHW-S5F?b3KFm#J%15Ez>VHJKwtG-c+lC-h^kFn(s z)|s?UtuzU1Sz5;A1Xk?VO9X!~BLw~EK?oNK3SaSdB~4U{)HCS8c5IM&dO@#9`QKF^ z?R}g4nF^+EM$m7}0lE_Uaw>-{YCjY7M4+Q`#%}sgm170bPH(kyyxKuaqlU)!p&h|D z@r#+&PKJ0kH< zm6Us`7-6=zcdLX&BNSWR$j_a`#5PfQqo3+FYJ9?Pbi&M7M9vi!LZm4EDYccPtrD+p1s=`Bi7AEAL~qI(kn?<_ z>ODu3L&DP%BQ{J;L^l-1HyQuhkN@reSiRzne105UG&NBK&?ZU+7f>Kibsh7vHpBapcJ3x5_JxC01`NZ-9XsmN9qq{*su^`aNl7H`6nWel zk4?(^59!YV(YW=J`i=>*bL3{FuqV#e4atx9=~|ycse#gs4fP|H?{XOlK=Zv6c}wR@bd`PHke1a5uP z2!w@F#G8u}OH+Tb(_M_3J6QMkjZ>(-OqjWc6Epjq(g&G%d4=B+#K;lF6JU_OJ8vp;5bB?d&M2Y-FS zr^$mpO@7{mCgi8C?naMP-z+H{{z@5yM?2wfSo=d?EO^k+B7%0h&ibPdX&aoby8|Zwu*ra!UuFgo#w|?3P?m1u6`~B+z zl#EEUKy6pU%6nl&x3Mw%;fv~`33dH z$o$Q(W@{&|Yv`8!XeV^zH~4E2teg@{=->HOcBl`#4^K4sLN}JW2dAIKQsA9=9Py=e zRXsVVV#SvJRmnTF26%che^`28b^N(>q5kyYj|Q_gV4jvAGZ`y17P>_Tf@JgCd|Nwo z>#?vPyRxxy$$f3lJWw6mPAK~a^yhn3(Zn5Y*p`V9)v?t|imkoY;*V6vsEEJ3VrLv6F67Svp1XjW$&KX7;;QDoDYqOCKas<(xJQsB1qqPhUD`NJr{Oq#BmasOHe(b0IA& ze%QH{q@gx{xDwA};IK7XezS!re_<|J@TWoD*7|tByYiE#Y0*y;O?=OpTdL9gup@c1 z#K*7HY{7Lo^@!_SvR(~oWJr~o-+l&)U9_JQbZUk3V^FDit_iyIRh`^5d|RB7PPNFM zG>6m=k2$8!IJdmxJGU4A%$IrFC}aVZ^zcYP|LyGGv5HgdU$s#nmlxXl!V%C|qmX)w zgs(^v7cRRnxYpaNk+Y+X|J~Byhr$~t)seyMa#zC64IIv#rZi z?dGVzJSL<%#bDeVHMr*>jGLbhARVFW{KV8WD|B>wsC5={8oH^DzaNB(2Bz;g1NCzB zx`y5higo?GyIv7$?JK=^Q!oBDEuV^grOO4?=?&VkSa!N20dp%MbgQqoAE%Rs)=wY#q~I5IEQf@w}SB zZhy-$^hGN$gT>ImMRK9S#0L=MvDKtVu$t6(w`m#Q4^iPR=Y+ie*L5AP83CTY-QgW- z)&8i^O+VzXEg^V6KGEiF&1FGIQ`KBekTN07C+Ced8`uR-0+4A?%!l;($C(yj$no=^1k4WxWx%w^>x5ZU0v>nFn#$tdnD@B> z*w~~|2I^p6aZ58Zyr~Oh1qCWZKr248`4tsswFdw{C5UsNEBHL<3LJE=tOvU3U7-_j zCC8KiUVb<5ZoE^J>y=d7GTx_qXsO@XU0XBOza3yN~vNht@hNC9=z}ux23aR;qe5 zVq_MzFYdl@OIcD0V-ea20|Skqj?#O3PlJKUe3>`-zFs1v;*Nzl&(U3^oT284JzJxgJ zJ@OJny@E@pZH_$7#@CSa2_|i0wzj``7vUHcR+-EJ+tyj({1?WGH`+iV8t2qaKrgmD zLoBo1p_$N(O`2&?VS(AIV0NXw_2mqmhEd(fCzFrS_a?v-b`~`8?MH#v#>6LU`d2+a zuIh{4Ee^R(suTtFxvJFHQO`dCW@ik{NLfaeN==<{q14nFT{Y_UKeFKu?8}U+ar%pz zL_4_}#=k{N@j<;y|L9M#h7qMIxtV&9kalidAo%X)*Ub{NPW7!dJlH4-Qpt|Tf#`IC zp_FuDUQyF>Q`*$N`6PXfoWByiHyXok1cB8VL_(4UC+%I7=Z&9CTq-ufil|xOi#BE3 zlxQ{?&D#@n6^5dC3}3;ii@garn(e&PK6v zOHub|iA;WQ50*$O*ISMz?=79d4d;Rtmr0py9W9;07NQb;CjC!U^|AXmmxlTD^@klC z@!do8+|UgieZtCiLpWH~2ER~CnrY$-g1Byd+bjC}yB(>=cpT+GLe|Zto`wzAuZ;ep z$)UBh&w1Gmi}t+Y>*tv-iu-AG?PgbIPQNGG@ zK_ENY`@?&j8F()p^QejPx>~9`_03mr9k; zQ*!7K-n6WR1-dp|i<+(-L8QQKVU_+)92hrjx;cq1_BIK-#XNKF{&Hew)K2Iv2(u`O&kzSTnLu;IxIJ*`&Y+S z&7e?WWqfTE$2qA2r8S8oRhn`gU#pYz3M+80l8=>c;4o!GPw|R-p61dCZ zvHMGl7@uIo`;Pl0wGQ%#u3P>;-rfW}sv>(IP9VX^)&YqI5RDQP5fBuWh>-+?cCe!n zQCVC-1z|)*=wJlVKqo-kG{zB^0Y`EB4K6b}ii*o<0!Tnn78kZr0k_)*9n=v})O_!I zs_HJ?odC}F{O5T_(%tt~opb8!b?OxUEy63%I_3gQGC>SX@Iwm_=-YhF1fYO-4e5iR z6hXbE_T-{j=Y$~<_>RK{A{wDR^;gD`Z!d-x^3BKa$yp?RqX7w?eMHi@%|QJ3R^P z7wd>`aov|89`+a;-&N#R7X#2QH@m5(CN-4uOFtnUve_P7zC)xMI&qj3a((*IZ-PP( zq|ytElYj>Wv{(sfIX=1sv;eQ! z@>vg`iSj8X>s<_0tuv)1(FtI!Wx`tFufSxShmB!^Y{I6#-mcs9XtI6z2Hi{O7t~j3 z?&9YDVgd+e-Yoy>ccWPkR5`*V4dXsRfZPC%e(^vK8|A67q#PES;2gdM&P#lKu=^hWt6dMM%*U*;}k70Gh zgCUxV6GQ74R3l*N>E2oY_&dzT8@aXQGJE}S4g=rS@H=1SILMTK+K|^M4s5(0SaCf2 zp`$n;brl%Z*eN!6yco_fT%zH_VUWh8WHP=xQ(L6gW{3y~DX3;D8tgKUta2+62Wgq=nqRV4wb$zZ)4=E@!w2&);e z$EFn-ZYrzCrDRI8V)KPJm$gLU2W9o_OoxZdrpk4_GIr8;4+)IRuB)^kO(-!1XokAHO zMg5hxK$LAT{WXvQdQ}xmmYoUSTu$CZkW^FOhqrN}u!MKk8nCS4(x6H`kI~jZSJWTY zw?_0Q?|bNrl%*8$$!y&wROC83JdpQ9?p%ByY@zzZQvI*TY`&^od<%|x5dWB&3@0B3 z6z;}DE@ocv8(8b^ewwvZ13!oo*=h-%1X!nP6~@s6(QcpL2~TuQb^VYy&U*#}39Apn zU|z<$kb1Bm=a)@Yac6;CEbOyqMGY zD%av42&4kTtdZOZLOU6okN+5X_4qErsZ5BT?ve?Y?=t!&$i%i^SLwnRGlOwunQYF9 z_gPxarl_{lVqoM*-RenbtQ%G_wQtwrINHO8Mm#C%0_4A4&}>`^Xi5N$8B~?yB!dbg zcs;4IDs38!aDIs@2qTqcH&pwhBeA!+g?V>#JM(H|qepVykM?t3^_zQsO>~f=9Z2ET z2r2QCPLk3KIDEnb*i6E|&|S~tA2}a@ZqwGTe>&n8h_?CH?YSwjjyP`$o1|=sVy*mx zutg&OxZl<>NR9wFytHkH!)ur@zzHKz7+hsKfAk%xrVyjb&x2EhCjiC8n8{O*Q zL0R21-g6_V&k8_`_)-0{@FNd`H%teDPa~;jPpG==dovfrS|CQ;?6)>;a)uyX)Grtw z`M>?2@;B7KgGQiVYYZRAo2PWDQsus?#UxBpRaz|?>kd(*V7=8OlJXAD-Nz1lsP8;Q z>(tJMG@OkOVz!5;QHj+vpiDBs`TJ5i0c8He|j-sC`N{OeU?IC!!Kr!pgx za{Q6`14`5NN7>4M>^+Z&cHWIYI(oR+0pNu78$4S}Ps zhWv;sd99|ZgN~k}$S2hdV)dz~P^D-46)w%N?0HD&Y5P`j_IbB40L4}~66J}WMS{Az zVy0GCY7Xs5;8Ggfr`Txa)i$EBY`Bn2O9odC;aarU(O7_QS9w$LB`B^pDzxH~x$1p% za83d|80j&LWXM=nW~;Ds92K_SsIUi~10d}M5U&cuFrzd;jwWlLpvlhgLV?`QMyqQL zqrE1Tnd}dAhRbc1g81JG@$=)%DF`gKFkCA|_~sGoU9SRs1J5UA3JJVb|5KO2sBy8y zqyOOkN#{Mn7eS1Z7Mm#7=gpdiO@oC%YLAvUth-$qdcjf|kom==P=r zZFD}ZpC55hBgfHQrGBQy#lpxl_c5>RsF)A&6Oj4;-6Oj2S>U?n$3yane!g9^l5%ho zS!u+-8qqHY@`!4l0W<>ujnP(z;1OLbP`SdD4^UWPtCK0h%#>exMYwY`!7D1l+-m>t zheW0(91b@pdPZMO*UN6)vCE{Yqe*3AZA2VlMupToK7|Ral-RGk;6EVTTSx1mt%|RT z)eA0eMp8zKvXQ2li(gprjU%O)4AL)E!qXt@7vFoxidO6%-geRv9D<%OD*A-C zA)?eOq5M=LiTZRWBAoO(n0iFE)%{5a6Muu$r#q0pgqIOsvEtVGGG8@;R{kZ@kEmr6 z2RZVfLT95Joz2jJs6sTVXW>&oC(DBl+Gk?>&?Tw~=yZk#(&*@&(o?5#&7gr~%GfjC z@c8Uj=-1bsKAd$0Ie0(dT_rGWnBgf_zujYez*i! zT(p~#mjJzNJFAzeZ92P3@ip*ew-NYk4ZIN-@^5S;w*Jf)K*+k_Rp2vNzVtf4+F;q9 z`ti@e_hqtx+_#m>Ww_IDq1qo|pzK2333!xgfm?Hi<35ODh4LcGJN_p7|Nm)Bv(j)G zuCt4MBIU#s@mFJp>)mCdS(zvj`Car_qs)lAgx17D%2np`dCJVpC~{${!jZEMA{?>q zsdX$3+Z`+I>>>?}S0-I6$!nFiy3*B~2 z{&>7U=}90{zw3~!TW7(eiFkkd%S~A~>0b|*)ws{@fPcpm!vBEB$mb#0w@{g;uQ4${ zqN>3tRP=T8BjRt$zFmjOMLxFGCtKX6?OTiZ$)`$5Mbq}}hesVjgne5vQQ5bnzjA9) z-~36aH+9QQBbt=vK}tjuH0fQBW0li^RZ>klnmovt8_}dE2T9isahfzii>9MELgZKO z19z-|Z~l`wq+;Ml_BhTGl%TX{s9^`fKOXR_s(N!A>z&5{|KM*DGPN`d(r(#=eLO|r zMMme9kw;c0`l=~J#7g--`)C;T8zkMfKnaklbY~D%Fr`=$IAQCyFkmq?w_XM9O_i|w8 z!dj2=?=E7c)cp_2*T5yzH?DrK!Sb&{;W!cl(e$ex0nS^-y^Rh-%lqR#_(0yL=wwZ}cO7x6Dnl|6!;9)Q3T%zklhrR`BLrPPXDAdTm$6 z$H5=nq$O3nfmrtTh6d|+kOKXITI25k_WZY#+@ZH|dOw(pwNrx$nR((Un)Twi+?0~= zHzHv@S?&%osKz@+HcBGsu!k)eh>$ID8Tx}rT(HJra<^C^(b$o!45=OX;O{eZ7W00k`%fAXW!&Z!# zNaT~Wc2U&1&0+Hue@Y6L#}p-XAm7@2-3j$6EY%SA6F7-;etX{r5%N4=J8_cLGsv zBAz%Ic$?)(goojxD;?|x=g$vfZQ1}DL&ZagCQcWqT&bKVpK^FOd5CE5A9mur_kE^# zf=lk6zo{%)&3L`~CWPsONx8UOI4*7u{>9=_SKC>MXOa1WHF$C~qX&tf7YH->s=mk6 zRI(QSEy1pIal^Z;599j6`1`6vr5HZ2`G1s?uMjiM5{iIv(3PKH5>0&{0HV)+D$24O z<~Ng>Swy2JDW*U%AT+sm?{ww$#2sOVOll|=`w>;><^$XX>c>TYgR{O(zBi7)GUBmS zNxqDSsXDe8Pr*J^u0Z!<$3FZo`NNa$2OXaH#KUNRAb(gp4kYm85BmUB<_|5bnY~cn z{GsgJWgGQrNEQ1EJIGEDcE_Ql;>r^O$m08e-^zbC5Xnr|q7C6y zl5sPIJX@`mPpbYRl8QqYz(Afoxf;Hjo>|hq0iYzbRJMFia)QKHpo}SZZtSK zJog@a!VSKyg6X(4rtFA{{jGwRq3_4giv1bE644*{wKZykDt=Ba>rk=3b@0rJ{i(rI zEA}52>}7sGyez$9{}I71c&K^V4E$79?hpNvddFn+Z3r~`9bcbahK)L1VsWxQ6f%t6 zsO&u2Pk+XWOxjAB!4KR?;$e-XnX{*^B^~X|ncW=ohsQ}MyHg3Ni3lpwS~yD+kc*QU zdl%uAIlO{@75%;hJ>uvmM_1H=e^afZ908UGugY7~V2vsJwxJpwNe+{9OlZ!5bt%AM z9-iK?Yh?X-a&l0vwKGQ&p;Fy#(`d7L$hjBS=H(an=={^DEhGv@W-NhoD~KO*;?J$! zca6}*9Q5(&18d};QI95&#hNoylLYa_elI;-q>(=Z=pV3J9bS15P8trcEF-N@y8k@? zjp~1qBVZtIg7ZAGQ$Oa<2BSXlWPb?k(+$G*-3SO<-Vtci7Mh-&VhR`0AG5x-Dt1qo ze^~3zyQT)Rs${*)r|#rss@+Fk*Yl05=7rfKp|@2Yx>P%U2y+=z>X1cyaN!>r^aXJ4 z2P>HNjPm|!I6B0fvq;S})fZ8LcmM#$$1X+GV>$~1d-o|Q?8Qx1eveH zQUXxyo7u77HS^mdKVfbA$j;dDDXJv{FHX1_cqPnF25%PzdU`!|lxkh&0kpLMYJKo9 z;gq|(SW%Aq1SCJr`zfmaL6{w4BP5Zb0_vOwQ#bL%*73;0Q4qVM!N3Fj0g27t5m_m{ zdz0u4P25?WP<~f05^gdFHAfq3H*(wNH-5h?d)?GW-SuZXk1fNxFij>_f78CK+ z7M^t#Ny0HX<7>Yip?QFRZw-*?@jG2953wLk0F{1c(hyAf8Zc+42&G`(UCY%TAY0LmbQ|%t zOJG1#CdEKqkrR6>vu2c*6B*Vyn|nCd3K=mmKr>g;9>urIp+q}ZX3~`OVyp7rR&*NQ z^>|Y>uCB{7MYwz6zjz$_HMSq|LA+6PeOCU%ZzNX8-NTS2k4yM1$O@G#Th!3770~dm6f4UIN_t1rqe?hRt{EW=RX#8u=XH@cG7b%eD(D@jf6q0{fj8`-@ zGVmvoF^|rre(1d3O%9m>7M@QRzm_w$JUI5I>!y^1apj|j`|RUr14ei#lx{uq7gyx3 z_7N$ga8*#r%ZcqAx}5>Y1|ZhG>!>DF+MJ@wXLX$nfx_}6*2%m%JZ|#dn4G=>2}H{{ z9{*yjN%-f@BQPK}dHd?zL5YBoK5F4kh&%tEthCQnMHO~Eq@VIw2@Mzm4 z9@D*e*gSCN<$4(uI#8VO6E<4M0Tn7Tz3_(CWw+R|j+B#Yk{Zq3ig3(+FBvl|H_Ha1 zwugoArbPaEnFk6SZ`w%zZ_)jLLLD<9dzFJeOmbB4U(Jdr<~^3bi7p5&M})5TDI03} zr~n8zBf2o1>}&Qg)$@T!CmsnAr$0Iw@#%hlRM{E0iOerK{^2@!TJ#S=h-!pD%0Brj zU%{VnUIdwv=(TX8m#COp;$WVS!xoWhQSAikfSw}!X(fm?Vyz+;!MEXs5LDxHG0(!8 zlVXZ5HT-yhA_kB8*a7hyqvI~sq!bY9+rjSo>4p7bmE6ZQ{b5ywU|=sPj~I_c_=B@J z%(kWbsvZW0MVKQ89}Od4(i9^Xh0(KL9WI^wu*1vtTA20Ga2rHHIi2bl(IV09yPByE z(!p`F0VOH-L`cVvo!@m+Pd}|!-FUC!Z6~E(T~V8qDZw#8I)iP}CR`iu1|B_3Q&KtI ztw70=aLk&$z)_OEs`~*FT<#0ta<6qSHXLsEPSN+Xu-Fsdaf7Rw(_ZYii^FU69)D7B zd9XMqeh;GjlB6*1yqD~{Kv+96GRGgmNuFu2E|W8H6d>EW7I&mT(I`D?;#w)PAzQ_s z^_F2Yrcc${xb_4XM3AIw>&&VgW zl`nPUg>dU!fAn_bmZD3=L2N9(^NC+|V~RDNks-|RX21i7U5PJ%2v z1f64jJ`MA0_KYhcmAXBqwDhy6+oQdmaTfHM%99+F$=&f6M@=PNVB6hyxehfh*CFRl z&}Pvp(gt6P$FHPT`Cnl5#53>jUPQ{kxXIu+UuTP))ee-P-!I!Y5>OR-^0 z@Y+(k)%tS2;m@=93$itN&l4}-{J*IDwlSAU^4m9<8^IFIre?~&%>Wk10}I>gW7C}; zps^})8Wf)oXg-;w>a=B^ar!T4YwD8l$a{$(;B--D+o;UDYso5dWLER?rr$EXL*{hax`AmkCN_u(_DVh%O9QN=g5&)6iw!cSgV{YZM60E{p5W0 z7C6czC0cm%wm!ALCe6E4%^Z1O+uz*Vwf$YRg3F-B5+P8JqG^-Z)jITVn{aJ>u0UV# z@n(Qzc1P?uq`JwP8=;fpqzVv>>*RVKUB30?Qv6FV%XpplO$SG03MlFa0}?rcFCU=Y_blQ>DO_?S)oP3a~&#vN%d9on#PJ>n)#}h;~OLptc8}GUgV;g7tBhW za-fw!{%zEKN!J4BQ{r>zh=`qK&%FXJs>A<@I;~zxb-I!XFjWh9Q6KtDG$B zqYjx;9`5?`e^{rIKPO$MByA);(tyB@&dS}lf<7(ZO1e%EhA~rayNUfI8&gN8_>(Tw z&$ADCp;{1-nQtDNC_I0D{PeO=(`0&Cs2ZS&1$L5CSoL)8GsAa!>fEk`K!x zj#P=*JH`$=cP`lNkWp;rMe&1y=zxZr5^}C;r5a4{yRo|dDimP{{gJELvE;eeQAqpr z52)^CD?VwwLBk5P?!(*I#lw{%NIl>y-8=15yny^+&?>`AraV>|4ZJiOFFEZ?CS&%X zYj(CvaZi3KC-0SP^6cc3k1><)`##C!pP!Samf_T*! z)S{ra@2|hE_J?k;wRyD59E>etsIyF! zXKs7?kA#gen*(=L7e`0P{t$DI`KI8(0Qa{kV7%iK0Mlt7V{WhlpXTSL3|f_zfdIw3 zS5TAym&jUMfoq+=VGf;D1CFoinJi?qYhvGb=E~2@%@z)LNV>F1H>kFmG+QbjMNf@6 zSTHskyv-lEJjWk7zq`I#?v}Lh_q*)t;oaWj|9k=?={ zSf@Qm4_o<&^wFQkqlBdb|5}$lqTFvj8+*h@md!dIi!=`RzvHIBcBq$CjSH~hvB8?V zknXI`-($HL6~F7`xL;ls`}@TQp9LO$5^y{vZH!1Vtq#`VNl^#m@U&MQ zpg$)YWs}nz+VBNqcIOEcB~|Dn@D+Z*!W9p2^{>Hg@94BBQ{0-PSV?y)P^}8edGSY8 zD?XrBkoa3)9kE>ZXJ^Izx5OOi7T_ru3|$bZu+T{Rs^;J~qbrahh|?8%N5=6#F(fT+ zmr0Ps2VZeafLHhD#OwaG1s;76r~B`|Q*{5KgK_`O0Ha-_U^KQ@d5#wvrJdGU83KkA ze>lwt;F+0%4R8FBMF6T_PG<1c3(4Y-w+4EMVKywocL)_I@ z9~MpIBRYnhxiSThpk;+xT<-7PgDojA)v!D|b>O9$+@gx0rsrzJHy0rn*eo(R4gD9b z7jELkUg|}EVZ}#o#_u}H( z9clQvrN3%puvK5A?+a35Pk>RNVsxVsexh8Y3n)@^8}7JE#NyzH}jZg!iyxn83- z%`s{>8lz@+px#(NOc^z4&bRV;w%;j0{`G6euqhjx#IWtb(_+}7c-j~?^|Z^dJ&xRv zW7t$YSyBbLs=^N-)}($CSo*5giXJoVfRcCNQ5zRcwlWj=_Yd8G{z|^e@f=fo3C2^o zh|tidayKe#d7(5a%aP}oN-bPmqp}JC4~@#W|M>cRH^I$tolKKDYdZZ8qcd>2joQNK zl>gDV){KX=40ygVaZNC;H|Kc-B~ELcTK)&MMjpXf`dnjRG^RCn^anI@f1zEE1K)q0 z_4KV?wK3JnESapHv9iYBf8}~WaH>FX@M>dB;{5RO*I7Me{)5sRT>k-M6IF+?F0`-z zL?#Zr{olTtw-@kp1RSUC&5WD{^NKyqnfURCsnYct6|h2dKG=dhps4yS$XP%IZ` zUKHuDzA%j2Un{`42qU)mX1B)g#)e)LJ$h7e?dNHDtP|#kdkhM87iqO@lc_SUaz%-jZHZkK9vt282F&Fun+ZEk;k z66W?O1gP5Fa(s@fx^q#|*g;ch`w9~U{FbS7rbzm_0#$0Qb!;Z-;wPTXx zW?9)Wd1(gCb(5?$`5tngl7sqV@T^!ERv4;VxHpO-QNN?kf*T5m&x4S*rK%l&H0zXJ zEFV{fvutE#3%VbuM&VANs}AMT8CVF^q4>jJbIUvK*E996)*$f|;sS$c*1J7^`$HoYMcYdld{zhk%q!p_EQ{x#->{9z%4w=7? z1qjx{B?RE$`Fl;@`02$g-8+fX3x6{$LEn%|gMpcw0M%WUs(-tR4=7f0`5tSi$!wnk zWpaN&g9SzdrMka0M$;TGO+)$n`*^U)_LLoq|8%q9b?EE6{AyX>0gb}anEo2?1aO7WdIbb3OKmYKw_Cfo z2iZS#Pq~wg!%C>ayXYlO6Fj@t)YSxUHB`C?j55@pHYuD##EqB$1A-h ztD*czPfZ`iu~35X^qB~Lz=D&jSO!8RDnaP|(2nTK{cblp>N{!X&3oDz`=03=$!=JkC*C%DC=lrB(6dIw5}A`zNTCEdV3h`RF$!A8qT?_Ln6pYIphCt=>Ay zEuzy1N+CMG_El&bQp7J${2chCCM!7a}Iy=yv1a+6Mk?rmBHGW`|#1qD& zC~+X`yBcczd9oSkoBw~TTtkFg&48pFa{xCwN3%}Ny~~RG4^JdIs8bUVViyu(sh+{*F4m6g zv1llu=`Y{HLSQ^=;(1(2^?~*yHfl>;#hRylO`jjWi4;z9|G9I!a^ES<`tIqw5eGB| z_g#YsqP~T{VLALi$fs{UT~XYnee@;c3Pbykzx8DP)3PiJ>i59`5crblH4PvuY*<0`i2D{>tW`v)=PcOT-xM6wyeExl6 zSsR?Dub<^Rwi1)lGYRb+vsIoZNA2N#61q?JzzrqY565le-_yIx?mH zMEud}tF9^a$DmK!jP@Mg{QeSuKMcQbYrz7CVYz*H&U?5%fvcJZxm$j+(c7ic;7z)v z@w`|8Pt$e>PlF}U)5s*ZwhjYVT>22Dl%w(_5)U%skhtCPO>TIUV@enWR6G9sxw*Kq zN4KI;(?+GBlvDH%<&W*A^@cPd-~oW&<+hkD*4nXTioL#@x6RT!Q6h?fv{Wx?GMXn zq5KbX1t5P|hQ--DpxIyimqpi-At&N|AFqX{XLk~W4|dnnEkF*u70eChcDJ5BmoFq9 zar3>5Utn}^W=mW-O`erZa20os-ODb$pe<|5>)L-&n=?a%({>U_cWaE!j zMY)CWB?|fkBL4n`;jP?9o828ljlGb@7T{wzn0o~^03-8?pF2!xHEwTR zDl$#`KvCCu2giggRtjXxl+mnjREooB!0oO}T%H>Wy7ySPssWU~!uN`v9MZf5BQvO% zaiC8)geVd@`9L_}2@y124uzHUs{1p$YHkrY>W}nC#iECQf%c#xc@Rq!-ekAUL-WQK z-HEj7jYmw0Ss(IDaR6=SPNR1gZyPf1s)dHonir zA?ei1&|<+?`379pbA7J_QiqMhj>UQ7_SWWb+Zyj!z22g0h5dR=fK8elf20t6H#9r) z7cNxfpGV`rs>Z@pH1J95j5~zY)somoJlVag=mo8=V8Y&{_v+PCF9z}d{ven>Y+t=< z22`)$0@m*F7qD(SPBZ@VTpK6&NxMe%|FA~AsW9RaGL1meK)baZruHAl?OjoUAmjyn z3)`b}LBt5B$* zT5j^#Tgp(q+q`VTu+P=~uSKgA7z+GgBW1|BC61P<}33$ zI}9jtggE-O-nu~m|16@`t9Msb<@sM~q( zqvmDQxWd^eAi0ma9pHidE)4*~Qx;JBysv9)h?hAkK_yJc83$DG-{{#$#dY~8?WmMj zWds!F-hIsoMpbHo@Zv+`L@*h(!^#0H7`TS$~h;vmse*mr)Q}(+tPj3+Vta;WN6e zqVJX4kD+SR-d#0JYYvRVk$BC@eDx0*hmPg{yK%_60LxST=R-6OZ+2E>Rkw3f(Jcn5 z>UI|X#r)~EQL7uo^sdJj@IULjkdWpSgt{uyA2pvBNGm)|z!oGR{$F72c_mS=ije{R z#J>CsgTuZUdnW!tAWHk9Gdglkj7kJ&j1+%5N<^EOc0)jedG|O!tZD(}PNSQU1|JP1JAlGR)lBNE7Ln;d7){(ft@=`~mAEc@2I+Y}ehs!Y) zoJe~LAOy5&JRvSgBm|g{vYJs0LWHUvLKtulOc13|y+nAhqt->T2KDGMiThhetZsN6 zK^bHP9d2Sg!f3U7IVm5b)Jq}+*X8m_oE*J|C4PXu`tBz9xGwFO2{%r3P+0 zEiCF`^I=h&y{#?%35_iy8)6NR(fc;kpXYFh*!->-1GaUz_1a3u=6l(}d7nB?L0nMT z5Ns)CGxjK8HwR}4=soz%%dI@d|B5I;y&O|WN%_HndO;khE4@I1ccr_S=}F?<>vDadu>I3M3>x63TXw0Xd=Y{emAD3>CN z2~Zc>-;Xh5F?wMfdp5NTPscVkg_eZvN%L@Fg19ap%w1~H!>bCz8<5Jd*CWQ8Pz`ZKeo_C` zh*N{UJ5&lhPvD7lhalG#Z_53Wu1snMxcpA6OOpZ%cHSVYNo}|hGr(7HxbT?nXlW!l zD5R~G+x%^NVR5bf9o>KACD^nA0rJ{R?0H^FS$hy7p#1y1E?423V5xOPwu8BK-gAv2 z&0a%+1f(y$$+70v61Yfo@e8niOVWZ}LfiKvI4Z#Z;Z7=4@iyLp?@E6NEQ)^mqP5=b*wGM|JS$!!_QYg2VH(9FjCdHHwn&oOU)>FJz=E+P*WV6~2z ztJD?6+RbAkwda^=xFg1a?1RzdKEs;qCDOel{214_BrHIL@;kMYB`paHH1)?6N2Nxl z5RFp8dke#B1Gs{EQz^C9j-v2qA}P<~eK66?_V@<{V*JRw)-w58edhNmz`roGCX+}N z)@K+H`LUqT_ewAm>7QV3(YU>*T*T!WvCyfci~LDiz4VC6x-&$dL*F zN`(3h1f8Fm-H251m1G&9ExzP3(F{a`Lr9!1f3^{v8k6yHHwZSKbdZv96~9F!9mD*p zA9-lme^nU0i&|#09Wmw{?vHJ&BH!qdcx@IM(kmX}`C*E<-g1zUb)qMf-`rrOGC-=x zqRx7+gb^TOdR3qgIrryvDen#m=ut$$Ey`>U|r-% zTxfl9D)Y}9r<_lHOZd^iknro}cr>5zcXq+gQ5NGl8Nko$Qc$U&UL_65M|M^KZF2#X34p9fr9)2-Jmhb+2!LxF z;latY%$$HZnWh1Hx(xwBLP7wN{&@n?lmID<`XJrs$c~4H9SJ!ZmOE(N-sJ_5lXn5A z=h)dJ%wKu1k>WK&Iv{NW$X8gw}uC_fld zsz)5U@TcS-st}YnAUt@1f7<&1Yg-dLq*G)cz{EwWykRjOwB}s^O99#-t)N!Xb%L%a zye1w4)DMhrXz;z_;QtgxfmT)QRIEx}uv?c}tOB@V)i9XH9&LQMMW=bHWB~A4JquTA znh}&dXnam8Q3kKrY{388iuiOXR_#38Ol{+KruoZyehAd0i|^}?#-}2Yf|?vGnhO8T z%sT&7*&H?*{@L6=cpUb(VtVDQ zWYSsrkK0+H6?Hi)8GK-``vE$lt_S{~`9qN_S{5Ka=zKD#SK6BLRScc`EjmFCLz2dcJ*Obl(KL{irthRuW_Ag_n(P%TXBcGZc9{~wu{JmC)REKc$lo2?&|}ErtSg4 z{e4(FD6}iA_NS5%+R!%KO`p**FQ5ev7_-*}?ZgrhO(nkACp)5mBNXOsoskdp2I8TV z;Au@YW7D13sNeUOs;VtwV5q@_mQ4+bf4I#n)SyVBNC?{lMuN{e1JrnFhE!>Ja(N0o z76+XKwE3dl+Vsm7ni?v&vU5Neo^KfW{}~%186A5H4S1YNjyraN4tkq}ov`#aiR@dT z9kDtNuPk*@?r7Ps|G@Z6y-o))mfY@`c*z66%fOSi-=yy7v^@>IrLZBLG(oL~OcaAZ zid(K_dqI_KuAIOgFh7K>v2SGSwW#oz&n9+EbE!<9Ee%GQz2{wvrBG!=%!tgIRbyLiik~^*Ui&(6=6&a3L7obQL!OeobCnV^IR|&Q7@5L1K0Ing$ zIg$79B^FP?WefUz^=)E>*ntH7>eE1yt~*Di!%&+ z_=S6y=ZN|fYT@{ta(18}QO@Ch##fnvrH2iuRu0c{I6P>#G-o39S24B$>1LeC07I)P zqo@Ad7ofHQsAg>XHhe}GQIZCTa8rB6SG)BWcwLv@EExoAZ+x3u5QrfC5B(_heR@)t ze(c0~?<;ra#e9wENr;VCPyQ>Fq;gH&i&ML{9TK&4BTy{p11Nk41qFOGFBE6SL-Du5 zKL|xzLJ_|8U}%wGGya(pM~mYCh4Ok1G6UnTHhi4w(kA33Nz^4m3>D|HN^4Srx;*z3 zHbBAod7)Z}?pB3^Op`=b+8;*N$Aa4c&LMJF1rj9muBXFgCTzBUlGhK2mHVTC{M z5&8wb`8&}N5!zmM){(si_$vHXwT3J%8^>gBxs$@)uB*zlwy*51`?u^bb2L7ur5I2$ z#8AMap**UZL)pA?Uo-HvBpg5BiJQR zwhGr+rDSevh_w>k@-RTtN`@yg27;3GoVwEhsN*N0?s`W z6;Seftn*fH!I!)E3xBhJ`P4H|yO_h1NZ1p{e@Y_ba!RVcC`0>>LFgLVW&KFxl0lXf zt2YcUi_x-CjFz)P)u$be?ZsCEc&~d&UeDYzut9Ea{o7_58NUa{&*b@h=0LxCqeHM7PKzg}?P$;;2 zfQmA-{8v$vWxxY`ue#kNZR2qQ83%#6-2r<~ZGIjeRIT(+h$+*i&b1JxhGH zritDo9)K@;X!#sv=66kvq?>o@`}TXV_uPNO>A_wFU@!j)Ygb2TlRBpe^1%E#4Ttkx z{P_$9I7I$DkbF(L+{oAa7bM8n0M6I6eEDX-o}R$}Y8$JX8F=4oJDd4JbQ_GuM+2Ko z+jQDqAo%%;+&=o&hD^via=KTX1m@o~$#DT?HwKRtzuG%Ee(X)%$CZ_YTW1%)degPR z2{+%=9l?4aJHuP2Z#Po^?q{tPWy<;t+K&Ok9=B5@)TVaX)pptb$x=uRfQ(SQ-yP5t z0~)&)xPP&_E2%Bb3a)Ss?lxGtGZ0!(%N)JT1oYQW+SqXy7 z$i%6k1moT5UW}3dji31v&TLS;R!~&==Pgqb(ER#D%y*5TkS!kZ}M$$WSC0Mv&Is)Hok-A)2$&Z>hzT=g-S7Ww}h8(DUqpvcb0*%~*- zq5PIIIX1V2qpFb$9KqSm$~VE>-**F=6J@$&s}2M0UG>F#;)uHYjMWXxgk^1g=Mwl9 ziCBAh9cqqP-#{q7n%D@^#Ch`AU>T4{qsYlO#be)EU^3X(w}AZtP&W2s8W-&!b20Bt zGVeiQ|JYB!Ue!+;;of~ZuEMHuls)`i+@CX7d5k|G$Kj#|JjM#TYRDMS(<{zfKc$e4 zE{w1+!fH4GfpD$KYg|g`*56=L1rZFMFiL>0!TstZ$2@beP&)XR8AADc|I39!W<#cm zjfKZ&T?bex|FO&I*+N-oSl=H(ONGB;C&IhcPLA?#_Jbwi-yj*l3s>OZ^ye#nY|c6Q z{Y0$1;j-IZm?qJ29!0Np+?1}s@Vh^`1svl8DXKRVM0vS9S5UGQtDV5Qv7c+T{{R%< z9uFwSHv$Fpo)?OTfAmOz4aL`|QT@rn8`kqxMX}6Kf31P3#?kpRaXKX~XHe^3$^Zn|mpZmOFWW`vw*j|Dy-jZ>;`xc0&eUoB+4f0bg%MFgd)rmP)+0NRzg75E|+ z;kVKBUrue0{gDaF8&(zcL5Y`2!TZA*d^YUQ4CQbBmYk0xZ>Er~Gy^B{qUDe`^^NsP zFR}s;;)P4I@o&#?Y4=e6VtKC>e<;TfIXE>JEzgmURu$d|MANV0VZ{~<5pV{N=Y2pq z%@H$Kl2NMBV{rqiNhUye-!JwcRYNrEI=rd;bF6-)sEdoS8mWTsCwLgAylU`FN#5$R z0)M0rj=yCTMOsFNrr{gk?1kWxi=t`87e)fB&=IoVDs+hP&AyGi6YVh6U%N96Y2PDz z;{Mfp)mR^@v3ylC_&G^`tkaHG{jtcIx<6L92IuS9fAVMUoK3}PwD89>cXBUs+{|B6Qp?aI z>f&rP{LAqp?^FtPvaN3e$}OQ^W6xrUnO_xPhH*20Pia;*N*)c}mXlgm3O)l-24(sq z?Ln?~5T-!hJ3$=A=E)88)Rg!Sx||Cw5*K-m{tRBrwmvT)zMjRxT45F64gVbfJ+C~R zR2-^>nDJW6hUGkJS&C`6v4SO6LWeV@0Tl4y?$hYIn1y+m(GzNy209m|A6IjBFd`ApR$1q^(*-;e6AMDLkywN1G(AYg&gae41(x6M~j8biQVhH3{B=D=pjT%`e>90D9eHpcv z0>$ZJN4o=q-1?R{;@1NIZ`QX4#|405f9@U5=ekGJF9>C(SS_wo?96pOs~7b5PuHqd z#z47PUCa{t96*G@)EzB*(fY_TYu$|~PUwH4T4@MZX?EBTy={GMzW|1D>+Sy5dw3eG zAMNtQ_O2;pZ!R+Rg&ol*St^!6cDG(=k#xPF?r`k+(nQZeITG|Ab}Rp38qRpYe-NDr z|A9WJKdS$QSzpZ0a1+G8p#RX8&ue?n1ui#-%&_7;L7`MEFxS^tbu!r_0yQ`sCZr%U zk{7upP1vy(@$r!mzB;S{hEIWb^#|j~`Acz2A`7>3T3Nqn`npSTl;E4iJOWUf@q;fD z{KMuv>}`nT_N^!50v2}V&pL5NF+guq0{}2h{hj!#r~0ZyR&9O##EM^<2QS9@RQ!?_ zJgwpv+-P?_+@~LW?I7S-^uaSTVg4u|`^PMAz*P7eKXTN&Fe>W}y{3nTptBa=v0Db2iB`KXG zr{SdwqWy{;OZk~U?`PlaksK^~_MQIPuhX#ae@<^>KT(R@-dA-w7cg;=M5-2U#xy{D z=x{8~w^$qiRSEX!DvORQQ_)`$w)2i0JoDWYAE@zx_0>{&40J8X=ChDd=v+uyt)vt%G&n9f7^Vq99aAQQ!Bz|zkg)%_aEW=BVF%9 zK<#&Sev+^nob!UK;I5p2cl>nXQ&Q>*GWpNAx`J$!q!x4npBH5C8%>7d?74odKf7zV zjC<}*n{!5cIcKzW`0-$fXq)ALS>zkn-G^&q+e!9l*4nLriaK$9!kXSf_r$E}aQB+J z!zT(g3T!2OqJA2n-vSt@2FF{7F*GM|$7+1QiJW?g|1Wm=dn;6D!Y10fkf4+U3%`(du2Du4`tXQ>($;^

    1. C7uoHfi}}=Q-j5ol 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 `P?ukRecw-ZIcMc{n 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 S`-Qk8Zq^@In&5E2_LnFiJm5OaaZ6s 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�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�XuniW=z`+i9~ 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

        U+-nMkpb?a4}9Rx)B_F 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≫%(0Zi0pl9=-wzE3=HkOS5aPhU%Yh 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

        Zkh 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�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

        Y#AQ`$;YpnU@o`aWX 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 z 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
        r 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

        B&wXx$9uEUDo93`ZQ369~#@b!CySK^;Dh= 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�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

        cquCT z4pcMDYs_;3Mv#nomg`zU{v3sY#E~upo9OanliL(VN?PFhz07Yz=dzoZ63D|WZ%UA| zm~l**dqqPjM=fUVh&3>RXk(nr@TSR8EtEzr-7*WU>u%&4#bbtk<|kE(qPLWmp;Q-&;**4Kp<*U=?K)-}5@&*xtlc z+je4Vzaay8{8Yw%qGO7QCIHYkej^(Aos*J$>evJ`Hep0>BooEhloWv~szcJzWFe)< z8`0z-f=1Y5{>he|o zxnGmi*ClnUq`oDo+az_nq&7+FJCeFnQg=z}Zb{uEsUPl*n#_Hqocl?Qr@dqS&==7U zO$^yOm1Ro!AS>bBw}fdnS%~Imz0-qdJZ9K` z3#@OiodN)(W4w}#-0QqE{`dG_Vw@S}P84ZO(5epmIq_d0{uvU*o5*f2`Roow7*UBi z%Dz}7Ut_Y2H=jEg@36_6<~m-}W-sTKwknNz92wFjx;8sIceNi&tAp{HHgla{jemRv zak)F%H`RG!{PSDKKW{mIAOHO45?T|?sy`_P!dfXWg5oKK;juFg^D$XpVs;9R6~7mErGo+N|%+0nf- zRPIc<_dc?nWK?5LEPaIE@8I`)&F|xL??Kh(EyR_0N0@EA$=o|CXKebK`>S71nS8ng(iuw|hURB(ca_2Tq+GVfeqkc_n`|t{XuR;$4 z*VIPAri63Ul12f-DBMU?h=V!T8pWH6^9DkKpcPWIZ}u(g2tvUPjVascddfz-B?wTG z$@ys86ha($l>J(+T4->u%kL?57h0tH{DItraHxu+O{g2#_T{kcYwn;%LZfJtpIMqy zovr5b3){Zjg5u)(B7bRdNnv?I@3ND4-≺B~iQySg4yeuJ{&;+u)Lo8;Kl-^6p== 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%0D2@t#!o1A@)XvPX5FD|+@djCmA$ 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

        LGkE58`^+|^ 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 z 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

        iT^(4}MxK&COY{d~ zL;F9iPSuYKqHZnrtxF|J3n+%etPUoR!}L)g1Wn)VN=~yo-4W?&?$Ch1*YM#jAuimF zy5JYP3pf}RxY-0M#5Ny?x#=?T(&|x@CNE=*@F}gr%;I=iFfEqr(Ken^jQl#@5}N?% zjSP9KxSR0{7J=*F(y7x%|9RSYw77&W1AkjD@T-g^ggJm^9rJc374?yC!5A(B!Cuy6 zg0GjDUc!qHtO)G&F>5iiou`a@ibFKOYQ>OH*>N4qjD);owgN>)iqtp_dEx?_vG)7>tOgQ5WUmI9#~SlR%GY zmWlYFaOZQCwFrkjIb|p7o3yIqsEq^}P~7oLCHc~K^aa-21a#;>p6c@*)7Vmy7;oko zC4FW|T)S{*;mx6)L@sWpG+KZ)5`xxWv~G0O?7y4+lG zwp!l0;&x|wZpDR)!&R0E^@#=(ari>1>GcRr&CByE>h{g<=PxgH%_47*g%3dIij?8J($`(Q zJ$c`XerH6wk4acTyYD6S$4T>VNxRqpbI$NW5G1ckwVs>mN(pD(cxmu@IL$n*hcn2D zk2eZfx|p=yP466rl@0V10uOk4CW=yA&ZuwWnh4;XHhszOWRTvT$o(!+ucx5h^oSa@d3k_t>MV@`37t5t@^1KT@U=#V&tqHUe zHzw*{HM1|9{`Cn^Fc&9UpEHv`HGSS}hE=DBd(9Zg2siLU^`&I}priP7tMi3^$O9Cv{_S6!;i%OKf?nboY@tg2TrnwBQCuHEgZYNB=j zc?VQS#S+1Gax#`SH+v?peZOZu;DHgp(Q_^$5EZfRh(U1-9jNpR#K+W=nFKr`Zp~>m zGF%$bO%l8V^qNGH>_H+K&z!vr-5CAHW13kz5#_3Apqn+MjAPKP;}QE~bd{Xh1=|%T z9Kb^Hhx(aatfLVM`mycJ(nItY03E!lHGaGY~}R&X#7De=c!^fq?8$ zIa4*@rlRN3KRuz^Tfy#~&gXM=#caVZmrAX5$;$f{b-JP2t>aCT zTTfFhkE-@++uohKbxiM`*EO0j!^94TFj4M7un;`uXmtUxfqk_;SQ)10sBrZQ9j?9- ztzL-^Zj4sHiB@&t8GWDlJ;s`^*|avj+*@(V@=VzBo=~vby>Bm1ugET6y8>USyY!w^ zX!z&xNAr>v-5G+XHx3M^XQ7IUHy)nSrNff?BxPT(?9))+Edcyt>#0ushP=5suW!hE zoAYE%P|^$H@fYK?k6*|2t8w$?_!4I64KyGm8yaJi36RzbZq!X%^fH8b0FQK65Eh2N zE2*{hy$6+T947Bc04DomhXwap_-=1g&RV|5=Po;;qn>TQOHqG~ ziXTpHP6=a>o8}V=bjJIFBFHkhky$!ewDUsGShLJ{Mz<&NqD143=q6*rJR}7=>6vtz z;1i4Mt?SHBOts$X8kGJfIy5{yv|pIAt=C)8kt4z*`-ex~@xq-SsDZP%)#OhImAd9t zYk7IaCg~+@Hm0C0kZ$t_y1u#LV8(%Y^nOuKm}tmz!bN)jX$O2+?cZ}i&;I@a&zt*? zp3~cKoua>-WW0+U)$F-eC6!LQ&K&8)I!&-RW+fIhd?l81{JUcw`P!^w@n*j-(cRcR zE<<<)ue)Byyt;>j(B)ujFftesKysM{uj8cNhgHe4FNprTH0VnvFRw%6yujJ*FFf-c0KH=Qv*Y zndv`AK)>NhFE%0W`FTQ)Gm|J=%YKKDL9hbi)49Tos*fqftbtPb1>6qEUvDCl4j^cB5H6J8IcR-(D-oT4SNp&f zSRC?bP|^{Pv<>!2x-Rb)=Mz`0_flaxW6*YVBudXT|K*RuzZ{89<#@qZbD73nWMr|u z@SxjbwyGAd6>hE#&PZm_5K1XGcu3{F$F#Ra2k^*wi3Y8{soNiiC!rU0XRL#cL>JMY zkAN~FrN0=AaFCkqv@1BatZv3pfZwR1Q{s%Glj7X5!G-F4g;CXe!!h4-@U8UTaqxVUnOqFL)X~1>1 ztc#EH1yXVIKPA9kpp$;$7N>f8oka{3fC15m+==MIyJc9 zyg3uHiacJn4HV-I!3UAc)%?(l>PZ!@eir#uMQ&Et1mUqyqQ9bJe~DbPqMax`GCb?c z(cQj2_~b(LPjo2SnG+sLg=uu;(!qZdxFn!1>{A=qJO;K~GtH(9YA@rp&cEd!@ZRzTz3XIJ9t}zaaRMTE1?@Es}I*4$kH?W3xky2i#g^ za^f$f%wMMT3n}lHDer|;=J`~{8zzQ9FY`HbFa0@h8Nfx~tE*a5(9NTh$mHL4s_!~= zGjlz~x~U(ysSn}cFWll*Z+GiTUCk|4+nU_L4g(s>a~b>?8j;NtdN_(qeCBRr2Db#& z5E6dUnU`LsHFuBdWwFxgwGcI#(!&yFLFWktrN1h5g4gOyB?f&*=GLTlbJCgYU50ha zd@5P)tsf^m?4!YG)$5VL92!SC@O|&;WZ~aE`=`mKN0SZw(;PC76l!mkutxtRIc!b& zP~OFB!V|uvo$1~TFI~YRg#nrgl@Qit?bd-7M7&);exc&}9AM4(dK+2uH2Xm92W@&- zPzKmtBx(p4U)@})eOzxr@3VB*6U@(>wPngn+T6|^W(VpaXXqnNzLpJr*ZK>-NjEP^Pbwy|KToauX)5g(zn)Hqwy(fRD6xVCKTQU!gBy~e zJxnF!KuJPFB-Fr@O&sFArJ5_o|4L`DNRp+|CdBKpv=&9>QzN2Ei zvve1ac8X;=l32igt6MZ;DqL?VVslj8TUD@0`)3ioC6**k*poVao=!Do2?BkkosZ|D zR#0A0`jU#Ti-BNWr#iD^)aX<`80!y_KHPc8`vf=BHSaohH*)V#mKdXsZ1=KwPPcJq zKx=WXRZiSJ&`Y`_g64cWGd!D4Elj3kBVhAvPS{xBmwE-2xF6MR^8+qMQ%|?w=bHDr zvHM*6!9hpc!lT{;ZoZ?|qrUAhs=7#c`EcFNI_yWmbN@sPl`HfNy;2{bJ5%csy(CW_ z@C@T!hxtS3uAn}3TM+DLZ>YSHh?DEVsyJa(BKuBHr1Q{i@RnBK{` zbipUl(_EHd3u^+UhtXUF*7P(UmA4g*jDVxr^s2ma|X`?Q#MU(9avE{y4mV)lhG>%PER>UpK0 z5+8l2xdxZtQ2jII2=ho!Ph4vr_(=yG;1n^%wDWn67`W?47*lO^HD`ThArL>F8+a^2}eNl{tyQ zmiP=gvyJg<40RC$fUd%BUX9(Ol0&o)z~93XL`dB(N>%6LYSt)bhj{lP;In#GS=({9Z7F(2>KQ%8T(gCrc~=z%)=F+ zZoTR}^?RT$;xlyY&pQ7hqXs>;6aP3c{}$+v1MhDrb)j}aidl!=&bl~m|D%}xAjp0g zta}e}jtpf>d-qhlX;iO33TmqnI?{Q!1^yzldWHw zdKItKklZ=JeL8Vi`;v#x)M~>xu+{^|tgAHU%(DIKFkA=buZh-tY)^R4T2GoGp=@Cw z9c!$4)G|&_P&=$C9%NtGDNg`h5Jy%UhUax2&%dHXr;(xs*u+Hm{U=>Nn<@KbB9HxYs+Qe5SZwVgM| zjN21E=(2J8L0)c3(wpot6sVUlWyTo;%c#8KEKEB>sig0r_=2y;>*CE%qdK5)exS-f zh%=SPB}XpE>e6@P!x3;sP)$8&c5x_`%_pN1x|AGAsFSoF0zxjvJa2{ z#%ZN?VQ6gBPilY!N#bSPMoX?V^FBZH!rA4%8wJyKcQnVWgmX-IeYT{KexYjVwX@F2@KWWx zx=L+!ITA4|%foE7m{Zai9mCo5IAW+07Ti8Zd3`Du%{a3lyt4XrI;!MR&nVD^^(>{e zt;QP2<6caai8XF#s=8Geb}{;CX4`QK1e=w0f)tcKc55^(BIH>}32+$^Ak;*afRTfL z#1%dyNL=->1$k0EOB8zZe_PA>Q&*Oab?f!2x|PlcaXMVB| z30FfbQLN_jg_^_UI!4tEHp42?(IRV`3AxH8%3I=wPLn&CXV}&{1J_ZyKum$^c7b)> zB7x3($<;+)0%(KQOD&rEPs^$7k7Jq6(z-BjtlOf9jU5mVxUJ1@Pw|bNEG_@EHm zB6Kexs#t2Psy?prFTfxayy3>@*CdzU%Ov0nksR`nf>vrW^6vfGp5-8ha8B8}QX-;b zmND-_^4y{T5;Nz<8`U;bWLzf#cnfBY7UYi>G{h}<$>%MUE}3e+Ew>MD^7(8r(~LfG zRU>s|x0MBB-MMfZ(a|{QVG($&F*+@TDLd&-pxkWafgh|06^rLZTEy>0s=+68s3FXS zTEj0##|q)0DBW&{J0CdVYS%E`Wgz9TZ)ghQ4ylog+Y0SBsMTh_UhVa-T%GQ(TfMG- za$9|S*Xm0Dy|$e{);&X&izSGY5(O`GV}-0^&|bNi|IFU7!l+_=b*g_q`()=edBV`z zGTe9z%Ast~Lti_OtqDlQ*$Z`b6EL_s@yP&eR>@>H>*`IqZcZ!GfOn5mI1TOaG%t%R z6@MpdzMa+YWW7J2K`cF};yKavVdqFYg%`5vw+S(seJi`}jVw+Ve(@jh0mkljd?#zg zuK+vCXmwqzhjFEraxnETk*~?b!2bKLbIlfJK&nS1BD$8D?0-WCl*i^?j>AkPq z_f%Q-5*4@3D`{dftKY%DY1Pa$#7KWj#cz)xW8VQUfbUf*aaa)&KcH=_eVRdy`In5t z0O<+kbSv%1dDeot4QmNmqdkL$W6R2mU@9yR&S4Wh3Dbvs;d1oE!OAXdlexGxqg z)?I?4ZAEK&bIqc^%o?eGqx8?Tc?Xm)M6}yASf{R0fUunX@Y?mO@x5YaDr-$JF;mP= zXBnSCQ)VCF?2(*}83y0Tz6_p^JYQgU57EoK0h=PEGt5sH6JPEIoI#21Ly&2_nCiTB z?qsLl?g}dYy>>hg_OYBOVbo0!H`Fx=OC4T(~;;Qp2s~>1y{SE8XPs}Px z@$cIJs?I?4&Z4om^!WYF1DFcZ3wV0`f#yM2HFYwVxY4R^vGQ(d4+>SZh*x^d-bCl! zf-E3T2K`ZIxtn#29%Yvx7AXQHD>9pC@qXw;$Pn9n15Sv!RJ_?%hGMS3Fc{!LKp{t4 zaf+DhIF_V?qZtO$26^lF0-XvEwvENxD8g3JRRy&nnDLUQru)-;chh5CUerD zbbh!^O6iWmeA^Aywa&(*fw*yzn`zDtr;LUh58K1Fwb3*$1K$y|DwmqpWi%_gn4g)s zUzk4X^50@OAY8jMPR&L`mQ>>)V2;)!tOcC82$k13wU3ieA&er608ES;W>0pT)%>hg z7t4P~LWQ!98YF7us@_s-YyD){focH`69`WW^b&iveW6Morq5TITKl;fG{q={-fm3v zpm_m8WzCCRT!x1;$WYgd&*(eMZCXF03){4MM(-M?qr&uRwGCY2x@EOa{V+U>ndUugERSYSXU6 zkkC?C=&N=sEh&ZX*)7VNizO!xT@D?NiwslQJn)y zdr^Ab`Dyf}1$3jp8=g;rP{0v6`%9<#q65k-EfLIGDF8p5SRq}%<}7|4*>kLwZ*29m zPdU{eI(5a^wPH??$=0rDZe%+3D+QAjJjxM0-lZOc48u*Rt=rAote6H4bu+<@so0~veG9$G3zgu)d#tyW`6GM|{wyGTd<`N+Mb(M) z6vv~dsJfH6ezMbOk4D(KNyit*LRKPJ2?59aNWZPsJGv02&w-R-XVjo{Zn)k1wx$3F zTF9c$Cu8MDUc>a*?Ha^$%db)PJbu@B| zEW`h5AHOXcfiI#58E7wy98k3?&7^8A47-;3m`yH*+8*0R%%rV2-|>(UHaVMAxXOiT zOPEd?bfge&M=9sj8S8%Qtd93ny{Bi-GmU4x9_S-t@KAWnT*p)XgyL|sai3s;L%`${ zm=b3BsTe16#IEt^Q;C0znZhS4VQA59)|5xZda%`=8P-J+b%uS%oBmx$NXkS~$2-Hx zceN4+-UcYpSjhX->0I8eMAdSCs%4qV*uXLr(Wk^@|9kk7=s!WxBTAG7*2@|VGPa5% z>04GHWf!^Uq4rQ5_3Q1U)B%}cQU#0VD}lwmF>%QoZQ4BM_Kpy;} zk7C#9qyJAi<8-e#)~aeL^qswAE-hWTjGFID7gvp1#bWF@@1o0DL-V4qOLM zhQKNmlEEE*^((#z21!44py4z)N$fw%mx!})@YycHQd6{_33 zP}Me8k3row9i_pRU;wii zP((b?J1}5Y{@<$ZS(b2j@B90_|Id6nOm}s4b%m#%@U7=zKXCZW37rlVgbvTC#6VEl5S*1@4pF!7TjQP&jj0klf212aWLQMezvion}`>k&0Q ztA~WTBN)QBa8m>w%a@972Y!rB!y`J(wdfurlzQPbSF9p?5Vp}H02m*FT(*+u*%q;4 z=?u9~YylZ;ZL0Ag)Z1kx?5ceCliE>2B&55Gp8$wTY#IBo#twSZhJVk3xU#u@k!Fu zzbI#bg+3p{YA`Rx^jIN`&}js^_?{}aqrgpo+$7=I9icu+l`wrMWeBgy{tBHXN<1Po zv;@rvlQ>6h2?xCJ6yUos?2oS;IFU*JTV&v=14=@zT^bg_(RagiQeWS2YJG`_EbWvg zPo~H88WB;C64ZVoy1fIypb7TcC0W0~4#U`*wBVECI zPhr}%tau7bo#4$Owp#iuGoNAXS*AS0oM#yv>^=vSuk{p5Oe(CK*cW{m1UL>IvRpdx zAWx+=L3O?2qplScxa3m18AJ~#=l~g!peqj5ffpX z6= z_+-`t{gC5hX>M?FzueGFzg%;sn$yZMINDcwb&Ji1>FPLWP}09*>XcIwgu^mA9NVdA zW(?;fl;+353Mc#OrOKIr;!Rdy5i5Z(iASVcUl<_zf~a@GNEJO4S`P)$H<&orphTv$ z5m)-N?pW!QGc!gG>w3ljw>ugNRxwYF<;w<0yy+GyAf~N{)zk$wV^!jjMm}YNzpVSmpXKI>v%A>Ts)|>uI9^ySB&0xGIhkWXH%EzY+g*2ip zxqnlZLYn_gK8li;_j!k8N*InNAsP$xiFOR zC5X#P&NRgUmid)o0Po1}POzH0<`=$H4B-^Vy{G)#UIZX0E_1sRAwtOCg52V}mhM){ z9}u~fe#ENUOQ-P5{QPitsh{5xto-*&H${~02J-KUH-Yk-cP$>o@0*C9BW}-?Ihu25 zK9i6o{1wZ$A-wI#QB0FNK6o49SM8Q#Ex#wo5x1}P%Q%JRyZSl)6UtulaEBasuEH+~ z|B39{B)y@)^UH|aWBoF2C;7en9N!aVe7Qr8JC|_{;p=zH@esZ$$Pu?U6WPj}Nd90y z$7e(t*Ac6|nM-&2>L;-lasMdQ zzYB82?PvWmK11>s`8nPs%6K*1(K0*N&Fk;DL2sq{rI{dw|@L6S^dY54@K<@ zg5vH<0{k3y5P&`BaAZs&pLZz5&fnCN58bI0sP)Z+e-V_TCqG1f)4|zIBqpo8E52!4 zA-BY?C92{r$Zbc7klSyB{}|*}#rw+&@0a?O#BL(mV~jt_Ox0NozSw!#=h!}i4jb%- z&{NzhIFv)NjfUH_CklT?;t#-?Wq@jx!7|+8&KabX!W*^!jJN|ceBsak{?1>K!JmTX z&%^m&|95$v6Fe?TDbCOD@HliXJBkl{jAXgs0$T7~4^XVwKMN(3e{fBWDL!2tRWIY1x8n16f}85DYyF8MXpS=qex+tf+2D4ie{Z z{{r-7Bd!dLl0;n5QW+S>yNFz+Cu%*7z;sNUYbw-79@3`t^uScU1i6-F^FglQc&#$M zT;_^%r0vY}NQ-NO%ko_kiqj;Jz?xHhnBzB|(P$TkQ0 z!hMm|LvN93agMZocr()C+Tb4fzDPSDgZN!CUwA6A2IvE2TAU;8zPvxu;@ZFg`5{O< zEIZUfTCC!NMKn_&(7=9Si z;@ZH&^T#6X@!1hUd5>o&SjX!p$h0`uG__41!D&xi8+1JRbC?QaKo!gdR+~OjrV^$D zO&z8GnbSsG8`Nh1MIhY3>jP_MjndDOsRZs!h2QbN;JvsucvSv;y!WEag+Uns3AHZL zFP3R>j0g)cuGsr7a}<0g_utQV)=LI39_IlVUG^ z;Y8sKdZ6H1Bq^jRtQ8h92~(lgeh?txub?^~x&sjvQ@@kgwKO+{7R{!5Da2Z#-ht*u zO1;CNv;$Hp6zT_rO%9mxJTm%}+y!~Bm->xwsY?MQgs|Az( z3ISK2s7{3*gLXCi1@*Np@OYu8O)2=61J4d$3cjudqJOa76{H+8Yc1OJ6(YzLOQF!v z6p<~W9?8{RI=7^sSA@Q*>e z3X}_0k;Fjc0YDDT7hm{J@P!rl!Y;uVg5vDy3!6Z^s!(b5sI=nHG$6%N+lcoY(Zld~ z(FbM4p&qNhgd4I&(Dg!#4FI6fYQ^?KDf&Bd z@~#ljqe4Ab2%XjhS~D<4pLW0RaOO7`pAk-gf=sL(F??Tm*}xLR43EuMrA4`(`aHUX8zVT)cpu4 z$aR)Nzg?5X_Xq{Re&{kW2ynft9jU4NnsuisCAW&iUc&H;vR+huflBR3fm7{#Dmx7y zce;H>*5?BS@d8hBDVW^mbM?`&bNT3M^r~o^b421Ke1g!`rvR6#1NsI|$SUXvG~#(U zR{9Nmt}>mluzE3^Yt!4$;5DU&3xI4IE zN9DsH*Bh?5MEIcA%3xrW?>;cTWjU(N3A)WOXs{E|ZOY$e<*@edsoR{cw4pABC}W>zVnI5& zRWvIizCsANhWOgp@~H$%s!)*Yh<$y)=9j}MH@sHI)ywQzLXK&^g&^jQ1;6PtNsVY` zP=*0R2J^eOO6@P_;V8kLsO{^w!VJE=IJ{zqr=xhyqbCm&9n43Vnt4IuA zcNM^Ox)Bg8y@*!a#iJU$r_9unD@)=?4MPFG(;LApImM@6D5izp}-{^Oib#PBb z67S$GpNhBi@rH=EtoPsYWbhVf9R5{!%Qu95E8g-QvA-|8yh%IFrVPo#;fL4WTR8F3HLzIf<<|68vNz7;y9 zyJ#@_AT7)nIW3^}y@86Se4#+r;ag`=8*UQttq)OsF|{6|d@+^7?>?%}q>0<{ma*b3 zm0n7Z`Xpk0M-ow7Q;OjqZ6^!7Cf?y(DA4;rg%=A*#CUuyIYk$tRE?LZzM4kmx0bJ= z>`hU^HI%oPeC0nM2{be z?IgsD8{(7yW0jLZ8lELsvQXiZhHi+(q9F2Ov9N$**hkxm0~V$R!~qN=gdi||k~F0B zSVV9ff`!`(gMqY4rKDA=Z~ORdzz2UO#%~Hl@G5wMNH^_1d|#vNb$p>1zWENrw;zVD z^$yjar>PeU--77FW%Ni4-$`O6RGI%ZJ>~E{8?%KNzQZtlBL%zWFBrakI}G0jdmM|jn!cj&Ex4!2={u^gr-?5BZ21HQ!6@zN57MtF|F+Pj zw!wBN8tg}E|5WHwzf$&_=u%%$yNBpe+Yv>ES=%We%VdxGS-d7lstiiHiE8KfrtTzjB!{YkPX5-XWn@iVI%+qt}esgH|Q0poJ?R%=GyqaPLYXOx%DKs8{r4m3k(pnx4fB*U& zAdW3uK^3zEBp8ks*t$*%&E}G~ zznsO!vzRn1`MmvHc&iD&#{4Qg0yTJWz^4vp2kfc(2J1&A4ny5#R_NdGtMNGcLF`Pm;j;Qv!{6$a2BSXOkf<+e$kopx4HHQHbp(IA;_p+W;VNN* zt*F0~G)yM-nTFE(W?bK=AywbfkgspWoqGH~reRdQ-k{Z=j`Nm=^7^KX?HiH06T_2M<;wf!Dz5ucR{POLoh-uHnRb3Qv4RNOa-(ozFY0 zVMKj*xL?={9!VK(gblGLAU|+mGfu2NG3reAt)gDZ%K`i7-T-tiS63@opx@;O0tig^ zt%!h=1S1Tm=nCwYT%86qmGYJXyL;j(aLdUhEcY0rYG+7+j$Azg)ewB6y5)`yL6(x+ zd1vI@)DTh2Hv>u*R?dvLj`F+AU?Vbc^yDU%`|pxtQLiVFd#E^3k_&jn{RmxZO(ynd zVNu#wz~f?m>Z~3bK3^NopCtBI;w#c`BSJ)McyflCo2ja5^t8l7)a~Q`+0D44-F@7r zi5qqgb+hhC?lj_F;2z=L06%~3^(=X=O-p|dSID-}UkdBbgew#jCp!W8YjR_#v1vnZQMtq;UM z&fIs@)E#J7*%>|vo-@?)JHjVQU4NXpw}y+p#S()27EvF$_f_>_tsIz#CSV>;iD$vzV(Tzfg1kfR|nu-c*t|X{dwTSi~zvlJ^*UpPk6u0a`DeFgZ8s1LWAH-TF{-MN=tErz+>VQL)!{J2#&i#OB z#N>dH6?Lzn+6>CqaL*gELP+sK2VYHYBy=4G=WrH8;sqiw<*UMn#;rPb2ar-R^TDl# z*ezk$?JHnH;$JV!RL_f(-vv~?8)p5h#J~5&4k$wziTx`DSkaFtJtpib`>6-fUx`s< zEd}n}PFja6y<>UnF!f@382y-H*HDzV&UPA$^Hz^&-WujERZtw-Pyx@|r>NhM@bOwJ zjaJR1oz@aM5-;NiS1cjv)64_4F3I8PRith)Nu1(5N6e#&`^U=BbC0gTH#UNJ9L)!) zKlKcSw!n1*rujO;0Bb47S$9&+Q)U-=Ru+LTF*xfZG+`IHx!5e?b;gY*(ltJfq;WOV z72%$qB6sja|Uc}b8W8c-rWer9MC=A*xFptRNs>8aZE1) z6m3;cy_eSW^uD=1E&a>;bsvaSgAN~Du}}9QINPt^{&0G7KgY`o& zx@h*u+4PXq!QobZw0Eq3tMuq}t8#RtRXuutY^m1N(KRRdcj}ItNJbPLSAQY`ES#i{ z6s2t5H!6LWIVy6NI_h9-sk2g}sz>L} z_0DJKT}dzG7kC%@IhS9MzEHU!a-n*`{@79%rY@)(Q-%y0iTPK02^PQot!OM^mt8oX zbRI_zyTm+F2lhRMC2!q<#A}EB%;Ev;XByWo=K<_z8jrlJ3Ead#un+v1 zr<-@{Y#toZ=*~PHz@K|`ANX^vaPS6)-xG{E!sBP3Ie_W>k6<}^O+PT-HIOodVnQ4n zu=T|zz!c)YkVeE&NFu$fPlP0L4kQvUv^fI!&NG_SK(*s{rgL@^)&{B5IlqYqmbPge zE0whyx%r$XjGNbTK7~sF4+>3lZ-tB3hV@k1vVm^J9(pc0+~<`?t{`w&Bx)`H3;c> zjN)uk`^*;VVZm?i1Q1#&z+l6$9S^|WDL4+rhM0$tC6aV+1Smd0C?$lFLfDDm4k8Rc zC1K@J!g?#m;N&iZP6ne|7e?m)QwWi6x^R750y&vWBN2|k7r9@D2vc=@5sLZLn+*MYyLa@$J^x{g**ySmVXb8+5w3vK$bd|rEu=&vv&Y%+8H*p zBh7zv3`_FMvjfI6Rlsbb?S3>M0zyJHs9Y?@i1n_|NY_HJx z_CmHu@UqNSdxhsO*C1JoY|l+la$RIcB?|mPhr*8HU+h-an>BtzM37e0;3)pFU(`={ zeufql^%&&2phKR!G|Z9w_ucYbr1AR-c^=8P@fHwK?FXKJu#o40$a9Iv(`l#L9m_e4 zPf~ZS)2B54Xaqg51?3#Z$Egw>F<#9-S@`xo$n(Vx<=o}ld-7Sk<@vhCUoMohC%-}F zY2K*jUn`WeE>6ii9rE1e+pGD4-SYfMwK0DxXE-KaFZFjwKe{J%mv z+OaAEk+P(a?HS;Rp_ap*NjnOp9bW>mYcHAjmmT1baT5F?>|U?d3!fw=l?HZc z6zKr|&{VM;7J5%z8N^^z@>9XforQJd(x8rWKn~(MR$4aV+91Pp0~i4!HCS;yAyeTT zsfyr#hc@Ecpg6%wlqz9afO^0x(sR%Te z)mVB)8*y!LMZN~Wf;z7@crRA;TXlLjnIq1Twu#pwEv^l$%QpjR(lgr+n(+ZQTs_w@JA}y}%Jt#jEX%EQmAAkoC z6~H<`A1>449BB{b`vXLSYXc9+ABHj;v8v@<3}K0TpN63egyLU zQ|5%A41Z!+=&zqB)8ZUy+ce7BF6X`^TEM0ciVp=nC=e4+Y=;nE3XG3*Wv-We@K0 z+u`39M0P2P_PvfTS`~cJd=>QCr=I0=RW@hWFS=RPLGS0uDqBQe>S%|ltf>P}T&Og` z>+LYr`Vvt`JIs2#ReL-FsRi@jbXA{PcES8CogP1^Ltzw0#b zX4%n%3F^&u6EX%$OS=h5n2|G^4W47pf zF9#L0T2#;~Q9%MN@e*e*?y-Vaa2?#}>!_fu5j=fs@H7Nus?RArJ)5&xdwlvvuHVfQ zci?IG+(huNIh@Sp3AvBS{c^LzAOF(-+rDF_-%^?B33H$`Y5kyJiAXnG3`>MoZ#B5} zTpq{3SMMko19J6`6JZfhaR$po3f6{VX;BbX1)=W0xM4i0w?z=gfelCF;lI=uBbZ}v zq^!jD5N+7Ez8p#aAPt8=+yA`bYy07iwxI2wY6RN;v4|gQ6tw+ioPDCFZ!)SnYWsnJ zxjCZDh+xs`Z4r2={Y;0F)qN$xKhU+cx;3Ny=@QP?>&7jHug>H^%&=c{RkQWvnn>>L zNK_jlZ2|2n{bfcMC}EpnWhmurqM?2s$!&~4gC|t_@JygwLN8L`CRMovTJ~8YE>Y?V z1IqC;RZpvi9-qc4?K}12d3q|9oTBHZ=_xgNr=FXqtJHZX!rqN|YA4}luOd>(J1c|L zS}c@*!4#j`4D&qL^&N|eYO2w$0p zx&{=sBiuSS?dtAv?qK&AXy5N8$*_Bmx$i3m+z-7dp2#i26SjKt1i~hgKQp&yq=CO| zq~H{z{&f+J(O2;P9r{&hZC{9Bc-|+}y24k~IlhMW4F!&}K&B6(aDGvwPb87NKAH}v zLlM378xnbe=`HY7SA?r8sCF)$M#<1vpj90Nt?C0<+6%w-yK7a`W)(Dp-AQRgK@6`b zw5qPnT`guMeD!Ikn348%hnZweHkWyvln6C!GwEEU=5wXf2$H4XjJ>$3wo9&aEnsh6 zE$e!5gLt}`)YRF{em=b$2eu$4E6MlZeO26RB8_|H`eWJpfW7uc4*OI{-ReWMcPgA> zsk$;KS#t;cL2@asvy>rJlS`xRs>y9ypqkvQX_%^|$vw7Ni`;1n)#L_E`&=vDprvjw zeAVQurn$;wubRp#(|HyC(!AG9Up4s;4GSF+vN1Ks@E$Ytj1PfW;ZMB?_5w28rKSv1 zZ%5ce$Env>Jf?sm@&N)X;WZhWhB>A$B>$r6-)a7Oq4IAv_Kk+g_j^c2nlFBqf32~v zG%@+kGx+VM5R)N`eWgjQ;MZE}Zo^w@=u;x8pWr4zQf`0-{K@xZ4E%$93-~BG`932i zU!A8hrAn&Zhr!qN$ygu?kwCy9;sLL-rwLfVA$qeEJXQLzf>%YA++%o)4KYuNn3k!B z4etpzmicR;^;Y{xxLprM!gO7mqz5Bmx*mBWDn`OIU7M;GgN`mY z{gJRaYHo_M%~54j)Y%-xNcbx1kAxd_DCxnezsd!t-c@kwwKd%XF1-rJc?63XYs>PI zZ7;_K1R~aJx)hYwzhP)Mp(pxB80@TlJoy~%4=3+TG>(#cXX6ZNUhBdsfQtZ7VJMft7~kuS-_M zab-^+G!KVYAb~ek;BV2i%_WvG-)iy4auL1)0lDi$z@L{XWE5OKQb`3pf@&~jVG*#$ zk5mob5_;BdZ}V|R(B?nr+NMIA|DZ=6v_zY4)wL~p@m4)GC+fHPddvLGV(TsCGs{_T zq0K+H{5Jnyw)txEF0hcmTAu_emJ7C$&}zI-gE!0E<56!#G`A$`Jsr(0i+Zm|^@^Zf z;I%~JG^>?`h>a}B&Pk}19Na$S5Fiq3-#bg%*^yp$Jl~aeZm@HrA1$+d+Ih2~UuXEs zn#!jc4D5}fUT<(*lU=2JvcV=9f_6S1<;yKWJ0}}_k|Am5WFz%l)O$6m-)W?#3$T0| z^lhc2hn)j@nD}4N!`8h+n}xqc#FLK0Eh2c-NtQ1HOcTL`uQmb>ccK9!*PcXxvGQB4 zHBzB>#nYDuPouz8zq0W3c!Q1GQpOp zy(OqKd=dUE-`W*#-FL2S&9SwaHrFt&471W+U^jNn)wX?NHT&bM7)~qbtr6et>*X9S zKW%hPTUf%92uJfJ(e5Q-q|F0dav<-cuE98bi?k0wRTJd6mK?>?W=<03qa=G|+Zh*2 z3NVh0Bt_hN?(t;WW6AQIPrf^6RD^Yp=Q9zica7|i_*`1Dm)EG|>_*nin?oC%_JMq- z84To`P3>wkAl^5dku|m$$k&_Nb!PGPX6hNsAIL8`=8Fz{$x&W(oR=IF;AO`j$kR

        T<4kk95bN9x0&o#6JzHtliz6u=*yc;Hp3KS=Ut0`C|=e$+vKxMiNBm} zrrxn)kJ$Rv(ZpS*)Zfs_-ge=y zcG~^`T<>rsu;ck1_elqf+m8D?@;CqE`}@ho<>DRrb_WE4?D*yN%TP!oz@7i@J470R zY`uzLj{D827PRRd+ow%x%!h5yH`zU+ZXYoDLNhQa++niYO*5{pFh$iaWle}DeYYu% z%6FJ(A!#@=g;GK|mH4+gz%aJLRAmm0J93z3IwtwDPzvNx)*%nParsWAKptOVy( z8Xq(HqkbtKG07&s6owkCWiOOsw;b>tZ<<`@(6l3m$4v0JTMDJvr7oT~`Exs!!bCs& z0YhC@##1JL(iFxO{*;;8W=R8s31ijePEfP>Ca?wV_42;S-`goS(Q7B$>XnZ8sMRKa z!_RHCnVMva+1BD_g6I31{0yZWZ5>Dsax&XVq2dS zy^1`5K_HoLsred?r2waa_c#eWNx^5wc^%GAl;?h$vx0Ns*W(Vs#E1t*;?M2=pDO9` z18ZaDG&)Kd2_+i*%rr?QKQQ_|mD6zrp?G@ATe#9&o=g!|11$PcCQ{Z*UfD|EKqZaU zFmkTb*bP{I(u|pI$4by0{y|I_0|W@V30!}FX$+_oD+{GDK)8^E>Nqe404NJ%05|&^ zF=-6IN>OPH;5!)uRA~(0iT=_UAXkY>V*rOS0D0jYZ>-=j1~eh;QvV{eJSdkm2Jm)c zfEgGAn&AJoUj+sqi~%ue49JrzX$;^n1|Y}47yxI)Fb42${pwQ9NZT_8V}Jl6R7qn1 zZ#M=YUug_z>dAZc>zV2w>!P`Zvg;*J|=`f+k3$F7l?d{1tROj0+G=*@nC_- z%2*j3IpyxO<9FDx+iiXa)CwIIh?GJc^B3Y_ImX`+@Er?8Mq>&E76S`JUWq|(_@nJJ z4SxXUrT=UOdcz+~w$0oV)9^1--)<&;GgF~OqI6f=-gH~YV~bG`;I^-JeBky!O#Yb} ztOfYQWFHH9^pRKGIo(936w z_xxyiPyjFP6D<*qcyyqp;ezEYL=S}vUc+XnX-e!yUtT6TErX@*= ze9uZ#$537^rj*QFWi3N+pSj9XMIK_i?Gy6KO(F!)T*bfrJCT3p_}7}}U>Q~Gb+lnP z}HvB)Mn^|j6OT50LWcJ5Ofn3`gE{-SP{#U;M=_O8drqDRE|;;hN+yz3GlQ_DvZ;)M;9&8* zVCDd&E4E9N;s`>84Z@ZxNyUpJJ-}eECe3dMe{qj1@-PLm5oF=p)X>B@Ja_3<7;-H5 zVfcAZSa6V+gda4B5(qS(#9ohaSHYEHJr&k~!H6TKqVR03&^X7!RQTbCd)5d7UtzDq z?<}4R8w^g`VUm@h7Ptts6D39=$gTx-U=$v}>dBWBo?`m~*zE~8n4B;!C-B2hM^miO zmSlejTfwCeKbZ(2-VnPp+s`&g8{9FML0>&Z4ZR-E!yBfD@MoIE43CCkR)8y3!|ddN z&t@?M&w|JI92~GgZVj8oJZ*bi?b*bdHH|S(^%#^EbO8NRAJ&&)vk=P0#y4h3wQY)6 z0>aKv2?-a9$TIq(SnF~gIs=69=cw{L0{#JUt3s&NPuHjMv(c8{&d7e%sdGvWwrgQKU3 z%7@B>3R$Ei9u&T=y1@eJ$VE*)>!(TWo;cU4EdbB7ntiGtCvwr_BMA`No8petSp36w zKC^wMy6RJ#t+PP@*W21>w$D^o$&gptzic(C-6G1_ETdob7QD_{JByX4S$K_0BGy_` zX`#-qc4DJg&LV~n0&A9G`Y3~IiZpZ*DXb3?K`Ue5!KZCesP!VSwl$%5QR9c+ zNv?;;u#iybr5l$YpK1uBDU#PaM5gEf>r zL+>Y=5D-3hpBr23UihTzJ>td|xO}n8!`47&Q1G#0QSYDdhP}`^JcKE5{O?3KwI>Lx z6yNt64TY`|tF|wMye8()p5mQ+mL@~U_~B$aPvx0V>mhrT6nre4kVIOcj*h{O_MfDY z<7-@C?>bj!LhI4mHX^NnxqU9agB=y9oNFC6#X)=D?C=>*!01nO*aSzgqp!I9g}7ix zr#XD8BRTzPPV39AKsX_Y7Q_ZWH>be#7jnDT;R|-l?ITx3V0Gknhr@68bGySi{zKQ@ z>N<7KEl%efoxn|}^vY6TDMh5o&L9qQeOZAq6^{6!_M*q2j^RBTP!+*qzDfgMCW|Rm zc{ddfq(!wCv2PGafFXYLA(+Ob_YCx-g1%VxslZ_C`<83f0aJ*^;6p_CrSyG>`0!A1 z4&!bd9-rYwgj@Zi$0yu)-iiYTnt=*H zTS<&8V1_#QO1Q*#m2eiindo9&LKBl<(U!!07VRml4bvZW0v7ENhdu1z2)jW+z$~1{13|f8^>BQ@zkq%#Mj}}gm(sg)m!sY4 z1d`cohs_clZ??l{IRT-W?y#Gj=mKcIT>h4zG)*@;{02u#E;l;EpL5+;T<1O~afcIB z=LA7t4gd)jf`|yyR)UVw;@9mcrOlT*TGbjsUOFjt>}|0|B^2t6xl6dg6zP5P;;*C> z=h2`m2qB^$8?L*Esp7AsTtwz}w4dZb9fZRPAMYVd+0qe$SWWqT0x`C44{ChAsPQ{R zjbpr(&qa`A@!3AEL^_?gS~^3x+0hp`sd?hd#0(>R`S^Y(%0aRu!E9AdWnp@5;0_^J zM_Iu(%T@PzDm;4%zZ1STxGSiobcY~TQ+|{{5115`2V)tUy+RL=V|`COV63BG=OnHb zJ-~vPRK1DeV=8uWFqvk_xpb^h7lSO{02m8B#GgJn;_r4-7lUR#xkGs+>S_zz zfK^)RMz$mctF*|~9(0Qrxv6ytpH-UZnG-xV(NiXP&O{Ha(j?Dkl^$`u(6kg5aDS8Z zb%@Wq`Z71rAwK1@ClM7yeahuex`7UHsmqq&l~mo3;NOXtH9q3de8f$Co``Ku z=&Rhsvu+}EBQn;W2^K29DGNPxCj0uN7;)${ zVw`>G87sY@&V^~_v0$t%q;RR+v%sv5!>XN}Zf}I^(qV|o zolQ12ty1O16e>J%zXy)v$0Yk9sSvZ!!9`_{@xK>LV3k;8U97x``R5RXxe!thbW}hL zAjBDb{qBu7Zza9tQvGXGdH9V;S3zHBp|8_IL{ku%C~86=A>7tHTY>X&P=X}QV~Z*t z^jV71gAT-Xgu{l3BZ2nEW~C4*CqdH?-9&iOIH(Y)FjGVX;4mnX0?`f8<{-E^2znEN z{}`CtfrS+!97iZFh;9hQ$C#RgXoOfgR72oYu82F>!Wxf4(38SlMbe+VEO2H~2zWy< zWuUYhgtehR_~AH~^bDsLV5)$Z-+2T9AL%qk_u(xf_6?pz#BKIdSg;)Q1K(dyOnUA4 z&-?pGheR*Z4u3p(e(6-PX8tiFv^LX?mZe!-hl6Dp-SGX0X-^|X8gJZ=@ z4fUd=&Sj$w1a9CAYj&eZn+C(G3Q;MlAuN)vBkt4yR6ByeV8oWfJAE7xUMCX zT(hY`I$=r%orTl99)X6l^kDQPLFqfAgFPx(AS{3^qkj-skslYpw^qcoUm7fc{Fo?< zD7+c+ziC@U@E%%f;OTD44TOHdNDKXlhsGAQkHh6&Fb*H_w0pc@96sVj{+SWu@BvR- z=oLTUr9Mvk<8X4;oRnpgv&y8bGdYWKcs0a9;S+nYhox{`A$<7Y&PvFjKDe_?n%V7u zQ|t)tytYVKN%@xG%Texr|SEUV-}s{RJ-|JkNUU8E;R7 z=Lt_=9<3%;0c&a8j?qVj08PKdmbBJl#UCaZEcFY4}E@%$5-atdY6=5#OvmygS zEsUV*5rluSA_jh@@F5{MTrvG0gQjRG%m_b`(9)coTrzXRE6JQNof|%GPMFLMC+CE# zL+AfWLq`k(;vj<1SjX!n>fU;`%;Q~rO+%Z^Ee^$8gQ`*AEVR}g;+}v-dgqt`RassaMVyW7AlucF0G$keXcS6sBKV#(n zHB}xiovL&Ro!>dD}T7o8T{Im}m*r zx+cl4PSR_V+SN&mifEJu+!K+xhENGb5N?b%Z;JBY63&FAJ25%>%49l{?$lHG!8BPI zkrip=^=OuMUloO$OHgD3UKVoEC_QH-b}CksTUsKFV54dTk$APYqVSD1*KiT-wL1ce z^#DLrM0(v1p7_dXzb6eBpp;b9OtDTHBB4<=9fVveT_1IK&+SpF#`$t1=s(-U%JLZs z#77rgiXWjOE01~nPs7&kVM0@|*@%{w0)d6ME7{eC!5<1MQICVZvKRfcQDU~zgE1xd z3LmMT423=fwv%Z8BD|&%ZuS;K|62$R+pN^mg8&6~K>9~xrqqVRA%k{i*i#lF3ItKl zAqM)d(DL0Bc~EHi4wU;raz9w^$Ex!1nXd&rOaAfqw-ccfJbwXgv(cLB$lJ)N+G!_Y ziz5hiq%AtqIyH6LPqgiTk*)EP#Oc^RG|{sAhTf$j)P241C#SQpqjf=)_o1|0G5=*E zINKJJ{$Q%#nHlsd#2KQ;YKU%iFV&V%svM^H=L>240SYNTveAIQ@-GeRUSRGJt0;>g z_7MPYx*Wrf^&4m}jO8x0Mg*I_S!XxsmA^!ig?`hx$_&CEWxTs-$$Uhx3;tI{euZw7mIB!mc8kdWhnfhp1h$S_bq6 z^J*oEW?~@`xTA!YimNy}UF4k25yF(ge?xgh7oXd7CbMZDOtEugWrWnE25~Jjv$p;?GYtBMbpnA4xoC1Hyb6{ zszc>|gxuc-u4}*0`8V^>V$2~alGatY9tnf|4o0BCDiQOh;rHge}Y? zLLH0_r?V0pF;#qirU#~l9`q8(t(_1A2Xik7ekg<>i1lGpum$HT=8YSb5WSv+ z&d;~ijqKKz3jG6t5*?~OVWh3(W2iHyR4*%0$q|ypkqKF^cgu zbLmWFj_|B>HIaw7+|Py235=e$D&8sA79Y8e#!C}D+boPEHnI|9W&f(fJ4LJdbjnsW zb!rIR#zp)mgvP%(+f zs*F+Rru_JJzSUA1WoEC|NVn6r;wm z@r^9`IpY(RA_l(D~3V8heF64rxYD2{_6UZD8> zY8g@15ZZ=?hjnm>9X?sV0C-lR3}ElUEiCnCbhE`q>X`$M6VjDT%6 zVkBzjBBdm2rHvwjNa^S#e{^KTcW2AwPTKrnWd{Trg zdPmFaITOrx;n&@zAhS!g>=HN`^Uz`ULFnlSrX;L0L4K(3uZRlwjGKstJsQE~46Wd* z$rPNJ>=#rb7Max2heTv`D6HiOJw>U8i1R1tmchZ#6W+G}CMvRwUBTeZ>o+h}zY{3x z6b214Nw60P)GLob2o%<;2tJHvwuWz3;Z0_1c#z!Na-ZA+p9bf{X}o3-v({Lqgsu%& zqh~-UQ^K%MHAfLo%d+Wg4CyDC_5>r3v)ZRvshA}7G=i%|v^YJ-9E=Ej0Sz?}0k+|LTZ0!6|4Y$Q0bimrnPO%`xQy^-d`fHQiOAk9h^KQuAOY%~%e7K1<^vPIo< zR}d%}i|egKTP_iL8|@WVQg9!qnWZqa0u89lB>=}M+IYoN$poeL8l@EG_`Z2TKy7x5AXK2z^q^Hb)5_sa9`~d&K;DTe zO$)6?vskHv7KpRF2Fab)Ik{C~^Apge@>did@#Lf$N2qzvMsWGNsCIAEqwGDa_+2YO z**jL9<{^B0#LQCj3X5NE(JL&VJVn643N=9nVD*bln^f~+=OPS3O*_lE04_glr<3+d zRNEenjC_Ff`?hnEunQvC~&Ls!Di-bp22s*PW(z<6lX z*bYW0LOVzF+ao1+MY3;WX^GH&=*ukqz%I1DO6!Cw*oMaL^ciLAY4mHQ_$$TQ;QC4u zT@5VZzgr+9V*D*61hWJNUnvIP1{EXm9-+bg6Zi!10C|eIX<7P+h)Z7rOAovo#YHTo z&h-8;u4nM?V*=hn1TlD*k^{vWI7y3cNAxK%T;C!HtacsZm&4Dv+Dc~;up^%nWduJ( zyPeQK)64KY+$GU|#a;5F=>bq2R1E5Lvq&{qSxc+C)^?5W?Tt2uT6?GJvZL+p?gkP* zREN`)WcTz4>g}bG<7$f{b4hePu|}2Qo2sG3nTrTlPYJ4!0#(?oC;)bqs&JS)h3Y10 z3C|~32vBULqL(?`riiV)LhPc>XnP}(OLVTI@d*srQwoe}Z$zv=(Q}fnH#+$!aYx5i zvh1OmLAl1FL^_@tglMnXMECd=MC%8BBN{H&EYe7tVfH{YD0RBF9nNOX-=f+_;Z=t@ z)uFXI7+m3y-89-v%j`oBg(S-}4OSPJ>AE2b<}hsC%sd$W=$CLORz<5fhWRFWR<${t z=o*ks8Lu@A5}5#r3}Z{6-a!oCB+6}~UdIxwk2nU~UiRl;It2f9qXrL9Dm{vDxE5HGeVK&j$U)(0&GI ztLk~EBt}E$q}*WeKRjof;r?KZ{?0&mk2raEiC*@Yp1s;=4;c9`T{X3+hHhMHn^p{R zQ=+M-tf;H#c238t4@I_fGFFYtJv_eQd?wk>)1mW6wxvg=2UNj>WpvS9sJ*UJ)^W)S~d80LOCNs3}V3 zFtjm`Gdl{EB8%9V$7?l+3~<)RAzj1?uVP(lINLyxP8g3&S>xVQfiiBP=8(~OHVa{PAwBu`OPf0QB-!q23Z)COfny~qH zIQE%Qvcbrz6`;TBT~HdEYUFO3{suBol*Rrq8hl_4v;~+&^+0xz(UTp-Vk&He8Nh2&*x*hb5#=4)XhH$bL?F-Ny%G?Hi@?Zny?!4y z7*MU8R^~@Ek0ZumKj1Y)E1W9!*G6p}BL*NND4GesvJ|u#=q*lWV1dcO{utl)h!BL#=yd^`E$vb3F zbnlBp$3jPBS*j<&1aa(b(}s>nXotyV(JP2$>)bJ<)+a3Yg=nEq1@1Yj6p(VAPYV=2 z%fMW|L(pNM?14|RwPcR)NjAkl94Y^dWAZRe?gz^Kzo>KUVy>F^d zL*H(pMWPTg^)faVW-|lA9ELu%-e&xB<}M^9i%2$w7|kVc zGbxoyDO%hBegjga0;;7yALa_NQtyQ0(q+5>RwxRsr%ij@E#v^rVZ>Y!%`A_WrQ9{7 z^lg&$w7s=KQA}9OftmtSQ-royLPV^#EDijFT4rg_5srm+1ei4#z;()0h;U&gV!&s( zW+-ps<@_xpkN&Oc(K*ml{N*+Z*TTkRlAc7A$*7vhbEN21XsH;!Nz(^Vs4-rkB`?ve z;XX-Ap2krOJba6x`zjW&N%~Y;ay><5H6Bd$8n9j(bSFJI7(ioUI7tn_evJ3R+N&&4 zkUYI{O5{TpeIg9e>vLAThJl=i=_leZB+vKcUp@g~Ln(O*#R$+OX(~bI>jj8zI7Tj( zT-DH(BAoe2atxQyYZzRD-2xlFhXxU6+vrIP#=sCGyEqUhb7eqS0>2(&A{UAz4-wMUZwdD8nSh zZj<}{`;vR9v? zz5^~*$FNJaF~e|9#*tdkw{avg9z@|p$DoIc(V0C$Is9QULQHQtGBO-W46FTyw%a5sv;!%l?2iF5#6n0FW0+Aup~LO*FC@JjPJD=v)JF2OAM=6;P^TKu}FXc}3fEUc6fKzs3OP}O1xtTIY;*s`I^ z7AA;ofdafYjLtd8okv7)qa3JLOh9AVS7bXSV_978mvDKQ;$Q0{|D3ZODz?ewykzIL z1I9EaA5^?G^wN_@TCmr>&Y|B?bv+(KLpqw4Tnow**b^G>(TlO-TJx;{U7`E!L0f2V zIz(Cl`u_-@yBw9nDdbc5+%1l3?!LIvMFE%L2L-=M_iYPsD*9uKSu8TXzO<2ycAiz#4#&VjQ#=D6*V)&5U;K-ugPAjkFhU3V$2z# zd)2)#MEW6i29|fwu86&!22b4u3UC{v!chm(ZdwL0&m)?7zr*fx=>3j%AIOHPmm;`1 zuNbdp)u;{^Sl}*U8jsjFs3p_YtYJ@5%db(h*E{+>jy>Nw;%*0uric^v>HseiyxVdL ziRmf@Rkx0!PQgYGRj``zuRrm@C8^mr{%y zZVoq5!19zXFyA$b6_q;b7qKZ(&oO`sa0Ji-wXS-&V)u&$3PT&#%5e#B}Oz)`*TLf+LCJt_0gVMVKH=t~V zV%}2;s|b^pxL-Mx-<(gj68NmKNqGJp&TWc-5QR|KV=1F zFx0~faRY~ow}50#CL77V%|qT-z^^rqEzONq$DOJ5XaV?jl{`mwA*b3oz%VCTs2_ zO__|QMRrQ<<&gugh-4M`FoRTf8%>G+Cpe_DriB^m%{-gCU5PO~55#gB4x zrhxPcg3=1z*O};pRZuk*fwp`Y#zcJ&BL@SoAnW~Sg2{CiQTx-g=}DM|N3a1{(h`p$ zN>2@5d0w=ugQnn9iPk^)EV0xiGOmW){*hQ)a0`q^Lof*w^oc1%jgYSFeMK|F%V2L1 z)vVM+T}z3c;2dcGOssTtIzg2o+9oT8s0iZieM;{LucPEsYRi2Ox$iFb$#t@aex!wF z>M$Uw^$R+%6P4arGc=zmHxo9AK-8}^&lG)F@X8NhrutFE z-1q-c_TF)Fm1Y0`xy$L(XLic&%xteob~n9eH@zoILQO&vLWj_cA_$>(53I=RSA2%IErAj~UOzj^G8k zJrFyBC%x@~+!17>KMlL)rm@}UpyUw|r7W>^c2Q+d5{DubG8 zl4JC&?j&dlKgf6F+OyC>lz6FPF_Z3bRxrp$h9HyG6D2GU1bZ4Hj-ANZ`cd>1tV%yu z#Y^0pRq0Ky&9K_VU#0KpV;mbz9-zMbFs8CF0Q|NM$h3W_O3>$EH2!H2JPqcJoNi98 zA)n39uUDd@C>AUU1^HLO$aFjd{T~FgC+phBLHg@jJ}l%PrMyW^pZFr>fB^5SGNfptYb!!P?_b_2TZc5*XRoL=dMO5cq?q>`#2LC1{A|^P_n(n%^Wo zv*XlgeRecIF`9oUqs7K(o{i?M(R^_<4?pqqe1b33$NfuGeWiMG!zr1Qk3Hp-lT*?1 z4Z(&!1cEzd?~1-38qr|7by2KWhG(n%1?ZSw2X;m;_Pap+Hjuvyyx&sO9dD{WmmE{_ z#DodQ!2a#Uz7?pu0{N}LyNd&4EccDTc2nOBGIs{Yem!8+j~g3$Ubcj(XM)skg3Qao zvH#C(Z*t`ULC&rlFAuf-jca*vr-&%uxnu4A?eHr&L1sfD* zrmU)(SWQH#AYuOxm=F8I_y- zUzPofc!G>HNCf#yan80p3Z%(?5E?K>O~-cAat?B2fNY+Zb7gD1G`D3&#V=I@6os&} zwP6c6nergZk$U)`uW56;+tJ7t)J5$8XVtUDQw}6CL^}Ed#>$%%l6MhoiZn-=eL2i!R&EP zF^nFCXntrkzeju`7FZ*nDC+`L9F1ioVVK}_AP6azMO{oI4^V{z5eNAbWLrduD2Y6s zj}1~|K&Qg_wIa{cmo(9*OrTn{Gl))Ou-IQnSr)(uFzmtmkAed1VFgxXhGoTJa zuWQimMqEmu+H`y)q)l;c`khpa-TZ-ZLO^Y}hkRoprr$O3=Ofds2U& zBJ}?voBjvPgfV#I=X_0d$dg}JQ{^7$T1yaLa#&>?rDLT_GWO+}YQ8FMKyp08Z@ z^RJi?y+*ehuM#JAk7~4W74&*#87GyI_DI!7hy^qzt&o5foL<@XQ@!|c-KcZPX2R_Y zZ)2?rug)~2c)Z3u$in;$x_XUnEW|`GH7@+p;#wu$W+dPPsG8k$CGZ}OqT49RKYG;I zpGh&#RMrcW-cKHavNBfwMX1N5>n2vlJDI*MQ=7r_+y--sJ(H~qDUw8-3-{vLx>Cps zJ+Y@aUO(fg4VLvg!ML>tipVPD6HThIF0aX57+f#>cO>ufBO{H}K2K(G`V0}vhO4Ny zd>%%{L3~%!2F6<>)A?d6t!GGm;(OKK=<16w(1GBdqbHcfbmXg*boB44N4=dU|H;gq z>Hurqmqgd>&Qw>PpvXe!NLOF9Om$@dxlQOC>`HVNyE-~MyGor)nF?JCJA1kcou_s6 zbsk{NI|vn1;U^TED%Zhhl{{CcF46fYdb02j)sjqkMaSEs`y#S5z|5(QaB{@2)#^Gu z;R=npFzI>4OLXFFT|7s3T%kLk5v8AsrH_l!4@F^0)#;r{=Z!CEHkfOIL8cH-PQb$X z`heQ-b~tkXIiA>HKEoN(l(ef)ho9a#K>k=T%Ep1PmqHHi*HiRqBs27$(3V98D>DS8 zbe;k!s1eu9)3xA_&hxdpK*zPiOI)Dq5$YI|wrMY`-dDjnJxG=w$TPM;2xCah2nJWVF3D;|lrQ?zQWmEAhYkmUXotqPm5F zknNrHSHt3ZhNE$ml7adjgs{AObfb;CUSKk{niuHi1t!CTP?35)PrspiBTs)I0=%&< zo@K(85a8GAK_k$uXZ;`=B~ldN?gV^9FT+Kz1Nfw^z9C)Un=P>4bE;;RAR zcPlm;w#=W>oe@~KUG5a(UD3Q#EVb56SUqv~;_6`cy9JN3)Vht+^qjnGo?l!L%x%J* zFk80H;-MBVtzGz83CMs81F4#X^Jc7!p{>%6Nl&eJGyI%~8HLb<+y>%qV+L5tJs(0r zcu*{~)?Fd3?;|J{$!o2^FPpbKkd~KW3Pgl&o{s=@pgm$)V;Bzs3z;_cO?f?#>U9?= z>j7~%%8vpJm}4rqzPG^Opp7hkudH3*Lf~EC;0u&SDP&*2ZjtvJad`N<0BMKE4~??c z4V)tqXN&Y_=b#ME6l17!!=RShB$g#b2+`vr@tO!Sm;s zHH)?K9>Fn=&;Azr;EQ$i@wez*AOBG9@@3oF)Pjp>(Cb1Yvh|=72r+-6Y+f){b}yW; zq(#GRgM=5X4n;V}4-c)~>t-zuF!wqMt8G$YT0NO?n-oY8_O~z=JjgKcoInrW8~tD{ zQs}W}932_RaLdisc?|J$MA}@+L{gbgpERmv3%TozPWdYR=PSlD;lCmd;Ed}~R_LNV zF;#ZyDLiGU1K$tk8VHlk=woWpow7bm8R*e&vf{GcJjsvDmxoqe3^p@mm~uq2ZxP=U z)(&7u2|(w8tm+m&o5*GBR{cu_56Iii)a$X=%lrgspY^?Y8hqEDMhl{{Rwo1I;lci%x%dlq*xy^|6bnp*y@ zeAC$}#k+FzPWdIly*}}*zee|(SijdSc_bN(3u7}Aif)V70!vRCofx|i!)+QRGA_#m zrlt|!2^+Rs-`l50ng_mV51bK)(x2)!Ej@I*@ONVzzEzf2tz9n^){ z|8~!^&Q?6;-aO{ThIeQOe%S3o?!cY7U375r!*b7K<%YeUh5kUUjuFI=$-9J55DRm+ zSW4cjW=0h%y`B5aI{KwJitXAyD7I_uNjmn1_S(m6WqjF$;}|PN!SLpkOfR?^(|ZnB zx9d7n^;B$P&x<(67tt+$%xgSMX;K)qsfE{XN%BlGu}wTDx5Cu0MO>k*mobT^2;hlR zWNjD-5-6_+p=$+Bwp0(ryU|z?vV35!IgNYB)kd}}V*e%%5dCEmddnUwQ(W&3VSP+b z7L%=*@+-0{4m8SCMXC=Ynq^HzJDMS5D#>Z@ikHMrF^;pYlh&1LkYF%^@(T9Y+9~@W z{hk1vjTO|t?X!nVwEDdxO@3@NUlh$ZM)TY!qQV{iDy?rToN%7T znJZ-*R8)+PvfEjVP(D$1WOJ%gyX|d8DP)v^FT}Dg7J6@xAWfph>@Mn;c->%dAr_%6 zq6tG#oAp{H|>GYJQAU=RFMe%QyneNBa`4_F8EkrZPAQ87+UssD+x{PIE+g= z?b8c2&X&i7VanmdE~bUn0-Be5c{GrTi9XT%TiFOZmh2h7u+{+H^TizV-p@)sMQ%cx zokqzY!x4kwdJsO%@-R87z_I-(q-QDlv4gqH;4A)AYppwLt#z77hJNCnv7y$sHshmf zM20iV8BEQgj?Jq7Z)|P(*Y;{SE|w3QV|#`9*fbmri~41!RO?BJ6C*$emcO>=Rr+l0 zU7#By(KQV+ejQQ0(=OHCWxDxNt=DmE0)$+Rl{0;&_RcfMw!Ea$=WB0`Id-e|w(06t zVqkz+<$o@kUldWC@;DMvL~+U8XYUg7`VjNqacc4$?&cK?S(gj7STAAaA}QBNn{jru z!2|3`>lwfpZQPZOjFl|mpPI(MW~GT6>qmBrN`W*6EEzSYQ4YLsCZBH3<>l;#d>&TD zNT56MSd^?Zx>ujIcSO4QoXGxCq@Ne|FF~9d(!~?oDW+sB*4o}?7`#VQl#d$*?;Iq_ z>tJy?u_pHK#NZtKRU!Dpwc7T+QXddyLw^Eq5vj~4D)^Ji{aF>P6FchHZTr91 zT}9aPr}_jJ{@7fY4^q=8{?mnbX%r@eY6nq{+ojkc)6sm3j26XcKCoR*uugnPWcE+X z%yH>y6~?1P=RAwMO!P-1Yj-pW#B0=*?G0dbU2T>$*=(N~M%BfBD zxaLm&VJIZF7W6PZ5z);VkdU0G`DikM3AuDV|4COtIBG_LCTO}sIL>mkkqsb1oJWLu zSfrW<{0X&2F-jaKuP`2hafqaA=mlx#cPXUzMjFX_TtZ;|InOxJh|8tNvS*C_w_3ButKW1wU;eI<_@xSLWCz;{I#Lj=4#x zbpGG2dxi3@*>&A(74{XbdxP?BRAX*X8QHV0yvHdM8=UFm@?)dcH~nf7 z1EVf6;*s|iqAJU}Md&?geOTKT0f}<;y#hVjZ23^iqoejXY*M=#pWDm$+}1?a9HVWM zK#O+Cl6JX(fBn!@;I0R-6BQ%vk|phOL9HM&dG>K$*2_ibWj%!11^gS6okkvzQ_3Sv z`Lbb9&CzD_d~2FVrq=8(G|g_?uGVq6QeXOy&F)$iT%d9n)9e_!#5uMhcbRb-4dF(S zIXoR^)~3suW75;3#xO_=$Yo~G0-j`mFp2Iv>6PFl%o0@~$t(I9&hSHEGQ2_5NM9TW z(w8mxM}bV-B5I8zbSkzwGGtR;yEG2}1c=Hrtp*aJkq!ugK2ja!C1d+FlAooxHZ=PS6OlKdSX~4&SSF4lkpE(MOb{`K(=?!#L~2ABuxxhx8npKkPNpFqHp_Y^dgO zPP_}yDj`}(!IVc>ZA7Q=|7q;i|A-}gPiG!c`TLN#PR6cRGM47c#n6`kZLC4>>6B&N z(NsBCR8MTp2R;mxA~cj2Mm~MesIDg>S6^uSMAW&XV8)QBY>fy>>oMS0Xgy^)H*5Sx zw%2F43i_!}@7j7u?FYr90Po&I5xpjyA^R&5Z&&0+O}f! zXTdATR44vQtn-TYaU0fE*0vvSAGci`pFi$Jd3?`tBi3z{xdV(fNYc9z*cim^d?8(e z0M#paRr~9FRr?NU7uH-ZD_2SgC__s@zwmOIL zE_XV!+Gl3RRQrD`n7t+{Nsi zQ=hJpto+8DvTRB)`6TOYHFj2UW}h>tacmczf>+D{zwxOa)8rw3E`nzD#yhUBR@Lj&QW*HISJf-kvO&KT zZ$uQ}@{PIa&&l>TWEu1$A(GBW$!@H$x4onqLnb@uefE7W`RN z-&S+nScYvCutMeGPgL~`z2J0R{im8!h_w+&b18nzDVJ#bVl6Mx@r$*6iT1Z@d$G5o zN?o-uosb$|& z!HX)n-(j`-vWWVgMq_)_0NHOBqEr4*(7&8%%vb|#y39b@FEnnc#T@lxQD6DCiQ=2f z7PHk%{Y>3VAc)JKo;_Y1XlfmCL?j}4Tj0TR$M6l@*yn-TEehQjh|>L&)yx-(gr_-t zP8LdTY+ts2RixTPw*Kcsky);G=g&UuG1Fa=+41#DoD%XXhMVHnGC&rG=4F^xe`_$7 zuL-Z+eMA9YSb#wLfbkbBz#Raoz(V+dWjapV_aQy=L`xbrqwHc($8(C+!korx=^9zC zHvL8rowqC#q)(#7kK8QKBPTNL##D%=UTX8*rur496{gxOkG5{JyJZ5rai0F)i>9

        {{V`!n1 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

        S4BKv+p`(_tagl@*a*+ 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

        9yu>C6&8TUc&@Mrdhzm-bPE3#{ zk+`Zv1JXo3MMZLF)}mRRwHT0CIMGj?yV%MRF(mPeDxz@44neP?gkY~mub~LWH=;MG zb};_+QWS6MOQVNS3S+NDucwIZcc4Wqr?8KqgYm;R#?FQgp@{mN=v=BTVmz-?VyVA@ zzNywLT=`tNrHf*RQN(+Tq5re|&>}Z1-SNu0n_>Q|vxQ^Y$q z6i1(+OvFBkK1C7V`7-*NYTrf|fJ?EOULAB@irD5?basfG!IPrsXo}-lq1REw{>L!N zz}<;s`(MygReL)6by{Kxc<&o@wa&z=Rh6Xb=#dn$|D?TAu`jKyHp_HDMHkMdZXIm>`99{FB>#J?;7~0o3T3qf& z{tYc|LHCTTgjIyLcDQ@Idj;vlU$(wd%1)^}DYH}0;aqw2r&-mmHu#^kz8(QZG_Lh; zL|a=*ZEG82C!Gmqbj+>F!fIW#My%HLpUsB)UJLDPcg5W8q^+!x6}|9#Io9$D4K0GF z#~E{(bY}N|U%OlMbB*stUW!(>MMB#Ioz%_|e<`c2tch0ElIV`~N%Tefs}Y$+u)`7? z(AG9$)f(=*oo(%(&R$9SasNv6tnxd0R^|S(XEk1)LJw*h-XN_si(CWW_OD{tPb|GG z<*Q!S7I`~;tvLExj8xLU(tOpwdQSg}Ie=>aO7yI9D+TBUeXoD@3-!~;EkI1tpZZ0U zG|M!8((=F2FZ!ej)#jFR{AKT`scsZ>{-}2(r3s>)api=cCE6ZGA8C5pxwJX+|3)9l zncqHXA1T6rq(38E{=Xs@_(vjFsTuD#V#oRKroZ&Nn*Dx1HSuZ={BzjX{qG@NIq=_N zo9s5bR&r-vq*lsqFJRX(=dp+#@4sWtoGrrhE+V-^ z#Q8G(?~Ir-^PFpmV+|~4-1*;I3G0oftK{^? zY}M@}@`b63d64wVvF7_AOBHLp)Ylqj+xOq%*T3Z1Ne=hE>OGI^>$l$hzcU8^=bUe@ zcz2oe=6jI=Ueu@kPGmqhXPYxqT=}o!113>F+3xi8JAM3r_UJo3_erzB{W<^Jf2aT6 z8C(C)z4+3f);@Fj^+n8mZ-+sarYn*Zq{BO`QEz z7CWaG!kNqNdXhN%Pk)LANE%-sPFwr0#Mc*N)Tlf~gl;*iznak*mut8y*+UOuj*a{{FF^Z_X1p7%$2y8hL9 z14+kh!fy~CM{(S1-~5lfUPSK)|6*QPi=>pbIY7o2v!i_ATwi29D`9;)37Jyf-aqerNAl^a|`ALD1Ivm5e+ zcRd&DN3wr(5Jl`K6#a{8FF>zQ?bYZVs=W(+T(wW2U#qtDg)A+ni2d9}D=(e42fC1I zhoj4?c2#sW)ozMzrP|UfuDKMkADo=hxi?PxI{L9{KSzI3ZCs#IcZ%3P0)1Y!ucIHS zw)BoZK1FQffi9!kRnhfSyD564YEMEhSM62k)v7JM=lr3F{q#d0R_&wc8XuhXP0<}y zy9>I9YWG3+Q|$=!2-Tj1j#BMa=nbm96TMrt19!Wa_KU);-*4Tm$)u>wVWk`*YPvH}Hv5i3ye zx8P64L#z6e$6-%UJ;_dAhwyS-boe(Ud>X7ZrQL(vuRVY~tUZE^Cw7Z53hjHO(}!G7 zSC9L&X1bB$ZeI5g`CRuBY1bEI{4(6JCVE%>DeN=)Ge~E|#|NUX@NXDAxPMD-2u4O2 zenaZq3UC)!#H|Rjs#{fLUAJb);cnxQ6Wt~ue{qXK#<;CQu5nv~+~BqudD-m>@|xQX z)~$lK&CKdMrJjIB6FH@A@i8>BJ-OHAnTbLA{(0;BfFV;AcvdABFCG? zBPW_BBY!bPA!AIdkZVk9k?T#Hk=sq%k@2Q@NLwT_#ukfQ zZd-+1V_S>dZrhIBY1@O`XWNIoY`cOay*eW;;qGOS<=opLN4bwhCVl)*T%Z0=y(aBC z%iJo8m>TgBo$8#^&V#O^+MUs(RXZB}yJ}14|Jn5{@h0sPKZUrit)hr&&f?l8azO5; z{smfG=fuzTf8urSf3I!aO8t#%TL3xF7vf9rN7TqLO>M3WV|3$*-4)k`XL!5xWS~r| zx6RHW1;+ixQ^s*_qMiSRmR+>#+uZiJi8&vK-Hy4P zM1nVJ(I#!2D>o(D+wv34=@U(EY&n!bBbub@}K?}J6OLbhz7 z+1h05oUKc?L98pcAY1j22xb_F`2~*o|Dn@EXND$*>X^^}JjbW`(t>eI#N2@RB|%HW z@$gBEi;2}EiSvpQbNIvY_eDhQjXK8KU)Q5*;N|-{I)b&ou14pL36H51Bi8YAJ0keJAUZ$;lc+oswT$N(l9o0 z>SNgFs-Gu*p7MGB=jV)4NMr{HU_81@!Y6!xaf!PV_a`1oJf3(m@m%7?#LHv>5OWkh z|7C9UQkqq|_R8u%#og|OK}GV=`*6=yL0<=1Pu~RDMSoV`S~^EmJacyRw~_bs_mNNZ z$qea<#|`6-%o&fH+UQAt%-0x*%s@;#bBm0@$kWDa$Xmt-$md24_gn>;!$qW2lG$6e z-0D!%+^q$2usV}#5BAqHxo+agz6I53CB>xS9;zrz(*uBNzO$(!vYM%j$zSSf>S@wS zgH1!Ji8Jj*?l&Do9yT38-h^`cC8keE*{tEts3?rHA1G%(=8DMLkk0pkbv&LhU0B-j zompU#C5t3GW`PxT%mOQIDa)Nvc}qoPElX`=b7$-fG*1JZkIezC`NgK9~#Wc=unCGu^i#gFNzjaEGhTDJzOy+oK+`u}4#6^CUCN zx_b1WX2@63%yX$p?wP`qyE)HX$m+Bl+#S<)h#6;Mmf3Kx5nl9?y#l;@OLldxnV4lJ z7RC^>%o-z``Sd{Upk?4V_-cK*C-p6XjPM)8^s(LY<-e<^ptOXnk%D07sX6d08$iv2_lMy_+rDcc*B7*$Zp7@akmUp%@x zG9r2?a$WQeThRlvxl)Ff;sI+{+91NdeMIp{VegS%o!-oV`1yiBr0&&7PPx+r{}kJx=pbwD9i>Tln{dUtie5r+-|v zg>OGMMbzg*7o~_CH`mbj)p{ufe-}k;BmDS3^4(WdxA`mIy~|%;0{^@4*^7M&zrFCs z3tRZ)*Q@?_;fohOcu{{DeMPl}PhR-lMSVCrmLh!F!VkY*txvkIQylw53tzj484&*Vb85ZFl$g}dE^~gTVH*W)qKNnAK@0!8unVD!s&+MW z1Jxdb{#CVwPhOn;V*C7P;hPus6m+C&3t#;P)y@GUd4+F`Z3?0bQ^fZyf(}#daC9+> z*ro)!3`N|3C-v`7qHeOfjqvpgAHUfC6}~p%;}>?7&Q4#y*nd)AzsPqrg(9{|>i3_w zjhgGUGJ&vw)>FhbMzoh|`=aft9f(e^+8NPVRlCds#s^=JyNweu2f7?Z?58UFC)MtP z9uUAk#BDjoFc`K1#pYD0~l1xd-R2z&H{)+BgBZz<3a;{lTbASGNc^ zt^$8!Y-YQg$PaXkd-(5-(|mIKMEyS-t@&5SX>QO4zo$3wpN-b!`N3#SS94eHABLKT zBLDS~8!=`hdJ*3rxe;SFMd(#9`bDpTv0zIhq;nJ}!V-b~*JC-`E!)}VN|F(s7xX~* z9lsjaDah5Qh_wi^vb8d@rnNS*iDQhXpLG!SKN;y6;TYo?_tl8bUytHkUJGGeN_>A};`wLt# zOu}E#k0Q4JJN|;Cd7y-^z~v)oitWk?_5VuT^Y`M9g>NcpuB$Kkt)Bn)_&Y?Ntfc;q zMD;qs`}p56p}#jKl+KPjns|34|7y#JpRFW&#}EFup2-&w@i{J*pK^7;R+;#xCZvleW$OFWO13MgK3_ zRU`kXR-;w1fxj>D^qJl`Q^CXSV+*|~HP=73?uTW+Xl_-g^&vFiO~+o#C-*usDnmu( z^`~=ps+>EVb#Fw;JQ*i0Zoa-;{nc07_-@HC!}hS$jhzXNl%CmtPyW2(;Kjd|9>4GX zsrL7pOw>%9GbPodejRsQtXF+nwxMySPuY9a&GOUrawQKOoX~Fc?w)=6PWYpJ(YiCQ zblse3LzNqGp36r)Z@nzw;JSjx26&af)?!EwpF2%+Rr|Hnpc>7u_inj**oyXB{T2*P zm>Oh!U$<@9F5aI@O&reP+z`d1G;)jjs6QlVR&iT<~;#@1?W$oy!HX7~E+v-zt`CS`V^XRnw{TO@EBKj-SSLljf zDZTw}rS;=$PS!Qr)3x(yy*4pb)u!n`&hY;A!S=I9N`#N@J?}!B?Zxk}8Z~ybA%6q! zdzYRb=v&70^TG%2#eY7Sc9@ukA`Kl8;a2uZP|jstlBKQOt$v4(iMG$R^AC4VduBzE zOa-##ZF#}nWMA5_?TMNVW)}>}n|^g0lg0gBonKB)f4XkoW6mYrOPZfIC zPwkW3&$Q*2n|HD<*jeIwy25EZeUqE5Znow7$G+SgwISPq=(H(^d%vht(a>|{)+;lg zer`Hw@%)VP+ikDAHQZaMb;;ZVKQ`!mmmJF$kvm|a=u^DabcGI6|&Du^D1=B<;T@WSmST)>fIsr+Mt=6yF`B| zJ2hFlmJiD88TTp5C+zux^T7jZKbw>*-TunuM(#S1|3bo|L*w$APtQ0$`1R7vSNr{z zal*!nOLi;|yFIsHuysnGsLjDK@~)A>n_-xdgYz4G@VaS@H?|NKk* zPtn=VbY7c0!|_5hmmP>4;N{V&#hm;7w-&nO)+gi9KfLO7k~hwJ95t)T&{mzM-5q#0 zF~)d&oBi(nRL?HVzPIIA-p=JuyUl-i_UBbuR<2o+BS&CZ*3hZH?c3RUQJ#F;D)(4= zXvn8k@sqBnIv<&<{0!}jw-+B5vsFDhDEphqp5xC}>Q!mgvl2Bc#T>b&oqqe)`V;ef zN42ZC$v=44plYp3YaceA+bGXCxqFY1A3}SPX_-C;QtBy&w+mg_)i4?a^T+v{AYmw4e(dMKRNg>2LFBFe-Hepf&U}$ zzX<->!2cBZX953`;NK4X`+$FY@V^578^GTa{9A+nI`H=b{~_St6#Pqp|8?*m2L68F zKNbAzg1e+~F=0sn^J9|ZnW!2db; zF9iRi;C}}E{lR|>_|FCZ1>m0({Ck3b0q~Cje?9nD1ONBnUj+PDfPZQ5Ul0B|@b3)% ziQu0e{C@@iBjDc~{I`SuDDck@{+GbN4ER3)|AT^m@E;2PWx;M2Kga1kJp9lU`z<&|={{;T2!QTY_cfh{{_@@DXGx#qD|IOfk z0Q`r8e?{=$3jUwLe?Itc1OL6?pBwypf&XRjZwvk{!2b~Vdw_p9_y>Uh0PueY{>i|< zBluSU|5xDu82sbGzXSNs1pg1eEw2mi+4{~G+`!2f6Pj|Ts>;9m&*Bf-BD`1c2YH}L-h{AKWu z0{>RvKM?$l;C~nVFM$6s@IMXyXTg6Z_~!usQ1IUg{`tUvDfq7f|5V^#9{k^ezYYAe zga3H&uLS-z!T%cg-vWPM@ZSXfgTP-4{*A!DJNSoye|_+;4*t2oKLz-Y1OI;DKLPwl zga1?T&jbEXz`ro~*8~4B@b3%$JHY=T_%{Iml;A%C{0D=7QSc82|0dwy4g4+OKNkFp zfqz%Hv|7J;NJuMi-Uh8__qT8CE(u}{M&;6EPx8-f36@J|K)AHn|t_?H0x zdEj3h{KtZS1Mq(e{wDBu2miE!fAAjx{!hTa3;1^f|3vW55B_JszX14O0RN@nUlaU8 zz`qUn-vj^Y;6EAs_kw=__*VdbAMoD-{#n8QI{15nzZLxVgMSqGM}xmN_#43g3ivk# z|BT@O8vF}^|3L810{;8J{}cGX0RPM2KOFqifqydaPY?b@z&|JWF9iSW;2#S9)xrN3 z_@@T{&EQ`a{9A(mIPebx|6uT+1pbx5{{;9i0)I334+j6M;6DNUcYyy~@Sg(yN5H={ z_@@B>P2m3){8xg11o-~~{@K7kIrz^6{{i6N0{pjve;@Go0{@NRKMVXjf&X3bKMwx) z!GAXR=LLT^@c$Y7*MNT@_)i7@*5JPl{11VDJoujn{~6$a5&Wxy{~Pc>3;wIXzY_Rs z!GAsYj{<*x@UI5`55YeV`1b(+V&I{MO0{$t%zcBb`0{?^He+T?m zga0+~?+*UQz&{`O9|ivy@b3)%m%#rO`0oM#+~6M${=b8N2JkNj{?ou;2LH9-e;fRF zf&Vb@-vIs%!M_gp{{jBRz~2-6Gl73B_|FCZ58!_b{6oRN7x*6me+B&SfPYr-&jbF= z!GAUQZvp>@;GY2g*}=ae_?HI%Q{X=l{HK6_NARx>{&C>n1N^Up|3UEI4gM3rzb^Q1 z2LBu2KMMQqUjYC6;6EDty}|zg z`2P(4#le4=;2-=Wz&{B5lYxJI@V9~gaPVIN{@K9a9sC=De*^H(3;rhXuLJ&1!GAXR z?*#wL;NKhklY{>+;J*O;(}BM)_`8AsSn%Hf{%OJg1^D*_|C!)F2>fO6?*{&@!T%%p zmjM4j@P7jSx4}OL__qN6U%`JL_?HL&t>FJ2{Ih`nJn&xw{v*JD7x=FQ|1RJ^75pE7 z|0nQ&4*mncKNt9y1ONQse+c|fga2#r?+5-H!GAgU7X<%4;NJxN2ZH~2@IMd!1;GDz z@NWeE@!)?3{4;?6GVu2T|2g1a2>dgGe?9P@1^!jQe;W8Fg8w$~PX+$>z`ry2&jJUi*2`q9zYlt}L}<&YZxvOP17_-mTm120M4o-o0^SPruKfZ>;#`mm=*l zW~^90Z{7~Y!omhBZ{NPIa^%R+hPiXM{o}Xas^z|O=Y;Xai}$~D?RvBO`SYzH9LEDwM7Yw7dP4&9v(4f;zZr@DO19>&7Es6n?HXS z?d#Vsu5H`aV%LTZy?b7~xUz-aUOd#pBfuvy@s91)tIr)zp4?IK=+VI`Ef%jlDN?%ne{ojSGs*|KFNmNsv`Cu;KK0!yY%%aQN)?Nej>_I;W2-n}y=4jdR; zFJHb+8#{KqIBxuSx#gKNt4~(0Jm-3Jbh&jMI-LJdyY@1}AAh{c@bKaBm91JGn$WM` z9}iZnDC1=`dYsv^rSqsheV%vDkfD6HkdTJy{rvL3Sh}>%{&nlRSKGJm*TDPt5C44S z%ECE4dfd1B`xm`Zp~Cdb+qX9xF?OtV_?R*7le%=dUc6}0pZBa^-!-On>m%pOmYt*{ z^|Sou&D-QQo8RJQ&2~4*lc(MLI(1gWZ{GaV+ae$GgF#01vk%|mnr{^8y8Z% zd-rJVj2S_>k|j&G^{1ascDZmNdh~<|hRCT?b8VPCJ6pQ6X$wyoIWkqig9iu89XmEM zu~w~^KAAID?RV|kZxhFj)4W@_uwKOI(QckrtIx$9J6h$qd-vSF;>Cw;YTGvc_hQ9{ zteQD9OYdyi>L+t|PkVUPs{Ws9){Hv4b!*3hsZ$4o|8L+w4E$$;|9J4Xg8z2#Uk&~> z!M`f_YrsDm{0D%)H~2RP|GVHn3;aug|6K472mg`ap9=gRf&W49H-rCU@NWbDpTYkj z`0oJ!x8Oe={2PG(Zt(X5{}tfh4*ctbe=+b^z`qLkHw6Dbz&|(m8^Qk<@b3=(HNZa% z{4L;L9sFB?e`D~^4E_tj-yQtdgTEX2=LP@S;9ms%GlKt5;C~eS=Yzj5_|F6X9^fAW z{@K8P4fsC=|BvAR2K+05e>3nu2LAoQzbN>31^-{c|26ox75syLF!(nGe}C{l0RB(F zKMwp$gZ~BauK@m6!T&V)-v|Hl;NKqnvx5H}@J|i?d%^!4_}2peso;Mc{5`;55B`I} z|2g=V1ph7Ie+&Fyfqw${?*#ub;J+OFw}F3I@YjO>HSpgB{yo9J1^9=8zYqA^z`rB- zR|Nl*;GYNlvxEN)@LvS}N5H=T_}2mdm*77H{L6sV7fq#1Ne*ymc!M_^#2ZI04;6Dfa?cjd}{4az52=E^c z{*%DJIQZ`Y{}}K;5B@svm%%?d_%8Y_{-qm2Kbnw@K|19t~fPZrEj{yIh;Qt8xGlBma@b3x!Zs0!@{DZ;Y2mF1(zZ3Y^2mb}& zUmg4lf&W?XUkm22LEvIp9ua_z<)0I=Li4S;J*$0H-P^|@VA4%2lyv~|10o63I0dH-va(A!2dD$ zHv#`&!M`NR{9A&5Bk=bI|L)-56#NH+e--e*4F2iBKP&i80{>Cq zUmETwwGvHqt{G-9Y1Nhel|3AS0A^5if|9;@V0{o5O zzXkmNKlZ)?uBxSbdp0d7f3|6Eee8STmuWcyRln2AR!@$fhfoUr6rU`KrC!U zu@eKkTT%I*wa=U@*1g{Q-uuS)znkAP&pN~GID79kXJ*#SS_`25b)f#{P=7YoYqcZd4#hWb~B`frB%Ux)g?h5B!R`fEe|Cqex$K>b%i{ntYMH$nYt zK>aVFRE9|!fH2lYP;^>=~#AAfZwDZw>W-1NA=&^=}6CkAV6YL;asY{bxe`&qMv2K>e#i z{gt5p2cZ77p#FQI{(4aV^-zChsQ*T&zbe$f64c)r>VE_3{{ZS=59+@I>OU9iUk>W; z3iWRU^{)o?H-P$2hx!kO`b(kyeW3nrq5fx~{>f1P`cVIyQ2)kI{}oXGzEFQr|Dpbm zp#H{C{|`|A?NI+AQ2)tL|07WUT&RC*sDC%8e|M<=K&bx-sDA;}{|VGT7V2LD^|yoi z_kj9aLjB#K{+*!y@1Xt)Q2*sne+Q_)71Tcz>K_gD?+x|e0`<3n`ujos1EBsPQ2$m? z|5s4|Y^Z-4)c+#X-vsKf1@$k5`oDnspMv@ygZh_;`d5bfKZN>^fcghQ{X0Vab)o+I zp#D)%|7B4Bc2NJZQ2$|2e|@O`Y^eW8sJ{g2-wW!08R}mX>fZqB?+^9&g!qiJ)W0j#Uj^!48|pt4>c0o-UkLTz2K65e z^Yobr9}o5K0`*sf`oD(yYeM};LH(OU{Rcq(Gok+OQ2*Uf|LRcx%~1dA zQ2)13{|!)oZK(ewsQ(41|0<~eTB!dfsDBNpzX#O+9@PIh)W1K}-xTV94eIX$^$&yk zuY~$nfco!(`rn57+d};(Lj5~H{ez(XW>Ei%Q2!*Te?O@IPN=`mTTBc*kI>CGN=qx= z1a1Mvz-{0Ta2L2=TFO3@mRjGF$rV3BegOF)@CbMeJOQ2p&w%H^CzN>sehIt+UITA{ zx4=8#Jx~JB+`G4!c=!%@j|mv>a6L4ij*Q{&G12Hf@=NId_*_Dt!8Biv=Dg9oHQMC! zmuMat&E=x`R5Z7V)`rlaI?a6?3X}jJmNRBdGS2mZ&WV4T;4{UTBp;h2fRVr`U^FlW z7z>O8#sd=oYV1z}CIhtYWhyWYm=4SUoPe1C`K|l_%mzLJB{ zHt(_)WSVzX8=!etb%44+J%Hw3QB3u@fGJQPXaL}Lz&jXY^MFPG&B3C1R%QUjV_yI) z1Qr2{floNs2ki6_=l*B}8TbEoX+?Ib)SBG^-vtUGp9anV7w}%31z!YT0xknrfU5wW zKf4CTJHYS`uyZI^gwJ>v5ILFNr{(M>a0|FxYJ_*pniWI70KN^r1K^#(v8{1TBX$qx zz6AL)a2Nl(2V6z|eef0JT?O!d;haW*HO^1xUXF7b;e1A5Yn;;v*RmX+t#KW6{N>oc zBJ!vHb2VH|Tdj`3vv{dmr@BrnWm8#;ptl4wq-v#5l3D65g=!GKmLh)*8 zsp>TV`k{#ToW8g49Q)kFd7&?gIF>4or3$@K#D1#K1Dw+c=QG0bN)@3$iqIX>GgTaq zj-&bz=Y^i&SQT*$x)1a$sJs#K>H6ur()TG9aK8lT6N5e>zf|!h{*ULNh;!pOrHZ&7 zMVwm|=TgPFR8dA1|5t@BlCG-a|Ef5SDvqOydr7h)Q=EZyGOkK1u})_7@2q0|dj0CP zGV50% zx9eK75z7$A{9<+MF_e_AZY_l@Tit4f=!Q7v7i(O5U{wjNX8)} zSVK>%VVfZ>yBaoyNBhyxGiT+omL4l-zOyoxRuz_A89VZeh(Mp$$5LD%tYH-60?Aj& z()!rjSW!>wV<|>Zf#E5nr@x62lqbdoDiPxX(TaJ*Qx_xuEH^7M8^x}RD`^|>_&*yh z5GNsWRwS*hrT9OxwY5(ppFviLR*6<(8qu|)^;m6jooyqmi0}7n1jqf+@D(FQ0V<8I z8&i+fi!qC#HMbPgQMTqbS&ZZO$JgBMipBa*th{aT>&jcKv1d2qXyvUuf)M+3LqYgd z5q?~a#W+IvIgxF={-8)y{~h&*0&0Rb<*ZOcbST#aa*uMo%PFxwU(_Pm<=V2{V*POp zbw*XJf|u193ea*Z^$v*BPTnn)8Tq$B^iue^_`1$;K~A>%Zj{->>x_fQIi`L?9Y<4t zudd5V#K>3zJYKX#ZP5XBhOJm-Bhb3QdzvNcA~})EVJ@mzS`Xlu~yx&=3SMA zXbr2J$76T>Sj$tP_vyMhNb_|M=_<0rzoYjxq4D+fO_4U$Z>_J&WRbvhtLb6AuR%4( zYHi_>o7TvWtTq~vSjSbH3VHSywF1Qnldqjug!VTxXo1+QEe+a0wlc6aQ2DiKVZCC88YRd=Ry$G5QNWdA9pO#n{n54lt)P)@0O}uDgNuPk$hX1d2cSI`J=6hz z&mVw2-g*as_LckiCz*T$*aIXl2a|sQlF9FX7MH*F4bV(mR;H|PfZ50+{{S@SUji=c zCm@fPKLkF?<*$7PkgotbFZl}~Ujbo|DF(oOo?q5yKwJ0)u;RV}e#?JA4_@YL{{iEX zuZZJM08iy*oWOIqOtAs%x&MISVDcx>2jwXaz+RsJwO@g}ANUm@e**Nq$frPh8D9bo zQ3Fsu`4VXJ6TSr6qXwYznkbeO$zz)as2FqgzeC=Z(ke4s( zW8mpztX2o;dMu`(mI6rr8Q%l9u%4Iv574@qXW)=*_|xc)*g;^5L2v+_ds@Rg37}(^ zjYY5+c`iKP4eZV3Sa3X-ZBN111wi|I=c*I?fBwz7KDpZ3mECa2Gyf0Fpc2gO?hBWH{qvPXJNIM+?>(vdjy@2#hYk zI}7^b@UmCN*JQdFx#oKwCwHUf`;kWk_Ct>dUg**JD3PNtwR{nP($ol}YIJP3OKQ$*0jZ(VNkI(br@t_mn^}M#=XW zd(Xy~z?At^An$9RJu`jowaR^Bl7FW08Z(f}d@Z>A z3%(Y}a~s}Xje|%JqlGK?zCd2waQzxjkh1Ui&?HX`R$usk`rHcs(l-P7f+F8<_$3uR zLjAUfhU_2oqUAmt$ZOQ?@=uUHEB^v1`@(ZW*?zUmbHf0%97e#q9Im0l45Tvu4HD6( z)NgxnARly}{Z5^Qd|vcBMLy}^4ZFe%q~wAL! z94Xd~PT#2;X{78a_r^^o-F~hP z%*MXCU(|%Mk+SdCgbM1^1OC@*zc1@O^6e|H_kPyH?~iLg^7bpM{bb{Dzg_RiJpWp0 z*rB$Od!(a!Pv((MUhk1FU|GHQXKTFAeu2NO_hdER9kIrf`M3LR-@!i`8I*aWk=1xE zKT+f5{-DMy>vvdI<0**V@_yulxP1jX)JSqKda_YPs{LfXiDk8)%$MGutM`7U#{08g zjAb7CzO5T+98+F5UV$w0g7b5ABY8TO*Nx=w*uRYbzprb^|AzjnfPN|UTU(;yZVfKm zf0gh)Yce>E%bDOG^<^7s%i6hSV0pjx>%MFn{?{DmN(bli@@4z7@E$a*KCO(sW>=w9eA6MXg(6W788{|=+mF#Cf>a(^&zto!dO>My) zxlH|7>cf(4F&Uh}^RvLa0J6>Hf%gD(oz%bGfxhe$Di4>`RiK;(0fRIY3fH0#mQcRsUQ8}7xaU{Kk85W%|MF|`}%|B{`;s8P5tIf z-fy0864B4mZ=ML2_nZH(^p$aIzTMy)$ONEgS_@o{%k{wxxa8Q@$l=Ya`SW)FBjmk)xEbGZO~mdoeCkGcF5tOECFxivJ`xu%g&g* zkql6IV^p;B0g|1;Fn)|Neqbfl8df@6@HU@X%au;w9E<1n+aCs1z zK>H2>6G$EgCXhS=yp+q%;1n*WfwQ@s3nozcJ>Y#@&IcdmasjxI%V)utxLgE&$mQqY zmt1}g{=nts#u!@$==cgIGLWnanLx5SxH6Zkf(Zih^}*G-TpLUfkY5)}AlVd5Ah`k9 zjLVI|O}K0cZp~$73+M$PpnMZ>b1ruPujO(Gcr%y7!0);I0sM)}%1tnS3y8-7ui~;4 zoX%y|4DWmoSsB)ov4~JEOBwUo%H?g0Z8^tfObjx^q#!ybP4H0xNUjXl<#Kf}f%1*O zrd)0SZo%bNU@I=S2NS5g4Y&iB?Z6$mY!BYfCSre?B&qAPv3t19oYajaM0i(;z4PWS($B^IHhca*v=g_ddyhO zapNao?ifuStEi=2sdAO7I=YxcHf1WCHhqSkzSGPy`+i59#q(xkG8jz-6SsNQ3=HQl zfQX4+ix%_Dzk-%5T}Fplj%r!r;<|z{H+OvW@LcKT?c=-Ze}w%0iaWuo*Dx|RsadPG z|LOoVIM=RQkD~@|2-=8Ws9=7A5b$Oe`s33{84HvDH(V69Foyb!MIaP{D~pa{EH)1H z8jDXzL-Tc>zUSX(6ABBsr;D@lRB`GRTpkAq2(l$ z+0gp>YSa4t_H84SX$sJ9K?`teF57^+a+%t|gSh-p8(4O){_ZyLB>b4nu@n{QtJLbOQ^_4FKrc ze$=iG!v8n&GXL#u?EiGT+V~U32mrdDmf&Vw?g8$_<)3MLYoWcY572SSw!^KFN1*(F z+T^$i;wI3LB{np)(ZuFnqBY7_&=lLa)c#fx|4*wGn3{H_N>ylm$IoumM%L3uBe%LC zZ-rI+^(Wc9u|<=nmgq3bx8^OxF>cw%R;+cKwpQ&BIo;ZZQS%+GcQoD^!zdlYXd7*x zoACo29Uak*cN{Ww*l>v0MmRc-bR0#c934lG5wpgQbHvB-SOhY0(&Q;qkvDBRo8g4K znX_iknTv%O^Qrv5VWaE#!M1>we4sBt4fy3~yfd`k-Q20+&b*n=4|e*gY~NLy;^wER ziKeh7TEdK)!Yt5nLl9^q+w|>Wg0Y1Fn}dTxrSt(?7$xCbg11Hl2S-LBhCN!o@fZTD zE4F-hpxK*}nwFlyGI2O+^`g0(le;TVJos+5hwa@*twu)e#RFpI&m{-HX(Jv!a`fkR zEnDhX*$*=L_zC7%fcNC&7ymj{c>2s)dCs}>7v$m>d=a1cbzS=6AN&LE)aBqSbi??z zRWn%gYH%#lK7R7l(ec^yug>w} ztIvP*<2U=4qls{$XLw8tLmlwd0k!_>&o8klD=WVu{xjR}T@RXfWw$?i{bl$4t{jUu zT#M}#@&skJTiA=)u4@$vl&us`ei56-8Z!nud?!N9V-7h{N?qV*<}oufk^Yn7}_1Wu^e*Iz{TT_%fIez*K%S8n8UR%uvj| zAEq$^GxJA^(ST=Swo|3wh%B=iB`G?k5~KK(N-T!Q1eQgXQ7+${sr+C*Q@ip5%Nwvk zVq_V4Oc}TG%FO*Y;{)d)nv4mL5B%e3GCeD3|70AQyb6kJ_je)&cY^&}KD)?WQvnf! zDORvNj!YDCqQ8g+oQL&5yTxe0@_9uz74Z{WX66u&Afwd)mSk%!2XupbYxRdbSZf&4 zQCj1)l-PK!=~`-RhL#g@=4z20dX*N_p2Y<1F0k=-tJDLjLnTL~11k-#q`-zC`X+3~ zl{}GpAqpq#?v;{|?m#q7*l8=}BF(F`2PO9+HmAT2RyvFHd?hVdf-6<7ij-n?Vy;+a zKcqsHsj#5V&{>XDqO%dHROdd@XNcR0_ML8d*iJQdwUHX@HbH8m+Z*Xf-Kj{Y>pCHI z)=frwS=U&vBQw#ng-x|1VtFE8Zv|2hy=bHq*HeXUM{G|VQ@;jms1AthiFi+l?1_?y z?Fow|qI=@M)pTI_G_KYUsj`73))aI?R8OqTGms)pFi1q2Wl)Ti8Pb$UZI*yE$t(?NhFLDs zJhObH2hENnEigNa^t{p-81wqyp1H^iLdl>l>sjLL(CKvm%XeJDaHGMNTsmnml%~OFyj)_65N@R z7D!u_SRrj+VuSn+C3Z+Vme?chT(TYcg(dAi;*CN?Q`nOc(-imrV+m5HPjj$NYaT^4 zW#da{l;V4ph9H$9#wlhlAj&CbWFpR~fR(@JkW#EuT*(hMyld$3H~_-{XW%`+1k6Tp8Py<>4Rvgyg%|H~8 z2owRYfD*u<9OhR5tpRHeio%u-(EPd+z$t*@O;W7M=74nQRA;2T;7R_W-SDu>i#Q z@ur%=C6#=T5D+3hIvNO;H_ywSKC=ML77KJbj z7z5C}9$JGUUw^_d|7H~63>*LofD7~)b8cuZ4#lvfxRngGdPl$k7zB(2=oi2l$N=(y zLjXgaUJanRH8gj|0W0ztKKoZ48w12_YAb@16jVCK!h9dZ5k;EDJ?lc7JrBw#u) z11JC<0W{y`6~Lz8dI1MuKCl$<18k-XY$L#CK)(T6PvQa49GFm`2#~KIp|vB-3DFuo zz@E^1AFwZU6rdpXHMZmUKp$W%FadA^N_OD?*#eskH~~ulXTTHi2ZDfLAQWH)xL$yr z#Jn(|J}?WQxixnIb_(AEkjIW=g|fJDBf%6ij^f3I0^uAH;7A|_P(OopT!1~$4Tw04 z-&lZRuN?=xFACz?6k3l$Yf&f`C&l5Uc$@6Hz#0Lx&ZHe+19Sy?0=&d;A}e{lemX zhr9q-1ULikfIkooBmrqa9=pLxC9s zVaF9%5>WI2|9^}8_cS!7$huX=>^;6N=m$Tt3}+HIKA0xX_oECYS++PQk3`v6n#}hH zeI}nDw3U;QxDJg(4gOg)M?n@XQecYlLz}!~F7MFF4OMajmAv1JsXgK*AG6cppJAd9 zH<%&BO`mf$&IX(fIalXggR>E5W6ma=YjUo|xi;rIoa=I~$Jvx~ea;OylV23t8p%lX zi9(_||J<0f1?MK5n{u|~EFWE@`K+|HkkPN>jIH?R)|}gLZp+zn?kxX~adZQW&rHk@q3lp1mC#o2*#Z_a%<_vPG=bAQf` zoCk0o$axUw!JLP19?E$b=i!`3a30Bd6z9>L$8a9Yc^v2QoF{Oe$axay$(*Nfp2~R| z=johhaCYK6lk+UjvpLVILC61K>@3;@=h-^7!5!=$Y_KS>^DYBAv+tTAWbvMMw)B1$4H6oHQEO`-{>gP z0;58tXN@i)Ei!tD^tsVXq_2%WAf0Kv+*p(O8wVSs|7xOYqKp~#l}!Z9tJgPCV%1El zL#}Poz(j#HG%9BH z7mB0yAr_&K!^Bbh4;H16m49l~UN&C;aVxGiqI~3+VN`d4RCXS@>_z*Wd-|3^0mR00V-1!tjlG6Fxem|pX?2&k7UOL2XmS14+pq> z2z-mnayta=YlAig*&@W_fXN;~vNM=$5+uv*5TaZGHXT4LgJ1F(fMmJtK`c{IV1@w6 zayvvh$W4&fiRY6|Vjq{~b_pu4sD(AG0LiZ4L@vv16Ji-{yu$#=9l>Oypl3vOidj6L z>=mv+1>~;)@8J2n!TY#;5que-cYtgf+5jE1GPog^$;RQ%Wtml4R^A(VWS^$;e&7%; zhk~QIOm>m0Tvo;}JlRC3yxcA#o(p-VJih_hg3C?8mRxQQZq4O(V6vN3#&O7AGK%Mu zjiebs$LtL5#^n)UvYk*q*-sL=ybrve%Vbj_TMG4WCEx^r%AW^c;xgG*8UvJ1HWsp} zSW$U!EYBw!3)xn>AYTBJjfKiHJ={-#WVua+WU{M}O@*Fa1#o46@~eV%xU2_m%w=nE z2Y{ZJ+~z{%$?j6X%UlQFl^T($?3J*OJVi~^72`4hks zxjY%XlFMZGA$w039P~Q)IY7rJ+Yd9w_kk>c$?ik>a+?pya=VWxbK8$7Pn6kzNG2Q5 zaDZgF{YNY_1@|8yc?_8BKP1a-Kw_C0GW!q74v@*tlLT1+lf6eQ<0-TGh_bKD?jy=c zGTRTya{CX-avKoIayyV%K3irB67wOGJ&0tvO^9T@*eO-E?)+}=kf<|m2+9QP)ha4qrR5r!=PRPDt1FXwcrdBAHa>`Wyw zY84sDq){-(YciKs&dzk*^IEyM(Df~8Mdx3)&Qh{I*isT2ZZ6rf#Zt0$tED6=+FTMF zYblA_W-f_`X}&x&maJZFDM?B)mu%l|DcO;1j(cS(Nli1Cq-R=6va-x2JF_h%IXUK% z++0h^u3gGZ71!qMY$=gQ%;BKIT(ZK=T;lFwF7aGxDe>~6nNv9ac5}&&9hQ=094`kZ zc*xhW5l*HiN=(9_LFkL|v_c1#9N&A=>CQV9u(|-GQCQVK*ZJ&~&7?ho@ z2Aiz1#Mjpn*J&;Z2(Xl_Sz{?dgw9SIFqJ`pDN3@lSx|1Sns^)!kGMwOK2)9s1qROU z6ddB(DKyj)*G}`n;yNWKCwEFqqkYuynaX*03fi=#6P^vOM?4l-+@EH6;o0tOjQUo3J%`eDI|oBN%y<3(b~0i4dN^@sk_IeMqXYIu+Pn3_X!LX^zc4P z-Q88KJw568CK7UI!LMJs3)2$Hu@{Z-9E0c?y1SP&^6*eJ^Yon1*vspQnYXv>JIVG@ z#xp5bko2uIuYNux>!W zh`ND+LDnkz`kG>nP z3jzdOtGQ$ybZFxyb4f7XX{l6@ghQX><1Iy<&B#>3wY5-kmM~l^6W{p?xHkXQf+T=+ zCQy)U*a#g&oe&l#NFpLpA4Hi;qNAaYF#^ty>q(@#Ai!1uE8`H27p_t87U6#S`-}CY zbnV)Lwi`EHZJUswiTvWWzN;R#rT6Re|DTPaI@HzmecKf)nAFo#uv)p2>PIyzA0H;& zvZbQc)(9Ods=KnYRdKz`t)yWwR^eL;tzzSq@SRsF#l+Hgf7vlOnAlR1h$%vJf9PJ* zXQ_D4%}|dumBht0!#!+_dtf0U|1F9v4ewoAx74(>Zdqdav~GS|Xg?-NfPSK`!F$H2 zj+Nk=CD41^3x@ZViO(7OOwUY$`dos#UVQF}xF;!iU+LVWH^fP}CVFSw-IZ~EnN07m zRJ>MmNt{@}DWk5U@`|VjiIv6oL4045KG(JB8K|Fdt@MsbB+3%#iddHFXBEbZaXtBx zO{^IABR?da6+?&eGsSzr@}1YPV$?nP>k?UUQWDGGF3Z zpf~i+C?S8P4~~I%fZ7RZ_zqN7;v?f!)Gb(v)NONUTDL7*(z-=Nrge+Oe#*#m@ks0D z<(JkiATX`l#$bluS=vYTn@5a$jL(*mv@A1}r~1iK;^$|HwupebMfOh9bB~BHmp~`P zvRk8MOkRm-A9oK+iKmx2-bqV|j}ML^elOX(w`-4b0t9h-Dc_6%h8JbkA26*1lm@%y>B;J3$3mWO&1{}aUTBkH-R ziwffVMfucDD9>)9z3>R_3KM&&w6T3ySUdah@L%k=Y#C&~b!#KktAZpdrU~k#Mv{ab z`2E29R1VM48ErhbmF5yJJjdAhH=TCw6zsFJC)nrYxFSmZTzgslw%Q*0j%&bg;tJVs zi!<)0=LXcXg{u$Jx6+Xsowc#`%mA2p?E&fAgte0 zqPHAzPDh|dS4GVRhj?rx8zox7=#3hUc&8OmVl3jFjt5T=_ml1Q`CG{Mr8Yt3&)I*A zG*NVyr-@jrQxIo$8e*)@Kz!AikY^#T>KvR?=5}KNk94}2En!QU==p-d^#z0Su@%gX zxib&u$yS!RMz1pRw;~#$*iiLiLt{>i8AP%l^JlAB0D4_(*jmONV6Z^80c}yNyvO~h zg7~#Mh)=7>^kKmZ65V11BPOjO3lUw!RflU+DGQ^6iJK8KX5sP=zspRui_$Z7iPEW_2*DBZ1Z9v11z`W^5y@hcIW25uN70Z%c%I5X~3( zzk`=p(f=Jh;4!$sV=|8*_Xm3Lx4?(l!h)&!Px zOE`yZjukj98GQR-c2Zl+G7$ayFdNo^*K zmHo$0%ZJ61N4_b4v`o%1QT{yBz5t(3;_byELslsM?=(Au`Q5VZ9ANwx@2#rAYjTI;_|^D{g-VpT>s5mU)GQHXQG!~Hi!*oL;m9PAt3XwN2HdI zY|{i)6o1j>Ip60>-_I_St02y*luG?m;AI=MG2V95rg`Xt1=)s#R2HPtAQl!D#lp8t7SKQbXUzDYF=HAZ`JWv# zR%G?+CMSP8Zmh_xkpFq?Sdr1#u{p+sn`11O`mvgdGc3trIco&V&VIsjaz?S-+;NP?E@+mR zvsZhi)vI^d1_oAVTer^Bi-;I)5Q)_aiHU)DKQv5JQa0C3ORH*{p6;ZVo$YL!n@ja{ z3w;j{OMOqz*?KEiZmJJk3B%Y5>f1GJ`}X=QB~ur5^kk)-JKN%%+Hgr2g7Yb$E;V7! zD|MNd*JLGc@3zdxN1OSsa%KMh-fZ>iP!yV_Sl^V!&VD>b zPU8v#n6n?gZ;T0k-{?J!uJ7YB9_teW3{p}o^x?f6d9rbI1@xG+v!~&CQJ!o}U4gkM zB__(p+GOMEShG_hG?dCT)k#iP!uZ6-s?IJus=B%!uDZhQVpaE*kE?q5DCqe5s_U#; zRY}LszlP50HRd{N*S64Ew@wMagLns=zcV(UU;#U9no?Stms&=a3d-pyZr@%_amS86 z7_YCPn36IOWA-%_)6?rJW@I!_%*-4sj^ESRsC@igkyTO%4z8*Y67uCZJmwHEAsE+)+Dvuy%PNOfgtnZ9i2&ebeOJVqdMb`4{0es-t_(auMn z8cRf;9b4hnm3eseXTEDEu=T;NY;(FD>W8juCw_C35yQ-R#R%r^K7o1pyRv{d{LYET zo5GykT$y{Q9Sj$)EDL#x7<+VHW5?FUyRrnaOcZnWuw$NKt}J|~9m^KW{KA~qxw7?% zb}VU^B7U283eL`>l_Zi}!DZucrA?a-3&FvKLP*F3)Eys%(9p-|8$1xg!sZF#JG_PD zeUy7fPjy}nl+E{JNQ6Yw{D)WKGIu= zii#1U6Go%{&lTu;D_|Ovv*&Q7l`9VmUS5TQxAz6X$LFKq>-$((wd#T3=QmIAmwMxR zV}$VN(MmBfxk4=7XR>AfG5Z9yDaPP;yPv+7mxsQ$ceuWfPqe=-KK6C1V<3AcW@K-b}@7_*mLMLPlY`rXBme3`xA z^M0z>i~h)JLaZ+CS%Vqjk4D@7p3Msu1#;W%`;}dR>kV zIKc{#p2Uc-DaM3pWK}k*DjQFgjiu5^@fD1vUSmb#i1Brdpnf@O{Pnm0-~J4f`#*nW z?!e75@{jKfji}52dt0<4+~Jl48t1;x9x&P1@e}s#Xt8|1zk}al9Qt3~N-&cB|HB`R z#(!d^u`l@La_iugbIbF3=ph@W)@JwacnCK%w8p-^3@As7k9!VqR6)D(u| zSha-OLLH&5P){sPM>iGfLvA266dDO;g1OLGun?LEO$AG#nb2Hlf&aA>S_#8og{RW3 zg*HN4!Ajh_ozPye7HotLf~{c3kJl00Nw612u+Bmkp{vkM_(kY0^x*$3VLgRjf&)JF z7WxQ%f6eVDO8o^#e7hh24M3@2HjtMY^y}V#<@@sEv&;T7_-{Gu&wqn&uW!hI_=>)~ z_OGw6hcFb^H%u5Vj1WeC_ew_zqmeIVV}!B7xZiyKUmyG1&*Oh`{|Umx?_LXChwN{X zFuBaJru?Avm*4$oK1tbBVcKsTP1dHEF3iBfnwi2Z)B>|ndJcH5xEIZSp;<4o87~Oz zg83$8=bC)oCYdM97Z&`+`M$p9g}m${VR4zgmXwjd-s8*9wFLTGDmbxaKiFrv;EexB z_=DfT@Yx?& zEd&T_z`<;-us@oyCLZ@cD=zx(_@ zzX^X%n$Kuv*Ct^RTMYm5G`H)I9p}e)FXV5(cDmBv+o6iIO9g_Ybf9V4Ypm&=RF?t4?UmH*~!lwRd+*zq_}FEsb$2 zwVQv!WXz~{p_BWo9I-uh?yk+rgLS7%-)lEB>K)a!ze8lruJa$w9BOudM1JVdkcoCe zx7Kkv)*8(MCJnND@1!s}@_5e@tpu-=+1@ePp>MW1Z!zC~^i7~a!xx9wo?9&>Ho956 zS<}hZ4XX%70Y`1~Cpy3A73y9y%(!)8J?$;qBi4uP$$7U`b%=W%Nqwup29vM%S@hfXNfyK-I_U!3edx>wS!z)SWz z7yV5Zt!t`hva{c zlW)4uKAp1Q-Sn-iqUtpn@T~EI$OoIws2kK~jfdPb8q{_F#nxusJ)gf{H)>e3CrLRC zgB@$!@NsB8(pzKaspkEh=2d<2=KQl)>i)y4w>-Uksh*jCjfD@2{FW@PxqQRU2f}F0 zg{@{@ueosBDoID1!ix_3&kj`CxPI2rwHdosvl>MEo?T%HGgS*a{_)f`R zYBkBjVcE1Q4&|K=4PH}vzWK59{i?>M=xw+vy=Xc12_Aby={k9U2y;5^t;;z^c`Nmr`pc=UK=O-dmkFp@%3ai zhmRl5>VMqkrWhaE=H&H=)3Y`JN$Lb#8h|*2I?`Tc{sBS5UvB`K2a%suZ?c>%Z}s z;f<4f{7hd>>M}mnPp9X|8T+rie!o2_?pE&(^)jQ5-|f8q;nh*OOZ9A{=2>Yj=xXCT z-?{Rwse9}@&J56Sx}%>rr1Lo4Y3D~)U!bO0H1pM&dlf5&4w&v~xohvZk;_^G`~u z-AWRUPTw>%U*9G-z~Vrn_x+U%&IP4DRoyi3eMVRHt9nl>x*nR@Q@8OIw+Z3S=}sxR zqqo-@l^$ta({=x`+Br{F*Q%Rb*CBmzNr95l#zez*1t#|rvdg`D8lkbuFyzsaSo?Qr zqZe(CI{%@H_1$dc6Z_iiYbjNeF5KU#pwhxVt33PK=q?U5-68dRdof4Bcvxad?-iX7 zSBh4=<>jz7v}w!mWfjz(rzz}GvOZ$@sI^!7vFi`$j~#Mu^SOYJ+wKnBanNLqTN zL6)_bPrFo6vzg7EH8TUQ-X=bSFr6IKj$sq#dx*^QZP(wo-kmS@^$U%eTRD~8=V zRn*qJr@h+9>n<-R?5tI9cI~?zQnf3dOKh;T{JW(I)mk^Ivi{}uesgT!*LkgJQ@!%$ z<67g_s{~y^&5Gqde}tuu8_6ki(EXZGxP(~4`nA1qfAuB;n8IA!2$o9*!yu3Fs}%V9a{z~%KU9vi7#>tAJ? znR3m-b@vh$+;UecT-530@oq*nCp66%-@K8s>W0pl(q&N&eHEe$gLOXaSys)KMb+<} z)TZ8m=XRkpOWxed>ar{2?tt?{3}lf)5z{>?CW3l97!7x zajN^QtCM!mos@0TOfs+hOP@D~L#tNmHu{Ryv-TBQ8z>dbKBICszU>9?`;(rJI<}x) zqW6G9ArqIkiP5uc-X}N5&>_lw9 ze@kWST8Yc{{vE96l%B3`dvJ?BkP51A5<|8sps5W>M|I<0XD=^#+foNo^Wh4QqDx?JTc*W9M{O(DQ!#D+-P0 zFX&@?cX^=A=;{pvPFH(cQvZHW?*_r^4lA_ks};87@T3ciYY!OHwZ)XCJEDe;Rb8@t z@r0Y|5!U$`=R3D{n)5MTy0FOSvUIyqt@+arrQ2Gj>C|(+eXd+g>tk0Q9@ZZ+v0jxP z>8n?rni?G3uT2Hbg(bUJYo{4xa;_FfAMlO5mUpQ{muwjKJV~4l&AACM% zX-#dN$(BcsIlaw#RcF$e;WJnKQm3HEu5*CN{JHxz)n;BO8CdbwaNXI%FmI(_r0020!{|+8BvC`>2m2;kuQ3hjZCzpC{e4TX9XQ|QlW^(m z(pHMj(-Z^MYfgM)qT-`kPi@iB=(B@H&b5ErV8Hzbd*6LL)IwNoc*Cu-_NOcD4_x!u z5*eQPXkp3g{g)S=bUbrli|Lei((reuos1?I4n2}o zFZ1aA!?(1G#&k%yVqH|@P;{Su%QcUb4;yDMvH7`k|?sjPUXeWK&O9#a~R zj7o1&XZgFjVQ1WRE!SL{aDV$R7>Ns~rch~nVMmNxiF1p#qwc3P?2zTFNzXztCBNyu4F&Pkg zq@m(fon@DcYoDsL?sQRa7w_Bkx2PRao7*j~VV#hsT_T&mb&J-282BcrUJtED&*$aE zx9O-m;nw^cOPjBp8e)}}pt>-z`H)LWMN^K~JO6CR1yhAxo5mzxue11ilY}~%OV@3- zy;rNw#AQ}-BQ)1p4hr2hv&H=ejkKD!wtI4F$L@p657aodtU~9}t6n-+8gbt?LHotA z&gr_VT;IoNst83ZJ{%q5;}ErN%sVCP71G!(5rq%#Zhh1B-PCIxK3<*TQFF=W+p4{0 z)!v;FIk?^P3Y~Xl_`eD=ZoZ*@yK(CVzVtt;ee$hoTv&zvikF%hG#q-=b^%+lZEcH9 z>1vIpzgwYkX4WqMS85O5E_7NuOHJ9uBz@|ns533L9U9_!`g-7}g{htyQ$OBP>Z9ed zcC^qkQ%7y#6D!AYm2>MZipnvKzEY*KyI;wPAqk2Z>EUWNO_~PE{yujXbH@{VS-t4jRgxcNf>YQ}Bm{-{0zYr-s$mnhWQibkn?P@<~#(zg?wK<9kk6sI}Yua!F>jOzS|sl?{BR z9q#}5G)qmb+Gkp4cBa9!`!|v&I(%?DQtOIV%rN62^Fv!`58o7c?*6!?b7mcEcqe3c zgIL$B^=GC?3$;Azgx|4SqjRAoTVeL-DYb)+J@!;kv@$cW_@&mahfT^2D>uq&L&sZv zZ`?20t>t;D_4G4uH#yaFo7;4_!jow`BJ$gwm$aP{HE{N`Hkxxj@YuL$oTo*j>{_OYzwSsyRT}acZC2l2$qe)4PNZbO`sm zVsvk@!wEf;ZiiH+6?aYhkojCcSK-c+D+O9xra4W#vt0jdO30W8D^5?l7agWE=&j4g zcFy7U-N&Bms9vqj=-57~-g&3NyA9P>qO3z-WET{{03yJGN=Xy|}uke0sx6X-O+888!?k%^7lO z-|2HTYD=a5k|EX!Cq^#o^m?Je>Kb}$eVPoFp1En6G&9nGjnU3te>oOEp1Qr6H_a$ThnuGfvU}x8cGum z+{m9d&iK$fgFd~7&pg*~(G>R%Ef)G%%?(_1Yh1Sl`r9t{dGKcT5)JJ_)%5!NvaRb) ziB#`5ckn?o3!SUC9Mzo)Z4Q zP=C2^$bsCHLwk3Jsvn=U=e&sf?m9u|Ld`tX|_cd5U9(6&*__4VJk>(#VZ{lXPzSh>i9x;Qd^o*w$HV$H zeLdCow(og4%29iXk6u7+t-)^%7buMD+)-oq_T*v1R;Aa7X*>G$uBzjLpKjS{I(g~0{3f2Zt>kK^L!#l1f{ zdP=~BVed}NyEMxrazS{T2?r1A7st5-EpvPI%vXC)Gv}$5ZPMn=e&6`&#_;Y1Q5%-s zncpL+O6at(&X2s6;@kbwq-pgvw~9A+S8w;iF5L56 zHD-LTW=1!Ubj|B{IoI&HV!z=JqjYdgkSx^A)=|q`6JgnAdA|Y^SAF)K2wvvmHHX-<^s2(uSHgY~-6Qnfl9A%PWo@ z<=0=gdg%V!d0m>!U1)c{?UU!H=5L&FUGVVDm_B}@yJ@rIcV_ihJ-fQ!b{F3V{c;~v ziyF6QzUt=oGp=0e+||AR!l7e6`HtT7&iZug_7iH>eC2asn%c54cYoL_f%d7HjVj$YdC zKKo6{_)0l@PugdV-#D?FQ)=z)Gtd6gBQIgI`bWD){l{IurQ4*+z*^h7RNA?JpzD71 zo6b4&U&s0_f4a5ate_7L*OP*W9qkg`VbiUo8Z*_$E@*wYx^&lvu`3QtDQz65zG3)n z+gOJQLtDRmv2K0$`^!zeY+rZP#U$OeCZRzAXXYPzJ7Uf23*&q5i!rqG3s-y<^-wFf z_uegqz3;6z)p0Ib_^P(4@sL*cQj5#yCk^UWBdbJpM{NCpcYPTQx$XKxA{uq?k$UXwQJ($>F@n`trD0HB3R)?fn34&eS=9tpH3?9bikzh|Qdx3qq><>=j@(yq+movb*T+Ra%=$L!J`?-7&e3r}S!CF|{O=T*9 zt8!TnJebSQU_UNP!LPXd7W|RRLKXO+)sY=%26#D_CE$%*mV)nd`7!t{m$8VNX#;c( zM&Kq~wgLC%@<{MhE>8zLaoHK1%;j@n0v+cvm_V|z9%BmtlAXcPT#f}3C_f4OipyBg z&1wLY?*N|0Whd|)E<1zcxSRw&#AR~ktOJPW1^44}6qrEy$_9*C0wi|=cjvMzSjy!D za3Ytpz{Om~bTC#6pnZFQdvSR%cqx~i!Jb_92WN3P2fT~R7iz1p9NpyauN6;m!E@Qa``p*1D9tSGsFs!9e+8P zKg9!ri>w*a+n}P`>HvqThvK82x z%bmbox!e;>5Kw+3*ptf?5b+j3`47O4x%?dbg3A;vu?|3G>VXL)n}G==TYx8Uc?Ot3 z`Oe_=T$X|(xf~5n;Bpc;jmsI}TrTH<^SOKwe4NV#;Imvl55CG}WeeO}fX-_IuFvHr z;O1Oz1-9aH2k?3>ZvuyMISl-s%m0tP?|^G6+x9-9ghNOIgp$}5I~GC$p$P;;nqwIq z8#5|4>(uuW3$EWy16wv=ntFiU32zEGknl3V#f0Akm_m33;4{Jt_CZ`AOveN;jPMbF zjf6h~c$VZA)&rKpeEt90NI4+0Gbe92DqH?0f5DXe*yTG@E-w@ zFwM_^UkJ~Jw^aHtZ>m830dyt2H{g202LTol{xl#Grqc{~m+@P&X#s4oR9BYY)bE#VIWBB4z^AQJM| z0B;b!8L)-$F92T=z8&lw!~#NlZ9pF3^#P3u-vh8O;rjy)A-o9Ci}1ey&LjL%z&nJ8 zf8M2bUs9%D0N6nI6M!EH53jkyxwuN3rGQrmk3U(nfG}?cfC9pI1w=x9cfkIHHwBau z-WqTy;T-^x&|U`UMEGHVE`)alEF}DIfcBr2_G18}2p7F@q`!n(f(gOBj+r{yFlXN>;EZ0n9jetAN^8z-G40*#$68>PWUZ=F@%o=+(Gzw zz+Hsj4OmF{V!%qmR|D1%9{x@9pPthr*J?)v17RLQ0SgFU1Xx9Q_(xAl69{eaEFUD~ z@l2mTJIe>p^FbRt)91hPEFbu1ROY&Prq6$;vwZ%Yd*b6cKUlURK-C#POM&+%`oD7C z&oVtY#{vk`SqX@Q{9io>2+smSdpr*a3Hi2X0^zwpOqzgyb|w&>3xqa!HV_i>e|A2Q zBb@IeBWL``0oBh6!t;VKZaCooud{;iydca2o*9IM{J-r&QcyQa@)1&l*BKo;QSqeA_dJ@Z2HP7Xbd1Gl%fpA+*P{ zhyK+whw$7XjEiRv{gpF^@Z2G^$Fql2XAWt=nL|jZ?*OPrcs`(n@OUl}653EbzMo4( z^@hFFflx089M(t4N1L^yT7ejQ5u7<>q2!$aT?tRQ0Pjj{=KlS&i9Hal} zUjKN;5#|&3{QtAP{&By5=3bWm^D~fI^V?A`fzbXn;77uL2K+*JssPR(DpcBt0g=#N z{mi8CphH6azwP{_^MCD}06Z%IuZ!me;8_94X951%IRSW90NUVr0sqAzqj|l$+@G0S20lyHQdZ2bb7Mw$%ekK8)OTgsqFP=$&XJ?^(KR_hp2LS%r z8CrOb7TVxhT1d#_d0I%wy8$90?*WK}{0KlKC>%W{2F^e!u zbB#93b1inI6t%AJ&Ayn`yYfZBqHs}^=%On{bvAb}A7-6V06of3s)jvGY{vKVdglf^POKeu3zC`Gfy zJ&P8La<@5_P*W{;nC%kpakX?SHaj3bYWAD>q}gThS+g7Bi)MGk&1R38YaDf*HG(#6>hlGD_qn87G=1nIf7enIT#%!TiLE_DT{(*^*RIzT}YTlw>!o z)nPaxx+J+JY6Y8zq7Ranq7D{MMPHd1_^q*dKMON+nMEISDXh_9XmMTV=59XOVyyX0 zMzhr1-(s_QlEqr{2n()Ts@rz+Jr?Qa#TIlwQ)ZnV0+Mdv~8p1btp^t9Y{1wazS)o(%voB zZJ&+Q?y2P~%j@JG9YrG;PT$EzelqvD{-;AkH!?755Ykmh=^gB}Jk- zNxA5-#Or6d+Pa-} zo#EzZqiHwJ=8o+%SGn5~n=iIMi~X4Vp-tN$N&NQb|BX}X;JgLUs3_3__GDB3S@;iv za~@QGrv9e>LlTvLrirHCzd@by8?bGs`up}hqzr#YJQ_VDiKjinJgwkb$~2YVAP>K{ zFjlH-N&J<$koa5rOW{xTskHigpQ`&^&Nx&ek>_ls`V!H<0=6z~qPj^pfQet>so7thZR{S;trzTPIj` zvBqRmtxOnHyTm_XhcGn&pRI~B`^Nok?Z8^{-OkKk3=+#<%b)hw_GkO+_;dWZ{ycwO z_|x;(_vb?`Fd#KSEei_Z6#{>ue@FjL{+<21_;>a1#Pl)c|1R78|GvWC zwfo0P^(%kRgNlRIXSMrQ*(%$N@=lbNDl3%*YSpf*kPN02c0j{`MgWb2-*F%)epaHI z>A%jl_lK>vRY5TmQeOZ>DKHP}`S~tO{RhG~rfOxbyo>+$PYb9KVn`FciY0T^A^v%0 zRpJV>U&Xa%$Hnz#P2%6JeQmFq{UN?*_FVkRjFPmNy%9e%`zU7F?6Bq9B-@HaLnW3X zCrM|UY+GBAtHeVzUNT3tT;eARkSr9fmaG$nO5~y~k_OQ^iHS|2?HSQ+$yL!K$z9QF z$u-x7ZUby8Y(I;57Vkvb78>RT7Fy;)3yyhLiyr3Y7N+KQ7B=Rd78d5iEq<`MX6t41 z&~~~_tL+Ks###5Vyt5@g>wd(&)cutEV0Vf8Y5QCDm+b$rNBdK5zqx%Ks%x)hFJR>1?jzi1du;Gn87Gbl>5T>yhG7>ao|O)}y_8sNtCvE5M_WkU8IXO8Eb{gSi+OFR2xSfX8 zC+Q}K_QUT=TcosAl*4MNuhd7{YnZpR$nvYR(!CvZ;8~r9l1p>{!{H}s*I_|YvtiNF zMb2<_2wjK5hobjT>{SQCrx;}n3g+{le5^Nv{*Xzbt-a0ARc8KXZbL_5%8Kzre_?Ru z(D@9a4wGIsbTuPy9U9Bv&Y|h5>#MFzELGy)L4}%5X{{(9S~v8_(38rvQ1{PMp_Dmd z(o%GHq!j&t%z&(b9D&?`MgvU*ng%onXbI3NM~I`?1Y9Uk6iTX~h<8i_-9E>B_$+rk z0G~%4Ps8UW$6M-lD*Hc0!8hv;i5(J|vAW`qZ#oi9@h!UIEnMR(kd};6=mH6Vx&!qC zG6S*#as+Y%8ZCo(iiyBY1Db=9Dkzr7R)KDlEEGPYWbyEsCff&}`Lc4E%IF`Uf>Qob z&zQU(kR6qsmR(ZDRNMkwYw(40(IDNxi}#duhaO@)#F)pPVd$#OX1~xmr#nMGiGPvL zHt1&P$JOBF@mzIh@I4LvjQCn*bU61MFOJ_}RK{M*3*mP%=*y|ozr#1t;d49jy6Ku4 zj@4?>nm|W#0=P}Q7rJZpBl#KpMuQiI8AkO+L-ZEw_0@OfZ!~N&8fDO^?Vxj0FI8Vd zSE`p}&|=u29m8JB9m1QzGuC&|&o&%OXY0SwdZCr1XR1GyUt~Dnz?9?1^)mRt@?pp6 zh;@r}{b&ch8Cq*~uCktTGdO(xM!HP?pf!Jvx!!QejEmeY;z#mUnhqLr=nRBHnF zi{2Z3PlKt3Q)#|-C$?Cpp0knXte0fC(de8}i;*q;hLgd4YVd`9Rp*UP2xl>`iZ@?3 zQctWOr+?F6F`s1^V92K(=)T(7yf<)-ZaR@VV>w0Kt9pHP9kc?peb|lcBpqknsk)2x zBlUd@?;E}`6dO&@3eX#C*ko9w(@ATs)_it2y9n;0f!CzFmfy*+ukn3OhM|-ea~-&R zo+odVZnmze9#7xFs7Q;&DKng}mB$wI?ikG1snT)figoJ@JJA~2N$iUp6YdP|8?L8r zovxSu2R_Td%kZjU2tA6&(r)A})(z*^8|E2ZG_vKI@*4E3^cwV9^g8LL^Lz}XT0{8V zXdcbe8Nzv^H-XLKz2LMMwD9u``x=<)glkRJ#(Gr*pLaOOeb6$|y|3%3=c6}YZ=>E9 z!>4+_`Y`{8{{x(0fZwwXrG|*GhrH1QBQK*mqalWkhF)45wPLhJ(Oz^CJxY7Nwy$=c zc9nJUcMKV|B%Pqx2@|jn(tgo2oZM&rffy zUaDS^UK2b4TYYE!3HlrLoAfpK8vOZuzJaO1RD&4?83x$~8is7cn}#MvwnnKsJq7n6 zcaV41eXR_wQCg8&Ra&0359GmC+f&;|yGXlUo5kj{hp-*keRYQDOx4+_lc&?5QwDiz zgj}&XGdPPmewXkum@9TBb7weCL+=}^L{3gD!feGZ+*yFlaEeoLr z&8F)$P3XS#5L!$(XnNB4lzr&=^kUkNj)Ui&P8ZQtbRF}z$T*I7j=oC!8sDd%(r@T) z+H7rO?M~Vz+NRn=w58e(+RpIjsXbPEg7ysU5U45P+KaXQw0ZP7?Ii6~?R4!p?QHD~ z?Kq5VPIn7!WE-`IrRmu<@K#ul?1HJdbT+0O76Vmy^SgYCm!%#JYj zW3Oe8)d^sq(~N|Am(9*#?=UW6CmGkVtJwAIbL@-ki<CqyS)Cq^e-=c#6kW`<6lakfsK zPCeA1dYyAnhwkg#)VZV60yXJ{&KDgGPA85DN6c~M)EYZ;q?}Ql37q+ydShRX4`(Xp zh2~mL04JQYk@H3~iIdJbYTU%p;NIkDuv$1@G(TuIXf52rF0#jXE-EJ%gT@#iGYl5y9 zv<@F#U){c}a9vwLhOVQaNOzBMy{?PELoiBU${ND@pgT!0PB29Cb0X=}XxSf)j#^#@FC^-_(C&uoxT!i_hab(|o=$zZ2hte@4)a-dVNPVj}VVGz#Z8PsWh7H9|~SureI@DYm*HX3LN zV+`U9@(ijB^o28x8w~0VnhfR|Uq#O$>@4hSC^ob;>>+e8oNwr7xYp3uFvKw2u#Yg# zFpiaKXevx%T{LW9KQ%NH+6Yrw=`3R-2Vn+lm~aUA8CWP1jxx$-O*NWt%{3rzY-6_xWTf+7lx2k|2N~(GGCG6)AR}Qorvxeh5! zSR1>|AcqsXQ^YO;NlN5|E7~S{$Z3h_% zgX+4mAR}QotpsWZ$Vk(Pj2H(p5{BQDK*fWMgyF0bs05G`8Qu5mCV`B!o7f;GgN%eh zm0k+SNEj|Cfl37#DS*g`X&@tEP}N}t$a@*x_v>bWjD+E;5~zJ3XST7+0vQQ|$}R`w z+%|T3AS0>U!M_RMzX(A1eqH!i0IG=CU16-@e|bSJYhzaqG7^SsN}wu0u54ph19EK} z-2sr1R130*zk-Z}0h>CqN8keqn!#7{71aO?5>$7_N8ooyK}N!$ihB%XB>bLyMI8qQ zNj+{O$VlpOPk@Z19`_{3Na}G?`htu!kX#pWCCEsoM2ENmWTZbxTtqp@NPUSNVgSfU!$@8b13^Yo zw+jUs$&}b3hJlQvZnqg^q-t^v#Bh)!fcg;~;uesRDv1s;24ti@M2DCHGLjLwE@CRk zNPMD09Nu0@KPihDcD03f+d#J*NWD$_fxN1XZXL)QfC5Nd#7!V0VOXIADgk019=zG^&q<4An$LZ%K;hbDk&GlT#)mDt`Qw# zA;^b-nu!jv9%Q83M2C17`sG>^qgE5@eIgjni%PO8JL4SfziQyfTTAa+t>BXUsYrTsvNA+X^zibBjS$cUAA+s@FAq?-MEJ z59L?|(H~@_?L>zd05VcC(IEzc90Zg~bcn$qBc%`>VhG4cdx#D(6lA1pM2Cp)pCZ+7 zR^}T~^)4!EWUrKYRK1g`u3OU;=4?P6!j*9mH-L!M*(3_)q`k| zkua$Gx0fIzso&c>klzzK zIf?rL(iI1&cc{r2q%<0>EwyNNHscejx+INef~>p+l^FjNtp7-S?2;4Yak z3S^|a?Tbp=nII!!=mecF;w+GnFmxn#vq46> za6xH<=mRp+Wuilz1M)&3b>F@SWF!oCiS1&LkubC;*H{8F5{BEvZYjt}814|AFUZRo z-S>N239?@s-A0f%F*+D$lDKk^e{W-_diP#E&#HIu)pgWh<-7O_(gqRneS9Q!o$B3u zbsfG(z6eM?Jvqob+vxE9aWf!wJ2A*h+UVARyuOWY1IS1iKCM(fr;Q+owz0$a(zmqH zZ3P(#!(}gJ+-Q)ux3P-_8R=Wy1N%6Tv)b5YgN%fshNQP2WF!oQM3)0H5{6Qu%LN$; z!vUhp0~rZ}D!l@bkuW?Zc7-4#VYo`2ir& zT%``NC$v~wrq#lF5+)1531lxI^|3tF0p8;P!qA`j1O$0B&}HH`5LNFXtJ_@$n~!bm zRPUssoeV!99OS^eXFvx@dWiTA-~k{EJ(y3h1Njz^dj4dK;XMr?3_X}nxOb2@0jb+j z58*sFAPgqN&IDw9*X1U;t_sQ5-vOMm2N1>{1DHa1)tmwKs<{I4syPDks<{F3|I_yh znga8bX+U@{^8l9-{=Z@mAtQnEy10js1>tcIp>c%&vps}-;rr#p2KN*Cjqq*v6S_h4 z&43RHuOoz$eSz?PbpbmPzU`hv|7@S39vxw90EFp?0PP6x3iz+=KXeA{uadaf*>?uQ zGG_dcto4+)Vgrz(m5U?^jd+x>}+?0N6x$IGEtu-bG`8pA3Z8S^&75@N&SH zgvSAn6%g9U06hqg`xyNzdl#Jn`*S4jc|i3&if|5w=?ek7621o@&XG{>4){NLUn0jI zP zF6x)5yw)H)3`7YOgY2cQ|@C4d%$9|<^`@PD@dklt75>wz#G)i@b>N6;Z5uNo^O zKO1y)L|+ehl<@x@_9gnA>i`cBo?^G7+5@4zCLoLO9Ke6JkC8Rl*b;k3KqO4Z z8*n}0<$%eAKL~h~@W%n~6Q0t6{hWX>t_*NI;k^NU2`>lSMtBP5iS9sXubN9DubM+5 zPjR9C03j~|v?08l2Xzk!_4@&H2wwnLNchiyU38T;xaX1jzDHw-ekouu;R^tNC44jB z8^Tk1u$KuCUdsniwb#)m;H!wf9uNs_&Hz3jd@JC4!c+R~C<`F8kpemr9`{00-venm z(c}I{sy&e8!2e40#{o|gz6tQJ?15y(S6(LIn_NII>6?+H&CKs^M)d(;Hv z5MCEhkMIV7{RwXhC?dQVP(pZ1KpVo_0lE<04bYwNBLGJdUVYD`iJ(KmJmCIGGYRhl zxRCHm0ap;7G6dfUg!W?qClh`u;B>;v0gn(K_fb;qrE~`PD@2d`DwP6ZIu(Ei34a;z z2H`2=c9aYVZE$}j)gDV@fS*kCazND{O9z2JPV|)E`+iGZfgcEj>4*Sr2rmOv--pQ- z)>zO6*I*tJ{wpA>qf(E1F#VN%m@J9C6`(cY?Er@nehlDb!nfU%=@QXj1ytXY=`PXZ zeoPKPm`^uAB;;`qrbNQyzDs{)?iaOofNmerX91QGp6Uwa z1B7{?0ksLQ11KfDEg%xw3PKOQ4MdAwL>0 zl<-l2f3`2wU1HM;_?+<6(*N0eM5WZUqf&vGGCAFj8VrQI2+)=Av(Liw0z&;FKwrYI z0}LR1Fkl4XvjKAn?|cq?8W5BI`TyOI3d`Zs#deh8C1sfy16mMX3OI`JV*nQuekouW z;llwl37-vEPxxN}PY}Kd@GIe|tI%G6@Va(@3kkmx5DE1`fJn&i1WY6RF2H=kQ@8&9 z9#>Q|_(mX%O9KiC-x;tc;d=r0CVXE&Q^Kq7j}-+vBuqzruPo7R@TEYgmjQYZ9{0>r z-#07oj?xDA&3aFG+&Akz5XSwF?3;DwK|AUq5R|xJci5##4{I8)rO7nJf zT1p2+K1~&XjztCEmPZZOjE<90@d-4Qm?)%@FwgKE8?O`6u0v=jO@)OCsm0Dc`z*r2@z7EO!*3_ z$RruHQ(5+uJew9ly_Z0}7s0(rippsbq+wTybp-2g9nIVuv>QskSxANBeeIw{aZEm- z+*4>ts)D9=?V?5LduVEJ1})l`OH+ARRwXpk2BB_H@Qft^SONpJ`)3f)3WnEHXw zgDERol$1+ukxo^IJWv5>nOGnzxzf4EF)!14`+408?dDnnKuP z7nTWpr-9$?6ZXhd@;&4MLMo7n19<{ue4MhbQ{k%Tp{x^BLV^tZ6yBo@@}%ag+S(V$ zD5hSN%BV8*zoZRo;eE?x6yt+~WmE|IH&xnjZD_BQT-82y$S5dNDnX^kXN2XECZrTK zGO8Bz;D0E2lo09_)EAN;M#o%tcymRqvd%O2EQk6Ealrpk@*E+Rn@3amOxmO_CkY{a z8I_`*4*V>=zksF+D`bp6XUay^Cb7+Ir|n{~-C!K7E5)>3Nr{juEt65@kT&>2O3v8H zs93bgkx}5cpe``w1NJhigvkTg70V5tx1_E@TNNqmD%6iKTC#Z?Z5M;SY`c(( zjiaHR3aNyhG?mQM6Y@;5WK=f#A@nOu9tP$I@ttBApiP&Y&gxGHFrPei@aM zPm92JNWc$?im@G{FM>E)SO>8l1PZAjZ2!6F>mhC8Uzlg4j8FPXxZY-&vaKcdr;@NP zV7p+_g74yJ3G|_&MC?b z(La{ZBIu(eW#9W75!Pd?35<7RC>N&t&>i@V}(qgT1nk2%xDz)jjN` zMH%~ONoE#pot;hF?cYyJaS;{^t8<^=`s z;)R4%@jsE zlb>JMrvQ$~!Zb87jWju>Pzb4AxpExCFm<>C>N9U>XJviX&PKliwv1oOkWu@9Z;#(c z9O}>XX{vOJH}XnKOb3*frt->gEUU8H=`cz^ZD?fi<;8198m7+}my$wTCHt5wxFlQ+bM)D3!VY zbP@5tl$^A0#{XeI6Q!(kOx?jU#5zsd8`B1vIRWU`{HXdF>^pF*T&J9?Fl`I_%{*EJ^AicoPed?xlBmW7%osd?mN3_hpd~QR6nz`Z zVY)koR5G?LZ1aq-`!+uj!Tf~rw=jo+xhOnm9G_qxi(^Y1^WxmImS*M>%rlcS^8=Xk zf?rFbmHj5BjpJNpA0c9V6qc*9f3hpXHVn^#%r7W^ta~^&#`YUc!<^?&+CIc##z@#s zcc!=`CzraUq%0edn!2c&nU7~)S)7GqbgZxWr(Dnvb)cTO$fLN!qtgZtSLAbtqmCI< zsOpreU&Ap4`px~cC?|)u`{t`i{bJe-)5g^NE#^C1NJWrw2mCexV_ftJBZnilr$&yH z$8tyP*zsg^9HSpRUa22EMIN+uLU8b@DIuVTUT%RrYUHBm=&g&k?SH;FC+Eph=K74! z<1Q-z8%>J4T%NmVc3$48)%m4cmz0&|t|>pzAFi=%y*$8tePH0j^+5-$VP4rTRUVj? z8WemxH6*lSS{O5@$2s8@MNItjT?xr&(^HDKrIeJkOD!$EvahVVGP9<}BeS-4KoSXZ&_q(J`%ahY)&+5*q`RIC#?4?_P*`WI$? z#Q16OJ;^v824Aa?G5)XvmLK{goCo2xARVUM89U{8>)RL}+bZ^fr0kjeU|RT$u&;r* zOdZBHh3y~vS)7kzewi_nGM`Mm6v#ieS**7ZkGV!5%y)7Afce4x4)iQ)_-%RUk=tQW z!*55&b0ZSc`a~$OZ(_cK_JZkP8q65EPeegEHv;|R-^4@zfb$NLZ|456A0+;S$q(K` zo)G#f=nEh|Q?8`VFyCW-@H!X|zK1qJGh^^jnr6m9n`t_{6voeGG+mBk?rNH@sbR*P zH1;)cf3P;f^x-u0u{8Jr8rvhJO*8Yk3?aRbT$_c@1Z|3B6!5@I#P} zkdDJKv9kPV1-6$uA#)ujJ@muXLK^%Wvn~UD6)nd)xlKsNKpNmflzC!h7(iIj}y&hA}D~946$z7?m9!F4T@dzrfTN zrT>O{B!YWZt`A|~kIzO~7800OLLUxoAAQ6&Ar+%q>mkqWZ{`>{kHfwZ$KSXX!mOFW zTmb7V8ILf2!(T=PVEfI4wJmHf#5a@mHYyP3hD!e}fq9l4S+is2k!&3QGUIMq1nVKN z9wfu{ODdY_lVQAoV-nKFpk92R|6t#W{-TZ+DaUEpPs3cF8Nb7v8OKOlX%Y0<5@ub6 z>6>uQ4C804cj%+Yyp!p7w#g_MCs5llpUSxrtbH+aH*03@hGP%xUr8Nd;$T06z6k3f zj-#+lag30Hev78k;7Hvp#^)%<-i+T%r6u6cL@;NT?9QU?vQ_hI_5KX|WAe3e`A?)E%gIFb4*|j(&6}ElI|5Xqyk!dK!+e zNIa&VU_7QCz}g^lUpVfAegnsokOnjN!1k!BM>vPYaZo93tz7ei^(L~8!T4pIr$RjC zxJ0#v1m%wNejHn1on+?A%z6dXSy(Fsd*(h>bwITSsH*p*Z(!yWxTX*G;7chvj&0EA zkUkjF!1jmzn}~UCxZZ(vMRi|HJjQ=3`wCnS1|3tUqG{1KoDZXKO{67BJ82P&331H= z))s{n_%I55m}t))8MPPUFy(@69oI&c<5*aWf-$G^c`N6~b;@;FW}X{D+kIp$?EaeS|;yQ=vDjzb|`=6Nyw5UjJIZ^iLn7A?tEt;^y#U2RPLH|-FgIhF&C zz47|Yb7RIxFrH_|NX&015C_+1?1Gpz=x@K7sOB25{!Qk`=+DTrVb*T(cL3#FRuZlB z7ozR4v;@|eL~(Jn9jq}a*Gg4m4Y(iDPg4qfHrTFlyhX~5>38zMH;{D*X1<7h40&Em z8I$(M%mtZoCyaB6-(tSU{u!>r)I;WbS^EO@c7XMc$p_R^X5LB0LCjo9IgVlSh|fdW z&q)e!Efd=~#AC)m%=1*PLooG?S-(>~LujYyThZrW-NbPP&dne$lRtcx46k_`#w*M? zj+x^pDc9b?XHd-VP%1x-^&jk+J`DQ;)T3V}V+C3{?x7Ul+k%8?3(T6M^0z4Fx|k1D z9(E|liHsiWsY;LK0sOc7kAZcE-84nU2j9nd>SI}zzs5cg;(n|9sgtCTH8tjy zwY7d{Nf$m$~g*JqB znXJD-{gW{3>)1BQniS)2nBT!5Z5*TEIxW-p(vn?d9Lw}U%6?Q5mH^{Kv{BY2$!_#< zIIqVthkP(~h4B~YUudelRyh}8^w{?CcQ)oXCuN;u^f=eWHirExX;+}9nctv7gf#eM z3G-Vlqz`_Z4Sqoq6i(|fV=5f$V*5)G(yHI07~fwYq;bs;>MzKd)^J4)4PR9cSw;c}(x_vx2*t{_$#J@2#^lYPYEw<;0=xC=C+t7dE zwb9o>d}bVneGckWKAF^UroF1y1$<6uhxY?nO zv?(8~TcjWUmL`tlATCpvROO|Li)GKO2`T4{%snvuEL<1sH?BjGu_IG{IPb+gVqI3{ z8{0hot^zU_+abRmv8G{QL(Fg zCDtj3$M}^LDDM`S_4uDgY0rIF>8)9+PP8AVlB``@d9_rUyX=3^n6R)_}KXPo-Y%2uZ-Q3vFp{o>v zU4AugNmKZ(M6ZYQ9*hXz*;#8%tmdJzfr`u9g6`a07;wiu{=Mt6JqwWicYc4{gLm(BtLTgGrqu=Ww=9aZ%=&SvWN>Zm=(M7Gz77*e^RDS}*MWWBzB}T-FZi#FnkcvtHcv>C?HEui;*G z@bj})yYmxAc)t~ujcB)MMZ%XIetUxkPqntJ-JR+bw#{Lq-T9`yl`BI6a(-ZqZLw^c z;^SGqQZLrkzk3U7-{aj-S5kB3gxmFvs4Tp4+HYF_JOttFi!`|JG_nLlQF z%9|^L9vt^fFBBU-Tz2i;FDABh7xTKsn)zut=KVIaUS+$pXVxxiY)CpP__B0AU3lT@ z$?8Gc8&>;Qrr3|XxHs|$?ftsC&!|VO+XGx%gGar1!>)K?n%}eU6YE}+7Vf*9SHktl zf88m2Nq?&AZ zTsO{!&tKvWO*^?(x7r~2!Gk`duh-OlDqQt7=iyIVrf(};Rj3U|f}GAy6ZD?{tnzir zg|1uLujB^qINCMWWkLVtnj`uwaXEM9_qFfEkJ-cC&-s1Ssw49QXEZ(D>A3II_P0*S zCKvpM_x{-KLA|d2q17wL4qFg@e!`PA8tE^yvR5zIY`_k@=rX}#i_`FgaTg{uEJ!%n zi*s>-)3a?8>N3M0mxt6H7!-A)L4Set@sq5JFU5wJ-mbH8?D9w>y*PH<$pXhKCtqLH z8vXm;!0_hExnGl`bY;b7kDL4w)jN06gI(S0E4698UUfSXuSgeKZ42Kg?$2SL-#_@{ z*C-da;L?RZI*Ow>$Bo~=|5|L6c>m7tF>^Lu*=L_;_i0mfZuc`=lUF(2I<0>y(eq>4 ztAu_og@G6JFAbX@lXd-Y)O?fqjvKyx7WlMS_IDrqsmrEk4jaNxKh>mW4-;SYvAa8U ze`J^3fcaW7hx2vOGS3w0grb?3x21P@km0h*YwjqMJ1a*!gi23nrk^n~TBdO)+iTqK z+^qHvp^Yv-dvODk#+<;UOZLt?+M*Gzh_O@5(U;uU_7Z>CM%$oR!G%9_J{zD5c5 zM)8jg?rG2d_zsL&i2w_%~jGplA$X5Z*GnuGH2vy6-`jQ9IMa;-cmA|Vk<#wXBIi#hTvl8i^07H~bdbiOM0(uE zFXQ#MeX!}cc4nVp<_8=5Rc+iq-f~S?+N7GN+wEI#PO>nI7=LI)>CAG=mFxS)882z~ z@kw@JYWmPVfiay6s;@U5T9aio)%8Tg(_X7gl3R{<>-c!{sSi5S1S|c*ckGH;=hJ=8 zWBL0g=@h=ie|vlLwtaJs&!^@zHPzl~?!D-jLDk2aYn{C*r(G8#gp0$LzkT>& z(xP#zW!pSX=A~|)KW60~n|$}VanY}T-gLEnob%Y@te{1M+f7}&CNU~3(C)X4b@aVs ztNmYJzO<=0dlow^I?1!!$BVbcr%z4uzOackK1uQP#V>tNZQ9jr_e*d$_m+e1*=Dbn z9K3b>vS)Ed->bc!UyZeU9#JsyQ)E}~Gn44@i?sa_zllv{Q`Yc@1}tuz#Tl{1@24mJ zy-Njx6Y1KYH=Leg7MnFUeNp<2>l;q|uzt!gOS|{KY3OL{82vQmOa7uxp6!mT`}KCl zy}nz2`jFaLdsnhkS(0UvUfR-vhZPMoMjUT{Zf3i~2hTTb>C$`7yRN6FIM2M&r2MB9k}-Pu*%pM&dH~r4ocMA=k@dB zg^e$h`) zuV@XfyE1n5BktC5#?$vibdOosZ%Fi<2|hnAeem;|Q)T0>?Y`Wlih6TP?7HmA0{Nc) z=T7qWJdnSPKM;TFbco_q5lhZLWiq{WL;mN3ftknrr_nto$``CzIHj|F;hu9J3hXpj zNJYP&nAyp^;c3R<->y!Wvx$FyI%O^fW`V_#>+N;47rm~dc0A{r*<3Z^xZ_gmJ!c1A%1H~EbS~lH=^OoAce7@$ zW1Z~v)2hI)+ng^H3Vt|d*NHwbXu$Yco65F(rgoiH)!3u)>8j=P?YrMiej4Dru4Lm+ z4zEqaW`t~y9G2Z{bkg+Hhg*v*O+U`DE;=9k_zv|!bC!Ac!>``^H{9%Snus`lCdFmtEY8bHWWc~Qcl#^>ti^j{`FaPko;XvYr z?RUE8_^+Qo#*3%OtuUibSYPWWNbeGSw^g6Ml3{o7Gwa;*zeb*Mpn!?1e z=amQFO|{kAKj2>ZJ|kW4*KvQemc4O5Z?xj(Uj1wQilUmHxw9;O_UNoXLHFV|fzPc+ z7LV(wE8N1y9mo4rH>EAu?!51*Z1j&)>_6H)n^zy|TEYL(RDbv063z$qf)2$4Cf(of zTh$W$N2}ZQ`}KEpJH3sXpgV8&oSsi6Z&xh8w!QgP@t|>s9S+T#E2;<^bFM=8qWPnN z?NOn#Q@7>geFK+|j^FYjfqtJFbN1fpmQl0D^s3FbIpA6D`gZuOz`Zjz^j?^AEwDUN zyrn8)f$zR4O>u`uY@Rh+>}Zy?m^E7ewg38()cv(zzVOzKV;@T&@0-4JddNlTv}q3q ztzgv#uM8dD?z2Hi2dna4*81*){uui(&goOaz9Sv>4hk{ydaKyC`_qqho6deT`QzI1 zkqJq^y5F}q2!0k&^{DyW8E=O}udhzyPV(8mJF{=1mgf7d=EY~r^`1J$ogBM#lZWf7 z=byVb+>3p9y85dmlarw9xYhjuzPLO zXZv+C=XPe#t9?I;{w0I6tBy6;q34eo(~Xm7uwR}Y?XlRsV(Ywnx*s|p{&4cy;oa9Z zd-Z*O_~!O^cV2dBUg_mJAnskcpY4KQt}ROFHOb(4d~x-g*@oI7lChiX1`V0?WP@V< zicOOv<{Zoz`1E?0i6x`<)Mq{ul*_E$uf-bNT{wNl$d@sXZrmN?+KFE!=z8pZRgZ#I zK1SW{T~fq77{c#*eT88Y+xwLGSxE1x+o~q?Hi${|=T^wSW@qM>md;!FB>v6U+j{rC z4_x4P?DhMhnXkHiaNOD$l^lO$|FhRyi`Exryo(am76*PVi(9a~@aDBCXWkUA&r#g1 znYG^a%#8(Ew$5u?Pc691dsD|9lpfwN?)bTcg@-~?Vv2|8mwV=xXRgyaaCF%NmsQ?t zFU(50?CX&`>rxjt{Rq$X3pJ?vOV{1!iB+8b{=hbW1Drje$-aIu3tUZSOlzD zU9$PNDw`iCnfl&pI^q3%#0foVQ2(&mPfJF{*MF&a((Oy^u)X4zF9T+n*e`eJmz80^ zHnwTnSVyl7mMl87VnCSB$u9nH`<^biUa!@d+1J8U{&nWA(pHTd+lx1U8Y?mI_=)Zuo6>YmMcwH^WCo9yr@HV$6^|j>d8AS`shbUS<|jKlQH7*3&yb`p-J} zgV(6)e#`x)ge^TBur_@|>ymeR7v5>jw;kWNYTK6JQE?H{@$9#oJ8W*r?_c(;@15!) zK`kd&Gk?t6toseWLnz0qg48awE;I zdh^-NCu_5>r-VjNzBjlR-!s59E3K?0tNy1C6QkbmkGpP?u-$Fe?4Mpfd^foG?Sz`` z12?XoT)T0=(%!4y-|{LOKlIwDM-!#bIyU&Ve2jSBYk^LT$^9qo7bsR4-usaEHcXCe+>@XF*&vJs$t0^p~i`8`a8$1{QOpk5*U7 zqCZBYkJVbg+a>YBwZRiOvOPJ&x(Uxle(LUs5mm z3C)KUWwmqdin1T}YB#{Z+QF^YoZe4*&dz81mMPxr{2s#bJ1C8v=kW7Z-d*}#)6UGO z?Mq!MJMfA`{H{7>_4P5!E4J+TquzbV)PXM=3M(t^++VJ$jegllM_QI=-K~G7XQ$Q+ zk4p+}Z#_KoYC|9K*c&|->h!EMVQ z-Rk)#yI$t~ylPu$cF?=rOAkxx)A()=6I!ZbTgFzO4Cy_i*zHn6FUP$PZT9wS*_4@U ztLVtx^f;0?D=f0`ZrZt=-W^19Pmk-k*}>@j)2F)wFAdfl>U=nJ+Q3M!^6Zu^dq%Ed zo#4NUu_`k+pFO@$!KpJkck3c9SKrY;;4p2xAX5G-FC{OpY5va_7xT(ZQwkL;$GUiV z1q^=?!9F)@Wrv%`_;W6_w%)n;bjVg#T}-gi#|7TOaTiCrj<*;7TDETaljM+!zC(Yw z9iRO}x0QRm&h-B^(?>KS?TY<{TeD+EF6$t9JwWy)vVErOz5SckooTq^m?$|@>)T;$ z!p*p8NkOZxMIDg2EQ$*Dafn<0_Tb(L=axUq^xU(?fcoP`Zc;)&znPgk#!lf*5+3v( zKl#wc!g1^Q)fpvvi@UW}WalrtnKHNYrH2oeHg+(GD{ka!?Vr(eS>G5F?&l-%>%8sH z9vfdhk6TbSf6V&w4M`PSH0=hO{;K!OUFV|Qm`LxJtA6kBbJE)I%E;fkO|~ksZXMsH z;km5ilQ~6UK4wR5x-ML>+iJ+RX%E`nGE&&vjmYWMtKm*fm7V$Yh)y(@JvILE{#Bh9 zW`%FC$?NGEy~VQjkGSzBN5?(6e)P&uL$0oJx;SRz%9X$TWZ2Rr>|y1Z3;&0@H-U?3 z{U68A?EAh?(^S)5v`qV?v~LKxLYI)W>`{mtSwaX=6jC7yp{o!=t`I^9A!IFt>>>Z> z%$cbvskry^{k{I@?VRVmzu(Vto;l|^Ip+%H@!g7~>EWpc2Dzi3dG#s{3{74#^YW?V z-S=E`Wl>%^zX>^ZARw%2eUBH560cvZOW3pj#mKvjmyh)_&Ta^Z+x}8mJ+5e-llLC! z{!2H?r!HA{sc!zeub#cS{aqfn65S_f_Cmu<>#y9yy@&EVqYZtw4c*w9cH7jN?suv+ zZSbxYJwIhbD_ZwxaVy$nLVYXxGdfw5c01@}5$MuVRJPWMTH2AyG@ zGyI_jjXi!&D^Y_!ZE-Yfe+%sfuIMP$E%dWxSp72zEp*uK)6Zw^X{P7L2o4(ExYciWoY**6?hVDD# zRp-l9wA&)mx=*v5dd8{fevc`K?QalPWvb|H)q&%%7tb}EQ_+1=WO3eZbEkYoXx-PF z3#OXy+;e&}LYqv)J?w4I7CD?oX!)5^t^22f?=AYEq}}HA7|NQcNTG1jlr(coufKVO zb92hqpHR}*;-$K`{f>xBj=hHI`CeSkyQQ>(eyPzZFr6{*mcaUXznX15xkq7|xa-oe zZ-$S>iG4-SVft}dW=OHarOSt|yh;M3Te?fYn>{!T&bV~fK|o)|UEDNDbjGuE-@%l} zfX>o~7Cf3Vv~EthJa!d`me6f}*4^cAABh(nANDr{>F#mRrCgtEm7W=9X?GvI?dpQ; zosqY9HG2DI7rhk_gpBmR6TI0IGjgxR${n_-mAAoj-Ows5*2M<5#tkoAy*jo3#K3H~9@HI^F1devc;MalF@%~+{d!%xyiIRe4E@cg<6FF5 z#<5q$Eucl1i-Nj;+rcF5B<9ha`@BTWoN@8AlI|cf@TAr}_)I5nX z|LyLA^ABGyk6ItBsJb-m=F9bht;Ld;^+7H#&R+IR46HqNw^#kBow+-D8-MxdnswHw zml3aKxaO2STlGou#bCI1=sGWRcH)3lv3`li+$1tkFLq; z@yDgd+S0Et5;CTaI2gO~d@oba;oA+JckVg6!f{OXzT)(^oP+dN{_IgB`B=4NRm{^HTc^Er zIbxC#{;lfSfz;ivmvJ*FU?_7;KwR&4m@_X~jU1s}eH!B+N&#o#R zXEgivm|fyT;+chxLxgJ%p{5QB>KUB5zwFSq_$i?UM(ExzjV|pXg?@W-@c`~m>%nn- z|ClwBQW_GvZ@%7{{VsVUM}=29CC+>kbtj|NQF>9NIEv|gcG~qxYdPoi&x~=)@Y{tQ zt|$-ipEdYP^roIBqiN5><~%x4-o2M#^SXt7<;N~>cTUru=J8p3*gvyJKa73hwW2uf zZFsah^w=`@V+Ou2dOD;PY`B*=sIc3MH7{Nce#$rvJ&awS|MH>3xWaL!mJbGeII%I* z<=%|?1yIHP*~ccnOC7BDXZ&(j?$-JEAva$vnRX(t_RYAw9$k;B zx_f6HcO{Nwoj*8!b(5|8Qr@*KLtgvzI#yl3!`5{{|6K7o!qnZu^oc2TS5986d3l+;3SM5{H*uR^J2GrSiy!*We3h2EbyC*pZiK7H-|rbJ8Mq5IpGrFa;p5pe zmeX%dA7#czXY@V)tugKHoo`RanZ#E0LH)zpl70xq`{Ub#xP0yYnJBwTpHd?aan9Tj zna-H)B#)BiH$M&z-&ebGR+PpWL~VV&CGU0h^3Q+RiF=A%Cj#8kd*s+?r{Ze8df zH_vHDJfMypJUshRs!;ogt#Nu#&5Bj?EIwWub|UmqEo#5_Q}Mp(I*soDAqqR51YI!Y5XX`=G#lK;nlb4Ro;!e3O#xZTU3$bjj2pZ>UZN) zWqyu#QIdWFrR4O+Ka=ABjF)n6jGwuCVxs)uf(HBX4Lgi(Q9YAy5ai!S>+khKzq)dW z@XY_%6R&wXI?*p9M%pdRCWUR9sLLPzH2dn#(}&U97%O5n?Lc`L1ym8+YR6LRpTe*m}Q*V{dnEF1xZs}hNYZ6J;3hlXMs+U zlm5)}E8ZPZ9Ng*A_+|0{E;ici`;A!ziz0KvHx&hp7cJ(zZ=&6(F}%cCbSivU$?&m* z^JA~9`14hXaLl`rF}J?-oN4(A?U;Ifw&n2+jW;hfG6sIh#l(LP82qKa*zwZB&jZYg zk{69TKFp#hw|?QshB-4r*4@p|Sl>AGfLZdR&-H1nX`k2KTk7I8V`Nm(utT}1;EN71 zg6AuIuN-FAD*h&)9C$x$cRl;i1=)dJYe*ydSWnn6XHc%-$vpE+ej(*h#<#_>Aurc$ zzBfGDf73(4^hL#-RfD;Il|27ayT?88>?*^&oB5N6NdA5jGg?%!|H#|CTZzNVraT;; zk$P;4PxT*zX?}<2R2$YiW9L`uzetG4W2Ws82k)&7!0BG-wqp;rYTf+)ndVyCHsejc ze`MbBAP#$7;q_&8ybL@0ds^<20Rc016Zi@{6LarD$K8{2o()~Ie%Z#Q9t~0a?v_c7 zS6Nj>O?D%b!w-@y<__C9cTw`{@Ysci8$AtIINi1_*|`14J51=Kai7;&ydtnm^3j*x z&nhXZzpthJ*L$yChxd+*lMAMYo81ZvX;CTi83zt$e#xOh#LNtx@l zQ(i&StA@_ni+*Z%KL6{E(Tx$Dr9{Q9JtOy_j=$P``P(6HVQvDEFN%?ro(CfvB8%Znw7I5dh8&Gp( zal}AlrY(}FUireVj$mZ#X9^+20`kH5O8wloZ4xV!2e3(uUrWjyi8)>(5-1YPMfzS}>f z!DkjE+`AB*Hg$*h$OR5|REy7R3Mp>UBeIvCpS#~9^UTqWcH8Ke*M7Pb(R6#*+GU@2 zm3a1H|8wZWLR?dj-KXatgWm>BT^?f-6M3q7fZm+9A^Z(Pds_@SA?!P&a%b(3eQ&gi zr{9}B<#lx!i^>^2RZ^eza;N!j@8I)y6P_-2ExmGW@wy~?!3}fQMM%g&1vK~+ZTvmy1StOqgqas@I(vu%{9hmhl?7r-vsW-A|}jU z^Uv-5GscDQW#(lKKA-U7M!|d2S3B=#PAc0yMsU3HZT6bfw`NxdlS$tMJ?~Dwu#frS z_`dgqSG{|Ey_>i$;rpF+Z(k*T9?fI!Jr;0lQ=tyo7H+i>#pK3Nvn30rOqAjyoakS^mh{D?o;=zi# z&Gx#Udv`H-xNS-L&#phByX|OL(&xNs_l4Qc{QbC9Y-aygwYsh|KIyM6`&0W&KK~EH z2?jZR)_mw@do2Iatb2)nd@Lzkc3CXm-;>5Qz^ z-ETZT_w4OID}ot4s*;wDiJ6;i89Pn*MUb*=%+iB(O&hdUAGy1-`t#;5&tr4PY#d`7Mp{a~MgH}E zlur4zlP^~E80X|X>gc6A4Lx?C0vb3s7vIO=im#)}1o1@o$?JuIJ8pW#cki{}=;j>( zSNxBq>s_H&KK*nz%Y1SF&EA_{UN^XX}W%ww@oD<3(Eg(yp{^&V=l-v2SqXybOB&-ap>gJLrE?+Y|^k@X?j{m+d z%vl%QGToy;Mol=48Zh+EX7c%YXR)<8MW&;)9{hcHnb*Z*TN=Gb{bBmfIqa6M$?jyg zJ-)LAb8~Foloc^dE_IxMBRzsVnOJxmG$mS=QgD zys%g}eT8MjP|;VTie0haPY?KJefHq6l3S~W4PH1fbl$<8b6txJ-^(w*onf)< z_kOp#yD@H$^p4NiJ@Nk63xkETxErwjhSk-deeOw>&Uav(r`|&c#RMf6J^5pm;RxK- zZE@&o>|XMc3`9BQXZ8`tB8KxoKQt73XpPF&8SjP48K0 z=e!V=e`RoJcI-UDr@ohZVaSi-suz50G~T-x`(@2YhDW>wYx$^x&u`LhpPv1}X>EmZ z%=JA-WwY|)f*gc1h>mCW-we1_z@yOCtd*_u!!49dIa9twcDql%D97jdX{B2q2FxzW zdES5Iwj_M^aQ8ziHffwb3Q_Dqhm*H^+MIZXdp0@mUyAl0}%9qxJAW(rr=tVxa+U z`f}2lwKZB{GlMct?~qO^?OT8TkmKzv1#cYjqlpdn&YKzYren@+_nPE3Cas|-Zh%G5 z@P1y-my(yRZaVR5Rq4~iMl(nA$eu@XZC&5I7u~V4omCdv=LxBx?tW=Xq%OzBo&Q(i z{o%dC3{z(vUG;3xiYtFg9^IUIuW0h|l;=a<6n+dlye9E!?s?no4z6qW?b%jv#MnME zGr1`)@igs_~CDW^Va!V&)4qo-W#>^((e1GY;a?(-b5ZDf55mkY{D#@}AS&GcN>lepAVacxcUY`tashAdk*p)Wb&nxDVD z#m(?tl6|{o`#fB+h_vzcDW^cMN>(6+N~PaycoqRQD}3|;*DGNC>;KJ`0l@%o2=?=1dm2hZ)#2xsh@>-nO<(`#c)aCu z%Pl^uE%SW-_JJ~v`Fyr)vMljoTP?Oquv%qR=>xt*W9@3~X?@@4vClg|K^bM%m#nW@ z8~OH@!^tMe*UPPZH_3bYg4^zlKwq2<*=B&R)F#DdqfLg*IA8G92iv~3f7nj*jrLs( zC@AB;?PJ?I+k?L2?7&*5U9x4Se4CG*@86cknlwYyDE3dSyk>9s`p^S0H zXRt5Pifco&64{trIoL?7Ol-WY`q>0ph1d+R8g4VpD%>W_YO)QS&pNB^HmO#*HtAM- zZBANUwApF}K_f&jMdz(<*xa*v4RmU)8g1TMVQuTJzT4z$DI~BJ-`d#L(%Q||(AwTM zOv$P9nd9qcJ;XN1dXz1!G1WTGcA0gWZH)DDTbggW?^^3^wprGH+p>MP`W~^qV!PYA zM5!n7-Q%n0o9}ze`jzcN>(92&teb4{a*3U(yr*4%`9!-h@)`1VcCqqwyM^+tb~|9# z$_-~hv0zz5iDrrD;+3M+A}{e4%U$w4R)=i{S&z4UX^pXa;uPh4&uOyrOQ*TcH=V{g zgKrTy1}jcD_EnVG-2rV0L4&PE+g!JLVuSHr=extn-nriHo!uQ9Z;_wqx~QjBFJ=3% ztYx<4j>8oH*j3tHwyUw*X1PzEV_6{Av+8bRWF@!Bw<@+dXm!eFsP!b3f zF0xLxZLlWVeYB?8ZMM#{EwsL%tm`zZzmz_a8bDBvkHYtgPnd7C6V7>nQ;p)4&wSr0 zPECqG<g5HDd@b&IabF_f*?B3l-SLbxT#_7I9_(EK(6LOEqhez&u0( z>`-cGmIKcKPWzYn+oWFdUmD;5Vj*4;35XrJ4uRFb;1S zf%dWXJik2qo_;6nm;8qPAipTTYWolNEB(MX5>Z!Cdr|tHrk>wW&o%0RgzEfw3ssML z1MHTg%2d`lt-Lroc!6e+BTbQ^+uS5G9ELi?!&HVc27JswV7x<1O_ehEkfFjfO9XE@ zs_b91u@7)4Z;q<+qEQ$*9$Z?c7Y8)+&9>)N{jAO;I;~KGr~89S7Z{q6TXIli;OnOv^;YX5 z=PXhaL{qJ$)_}Ph!82^SLmAFs_XK+{un*|2lxF;ilp3nPj$-1V)Ml%UQNa5IutOQ) z&;)1-v=Dj^eS-Md#n3WnIfO+KP-GN%6bP+{HbVEIE#TufVyqOK3FSb$AS0|fY7bSH>xk{1r&rDh>~Fkqy9t{KqFD3QRBee z0{4Mtf3(o{appi`2IT)0*n%@c4t&D1x}7qrMO>a`k^GS5Kk{Ri=j0`pqW|lbrONmph4_Q=Lqlzgn~Hs;%GIesM~0e&@8%nWWg@j8?31W-7Kg`^v-YrpQ;> zMaUQ11{KhWRXf0+MC-!s13{f_zV@jLBT;CIolyPu8UC6{|H zH(Z{&z^B7S->bggdoWxGE&?U(?bpk1jQ?N$ll&L^NBOVxzvX++_qyLpzq@|#{T};$ z^Bd+j%Foi(*VVzbuWL`&L9UN|pZi+6__{c_^mXa!GRP&|Z;Ib=*D0>!TxYt%{@?h1 z^d0Up#bun!Or`%hesO;5UH7_faXsj|!}U1O`3A0{=KzC@6?7zo7k7(bF9&R^S~=5OfF^Y8A@@U!#WY47amefhWmT>2kzh9pSzPhbX<&G z^xfUvySw*tcW@u*e#7;iE62myL)*jI!`Q>yW4+53m*MVzxre(iai8wK#(k50iv13k zEc?A6TVua7E>wHGeWM-DlWm{wQHe_TIOvh;^~&V{_|IP8JNJGJSD`({)4-nPX=R_` zwZkjV>wpyjssJ$3!VUfXk#y`|@B`)M9q!6>fQs?qX=LcleD zy;g%(Er=2-Sq1f1!WyUw8USF3a_SxitrfvpjD$u(W0U|>+ePJCd4L}U@FOUs90b*R zcth~b&T^<1)CZJ*f;n7>)hj!CXBTwG}lM3rOYWublhWLdj}|vb2@C z$==B%vJ9DtEL&DAE0bBsF3S|Me`J-iJF*hV0BD#fS8J?j60~1bsTHUlE}8}%6IE#q z0rCAo+_g}hNGf?N+5?Rj2T8)TKZy226U4!iR4{`t1HUfdYnwg5A;X{td<|s|j&hiW zw+!X6lfzs~a6P2-&{p56$4tvOOWz)Wu;+|{J%%dFQ9UA*CCr0ePwO#DNw4g&PFZg3 zk)@8Wj;zvDlkJol8azZh<6w{C9;bU;KzzZx&b??j={l+p8A8U8DP#^l1a1jgLpIQ2 z;ZospVWM!2aGh|yFip5wm?6v&P8LUsqs1}eSn&dJyf{IeD2|sbm#mf~OVT7;B- zycSuDuEo~kYl*d_S~4voEi)|(ExDGxmO{%_%R|dYD?lqyD@ZF?D?}?)%M*e}rN44a z_5~w+05lLP!9T$_;L!v!flrVUj0kcW#A;#;DUno8sv*^p>Pbx`G1-S4M2;lKk{6KU$?4=Qayhw*TtluSH(*N+X3%WmA)=Db!qQ9<`8KOf98WP#dXanv|AEOQYq|3TY*@ zGFmyUf>ueZq9xI*=uhZ%^m=*&y^-ETXEQ7q_Kavo3}XQ!o{`8%ViYop7?q4FMm3{` z@qr;`N|`dI4>O*bz|3V9F-w>=Ogt-q6~r3Lie$yG7O>)339KwuHmihH#;RadvT9g$ zta?@htC7{jN@wS@pRnuL4QwgLh-1OA=R|U%IkB7toOn(?r;t<3so+#{8aR!dCXS5j z!42kyaKpHX+$3%mx0GAKt>HFu(L6kl%%k(fJSoqJ=fU&g1@OXnV|kN#3wZIo1YQy^ zh1Y7NWi(S6Iz6EbW3XF--2v=9!R`z8zF;2&_TgY32lgpopV<@GWy}NE60om=DfO1I zzULOe+tG6`I3DbI930Q|yabLndfwC2Q|te<6f|pNQ?aRUJwAIt8Bco_8MQLVXr?kg zf*9YyPH=-V7+@EGT?g#OV7COj1K4|l-52bA-GE)jAb<@A`#6|VZy8hEW&++kwx~Y{qC^H}gpjXQLkGq|5yX1BQvCO#VcF8CLV}X%l>@l$z1;!QQ zf$_lvU;;5gm|#o@CKPkczsmo<{}cZg{tf=0{G0r-0ptK?06#zyAPX=Fun4dXPz1OI z_yqJ0D8+h5-~}b6igZ>9g~I0 z#^hr1F!`853?0kH7Ga7pC73cyIi>+1?H2A8<_imihlEFj#ln-qe}or>mxWh_mBL%XJ3>B2ijiT=l)b1>_Fqfy zSz0()^tAA`=xZ^^Vz|XPiBYY?PC~Opd6G9@42rnXus3M-|g5=SG~wgLMA+lXz#qH%Z}8Ar#laeSN@ zC&d}z%y1SsInExZz`5c)a6Y&ITp%t87mN$Rh2p|+V{s9l4;V@vcz%Qxh+3s%(N|MnawueV)n?$!m^j?K-1l3!%f3Yr<*P_ zKWz5gXjHcy7OCc?W_K+9GF@VN)vUqjzFCg>XQSwDYfO(xu1M}nUP+oHG;N8txwb;v zUweaIuHI3-vwGL`?(4nK`=p1JF=f4FgJq*-Q)P2yV#x)Olc-Lsk9erKLWGv!C8I=i zV~H`rm}mUbte@CXJXWGB{w$g(nj`8Z`k*yfdw|$k93hF8bQ7b+AtITiP%BHTLMujM zDZV7ai64o4#jz5(xKuq8=w8z>cwFjgA7l1=7FxzRKIGR(L^ggQbnF_F4}R!(nV#IO?C+3Ye-12>yj z!n0sbW*V`4*s^iky+ph$gx+!w4~yDttXHo62UD5erF8jInH2P7$q< z^Mt0LO4%XQJcb1!mrzd#rZq7?umU)t+)yGLT(`(6CDd5D2Q!Tu%d6nk@f5@l)NEQk zr-@ue`9O)MPNo;pBN&NHIV*)#&6&)`a~E*gL|38_DVP2M#E?=FDM8eHS{2iX;YwIQ z8cQxCr%^l@p^V9_MAlgD6YdADoEJ=3zzpJ+bMq-;LJT2-oIuV8wJ4>RGh*0ct`YwU zHJfWsl+#>kYrOSpNwN}hsdMlWR*F-w_sOfe&iK9*xo zuwYAxbRwN%LH)oCCgbT1)H+TbJCAF`F{309LP_vkoDYsQR2XX{$QVx;0nD+?2xcs^ ziCfQ%WP#^DYzPYGz;ZIzo(q={6vPYWh46}b7Thv!2qBh`LcS>-G=8_kYjvpHs*P)-;po0H2ybIIIlu8gPPrBn0-Pe67ccl;AVHX)FZ zNGKu%5XXWX6r=#sSW-TzgoG!v$rfZ+vJu6C5=x1swCs-$-3dMXgK3uQ=YP&6}7CjKrC2YwU@fh*Xyw1^{s69=4zIL>B zi^dL5ew@h53M~Zpv<7Hnv>CcP+6HZp7C;0qnis{J<2~GSjOPT;X`X+1F7#aHne4d{ z+_h(V?(zKF^RVY>fS(8Z70(;sc-QkGIKJ|H@A<_O<;C$@qA_U9Tl8D>cK}2T0;|!h(fbVd8R{D88oe@nWk@li7-0dh0f?0F!4L-U-%*rs z(6HFB3eevSS81=)PSxJ2eNg+T_DSth?ep4I+O^vC+HbYdQkIl2)spH;Ev2?nPpO}@ zk94SXq;#xws&u#Xh_p<4NqS9MEqy6%kfL<(IusqTj*gCnj*X6^j*E_mj;~H{o&Gw( zI)Cbn&>5o>p)*BihR$rASe=DBD|M1|*6VE2$=2DWQ=n6%b6n>iopUfF_N zq4Pxt(#7eLbs4%`U8%0Vu8FRLu8(dnT?a20ujyW8URS(sdfoGS;`P$&g5gzAj|a+{ zq-$>l_1L4V$z|>9pdR;>HTk6d4b+98tPPwMl94(WB#V6@gBqQuAod$&^yyyRb>$#x z4`p1qwN8UL&zf5+zqzd*0pBfcq}f9ITeZ=TEd;ktOS`DsB(u3i)UEMB2X2dTUh0-` z*M&3LshtmM2uG)a{)m!pkZzX3b=m~#@Il8x*Iif3Ti@H<`=j)$l&QnhG0-v9iIL8e zW=VHQousZ(L#dfGNIFP*LV8;IQ2I=|NV-g#2)wM7PLLK#Z%KdGPVFZOIdr&)1MDutNteaL;AV;`}MB@xTt>{0L}nspl494U#nlE z{}DhF022dy04@N$40;&^84Lk1!eFw&T!Scsg#b1fY%#cOP;GF-;0S=n0A2v#8)_RG z7&aOZ4b2VZhVa>nGK@D|X*kL-!Y~lPK*M>4vkbEUF!c@frTTvQ?)nq-N9!l*N9r%p zKdw(Tc&%?~aL(YZ!A8S%hB=0AhS>(w3^#yC;|vZM_!>GHmKf|YC;`}P{bYTHVS)ik ze-Fq`&!AL)s50K~%n(1b5gV*AxL|zB__Og-z#r&8(1QSk02l^fgbGHX5g3a` zARLXrL^J|Z&q95e#4XawTW2rNP)ump`j0vdsp=#}8NU^RNJ3IrAc z3ot2L7z0?Uvs4FZqB!vEaj|kOcsaBZS_Q2EE5^y-xnn9=8{Q07tuvvm;OXKH<&(!f z&|YXi^fy!h`tdO6$zxCqHWrKyxCi60dEkDs3|oP%!q#Bxu#<7oxLBMFmyi2j-NEMK zRs|%3br(KHj0p;mVg?6<2FNf*U@c&DKt#aQfarj^0Sf{;Uf)65Ky#G`=4h_;z_jLS z4@@H~J}?GB$DtDFJT%ASEOZ(Q0AqMEHV_+x4aSCGBeBuSF^%Z`>mfhU3I zz|)}V;7P*o^vGSPK^Y<%H5)uvn1@<`T8vtXT8>IYtwF6rtw*JyHls4Y^M-7|%R%i1 zf76kVDnK0q&x$cPkMWWGA*gl!t>Yv4 zL(nDQL0$g@aJH)J565q9|6~1C34`Lt_WKq4xx(4PdBUy2Gs5RWhDa!qiVQ?%%I922 zgd}l_I8B@`&Jt&fbH#b$d~u<;NL(x~5toX~#O2}&aizFQTrI8%|S?4`Op; zUofhBiVgxl?LBiC1fHn<2@QjWgJ)@f8=W=6<63Id7GqNb$d$y~-cmvXNzOr&%?MT0 ze0o0Bj5wK6LMWp0iDDL5{pVDY=%lf9DK&svf-lF@xz*%4d;`&yTFBv3Bbj;3Mxqa$ zP9xLO7#743l8@?66@r@ZAMkhrSkfhg5JCxK36lwt;Epw#P>2iVClOKzX@o*TUw#oT zi%>!s!ml7y5fp?P!V`k65KSZ#OK>ux5z&GuCzj#@i11zRSYiZmGBKK%0`7OSi21}K zVzCk?@l)s(#42JW{|T|4_<<-Tkx6`#m?R^akt|5|Bv+CLfB;euDVP*SiU)Vf38cxS zXcC=RK}sW~ld?!Dq+C)qshBjAUqz}WJs~xa8cBTeTz(v1Mm8dwk)>ogxeQm1Q;inyXmSiWh_ZlOflCDU-MQp!axy=koW?IE7m-WI734~CCGH8ip4>qG zK(4}V;aB6>6h1{vkx|A96_gx)4!?>OKnbAK;4bjf1tF9$$`f2PC7zN%Nup#?>Tz|r zY)T$Kmr_hA0e8?PlnQVU{e)6YsiD+?JLv{W69r8bQ)N^+)rWeF??JVv22z8m5!4cX zBy}t`l-hucp)Q~%P-CedaB0*m>KT4H6-}$AqVaXqCR`(~lu$;%)9R^ttg(3bUR+GG zpc&Eb^YM5OnmsLu7DB7zhtdLQV`*f31Z^@ck`_yQ#gC`a@kz9I{1h4+pGC_9ckjit z&-~T=CVn*yBdDV_&}wK+G&)^MXVdv~8Qq9Z6p-nzbPqZoA50IT(**YPNIF{}5Jb}x zz#abrx)`5GPp7BRv*~~E3+WO;3EfCgNw1-QpqmTG3_8O~U?(tRC>T<_D?^5t;e#0= zV0B36(V2&V`nZoqJr!%vd+06NZ#Q=(#0r&(#1+$VFh+idWUX3nEz2U_IiX;HV&pbyASVy21~`=d%h~ z5%?mOJ-JkHUQo%u4f?y9^?@@PERf*YbhZbP&E~VkY#IBqKniXo6>L|w8QX&$4Ax)l z*#Yc8b`blz;GUpL5Q&duN3&zuZv_k3j|9>97<{duUJ#4V0&9P{>^yc6yO3SNE(U8M zrR*|x1$zO$ie1f)$Jc}BY@Y;8Y&0hUPv;clz6sF6M0^rn0oF(+gQso;VG<{WlgBCI zu!N)drJNE@IcGe-3SK!8Y6*?Fa;}1_D|F>XaHF{~+(>RbH-T#?OyQ>B)468CG<+qu zlw8lX6gmmh@mY92&sCU>_Y_)ybr$f4lEOeqcBZbwxVtfOyk=Mk-^XYs(e}b^>T=hFNMZFOTL=r(wASHnScw{mbizSm4 zW@HQ=gU6$rH#}Ln{XA$0IRI#MET{Zj+%<_Z(>8f))&dWw5Ap|zkjWIdGH5i6lF{(t zr|ET&wlc5I)WNq^RP?`Z52dHB9$JM{ zwLn*Gf2Id~g5iPsrS?Qofxhw|>Nhu>awC&zSS$@sYt^5$U)&Oy zZ5fF$hEPA#Z-)=tfUQlsw01N*WVN;L0u3jxvEelEcF~`mke%?U;A>D|Q@d2+Ei_Cb z8&#>MrhX_pmj0lw$!LzRX143AZG5cyt{jxWpsiT#s|%$nKCB6Q0WASz9UK0jqijD_ z7VX-$Nl=|V91d)q#p@^=IA^6BwURo1tB|b-wWda?Hqv1I0@}*D74cIi$d54=`3-_i zx@Oj%Kez$mP1%rY0wy(-TM^BCB#BnPgRRY)HQTpWi#wL8wc0HaQ;>CYw#|s9ev4R> z+l;qs(=7c3MD0k~mcL;4i>e?DTxGDqhU&8c;dD~fUyRhgdQ1FP(U1h%H~AfIE9Y$; zz-K*GVWu!^E9e5PZYfp5%0fMIHDu~W)?odJHiuL9eKX^KgTNW65>uw!K_ej|SijAt z^r6X9b|}JVtK62>H0ui9PWaBuRPzcbI@3htT~zz2Gvyz7v@eZ`XrJE+x3fxjF7G(N zk6qfa{*O}N0UiZlQ_GZN0AaOovF-h^wC$f38ot2(&D-ggMAQlWST^VSqo^Z}syZ4G zRE|^vc>HvAtaTKpeVIn<`~+>^4mrDjBI^RXrGo+1{DaX_b5MDB1ClN{Yo&r1Y8+ch zf1NE%QbEP-{6?G-P@%!;H$|F z6rx?_2SwIcX%(u8xMhL$qaGtp#h>;cqiL4BsW;ziC!@e6&EDaIMBh z8<~>)sU<9piAYN*%1uj%iKsGDl))uTEA4*&07vZ1x^s>8J#>DScfF;%G#rpLU{x?Z zsw`Bgb;zx$3^x_T%oPOFVjlb${ag6{IX}Y zK?l`StF$fKrqWifNq5wIntHA9HUTtcut<~sAL3mM)oDIII8V(Vi{_^&?WlLgf_-V~ zv~82tGPuh$H%(~=Ik#3*IcUYyBs2nOvOC9tVdqM%HGlye?#HpvT1|uctQK?5-dnoHF9ChShw)jOp+( zZ?muq&v*Yr74UZtZ8pun-DwYRr4Fo-VbyYk&uwHw8n#7(U~1{lN<0}4k>NjWLhb{= zy)0N)09^m~O59-%?#TpQtUj(?4LppNw)WD$Scuy#EaX|CLF{ z8%PEI115Nbv+7v6MXFNmnts>awgl)5Qw@}^oPuz@)Osy{4~1|#3)7g&9eUvfm=a&4TQMtG#sp;PPW}FI`yEmQn^q& zYuD4SF}Jiz@6?^LrC5K4UJBn zBQ=80@}GG7f!$)!V$))*A^pL!Lk41~I{rdB9XkC%*y10?eh>qON~2BD%!e~;->^Mr zKk^X2a2&*wlK$_;fHF1J!1^)xf5Pd!_Ue-!e(tKqo6CQf1JYc-??ctCKXcITi1?Xu zJABxEJM4eMBLDv20J*^TYyT#?%2u;l>RUinQ-b=cu#V%vNxXEiCR;`gA z1N}PZ_p|!{t>q85xScZ8gWwlSxHo>$L}U208AokMbx$k(w~e9}s!LT8ZPnnR+9EuBRW#yp9g5aeOgu=Tgic&4rxuH zDr7sXR>`!LYtp}htDUykAe_s4(kWAt}rw+Y^|^A zKcE2kN;Q?d*`&3;2Bp$yN59z?M%v0-3ELqwBB)Wd4>jG@vK{X~vRcmfA7#JJQC~{^ zeyN)KyIi!5G#~n30TChs-|(?5w2p{-@av%Ip{@6>&@J}A-e>=j> zB?IRM0}Xsjh6qh+mFr>@Y`+=skv3h7`UdC%)I}8R5BBr8#U4X`$8;S?sV(AUu z#1n;v^{J?3e(HX67Z$m87PVm{D1=kgp(xLxOVHII(;z`WSp&q5oaO-H)_wao3O=eM@9mHz8^ z|JVN9p!b-Lz>U}f%5#+1d{kmBJ)?;UiEb1(NJtbC!Ar1+M5+qNphR{uC}C)ks5xy) zr3XzO?18Kqs}mfAZ@YmSfXq~$ZB#iBO|kv4v$2_2rT>~r<3+IdN|`XMhXz=OeAd2HRrHs`P? zoD*&uE(c7@B7A?mvTc>E4qsjU2<>xQ>Dj<>Kuy{JoIA`@mu=-gquY9dX`~(07D|sc zfI{l2>I)@TnF+8!>aVgxtP!~yUxq)4cY{7R*Iy}ZQv-Fp_I`Vnzt1*GD>#0e`m3YB z9y;=@j-Xk#SAS~)%ner_RUSd?mijlx1GzNkayAAPujV)m0BCI*7N~KR%X?z|KWNz=c4R?rCz%^ zt8-U*RkvC@dBJ_(qK$Y|MuFQ!X$OwVQK!yVU8;1I)@oi?O3j+W`UtJbReDCoKODO` z6QHBa1SyHC{#R$O)C2v5KpgQfJo_M^tVc7Y<|<40{MQ`+YJ1HRcvfYpt{);rs20C1 zT$qROHF+?uwrRoDK3ht}2I#`QtZaRx-bhOTKGGuX)W5a=<`^B+UmXi6HCqC~K~~BP zew-&;Vzp%66-;f{T33^+%)6!k;Z{)gJCX^|MB1fo{gpbJ^-=c$++Iqbs@B(xjKtNn zYK?Vn?~lg0qw;Chx&>9-4&t}gZ*KGEOx5`{*F`BoxSI9o42La#Vg*{- zl%%euvUFA+fxg<}3Q6r>%^`ySnWW~qH)FG#vHi`MT1#ElswC=mhGXebh&DqgYbfU^ zB5Hrl>nPCrnF#F+Mj+f1%`Ky(RDE-+*#_jN;<0FI%)c3nYsL;YV`?pR`9>uH*DnAx z;{B(%6Lf`MOD95~=_H1TVa@PIyEBHM`!j}MMlz-`h+qvUj*-d;N9QmOGiIZmpmU4| zi~?LO9oGNMU@=XZ)IpzcAXQn&w zbC|J=33FI1nDg^mnX-N^>$=39HG~z;ies5FQ&~BzldM~;H!KockNpkj#O}}j>p?g> zj-ATh&pyX~!2Zl;aZEYxoFSZPoMjvyK9h5pbA|JO^O?iqnsWcI?}z?PJazkY$M;cQ zce!(a{eHY{e6>%wgwGi7`z_FNezs`A8k&2H1i@OY5sU~80a;E1`!cX+g8eYquYkRl z3;Rd$ta&4OYj`JlZ+LqA{`|Id9DhIm0iPvs7fcgm3a$v+(kP)dcsJ@A@LjeyLOt-^ zsq)whQ4fmxrt6)=GlGTb|t@3JNQwS}1YYdJ9&nU_g z11y!GUL6kC&eRq{Z?sLNYO5H475?BYNt!DyY1UEewv@Np$jHzMRU}X%vEgHLd^e1{ zjyw4Lq8rp-XQa+Foj9E}I+;58I@bv$Iu+nMC({`2I_JRK=V!N(zf{THz*;tmaSIB^ zd<#39spOlR z<;R-k>R7EyjlOK@)poHTdk+P^@?&k}Z#2?qw$U1+9HWy)w~XExNx^rnLczCL)5*o; zYH|}W(xbzd_M4i5yw8qa0kD)unzJZp(V}`^fG3q z>0#5hzX!idx4z3!uJ6N9mDftJ&z62|J<@o_cE$sZql}Y{3&8hb-W&5w>`VrlM42Rm zuRvZmd2hlqwFBR0j519&Eii5I@!w(a40**A&IxIo*4h0YrM}V=S^)r_)nNEQ2wgXQ zZ^|=+qaoaZ=27O!<^|^0&EG45*9`%?ZZHh&76l;LEZIz1c1vzW4+Qc80M`M4b=GdY z?sfnMc8}_w+`XXt_3rPx^DOKv1_Fq(NCr?~aUEdqEqIpiL1||>&@#$0*|NZr*ZqCB z>z3~=c~*8-1FfR0lC27?u3Npg;#ni}tDW^g>nQ7F>jLZR*6*!(ay$7zd6adOJXu~K zZy8a)hh^DU*rOff4%g-HVrj^U1R zj;W6SAA4^eSY>tX4WBqwZ0R+v^ew%;x5Q3j1xX-4P&8*h2@)kt5)i7E0|W>VMuP@W z&&f$nW|EVU5Re=~5;Bj6kb#ik7)k=EA_TNe6f&qNwB;&J{eEi?X!h0SUcdW&@B7Ew zhqcyTdyRYT{p@EtvDH%}CT31_Pdq*GDvnW;d?$rWikOr+$vx@xq^pxg`TF{X_(u3< z`nr8j`(E`OHQ9G^$mEF0nUmd<+oyW?ou2$t)78nNrua??nG!K2bBcS)=_yyIjGF2@ zHDqeU)Xb^wsi&u2ojS_T*Du5`!Y|X$?RVPms^6$-zSBacMNG?_=AL$X+SO^J?(@Ab zW_g%ej)cwBqhuj}=zx$V&_q*@+^PA@v=4bQE@vHW0_v`h$=I1$W z>@@SV#nU!Ti=XD2);{gZw9)sO?+d%nd0)eQz4wi{-|zmg`*ZF;eSh`+SMMJ+ecbfG z=}%0L!12WNPGyo}>*99JJ0`QWb~ zoc>@4j&Od&Jh=Bk_k$gPiw}PBV9bM~{KxU5{eF+>Vbi;&`#li}+8^pEs! z_aAKzGk2N&SUl@yo`%I}H@pMF0tN$YfgUsF&FGpj@1cf=M$BA1vv{UwkTd97P|(9U z4-Y=<^~mB!oR73WGJ00ntif4+!LDGh*_&n;&+eUVnbSTeXl~Bj(evibbIrRl&ph8b zzjuDnqdAXuJ?gb!(}K1IV?!cC+CxS!%vtEM$Zt`@qAQCQKi2k`=VHs^>cyj%%v<7G zGUE5<-?#nV^Krk&Esw`PUj2CY;~r0pePZ4dkx#gu=z7BAN$)2uPdcA$d-BSYUVoVP z2iqU2|Iqsf&!y(2f&QD8#xD)^cP(vL+O;&sKgNG>sfWeSvdL0x>9qtcvn(s{k6h+l zR=lijS@*J+{jV$=z1(~GMgNQbLCY=6BbVQ7{kji+Gj`45 zHSud2)(oy0y*6lV;bF;PJ_8Mh{QP57GRHRWqM z)?8XMa_zXa!E3|Uc5J(}ZRGZG+k>}e|Fx+c^kjYbJ#}b#)gf(8%J#V zO2c~--f3;JZ7RkyMb4(`P3@a{H(lH0xw+;SV>i#+9J#rA^WbLBEq+@pTjIA=Z|UCR z@zmI-@ErD3l|>Esn0I#WDD_I6R&a$LMFo;r)y_f}RnF7bf-Rvqp)29jgu4@$Bqk&_Ccc+AI?0^Wwj(Ubd&l4oXHr8_{Ik7D)z5Z6J0jUT zIr6#1$*$+xpR*+wCy#!PwwU6Wu9#~vB8zLu@v&YzgLX#7 zZQ4oEyApDCw(T5|Fu0TAZrYKv!!xCAhhK{4vwqK7o{fLjlH&2)*yrXw7x`R#%IN2v z&o?~Z`}_#2x7B7Xwsu*sS-osQw(68kwj5iVZP4Z!yX@_D zb97krh#2pf#W9qNmqXN~J4IDQRl_5dYB4rdRbpN$WkNZK=#i;jHdktU>XlUTljDet z^GF?$FfVnqbDlHa+2$N{dZziMS<>Rus?)mDJkrOe&r6R?ccr(dUr8UGVa^E4aAq`Q z^k$66^v-NgU7TslEY9r8{H}J&j|=%&qC_=Bp9M9zmU%6ct{vaD;#9v^)?ysatoAIA zY`^SH*~K_|vq$fmw<~^E+pcRkymP{ExNvmmc<%Px9kknqqXEa2-D7jd=2~#%KNJ>5CxlE@Mj_kW63mkgG8m4=m8mtHG1 zm&KQLm5nZ+U%srOw?d4)b>cri?ygM6emkx5*o_ZYE~zYkwnN)}zkWaQO>KYErDsPz zx2AGUCB1LjR+&&a?z!OS!k-)WT=H|}fR5)bJvZ|COV5pao@QfrWl81i=hr{K^ZAPB z$!1OE-IX2BQ!S3&I1TY1uDtZT^3wsE#>(TB=PGM{F zQuX_xb#c{r>#euWw)&gaTWwW4t;JOp)~>2f>$R#6tzOkZ)fODIi8*l;<7ksdcXfC5 z6?x$QF1*G|9)30Am{%i?uo`jLYQ&LKlT%ZTqa8;tj%)JptQE)DT5*_b#j&_n9Ghyz z5nn3~SFJc2YQ@o2D~`chad^~;V|1N3yz9gfR3{Egou!U;!^k>uIP08s4LEvnjBt-| zQ-$cQ;lq_a?#4>0+VM)}rs`5f@2(uI>>4}Y{Y~!&X*GOWdF&UrRbfV|zRMe$-IYJ9 zDydxNUQ=1}^Y3E6t#Y$Fp)$%n(l*Z4H8$85Yzwy~+sbVnwoA5=QRAY5qr#(-qspT? zqAo>^w2!j~+r#b2_HuiN{gQoT^tkBY=u5Wn=;Y|&sPgEJ=u6QfW5&e<$Arfu$Bc|A z2Xx@Lgkz*5IA)w9*fGu#4xEgm97hL^U`Md+l4E47ziC`-aBO&NGN3%RBlZ%Gk#QsA z#^E3u92Xv!99JIK5qF6nBjd$EdY52LM{w-8*m3dXXB_Vdj)%wiaq;1xBu|bnk1vlC zJ;Zm!UyARD7q(7!vAfOv!-Q`475BIV_(}**NCuQAbR=8?{|$$DJ1iyFf4f7!+rjU5 z`0t#kb?dDo(4!9Z3!f1~^hK}G=3nSkw4dH45BU4~q2ymt{(B+yJ2B;tsQSGTT3=~X zOZgkx`xW=oAIO7p(0(EEm6mGpJxhFj#y#xU57HoB(XY$?SzB0rrJ=kG>7n;>>N_`m z?dBOk^K10hsUotHa4ACNlJkH2U~=m2b28|N5Oh)c|i_ zLR312*5JFx`Tyfv$9Jv4|IO{Yt)2f<>({_+tG!o;@Vb0@;`BuKO>X@c{pw!z zzeMR7Zyui5@Ed`;UOdSyu8pi4to6V%m3Q5>ns_{Wjm2|UdyQwU7oPiUc&;H*e6lAE8#I-D zP9&~W|0%x6AMX~2C{ereuI zn_hChRQ*!dOIKdjIh&sV)) zo%iadSDmj`zuNWcl~+Aq^L|amvHa2YN7o-i65IaR`$vxxUMI{aEGKLyTqoL2L?rf} z@aXXBFn44oS~_eU&X?SYu8y{j-VTpWug=qn=1xnet<%-n)_LXC-cFB`UMI~bEhlX! zT_@X4_MY@O<#oz@%5utf%EgbXiEXEPPkD5WO7iM5cUih@U9PUSuHG(>KY9Jh{3pww zY=3g$X!}#|pFCdodfoiG<#pTZuGiaM?|t3l4X-!MZ&=>2z2SPJ?Ty|ye3Lv*d!06) z-t?m7wC!|AQbdyLbld6P(;jbny=i{ae~jf#8;;B**PCr`_P*(H#+~GK#(W0-XKZI& zXWGv6p7A()I?3zo)g<#-%URo5*V(qSy=OhTy}HfamTp`3sAN}nTX%1_$2qTazRBiu zA;}TRmUA{7u5+2m?&P*}z2`j6d!09*x16_~cb#uL-+SKUt<%X~Z<*h+yk!Hp-fDZR z_brdNz1}vzZF$@Fw(IS-w|n3A__Noa&40d{Z27b8&#phW{kiwgqjq}y#iP%w&)jF} zv-P?9d{f%`diy;3z531lmi~|wTfeJ6A|*4Wt-rV5W58>`JYX5H4Y&r{2HYvV1E*6w z2K~o)4VningI7~*gRa3*slKUggS~?u?|Hpv#$kES_MYp#w)cA9^LXFu{g71i`w^*@ z_cK#%@4Hh^r(R8Uz2EkJ@B5>izRnP5gwx{#FC69%EFaiDaDCABL8i0!1CL8ym&}*k zPRpg!&Z|z_CD*04OTCvoKJ@xmJe+ox<1TIYx}VGLywQVJ~Dsg zPP2Su`^fcC+ef`0d0al7b~VlG@~Cw4W#4qmW!q)f<&gA<^tQ{H>Ajb|J~n@B`PlZc z>*J8jwvT&1_V~o>6Z0n#nVFfEPi&vKK56@;_Y;q6?o6+1=4+N~wri&|uV%WgwO#AI zHY&^GQ?E~hSNmp}Kec>n`!poW^=aFuy`Oq~=JlERGs|ZYS+>typS69KnbrH5$LC(3 zn?DcV?#{A&Zu{Kz`RS~-&#z|ne%|}J#}}iry}mGiVfn)Lh3kv9FM7Z5&Gz`x>r3;O zmM?8zy1op_Zu>GKJ2Tsz-TS4-KfL~7{)goswtu+((e{ti+3Fnne?v{?F=j9Go#tPf ze}(VdzcK&Te3yBw`EK*?%=ehbna7*&HBT^mn|;g^&6CW&=E>$M=BZ{s^EC5)=KIal z&G^ZH+23q7GqYh1z*q7a=7-EP%|Yge&5xL8nS;%<&2!9i&G_7Je$>3c9AaK*USxjE zyx6?N{Co4`<|oWgn*U&4YPOh{nU|Ya;2Zl&^D6Ud{Ptjtd98V!Io!P7yurNDyve-T zyv6*KIl{cv{IvNQb0j{-Y&Y*PKWl!D9ox^2<+Ec2>{uZ?R>qFivlkug#VYnvA$zHa zy;RL!PGm2qvsZSqS5nz4rR=r+?6rEW1TM6na?^8u+9S3S;#tzSm#03S8*-0xqX=5j&*hxD(8O=_{u#*mU zGM1f;V<+R;$vy1kUUupT>q=lg{L3XBu zoprIZMeOWBcD9(E1zXC_ma((t>}&-)TglE=v9s0eYz;eG%g)xZvu<|w5IbAX&K_oG z8`#-K)@@_mQLNj}x}#Zl4C{8V?pW3x$GY*GlLXdX!MZD1cQxy7VBJt|V%;sQ`zSkS zW#{bdTr@l9VCQ1lxj1$%iJePk=XSDlPIhh=JLh8O4zP2D>|8NBSI*8=vUAn!TrE4- z$j&vfb1m$=jh&BS=N;^PEIS{^&d0O!iR^q5JD&7CFW415^VLs}AF?%K|`Nhn(vmuPZQm-AzXCp%~*GYZSl^NCl(= zGK_bkij8+1;1T;B#D2$t{y6Bx#RAY5hrSH(S$W1g*@?zGh4548Fy3*yjCZXzKolSj z5D!QIBm$BE$$*`J6hJD#2}lEE05SntfNbO4DENum56A}`02BZU0Y!j=fMP%ipcGIJ zs0364Y5{IQJ)i;51ULdXYP@SlUUoYm8sGpRKRa@>BR4y8vm-Yrond_a!muDju;t;n_B^Z>;>eU2U{27xxnYg0ucAW9zdhy&B`GL##unYa{d;4;$|`V?0NjjSHBc3)WqL2IGRwVO)sHGA>|D z7qCVzV6HF36&V*2@{9{fHb9+mAvwpmkdg@iO-(c|I7^KS8Gy{a02cu5>}&x1?Q$Cz zcDEQ8a$}7Pg|I0qG%gfZ01g=!N@|P?WwpkI%ALlAT7q)GVdH`u@ef-8hNm~ue9anS*N2mCsqkMr%K zBNLDX$Oa&W1NIK+JIVlV0BmC80ZD*8fENIH0LbFtE6xsx1;9RTF97l4kZ)X*aWUQj zK%Dp*0Q@AtPeLvrA5aUZGcG2=HWB@a$R!cJ6A?cVz7rb&@RNkGCBaV;@=QXEB#b}l zFaZ9OF#cp4AQ}L@WcW#T0#Ju!=p`fHWaN`v1wg!H_)R_nfZa~iVCNy@VhZw4i3216 zFvgU90OXf~8m6EQDV2a~0PItdM=EqvF{V_^MJmRdid<5Ws}ug5kU3FvoM#u)_5%RkesfT- zT+|>JHOxiKJ(#yW;P)WsJs9H)iN?i!I|0zkLymdKI}f#Y!JiBDa3Qb#@UtItyC1Rg zcL89VkJ$MY0Qks^v0OB7&>;tIF0pxrD_Sg$99zae9u(l4Mt_2uF0mfW_{0dO> z0>}#Bw+McV5aS^7JP6%l^cNQz7fVoo>>U@&kV9FEaj_hADM$Y0kX0bZ3d~^z_)5%4 zC45xEwi0<&!e=GwT#0$BLQYkvWfgo@p|1*k)p-E$)mS^#n73-!RAcNls6j3K)}h93 z_;e$l8)J1t?rt_N9>Q1;H5wP|k!QUN03Y?RuSY)hu&>Ab)gw>r0~c}5Uu?jb8(`Cb z`ZmC>0X`ZKzY+S4s9huSY{dLEVI4N1ZcS-`bO7Qvp&m`JYl6RK)D8Cx7n>n#M$99~ z>j>IMki!w;5$6c&^dCiCk2V;6xW4sS z_ZWRPx6v1617sL|_E^9!fXnE^{YPI+G=OLlU?(6Ca1hXF^f|!eTHJ>{pwCeWs4@C* zzW3qU-WPkw=)?Km7YExo=)~m$Dgbo=$l?43dPUqU9J+UUc1-ItgGKz|}~No)qR z7=1~|Dd~vOmkdA2&`n1CYaB$gc=G z2hlzVpCyo$f|ep)8OC0QoXZfm9Qx%LPdW6#kH}o3G>th-6qt# z3BH?=Pc!nt`O(*m@f?BvQPlrvDWJvZx8?#~05ll=wgf;apbAhAIAZkUdfAWrwSL@t z_1n?LJ##;iC#A9oN?0)VeLH{cMU32@ZtkBK285ny8 zd}h=FP=gHQoq;-KBHv8J%Y-}&v9r>QeysWaT^P%*y#V;gi2@*I4#t~<+U-Vtc4N%B zh>2@We{MdY2!MX9{r){R0CLB5r++WTyBB)6_Vm91oqf>X2me^({Vvqkg<9@U0yvHS zeCXw)osZlOlmJkh1E|#jK_0LZNXF$$1-0dgrs%)(>qWFIfD5+g1n9(-xkPPFoqVaE$sXK zEtr?1jm7|;c?PU8fFwW~pw<|`J@tSs4^RoH0<-{*8Us=BfJ8t!pvD-$GwDDyWU;#d z`GA9f5&-0}@Dtl?48*~ITr>dw;+T< z;3MIPF_2gQC^QC=(4T}jNr#MqWaOHh4gkLs@peKl1^MB=YXJ9M11Wm|MF7OW{nkJ# ze4puRQ8p$22B!8mGR zSBo5LV*${sMZN1lu~!eck(V251AFtpA=L2@>WIC0pdR(EM}H&ianCZ)lwk}s7XpxD zGh#G183VW{8EAoz7L2(Cx-D+NA!E>*4>)WLV*eeq6$5Gj&BkC<3cv}-Fb46QJBVl6 zK|GHR+K(86c)u|iooftYA0EUr%V122F^K1mK}Vf280!Ee0bm~sJ=|Li#=(C)V#UL6 zVm4rxF_;u>3??IHN`o<&nrRGX)*FLaRzM=48~}dT9zcaLn1ep7hrt{-0KRhIXE);P zM((@ecQI3;^;xLe!4Q_oaI2f5j=l?5l~4oP$}}uuW1IVLw@;9PM{;yYS|fZ`9M6B42wq@AY6bQhLbX8AIfSSc9}kqe7ibrTRj_+EP;LxR z0fHBlAfbW^#3-n-0@bDhwKxJU7sf)bFb-uZjE@CMgulY17NB$zWFWu7ERwze2Zb*n zwZby^E2Pv4Ycc3TH=GtWqwIw(C{vLg=@zA+Rz*3mDB6#)6%`<%q8fN9YC_eDnkxe? zAIyf{!E6-l;2x+PtVEd(y6Xcj7snvy;#icpI1U*Ur@~cnS{6_iLKc@*1zaw%qjV+F z&?||fRsw2TvJ?JFc3GL17xQ|MjUUe@+`}e}XWsWPZ{P{c+nag&Fz<=XdlK{ZW!{sS z_Y~$mm3jLypL>|kc;+*K`FJxQALcWW`AlLyzRYJb^O?eYrZOKtHt`-daXgziflc&g z6MfjkiEQE|Hqn<&oXjRpVH2maiGFO-J#5l=HfaKz6vl z;R{*#A{M@kg|A}a>sWX=3*W-lo7wsqZ2dyEei2*0hOG~0>$k8C3)x09+c<-5L}L-# zxSVa=!nSN?Tb^QD!`L%n#$DcHjk|mR69JO|zJSSqDS)W}KY$s)00tlc5D1t7cnB~P z5CnJ_@CaZQAQ&(kFb6OfFb^;v@F-vbAOx@wun6!NU@>3`zyeqXSPobL2nDPJtOBeC zgaOt7)&kZ6!U5|68vq*tn*f^uTL4c1A^=+fPXnF-L;|*rHO7x0Z+K4tcmsR@69JO| zzJSSqDS)W}zww3-^rlUlZcLv(-7q$cH)fb0Gaj0`&3I_8#Rv)tGG;9ZFlHUAH-ga@ zjK1K`Vq@;yV8B9S?t(yLLEtQ70b~oI`xwA-?{dHv!*aaESZ3L5EWdXHAi`K~S!XN{ z_W?{aR)DSm4c)xTSh+F`u+CTo`D*wN3kx&W!rxl7*FtYC^wuKgx(%z0b;u(;Y@HE~ z{&4h%Z&+t+wyZF=!sZ#ku_^;F!#Li&-so&L17-jg0u}*Q0oDP+0b2s@@}4jj$eWN4 zp^1bh5%MK8na~tMQwjM2`M_dAe^f(&_dD2gz46o!v?ngWoBDi+^&!@W*onkWBz7XP zlZc%}>?C4+iS;Gcm)Oa~P9}CTu~UehLhKY`rxH7r*r~+&5$i{+AF-%=P=IB8`1pXe zC~?3>YM~xs0jCSzj0!kice;R3DWP&ghXPKw0G&xavnSweQFmRy*@I`x2$d76AXH7L z2BN=dJj^h!yu zl=MnTuaxx4$Y~i#%c!r6`pU_+ochYCublcSsIP*QD@ag5f(jDUlAx9ZwUk;dg{&o& zS_)K4dbOliM|yRnS4Vnvq*q6Jb);8EdUd4dCKWfSxJkuLDsGaxNqUI993quNq;iN< z4w1?sQaMB_^(3vQzIy7br@q6)Hjr%tZ;_yZ1dY_!NPUge*NDDu8~T9C2~_|=3KUNW z(kK!{QC}4GMNyyqY!M-t*-2_AGkbS5A?Vpj&rW*Lq!&$k(WDnmdeNj3jT!(!FPijX zNH2!;Vn{EB^kPUahE!rm#X(XBNgX70pb$VcK&0ouOasBGgDf0m5la@aB#ouMSn7+z za_mkZK?1o-AXf?GDuG-jka7aKN+4GWWR^f?2{1b!+g%rU7e1nnB^<@Eo#Pme9URAU z9M5qg$4MOT?Pbtw)j*-xGA4-vyEf2#b*;S$2SnprRaDO zLb!l(>o1_Vcs%F0mT--Wa4l5;k4IwzCtweo80b9#!3gh(1IB(5=uP_?Vd|lsEzp~` zHp0|Hn_Hka?QX!lO=)?6Gxy;+`|zB7c(y(~TOXdM56{zw=jp@q^x=8> z@H~BZhCVzuAD)#D&&P-7K-f2MB9AhW`=7|OB8-0EsezMt+ZT9pAmOQjQ#dxi6PFnt zxRB#;;4L#~MBWo-;EQzT+Ep`npU({1bh{IXVC$N37Q1S9j3DuX@J?)h#9;#@g6&Qa zt|IK{+(ajxoq|+w(oHIKdd{G2l{g~A2~7~*DO3=KWC%l@M8IJ;C7&SFiEWhvVPh2> zkB-ficM6~2C_(J5WRCq+a6Bxw*R#kBggUXYl4}ssbklaj$@w%QTm>5|brOLJc385* zR!Vjtk|P=RQsS_iDgry=Aj5V_okY+{Bw+?^rRb#1l(?wwXoRJ06t0Poj0j}dGl?St z4!b2rON2U!@J<>gI7*ij-pM0G3!fmQiBeGnA{CsF9XKJQ>XN$Xq(Otjm5vk9NhPO* zh+xkpXCNdag6KrJjC;Y3EIPR}2kb~im}BoH*C1q$U6<^z?{XqLg=Ru`#@QmsKwv-w zVToW2M5+a;;e@5@K@c4VB0|P_p>kfRoEIwRQ@P6d%o#lm$vuZ_X7n_c z_B7@Q;+oOZl-$#Z&Lh^I7B@&#PfI;Wk|0h&vINQHq$QPWwxkJek035V3I!=8@{Y9z z|3KXMH{+eSQv3s{z`q&q+M3?ACC+#^D(>B=1dww4S^}gN|2VP7&A{(8@N)@}1pGP! zBv)|z@EZ$oCHT1oNEv>aF#})lFQz5Uz=u$LYngGep%$OSX7uga*;ms9QV!WexT&RW z<01UuDDn9-Np$@q8q7uB-m?T>l6ZfiCg_7bsqU`I-%vP;EWwM1U zjcVlzY1DrFx&=Ri3BnI}FlG4p4O)fx1FYXkh{6@M!j(_>~WM^rdir(P*Vzm!h>Bs|$UZSUNlx`!3#h z1bw@BG_t@l6WPlaS-imgVMJ(Aj1-t2XF^j8W zgqirw6PSa1;NY9Vz%j;zbE5V-gL1sU8Ooi8DH!OWpk!0dZ4wn@FSstL}C{XqbY5DNh0;#XZ}_=9CM~yK#Fq8)q-h!(#kIuQ#S* z>>O;l(PIelvnX~BukrPv#0egi6!X3xJncKzXA8VrtTmoU-W*;BK0w-NO2Najl1jyA z96UybRVCIr{L}itnCtPIFf_os)MV0L1|9=JQBgx$v-7T}k3FQI*HJolzM4m@068DL z3rSL37|}GUuCEmgU0=z0*=l(g0!B5FA>~*;pAU#nEPCnOj6+u%AH#l3m8dtmM1po2 zNfbs>iZ0rBxw)tZb)hEYg3ek>t=1y$I>x9yY>e8d#;E=2mY$;6p28LnPK&ZZ%VT@W zhzBjtl9c)@(t0Y1RyukrNDeCaSi#pE?WxT~f34#yO7?C?PaWxly2;)hEBN}Hp89FZlbZ0#!H$gX|kkFNgE|?mb69Eqk@)45xw=YGrAg3#9KA0l^lE7 znbbmk)Jo2#R$2p~>Uyj3dg}Q0w5L(paxv#kW0Aa9C70N$Au9 zC%0GH<~`?#P`!?NK89isoUvHf*m7{v(fap92Tne5jgcMVY^O~MiNCme)e5qKhw5P}DiZ6E~?q~L)RH;^0zo~UZLaRwYS+sc$x= zF`ERl$!xZe!ge;<&L-PAq&$a|=TN3|D9Je|5(&X#4rMxrGM!5*bIH|wYRwldsLUso z`J^(RvYJm$AEj|TN-B?@C?pnw1;j2Orwb^J1teG?1juCpnT1d;A>=-U9E4CpA(T+a zi3CE(Duf(_P{=EBBzVU=^{#F5l!PFl0HW4 zW5g~dy~U)rnDiEtgT*w1i%Dg%P(dz>$!rPfEg`)nB&E#K#%PJv&?J5en znxw0#Z#8*dO-@%+;;V%e=fY}AD2x&cBY$CJ5k^^sk<&188b%3)k!=_y6h;Y!k(V&a zDvT0ZLuPA8Wi5GGD_T%lOM%u>jCCYfM}l?Kw~hw0js)Q(2&W{&$?1B^Wj*z+r!>}+ zU_F_w7gE@+C)@R8yMdH9kn#q~bOU9&ftKC|ve-cBZlH8GlFCMMwV7I*MGGpMNo6ys zY^JO>lhZ9Um@TBTh1UHR5C@!&X>$5BlzGtW}l9VG!Ig*qk$x9^7WhALY3Kb+2Nw$$>yN#5$k@7ZDp$jq)7gRUgbnM^> zYbRkF;f|=zn_hIlfN(VMF5WJbn0gLV`{ko>b<->L@O9JiG{T)uBt{rgU}yq62zSK1 zeN$&9mu7NlHg9K(Hkan`o*dqj!)++4@ab?SLf1Mg|zJq=vHf$KMPL?Pl)Ed)l;S-hRa+u0oN zqFASPQ50a(+{OEMa}O`@c0QNpb7{WpNrYw*ZR1BAPnm1W6Do`6r^N6J_nZ**H-|oq-|(5y`;|aqtp&BAOx);WBO> z2s@Yu!8JN(!5IS05nhO(lL)*JftNWa?4lF(6kHq;?wSZU;OWj0>CQQkOJRv{S*~!F zE1cz?$Zv#<=Q8KSLGn3YB=IQzMmo0h=0{H?36f7FL_`lkAcPG;1h^&w*F<1WB#8(Q zON7gKSmH1SA_!{{!z2O~A{ZtSs93~w5aBY1kn!oToZ#cLhvO!G8W|71eF&$gPbZkKjRfeJWm`#1LyP@Y$V^iNdui}5$eI7CIi82?eJPn7zPNK<{P+lKUKF_$Y^ZN80IM{QbdE_lU2dX5k6|~yXQ=Jum3x7UO z7=DmBTPUiJ+=^z1Ez1?W6(N9|_arMgaCE!n70NmtAkx`w~9vN4PmK z;EYq^qrm}Z(s({D0AGpCq6+qy@PND$C(WQXREra zo((u#O}N`iI>0-_2&aS-PTfS<89_KLGN3z_Ytkb?KzBTE(}O_3d3pp0I8ToNftY(- z3OKQGf(rpStVKb1Csr_VSb~D^PAoof-AUcftsu#Q>=YzLkW@jO-Br&8zEipv_X0EI zwQUCGi>`4q&Y%)!Z1V+;S~vrllMkZggeZBL(Q_b^t{I?Nl4eV~M^cxh`z0-vv{KMQ zS5G0?7w(s|QqY50JqM}(V78=tBrTP+M$*HAmbrS$NWW~qpe;2$EmnM%Z>i-}eChO@ zd3kS4HlU!ITDw%s(Qv)h$Xh`@us>1_)BR}H%H}L(16on@b*^#UcSC*mnD z*E#OR!85onQ(R?@-Hf*&Kn_B&gyIM#5Xx_`;dc09Fo*zwHLV8_Er2M|2t8H5nL;Q50P+~fIz zRFDv!EgI}wC?Pyo5CV&5iVh%{;n9ImZgn)jqa~ct5lwfo98;UFP=u*Xcd3M_jXP0} zsg1i%V7eX=rZ(MY61H(n{d9*3j14!M?k+i|9=ekxOqz6MA5StTJ!n%8-M7ypHU+7bfsGnb%B_(}+RpwOa^DDC8xjyQ{{SYO6P}wi^ zQ90Sq{Zj=~c8NWa$aNd4CeKdq9Q)=9sLe?st6 zZ_5#RNxJJM!S^hY_EOKftX+)n_o9EM)PL<3p+8shk4b8JQs^y}{Dhl@-WW;mlC*V| z@H=6g(6>suQBspd^jAs#l#Dl1=IJlT_0tgH$Nvi%ceUVq4hh~rTToMxpsmu*6fWhG zS|x3j)U;m8C2f_|v_bYuYL&EA#%YzjX`|GW)GBGK;$c zzE$$3r-hzX(pE`L&q#Yot&+A%YKoL{Nv)E$N^06B{Yq-e5qzuU{UvWz{gRq?3q8|z z>0eT-q^**gc1XF@_m{j?(pE`L&k8-Oq^**go|E>HS|v59`Bwb%Qcu!WNljMSFR4{h zlbk1iSx0|4UaQJe<)i#5JDbciO8Qm2q^**glw8tQNlkWXA0ug;^rQMEZI#p%E#;D0 z6-^NRt&%rMfBurTN@{XQy=3V}@>bQKD&>+l#Y#OzGX!tVmU^;2Rw-|l)TG8CX{)5B zc* z{iYYBUY?}+f?6eQReG|%t+L;AKI z{#Hp%YW`I`m$Z|#RZ^4G_g8jng`R1p)c=gh z<9jr|RpU=dzQQiX_rGMmk8BtDPnLXno#1C^<7w6MKc(?Kl7D!W@PCJ9Kjw2$k8OTJ ze!C|3m-5zSVm+w);m2+f`TSbb-zfFJO`a;{KYCNd8>87*N%?^#}CwBYD#{v3?We{;2pdo5geB;=9Cn|3&&+|LM^EYtGMwT&=%IO@8xnp?{0C-*R5? zw@QB55y9Ui`Fmd!{LPZjzaaP#lAol>AN)+n)qeWeEh3*ENc|NWKmM}NzfH=gYW%-k z92ze{%P&jguQmw%8>PSB{rk{*yrspz`SYRq{^$+Ce^1&sY2!0p5ptF9Z+|h={}|2Q zyK!hfF@F@is{fl>{9cX!K;tiK^?3Ac;ZM!q3@zTm---Oxdb!~Xp|9p=q{c^S9wMy-dVY>uqLB?-rT(8e=a%hz>9=>JmMZ`bypc#XeHJD+>CeEzEO)ltH~s`tnS!K?e(Ty6YowfSf( z6#D-v^LtC<)3ouA*XHL&ZNIrgn3Ux1e1Ol>}vXmYG~UHTx1x{+c!)CEEG3M9XKL#y_X=m$dbntX)q!e=PD>`%kvEo{nkt z{9N%m2>zPI=bxyt`%69uoXcjLA3{9cRSo+k9wd|I{oHf#6Gky<@p*T%=ReDBioyLpj_ zr>tT}iJh@(5@17A)jo+l@ zH&d(sMs2)nKNIJ>dLDRBJ73zg_46lTT2N_cJY@6m-&LA@k2c<|n*3(7h_CkRX!{y{WwUI->^c|PhDSkYw>Oh9=hJ9 zYx(Wf;+JUlOSE`vHNHlx#|};2rpX&M|DRh$e(L$@C)#+bwET{1_AhGkAKQlddsCAS zYWyiJzjK=Z_cZ=fjsJ;O-`jjee6=5Zq4`hN_Qwp3e@EN@@6!BdYv=nd+WWunza{ol z^}c4mrvHdG|95No-mdvutm#kI*5e}Wec$_9{=d@v&DZ94M!Kk%y5Gvz&hNiz@gLR3 z*Q%|zUla;|>UrAsnBdj@)lw~=`?cq%f79N7W@z?jwERBO>ien2zjs{3SMT3%+$(ss z-)__DU#Hb~tv22(TKuQ9@qDStOEmuvY2$lSyFV~#&mT**`h2MA$7%6@pxGyC`A^W~ zA=-R-XzzQMYxy>6^D$b}pZ~dbKcS63U3>m6)XuNJY4z{X;J*erw`Lyt_?k_*m^zYH$x3y~Z zo2iZWs#cFLG=I_B_!evSk8AmVUwhu2rRBd^<6E`;XtZYkTkU;>p~)ZA#`{NY{RV0C z_l%|=qP@>*)Xtx|+WW-|T0MR?Ma+k~e*7#{@ap=0Te9HQ^Y0(E^%Jj+@3Q89i5CBw zHvSu0#QCG1_dnMBpVr26>#ZUm^}cADmjBQ15OTGCS7`CqYy3mn`;%uh`Cqm1y{gTJ zp~dqaBjT(3^#?WnDJ|akFNW?PHv|ZKb$_}>8{brI{8?JQKi2HSHwb^Dm}^f`fKzPygI*sseNCo)BJa6e5aOgpC-TO`@+9EAFpcP_imdu zH2z#o|CTdiJnH+_CGGp+wQ<5;J#Qy=4jun5weNqYO+sHi->BngG zS*fj`C$)T1HU0ZF|1&i{SJVGM8&9DoU!}#{sPWsi_4Xf{Ka=+T{*qR&K&?KJn*aIt ziuqIf!OcG%dcI88&X-3t{zsbr0<9h&9Uppr{X)~P*6MMaHl8~)eyQgFgZUy~^*-+J z+W75S{Sq}kUE`y)`s8ZzL`|Nd@%ftmUQNDE%fD39|56)|MVp_E8oy$u7{9u|*`}@M zTFw7rZT3^y5zqmoc4b?7>_#NQ#Aj7{9tH) zn>Bm<(J-HBmG9{$!K>e&ZM`(qetMVS)%Epv+Wlyx#{czok>41(p49IZC;av`-ZS=J zgpLcT(ev zHD2Xox=V~l@jY6;tr~w><4;Nco)8gV?SIq$E_n5O8I!i(jCo?{?}b(TrCL54HQp+D zRj*X7Ub{3tPx2Mo`B$@ApwE2HKTgX*Dy8f7Nna|7G_t$s_}Um zZ_?~1NZ$J7(DnGqhhjfe*MsgJF@Ci^;+n~uD=Y`zvD~6|4Oc}KbHtz zy+1#$t*0MXiSs8w>c8>4&{y$lelK{ne)}Sa%C|2U_TJL|%T+?I&gTa{6#Si1-W@G? z^?j&upRj*W%CF@KxmquO+9>!@QhqgG==)24{`*3%{FiC@{91cn9k1OlU)J*3=@9-@ zehakqy6p)eSM_*TyC3>slF09FnV&k}^2QBafBqUj_nx8hrMg_>TQxpawR2>8ZyhA1nA8`S%t}CI6D-^CX`t{okPN zA1i(=#`_!Y)nrojY@IN4J)e^N1KRz`XLpKvtLwS4H+c`Wzg_a`e&cY&(EGJkjekw@ z|GrlESNl=Z62YtUH(|Qq)%&5OPQk11dn%ueT0VIiZ`Jrz$)C{vUQYSDEag+55cQiN z>-U`Y_eV>Y4bAt?RKct71+RT9cy&LJbwTjz`tiwa!vC+O|JODCgzuiY>7)qZ^;PVj2~JU>qG>i*%Fwm*IuJ5*oQ=XRf=^FK!8t2Dk< zA_#Ta)tML;gzggRV27f8)rOuasNf=tc zd#?&!tp`=lrIUu{KSAUDHGZz-$3CCUXZmw_LcBOz@L$RsxF3EpG~ORy6}CFXUEr2djB`Itr_ z|B38SRLNU+i}gKx6ZSXB4n>u`b(r`|hq3P&#@;lHed{oC>o9WvVdQzk$nTMVmwkgQ zh@z@KUQ#X}U%vVeg-L}^hS`7LkoM}lQdIe$Dfef!uPdtLrWP^3>bk3_k}nvDs^m-03AwNAQ1rTdiIA(hDXQewVdP7HFY^Dk`sNK| zZ>kXM+g}D$^m_c4M1Jc1k)ldoC9faf7T@&ye?C6{A|Y4jm7>bORbJoJyeX>WOP8GB zP1UcclFuDR?mtX^rWZwiYTr^+`G0Jf^>?exUtRYURrYTUv%W73BmcRqzuMOnRsMf9 zjQoD-U)^^ps_Y+^ay2iCD)|S) ziYov9YyNqCmkzVP+$rOK+y42>VdTFWM(+QL$WQItimLp7DzCrlyi-)k^W^$a>sC=E zFB>Ml`tJ}aeVvXOCVtg0@gEz;e(ErC|6$}ahmns-5bO6=IWR@lID3Z4f9^2;{fF^C zSDt@rUsY7a-#CnX=`j9Nhq1pr%=qpaW_+!~*q<6kK4BRDJ&j`htKWMls_N6)F68RH zjiO3!Iwj=eWrw0lZXM?QH|-GXL*17ss_acJAy@l~qDubBFz*NMzL>#P)qTl-L{tpf z0-Nd2;=!x+tpT{vI#$X0+^3 zRLQNEg#SOt4n>vR^tiCcf8?0|Pf;ab`i79dA?1o*m;Xh~|8&`*sFIIq67g026;<-r zWc_ZE9f~UX*kS71BiHw>(m+vVfA=u48BZXF7y}exFodBGMC39k zh0r{RQI5dUAR@gwdw=ipd~?54-FKR|)?0n=Kl|>_{_Wqee?$FhI91peLc%{@Vs@N2 zLBgIDjPJZ4|MX`coqsy>(KSWw=kbR``C*s!&r}DHu;)9PeS-T#!XBm8KUfzbVNd<| zjDCTHJsM*9f7byd?D2+XztsUG>?{WiGlFqG$KPi+*b@$Pd+7Q+vadsS_@iC?eC5UT zJUhRiE2Z~MvHj;`?Rq}WTiE_=fqi#+9*q4r`B-2hsB??Ek55 zTR$-`*uI>e@8bAwOwZ%9|7`{J+jHyo`11SQj-clg+5RhfK9B2nEB!u!?cBd?pZ&}B z_^|zbYCqeb{LuVyTwpu*Kfe#{D>Q!DelY!Bg6&@_uwV0z)eq+t>_4->e_iTdZr`id zS^wgBCeD9_>3Y=4LPkL~Xl z*r!ncvVYO~w^u=Yczxsix2ETT`TdaZ(eJ_7z8O8=#rEO!{5;zS((~|af12hO+qW<9 zf02$a?7u%fZ_W18X#BGMH99`9ecOSy{$TxO`z{6cJSl>bVB zeE|KQk@Fu%>j&F+r1h8We0*j5qJsSIE3nThD1UlE{QjxHUN5lEr{CLf`>vt&jqQ`@ z_`~*l3(7yD!2cf$?2i@Xe|drbskHy#^M`JlpCjmf^SjaW(2wwXHNw_^Ja@wOhhDV# zi|Y!P(0KR{8sC0e+9QVe_l3G#!l3R8UT~+?2fq(!oM$@UH@%0(E%H5Ru%*X!iZg!I zUjO-#Mm#DiAbJivLZs?TiUe-fQ1DE}*j{})R7*MG7`Ogvl;k)JHS9O2PQ^*@WYwHYt*QCn-t|{ zW4(tg>z|7HZ?}ilAJ;We9?J@yud%&I-@xxj<9Y(*$tB}A(eEeYd|K%O}ztExoPw09-;s#mN{*6Xi{BXVq zKgc5g9Zxs^;cy^XVGp`Z|$r9&pPz~*JW0J>}$CERdoK_ z*Yn*u^nR^9==ach!TxNoliK_DZvXum?%)2~6tnwnYOa2ezGLUpc#Z;ct%L$3w?DGR z^1Rz2vj>eQ&RIGR(o-$n_Z>inhd#Q7yzA%XkmteCWqOPGKjk`PdX@R_>>D!3i^)Ga z+WfC{4w)}BewK4cF8^HLf8p{0WVi2Yp+i#fLH=`l9%3UmKqf1U<9q-T`%C15;}-ND zd4>67KL*)j_kWcC8)fV7zt6EVOU-5hqFG$X3 zwYL*?NKU8p%S8VV`LeYO{SL|bTp|29ozhkNt0mh%+UtpSL#pzaCu00^I;E@nM>muk z7Zrb=591qBmB(C`UvmCj(_#Nj>@fb{?XdjpRhy@$`2dB?-!=ZK2MiMT{Se1JI;_8n z{~;ykkMggT9RJF{Uedqe>9B4=B0fd3`Z0~)sb%B0h4u4fuP9`EdheY3zxFZJKPfr? zRsSWo+WIlr+XcB+e;jJzlhs~iDT{il`ezh;NyPn91$ zW9`De1CpDe{AZS|zw*yY_Mh@^m7KrIe|CrUpHtF5d&}Y+dSD?r&PvaGo}hmqReI+0 zyq-AjLk725y)bVe**|#4(oJ*&WVFOM)(c4XSMgs|GJeWGd(+Ctej1X?kA7?Ewr~Sv zQu6p8Eh|?JmkV9hKlkU@5jRNqLB>8$ah)F$_97X1KjS_XWL9$iryo=MyAq2l#v>%R z=cW$#KPvuN$^OrtwBy7m-#S!LvlW< z{gsmOkDs%0aD4$Xc+5DChmd8uJ1u|oTPqz?{RLF zEWcZgA6a0#Arj@cr_!40zi@@M3&%4^&Pn+~bmkX(+^Rry^PTm7+aL2^FI zzf#ga_4gIwz9}S^BlT5QPaO9kReIhBG&-C=!Jf8GPWJ*KgVDw(IEUnQtl{s2LcJhW z{h6!yM;)%8amn@Xc5(cAqr?5r>JI&@CC8tN-;kL$u5i4AEF1sPW&Jx`ebK8JwnAV zDS7_d`k2OFvt;~L{j-wsYk4_?JR*=i0V?=MmEU!VjX$i1keuDLk7@m^lq_G>Klr}Y zAMt?X`Y#a2Urwj=B^~-VKc@Xl@GWaU)(uE*hl*dd!}!naaQ&Fwp?|Hz`p@aG{CQ>l zZ?JW4p?3^qI^XyV=a6OlZ&Ate!{s(kaD5Dt%Tc--KlKjd-ze$7>;kJl)+b0+U$(3I zXC;px%70nO_$&YJlKu~Oxc;c}np!(a z|E^2RtxGEY(@K^fzHQ}f?Hvo54zlr&=fEI&9L)4`Fz+CFoGAT?4%eTG#|iTiQkBPi zc8B%v^7n;fe+0?pD1ALd^P^6CC6{{l#M_9P6o18(qEMymE6Av_gVRv z_mHZ;nE#@~@f-O2+HrpaGAUXAMIH8EcD=P9g|Oe$vPIarqNP{F0W{AJ2n8vVU~2jkB}e0GVxVd?)9Se19=H!O~sr=^%rXjDN;C zq^mumBIZw4^7t9tZtcW#E0D483oxD`dkXe{YJFV4*uUPPf4;)%kM|)!ayig>{v;b) zocHqtkkP)zKkXb6`9SU=#!u$s67wArevol)^~d=IBqG(`Ll@pd6z zkSG_jD#jn|MKTiOPx*2Eo1*^8pSe1IPc7O0=nvL^6Fg(cY_N@=O`St>923$0@HNX9 z$5Y6){MWN`cJp!|qmjnPJBM6r9Hv$do)3Y{?lX>g59!(Uh-qT{&ny|gV7`@ubrEu2 zN&jT7`Q!Ku*;7IKhsV#m9Ugz;-7U^%csY>a{k_MJ;~$Im=fa42wFffAEs^AKn)PNyYT2 zT)$d}>u+#X@8h(mz=D7B$i`32(?KTVjqm6j66*`HO<%F{u|7h=&XU`of5ytW$P+@Q zQ;i?u9FmWpi8z0$`f(NO1N$m);sAmInOL5K5ic!&P=KF%L*zuG@! z->~+hzai0X$Y-{_cFn)I?)Qbnbi7x72E9-0+ut!eeh>Qav8Lm>;bWJN7#J)c(^!4X z6KnE)>J+mN_X5vbwcCcHe|X@GmfNpx+3&M4FJ7egjpY-~AN9NcHA|1<495fQDl03Q zr3}eokn2r<{}=W@lq^UK-Ve4zW*#9qBL8LXkM>cr!u+?*%me3#p=SUc^~bzjdlkbhn>|M8T6XvGD{AMwGy3i+3<|9X@^*B|*~ejxv{^&jr} zqu!iFzUKdlg8X^@_BH=`c9;#qo`Bdtm`|ub;z-GY zc?IkAj|=ig{jomxHUFJ5^FaLJkM*Ib{%Jw|w=c-QsQyLy5BL2i;tRRC;Ar2`CEu@? zi}$;|Avp4X;_YkJ{EPVs&T@{wKLg_ha-QJupZq(^ANw$HmWxC_%LIpiUb6m)?{g=( zBV;5v^50~!?JJ9ZFEd-zbF_2B7qZKrN5*wvNR-R+FK0iz24UPl4ie)B`>chtt^U}j zbH30|_WUuQAg2iqzc+tk`Qv^bILqlGpPJzCAH1+!{^yE(W(tn{2hO$pi_Ygqf5qaD z=O!U13Xc3QEBSuJX=41$6dd_4Ejj)V@i<`r3VE2|$p4om^GABfarFN9rS!dlkltq( zt*~`M9Up3MwXahL(D~qIyIViv_^{Udr=R`k{J&1$OL&{~mp^Iw6W&Yu3v{mdWh#-S8%Pxk*zeD!gQFRs5o zNAXxp-+S2UbxV)q!l&qc;-`@RFtT&QcBS_JmBw2{_Q|CGFVcTO{@atC%ir>A)*o1B z_idWKl_z9(s!i!-9`F_q(4Ib_fmX*NZ)suMaR20 zms-5AkK_8^K*yiCq<{FB`D49(h~obN)#u-+zrI5C|28ML1KiTeK-`aa(&q^I=#nnx+Wh4g)-BdC5y{ml9o`?R_AJ(HaL zS$~oIxj#Q{Ju5q2xFWBuf7IXJgE^V)&%7$`_T01H<^y1_UA7NpzqZx@A+NIL))q*iFpa*;bSCL%lfIaa7d3jn^@jBQ z$6=&zO8T7V+w1=n9q*nc{cE(}PTnzpT>ttF&9BK6kCmivOz+SB623cvyBIF@3WIX2*32NGw0$PkOgwxl4o{%VsX@ zs7JK0_x!QXPlX-pN^o!Q{y1*M!j5)k!j5?xJY@MphwNESZ#FyX1Bqoh7XDafGhu%| zY@eUAkAGrKm)`YP8q?yW%uoO4%E;=0>zg;y`RpT? znjP2ME;-fo;qE_gsOgAb{5jLnuG=na_g_KRgAS+T!wZL6derAldj4qdP0WsQy!=z9 zV| zT}ArIq+dY#nWX=j`tNwMpGNvz(yt+XD(UBtehKMElm0c*Yown}`uU`%qz|NdeI$*~ z$+T{rO8R>Aec5kQ{#TNIBIz^!*uFkpNcM9#vi`^XUZ3tKoL}%=#;0k1pF!87U!wK; zpXqwe6;%F;53IgeXE&z(_N%$saU9;2^1qkn^TPWr{UD!@i%EZr>VMz>iwDZzh|UKZ z^u3vNsD39=`@cZ?I6CeeK<6h@=s5E^+E2ev`Tc_8H-Yx=d(iRYVLBeZM0%C-TR`LI zPqe--8{NKsJWKj|6u+gbtUs_G)oDG>Xuh0D&pqUn-+Q#)9Yg)`{HE>oJBY@|`Y*SS zr|8rh*Nl|be#_QK=v`5}ULn0odX4lt=?&7Gq_;@#+MmiNy-IqG^g8Jc(wn5WTu)B0 zcw~2b`L0JNw(E)ONFUx~cIXM|x$6<~r~HC{Y|lR;Js~}F9pyy}+Wmu*+V#kFq)$CP z^x!8{f4_ePdro>Zzde2GdU~4056_K9h~M$;=>v*y;&!CZNDoe+_K=>Co{=8JOu75KvsaxMSw+W8pH zA0bhH_~AG+^bfYK;JhxlrT6nW_~X14aya>CKm2Ha)CY1)@(*tMXn&kvVjp!Sa7+zj#YcNsk=6WwF+!*L4|{%Ak=jpUz* z@-c28F=`-p3EhN8E9q#?K*z|6=}wJiaV3 z|A&mZam~M&7dX!xE%@p!dr$w%J$mO)(f(@_FX(;R2ZHZL*Ezs%xYx!P`XBY2BRHqW z`5UJP=Qv4ZUA( zr}H83ZpsJi&g+8Dq5FzR|7%K*@qfPHS5rPnKT7bGln>_F@2S0*KVPTxSdXST$GpHg zGkTx)e#iWeDLvMeF6tNL*G(Mrb1u~f{3gM#6MTW-vjpFl;)!yu&zN3ruS5CKjj_`qub?1kIKT6N*BK^P8bGzWnFSq>h`zQ3 z1>fZvOCNeZNI&Hz<71s;-|%I@r@e0J$5Hxg-ZDPkImY7)f-ic{(odlDXRTw;xo%Co zzJc*=oMZp7Q1D-mvh>?h`lq)rKG8Y$XYUEVcpFRqNlL%X&c?TMj{RAcxSM;#>GT{u z*1rJ_iwDLF_!S2jM|-gj-9qOVxCV%S$ai#xL@@>2c#2zexW9r3YWJ$kJnefdBerX$*D|D}{Zb3UE!qk^9& z_(jA~?!O3L7yNp`ZxsAC!50XApWu%Q{_lc!3;v4WD+PZ?@V^K?n6AGg&Kn6nO7Kwd zPYS+^;Cl;xkl=?4K1J{o1fM4OS%S|J{8GWMAnwy*EwSS3?elHo9MiF18M%|`I9~5Y zzmIu>?#KTf`CoZ~`C}b?@*hmcapt(sn~vkf)ss!f@p5vv>7m#B^jW4Ozj=q4j{HW@ zb0i~bW*_1HL+N>eL+Soa{B28*_79t2I*wbrQanbDZ@16d%XI8ZE_uLo98ad4Xgb=v z=_96N-Td*^rlY(K$F=KAsJ|L?e{K2MmVSh{_Z7--CdKFO=PW(qyL^f1sPDMzO-DSo zqyD~$`fKHtmLB`#PakJG+I#P7rjPadvH1HRm>tKv>!`eNp4qYQnDs5wQQl{%KfW}| z?AXshEe(ZQ+{))f3Hf-AN4(DWP5p^q5H*`Pcu9A5v!>GI37b!ZBPH# zFPM&ahBW>k*tEU;rPSUj)W7G`cv-o(`D6V4^eodyc*Q2}U^>==v#7i)sDJLD`IFFi z`TgORALje+G(JyT-}b-Qr$0jR-uZ6xNB__)RvzZ}{$s8FI8Qn30<(|w_PqCm>DWK7-qCdQ|B?&a(@*%L={P^z$yKIf{rS#qrel4&gYtWn=KrnxSbEI2NynLv`TYqx-mIkOxw?+D z^l0Cx8%@W0v<>yw3snAas_#DZyv0G(-b;sA{4pOr3_T*G>s&ns`sZhKz3n-=9*E?e z?yq!x5a}MI>wtXUL8Uu@uD>DOQmWr(^qh=Jw*@^Pf^?5jerJgGa=IBM)16f^-MJ;x zeYs@1StZjYBHiPmjaTe<5HFTP>9}(<9cPh#Q%VQUa?x-r7yAOXLqF*WyFQESso*RZ z++z7*-m@M0ll1%>ILq_ATwFh4JM?ww`AKk=GfJlGru_xy1AWq-)?Tbz;4D91GTp^v z%Z-E6OXhc1$@WekYUSd3D%T(S`g9)_oaNUau4KQ za)*lbj`MryWoz#cHjqC1V2d-()5zST-XrF9PXhnv@sj1HU$k;@Jmq|#A3)~`;4IHC z8JF?2@8^7=ryGQ7cb+@E1P^p)3Jxj2snXL%0ouhS-LGXk^r8D& zJBrp_q+d(ohU!{|e$XF*{s{C(pg#ir5$KOVe+2p?&>w;R2=qswKLY&`=#RkvlnB%Y zE?d)7JeLERt=Bv6>gt`xBYWqK&3os;_}+Qfw!QOE@c1xGkINj8+2OtO_=w(lB6uoz zCU`D*@Y&wW%>|D>*L(U*@Lcde7BUn(5 z5j+(<6Fe6@I9k+S@JR4j@I>%b@J#Sr@L-Clzu=MJvEYf|so7d-g9sK4Ne*l(nQ zXM*Q~2V&n63LXg_3!Vs`3Z4rdh<#2dc%=A;Kks$_Srt4Mye4=ecwO*R@P^=-;7!4E z!CQg{fsIe>%OSf24+XCX9tmC*JQlnrcp`XR@Ko@I;F;h}!E?b|f(HXc`~?pMuLvFq zUKKnRye4=ecwO*R@P^=-;7!4E!CQg{>xlRZ9tvI&JQBPrcr18L@I>&s;HlsZ!85^| zg6D#_1P|5uso=5TiQuW=nczWH9IpkB1djzz1WyIe1kVKz#Cduscr17#cq(`xuJd#W z9tvI&JQBPrcr17#cwO*R@P^=-;7!4E!CQg{gT#6zcqn*9@JR5g;IZH}!4tvjf~SHv z1kVI-3Z4tz5#BP1+NL72woRF6}%yM zCU{fuT=16Q!4MID!9&3-f=7Z^1&;-<37!aE7d#cbA$TTuQ}A5ymf*p9BL0Ghf>#8O z1g{Dn3tkgE5xg#VDtJTirr^2YEy07KBF=(`f>#8O1g{Dn3tkgE5xg#VDtJTiOz@`Q zx!^6qgY`xH1rG(U2p$Pu6+9NaCU_!vUGP-!hTxgtO~G@)TY?80i1-U03SJRB61*yS zEO<@uMDV)cso)L4Gr^mJ=YqEc4>lC>7d#ZaB6uWtRq$Bwn&64xb-`1?8-izoHwDiH zZwVf3B;qf4D0oHiNbsuQvEVhq6T$0(r-C;G&jfD@o(tX*Joq~if5Ah+D}qOYR|Ss+ zuL+(AUKczSydiidcvJ9P@Rr~~SMTu;1+NGm30@UE7Q7~SB6wZ!RPcu2ncz*qbHQ7J z2OIYu=PtoR!7GACf>#BP1+NL72woRF6}%yMCU{fuT=16Q!6qX9f`@`v1djx-3LXny z6Fd>TE_f<#8O1g{Dn3tkgE5xg#VDtJTiOz@`Qx!^6q zgW)3nf`@`v1djx-3LXny6Fd>TE_f<#8O1g{Dn3tkgE z5xg#VDtJTiOz@`Qx!^6qgOMWsf`@`v1djx-3SJXD5xg#VDtJTiOz@`Qx!^6qgHa;R zf`@`v1djx-3LXny6Fd>TE_f<#8O1g{Dn3tkgE5xg#V zDtJTiOz@`Qx!^6qgH1*J1rG(U2p$Pu6+9NaCU_!vUGP-!hTxgtO~G@)TY?9hiTDd1 z3SJRB61*ySEO<@uMDV)cso)L4Gr^mJ=YqEc55|c23myty5j+ySDtIh-P4GnUy5Onc z4Z$&s;HlsZ!85^| zg6D#_1P{iE_zNBiUJ*PJyefDscunv`@Vels;0?hu!JC5Tg0}?k8sB^TL%}P8M}k)c zj|Hy@o(NtSJQchlcqVvL@Lceg;K796=12" + }, + "os": [ + "linux" + ], + "cpu": [ + "x64" + ] +} diff --git a/node_modules/@octokit/auth-token/LICENSE b/node_modules/@octokit/auth-token/LICENSE new file mode 100644 index 0000000..ef2c18e --- /dev/null +++ b/node_modules/@octokit/auth-token/LICENSE @@ -0,0 +1,21 @@ +The MIT License + +Copyright (c) 2019 Octokit contributors + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/node_modules/@octokit/auth-token/README.md b/node_modules/@octokit/auth-token/README.md new file mode 100644 index 0000000..a1f6d35 --- /dev/null +++ b/node_modules/@octokit/auth-token/README.md @@ -0,0 +1,290 @@ +# auth-token.js + +> GitHub API token authentication for browsers and Node.js + +[![@latest](https://img.shields.io/npm/v/@octokit/auth-token.svg)](https://www.npmjs.com/package/@octokit/auth-token) +[![Build Status](https://github.com/octokit/auth-token.js/workflows/Test/badge.svg)](https://github.com/octokit/auth-token.js/actions?query=workflow%3ATest) + +`@octokit/auth-token` is the simplest of [GitHub’s authentication strategies](https://github.com/octokit/auth.js). + +It is useful if you want to support multiple authentication strategies, as it’s API is compatible with its sibling packages for [basic](https://github.com/octokit/auth-basic.js), [GitHub App](https://github.com/octokit/auth-app.js) and [OAuth app](https://github.com/octokit/auth.js) authentication. + + + +- [Usage](#usage) +- [`createTokenAuth(token) options`](#createtokenauthtoken-options) +- [`auth()`](#auth) +- [Authentication object](#authentication-object) +- [`auth.hook(request, route, options)` or `auth.hook(request, options)`](#authhookrequest-route-options-or-authhookrequest-options) +- [Find more information](#find-more-information) + - [Find out what scopes are enabled for oauth tokens](#find-out-what-scopes-are-enabled-for-oauth-tokens) + - [Find out if token is a personal access token or if it belongs to an OAuth app](#find-out-if-token-is-a-personal-access-token-or-if-it-belongs-to-an-oauth-app) + - [Find out what permissions are enabled for a repository](#find-out-what-permissions-are-enabled-for-a-repository) + - [Use token for git operations](#use-token-for-git-operations) +- [License](#license) + + + +## Usage + + + + + + +
        +Browsers + + +Load `@octokit/auth-token` directly from [cdn.skypack.dev](https://cdn.skypack.dev) + +```html + +``` + +
        +Node + + +Install with npm install @octokit/auth-token + +```js +const { createTokenAuth } = require("@octokit/auth-token"); +// or: import { createTokenAuth } from "@octokit/auth-token"; +``` + +
        + +```js +const auth = createTokenAuth("ghp_PersonalAccessToken01245678900000000"); +const authentication = await auth(); +// { +// type: 'token', +// token: 'ghp_PersonalAccessToken01245678900000000', +// tokenType: 'oauth' +// } +``` + +## `createTokenAuth(token) options` + +The `createTokenAuth` method accepts a single argument of type string, which is the token. The passed token can be one of the following: + +- [Personal access token](https://help.github.com/en/articles/creating-a-personal-access-token-for-the-command-line) +- [OAuth access token](https://developer.github.com/apps/building-oauth-apps/authorizing-oauth-apps/) +- [GITHUB_TOKEN provided to GitHub Actions](https://developer.github.com/actions/creating-github-actions/accessing-the-runtime-environment/#environment-variables) +- Installation access token ([server-to-server](https://developer.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-an-installation)) +- User authentication for installation ([user-to-server](https://docs.github.com/en/developers/apps/building-github-apps/identifying-and-authorizing-users-for-github-apps)) + +Examples + +```js +// Personal access token or OAuth access token +createTokenAuth("ghp_PersonalAccessToken01245678900000000"); +// { +// type: 'token', +// token: 'ghp_PersonalAccessToken01245678900000000', +// tokenType: 'oauth' +// } + +// Installation access token or GitHub Action token +createTokenAuth("ghs_InstallallationOrActionToken00000000"); +// { +// type: 'token', +// token: 'ghs_InstallallationOrActionToken00000000', +// tokenType: 'installation' +// } + +// Installation access token or GitHub Action token +createTokenAuth("ghu_InstallationUserToServer000000000000"); +// { +// type: 'token', +// token: 'ghu_InstallationUserToServer000000000000', +// tokenType: 'user-to-server' +// } +``` + +## `auth()` + +The `auth()` method has no options. It returns a promise which resolves with the the authentication object. + +## Authentication object + + + + + + + + + + + + + + + + + + + + + + + + + + +
        + name + + type + + description +
        + type + + string + + "token" +
        + token + + string + + The provided token. +
        + tokenType + + string + + Can be either "oauth" for personal access tokens and OAuth tokens, "installation" for installation access tokens (includes GITHUB_TOKEN provided to GitHub Actions), "app" for a GitHub App JSON Web Token, or "user-to-server" for a user authentication token through an app installation. +
        + +## `auth.hook(request, route, options)` or `auth.hook(request, options)` + +`auth.hook()` hooks directly into the request life cycle. It authenticates the request using the provided token. + +The `request` option is an instance of [`@octokit/request`](https://github.com/octokit/request.js#readme). The `route`/`options` parameters are the same as for the [`request()` method](https://github.com/octokit/request.js#request). + +`auth.hook()` can be called directly to send an authenticated request + +```js +const { data: authorizations } = await auth.hook( + request, + "GET /authorizations" +); +``` + +Or it can be passed as option to [`request()`](https://github.com/octokit/request.js#request). + +```js +const requestWithAuth = request.defaults({ + request: { + hook: auth.hook, + }, +}); + +const { data: authorizations } = await requestWithAuth("GET /authorizations"); +``` + +## Find more information + +`auth()` does not send any requests, it only transforms the provided token string into an authentication object. + +Here is a list of things you can do to retrieve further information + +### Find out what scopes are enabled for oauth tokens + +Note that this does not work for installations. There is no way to retrieve permissions based on an installation access tokens. + +```js +const TOKEN = "ghp_PersonalAccessToken01245678900000000"; + +const auth = createTokenAuth(TOKEN); +const authentication = await auth(); + +const response = await request("HEAD /", { + headers: authentication.headers, +}); +const scopes = response.headers["x-oauth-scopes"].split(/,\s+/); + +if (scopes.length) { + console.log( + `"${TOKEN}" has ${scopes.length} scopes enabled: ${scopes.join(", ")}` + ); +} else { + console.log(`"${TOKEN}" has no scopes enabled`); +} +``` + +### Find out if token is a personal access token or if it belongs to an OAuth app + +```js +const TOKEN = "ghp_PersonalAccessToken01245678900000000"; + +const auth = createTokenAuth(TOKEN); +const authentication = await auth(); + +const response = await request("HEAD /", { + headers: authentication.headers, +}); +const clientId = response.headers["x-oauth-client-id"]; + +if (clientId) { + console.log( + `"${token}" is an OAuth token, its app’s client_id is ${clientId}.` + ); +} else { + console.log(`"${token}" is a personal access token`); +} +``` + +### Find out what permissions are enabled for a repository + +Note that the `permissions` key is not set when authenticated using an installation access token. + +```js +const TOKEN = "ghp_PersonalAccessToken01245678900000000"; + +const auth = createTokenAuth(TOKEN); +const authentication = await auth(); + +const response = await request("GET /repos/{owner}/{repo}", { + owner: 'octocat', + repo: 'hello-world' + headers: authentication.headers +}); + +console.log(response.data.permissions) +// { +// admin: true, +// push: true, +// pull: true +// } +``` + +### Use token for git operations + +Both OAuth and installation access tokens can be used for git operations. However, when using with an installation, [the token must be prefixed with `x-access-token`](https://developer.github.com/apps/building-github-apps/authenticating-with-github-apps/#http-based-git-access-by-an-installation). + +This example is using the [`execa`](https://github.com/sindresorhus/execa) package to run a `git push` command. + +```js +const TOKEN = "ghp_PersonalAccessToken01245678900000000"; + +const auth = createTokenAuth(TOKEN); +const { token, tokenType } = await auth(); +const tokenWithPrefix = + tokenType === "installation" ? `x-access-token:${token}` : token; + +const repositoryUrl = `https://${tokenWithPrefix}@github.com/octocat/hello-world.git`; + +const { stdout } = await execa("git", ["push", repositoryUrl]); +console.log(stdout); +``` + +## License + +[MIT](LICENSE) diff --git a/node_modules/@octokit/auth-token/dist-node/index.js b/node_modules/@octokit/auth-token/dist-node/index.js new file mode 100644 index 0000000..af0f0a6 --- /dev/null +++ b/node_modules/@octokit/auth-token/dist-node/index.js @@ -0,0 +1,55 @@ +'use strict'; + +Object.defineProperty(exports, '__esModule', { value: true }); + +const REGEX_IS_INSTALLATION_LEGACY = /^v1\./; +const REGEX_IS_INSTALLATION = /^ghs_/; +const 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: token, + tokenType + }; +} + +/** + * Prefix token for usage in the Authorization header + * + * @param token OAuth token or JSON Web Token + */ +function withAuthorizationPrefix(token) { + if (token.split(/\./).length === 3) { + return `bearer ${token}`; + } + + 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); +} + +const createTokenAuth = function createTokenAuth(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) + }); +}; + +exports.createTokenAuth = createTokenAuth; +//# sourceMappingURL=index.js.map diff --git a/node_modules/@octokit/auth-token/dist-node/index.js.map b/node_modules/@octokit/auth-token/dist-node/index.js.map new file mode 100644 index 0000000..af0c2e2 --- /dev/null +++ b/node_modules/@octokit/auth-token/dist-node/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sources":["../dist-src/auth.js","../dist-src/with-authorization-prefix.js","../dist-src/hook.js","../dist-src/index.js"],"sourcesContent":["const REGEX_IS_INSTALLATION_LEGACY = /^v1\\./;\nconst REGEX_IS_INSTALLATION = /^ghs_/;\nconst REGEX_IS_USER_TO_SERVER = /^ghu_/;\nexport async function auth(token) {\n const isApp = token.split(/\\./).length === 3;\n const isInstallation = REGEX_IS_INSTALLATION_LEGACY.test(token) ||\n REGEX_IS_INSTALLATION.test(token);\n const isUserToServer = REGEX_IS_USER_TO_SERVER.test(token);\n const tokenType = isApp\n ? \"app\"\n : isInstallation\n ? \"installation\"\n : isUserToServer\n ? \"user-to-server\"\n : \"oauth\";\n return {\n type: \"token\",\n token: token,\n tokenType,\n };\n}\n","/**\n * Prefix token for usage in the Authorization header\n *\n * @param token OAuth token or JSON Web Token\n */\nexport function withAuthorizationPrefix(token) {\n if (token.split(/\\./).length === 3) {\n return `bearer ${token}`;\n }\n return `token ${token}`;\n}\n","import { withAuthorizationPrefix } from \"./with-authorization-prefix\";\nexport async function hook(token, request, route, parameters) {\n const endpoint = request.endpoint.merge(route, parameters);\n endpoint.headers.authorization = withAuthorizationPrefix(token);\n return request(endpoint);\n}\n","import { auth } from \"./auth\";\nimport { hook } from \"./hook\";\nexport const createTokenAuth = function createTokenAuth(token) {\n if (!token) {\n throw new Error(\"[@octokit/auth-token] No token passed to createTokenAuth\");\n }\n if (typeof token !== \"string\") {\n throw new Error(\"[@octokit/auth-token] Token passed to createTokenAuth is not a string\");\n }\n token = token.replace(/^(token|bearer) +/i, \"\");\n return Object.assign(auth.bind(null, token), {\n hook: hook.bind(null, token),\n });\n};\n"],"names":["REGEX_IS_INSTALLATION_LEGACY","REGEX_IS_INSTALLATION","REGEX_IS_USER_TO_SERVER","auth","token","isApp","split","length","isInstallation","test","isUserToServer","tokenType","type","withAuthorizationPrefix","hook","request","route","parameters","endpoint","merge","headers","authorization","createTokenAuth","Error","replace","Object","assign","bind"],"mappings":";;;;AAAA,MAAMA,4BAA4B,GAAG,OAArC;AACA,MAAMC,qBAAqB,GAAG,OAA9B;AACA,MAAMC,uBAAuB,GAAG,OAAhC;AACO,eAAeC,IAAf,CAAoBC,KAApB,EAA2B;AAC9B,QAAMC,KAAK,GAAGD,KAAK,CAACE,KAAN,CAAY,IAAZ,EAAkBC,MAAlB,KAA6B,CAA3C;AACA,QAAMC,cAAc,GAAGR,4BAA4B,CAACS,IAA7B,CAAkCL,KAAlC,KACnBH,qBAAqB,CAACQ,IAAtB,CAA2BL,KAA3B,CADJ;AAEA,QAAMM,cAAc,GAAGR,uBAAuB,CAACO,IAAxB,CAA6BL,KAA7B,CAAvB;AACA,QAAMO,SAAS,GAAGN,KAAK,GACjB,KADiB,GAEjBG,cAAc,GACV,cADU,GAEVE,cAAc,GACV,gBADU,GAEV,OANd;AAOA,SAAO;AACHE,IAAAA,IAAI,EAAE,OADH;AAEHR,IAAAA,KAAK,EAAEA,KAFJ;AAGHO,IAAAA;AAHG,GAAP;AAKH;;ACpBD;AACA;AACA;AACA;AACA;AACA,AAAO,SAASE,uBAAT,CAAiCT,KAAjC,EAAwC;AAC3C,MAAIA,KAAK,CAACE,KAAN,CAAY,IAAZ,EAAkBC,MAAlB,KAA6B,CAAjC,EAAoC;AAChC,WAAQ,UAASH,KAAM,EAAvB;AACH;;AACD,SAAQ,SAAQA,KAAM,EAAtB;AACH;;ACTM,eAAeU,IAAf,CAAoBV,KAApB,EAA2BW,OAA3B,EAAoCC,KAApC,EAA2CC,UAA3C,EAAuD;AAC1D,QAAMC,QAAQ,GAAGH,OAAO,CAACG,QAAR,CAAiBC,KAAjB,CAAuBH,KAAvB,EAA8BC,UAA9B,CAAjB;AACAC,EAAAA,QAAQ,CAACE,OAAT,CAAiBC,aAAjB,GAAiCR,uBAAuB,CAACT,KAAD,CAAxD;AACA,SAAOW,OAAO,CAACG,QAAD,CAAd;AACH;;MCHYI,eAAe,GAAG,SAASA,eAAT,CAAyBlB,KAAzB,EAAgC;AAC3D,MAAI,CAACA,KAAL,EAAY;AACR,UAAM,IAAImB,KAAJ,CAAU,0DAAV,CAAN;AACH;;AACD,MAAI,OAAOnB,KAAP,KAAiB,QAArB,EAA+B;AAC3B,UAAM,IAAImB,KAAJ,CAAU,uEAAV,CAAN;AACH;;AACDnB,EAAAA,KAAK,GAAGA,KAAK,CAACoB,OAAN,CAAc,oBAAd,EAAoC,EAApC,CAAR;AACA,SAAOC,MAAM,CAACC,MAAP,CAAcvB,IAAI,CAACwB,IAAL,CAAU,IAAV,EAAgBvB,KAAhB,CAAd,EAAsC;AACzCU,IAAAA,IAAI,EAAEA,IAAI,CAACa,IAAL,CAAU,IAAV,EAAgBvB,KAAhB;AADmC,GAAtC,CAAP;AAGH,CAXM;;;;"} \ No newline at end of file diff --git a/node_modules/@octokit/auth-token/dist-src/auth.js b/node_modules/@octokit/auth-token/dist-src/auth.js new file mode 100644 index 0000000..b22ce98 --- /dev/null +++ b/node_modules/@octokit/auth-token/dist-src/auth.js @@ -0,0 +1,21 @@ +const REGEX_IS_INSTALLATION_LEGACY = /^v1\./; +const REGEX_IS_INSTALLATION = /^ghs_/; +const REGEX_IS_USER_TO_SERVER = /^ghu_/; +export 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: token, + tokenType, + }; +} diff --git a/node_modules/@octokit/auth-token/dist-src/hook.js b/node_modules/@octokit/auth-token/dist-src/hook.js new file mode 100644 index 0000000..f8e47f0 --- /dev/null +++ b/node_modules/@octokit/auth-token/dist-src/hook.js @@ -0,0 +1,6 @@ +import { withAuthorizationPrefix } from "./with-authorization-prefix"; +export async function hook(token, request, route, parameters) { + const endpoint = request.endpoint.merge(route, parameters); + endpoint.headers.authorization = withAuthorizationPrefix(token); + return request(endpoint); +} diff --git a/node_modules/@octokit/auth-token/dist-src/index.js b/node_modules/@octokit/auth-token/dist-src/index.js new file mode 100644 index 0000000..f2ddd63 --- /dev/null +++ b/node_modules/@octokit/auth-token/dist-src/index.js @@ -0,0 +1,14 @@ +import { auth } from "./auth"; +import { hook } from "./hook"; +export const createTokenAuth = function createTokenAuth(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), + }); +}; diff --git a/node_modules/@octokit/auth-token/dist-src/types.js b/node_modules/@octokit/auth-token/dist-src/types.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/node_modules/@octokit/auth-token/dist-src/types.js @@ -0,0 +1 @@ +export {}; diff --git a/node_modules/@octokit/auth-token/dist-src/with-authorization-prefix.js b/node_modules/@octokit/auth-token/dist-src/with-authorization-prefix.js new file mode 100644 index 0000000..9035813 --- /dev/null +++ b/node_modules/@octokit/auth-token/dist-src/with-authorization-prefix.js @@ -0,0 +1,11 @@ +/** + * Prefix token for usage in the Authorization header + * + * @param token OAuth token or JSON Web Token + */ +export function withAuthorizationPrefix(token) { + if (token.split(/\./).length === 3) { + return `bearer ${token}`; + } + return `token ${token}`; +} diff --git a/node_modules/@octokit/auth-token/dist-types/auth.d.ts b/node_modules/@octokit/auth-token/dist-types/auth.d.ts new file mode 100644 index 0000000..dc41835 --- /dev/null +++ b/node_modules/@octokit/auth-token/dist-types/auth.d.ts @@ -0,0 +1,2 @@ +import { Token, Authentication } from "./types"; +export declare function auth(token: Token): Promise; diff --git a/node_modules/@octokit/auth-token/dist-types/hook.d.ts b/node_modules/@octokit/auth-token/dist-types/hook.d.ts new file mode 100644 index 0000000..21e4b6f --- /dev/null +++ b/node_modules/@octokit/auth-token/dist-types/hook.d.ts @@ -0,0 +1,2 @@ +import { AnyResponse, EndpointOptions, RequestInterface, RequestParameters, Route, Token } from "./types"; +export declare function hook(token: Token, request: RequestInterface, route: Route | EndpointOptions, parameters?: RequestParameters): Promise; diff --git a/node_modules/@octokit/auth-token/dist-types/index.d.ts b/node_modules/@octokit/auth-token/dist-types/index.d.ts new file mode 100644 index 0000000..5999429 --- /dev/null +++ b/node_modules/@octokit/auth-token/dist-types/index.d.ts @@ -0,0 +1,7 @@ +import { StrategyInterface, Token, Authentication } from "./types"; +export declare type Types = { + StrategyOptions: Token; + AuthOptions: never; + Authentication: Authentication; +}; +export declare const createTokenAuth: StrategyInterface; diff --git a/node_modules/@octokit/auth-token/dist-types/types.d.ts b/node_modules/@octokit/auth-token/dist-types/types.d.ts new file mode 100644 index 0000000..0ae24de --- /dev/null +++ b/node_modules/@octokit/auth-token/dist-types/types.d.ts @@ -0,0 +1,33 @@ +import * as OctokitTypes from "@octokit/types"; +export declare type AnyResponse = OctokitTypes.OctokitResponse; +export declare type StrategyInterface = OctokitTypes.StrategyInterface<[ + Token +], [ +], Authentication>; +export declare type EndpointDefaults = OctokitTypes.EndpointDefaults; +export declare type EndpointOptions = OctokitTypes.EndpointOptions; +export declare type RequestParameters = OctokitTypes.RequestParameters; +export declare type RequestInterface = OctokitTypes.RequestInterface; +export declare type Route = OctokitTypes.Route; +export declare type Token = string; +export declare type OAuthTokenAuthentication = { + type: "token"; + tokenType: "oauth"; + token: Token; +}; +export declare type InstallationTokenAuthentication = { + type: "token"; + tokenType: "installation"; + token: Token; +}; +export declare type AppAuthentication = { + type: "token"; + tokenType: "app"; + token: Token; +}; +export declare type UserToServerAuthentication = { + type: "token"; + tokenType: "user-to-server"; + token: Token; +}; +export declare type Authentication = OAuthTokenAuthentication | InstallationTokenAuthentication | AppAuthentication | UserToServerAuthentication; diff --git a/node_modules/@octokit/auth-token/dist-types/with-authorization-prefix.d.ts b/node_modules/@octokit/auth-token/dist-types/with-authorization-prefix.d.ts new file mode 100644 index 0000000..2e52c31 --- /dev/null +++ b/node_modules/@octokit/auth-token/dist-types/with-authorization-prefix.d.ts @@ -0,0 +1,6 @@ +/** + * Prefix token for usage in the Authorization header + * + * @param token OAuth token or JSON Web Token + */ +export declare function withAuthorizationPrefix(token: string): string; diff --git a/node_modules/@octokit/auth-token/dist-web/index.js b/node_modules/@octokit/auth-token/dist-web/index.js new file mode 100644 index 0000000..8b1cd7d --- /dev/null +++ b/node_modules/@octokit/auth-token/dist-web/index.js @@ -0,0 +1,55 @@ +const REGEX_IS_INSTALLATION_LEGACY = /^v1\./; +const REGEX_IS_INSTALLATION = /^ghs_/; +const 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: token, + tokenType, + }; +} + +/** + * Prefix token for usage in the Authorization header + * + * @param token OAuth token or JSON Web Token + */ +function withAuthorizationPrefix(token) { + if (token.split(/\./).length === 3) { + return `bearer ${token}`; + } + 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); +} + +const createTokenAuth = function createTokenAuth(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), + }); +}; + +export { createTokenAuth }; +//# sourceMappingURL=index.js.map diff --git a/node_modules/@octokit/auth-token/dist-web/index.js.map b/node_modules/@octokit/auth-token/dist-web/index.js.map new file mode 100644 index 0000000..1d6197b --- /dev/null +++ b/node_modules/@octokit/auth-token/dist-web/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sources":["../dist-src/auth.js","../dist-src/with-authorization-prefix.js","../dist-src/hook.js","../dist-src/index.js"],"sourcesContent":["const REGEX_IS_INSTALLATION_LEGACY = /^v1\\./;\nconst REGEX_IS_INSTALLATION = /^ghs_/;\nconst REGEX_IS_USER_TO_SERVER = /^ghu_/;\nexport async function auth(token) {\n const isApp = token.split(/\\./).length === 3;\n const isInstallation = REGEX_IS_INSTALLATION_LEGACY.test(token) ||\n REGEX_IS_INSTALLATION.test(token);\n const isUserToServer = REGEX_IS_USER_TO_SERVER.test(token);\n const tokenType = isApp\n ? \"app\"\n : isInstallation\n ? \"installation\"\n : isUserToServer\n ? \"user-to-server\"\n : \"oauth\";\n return {\n type: \"token\",\n token: token,\n tokenType,\n };\n}\n","/**\n * Prefix token for usage in the Authorization header\n *\n * @param token OAuth token or JSON Web Token\n */\nexport function withAuthorizationPrefix(token) {\n if (token.split(/\\./).length === 3) {\n return `bearer ${token}`;\n }\n return `token ${token}`;\n}\n","import { withAuthorizationPrefix } from \"./with-authorization-prefix\";\nexport async function hook(token, request, route, parameters) {\n const endpoint = request.endpoint.merge(route, parameters);\n endpoint.headers.authorization = withAuthorizationPrefix(token);\n return request(endpoint);\n}\n","import { auth } from \"./auth\";\nimport { hook } from \"./hook\";\nexport const createTokenAuth = function createTokenAuth(token) {\n if (!token) {\n throw new Error(\"[@octokit/auth-token] No token passed to createTokenAuth\");\n }\n if (typeof token !== \"string\") {\n throw new Error(\"[@octokit/auth-token] Token passed to createTokenAuth is not a string\");\n }\n token = token.replace(/^(token|bearer) +/i, \"\");\n return Object.assign(auth.bind(null, token), {\n hook: hook.bind(null, token),\n });\n};\n"],"names":[],"mappings":"AAAA,MAAM,4BAA4B,GAAG,OAAO,CAAC;AAC7C,MAAM,qBAAqB,GAAG,OAAO,CAAC;AACtC,MAAM,uBAAuB,GAAG,OAAO,CAAC;AACjC,eAAe,IAAI,CAAC,KAAK,EAAE;AAClC,IAAI,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC;AACjD,IAAI,MAAM,cAAc,GAAG,4BAA4B,CAAC,IAAI,CAAC,KAAK,CAAC;AACnE,QAAQ,qBAAqB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC1C,IAAI,MAAM,cAAc,GAAG,uBAAuB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC/D,IAAI,MAAM,SAAS,GAAG,KAAK;AAC3B,UAAU,KAAK;AACf,UAAU,cAAc;AACxB,cAAc,cAAc;AAC5B,cAAc,cAAc;AAC5B,kBAAkB,gBAAgB;AAClC,kBAAkB,OAAO,CAAC;AAC1B,IAAI,OAAO;AACX,QAAQ,IAAI,EAAE,OAAO;AACrB,QAAQ,KAAK,EAAE,KAAK;AACpB,QAAQ,SAAS;AACjB,KAAK,CAAC;AACN;;ACpBA;AACA;AACA;AACA;AACA;AACA,AAAO,SAAS,uBAAuB,CAAC,KAAK,EAAE;AAC/C,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE;AACxC,QAAQ,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;AACjC,KAAK;AACL,IAAI,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;AAC5B,CAAC;;ACTM,eAAe,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE;AAC9D,IAAI,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;AAC/D,IAAI,QAAQ,CAAC,OAAO,CAAC,aAAa,GAAG,uBAAuB,CAAC,KAAK,CAAC,CAAC;AACpE,IAAI,OAAO,OAAO,CAAC,QAAQ,CAAC,CAAC;AAC7B,CAAC;;ACHW,MAAC,eAAe,GAAG,SAAS,eAAe,CAAC,KAAK,EAAE;AAC/D,IAAI,IAAI,CAAC,KAAK,EAAE;AAChB,QAAQ,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAC;AACpF,KAAK;AACL,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AACnC,QAAQ,MAAM,IAAI,KAAK,CAAC,uEAAuE,CAAC,CAAC;AACjG,KAAK;AACL,IAAI,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,oBAAoB,EAAE,EAAE,CAAC,CAAC;AACpD,IAAI,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE;AACjD,QAAQ,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC;AACpC,KAAK,CAAC,CAAC;AACP,CAAC;;;;"} \ No newline at end of file diff --git a/node_modules/@octokit/auth-token/package.json b/node_modules/@octokit/auth-token/package.json new file mode 100644 index 0000000..1b0df71 --- /dev/null +++ b/node_modules/@octokit/auth-token/package.json @@ -0,0 +1,45 @@ +{ + "name": "@octokit/auth-token", + "description": "GitHub API token authentication for browsers and Node.js", + "version": "2.5.0", + "license": "MIT", + "files": [ + "dist-*/", + "bin/" + ], + "pika": true, + "sideEffects": false, + "keywords": [ + "github", + "octokit", + "authentication", + "api" + ], + "repository": "github:octokit/auth-token.js", + "dependencies": { + "@octokit/types": "^6.0.3" + }, + "devDependencies": { + "@octokit/core": "^3.0.0", + "@octokit/request": "^5.3.0", + "@pika/pack": "^0.5.0", + "@pika/plugin-build-node": "^0.9.0", + "@pika/plugin-build-web": "^0.9.0", + "@pika/plugin-ts-standard-pkg": "^0.9.0", + "@types/fetch-mock": "^7.3.1", + "@types/jest": "^27.0.0", + "fetch-mock": "^9.0.0", + "jest": "^27.0.0", + "prettier": "2.4.1", + "semantic-release": "^17.0.0", + "ts-jest": "^27.0.0-next.12", + "typescript": "^4.0.0" + }, + "publishConfig": { + "access": "public" + }, + "source": "dist-src/index.js", + "types": "dist-types/index.d.ts", + "main": "dist-node/index.js", + "module": "dist-web/index.js" +} diff --git a/node_modules/@octokit/core/LICENSE b/node_modules/@octokit/core/LICENSE new file mode 100644 index 0000000..ef2c18e --- /dev/null +++ b/node_modules/@octokit/core/LICENSE @@ -0,0 +1,21 @@ +The MIT License + +Copyright (c) 2019 Octokit contributors + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/node_modules/@octokit/core/README.md b/node_modules/@octokit/core/README.md new file mode 100644 index 0000000..b540cb9 --- /dev/null +++ b/node_modules/@octokit/core/README.md @@ -0,0 +1,448 @@ +# core.js + +> Extendable client for GitHub's REST & GraphQL APIs + +[![@latest](https://img.shields.io/npm/v/@octokit/core.svg)](https://www.npmjs.com/package/@octokit/core) +[![Build Status](https://github.com/octokit/core.js/workflows/Test/badge.svg)](https://github.com/octokit/core.js/actions?query=workflow%3ATest+branch%3Amaster) + + + +- [Usage](#usage) + - [REST API example](#rest-api-example) + - [GraphQL example](#graphql-example) +- [Options](#options) +- [Defaults](#defaults) +- [Authentication](#authentication) +- [Logging](#logging) +- [Hooks](#hooks) +- [Plugins](#plugins) +- [Build your own Octokit with Plugins and Defaults](#build-your-own-octokit-with-plugins-and-defaults) +- [LICENSE](#license) + + + +If you need a minimalistic library to utilize GitHub's [REST API](https://developer.github.com/v3/) and [GraphQL API](https://developer.github.com/v4/) which you can extend with plugins as needed, then `@octokit/core` is a great starting point. + +If you don't need the Plugin API then using [`@octokit/request`](https://github.com/octokit/request.js/) or [`@octokit/graphql`](https://github.com/octokit/graphql.js/) directly is a good alternative. + +## Usage + + + + + + +
        +Browsers + +Load @octokit/core directly from cdn.skypack.dev + +```html + +``` + +
        +Node + + +Install with npm install @octokit/core + +```js +const { Octokit } = require("@octokit/core"); +// or: import { Octokit } from "@octokit/core"; +``` + +
        + +### REST API example + +```js +// Create a personal access token at https://github.com/settings/tokens/new?scopes=repo +const octokit = new Octokit({ auth: `personal-access-token123` }); + +const response = await octokit.request("GET /orgs/{org}/repos", { + org: "octokit", + type: "private", +}); +``` + +See [`@octokit/request`](https://github.com/octokit/request.js) for full documentation of the `.request` method. + +### GraphQL example + +```js +const octokit = new Octokit({ auth: `secret123` }); + +const response = await octokit.graphql( + `query ($login: String!) { + organization(login: $login) { + repositories(privacy: PRIVATE) { + totalCount + } + } + }`, + { login: "octokit" } +); +``` + +See [`@octokit/graphql`](https://github.com/octokit/graphql.js) for full documentation of the `.graphql` method. + +## Options + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        + name + + type + + description +
        + options.authStrategy + + Function + + Defaults to @octokit/auth-token. See Authentication below for examples. +
        + options.auth + + String or Object + + See Authentication below for examples. +
        + options.baseUrl + + String + + +When using with GitHub Enterprise Server, set `options.baseUrl` to the root URL of the API. For example, if your GitHub Enterprise Server's hostname is `github.acme-inc.com`, then set `options.baseUrl` to `https://github.acme-inc.com/api/v3`. Example + +```js +const octokit = new Octokit({ + baseUrl: "https://github.acme-inc.com/api/v3", +}); +``` + +
        + options.previews + + Array of Strings + + +Some REST API endpoints require preview headers to be set, or enable +additional features. Preview headers can be set on a per-request basis, e.g. + +```js +octokit.request("POST /repos/{owner}/{repo}/pulls", { + mediaType: { + previews: ["shadow-cat"], + }, + owner, + repo, + title: "My pull request", + base: "master", + head: "my-feature", + draft: true, +}); +``` + +You can also set previews globally, by setting the `options.previews` option on the constructor. Example: + +```js +const octokit = new Octokit({ + previews: ["shadow-cat"], +}); +``` + +
        + options.request + + Object + + +Set a default request timeout (`options.request.timeout`) or an [`http(s).Agent`](https://nodejs.org/api/http.html#http_class_http_agent) e.g. for proxy usage (Node only, `options.request.agent`). + +There are more `options.request.*` options, see [`@octokit/request` options](https://github.com/octokit/request.js#request). `options.request` can also be set on a per-request basis. + +
        + options.timeZone + + String + + +Sets the `Time-Zone` header which defines a timezone according to the [list of names from the Olson database](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones). + +```js +const octokit = new Octokit({ + timeZone: "America/Los_Angeles", +}); +``` + +The time zone header will determine the timezone used for generating the timestamp when creating commits. See [GitHub's Timezones documentation](https://developer.github.com/v3/#timezones). + +
        + options.userAgent + + String + + +A custom user agent string for your app or library. Example + +```js +const octokit = new Octokit({ + userAgent: "my-app/v1.2.3", +}); +``` + +
        + +## Defaults + +You can create a new Octokit class with customized default options. + +```js +const MyOctokit = Octokit.defaults({ + auth: "personal-access-token123", + baseUrl: "https://github.acme-inc.com/api/v3", + userAgent: "my-app/v1.2.3", +}); +const octokit1 = new MyOctokit(); +const octokit2 = new MyOctokit(); +``` + +If you pass additional options to your new constructor, the options will be merged shallowly. + +```js +const MyOctokit = Octokit.defaults({ + foo: { + opt1: 1, + }, +}); +const octokit = new MyOctokit({ + foo: { + opt2: 1, + }, +}); +// options will be { foo: { opt2: 1 }} +``` + +If you need a deep or conditional merge, you can pass a function instead. + +```js +const MyOctokit = Octokit.defaults((options) => { + return { + foo: Object.assign({}, options.foo, { opt2: 1 }), + }; +}); +const octokit = new MyOctokit({ + foo: { opt2: 1 }, +}); +// options will be { foo: { opt1: 1, opt2: 1 }} +``` + +Be careful about mutating the `options` object in the `Octokit.defaults` callback, as it can have unforeseen consequences. + +## Authentication + +Authentication is optional for some REST API endpoints accessing public data, but is required for GraphQL queries. Using authentication also increases your [API rate limit](https://developer.github.com/v3/#rate-limiting). + +By default, Octokit authenticates using the [token authentication strategy](https://github.com/octokit/auth-token.js). Pass in a token using `options.auth`. It can be a personal access token, an OAuth token, an installation access token or a JSON Web Token for GitHub App authentication. The `Authorization` header will be set according to the type of token. + +```js +import { Octokit } from "@octokit/core"; + +const octokit = new Octokit({ + auth: "mypersonalaccesstoken123", +}); + +const { data } = await octokit.request("/user"); +``` + +To use a different authentication strategy, set `options.authStrategy`. A list of authentication strategies is available at [octokit/authentication-strategies.js](https://github.com/octokit/authentication-strategies.js/#readme). + +Example + +```js +import { Octokit } from "@octokit/core"; +import { createAppAuth } from "@octokit/auth-app"; + +const appOctokit = new Octokit({ + authStrategy: createAppAuth, + auth: { + appId: 123, + privateKey: process.env.PRIVATE_KEY, + }, +}); + +const { data } = await appOctokit.request("/app"); +``` + +The `.auth()` method returned by the current authentication strategy can be accessed at `octokit.auth()`. Example + +```js +const { token } = await appOctokit.auth({ + type: "installation", + installationId: 123, +}); +``` + +## Logging + +There are four built-in log methods + +1. `octokit.log.debug(message[, additionalInfo])` +1. `octokit.log.info(message[, additionalInfo])` +1. `octokit.log.warn(message[, additionalInfo])` +1. `octokit.log.error(message[, additionalInfo])` + +They can be configured using the [`log` client option](client-options). By default, `octokit.log.debug()` and `octokit.log.info()` are no-ops, while the other two call `console.warn()` and `console.error()` respectively. + +This is useful if you build reusable [plugins](#plugins). + +If you would like to make the log level configurable using an environment variable or external option, we recommend the [console-log-level](https://github.com/watson/console-log-level) package. Example + +```js +const octokit = new Octokit({ + log: require("console-log-level")({ level: "info" }), +}); +``` + +## Hooks + +You can customize Octokit's request lifecycle with hooks. + +```js +octokit.hook.before("request", async (options) => { + validate(options); +}); +octokit.hook.after("request", async (response, options) => { + console.log(`${options.method} ${options.url}: ${response.status}`); +}); +octokit.hook.error("request", async (error, options) => { + if (error.status === 304) { + return findInCache(error.response.headers.etag); + } + + throw error; +}); +octokit.hook.wrap("request", async (request, options) => { + // add logic before, after, catch errors or replace the request altogether + return request(options); +}); +``` + +See [before-after-hook](https://github.com/gr2m/before-after-hook#readme) for more documentation on hooks. + +## Plugins + +Octokit’s functionality can be extended using plugins. The `Octokit.plugin()` method accepts a plugin (or many) and returns a new constructor. + +A plugin is a function which gets two arguments: + +1. the current instance +2. the options passed to the constructor. + +In order to extend `octokit`'s API, the plugin must return an object with the new methods. + +```js +// index.js +const { Octokit } = require("@octokit/core") +const MyOctokit = Octokit.plugin( + require("./lib/my-plugin"), + require("octokit-plugin-example") +); + +const octokit = new MyOctokit({ greeting: "Moin moin" }); +octokit.helloWorld(); // logs "Moin moin, world!" +octokit.request("GET /"); // logs "GET / - 200 in 123ms" + +// lib/my-plugin.js +module.exports = (octokit, options = { greeting: "Hello" }) => { + // hook into the request lifecycle + octokit.hook.wrap("request", async (request, options) => { + const time = Date.now(); + const response = await request(options); + console.log( + `${options.method} ${options.url} – ${response.status} in ${Date.now() - + time}ms` + ); + return response; + }); + + // add a custom method + return { + helloWorld: () => console.log(`${options.greeting}, world!`); + } +}; +``` + +## Build your own Octokit with Plugins and Defaults + +You can build your own Octokit class with preset default options and plugins. In fact, this is mostly how the `@octokit/` modules work, such as [`@octokit/action`](https://github.com/octokit/action.js): + +```js +const { Octokit } = require("@octokit/core"); +const MyActionOctokit = Octokit.plugin( + require("@octokit/plugin-paginate-rest").paginateRest, + require("@octokit/plugin-throttling").throttling, + require("@octokit/plugin-retry").retry +).defaults({ + throttle: { + onAbuseLimit: (retryAfter, options) => { + /* ... */ + }, + onRateLimit: (retryAfter, options) => { + /* ... */ + }, + }, + authStrategy: require("@octokit/auth-action").createActionAuth, + userAgent: `my-octokit-action/v1.2.3`, +}); + +const octokit = new MyActionOctokit(); +const installations = await octokit.paginate("GET /app/installations"); +``` + +## LICENSE + +[MIT](LICENSE) diff --git a/node_modules/@octokit/core/dist-node/index.js b/node_modules/@octokit/core/dist-node/index.js new file mode 100644 index 0000000..0f46e61 --- /dev/null +++ b/node_modules/@octokit/core/dist-node/index.js @@ -0,0 +1,176 @@ +'use strict'; + +Object.defineProperty(exports, '__esModule', { value: true }); + +var universalUserAgent = require('universal-user-agent'); +var beforeAfterHook = require('before-after-hook'); +var request = require('@octokit/request'); +var graphql = require('@octokit/graphql'); +var authToken = require('@octokit/auth-token'); + +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; +} + +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; +} + +const VERSION = "3.6.0"; + +const _excluded = ["authStrategy"]; +class Octokit { + constructor(options = {}) { + const hook = new beforeAfterHook.Collection(); + const requestDefaults = { + baseUrl: request.request.endpoint.DEFAULTS.baseUrl, + headers: {}, + request: Object.assign({}, options.request, { + // @ts-ignore internal usage only, no need to type + hook: hook.bind(null, "request") + }), + mediaType: { + previews: [], + format: "" + } + }; // prepend default user agent with `options.userAgent` if set + + 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; // (1) If neither `options.authStrategy` nor `options.auth` are set, the `octokit` instance + // is unauthenticated. The `this.auth()` method is a no-op and no request hook is registered. + // (2) If only `options.auth` is set, use the default token authentication strategy. + // (3) If `options.authStrategy` is set then use it and pass in `options.auth`. Always pass own request as many strategies accept a custom request instance. + // TODO: type `options.auth` based on `options.authStrategy`. + + if (!options.authStrategy) { + if (!options.auth) { + // (1) + this.auth = async () => ({ + type: "unauthenticated" + }); + } else { + // (2) + const auth = authToken.createTokenAuth(options.auth); // @ts-ignore ¯\_(ツ)_/¯ + + 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, + // 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)); // @ts-ignore ¯\_(ツ)_/¯ + + hook.wrap("request", auth.hook); + this.auth = auth; + } // apply plugins + // https://stackoverflow.com/a/16345172 + + + 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; + } + /** + * Attach a plugin (or many) to your Octokit instance. + * + * @example + * const API = Octokit.plugin(plugin1, plugin2, plugin3, ...) + */ + + + 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 = []; + +exports.Octokit = Octokit; +//# sourceMappingURL=index.js.map diff --git a/node_modules/@octokit/core/dist-node/index.js.map b/node_modules/@octokit/core/dist-node/index.js.map new file mode 100644 index 0000000..3467e52 --- /dev/null +++ b/node_modules/@octokit/core/dist-node/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sources":["../dist-src/version.js","../dist-src/index.js"],"sourcesContent":["export const VERSION = \"3.6.0\";\n","import { getUserAgent } from \"universal-user-agent\";\nimport { Collection } from \"before-after-hook\";\nimport { request } from \"@octokit/request\";\nimport { withCustomRequest } from \"@octokit/graphql\";\nimport { createTokenAuth } from \"@octokit/auth-token\";\nimport { VERSION } from \"./version\";\nexport class Octokit {\n constructor(options = {}) {\n const hook = new Collection();\n const requestDefaults = {\n baseUrl: request.endpoint.DEFAULTS.baseUrl,\n headers: {},\n request: Object.assign({}, options.request, {\n // @ts-ignore internal usage only, no need to type\n hook: hook.bind(null, \"request\"),\n }),\n mediaType: {\n previews: [],\n format: \"\",\n },\n };\n // prepend default user agent with `options.userAgent` if set\n requestDefaults.headers[\"user-agent\"] = [\n options.userAgent,\n `octokit-core.js/${VERSION} ${getUserAgent()}`,\n ]\n .filter(Boolean)\n .join(\" \");\n if (options.baseUrl) {\n requestDefaults.baseUrl = options.baseUrl;\n }\n if (options.previews) {\n requestDefaults.mediaType.previews = options.previews;\n }\n if (options.timeZone) {\n requestDefaults.headers[\"time-zone\"] = options.timeZone;\n }\n this.request = request.defaults(requestDefaults);\n this.graphql = withCustomRequest(this.request).defaults(requestDefaults);\n this.log = Object.assign({\n debug: () => { },\n info: () => { },\n warn: console.warn.bind(console),\n error: console.error.bind(console),\n }, options.log);\n this.hook = hook;\n // (1) If neither `options.authStrategy` nor `options.auth` are set, the `octokit` instance\n // is unauthenticated. The `this.auth()` method is a no-op and no request hook is registered.\n // (2) If only `options.auth` is set, use the default token authentication strategy.\n // (3) If `options.authStrategy` is set then use it and pass in `options.auth`. Always pass own request as many strategies accept a custom request instance.\n // TODO: type `options.auth` based on `options.authStrategy`.\n if (!options.authStrategy) {\n if (!options.auth) {\n // (1)\n this.auth = async () => ({\n type: \"unauthenticated\",\n });\n }\n else {\n // (2)\n const auth = createTokenAuth(options.auth);\n // @ts-ignore ¯\\_(ツ)_/¯\n hook.wrap(\"request\", auth.hook);\n this.auth = auth;\n }\n }\n else {\n const { authStrategy, ...otherOptions } = options;\n const auth = authStrategy(Object.assign({\n request: this.request,\n log: this.log,\n // we pass the current octokit instance as well as its constructor options\n // to allow for authentication strategies that return a new octokit instance\n // that shares the same internal state as the current one. The original\n // requirement for this was the \"event-octokit\" authentication strategy\n // of https://github.com/probot/octokit-auth-probot.\n octokit: this,\n octokitOptions: otherOptions,\n }, options.auth));\n // @ts-ignore ¯\\_(ツ)_/¯\n hook.wrap(\"request\", auth.hook);\n this.auth = auth;\n }\n // apply plugins\n // https://stackoverflow.com/a/16345172\n const classConstructor = this.constructor;\n classConstructor.plugins.forEach((plugin) => {\n Object.assign(this, plugin(this, options));\n });\n }\n static defaults(defaults) {\n const OctokitWithDefaults = class extends this {\n constructor(...args) {\n const options = args[0] || {};\n if (typeof defaults === \"function\") {\n super(defaults(options));\n return;\n }\n super(Object.assign({}, defaults, options, options.userAgent && defaults.userAgent\n ? {\n userAgent: `${options.userAgent} ${defaults.userAgent}`,\n }\n : null));\n }\n };\n return OctokitWithDefaults;\n }\n /**\n * Attach a plugin (or many) to your Octokit instance.\n *\n * @example\n * const API = Octokit.plugin(plugin1, plugin2, plugin3, ...)\n */\n static plugin(...newPlugins) {\n var _a;\n const currentPlugins = this.plugins;\n const NewOctokit = (_a = class extends this {\n },\n _a.plugins = currentPlugins.concat(newPlugins.filter((plugin) => !currentPlugins.includes(plugin))),\n _a);\n return NewOctokit;\n }\n}\nOctokit.VERSION = VERSION;\nOctokit.plugins = [];\n"],"names":["VERSION","Octokit","constructor","options","hook","Collection","requestDefaults","baseUrl","request","endpoint","DEFAULTS","headers","Object","assign","bind","mediaType","previews","format","userAgent","getUserAgent","filter","Boolean","join","timeZone","defaults","graphql","withCustomRequest","log","debug","info","warn","console","error","authStrategy","auth","type","createTokenAuth","wrap","otherOptions","octokit","octokitOptions","classConstructor","plugins","forEach","plugin","OctokitWithDefaults","args","newPlugins","_a","currentPlugins","NewOctokit","concat","includes"],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@octokit/core/dist-src/index.js b/node_modules/@octokit/core/dist-src/index.js new file mode 100644 index 0000000..bdbc335 --- /dev/null +++ b/node_modules/@octokit/core/dist-src/index.js @@ -0,0 +1,125 @@ +import { getUserAgent } from "universal-user-agent"; +import { Collection } from "before-after-hook"; +import { request } from "@octokit/request"; +import { withCustomRequest } from "@octokit/graphql"; +import { createTokenAuth } from "@octokit/auth-token"; +import { VERSION } from "./version"; +export class Octokit { + constructor(options = {}) { + const hook = new Collection(); + const requestDefaults = { + baseUrl: request.endpoint.DEFAULTS.baseUrl, + headers: {}, + request: Object.assign({}, options.request, { + // @ts-ignore internal usage only, no need to type + hook: hook.bind(null, "request"), + }), + mediaType: { + previews: [], + format: "", + }, + }; + // prepend default user agent with `options.userAgent` if set + requestDefaults.headers["user-agent"] = [ + options.userAgent, + `octokit-core.js/${VERSION} ${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.defaults(requestDefaults); + this.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; + // (1) If neither `options.authStrategy` nor `options.auth` are set, the `octokit` instance + // is unauthenticated. The `this.auth()` method is a no-op and no request hook is registered. + // (2) If only `options.auth` is set, use the default token authentication strategy. + // (3) If `options.authStrategy` is set then use it and pass in `options.auth`. Always pass own request as many strategies accept a custom request instance. + // TODO: type `options.auth` based on `options.authStrategy`. + if (!options.authStrategy) { + if (!options.auth) { + // (1) + this.auth = async () => ({ + type: "unauthenticated", + }); + } + else { + // (2) + const auth = createTokenAuth(options.auth); + // @ts-ignore ¯\_(ツ)_/¯ + hook.wrap("request", auth.hook); + this.auth = auth; + } + } + else { + const { authStrategy, ...otherOptions } = options; + const auth = 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)); + // @ts-ignore ¯\_(ツ)_/¯ + hook.wrap("request", auth.hook); + this.auth = auth; + } + // apply plugins + // https://stackoverflow.com/a/16345172 + 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; + } + /** + * Attach a plugin (or many) to your Octokit instance. + * + * @example + * const API = Octokit.plugin(plugin1, plugin2, plugin3, ...) + */ + 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 = []; diff --git a/node_modules/@octokit/core/dist-src/types.js b/node_modules/@octokit/core/dist-src/types.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/node_modules/@octokit/core/dist-src/types.js @@ -0,0 +1 @@ +export {}; diff --git a/node_modules/@octokit/core/dist-src/version.js b/node_modules/@octokit/core/dist-src/version.js new file mode 100644 index 0000000..bace1a9 --- /dev/null +++ b/node_modules/@octokit/core/dist-src/version.js @@ -0,0 +1 @@ +export const VERSION = "3.6.0"; diff --git a/node_modules/@octokit/core/dist-types/index.d.ts b/node_modules/@octokit/core/dist-types/index.d.ts new file mode 100644 index 0000000..b757c5b --- /dev/null +++ b/node_modules/@octokit/core/dist-types/index.d.ts @@ -0,0 +1,30 @@ +import { HookCollection } from "before-after-hook"; +import { request } from "@octokit/request"; +import { graphql } from "@octokit/graphql"; +import { Constructor, Hooks, OctokitOptions, OctokitPlugin, ReturnTypeOf, UnionToIntersection } from "./types"; +export declare class Octokit { + static VERSION: string; + static defaults>(this: S, defaults: OctokitOptions | Function): S; + static plugins: OctokitPlugin[]; + /** + * Attach a plugin (or many) to your Octokit instance. + * + * @example + * const API = Octokit.plugin(plugin1, plugin2, plugin3, ...) + */ + static plugin & { + plugins: any[]; + }, T extends OctokitPlugin[]>(this: S, ...newPlugins: T): S & Constructor>>; + constructor(options?: OctokitOptions); + request: typeof request; + graphql: typeof graphql; + log: { + debug: (message: string, additionalInfo?: object) => any; + info: (message: string, additionalInfo?: object) => any; + warn: (message: string, additionalInfo?: object) => any; + error: (message: string, additionalInfo?: object) => any; + [key: string]: any; + }; + hook: HookCollection; + auth: (...args: unknown[]) => Promise; +} diff --git a/node_modules/@octokit/core/dist-types/types.d.ts b/node_modules/@octokit/core/dist-types/types.d.ts new file mode 100644 index 0000000..3970d0d --- /dev/null +++ b/node_modules/@octokit/core/dist-types/types.d.ts @@ -0,0 +1,44 @@ +import * as OctokitTypes from "@octokit/types"; +import { RequestError } from "@octokit/request-error"; +import { Octokit } from "."; +export declare type RequestParameters = OctokitTypes.RequestParameters; +export interface OctokitOptions { + authStrategy?: any; + auth?: any; + userAgent?: string; + previews?: string[]; + baseUrl?: string; + log?: { + debug: (message: string) => unknown; + info: (message: string) => unknown; + warn: (message: string) => unknown; + error: (message: string) => unknown; + }; + request?: OctokitTypes.RequestRequestOptions; + timeZone?: string; + [option: string]: any; +} +export declare type Constructor = new (...args: any[]) => T; +export declare type ReturnTypeOf = T extends AnyFunction ? ReturnType : T extends AnyFunction[] ? UnionToIntersection, void>> : never; +/** + * @author https://stackoverflow.com/users/2887218/jcalz + * @see https://stackoverflow.com/a/50375286/10325032 + */ +export declare type UnionToIntersection = (Union extends any ? (argument: Union) => void : never) extends (argument: infer Intersection) => void ? Intersection : never; +declare type AnyFunction = (...args: any) => any; +export declare type OctokitPlugin = (octokit: Octokit, options: OctokitOptions) => { + [key: string]: any; +} | void; +export declare type Hooks = { + request: { + Options: Required; + Result: OctokitTypes.OctokitResponse; + Error: RequestError | Error; + }; + [key: string]: { + Options: unknown; + Result: unknown; + Error: unknown; + }; +}; +export {}; diff --git a/node_modules/@octokit/core/dist-types/version.d.ts b/node_modules/@octokit/core/dist-types/version.d.ts new file mode 100644 index 0000000..f1a3d02 --- /dev/null +++ b/node_modules/@octokit/core/dist-types/version.d.ts @@ -0,0 +1 @@ +export declare const VERSION = "3.6.0"; diff --git a/node_modules/@octokit/core/dist-web/index.js b/node_modules/@octokit/core/dist-web/index.js new file mode 100644 index 0000000..741d231 --- /dev/null +++ b/node_modules/@octokit/core/dist-web/index.js @@ -0,0 +1,130 @@ +import { getUserAgent } from 'universal-user-agent'; +import { Collection } from 'before-after-hook'; +import { request } from '@octokit/request'; +import { withCustomRequest } from '@octokit/graphql'; +import { createTokenAuth } from '@octokit/auth-token'; + +const VERSION = "3.6.0"; + +class Octokit { + constructor(options = {}) { + const hook = new Collection(); + const requestDefaults = { + baseUrl: request.endpoint.DEFAULTS.baseUrl, + headers: {}, + request: Object.assign({}, options.request, { + // @ts-ignore internal usage only, no need to type + hook: hook.bind(null, "request"), + }), + mediaType: { + previews: [], + format: "", + }, + }; + // prepend default user agent with `options.userAgent` if set + requestDefaults.headers["user-agent"] = [ + options.userAgent, + `octokit-core.js/${VERSION} ${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.defaults(requestDefaults); + this.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; + // (1) If neither `options.authStrategy` nor `options.auth` are set, the `octokit` instance + // is unauthenticated. The `this.auth()` method is a no-op and no request hook is registered. + // (2) If only `options.auth` is set, use the default token authentication strategy. + // (3) If `options.authStrategy` is set then use it and pass in `options.auth`. Always pass own request as many strategies accept a custom request instance. + // TODO: type `options.auth` based on `options.authStrategy`. + if (!options.authStrategy) { + if (!options.auth) { + // (1) + this.auth = async () => ({ + type: "unauthenticated", + }); + } + else { + // (2) + const auth = createTokenAuth(options.auth); + // @ts-ignore ¯\_(ツ)_/¯ + hook.wrap("request", auth.hook); + this.auth = auth; + } + } + else { + const { authStrategy, ...otherOptions } = options; + const auth = 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)); + // @ts-ignore ¯\_(ツ)_/¯ + hook.wrap("request", auth.hook); + this.auth = auth; + } + // apply plugins + // https://stackoverflow.com/a/16345172 + 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; + } + /** + * Attach a plugin (or many) to your Octokit instance. + * + * @example + * const API = Octokit.plugin(plugin1, plugin2, plugin3, ...) + */ + 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 = []; + +export { Octokit }; +//# sourceMappingURL=index.js.map diff --git a/node_modules/@octokit/core/dist-web/index.js.map b/node_modules/@octokit/core/dist-web/index.js.map new file mode 100644 index 0000000..238c82e --- /dev/null +++ b/node_modules/@octokit/core/dist-web/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sources":["../dist-src/version.js","../dist-src/index.js"],"sourcesContent":["export const VERSION = \"3.6.0\";\n","import { getUserAgent } from \"universal-user-agent\";\nimport { Collection } from \"before-after-hook\";\nimport { request } from \"@octokit/request\";\nimport { withCustomRequest } from \"@octokit/graphql\";\nimport { createTokenAuth } from \"@octokit/auth-token\";\nimport { VERSION } from \"./version\";\nexport class Octokit {\n constructor(options = {}) {\n const hook = new Collection();\n const requestDefaults = {\n baseUrl: request.endpoint.DEFAULTS.baseUrl,\n headers: {},\n request: Object.assign({}, options.request, {\n // @ts-ignore internal usage only, no need to type\n hook: hook.bind(null, \"request\"),\n }),\n mediaType: {\n previews: [],\n format: \"\",\n },\n };\n // prepend default user agent with `options.userAgent` if set\n requestDefaults.headers[\"user-agent\"] = [\n options.userAgent,\n `octokit-core.js/${VERSION} ${getUserAgent()}`,\n ]\n .filter(Boolean)\n .join(\" \");\n if (options.baseUrl) {\n requestDefaults.baseUrl = options.baseUrl;\n }\n if (options.previews) {\n requestDefaults.mediaType.previews = options.previews;\n }\n if (options.timeZone) {\n requestDefaults.headers[\"time-zone\"] = options.timeZone;\n }\n this.request = request.defaults(requestDefaults);\n this.graphql = withCustomRequest(this.request).defaults(requestDefaults);\n this.log = Object.assign({\n debug: () => { },\n info: () => { },\n warn: console.warn.bind(console),\n error: console.error.bind(console),\n }, options.log);\n this.hook = hook;\n // (1) If neither `options.authStrategy` nor `options.auth` are set, the `octokit` instance\n // is unauthenticated. The `this.auth()` method is a no-op and no request hook is registered.\n // (2) If only `options.auth` is set, use the default token authentication strategy.\n // (3) If `options.authStrategy` is set then use it and pass in `options.auth`. Always pass own request as many strategies accept a custom request instance.\n // TODO: type `options.auth` based on `options.authStrategy`.\n if (!options.authStrategy) {\n if (!options.auth) {\n // (1)\n this.auth = async () => ({\n type: \"unauthenticated\",\n });\n }\n else {\n // (2)\n const auth = createTokenAuth(options.auth);\n // @ts-ignore ¯\\_(ツ)_/¯\n hook.wrap(\"request\", auth.hook);\n this.auth = auth;\n }\n }\n else {\n const { authStrategy, ...otherOptions } = options;\n const auth = authStrategy(Object.assign({\n request: this.request,\n log: this.log,\n // we pass the current octokit instance as well as its constructor options\n // to allow for authentication strategies that return a new octokit instance\n // that shares the same internal state as the current one. The original\n // requirement for this was the \"event-octokit\" authentication strategy\n // of https://github.com/probot/octokit-auth-probot.\n octokit: this,\n octokitOptions: otherOptions,\n }, options.auth));\n // @ts-ignore ¯\\_(ツ)_/¯\n hook.wrap(\"request\", auth.hook);\n this.auth = auth;\n }\n // apply plugins\n // https://stackoverflow.com/a/16345172\n const classConstructor = this.constructor;\n classConstructor.plugins.forEach((plugin) => {\n Object.assign(this, plugin(this, options));\n });\n }\n static defaults(defaults) {\n const OctokitWithDefaults = class extends this {\n constructor(...args) {\n const options = args[0] || {};\n if (typeof defaults === \"function\") {\n super(defaults(options));\n return;\n }\n super(Object.assign({}, defaults, options, options.userAgent && defaults.userAgent\n ? {\n userAgent: `${options.userAgent} ${defaults.userAgent}`,\n }\n : null));\n }\n };\n return OctokitWithDefaults;\n }\n /**\n * Attach a plugin (or many) to your Octokit instance.\n *\n * @example\n * const API = Octokit.plugin(plugin1, plugin2, plugin3, ...)\n */\n static plugin(...newPlugins) {\n var _a;\n const currentPlugins = this.plugins;\n const NewOctokit = (_a = class extends this {\n },\n _a.plugins = currentPlugins.concat(newPlugins.filter((plugin) => !currentPlugins.includes(plugin))),\n _a);\n return NewOctokit;\n }\n}\nOctokit.VERSION = VERSION;\nOctokit.plugins = [];\n"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@octokit/core/package.json b/node_modules/@octokit/core/package.json new file mode 100644 index 0000000..548e76c --- /dev/null +++ b/node_modules/@octokit/core/package.json @@ -0,0 +1,57 @@ +{ + "name": "@octokit/core", + "description": "Extendable client for GitHub's REST & GraphQL APIs", + "version": "3.6.0", + "license": "MIT", + "files": [ + "dist-*/", + "bin/" + ], + "pika": true, + "sideEffects": false, + "keywords": [ + "octokit", + "github", + "api", + "sdk", + "toolkit" + ], + "repository": "github:octokit/core.js", + "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" + }, + "devDependencies": { + "@octokit/auth": "^3.0.1", + "@pika/pack": "^0.5.0", + "@pika/plugin-build-node": "^0.9.0", + "@pika/plugin-build-web": "^0.9.0", + "@pika/plugin-ts-standard-pkg": "^0.9.0", + "@types/fetch-mock": "^7.3.1", + "@types/jest": "^27.0.0", + "@types/lolex": "^5.1.0", + "@types/node": "^14.0.4", + "fetch-mock": "^9.0.0", + "http-proxy-agent": "^5.0.0", + "jest": "^27.0.0", + "lolex": "^6.0.0", + "prettier": "2.4.1", + "proxy": "^1.0.1", + "semantic-release": "^18.0.0", + "semantic-release-plugin-update-version-in-files": "^1.0.0", + "ts-jest": "^27.0.0", + "typescript": "^4.0.2" + }, + "publishConfig": { + "access": "public" + }, + "source": "dist-src/index.js", + "types": "dist-types/index.d.ts", + "main": "dist-node/index.js", + "module": "dist-web/index.js" +} diff --git a/node_modules/@octokit/endpoint/LICENSE b/node_modules/@octokit/endpoint/LICENSE new file mode 100644 index 0000000..af5366d --- /dev/null +++ b/node_modules/@octokit/endpoint/LICENSE @@ -0,0 +1,21 @@ +The MIT License + +Copyright (c) 2018 Octokit contributors + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/node_modules/@octokit/endpoint/README.md b/node_modules/@octokit/endpoint/README.md new file mode 100644 index 0000000..1e5153f --- /dev/null +++ b/node_modules/@octokit/endpoint/README.md @@ -0,0 +1,421 @@ +# endpoint.js + +> Turns GitHub REST API endpoints into generic request options + +[![@latest](https://img.shields.io/npm/v/@octokit/endpoint.svg)](https://www.npmjs.com/package/@octokit/endpoint) +![Build Status](https://github.com/octokit/endpoint.js/workflows/Test/badge.svg) + +`@octokit/endpoint` combines [GitHub REST API routes](https://developer.github.com/v3/) with your parameters and turns them into generic request options that can be used in any request library. + + + + + +- [Usage](#usage) +- [API](#api) + - [`endpoint(route, options)` or `endpoint(options)`](#endpointroute-options-or-endpointoptions) + - [`endpoint.defaults()`](#endpointdefaults) + - [`endpoint.DEFAULTS`](#endpointdefaults) + - [`endpoint.merge(route, options)` or `endpoint.merge(options)`](#endpointmergeroute-options-or-endpointmergeoptions) + - [`endpoint.parse()`](#endpointparse) +- [Special cases](#special-cases) + - [The `data` parameter – set request body directly](#the-data-parameter-%E2%80%93-set-request-body-directly) + - [Set parameters for both the URL/query and the request body](#set-parameters-for-both-the-urlquery-and-the-request-body) +- [LICENSE](#license) + + + +## Usage + + + + + + +
        +Browsers + +Load @octokit/endpoint directly from cdn.skypack.dev + +```html + +``` + +
        +Node + + +Install with npm install @octokit/endpoint + +```js +const { endpoint } = require("@octokit/endpoint"); +// or: import { endpoint } from "@octokit/endpoint"; +``` + +
        + +Example for [List organization repositories](https://developer.github.com/v3/repos/#list-organization-repositories) + +```js +const requestOptions = endpoint("GET /orgs/{org}/repos", { + headers: { + authorization: "token 0000000000000000000000000000000000000001", + }, + org: "octokit", + type: "private", +}); +``` + +The resulting `requestOptions` looks as follows + +```json +{ + "method": "GET", + "url": "https://api.github.com/orgs/octokit/repos?type=private", + "headers": { + "accept": "application/vnd.github.v3+json", + "authorization": "token 0000000000000000000000000000000000000001", + "user-agent": "octokit/endpoint.js v1.2.3" + } +} +``` + +You can pass `requestOptions` to common request libraries + +```js +const { url, ...options } = requestOptions; +// using with fetch (https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) +fetch(url, options); +// using with request (https://github.com/request/request) +request(requestOptions); +// using with got (https://github.com/sindresorhus/got) +got[options.method](url, options); +// using with axios +axios(requestOptions); +``` + +## API + +### `endpoint(route, options)` or `endpoint(options)` + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        + name + + type + + description +
        + route + + String + + If set, it has to be a string consisting of URL and the request method, e.g., GET /orgs/{org}. If it’s set to a URL, only the method defaults to GET. +
        + options.method + + String + + Required unless route is set. Any supported http verb. Defaults to GET. +
        + options.url + + String + + Required unless route is set. A path or full URL which may contain :variable or {variable} placeholders, + e.g., /orgs/{org}/repos. The url is parsed using url-template. +
        + options.baseUrl + + String + + Defaults to https://api.github.com. +
        + options.headers + + Object + + Custom headers. Passed headers are merged with defaults:
        + headers['user-agent'] defaults to octokit-endpoint.js/1.2.3 (where 1.2.3 is the released version).
        + headers['accept'] defaults to application/vnd.github.v3+json.
        +
        + options.mediaType.format + + String + + Media type param, such as raw, diff, or text+json. See Media Types. Setting options.mediaType.format will amend the headers.accept value. +
        + options.mediaType.previews + + Array of Strings + + Name of previews, such as mercy, symmetra, or scarlet-witch. See API Previews. If options.mediaType.previews was set as default, the new previews will be merged into the default ones. Setting options.mediaType.previews will amend the headers.accept value. options.mediaType.previews will be merged with an existing array set using .defaults(). +
        + options.data + + Any + + Set request body directly instead of setting it to JSON based on additional parameters. See "The data parameter" below. +
        + options.request + + Object + + Pass custom meta information for the request. The request object will be returned as is. +
        + +All other options will be passed depending on the `method` and `url` options. + +1. If the option key has a placeholder in the `url`, it will be used as the replacement. For example, if the passed options are `{url: '/orgs/{org}/repos', org: 'foo'}` the returned `options.url` is `https://api.github.com/orgs/foo/repos`. +2. If the `method` is `GET` or `HEAD`, the option is passed as a query parameter. +3. Otherwise, the parameter is passed in the request body as a JSON key. + +**Result** + +`endpoint()` is a synchronous method and returns an object with the following keys: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        + key + + type + + description +
        methodStringThe http method. Always lowercase.
        urlStringThe url with placeholders replaced with passed parameters.
        headersObjectAll header names are lowercased.
        bodyAnyThe request body if one is present. Only for PATCH, POST, PUT, DELETE requests.
        requestObjectRequest meta option, it will be returned as it was passed into endpoint()
        + +### `endpoint.defaults()` + +Override or set default options. Example: + +```js +const request = require("request"); +const myEndpoint = require("@octokit/endpoint").defaults({ + baseUrl: "https://github-enterprise.acme-inc.com/api/v3", + headers: { + "user-agent": "myApp/1.2.3", + authorization: `token 0000000000000000000000000000000000000001`, + }, + org: "my-project", + per_page: 100, +}); + +request(myEndpoint(`GET /orgs/{org}/repos`)); +``` + +You can call `.defaults()` again on the returned method, the defaults will cascade. + +```js +const myProjectEndpoint = endpoint.defaults({ + baseUrl: "https://github-enterprise.acme-inc.com/api/v3", + headers: { + "user-agent": "myApp/1.2.3", + }, + org: "my-project", +}); +const myProjectEndpointWithAuth = myProjectEndpoint.defaults({ + headers: { + authorization: `token 0000000000000000000000000000000000000001`, + }, +}); +``` + +`myProjectEndpointWithAuth` now defaults the `baseUrl`, `headers['user-agent']`, +`org` and `headers['authorization']` on top of `headers['accept']` that is set +by the global default. + +### `endpoint.DEFAULTS` + +The current default options. + +```js +endpoint.DEFAULTS.baseUrl; // https://api.github.com +const myEndpoint = endpoint.defaults({ + baseUrl: "https://github-enterprise.acme-inc.com/api/v3", +}); +myEndpoint.DEFAULTS.baseUrl; // https://github-enterprise.acme-inc.com/api/v3 +``` + +### `endpoint.merge(route, options)` or `endpoint.merge(options)` + +Get the defaulted endpoint options, but without parsing them into request options: + +```js +const myProjectEndpoint = endpoint.defaults({ + baseUrl: "https://github-enterprise.acme-inc.com/api/v3", + headers: { + "user-agent": "myApp/1.2.3", + }, + org: "my-project", +}); +myProjectEndpoint.merge("GET /orgs/{org}/repos", { + headers: { + authorization: `token 0000000000000000000000000000000000000001`, + }, + org: "my-secret-project", + type: "private", +}); + +// { +// baseUrl: 'https://github-enterprise.acme-inc.com/api/v3', +// method: 'GET', +// url: '/orgs/{org}/repos', +// headers: { +// accept: 'application/vnd.github.v3+json', +// authorization: `token 0000000000000000000000000000000000000001`, +// 'user-agent': 'myApp/1.2.3' +// }, +// org: 'my-secret-project', +// type: 'private' +// } +``` + +### `endpoint.parse()` + +Stateless method to turn endpoint options into request options. Calling +`endpoint(options)` is the same as calling `endpoint.parse(endpoint.merge(options))`. + +## Special cases + +
        + +### The `data` parameter – set request body directly + +Some endpoints such as [Render a Markdown document in raw mode](https://developer.github.com/v3/markdown/#render-a-markdown-document-in-raw-mode) don’t have parameters that are sent as request body keys, instead, the request body needs to be set directly. In these cases, set the `data` parameter. + +```js +const options = endpoint("POST /markdown/raw", { + data: "Hello world github/linguist#1 **cool**, and #1!", + headers: { + accept: "text/html;charset=utf-8", + "content-type": "text/plain", + }, +}); + +// options is +// { +// method: 'post', +// url: 'https://api.github.com/markdown/raw', +// headers: { +// accept: 'text/html;charset=utf-8', +// 'content-type': 'text/plain', +// 'user-agent': userAgent +// }, +// body: 'Hello world github/linguist#1 **cool**, and #1!' +// } +``` + +### Set parameters for both the URL/query and the request body + +There are API endpoints that accept both query parameters as well as a body. In that case, you need to add the query parameters as templates to `options.url`, as defined in the [RFC 6570 URI Template specification](https://tools.ietf.org/html/rfc6570). + +Example + +```js +endpoint( + "POST https://uploads.github.com/repos/octocat/Hello-World/releases/1/assets{?name,label}", + { + name: "example.zip", + label: "short description", + headers: { + "content-type": "text/plain", + "content-length": 14, + authorization: `token 0000000000000000000000000000000000000001`, + }, + data: "Hello, world!", + } +); +``` + +## LICENSE + +[MIT](LICENSE) diff --git a/node_modules/@octokit/endpoint/dist-node/index.js b/node_modules/@octokit/endpoint/dist-node/index.js new file mode 100644 index 0000000..70f24ff --- /dev/null +++ b/node_modules/@octokit/endpoint/dist-node/index.js @@ -0,0 +1,390 @@ +'use strict'; + +Object.defineProperty(exports, '__esModule', { value: true }); + +var isPlainObject = require('is-plain-object'); +var universalUserAgent = require('universal-user-agent'); + +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] === undefined) { + delete obj[key]; + } + } + + 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); + } // lowercase header names before merging with defaults to avoid duplicates + + + options.headers = lowercaseKeys(options.headers); // remove properties with undefined values before merging + + removeUndefinedProperties(options); + removeUndefinedProperties(options.headers); + const mergedOptions = mergeDeep(defaults || {}, options); // mediaType.previews arrays are merged, instead of overwritten + + 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; + } + + return url + separator + names.map(name => { + if (name === "q") { + return "q=" + parameters.q.split("+").map(encodeURIComponent).join("+"); + } + + return `${name}=${encodeURIComponent(parameters[name])}`; + }).join("&"); +} + +const urlVariableRegex = /\{[^}]+\}/g; + +function removeNonChars(variableName) { + return variableName.replace(/^\W+|\W+$/g, "").split(/,/); +} + +function extractUrlVariableNames(url) { + const matches = url.match(urlVariableRegex); + + if (!matches) { + return []; + } + + 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; + }, {}); +} + +// Based on https://github.com/bramstein/url-template, licensed under BSD +// TODO: create separate package. +// +// Copyright (c) 2012-2014, Bram Stein +// All rights reserved. +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions +// are met: +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// 3. The name of the author may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED +// WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +// EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +// INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +// BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY +// OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, +// EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +/* istanbul ignore file */ +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 !== undefined && value !== null; +} + +function isKeyOperator(operator) { + return operator === ";" || operator === "&" || operator === "?"; +} + +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 : "")); + } else { + if (modifier === "*") { + if (Array.isArray(value)) { + value.filter(isDefined).forEach(function (value) { + result.push(encodeValue(operator, value, 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 (value) { + tmp.push(encodeValue(operator, value)); + }); + } else { + Object.keys(value).forEach(function (k) { + if (isDefined(value[k])) { + tmp.push(encodeUnreserved(k)); + tmp.push(encodeValue(operator, value[k].toString())); + } + }); + } + + if (isKeyOperator(operator)) { + result.push(encodeUnreserved(key) + "=" + tmp.join(",")); + } else if (tmp.length !== 0) { + result.push(tmp.join(",")); + } + } + } + } else { + if (operator === ";") { + if (isDefined(value)) { + result.push(encodeUnreserved(key)); + } + } else if (value === "" && (operator === "&" || operator === "?")) { + result.push(encodeUnreserved(key) + "="); + } else if (value === "") { + result.push(""); + } + } + + return result; +} + +function parseUrl(template) { + return { + expand: expand.bind(null, template) + }; +} + +function expand(template, 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(","); + } + } else { + return encodeReserved(literal); + } + }); +} + +function parse(options) { + // https://fetch.spec.whatwg.org/#methods + let method = options.method.toUpperCase(); // replace :varname with {varname} to make it RFC 6570 compatible + + 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"]); // extract variable names from URL to calculate remaining variables later + + 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) { + // e.g. application/vnd.github.v3+json => application/vnd.github.v3.raw + 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(","); + } + } // for GET/HEAD requests, set URL query parameters from remaining parameters + // for PATCH/POST/PUT/DELETE requests, set request body from remaining parameters + + + 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; + } + } + } // default content-type for JSON if body is set + + + if (!headers["content-type"] && typeof body !== "undefined") { + headers["content-type"] = "application/json; charset=utf-8"; + } // GitHub expects 'content-length: 0' header for PUT/PATCH requests without body. + // fetch does not allow to set `content-length` header, but we can set body to an empty string + + + if (["PATCH", "PUT"].includes(method) && typeof body === "undefined") { + body = ""; + } // Only return body/request keys if present + + + return Object.assign({ + method, + url, + headers + }, typeof body !== "undefined" ? { + body + } : null, options.request ? { + request: options.request + } : null); +} + +function endpointWithDefaults(defaults, route, options) { + return parse(merge(defaults, route, options)); +} + +function withDefaults(oldDefaults, newDefaults) { + const DEFAULTS = merge(oldDefaults, newDefaults); + const endpoint = endpointWithDefaults.bind(null, DEFAULTS); + return Object.assign(endpoint, { + DEFAULTS, + defaults: withDefaults.bind(null, DEFAULTS), + merge: merge.bind(null, DEFAULTS), + parse + }); +} + +const VERSION = "6.0.12"; + +const userAgent = `octokit-endpoint.js/${VERSION} ${universalUserAgent.getUserAgent()}`; // DEFAULTS has all properties set that EndpointOptions has, except url. +// So we use RequestParameters and add method as additional required property. + +const DEFAULTS = { + method: "GET", + baseUrl: "https://api.github.com", + headers: { + accept: "application/vnd.github.v3+json", + "user-agent": userAgent + }, + mediaType: { + format: "", + previews: [] + } +}; + +const endpoint = withDefaults(null, DEFAULTS); + +exports.endpoint = endpoint; +//# sourceMappingURL=index.js.map diff --git a/node_modules/@octokit/endpoint/dist-node/index.js.map b/node_modules/@octokit/endpoint/dist-node/index.js.map new file mode 100644 index 0000000..003e4f2 --- /dev/null +++ b/node_modules/@octokit/endpoint/dist-node/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sources":["../dist-src/util/lowercase-keys.js","../dist-src/util/merge-deep.js","../dist-src/util/remove-undefined-properties.js","../dist-src/merge.js","../dist-src/util/add-query-parameters.js","../dist-src/util/extract-url-variable-names.js","../dist-src/util/omit.js","../dist-src/util/url-template.js","../dist-src/parse.js","../dist-src/endpoint-with-defaults.js","../dist-src/with-defaults.js","../dist-src/version.js","../dist-src/defaults.js","../dist-src/index.js"],"sourcesContent":["export function lowercaseKeys(object) {\n if (!object) {\n return {};\n }\n return Object.keys(object).reduce((newObj, key) => {\n newObj[key.toLowerCase()] = object[key];\n return newObj;\n }, {});\n}\n","import { isPlainObject } from \"is-plain-object\";\nexport function mergeDeep(defaults, options) {\n const result = Object.assign({}, defaults);\n Object.keys(options).forEach((key) => {\n if (isPlainObject(options[key])) {\n if (!(key in defaults))\n Object.assign(result, { [key]: options[key] });\n else\n result[key] = mergeDeep(defaults[key], options[key]);\n }\n else {\n Object.assign(result, { [key]: options[key] });\n }\n });\n return result;\n}\n","export function removeUndefinedProperties(obj) {\n for (const key in obj) {\n if (obj[key] === undefined) {\n delete obj[key];\n }\n }\n return obj;\n}\n","import { lowercaseKeys } from \"./util/lowercase-keys\";\nimport { mergeDeep } from \"./util/merge-deep\";\nimport { removeUndefinedProperties } from \"./util/remove-undefined-properties\";\nexport function merge(defaults, route, options) {\n if (typeof route === \"string\") {\n let [method, url] = route.split(\" \");\n options = Object.assign(url ? { method, url } : { url: method }, options);\n }\n else {\n options = Object.assign({}, route);\n }\n // lowercase header names before merging with defaults to avoid duplicates\n options.headers = lowercaseKeys(options.headers);\n // remove properties with undefined values before merging\n removeUndefinedProperties(options);\n removeUndefinedProperties(options.headers);\n const mergedOptions = mergeDeep(defaults || {}, options);\n // mediaType.previews arrays are merged, instead of overwritten\n if (defaults && defaults.mediaType.previews.length) {\n mergedOptions.mediaType.previews = defaults.mediaType.previews\n .filter((preview) => !mergedOptions.mediaType.previews.includes(preview))\n .concat(mergedOptions.mediaType.previews);\n }\n mergedOptions.mediaType.previews = mergedOptions.mediaType.previews.map((preview) => preview.replace(/-preview/, \"\"));\n return mergedOptions;\n}\n","export function addQueryParameters(url, parameters) {\n const separator = /\\?/.test(url) ? \"&\" : \"?\";\n const names = Object.keys(parameters);\n if (names.length === 0) {\n return url;\n }\n return (url +\n separator +\n names\n .map((name) => {\n if (name === \"q\") {\n return (\"q=\" + parameters.q.split(\"+\").map(encodeURIComponent).join(\"+\"));\n }\n return `${name}=${encodeURIComponent(parameters[name])}`;\n })\n .join(\"&\"));\n}\n","const urlVariableRegex = /\\{[^}]+\\}/g;\nfunction removeNonChars(variableName) {\n return variableName.replace(/^\\W+|\\W+$/g, \"\").split(/,/);\n}\nexport function extractUrlVariableNames(url) {\n const matches = url.match(urlVariableRegex);\n if (!matches) {\n return [];\n }\n return matches.map(removeNonChars).reduce((a, b) => a.concat(b), []);\n}\n","export function omit(object, keysToOmit) {\n return Object.keys(object)\n .filter((option) => !keysToOmit.includes(option))\n .reduce((obj, key) => {\n obj[key] = object[key];\n return obj;\n }, {});\n}\n","// Based on https://github.com/bramstein/url-template, licensed under BSD\n// TODO: create separate package.\n//\n// Copyright (c) 2012-2014, Bram Stein\n// All rights reserved.\n// Redistribution and use in source and binary forms, with or without\n// modification, are permitted provided that the following conditions\n// are met:\n// 1. Redistributions of source code must retain the above copyright\n// notice, this list of conditions and the following disclaimer.\n// 2. Redistributions in binary form must reproduce the above copyright\n// notice, this list of conditions and the following disclaimer in the\n// documentation and/or other materials provided with the distribution.\n// 3. The name of the author may not be used to endorse or promote products\n// derived from this software without specific prior written permission.\n// THIS SOFTWARE IS PROVIDED BY THE AUTHOR \"AS IS\" AND ANY EXPRESS OR IMPLIED\n// WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\n// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO\n// EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n// INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n// BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY\n// OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\n// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,\n// EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n/* istanbul ignore file */\nfunction encodeReserved(str) {\n return str\n .split(/(%[0-9A-Fa-f]{2})/g)\n .map(function (part) {\n if (!/%[0-9A-Fa-f]/.test(part)) {\n part = encodeURI(part).replace(/%5B/g, \"[\").replace(/%5D/g, \"]\");\n }\n return part;\n })\n .join(\"\");\n}\nfunction encodeUnreserved(str) {\n return encodeURIComponent(str).replace(/[!'()*]/g, function (c) {\n return \"%\" + c.charCodeAt(0).toString(16).toUpperCase();\n });\n}\nfunction encodeValue(operator, value, key) {\n value =\n operator === \"+\" || operator === \"#\"\n ? encodeReserved(value)\n : encodeUnreserved(value);\n if (key) {\n return encodeUnreserved(key) + \"=\" + value;\n }\n else {\n return value;\n }\n}\nfunction isDefined(value) {\n return value !== undefined && value !== null;\n}\nfunction isKeyOperator(operator) {\n return operator === \";\" || operator === \"&\" || operator === \"?\";\n}\nfunction getValues(context, operator, key, modifier) {\n var value = context[key], result = [];\n if (isDefined(value) && value !== \"\") {\n if (typeof value === \"string\" ||\n typeof value === \"number\" ||\n typeof value === \"boolean\") {\n value = value.toString();\n if (modifier && modifier !== \"*\") {\n value = value.substring(0, parseInt(modifier, 10));\n }\n result.push(encodeValue(operator, value, isKeyOperator(operator) ? key : \"\"));\n }\n else {\n if (modifier === \"*\") {\n if (Array.isArray(value)) {\n value.filter(isDefined).forEach(function (value) {\n result.push(encodeValue(operator, value, isKeyOperator(operator) ? key : \"\"));\n });\n }\n else {\n Object.keys(value).forEach(function (k) {\n if (isDefined(value[k])) {\n result.push(encodeValue(operator, value[k], k));\n }\n });\n }\n }\n else {\n const tmp = [];\n if (Array.isArray(value)) {\n value.filter(isDefined).forEach(function (value) {\n tmp.push(encodeValue(operator, value));\n });\n }\n else {\n Object.keys(value).forEach(function (k) {\n if (isDefined(value[k])) {\n tmp.push(encodeUnreserved(k));\n tmp.push(encodeValue(operator, value[k].toString()));\n }\n });\n }\n if (isKeyOperator(operator)) {\n result.push(encodeUnreserved(key) + \"=\" + tmp.join(\",\"));\n }\n else if (tmp.length !== 0) {\n result.push(tmp.join(\",\"));\n }\n }\n }\n }\n else {\n if (operator === \";\") {\n if (isDefined(value)) {\n result.push(encodeUnreserved(key));\n }\n }\n else if (value === \"\" && (operator === \"&\" || operator === \"?\")) {\n result.push(encodeUnreserved(key) + \"=\");\n }\n else if (value === \"\") {\n result.push(\"\");\n }\n }\n return result;\n}\nexport function parseUrl(template) {\n return {\n expand: expand.bind(null, template),\n };\n}\nfunction expand(template, context) {\n var operators = [\"+\", \"#\", \".\", \"/\", \";\", \"?\", \"&\"];\n return template.replace(/\\{([^\\{\\}]+)\\}|([^\\{\\}]+)/g, function (_, expression, literal) {\n if (expression) {\n let operator = \"\";\n const values = [];\n if (operators.indexOf(expression.charAt(0)) !== -1) {\n operator = expression.charAt(0);\n expression = expression.substr(1);\n }\n expression.split(/,/g).forEach(function (variable) {\n var tmp = /([^:\\*]*)(?::(\\d+)|(\\*))?/.exec(variable);\n values.push(getValues(context, operator, tmp[1], tmp[2] || tmp[3]));\n });\n if (operator && operator !== \"+\") {\n var separator = \",\";\n if (operator === \"?\") {\n separator = \"&\";\n }\n else if (operator !== \"#\") {\n separator = operator;\n }\n return (values.length !== 0 ? operator : \"\") + values.join(separator);\n }\n else {\n return values.join(\",\");\n }\n }\n else {\n return encodeReserved(literal);\n }\n });\n}\n","import { addQueryParameters } from \"./util/add-query-parameters\";\nimport { extractUrlVariableNames } from \"./util/extract-url-variable-names\";\nimport { omit } from \"./util/omit\";\nimport { parseUrl } from \"./util/url-template\";\nexport function parse(options) {\n // https://fetch.spec.whatwg.org/#methods\n let method = options.method.toUpperCase();\n // replace :varname with {varname} to make it RFC 6570 compatible\n let url = (options.url || \"/\").replace(/:([a-z]\\w+)/g, \"{$1}\");\n let headers = Object.assign({}, options.headers);\n let body;\n let parameters = omit(options, [\n \"method\",\n \"baseUrl\",\n \"url\",\n \"headers\",\n \"request\",\n \"mediaType\",\n ]);\n // extract variable names from URL to calculate remaining variables later\n const urlVariableNames = extractUrlVariableNames(url);\n url = parseUrl(url).expand(parameters);\n if (!/^http/.test(url)) {\n url = options.baseUrl + url;\n }\n const omittedParameters = Object.keys(options)\n .filter((option) => urlVariableNames.includes(option))\n .concat(\"baseUrl\");\n const remainingParameters = omit(parameters, omittedParameters);\n const isBinaryRequest = /application\\/octet-stream/i.test(headers.accept);\n if (!isBinaryRequest) {\n if (options.mediaType.format) {\n // e.g. application/vnd.github.v3+json => application/vnd.github.v3.raw\n headers.accept = headers.accept\n .split(/,/)\n .map((preview) => preview.replace(/application\\/vnd(\\.\\w+)(\\.v3)?(\\.\\w+)?(\\+json)?$/, `application/vnd$1$2.${options.mediaType.format}`))\n .join(\",\");\n }\n if (options.mediaType.previews.length) {\n const previewsFromAcceptHeader = headers.accept.match(/[\\w-]+(?=-preview)/g) || [];\n headers.accept = previewsFromAcceptHeader\n .concat(options.mediaType.previews)\n .map((preview) => {\n const format = options.mediaType.format\n ? `.${options.mediaType.format}`\n : \"+json\";\n return `application/vnd.github.${preview}-preview${format}`;\n })\n .join(\",\");\n }\n }\n // for GET/HEAD requests, set URL query parameters from remaining parameters\n // for PATCH/POST/PUT/DELETE requests, set request body from remaining parameters\n if ([\"GET\", \"HEAD\"].includes(method)) {\n url = addQueryParameters(url, remainingParameters);\n }\n else {\n if (\"data\" in remainingParameters) {\n body = remainingParameters.data;\n }\n else {\n if (Object.keys(remainingParameters).length) {\n body = remainingParameters;\n }\n else {\n headers[\"content-length\"] = 0;\n }\n }\n }\n // default content-type for JSON if body is set\n if (!headers[\"content-type\"] && typeof body !== \"undefined\") {\n headers[\"content-type\"] = \"application/json; charset=utf-8\";\n }\n // GitHub expects 'content-length: 0' header for PUT/PATCH requests without body.\n // fetch does not allow to set `content-length` header, but we can set body to an empty string\n if ([\"PATCH\", \"PUT\"].includes(method) && typeof body === \"undefined\") {\n body = \"\";\n }\n // Only return body/request keys if present\n return Object.assign({ method, url, headers }, typeof body !== \"undefined\" ? { body } : null, options.request ? { request: options.request } : null);\n}\n","import { merge } from \"./merge\";\nimport { parse } from \"./parse\";\nexport function endpointWithDefaults(defaults, route, options) {\n return parse(merge(defaults, route, options));\n}\n","import { endpointWithDefaults } from \"./endpoint-with-defaults\";\nimport { merge } from \"./merge\";\nimport { parse } from \"./parse\";\nexport function withDefaults(oldDefaults, newDefaults) {\n const DEFAULTS = merge(oldDefaults, newDefaults);\n const endpoint = endpointWithDefaults.bind(null, DEFAULTS);\n return Object.assign(endpoint, {\n DEFAULTS,\n defaults: withDefaults.bind(null, DEFAULTS),\n merge: merge.bind(null, DEFAULTS),\n parse,\n });\n}\n","export const VERSION = \"6.0.12\";\n","import { getUserAgent } from \"universal-user-agent\";\nimport { VERSION } from \"./version\";\nconst userAgent = `octokit-endpoint.js/${VERSION} ${getUserAgent()}`;\n// DEFAULTS has all properties set that EndpointOptions has, except url.\n// So we use RequestParameters and add method as additional required property.\nexport const DEFAULTS = {\n method: \"GET\",\n baseUrl: \"https://api.github.com\",\n headers: {\n accept: \"application/vnd.github.v3+json\",\n \"user-agent\": userAgent,\n },\n mediaType: {\n format: \"\",\n previews: [],\n },\n};\n","import { withDefaults } from \"./with-defaults\";\nimport { DEFAULTS } from \"./defaults\";\nexport const endpoint = withDefaults(null, DEFAULTS);\n"],"names":["lowercaseKeys","object","Object","keys","reduce","newObj","key","toLowerCase","mergeDeep","defaults","options","result","assign","forEach","isPlainObject","removeUndefinedProperties","obj","undefined","merge","route","method","url","split","headers","mergedOptions","mediaType","previews","length","filter","preview","includes","concat","map","replace","addQueryParameters","parameters","separator","test","names","name","q","encodeURIComponent","join","urlVariableRegex","removeNonChars","variableName","extractUrlVariableNames","matches","match","a","b","omit","keysToOmit","option","encodeReserved","str","part","encodeURI","encodeUnreserved","c","charCodeAt","toString","toUpperCase","encodeValue","operator","value","isDefined","isKeyOperator","getValues","context","modifier","substring","parseInt","push","Array","isArray","k","tmp","parseUrl","template","expand","bind","operators","_","expression","literal","values","indexOf","charAt","substr","variable","exec","parse","body","urlVariableNames","baseUrl","omittedParameters","remainingParameters","isBinaryRequest","accept","format","previewsFromAcceptHeader","data","request","endpointWithDefaults","withDefaults","oldDefaults","newDefaults","DEFAULTS","endpoint","VERSION","userAgent","getUserAgent"],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@octokit/endpoint/dist-src/defaults.js b/node_modules/@octokit/endpoint/dist-src/defaults.js new file mode 100644 index 0000000..456e586 --- /dev/null +++ b/node_modules/@octokit/endpoint/dist-src/defaults.js @@ -0,0 +1,17 @@ +import { getUserAgent } from "universal-user-agent"; +import { VERSION } from "./version"; +const userAgent = `octokit-endpoint.js/${VERSION} ${getUserAgent()}`; +// DEFAULTS has all properties set that EndpointOptions has, except url. +// So we use RequestParameters and add method as additional required property. +export const DEFAULTS = { + method: "GET", + baseUrl: "https://api.github.com", + headers: { + accept: "application/vnd.github.v3+json", + "user-agent": userAgent, + }, + mediaType: { + format: "", + previews: [], + }, +}; diff --git a/node_modules/@octokit/endpoint/dist-src/endpoint-with-defaults.js b/node_modules/@octokit/endpoint/dist-src/endpoint-with-defaults.js new file mode 100644 index 0000000..5763758 --- /dev/null +++ b/node_modules/@octokit/endpoint/dist-src/endpoint-with-defaults.js @@ -0,0 +1,5 @@ +import { merge } from "./merge"; +import { parse } from "./parse"; +export function endpointWithDefaults(defaults, route, options) { + return parse(merge(defaults, route, options)); +} diff --git a/node_modules/@octokit/endpoint/dist-src/index.js b/node_modules/@octokit/endpoint/dist-src/index.js new file mode 100644 index 0000000..599917f --- /dev/null +++ b/node_modules/@octokit/endpoint/dist-src/index.js @@ -0,0 +1,3 @@ +import { withDefaults } from "./with-defaults"; +import { DEFAULTS } from "./defaults"; +export const endpoint = withDefaults(null, DEFAULTS); diff --git a/node_modules/@octokit/endpoint/dist-src/merge.js b/node_modules/@octokit/endpoint/dist-src/merge.js new file mode 100644 index 0000000..1abcecf --- /dev/null +++ b/node_modules/@octokit/endpoint/dist-src/merge.js @@ -0,0 +1,26 @@ +import { lowercaseKeys } from "./util/lowercase-keys"; +import { mergeDeep } from "./util/merge-deep"; +import { removeUndefinedProperties } from "./util/remove-undefined-properties"; +export 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); + } + // lowercase header names before merging with defaults to avoid duplicates + options.headers = lowercaseKeys(options.headers); + // remove properties with undefined values before merging + removeUndefinedProperties(options); + removeUndefinedProperties(options.headers); + const mergedOptions = mergeDeep(defaults || {}, options); + // mediaType.previews arrays are merged, instead of overwritten + 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; +} diff --git a/node_modules/@octokit/endpoint/dist-src/parse.js b/node_modules/@octokit/endpoint/dist-src/parse.js new file mode 100644 index 0000000..6bdd1bf --- /dev/null +++ b/node_modules/@octokit/endpoint/dist-src/parse.js @@ -0,0 +1,81 @@ +import { addQueryParameters } from "./util/add-query-parameters"; +import { extractUrlVariableNames } from "./util/extract-url-variable-names"; +import { omit } from "./util/omit"; +import { parseUrl } from "./util/url-template"; +export function parse(options) { + // https://fetch.spec.whatwg.org/#methods + let method = options.method.toUpperCase(); + // replace :varname with {varname} to make it RFC 6570 compatible + 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", + ]); + // extract variable names from URL to calculate remaining variables later + 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) { + // e.g. application/vnd.github.v3+json => application/vnd.github.v3.raw + 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(","); + } + } + // for GET/HEAD requests, set URL query parameters from remaining parameters + // for PATCH/POST/PUT/DELETE requests, set request body from remaining parameters + 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; + } + } + } + // default content-type for JSON if body is set + if (!headers["content-type"] && typeof body !== "undefined") { + headers["content-type"] = "application/json; charset=utf-8"; + } + // GitHub expects 'content-length: 0' header for PUT/PATCH requests without body. + // fetch does not allow to set `content-length` header, but we can set body to an empty string + if (["PATCH", "PUT"].includes(method) && typeof body === "undefined") { + body = ""; + } + // Only return body/request keys if present + return Object.assign({ method, url, headers }, typeof body !== "undefined" ? { body } : null, options.request ? { request: options.request } : null); +} diff --git a/node_modules/@octokit/endpoint/dist-src/util/add-query-parameters.js b/node_modules/@octokit/endpoint/dist-src/util/add-query-parameters.js new file mode 100644 index 0000000..d26be31 --- /dev/null +++ b/node_modules/@octokit/endpoint/dist-src/util/add-query-parameters.js @@ -0,0 +1,17 @@ +export function addQueryParameters(url, parameters) { + const separator = /\?/.test(url) ? "&" : "?"; + const names = Object.keys(parameters); + if (names.length === 0) { + return url; + } + return (url + + separator + + names + .map((name) => { + if (name === "q") { + return ("q=" + parameters.q.split("+").map(encodeURIComponent).join("+")); + } + return `${name}=${encodeURIComponent(parameters[name])}`; + }) + .join("&")); +} diff --git a/node_modules/@octokit/endpoint/dist-src/util/extract-url-variable-names.js b/node_modules/@octokit/endpoint/dist-src/util/extract-url-variable-names.js new file mode 100644 index 0000000..3e75db2 --- /dev/null +++ b/node_modules/@octokit/endpoint/dist-src/util/extract-url-variable-names.js @@ -0,0 +1,11 @@ +const urlVariableRegex = /\{[^}]+\}/g; +function removeNonChars(variableName) { + return variableName.replace(/^\W+|\W+$/g, "").split(/,/); +} +export function extractUrlVariableNames(url) { + const matches = url.match(urlVariableRegex); + if (!matches) { + return []; + } + return matches.map(removeNonChars).reduce((a, b) => a.concat(b), []); +} diff --git a/node_modules/@octokit/endpoint/dist-src/util/lowercase-keys.js b/node_modules/@octokit/endpoint/dist-src/util/lowercase-keys.js new file mode 100644 index 0000000..0780642 --- /dev/null +++ b/node_modules/@octokit/endpoint/dist-src/util/lowercase-keys.js @@ -0,0 +1,9 @@ +export function lowercaseKeys(object) { + if (!object) { + return {}; + } + return Object.keys(object).reduce((newObj, key) => { + newObj[key.toLowerCase()] = object[key]; + return newObj; + }, {}); +} diff --git a/node_modules/@octokit/endpoint/dist-src/util/merge-deep.js b/node_modules/@octokit/endpoint/dist-src/util/merge-deep.js new file mode 100644 index 0000000..d92aca3 --- /dev/null +++ b/node_modules/@octokit/endpoint/dist-src/util/merge-deep.js @@ -0,0 +1,16 @@ +import { isPlainObject } from "is-plain-object"; +export function mergeDeep(defaults, options) { + const result = Object.assign({}, defaults); + Object.keys(options).forEach((key) => { + if (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; +} diff --git a/node_modules/@octokit/endpoint/dist-src/util/omit.js b/node_modules/@octokit/endpoint/dist-src/util/omit.js new file mode 100644 index 0000000..6245031 --- /dev/null +++ b/node_modules/@octokit/endpoint/dist-src/util/omit.js @@ -0,0 +1,8 @@ +export function omit(object, keysToOmit) { + return Object.keys(object) + .filter((option) => !keysToOmit.includes(option)) + .reduce((obj, key) => { + obj[key] = object[key]; + return obj; + }, {}); +} diff --git a/node_modules/@octokit/endpoint/dist-src/util/remove-undefined-properties.js b/node_modules/@octokit/endpoint/dist-src/util/remove-undefined-properties.js new file mode 100644 index 0000000..6b5ee5f --- /dev/null +++ b/node_modules/@octokit/endpoint/dist-src/util/remove-undefined-properties.js @@ -0,0 +1,8 @@ +export function removeUndefinedProperties(obj) { + for (const key in obj) { + if (obj[key] === undefined) { + delete obj[key]; + } + } + return obj; +} diff --git a/node_modules/@octokit/endpoint/dist-src/util/url-template.js b/node_modules/@octokit/endpoint/dist-src/util/url-template.js new file mode 100644 index 0000000..439b3fe --- /dev/null +++ b/node_modules/@octokit/endpoint/dist-src/util/url-template.js @@ -0,0 +1,164 @@ +// Based on https://github.com/bramstein/url-template, licensed under BSD +// TODO: create separate package. +// +// Copyright (c) 2012-2014, Bram Stein +// All rights reserved. +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions +// are met: +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// 3. The name of the author may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED +// WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +// EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +// INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +// BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY +// OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, +// EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +/* istanbul ignore file */ +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 !== undefined && value !== null; +} +function isKeyOperator(operator) { + return operator === ";" || operator === "&" || operator === "?"; +} +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 : "")); + } + else { + if (modifier === "*") { + if (Array.isArray(value)) { + value.filter(isDefined).forEach(function (value) { + result.push(encodeValue(operator, value, 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 (value) { + tmp.push(encodeValue(operator, value)); + }); + } + else { + Object.keys(value).forEach(function (k) { + if (isDefined(value[k])) { + tmp.push(encodeUnreserved(k)); + tmp.push(encodeValue(operator, value[k].toString())); + } + }); + } + if (isKeyOperator(operator)) { + result.push(encodeUnreserved(key) + "=" + tmp.join(",")); + } + else if (tmp.length !== 0) { + result.push(tmp.join(",")); + } + } + } + } + else { + if (operator === ";") { + if (isDefined(value)) { + result.push(encodeUnreserved(key)); + } + } + else if (value === "" && (operator === "&" || operator === "?")) { + result.push(encodeUnreserved(key) + "="); + } + else if (value === "") { + result.push(""); + } + } + return result; +} +export function parseUrl(template) { + return { + expand: expand.bind(null, template), + }; +} +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(","); + } + } + else { + return encodeReserved(literal); + } + }); +} diff --git a/node_modules/@octokit/endpoint/dist-src/version.js b/node_modules/@octokit/endpoint/dist-src/version.js new file mode 100644 index 0000000..930e255 --- /dev/null +++ b/node_modules/@octokit/endpoint/dist-src/version.js @@ -0,0 +1 @@ +export const VERSION = "6.0.12"; diff --git a/node_modules/@octokit/endpoint/dist-src/with-defaults.js b/node_modules/@octokit/endpoint/dist-src/with-defaults.js new file mode 100644 index 0000000..81baf6c --- /dev/null +++ b/node_modules/@octokit/endpoint/dist-src/with-defaults.js @@ -0,0 +1,13 @@ +import { endpointWithDefaults } from "./endpoint-with-defaults"; +import { merge } from "./merge"; +import { parse } from "./parse"; +export function withDefaults(oldDefaults, newDefaults) { + const DEFAULTS = merge(oldDefaults, newDefaults); + const endpoint = endpointWithDefaults.bind(null, DEFAULTS); + return Object.assign(endpoint, { + DEFAULTS, + defaults: withDefaults.bind(null, DEFAULTS), + merge: merge.bind(null, DEFAULTS), + parse, + }); +} diff --git a/node_modules/@octokit/endpoint/dist-types/defaults.d.ts b/node_modules/@octokit/endpoint/dist-types/defaults.d.ts new file mode 100644 index 0000000..30fcd20 --- /dev/null +++ b/node_modules/@octokit/endpoint/dist-types/defaults.d.ts @@ -0,0 +1,2 @@ +import { EndpointDefaults } from "@octokit/types"; +export declare const DEFAULTS: EndpointDefaults; diff --git a/node_modules/@octokit/endpoint/dist-types/endpoint-with-defaults.d.ts b/node_modules/@octokit/endpoint/dist-types/endpoint-with-defaults.d.ts new file mode 100644 index 0000000..ff39e5e --- /dev/null +++ b/node_modules/@octokit/endpoint/dist-types/endpoint-with-defaults.d.ts @@ -0,0 +1,3 @@ +import { EndpointOptions, RequestParameters, Route } from "@octokit/types"; +import { DEFAULTS } from "./defaults"; +export declare function endpointWithDefaults(defaults: typeof DEFAULTS, route: Route | EndpointOptions, options?: RequestParameters): import("@octokit/types").RequestOptions; diff --git a/node_modules/@octokit/endpoint/dist-types/index.d.ts b/node_modules/@octokit/endpoint/dist-types/index.d.ts new file mode 100644 index 0000000..1ede136 --- /dev/null +++ b/node_modules/@octokit/endpoint/dist-types/index.d.ts @@ -0,0 +1 @@ +export declare const endpoint: import("@octokit/types").EndpointInterface; diff --git a/node_modules/@octokit/endpoint/dist-types/merge.d.ts b/node_modules/@octokit/endpoint/dist-types/merge.d.ts new file mode 100644 index 0000000..b75a15e --- /dev/null +++ b/node_modules/@octokit/endpoint/dist-types/merge.d.ts @@ -0,0 +1,2 @@ +import { EndpointDefaults, RequestParameters, Route } from "@octokit/types"; +export declare function merge(defaults: EndpointDefaults | null, route?: Route | RequestParameters, options?: RequestParameters): EndpointDefaults; diff --git a/node_modules/@octokit/endpoint/dist-types/parse.d.ts b/node_modules/@octokit/endpoint/dist-types/parse.d.ts new file mode 100644 index 0000000..fbe2144 --- /dev/null +++ b/node_modules/@octokit/endpoint/dist-types/parse.d.ts @@ -0,0 +1,2 @@ +import { EndpointDefaults, RequestOptions } from "@octokit/types"; +export declare function parse(options: EndpointDefaults): RequestOptions; diff --git a/node_modules/@octokit/endpoint/dist-types/util/add-query-parameters.d.ts b/node_modules/@octokit/endpoint/dist-types/util/add-query-parameters.d.ts new file mode 100644 index 0000000..4b192ac --- /dev/null +++ b/node_modules/@octokit/endpoint/dist-types/util/add-query-parameters.d.ts @@ -0,0 +1,4 @@ +export declare function addQueryParameters(url: string, parameters: { + [x: string]: string | undefined; + q?: string; +}): string; diff --git a/node_modules/@octokit/endpoint/dist-types/util/extract-url-variable-names.d.ts b/node_modules/@octokit/endpoint/dist-types/util/extract-url-variable-names.d.ts new file mode 100644 index 0000000..93586d4 --- /dev/null +++ b/node_modules/@octokit/endpoint/dist-types/util/extract-url-variable-names.d.ts @@ -0,0 +1 @@ +export declare function extractUrlVariableNames(url: string): string[]; diff --git a/node_modules/@octokit/endpoint/dist-types/util/lowercase-keys.d.ts b/node_modules/@octokit/endpoint/dist-types/util/lowercase-keys.d.ts new file mode 100644 index 0000000..1daf307 --- /dev/null +++ b/node_modules/@octokit/endpoint/dist-types/util/lowercase-keys.d.ts @@ -0,0 +1,5 @@ +export declare function lowercaseKeys(object?: { + [key: string]: any; +}): { + [key: string]: any; +}; diff --git a/node_modules/@octokit/endpoint/dist-types/util/merge-deep.d.ts b/node_modules/@octokit/endpoint/dist-types/util/merge-deep.d.ts new file mode 100644 index 0000000..914411c --- /dev/null +++ b/node_modules/@octokit/endpoint/dist-types/util/merge-deep.d.ts @@ -0,0 +1 @@ +export declare function mergeDeep(defaults: any, options: any): object; diff --git a/node_modules/@octokit/endpoint/dist-types/util/omit.d.ts b/node_modules/@octokit/endpoint/dist-types/util/omit.d.ts new file mode 100644 index 0000000..06927d6 --- /dev/null +++ b/node_modules/@octokit/endpoint/dist-types/util/omit.d.ts @@ -0,0 +1,5 @@ +export declare function omit(object: { + [key: string]: any; +}, keysToOmit: string[]): { + [key: string]: any; +}; diff --git a/node_modules/@octokit/endpoint/dist-types/util/remove-undefined-properties.d.ts b/node_modules/@octokit/endpoint/dist-types/util/remove-undefined-properties.d.ts new file mode 100644 index 0000000..92d8d85 --- /dev/null +++ b/node_modules/@octokit/endpoint/dist-types/util/remove-undefined-properties.d.ts @@ -0,0 +1 @@ +export declare function removeUndefinedProperties(obj: any): any; diff --git a/node_modules/@octokit/endpoint/dist-types/util/url-template.d.ts b/node_modules/@octokit/endpoint/dist-types/util/url-template.d.ts new file mode 100644 index 0000000..5d967ca --- /dev/null +++ b/node_modules/@octokit/endpoint/dist-types/util/url-template.d.ts @@ -0,0 +1,3 @@ +export declare function parseUrl(template: string): { + expand: (context: object) => string; +}; diff --git a/node_modules/@octokit/endpoint/dist-types/version.d.ts b/node_modules/@octokit/endpoint/dist-types/version.d.ts new file mode 100644 index 0000000..330d47a --- /dev/null +++ b/node_modules/@octokit/endpoint/dist-types/version.d.ts @@ -0,0 +1 @@ +export declare const VERSION = "6.0.12"; diff --git a/node_modules/@octokit/endpoint/dist-types/with-defaults.d.ts b/node_modules/@octokit/endpoint/dist-types/with-defaults.d.ts new file mode 100644 index 0000000..6f5afd1 --- /dev/null +++ b/node_modules/@octokit/endpoint/dist-types/with-defaults.d.ts @@ -0,0 +1,2 @@ +import { EndpointInterface, RequestParameters, EndpointDefaults } from "@octokit/types"; +export declare function withDefaults(oldDefaults: EndpointDefaults | null, newDefaults: RequestParameters): EndpointInterface; diff --git a/node_modules/@octokit/endpoint/dist-web/index.js b/node_modules/@octokit/endpoint/dist-web/index.js new file mode 100644 index 0000000..e152163 --- /dev/null +++ b/node_modules/@octokit/endpoint/dist-web/index.js @@ -0,0 +1,381 @@ +import { isPlainObject } from 'is-plain-object'; +import { getUserAgent } from 'universal-user-agent'; + +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(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] === undefined) { + delete obj[key]; + } + } + 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); + } + // lowercase header names before merging with defaults to avoid duplicates + options.headers = lowercaseKeys(options.headers); + // remove properties with undefined values before merging + removeUndefinedProperties(options); + removeUndefinedProperties(options.headers); + const mergedOptions = mergeDeep(defaults || {}, options); + // mediaType.previews arrays are merged, instead of overwritten + 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; + } + return (url + + separator + + names + .map((name) => { + if (name === "q") { + return ("q=" + parameters.q.split("+").map(encodeURIComponent).join("+")); + } + return `${name}=${encodeURIComponent(parameters[name])}`; + }) + .join("&")); +} + +const urlVariableRegex = /\{[^}]+\}/g; +function removeNonChars(variableName) { + return variableName.replace(/^\W+|\W+$/g, "").split(/,/); +} +function extractUrlVariableNames(url) { + const matches = url.match(urlVariableRegex); + if (!matches) { + return []; + } + 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; + }, {}); +} + +// Based on https://github.com/bramstein/url-template, licensed under BSD +// TODO: create separate package. +// +// Copyright (c) 2012-2014, Bram Stein +// All rights reserved. +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions +// are met: +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// 3. The name of the author may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED +// WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +// EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +// INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +// BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY +// OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, +// EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +/* istanbul ignore file */ +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 !== undefined && value !== null; +} +function isKeyOperator(operator) { + return operator === ";" || operator === "&" || operator === "?"; +} +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 : "")); + } + else { + if (modifier === "*") { + if (Array.isArray(value)) { + value.filter(isDefined).forEach(function (value) { + result.push(encodeValue(operator, value, 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 (value) { + tmp.push(encodeValue(operator, value)); + }); + } + else { + Object.keys(value).forEach(function (k) { + if (isDefined(value[k])) { + tmp.push(encodeUnreserved(k)); + tmp.push(encodeValue(operator, value[k].toString())); + } + }); + } + if (isKeyOperator(operator)) { + result.push(encodeUnreserved(key) + "=" + tmp.join(",")); + } + else if (tmp.length !== 0) { + result.push(tmp.join(",")); + } + } + } + } + else { + if (operator === ";") { + if (isDefined(value)) { + result.push(encodeUnreserved(key)); + } + } + else if (value === "" && (operator === "&" || operator === "?")) { + result.push(encodeUnreserved(key) + "="); + } + else if (value === "") { + result.push(""); + } + } + return result; +} +function parseUrl(template) { + return { + expand: expand.bind(null, template), + }; +} +function expand(template, 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(","); + } + } + else { + return encodeReserved(literal); + } + }); +} + +function parse(options) { + // https://fetch.spec.whatwg.org/#methods + let method = options.method.toUpperCase(); + // replace :varname with {varname} to make it RFC 6570 compatible + 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", + ]); + // extract variable names from URL to calculate remaining variables later + 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) { + // e.g. application/vnd.github.v3+json => application/vnd.github.v3.raw + 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(","); + } + } + // for GET/HEAD requests, set URL query parameters from remaining parameters + // for PATCH/POST/PUT/DELETE requests, set request body from remaining parameters + 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; + } + } + } + // default content-type for JSON if body is set + if (!headers["content-type"] && typeof body !== "undefined") { + headers["content-type"] = "application/json; charset=utf-8"; + } + // GitHub expects 'content-length: 0' header for PUT/PATCH requests without body. + // fetch does not allow to set `content-length` header, but we can set body to an empty string + if (["PATCH", "PUT"].includes(method) && typeof body === "undefined") { + body = ""; + } + // Only return body/request keys if present + return Object.assign({ method, url, headers }, typeof body !== "undefined" ? { body } : null, options.request ? { request: options.request } : null); +} + +function endpointWithDefaults(defaults, route, options) { + return parse(merge(defaults, route, options)); +} + +function withDefaults(oldDefaults, newDefaults) { + const DEFAULTS = merge(oldDefaults, newDefaults); + const endpoint = endpointWithDefaults.bind(null, DEFAULTS); + return Object.assign(endpoint, { + DEFAULTS, + defaults: withDefaults.bind(null, DEFAULTS), + merge: merge.bind(null, DEFAULTS), + parse, + }); +} + +const VERSION = "6.0.12"; + +const userAgent = `octokit-endpoint.js/${VERSION} ${getUserAgent()}`; +// DEFAULTS has all properties set that EndpointOptions has, except url. +// So we use RequestParameters and add method as additional required property. +const DEFAULTS = { + method: "GET", + baseUrl: "https://api.github.com", + headers: { + accept: "application/vnd.github.v3+json", + "user-agent": userAgent, + }, + mediaType: { + format: "", + previews: [], + }, +}; + +const endpoint = withDefaults(null, DEFAULTS); + +export { endpoint }; +//# sourceMappingURL=index.js.map diff --git a/node_modules/@octokit/endpoint/dist-web/index.js.map b/node_modules/@octokit/endpoint/dist-web/index.js.map new file mode 100644 index 0000000..1d60d02 --- /dev/null +++ b/node_modules/@octokit/endpoint/dist-web/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sources":["../dist-src/util/lowercase-keys.js","../dist-src/util/merge-deep.js","../dist-src/util/remove-undefined-properties.js","../dist-src/merge.js","../dist-src/util/add-query-parameters.js","../dist-src/util/extract-url-variable-names.js","../dist-src/util/omit.js","../dist-src/util/url-template.js","../dist-src/parse.js","../dist-src/endpoint-with-defaults.js","../dist-src/with-defaults.js","../dist-src/version.js","../dist-src/defaults.js","../dist-src/index.js"],"sourcesContent":["export function lowercaseKeys(object) {\n if (!object) {\n return {};\n }\n return Object.keys(object).reduce((newObj, key) => {\n newObj[key.toLowerCase()] = object[key];\n return newObj;\n }, {});\n}\n","import { isPlainObject } from \"is-plain-object\";\nexport function mergeDeep(defaults, options) {\n const result = Object.assign({}, defaults);\n Object.keys(options).forEach((key) => {\n if (isPlainObject(options[key])) {\n if (!(key in defaults))\n Object.assign(result, { [key]: options[key] });\n else\n result[key] = mergeDeep(defaults[key], options[key]);\n }\n else {\n Object.assign(result, { [key]: options[key] });\n }\n });\n return result;\n}\n","export function removeUndefinedProperties(obj) {\n for (const key in obj) {\n if (obj[key] === undefined) {\n delete obj[key];\n }\n }\n return obj;\n}\n","import { lowercaseKeys } from \"./util/lowercase-keys\";\nimport { mergeDeep } from \"./util/merge-deep\";\nimport { removeUndefinedProperties } from \"./util/remove-undefined-properties\";\nexport function merge(defaults, route, options) {\n if (typeof route === \"string\") {\n let [method, url] = route.split(\" \");\n options = Object.assign(url ? { method, url } : { url: method }, options);\n }\n else {\n options = Object.assign({}, route);\n }\n // lowercase header names before merging with defaults to avoid duplicates\n options.headers = lowercaseKeys(options.headers);\n // remove properties with undefined values before merging\n removeUndefinedProperties(options);\n removeUndefinedProperties(options.headers);\n const mergedOptions = mergeDeep(defaults || {}, options);\n // mediaType.previews arrays are merged, instead of overwritten\n if (defaults && defaults.mediaType.previews.length) {\n mergedOptions.mediaType.previews = defaults.mediaType.previews\n .filter((preview) => !mergedOptions.mediaType.previews.includes(preview))\n .concat(mergedOptions.mediaType.previews);\n }\n mergedOptions.mediaType.previews = mergedOptions.mediaType.previews.map((preview) => preview.replace(/-preview/, \"\"));\n return mergedOptions;\n}\n","export function addQueryParameters(url, parameters) {\n const separator = /\\?/.test(url) ? \"&\" : \"?\";\n const names = Object.keys(parameters);\n if (names.length === 0) {\n return url;\n }\n return (url +\n separator +\n names\n .map((name) => {\n if (name === \"q\") {\n return (\"q=\" + parameters.q.split(\"+\").map(encodeURIComponent).join(\"+\"));\n }\n return `${name}=${encodeURIComponent(parameters[name])}`;\n })\n .join(\"&\"));\n}\n","const urlVariableRegex = /\\{[^}]+\\}/g;\nfunction removeNonChars(variableName) {\n return variableName.replace(/^\\W+|\\W+$/g, \"\").split(/,/);\n}\nexport function extractUrlVariableNames(url) {\n const matches = url.match(urlVariableRegex);\n if (!matches) {\n return [];\n }\n return matches.map(removeNonChars).reduce((a, b) => a.concat(b), []);\n}\n","export function omit(object, keysToOmit) {\n return Object.keys(object)\n .filter((option) => !keysToOmit.includes(option))\n .reduce((obj, key) => {\n obj[key] = object[key];\n return obj;\n }, {});\n}\n","// Based on https://github.com/bramstein/url-template, licensed under BSD\n// TODO: create separate package.\n//\n// Copyright (c) 2012-2014, Bram Stein\n// All rights reserved.\n// Redistribution and use in source and binary forms, with or without\n// modification, are permitted provided that the following conditions\n// are met:\n// 1. Redistributions of source code must retain the above copyright\n// notice, this list of conditions and the following disclaimer.\n// 2. Redistributions in binary form must reproduce the above copyright\n// notice, this list of conditions and the following disclaimer in the\n// documentation and/or other materials provided with the distribution.\n// 3. The name of the author may not be used to endorse or promote products\n// derived from this software without specific prior written permission.\n// THIS SOFTWARE IS PROVIDED BY THE AUTHOR \"AS IS\" AND ANY EXPRESS OR IMPLIED\n// WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\n// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO\n// EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n// INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n// BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY\n// OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\n// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,\n// EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n/* istanbul ignore file */\nfunction encodeReserved(str) {\n return str\n .split(/(%[0-9A-Fa-f]{2})/g)\n .map(function (part) {\n if (!/%[0-9A-Fa-f]/.test(part)) {\n part = encodeURI(part).replace(/%5B/g, \"[\").replace(/%5D/g, \"]\");\n }\n return part;\n })\n .join(\"\");\n}\nfunction encodeUnreserved(str) {\n return encodeURIComponent(str).replace(/[!'()*]/g, function (c) {\n return \"%\" + c.charCodeAt(0).toString(16).toUpperCase();\n });\n}\nfunction encodeValue(operator, value, key) {\n value =\n operator === \"+\" || operator === \"#\"\n ? encodeReserved(value)\n : encodeUnreserved(value);\n if (key) {\n return encodeUnreserved(key) + \"=\" + value;\n }\n else {\n return value;\n }\n}\nfunction isDefined(value) {\n return value !== undefined && value !== null;\n}\nfunction isKeyOperator(operator) {\n return operator === \";\" || operator === \"&\" || operator === \"?\";\n}\nfunction getValues(context, operator, key, modifier) {\n var value = context[key], result = [];\n if (isDefined(value) && value !== \"\") {\n if (typeof value === \"string\" ||\n typeof value === \"number\" ||\n typeof value === \"boolean\") {\n value = value.toString();\n if (modifier && modifier !== \"*\") {\n value = value.substring(0, parseInt(modifier, 10));\n }\n result.push(encodeValue(operator, value, isKeyOperator(operator) ? key : \"\"));\n }\n else {\n if (modifier === \"*\") {\n if (Array.isArray(value)) {\n value.filter(isDefined).forEach(function (value) {\n result.push(encodeValue(operator, value, isKeyOperator(operator) ? key : \"\"));\n });\n }\n else {\n Object.keys(value).forEach(function (k) {\n if (isDefined(value[k])) {\n result.push(encodeValue(operator, value[k], k));\n }\n });\n }\n }\n else {\n const tmp = [];\n if (Array.isArray(value)) {\n value.filter(isDefined).forEach(function (value) {\n tmp.push(encodeValue(operator, value));\n });\n }\n else {\n Object.keys(value).forEach(function (k) {\n if (isDefined(value[k])) {\n tmp.push(encodeUnreserved(k));\n tmp.push(encodeValue(operator, value[k].toString()));\n }\n });\n }\n if (isKeyOperator(operator)) {\n result.push(encodeUnreserved(key) + \"=\" + tmp.join(\",\"));\n }\n else if (tmp.length !== 0) {\n result.push(tmp.join(\",\"));\n }\n }\n }\n }\n else {\n if (operator === \";\") {\n if (isDefined(value)) {\n result.push(encodeUnreserved(key));\n }\n }\n else if (value === \"\" && (operator === \"&\" || operator === \"?\")) {\n result.push(encodeUnreserved(key) + \"=\");\n }\n else if (value === \"\") {\n result.push(\"\");\n }\n }\n return result;\n}\nexport function parseUrl(template) {\n return {\n expand: expand.bind(null, template),\n };\n}\nfunction expand(template, context) {\n var operators = [\"+\", \"#\", \".\", \"/\", \";\", \"?\", \"&\"];\n return template.replace(/\\{([^\\{\\}]+)\\}|([^\\{\\}]+)/g, function (_, expression, literal) {\n if (expression) {\n let operator = \"\";\n const values = [];\n if (operators.indexOf(expression.charAt(0)) !== -1) {\n operator = expression.charAt(0);\n expression = expression.substr(1);\n }\n expression.split(/,/g).forEach(function (variable) {\n var tmp = /([^:\\*]*)(?::(\\d+)|(\\*))?/.exec(variable);\n values.push(getValues(context, operator, tmp[1], tmp[2] || tmp[3]));\n });\n if (operator && operator !== \"+\") {\n var separator = \",\";\n if (operator === \"?\") {\n separator = \"&\";\n }\n else if (operator !== \"#\") {\n separator = operator;\n }\n return (values.length !== 0 ? operator : \"\") + values.join(separator);\n }\n else {\n return values.join(\",\");\n }\n }\n else {\n return encodeReserved(literal);\n }\n });\n}\n","import { addQueryParameters } from \"./util/add-query-parameters\";\nimport { extractUrlVariableNames } from \"./util/extract-url-variable-names\";\nimport { omit } from \"./util/omit\";\nimport { parseUrl } from \"./util/url-template\";\nexport function parse(options) {\n // https://fetch.spec.whatwg.org/#methods\n let method = options.method.toUpperCase();\n // replace :varname with {varname} to make it RFC 6570 compatible\n let url = (options.url || \"/\").replace(/:([a-z]\\w+)/g, \"{$1}\");\n let headers = Object.assign({}, options.headers);\n let body;\n let parameters = omit(options, [\n \"method\",\n \"baseUrl\",\n \"url\",\n \"headers\",\n \"request\",\n \"mediaType\",\n ]);\n // extract variable names from URL to calculate remaining variables later\n const urlVariableNames = extractUrlVariableNames(url);\n url = parseUrl(url).expand(parameters);\n if (!/^http/.test(url)) {\n url = options.baseUrl + url;\n }\n const omittedParameters = Object.keys(options)\n .filter((option) => urlVariableNames.includes(option))\n .concat(\"baseUrl\");\n const remainingParameters = omit(parameters, omittedParameters);\n const isBinaryRequest = /application\\/octet-stream/i.test(headers.accept);\n if (!isBinaryRequest) {\n if (options.mediaType.format) {\n // e.g. application/vnd.github.v3+json => application/vnd.github.v3.raw\n headers.accept = headers.accept\n .split(/,/)\n .map((preview) => preview.replace(/application\\/vnd(\\.\\w+)(\\.v3)?(\\.\\w+)?(\\+json)?$/, `application/vnd$1$2.${options.mediaType.format}`))\n .join(\",\");\n }\n if (options.mediaType.previews.length) {\n const previewsFromAcceptHeader = headers.accept.match(/[\\w-]+(?=-preview)/g) || [];\n headers.accept = previewsFromAcceptHeader\n .concat(options.mediaType.previews)\n .map((preview) => {\n const format = options.mediaType.format\n ? `.${options.mediaType.format}`\n : \"+json\";\n return `application/vnd.github.${preview}-preview${format}`;\n })\n .join(\",\");\n }\n }\n // for GET/HEAD requests, set URL query parameters from remaining parameters\n // for PATCH/POST/PUT/DELETE requests, set request body from remaining parameters\n if ([\"GET\", \"HEAD\"].includes(method)) {\n url = addQueryParameters(url, remainingParameters);\n }\n else {\n if (\"data\" in remainingParameters) {\n body = remainingParameters.data;\n }\n else {\n if (Object.keys(remainingParameters).length) {\n body = remainingParameters;\n }\n else {\n headers[\"content-length\"] = 0;\n }\n }\n }\n // default content-type for JSON if body is set\n if (!headers[\"content-type\"] && typeof body !== \"undefined\") {\n headers[\"content-type\"] = \"application/json; charset=utf-8\";\n }\n // GitHub expects 'content-length: 0' header for PUT/PATCH requests without body.\n // fetch does not allow to set `content-length` header, but we can set body to an empty string\n if ([\"PATCH\", \"PUT\"].includes(method) && typeof body === \"undefined\") {\n body = \"\";\n }\n // Only return body/request keys if present\n return Object.assign({ method, url, headers }, typeof body !== \"undefined\" ? { body } : null, options.request ? { request: options.request } : null);\n}\n","import { merge } from \"./merge\";\nimport { parse } from \"./parse\";\nexport function endpointWithDefaults(defaults, route, options) {\n return parse(merge(defaults, route, options));\n}\n","import { endpointWithDefaults } from \"./endpoint-with-defaults\";\nimport { merge } from \"./merge\";\nimport { parse } from \"./parse\";\nexport function withDefaults(oldDefaults, newDefaults) {\n const DEFAULTS = merge(oldDefaults, newDefaults);\n const endpoint = endpointWithDefaults.bind(null, DEFAULTS);\n return Object.assign(endpoint, {\n DEFAULTS,\n defaults: withDefaults.bind(null, DEFAULTS),\n merge: merge.bind(null, DEFAULTS),\n parse,\n });\n}\n","export const VERSION = \"6.0.12\";\n","import { getUserAgent } from \"universal-user-agent\";\nimport { VERSION } from \"./version\";\nconst userAgent = `octokit-endpoint.js/${VERSION} ${getUserAgent()}`;\n// DEFAULTS has all properties set that EndpointOptions has, except url.\n// So we use RequestParameters and add method as additional required property.\nexport const DEFAULTS = {\n method: \"GET\",\n baseUrl: \"https://api.github.com\",\n headers: {\n accept: \"application/vnd.github.v3+json\",\n \"user-agent\": userAgent,\n },\n mediaType: {\n format: \"\",\n previews: [],\n },\n};\n","import { withDefaults } from \"./with-defaults\";\nimport { DEFAULTS } from \"./defaults\";\nexport const endpoint = withDefaults(null, DEFAULTS);\n"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@octokit/endpoint/package.json b/node_modules/@octokit/endpoint/package.json new file mode 100644 index 0000000..4e4d425 --- /dev/null +++ b/node_modules/@octokit/endpoint/package.json @@ -0,0 +1,44 @@ +{ + "name": "@octokit/endpoint", + "description": "Turns REST API endpoints into generic request options", + "version": "6.0.12", + "license": "MIT", + "files": [ + "dist-*/", + "bin/" + ], + "pika": true, + "sideEffects": false, + "keywords": [ + "octokit", + "github", + "api", + "rest" + ], + "repository": "github:octokit/endpoint.js", + "dependencies": { + "@octokit/types": "^6.0.3", + "is-plain-object": "^5.0.0", + "universal-user-agent": "^6.0.0" + }, + "devDependencies": { + "@pika/pack": "^0.5.0", + "@pika/plugin-build-node": "^0.9.0", + "@pika/plugin-build-web": "^0.9.0", + "@pika/plugin-ts-standard-pkg": "^0.9.0", + "@types/jest": "^26.0.0", + "jest": "^27.0.0", + "prettier": "2.3.1", + "semantic-release": "^17.0.0", + "semantic-release-plugin-update-version-in-files": "^1.0.0", + "ts-jest": "^27.0.0-next.12", + "typescript": "^4.0.2" + }, + "publishConfig": { + "access": "public" + }, + "source": "dist-src/index.js", + "types": "dist-types/index.d.ts", + "main": "dist-node/index.js", + "module": "dist-web/index.js" +} diff --git a/node_modules/@octokit/graphql/LICENSE b/node_modules/@octokit/graphql/LICENSE new file mode 100644 index 0000000..af5366d --- /dev/null +++ b/node_modules/@octokit/graphql/LICENSE @@ -0,0 +1,21 @@ +The MIT License + +Copyright (c) 2018 Octokit contributors + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/node_modules/@octokit/graphql/README.md b/node_modules/@octokit/graphql/README.md new file mode 100644 index 0000000..fe7881c --- /dev/null +++ b/node_modules/@octokit/graphql/README.md @@ -0,0 +1,409 @@ +# graphql.js + +> GitHub GraphQL API client for browsers and Node + +[![@latest](https://img.shields.io/npm/v/@octokit/graphql.svg)](https://www.npmjs.com/package/@octokit/graphql) +[![Build Status](https://github.com/octokit/graphql.js/workflows/Test/badge.svg)](https://github.com/octokit/graphql.js/actions?query=workflow%3ATest+branch%3Amaster) + + + +- [Usage](#usage) + - [Send a simple query](#send-a-simple-query) + - [Authentication](#authentication) + - [Variables](#variables) + - [Pass query together with headers and variables](#pass-query-together-with-headers-and-variables) + - [Use with GitHub Enterprise](#use-with-github-enterprise) + - [Use custom `@octokit/request` instance](#use-custom-octokitrequest-instance) +- [TypeScript](#typescript) + - [Additional Types](#additional-types) +- [Errors](#errors) +- [Partial responses](#partial-responses) +- [Writing tests](#writing-tests) +- [License](#license) + + + +## Usage + + + + + + +
        +Browsers + + +Load `@octokit/graphql` directly from [cdn.skypack.dev](https://cdn.skypack.dev) + +```html + +``` + +
        +Node + + +Install with npm install @octokit/graphql + +```js +const { graphql } = require("@octokit/graphql"); +// or: import { graphql } from "@octokit/graphql"; +``` + +
        + +### Send a simple query + +```js +const { repository } = await graphql( + ` + { + repository(owner: "octokit", name: "graphql.js") { + issues(last: 3) { + edges { + node { + title + } + } + } + } + } + `, + { + headers: { + authorization: `token secret123`, + }, + } +); +``` + +### Authentication + +The simplest way to authenticate a request is to set the `Authorization` header, e.g. to a [personal access token](https://github.com/settings/tokens/). + +```js +const graphqlWithAuth = graphql.defaults({ + headers: { + authorization: `token secret123`, + }, +}); +const { repository } = await graphqlWithAuth(` + { + repository(owner: "octokit", name: "graphql.js") { + issues(last: 3) { + edges { + node { + title + } + } + } + } + } +`); +``` + +For more complex authentication strategies such as GitHub Apps or Basic, we recommend the according authentication library exported by [`@octokit/auth`](https://github.com/octokit/auth.js). + +```js +const { createAppAuth } = require("@octokit/auth-app"); +const auth = createAppAuth({ + id: process.env.APP_ID, + privateKey: process.env.PRIVATE_KEY, + installationId: 123, +}); +const graphqlWithAuth = graphql.defaults({ + request: { + hook: auth.hook, + }, +}); + +const { repository } = await graphqlWithAuth( + `{ + repository(owner: "octokit", name: "graphql.js") { + issues(last: 3) { + edges { + node { + title + } + } + } + } + }` +); +``` + +### Variables + +⚠️ Do not use [template literals](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals) in the query strings as they make your code vulnerable to query injection attacks (see [#2](https://github.com/octokit/graphql.js/issues/2)). Use variables instead: + +```js +const { lastIssues } = await graphql( + ` + query lastIssues($owner: String!, $repo: String!, $num: Int = 3) { + repository(owner: $owner, name: $repo) { + issues(last: $num) { + edges { + node { + title + } + } + } + } + } + `, + { + owner: "octokit", + repo: "graphql.js", + headers: { + authorization: `token secret123`, + }, + } +); +``` + +### Pass query together with headers and variables + +```js +const { graphql } = require("@octokit/graphql"); +const { lastIssues } = await graphql({ + query: `query lastIssues($owner: String!, $repo: String!, $num: Int = 3) { + repository(owner:$owner, name:$repo) { + issues(last:$num) { + edges { + node { + title + } + } + } + } + }`, + owner: "octokit", + repo: "graphql.js", + headers: { + authorization: `token secret123`, + }, +}); +``` + +### Use with GitHub Enterprise + +```js +let { graphql } = require("@octokit/graphql"); +graphql = graphql.defaults({ + baseUrl: "https://github-enterprise.acme-inc.com/api", + headers: { + authorization: `token secret123`, + }, +}); +const { repository } = await graphql(` + { + repository(owner: "acme-project", name: "acme-repo") { + issues(last: 3) { + edges { + node { + title + } + } + } + } + } +`); +``` + +### Use custom `@octokit/request` instance + +```js +const { request } = require("@octokit/request"); +const { withCustomRequest } = require("@octokit/graphql"); + +let requestCounter = 0; +const myRequest = request.defaults({ + headers: { + authentication: "token secret123", + }, + request: { + hook(request, options) { + requestCounter++; + return request(options); + }, + }, +}); +const myGraphql = withCustomRequest(myRequest); +await request("/"); +await myGraphql(` + { + repository(owner: "acme-project", name: "acme-repo") { + issues(last: 3) { + edges { + node { + title + } + } + } + } + } +`); +// requestCounter is now 2 +``` + +## TypeScript + +`@octokit/graphql` is exposing proper types for its usage with TypeScript projects. + +### Additional Types + +Additionally, `GraphQlQueryResponseData` has been exposed to users: + +```ts +import type { GraphQlQueryResponseData } from "@octokit/graphql"; +``` + +## Errors + +In case of a GraphQL error, `error.message` is set to a combined message describing all errors returned by the endpoint. +All errors can be accessed at `error.errors`. `error.request` has the request options such as query, variables and headers set for easier debugging. + +```js +let { graphql, GraphqlResponseError } = require("@octokit/graphql"); +graphqlt = graphql.defaults({ + headers: { + authorization: `token secret123`, + }, +}); +const query = `{ + viewer { + bioHtml + } +}`; + +try { + const result = await graphql(query); +} catch (error) { + if (error instanceof GraphqlResponseError) { + // do something with the error, allowing you to detect a graphql response error, + // compared to accidentally catching unrelated errors. + + // server responds with an object like the following (as an example) + // class GraphqlResponseError { + // "headers": { + // "status": "403", + // }, + // "data": null, + // "errors": [{ + // "message": "Field 'bioHtml' doesn't exist on type 'User'", + // "locations": [{ + // "line": 3, + // "column": 5 + // }] + // }] + // } + + console.log("Request failed:", error.request); // { query, variables: {}, headers: { authorization: 'token secret123' } } + console.log(error.message); // Field 'bioHtml' doesn't exist on type 'User' + } else { + // handle non-GraphQL error + } +} +``` + +## Partial responses + +A GraphQL query may respond with partial data accompanied by errors. In this case we will throw an error but the partial data will still be accessible through `error.data` + +```js +let { graphql } = require("@octokit/graphql"); +graphql = graphql.defaults({ + headers: { + authorization: `token secret123`, + }, +}); +const query = `{ + repository(name: "probot", owner: "probot") { + name + ref(qualifiedName: "master") { + target { + ... on Commit { + history(first: 25, after: "invalid cursor") { + nodes { + message + } + } + } + } + } + } +}`; + +try { + const result = await graphql(query); +} catch (error) { + // server responds with + // { + // "data": { + // "repository": { + // "name": "probot", + // "ref": null + // } + // }, + // "errors": [ + // { + // "type": "INVALID_CURSOR_ARGUMENTS", + // "path": [ + // "repository", + // "ref", + // "target", + // "history" + // ], + // "locations": [ + // { + // "line": 7, + // "column": 11 + // } + // ], + // "message": "`invalid cursor` does not appear to be a valid cursor." + // } + // ] + // } + + console.log("Request failed:", error.request); // { query, variables: {}, headers: { authorization: 'token secret123' } } + console.log(error.message); // `invalid cursor` does not appear to be a valid cursor. + console.log(error.data); // { repository: { name: 'probot', ref: null } } +} +``` + +## Writing tests + +You can pass a replacement for [the built-in fetch implementation](https://github.com/bitinn/node-fetch) as `request.fetch` option. For example, using [fetch-mock](http://www.wheresrhys.co.uk/fetch-mock/) works great to write tests + +```js +const assert = require("assert"); +const fetchMock = require("fetch-mock/es5/server"); + +const { graphql } = require("@octokit/graphql"); + +graphql("{ viewer { login } }", { + headers: { + authorization: "token secret123", + }, + request: { + fetch: fetchMock + .sandbox() + .post("https://api.github.com/graphql", (url, options) => { + assert.strictEqual(options.headers.authorization, "token secret123"); + assert.strictEqual( + options.body, + '{"query":"{ viewer { login } }"}', + "Sends correct query" + ); + return { data: {} }; + }), + }, +}); +``` + +## License + +[MIT](LICENSE) diff --git a/node_modules/@octokit/graphql/dist-node/index.js b/node_modules/@octokit/graphql/dist-node/index.js new file mode 100644 index 0000000..6401417 --- /dev/null +++ b/node_modules/@octokit/graphql/dist-node/index.js @@ -0,0 +1,118 @@ +'use strict'; + +Object.defineProperty(exports, '__esModule', { value: true }); + +var request = require('@octokit/request'); +var universalUserAgent = require('universal-user-agent'); + +const VERSION = "4.8.0"; + +function _buildMessageForResponseErrors(data) { + return `Request failed due to following response errors:\n` + data.errors.map(e => ` - ${e.message}`).join("\n"); +} + +class GraphqlResponseError extends Error { + constructor(request, headers, response) { + super(_buildMessageForResponseErrors(response)); + this.request = request; + this.headers = headers; + this.response = response; + this.name = "GraphqlResponseError"; // Expose the errors and response data in their shorthand properties. + + this.errors = response.errors; + this.data = response.data; // Maintains proper stack trace (only available on V8) + + /* istanbul ignore next */ + + if (Error.captureStackTrace) { + Error.captureStackTrace(this, this.constructor); + } + } + +} + +const NON_VARIABLE_OPTIONS = ["method", "baseUrl", "url", "headers", "request", "query", "mediaType"]; +const FORBIDDEN_VARIABLE_OPTIONS = ["query", "method", "url"]; +const GHES_V3_SUFFIX_REGEX = /\/api\/v3\/?$/; +function graphql(request, 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`)); + } + + for (const key in options) { + if (!FORBIDDEN_VARIABLE_OPTIONS.includes(key)) continue; + return Promise.reject(new Error(`[@octokit/graphql] "${key}" cannot be used as variable name`)); + } + } + + const parsedOptions = typeof 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; + } + + if (!result.variables) { + result.variables = {}; + } + + result.variables[key] = parsedOptions[key]; + return result; + }, {}); // workaround for GitHub Enterprise baseUrl set with /api/v3 suffix + // https://github.com/octokit/auth-app.js/issues/111#issuecomment-657610451 + + const baseUrl = parsedOptions.baseUrl || request.endpoint.DEFAULTS.baseUrl; + + if (GHES_V3_SUFFIX_REGEX.test(baseUrl)) { + requestOptions.url = baseUrl.replace(GHES_V3_SUFFIX_REGEX, "/api/graphql"); + } + + return request(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 + }); +} + +const 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" + }); +} + +exports.GraphqlResponseError = GraphqlResponseError; +exports.graphql = graphql$1; +exports.withCustomRequest = withCustomRequest; +//# sourceMappingURL=index.js.map diff --git a/node_modules/@octokit/graphql/dist-node/index.js.map b/node_modules/@octokit/graphql/dist-node/index.js.map new file mode 100644 index 0000000..873a8d4 --- /dev/null +++ b/node_modules/@octokit/graphql/dist-node/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sources":["../dist-src/version.js","../dist-src/error.js","../dist-src/graphql.js","../dist-src/with-defaults.js","../dist-src/index.js"],"sourcesContent":["export const VERSION = \"4.8.0\";\n","function _buildMessageForResponseErrors(data) {\n return (`Request failed due to following response errors:\\n` +\n data.errors.map((e) => ` - ${e.message}`).join(\"\\n\"));\n}\nexport class GraphqlResponseError extends Error {\n constructor(request, headers, response) {\n super(_buildMessageForResponseErrors(response));\n this.request = request;\n this.headers = headers;\n this.response = response;\n this.name = \"GraphqlResponseError\";\n // Expose the errors and response data in their shorthand properties.\n this.errors = response.errors;\n this.data = response.data;\n // Maintains proper stack trace (only available on V8)\n /* istanbul ignore next */\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n }\n }\n}\n","import { GraphqlResponseError } from \"./error\";\nconst NON_VARIABLE_OPTIONS = [\n \"method\",\n \"baseUrl\",\n \"url\",\n \"headers\",\n \"request\",\n \"query\",\n \"mediaType\",\n];\nconst FORBIDDEN_VARIABLE_OPTIONS = [\"query\", \"method\", \"url\"];\nconst GHES_V3_SUFFIX_REGEX = /\\/api\\/v3\\/?$/;\nexport function graphql(request, query, options) {\n if (options) {\n if (typeof query === \"string\" && \"query\" in options) {\n return Promise.reject(new Error(`[@octokit/graphql] \"query\" cannot be used as variable name`));\n }\n for (const key in options) {\n if (!FORBIDDEN_VARIABLE_OPTIONS.includes(key))\n continue;\n return Promise.reject(new Error(`[@octokit/graphql] \"${key}\" cannot be used as variable name`));\n }\n }\n const parsedOptions = typeof query === \"string\" ? Object.assign({ query }, options) : query;\n const requestOptions = Object.keys(parsedOptions).reduce((result, key) => {\n if (NON_VARIABLE_OPTIONS.includes(key)) {\n result[key] = parsedOptions[key];\n return result;\n }\n if (!result.variables) {\n result.variables = {};\n }\n result.variables[key] = parsedOptions[key];\n return result;\n }, {});\n // workaround for GitHub Enterprise baseUrl set with /api/v3 suffix\n // https://github.com/octokit/auth-app.js/issues/111#issuecomment-657610451\n const baseUrl = parsedOptions.baseUrl || request.endpoint.DEFAULTS.baseUrl;\n if (GHES_V3_SUFFIX_REGEX.test(baseUrl)) {\n requestOptions.url = baseUrl.replace(GHES_V3_SUFFIX_REGEX, \"/api/graphql\");\n }\n return request(requestOptions).then((response) => {\n if (response.data.errors) {\n const headers = {};\n for (const key of Object.keys(response.headers)) {\n headers[key] = response.headers[key];\n }\n throw new GraphqlResponseError(requestOptions, headers, response.data);\n }\n return response.data.data;\n });\n}\n","import { request as Request } from \"@octokit/request\";\nimport { graphql } from \"./graphql\";\nexport function withDefaults(request, newDefaults) {\n const newRequest = request.defaults(newDefaults);\n const newApi = (query, options) => {\n return graphql(newRequest, query, options);\n };\n return Object.assign(newApi, {\n defaults: withDefaults.bind(null, newRequest),\n endpoint: Request.endpoint,\n });\n}\n","import { request } from \"@octokit/request\";\nimport { getUserAgent } from \"universal-user-agent\";\nimport { VERSION } from \"./version\";\nimport { withDefaults } from \"./with-defaults\";\nexport const graphql = withDefaults(request, {\n headers: {\n \"user-agent\": `octokit-graphql.js/${VERSION} ${getUserAgent()}`,\n },\n method: \"POST\",\n url: \"/graphql\",\n});\nexport { GraphqlResponseError } from \"./error\";\nexport function withCustomRequest(customRequest) {\n return withDefaults(customRequest, {\n method: \"POST\",\n url: \"/graphql\",\n });\n}\n"],"names":["VERSION","_buildMessageForResponseErrors","data","errors","map","e","message","join","GraphqlResponseError","Error","constructor","request","headers","response","name","captureStackTrace","NON_VARIABLE_OPTIONS","FORBIDDEN_VARIABLE_OPTIONS","GHES_V3_SUFFIX_REGEX","graphql","query","options","Promise","reject","key","includes","parsedOptions","Object","assign","requestOptions","keys","reduce","result","variables","baseUrl","endpoint","DEFAULTS","test","url","replace","then","withDefaults","newDefaults","newRequest","defaults","newApi","bind","Request","getUserAgent","method","withCustomRequest","customRequest"],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@octokit/graphql/dist-src/error.js b/node_modules/@octokit/graphql/dist-src/error.js new file mode 100644 index 0000000..182f967 --- /dev/null +++ b/node_modules/@octokit/graphql/dist-src/error.js @@ -0,0 +1,21 @@ +function _buildMessageForResponseErrors(data) { + return (`Request failed due to following response errors:\n` + + data.errors.map((e) => ` - ${e.message}`).join("\n")); +} +export class GraphqlResponseError extends Error { + constructor(request, headers, response) { + super(_buildMessageForResponseErrors(response)); + this.request = request; + this.headers = headers; + this.response = response; + this.name = "GraphqlResponseError"; + // Expose the errors and response data in their shorthand properties. + this.errors = response.errors; + this.data = response.data; + // Maintains proper stack trace (only available on V8) + /* istanbul ignore next */ + if (Error.captureStackTrace) { + Error.captureStackTrace(this, this.constructor); + } + } +} diff --git a/node_modules/@octokit/graphql/dist-src/graphql.js b/node_modules/@octokit/graphql/dist-src/graphql.js new file mode 100644 index 0000000..8297f84 --- /dev/null +++ b/node_modules/@octokit/graphql/dist-src/graphql.js @@ -0,0 +1,52 @@ +import { GraphqlResponseError } from "./error"; +const NON_VARIABLE_OPTIONS = [ + "method", + "baseUrl", + "url", + "headers", + "request", + "query", + "mediaType", +]; +const FORBIDDEN_VARIABLE_OPTIONS = ["query", "method", "url"]; +const GHES_V3_SUFFIX_REGEX = /\/api\/v3\/?$/; +export function graphql(request, 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`)); + } + for (const key in options) { + if (!FORBIDDEN_VARIABLE_OPTIONS.includes(key)) + continue; + return Promise.reject(new Error(`[@octokit/graphql] "${key}" cannot be used as variable name`)); + } + } + const parsedOptions = typeof 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; + } + if (!result.variables) { + result.variables = {}; + } + result.variables[key] = parsedOptions[key]; + return result; + }, {}); + // workaround for GitHub Enterprise baseUrl set with /api/v3 suffix + // https://github.com/octokit/auth-app.js/issues/111#issuecomment-657610451 + const baseUrl = parsedOptions.baseUrl || request.endpoint.DEFAULTS.baseUrl; + if (GHES_V3_SUFFIX_REGEX.test(baseUrl)) { + requestOptions.url = baseUrl.replace(GHES_V3_SUFFIX_REGEX, "/api/graphql"); + } + return request(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; + }); +} diff --git a/node_modules/@octokit/graphql/dist-src/index.js b/node_modules/@octokit/graphql/dist-src/index.js new file mode 100644 index 0000000..2a7d06b --- /dev/null +++ b/node_modules/@octokit/graphql/dist-src/index.js @@ -0,0 +1,18 @@ +import { request } from "@octokit/request"; +import { getUserAgent } from "universal-user-agent"; +import { VERSION } from "./version"; +import { withDefaults } from "./with-defaults"; +export const graphql = withDefaults(request, { + headers: { + "user-agent": `octokit-graphql.js/${VERSION} ${getUserAgent()}`, + }, + method: "POST", + url: "/graphql", +}); +export { GraphqlResponseError } from "./error"; +export function withCustomRequest(customRequest) { + return withDefaults(customRequest, { + method: "POST", + url: "/graphql", + }); +} diff --git a/node_modules/@octokit/graphql/dist-src/types.js b/node_modules/@octokit/graphql/dist-src/types.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/node_modules/@octokit/graphql/dist-src/types.js @@ -0,0 +1 @@ +export {}; diff --git a/node_modules/@octokit/graphql/dist-src/version.js b/node_modules/@octokit/graphql/dist-src/version.js new file mode 100644 index 0000000..3a4f8ff --- /dev/null +++ b/node_modules/@octokit/graphql/dist-src/version.js @@ -0,0 +1 @@ +export const VERSION = "4.8.0"; diff --git a/node_modules/@octokit/graphql/dist-src/with-defaults.js b/node_modules/@octokit/graphql/dist-src/with-defaults.js new file mode 100644 index 0000000..6ea309e --- /dev/null +++ b/node_modules/@octokit/graphql/dist-src/with-defaults.js @@ -0,0 +1,12 @@ +import { request as Request } from "@octokit/request"; +import { graphql } from "./graphql"; +export function withDefaults(request, newDefaults) { + const newRequest = request.defaults(newDefaults); + const newApi = (query, options) => { + return graphql(newRequest, query, options); + }; + return Object.assign(newApi, { + defaults: withDefaults.bind(null, newRequest), + endpoint: Request.endpoint, + }); +} diff --git a/node_modules/@octokit/graphql/dist-types/error.d.ts b/node_modules/@octokit/graphql/dist-types/error.d.ts new file mode 100644 index 0000000..3bd37ad --- /dev/null +++ b/node_modules/@octokit/graphql/dist-types/error.d.ts @@ -0,0 +1,13 @@ +import { ResponseHeaders } from "@octokit/types"; +import { GraphQlEndpointOptions, GraphQlQueryResponse } from "./types"; +declare type ServerResponseData = Required>; +export declare class GraphqlResponseError extends Error { + readonly request: GraphQlEndpointOptions; + readonly headers: ResponseHeaders; + readonly response: ServerResponseData; + name: string; + readonly errors: GraphQlQueryResponse["errors"]; + readonly data: ResponseData; + constructor(request: GraphQlEndpointOptions, headers: ResponseHeaders, response: ServerResponseData); +} +export {}; diff --git a/node_modules/@octokit/graphql/dist-types/graphql.d.ts b/node_modules/@octokit/graphql/dist-types/graphql.d.ts new file mode 100644 index 0000000..2942b8b --- /dev/null +++ b/node_modules/@octokit/graphql/dist-types/graphql.d.ts @@ -0,0 +1,3 @@ +import { request as Request } from "@octokit/request"; +import { RequestParameters, GraphQlQueryResponseData } from "./types"; +export declare function graphql(request: typeof Request, query: string | RequestParameters, options?: RequestParameters): Promise; diff --git a/node_modules/@octokit/graphql/dist-types/index.d.ts b/node_modules/@octokit/graphql/dist-types/index.d.ts new file mode 100644 index 0000000..282f98a --- /dev/null +++ b/node_modules/@octokit/graphql/dist-types/index.d.ts @@ -0,0 +1,5 @@ +import { request } from "@octokit/request"; +export declare const graphql: import("./types").graphql; +export { GraphQlQueryResponseData } from "./types"; +export { GraphqlResponseError } from "./error"; +export declare function withCustomRequest(customRequest: typeof request): import("./types").graphql; diff --git a/node_modules/@octokit/graphql/dist-types/types.d.ts b/node_modules/@octokit/graphql/dist-types/types.d.ts new file mode 100644 index 0000000..b266bdb --- /dev/null +++ b/node_modules/@octokit/graphql/dist-types/types.d.ts @@ -0,0 +1,55 @@ +import { EndpointOptions, RequestParameters as RequestParametersType, EndpointInterface } from "@octokit/types"; +export declare type GraphQlEndpointOptions = EndpointOptions & { + variables?: { + [key: string]: unknown; + }; +}; +export declare type RequestParameters = RequestParametersType; +export declare type Query = string; +export interface graphql { + /** + * Sends a GraphQL query request based on endpoint options + * The GraphQL query must be specified in `options`. + * + * @param {object} endpoint Must set `method` and `url`. Plus URL, query or body parameters, as well as `headers`, `mediaType.{format|previews}`, `request`, or `baseUrl`. + */ + (options: RequestParameters): GraphQlResponse; + /** + * Sends a GraphQL query request based on endpoint options + * + * @param {string} query GraphQL query. Example: `'query { viewer { login } }'`. + * @param {object} [parameters] URL, query or body parameters, as well as `headers`, `mediaType.{format|previews}`, `request`, or `baseUrl`. + */ + (query: Query, parameters?: RequestParameters): GraphQlResponse; + /** + * Returns a new `endpoint` with updated route and parameters + */ + defaults: (newDefaults: RequestParameters) => graphql; + /** + * Octokit endpoint API, see {@link https://github.com/octokit/endpoint.js|@octokit/endpoint} + */ + endpoint: EndpointInterface; +} +export declare type GraphQlResponse = Promise; +export declare type GraphQlQueryResponseData = { + [key: string]: any; +}; +export declare type GraphQlQueryResponse = { + data: ResponseData; + errors?: [ + { + type: string; + message: string; + path: [string]; + extensions: { + [key: string]: any; + }; + locations: [ + { + line: number; + column: number; + } + ]; + } + ]; +}; diff --git a/node_modules/@octokit/graphql/dist-types/version.d.ts b/node_modules/@octokit/graphql/dist-types/version.d.ts new file mode 100644 index 0000000..e80848e --- /dev/null +++ b/node_modules/@octokit/graphql/dist-types/version.d.ts @@ -0,0 +1 @@ +export declare const VERSION = "4.8.0"; diff --git a/node_modules/@octokit/graphql/dist-types/with-defaults.d.ts b/node_modules/@octokit/graphql/dist-types/with-defaults.d.ts new file mode 100644 index 0000000..03edc32 --- /dev/null +++ b/node_modules/@octokit/graphql/dist-types/with-defaults.d.ts @@ -0,0 +1,3 @@ +import { request as Request } from "@octokit/request"; +import { graphql as ApiInterface, RequestParameters } from "./types"; +export declare function withDefaults(request: typeof Request, newDefaults: RequestParameters): ApiInterface; diff --git a/node_modules/@octokit/graphql/dist-web/index.js b/node_modules/@octokit/graphql/dist-web/index.js new file mode 100644 index 0000000..5307e26 --- /dev/null +++ b/node_modules/@octokit/graphql/dist-web/index.js @@ -0,0 +1,106 @@ +import { request } from '@octokit/request'; +import { getUserAgent } from 'universal-user-agent'; + +const VERSION = "4.8.0"; + +function _buildMessageForResponseErrors(data) { + return (`Request failed due to following response errors:\n` + + data.errors.map((e) => ` - ${e.message}`).join("\n")); +} +class GraphqlResponseError extends Error { + constructor(request, headers, response) { + super(_buildMessageForResponseErrors(response)); + this.request = request; + this.headers = headers; + this.response = response; + this.name = "GraphqlResponseError"; + // Expose the errors and response data in their shorthand properties. + this.errors = response.errors; + this.data = response.data; + // Maintains proper stack trace (only available on V8) + /* istanbul ignore next */ + if (Error.captureStackTrace) { + Error.captureStackTrace(this, this.constructor); + } + } +} + +const NON_VARIABLE_OPTIONS = [ + "method", + "baseUrl", + "url", + "headers", + "request", + "query", + "mediaType", +]; +const FORBIDDEN_VARIABLE_OPTIONS = ["query", "method", "url"]; +const GHES_V3_SUFFIX_REGEX = /\/api\/v3\/?$/; +function graphql(request, 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`)); + } + for (const key in options) { + if (!FORBIDDEN_VARIABLE_OPTIONS.includes(key)) + continue; + return Promise.reject(new Error(`[@octokit/graphql] "${key}" cannot be used as variable name`)); + } + } + const parsedOptions = typeof 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; + } + if (!result.variables) { + result.variables = {}; + } + result.variables[key] = parsedOptions[key]; + return result; + }, {}); + // workaround for GitHub Enterprise baseUrl set with /api/v3 suffix + // https://github.com/octokit/auth-app.js/issues/111#issuecomment-657610451 + const baseUrl = parsedOptions.baseUrl || request.endpoint.DEFAULTS.baseUrl; + if (GHES_V3_SUFFIX_REGEX.test(baseUrl)) { + requestOptions.url = baseUrl.replace(GHES_V3_SUFFIX_REGEX, "/api/graphql"); + } + return request(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.endpoint, + }); +} + +const graphql$1 = withDefaults(request, { + headers: { + "user-agent": `octokit-graphql.js/${VERSION} ${getUserAgent()}`, + }, + method: "POST", + url: "/graphql", +}); +function withCustomRequest(customRequest) { + return withDefaults(customRequest, { + method: "POST", + url: "/graphql", + }); +} + +export { GraphqlResponseError, graphql$1 as graphql, withCustomRequest }; +//# sourceMappingURL=index.js.map diff --git a/node_modules/@octokit/graphql/dist-web/index.js.map b/node_modules/@octokit/graphql/dist-web/index.js.map new file mode 100644 index 0000000..3c6a6ed --- /dev/null +++ b/node_modules/@octokit/graphql/dist-web/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sources":["../dist-src/version.js","../dist-src/error.js","../dist-src/graphql.js","../dist-src/with-defaults.js","../dist-src/index.js"],"sourcesContent":["export const VERSION = \"4.8.0\";\n","function _buildMessageForResponseErrors(data) {\n return (`Request failed due to following response errors:\\n` +\n data.errors.map((e) => ` - ${e.message}`).join(\"\\n\"));\n}\nexport class GraphqlResponseError extends Error {\n constructor(request, headers, response) {\n super(_buildMessageForResponseErrors(response));\n this.request = request;\n this.headers = headers;\n this.response = response;\n this.name = \"GraphqlResponseError\";\n // Expose the errors and response data in their shorthand properties.\n this.errors = response.errors;\n this.data = response.data;\n // Maintains proper stack trace (only available on V8)\n /* istanbul ignore next */\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n }\n }\n}\n","import { GraphqlResponseError } from \"./error\";\nconst NON_VARIABLE_OPTIONS = [\n \"method\",\n \"baseUrl\",\n \"url\",\n \"headers\",\n \"request\",\n \"query\",\n \"mediaType\",\n];\nconst FORBIDDEN_VARIABLE_OPTIONS = [\"query\", \"method\", \"url\"];\nconst GHES_V3_SUFFIX_REGEX = /\\/api\\/v3\\/?$/;\nexport function graphql(request, query, options) {\n if (options) {\n if (typeof query === \"string\" && \"query\" in options) {\n return Promise.reject(new Error(`[@octokit/graphql] \"query\" cannot be used as variable name`));\n }\n for (const key in options) {\n if (!FORBIDDEN_VARIABLE_OPTIONS.includes(key))\n continue;\n return Promise.reject(new Error(`[@octokit/graphql] \"${key}\" cannot be used as variable name`));\n }\n }\n const parsedOptions = typeof query === \"string\" ? Object.assign({ query }, options) : query;\n const requestOptions = Object.keys(parsedOptions).reduce((result, key) => {\n if (NON_VARIABLE_OPTIONS.includes(key)) {\n result[key] = parsedOptions[key];\n return result;\n }\n if (!result.variables) {\n result.variables = {};\n }\n result.variables[key] = parsedOptions[key];\n return result;\n }, {});\n // workaround for GitHub Enterprise baseUrl set with /api/v3 suffix\n // https://github.com/octokit/auth-app.js/issues/111#issuecomment-657610451\n const baseUrl = parsedOptions.baseUrl || request.endpoint.DEFAULTS.baseUrl;\n if (GHES_V3_SUFFIX_REGEX.test(baseUrl)) {\n requestOptions.url = baseUrl.replace(GHES_V3_SUFFIX_REGEX, \"/api/graphql\");\n }\n return request(requestOptions).then((response) => {\n if (response.data.errors) {\n const headers = {};\n for (const key of Object.keys(response.headers)) {\n headers[key] = response.headers[key];\n }\n throw new GraphqlResponseError(requestOptions, headers, response.data);\n }\n return response.data.data;\n });\n}\n","import { request as Request } from \"@octokit/request\";\nimport { graphql } from \"./graphql\";\nexport function withDefaults(request, newDefaults) {\n const newRequest = request.defaults(newDefaults);\n const newApi = (query, options) => {\n return graphql(newRequest, query, options);\n };\n return Object.assign(newApi, {\n defaults: withDefaults.bind(null, newRequest),\n endpoint: Request.endpoint,\n });\n}\n","import { request } from \"@octokit/request\";\nimport { getUserAgent } from \"universal-user-agent\";\nimport { VERSION } from \"./version\";\nimport { withDefaults } from \"./with-defaults\";\nexport const graphql = withDefaults(request, {\n headers: {\n \"user-agent\": `octokit-graphql.js/${VERSION} ${getUserAgent()}`,\n },\n method: \"POST\",\n url: \"/graphql\",\n});\nexport { GraphqlResponseError } from \"./error\";\nexport function withCustomRequest(customRequest) {\n return withDefaults(customRequest, {\n method: \"POST\",\n url: \"/graphql\",\n });\n}\n"],"names":["request","Request","graphql"],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@octokit/graphql/package.json b/node_modules/@octokit/graphql/package.json new file mode 100644 index 0000000..9ba3cb7 --- /dev/null +++ b/node_modules/@octokit/graphql/package.json @@ -0,0 +1,47 @@ +{ + "name": "@octokit/graphql", + "description": "GitHub GraphQL API client for browsers and Node", + "version": "4.8.0", + "license": "MIT", + "files": [ + "dist-*/", + "bin/" + ], + "pika": true, + "sideEffects": false, + "keywords": [ + "octokit", + "github", + "api", + "graphql" + ], + "repository": "github:octokit/graphql.js", + "dependencies": { + "@octokit/request": "^5.6.0", + "@octokit/types": "^6.0.3", + "universal-user-agent": "^6.0.0" + }, + "devDependencies": { + "@pika/pack": "^0.5.0", + "@pika/plugin-build-node": "^0.9.0", + "@pika/plugin-build-web": "^0.9.0", + "@pika/plugin-ts-standard-pkg": "^0.9.0", + "@types/fetch-mock": "^7.2.5", + "@types/jest": "^27.0.0", + "@types/node": "^14.0.4", + "fetch-mock": "^9.0.0", + "jest": "^27.0.0", + "prettier": "2.3.2", + "semantic-release": "^17.0.0", + "semantic-release-plugin-update-version-in-files": "^1.0.0", + "ts-jest": "^27.0.0-next.12", + "typescript": "^4.0.0" + }, + "publishConfig": { + "access": "public" + }, + "source": "dist-src/index.js", + "types": "dist-types/index.d.ts", + "main": "dist-node/index.js", + "module": "dist-web/index.js" +} diff --git a/node_modules/@octokit/openapi-types/LICENSE b/node_modules/@octokit/openapi-types/LICENSE new file mode 100644 index 0000000..c61fbbe --- /dev/null +++ b/node_modules/@octokit/openapi-types/LICENSE @@ -0,0 +1,7 @@ +Copyright 2020 Gregor Martynus + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/node_modules/@octokit/openapi-types/README.md b/node_modules/@octokit/openapi-types/README.md new file mode 100644 index 0000000..9da833c --- /dev/null +++ b/node_modules/@octokit/openapi-types/README.md @@ -0,0 +1,17 @@ +# @octokit/openapi-types + +> Generated TypeScript definitions based on GitHub's OpenAPI spec + +This package is continously updated based on [GitHub's OpenAPI specification](https://github.com/github/rest-api-description/) + +## Usage + +```ts +import { components } from "@octokit/openapi-types"; + +type Repository = components["schemas"]["full-repository"]; +``` + +## License + +[MIT](LICENSE) diff --git a/node_modules/@octokit/openapi-types/package.json b/node_modules/@octokit/openapi-types/package.json new file mode 100644 index 0000000..24484a5 --- /dev/null +++ b/node_modules/@octokit/openapi-types/package.json @@ -0,0 +1,20 @@ +{ + "name": "@octokit/openapi-types", + "description": "Generated TypeScript definitions based on GitHub's OpenAPI spec for api.github.com", + "repository": { + "type": "git", + "url": "https://github.com/octokit/openapi-types.ts.git", + "directory": "packages/openapi-types" + }, + "publishConfig": { + "access": "public" + }, + "version": "12.11.0", + "main": "", + "types": "types.d.ts", + "author": "Gregor Martynus (https://twitter.com/gr2m)", + "license": "MIT", + "octokit": { + "openapi-version": "6.8.0" + } +} diff --git a/node_modules/@octokit/openapi-types/types.d.ts b/node_modules/@octokit/openapi-types/types.d.ts new file mode 100644 index 0000000..88dc62d --- /dev/null +++ b/node_modules/@octokit/openapi-types/types.d.ts @@ -0,0 +1,47095 @@ +/** + * This file was auto-generated by openapi-typescript. + * Do not make direct changes to the file. + */ + +export interface paths { + "/": { + /** Get Hypermedia links to resources accessible in GitHub's REST API */ + get: operations["meta/root"]; + }; + "/app": { + /** + * Returns the GitHub App associated with the authentication credentials used. To see how many app installations are associated with this GitHub App, see the `installations_count` in the response. For more details about your app's installations, see the "[List installations for the authenticated app](https://docs.github.com/rest/reference/apps#list-installations-for-the-authenticated-app)" endpoint. + * + * You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. + */ + get: operations["apps/get-authenticated"]; + }; + "/app-manifests/{code}/conversions": { + /** Use this endpoint to complete the handshake necessary when implementing the [GitHub App Manifest flow](https://docs.github.com/apps/building-github-apps/creating-github-apps-from-a-manifest/). When you create a GitHub App with the manifest flow, you receive a temporary `code` used to retrieve the GitHub App's `id`, `pem` (private key), and `webhook_secret`. */ + post: operations["apps/create-from-manifest"]; + }; + "/app/hook/config": { + /** + * Returns the webhook configuration for a GitHub App. For more information about configuring a webhook for your app, see "[Creating a GitHub App](/developers/apps/creating-a-github-app)." + * + * You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. + */ + get: operations["apps/get-webhook-config-for-app"]; + /** + * Updates the webhook configuration for a GitHub App. For more information about configuring a webhook for your app, see "[Creating a GitHub App](/developers/apps/creating-a-github-app)." + * + * You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. + */ + patch: operations["apps/update-webhook-config-for-app"]; + }; + "/app/hook/deliveries": { + /** + * Returns a list of webhook deliveries for the webhook configured for a GitHub App. + * + * You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. + */ + get: operations["apps/list-webhook-deliveries"]; + }; + "/app/hook/deliveries/{delivery_id}": { + /** + * Returns a delivery for the webhook configured for a GitHub App. + * + * You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. + */ + get: operations["apps/get-webhook-delivery"]; + }; + "/app/hook/deliveries/{delivery_id}/attempts": { + /** + * Redeliver a delivery for the webhook configured for a GitHub App. + * + * You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. + */ + post: operations["apps/redeliver-webhook-delivery"]; + }; + "/app/installations": { + /** + * You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. + * + * The permissions the installation has are included under the `permissions` key. + */ + get: operations["apps/list-installations"]; + }; + "/app/installations/{installation_id}": { + /** + * Enables an authenticated GitHub App to find an installation's information using the installation id. + * + * You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. + */ + get: operations["apps/get-installation"]; + /** + * Uninstalls a GitHub App on a user, organization, or business account. If you prefer to temporarily suspend an app's access to your account's resources, then we recommend the "[Suspend an app installation](https://docs.github.com/rest/reference/apps/#suspend-an-app-installation)" endpoint. + * + * You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. + */ + delete: operations["apps/delete-installation"]; + }; + "/app/installations/{installation_id}/access_tokens": { + /** + * Creates an installation access token that enables a GitHub App to make authenticated API requests for the app's installation on an organization or individual account. Installation tokens expire one hour from the time you create them. Using an expired token produces a status code of `401 - Unauthorized`, and requires creating a new installation token. By default the installation token has access to all repositories that the installation can access. To restrict the access to specific repositories, you can provide the `repository_ids` when creating the token. When you omit `repository_ids`, the response does not contain the `repositories` key. + * + * You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. + */ + post: operations["apps/create-installation-access-token"]; + }; + "/app/installations/{installation_id}/suspended": { + /** + * Suspends a GitHub App on a user, organization, or business account, which blocks the app from accessing the account's resources. When a GitHub App is suspended, the app's access to the GitHub API or webhook events is blocked for that account. + * + * You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. + */ + put: operations["apps/suspend-installation"]; + /** + * Removes a GitHub App installation suspension. + * + * You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. + */ + delete: operations["apps/unsuspend-installation"]; + }; + "/applications/grants": { + /** + * **Deprecation Notice:** GitHub will discontinue the [OAuth Authorizations API](https://docs.github.com/rest/reference/oauth-authorizations/), which is used by integrations to create personal access tokens and OAuth tokens, and you must now create these tokens using our [web application flow](https://docs.github.com/developers/apps/authorizing-oauth-apps#web-application-flow). The [OAuth Authorizations API](https://docs.github.com/rest/reference/oauth-authorizations) will be removed on November, 13, 2020. For more information, including scheduled brownouts, see the [blog post](https://developer.github.com/changes/2020-02-14-deprecating-oauth-auth-endpoint/). + * + * You can use this API to list the set of OAuth applications that have been granted access to your account. Unlike the [list your authorizations](https://docs.github.com/rest/reference/oauth-authorizations#list-your-authorizations) API, this API does not manage individual tokens. This API will return one entry for each OAuth application that has been granted access to your account, regardless of the number of tokens an application has generated for your user. The list of OAuth applications returned matches what is shown on [the application authorizations settings screen within GitHub](https://github.com/settings/applications#authorized). The `scopes` returned are the union of scopes authorized for the application. For example, if an application has one token with `repo` scope and another token with `user` scope, the grant will return `["repo", "user"]`. + */ + get: operations["oauth-authorizations/list-grants"]; + }; + "/applications/grants/{grant_id}": { + /** **Deprecation Notice:** GitHub will discontinue the [OAuth Authorizations API](https://docs.github.com/rest/reference/oauth-authorizations), which is used by integrations to create personal access tokens and OAuth tokens, and you must now create these tokens using our [web application flow](https://docs.github.com/apps/building-oauth-apps/authorizing-oauth-apps/#web-application-flow). The [OAuth Authorizations API](https://docs.github.com/rest/reference/oauth-authorizations) will be removed on November, 13, 2020. For more information, including scheduled brownouts, see the [blog post](https://developer.github.com/changes/2020-02-14-deprecating-oauth-auth-endpoint/). */ + get: operations["oauth-authorizations/get-grant"]; + /** + * **Deprecation Notice:** GitHub will discontinue the [OAuth Authorizations API](https://docs.github.com/rest/reference/oauth-authorizations/), which is used by integrations to create personal access tokens and OAuth tokens, and you must now create these tokens using our [web application flow](https://docs.github.com/developers/apps/authorizing-oauth-apps#web-application-flow). The [OAuth Authorizations API](https://docs.github.com/rest/reference/oauth-authorizations/) will be removed on November, 13, 2020. For more information, including scheduled brownouts, see the [blog post](https://developer.github.com/changes/2020-02-14-deprecating-oauth-auth-endpoint/). + * + * Deleting an OAuth application's grant will also delete all OAuth tokens associated with the application for your user. Once deleted, the application has no access to your account and is no longer listed on [the application authorizations settings screen within GitHub](https://github.com/settings/applications#authorized). + */ + delete: operations["oauth-authorizations/delete-grant"]; + }; + "/applications/{client_id}/grant": { + /** + * OAuth application owners can revoke a grant for their OAuth application and a specific user. You must use [Basic Authentication](https://docs.github.com/rest/overview/other-authentication-methods#basic-authentication) when accessing this endpoint, using the OAuth application's `client_id` and `client_secret` as the username and password. You must also provide a valid OAuth `access_token` as an input parameter and the grant for the token's owner will be deleted. + * Deleting an OAuth application's grant will also delete all OAuth tokens associated with the application for the user. Once deleted, the application will have no access to the user's account and will no longer be listed on [the application authorizations settings screen within GitHub](https://github.com/settings/applications#authorized). + */ + delete: operations["apps/delete-authorization"]; + }; + "/applications/{client_id}/token": { + /** OAuth applications can use a special API method for checking OAuth token validity without exceeding the normal rate limits for failed login attempts. Authentication works differently with this particular endpoint. You must use [Basic Authentication](https://docs.github.com/rest/overview/other-authentication-methods#basic-authentication) to use this endpoint, where the username is the OAuth application `client_id` and the password is its `client_secret`. Invalid tokens will return `404 NOT FOUND`. */ + post: operations["apps/check-token"]; + /** OAuth application owners can revoke a single token for an OAuth application. You must use [Basic Authentication](https://docs.github.com/rest/overview/other-authentication-methods#basic-authentication) when accessing this endpoint, using the OAuth application's `client_id` and `client_secret` as the username and password. */ + delete: operations["apps/delete-token"]; + /** OAuth applications can use this API method to reset a valid OAuth token without end-user involvement. Applications must save the "token" property in the response because changes take effect immediately. You must use [Basic Authentication](https://docs.github.com/rest/overview/other-authentication-methods#basic-authentication) when accessing this endpoint, using the OAuth application's `client_id` and `client_secret` as the username and password. Invalid tokens will return `404 NOT FOUND`. */ + patch: operations["apps/reset-token"]; + }; + "/applications/{client_id}/token/scoped": { + /** Use a non-scoped user-to-server OAuth access token to create a repository scoped and/or permission scoped user-to-server OAuth access token. You can specify which repositories the token can access and which permissions are granted to the token. You must use [Basic Authentication](https://docs.github.com/rest/overview/other-authentication-methods#basic-authentication) when accessing this endpoint, using the OAuth application's `client_id` and `client_secret` as the username and password. Invalid tokens will return `404 NOT FOUND`. */ + post: operations["apps/scope-token"]; + }; + "/apps/{app_slug}": { + /** + * **Note**: The `:app_slug` is just the URL-friendly name of your GitHub App. You can find this on the settings page for your GitHub App (e.g., `https://github.com/settings/apps/:app_slug`). + * + * If the GitHub App you specify is public, you can access this endpoint without authenticating. If the GitHub App you specify is private, you must authenticate with a [personal access token](https://docs.github.com/articles/creating-a-personal-access-token-for-the-command-line/) or an [installation access token](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-an-installation) to access this endpoint. + */ + get: operations["apps/get-by-slug"]; + }; + "/authorizations": { + /** **Deprecation Notice:** GitHub will discontinue the [OAuth Authorizations API](https://docs.github.com/rest/reference/oauth-authorizations), which is used by integrations to create personal access tokens and OAuth tokens, and you must now create these tokens using our [web application flow](https://docs.github.com/apps/building-oauth-apps/authorizing-oauth-apps/#web-application-flow). The [OAuth Authorizations API](https://docs.github.com/rest/reference/oauth-authorizations) will be removed on November, 13, 2020. For more information, including scheduled brownouts, see the [blog post](https://developer.github.com/changes/2020-02-14-deprecating-oauth-auth-endpoint/). */ + get: operations["oauth-authorizations/list-authorizations"]; + /** + * **Deprecation Notice:** GitHub will discontinue the [OAuth Authorizations API](https://docs.github.com/rest/reference/oauth-authorizations), which is used by integrations to create personal access tokens and OAuth tokens, and you must now create these tokens using our [web application flow](https://docs.github.com/developers/apps/authorizing-oauth-apps#web-application-flow). The [OAuth Authorizations API](https://docs.github.com/rest/reference/oauth-authorizations) will be removed on November, 13, 2020. For more information, including scheduled brownouts, see the [blog post](https://developer.github.com/changes/2020-02-14-deprecating-oauth-auth-endpoint/). + * + * **Warning:** Apps must use the [web application flow](https://docs.github.com/apps/building-oauth-apps/authorizing-oauth-apps/#web-application-flow) to obtain OAuth tokens that work with GitHub SAML organizations. OAuth tokens created using the Authorizations API will be unable to access GitHub SAML organizations. For more information, see the [blog post](https://developer.github.com/changes/2019-11-05-deprecated-passwords-and-authorizations-api). + * + * Creates OAuth tokens using [Basic Authentication](https://docs.github.com/rest/overview/other-authentication-methods#basic-authentication). If you have two-factor authentication setup, Basic Authentication for this endpoint requires that you use a one-time password (OTP) and your username and password instead of tokens. For more information, see "[Working with two-factor authentication](https://docs.github.com/rest/overview/other-authentication-methods#working-with-two-factor-authentication)." + * + * To create tokens for a particular OAuth application using this endpoint, you must authenticate as the user you want to create an authorization for and provide the app's client ID and secret, found on your OAuth application's settings page. If your OAuth application intends to create multiple tokens for one user, use `fingerprint` to differentiate between them. + * + * You can also create tokens on GitHub from the [personal access tokens settings](https://github.com/settings/tokens) page. Read more about these tokens in [the GitHub Help documentation](https://docs.github.com/articles/creating-an-access-token-for-command-line-use). + * + * Organizations that enforce SAML SSO require personal access tokens to be allowed. Read more about allowing tokens in [the GitHub Help documentation](https://docs.github.com/articles/about-identity-and-access-management-with-saml-single-sign-on). + */ + post: operations["oauth-authorizations/create-authorization"]; + }; + "/authorizations/clients/{client_id}": { + /** + * **Deprecation Notice:** GitHub will discontinue the [OAuth Authorizations API](https://docs.github.com/rest/reference/oauth-authorizations/), which is used by integrations to create personal access tokens and OAuth tokens, and you must now create these tokens using our [web application flow](https://docs.github.com/developers/apps/authorizing-oauth-apps#web-application-flow). The [OAuth Authorizations API](https://docs.github.com/rest/reference/oauth-authorizations) will be removed on November, 13, 2020. For more information, including scheduled brownouts, see the [blog post](https://developer.github.com/changes/2020-02-14-deprecating-oauth-auth-endpoint/). + * + * **Warning:** Apps must use the [web application flow](https://docs.github.com/apps/building-oauth-apps/authorizing-oauth-apps/#web-application-flow) to obtain OAuth tokens that work with GitHub SAML organizations. OAuth tokens created using the Authorizations API will be unable to access GitHub SAML organizations. For more information, see the [blog post](https://developer.github.com/changes/2019-11-05-deprecated-passwords-and-authorizations-api). + * + * Creates a new authorization for the specified OAuth application, only if an authorization for that application doesn't already exist for the user. The URL includes the 20 character client ID for the OAuth app that is requesting the token. It returns the user's existing authorization for the application if one is present. Otherwise, it creates and returns a new one. + * + * If you have two-factor authentication setup, Basic Authentication for this endpoint requires that you use a one-time password (OTP) and your username and password instead of tokens. For more information, see "[Working with two-factor authentication](https://docs.github.com/rest/overview/other-authentication-methods#working-with-two-factor-authentication)." + * + * **Deprecation Notice:** GitHub will discontinue the [OAuth Authorizations API](https://docs.github.com/rest/reference/oauth-authorizations/), which is used by integrations to create personal access tokens and OAuth tokens, and you must now create these tokens using our [web application flow](https://docs.github.com/developers/apps/authorizing-oauth-apps#web-application-flow). The [OAuth Authorizations API](https://docs.github.com/rest/reference/oauth-authorizations) will be removed on November, 13, 2020. For more information, including scheduled brownouts, see the [blog post](https://developer.github.com/changes/2020-02-14-deprecating-oauth-auth-endpoint/). + */ + put: operations["oauth-authorizations/get-or-create-authorization-for-app"]; + }; + "/authorizations/clients/{client_id}/{fingerprint}": { + /** + * **Deprecation Notice:** GitHub will discontinue the [OAuth Authorizations API](https://docs.github.com/rest/reference/oauth-authorizations/), which is used by integrations to create personal access tokens and OAuth tokens, and you must now create these tokens using our [web application flow](https://docs.github.com/developers/apps/authorizing-oauth-apps#web-application-flow). The [OAuth Authorizations API](https://docs.github.com/rest/reference/oauth-authorizations) will be removed on November, 13, 2020. For more information, including scheduled brownouts, see the [blog post](https://developer.github.com/changes/2020-02-14-deprecating-oauth-auth-endpoint/). + * + * **Warning:** Apps must use the [web application flow](https://docs.github.com/apps/building-oauth-apps/authorizing-oauth-apps/#web-application-flow) to obtain OAuth tokens that work with GitHub SAML organizations. OAuth tokens created using the Authorizations API will be unable to access GitHub SAML organizations. For more information, see the [blog post](https://developer.github.com/changes/2019-11-05-deprecated-passwords-and-authorizations-api). + * + * This method will create a new authorization for the specified OAuth application, only if an authorization for that application and fingerprint do not already exist for the user. The URL includes the 20 character client ID for the OAuth app that is requesting the token. `fingerprint` is a unique string to distinguish an authorization from others created for the same client ID and user. It returns the user's existing authorization for the application if one is present. Otherwise, it creates and returns a new one. + * + * If you have two-factor authentication setup, Basic Authentication for this endpoint requires that you use a one-time password (OTP) and your username and password instead of tokens. For more information, see "[Working with two-factor authentication](https://docs.github.com/rest/overview/other-authentication-methods#working-with-two-factor-authentication)." + */ + put: operations["oauth-authorizations/get-or-create-authorization-for-app-and-fingerprint"]; + }; + "/authorizations/{authorization_id}": { + /** **Deprecation Notice:** GitHub will discontinue the [OAuth Authorizations API](https://docs.github.com/rest/reference/oauth-authorizations), which is used by integrations to create personal access tokens and OAuth tokens, and you must now create these tokens using our [web application flow](https://docs.github.com/apps/building-oauth-apps/authorizing-oauth-apps/#web-application-flow). The [OAuth Authorizations API](https://docs.github.com/rest/reference/oauth-authorizations) will be removed on November, 13, 2020. For more information, including scheduled brownouts, see the [blog post](https://developer.github.com/changes/2020-02-14-deprecating-oauth-auth-endpoint/). */ + get: operations["oauth-authorizations/get-authorization"]; + /** **Deprecation Notice:** GitHub will discontinue the [OAuth Authorizations API](https://docs.github.com/rest/reference/oauth-authorizations), which is used by integrations to create personal access tokens and OAuth tokens, and you must now create these tokens using our [web application flow](https://docs.github.com/apps/building-oauth-apps/authorizing-oauth-apps/#web-application-flow). The [OAuth Authorizations API](https://docs.github.com/rest/reference/oauth-authorizations) will be removed on November, 13, 2020. For more information, including scheduled brownouts, see the [blog post](https://developer.github.com/changes/2020-02-14-deprecating-oauth-auth-endpoint/). */ + delete: operations["oauth-authorizations/delete-authorization"]; + /** + * **Deprecation Notice:** GitHub will discontinue the [OAuth Authorizations API](https://docs.github.com/rest/reference/oauth-authorizations/), which is used by integrations to create personal access tokens and OAuth tokens, and you must now create these tokens using our [web application flow](https://docs.github.com/developers/apps/authorizing-oauth-apps#web-application-flow). The [OAuth Authorizations API](https://docs.github.com/rest/reference/oauth-authorizations) will be removed on November, 13, 2020. For more information, including scheduled brownouts, see the [blog post](https://developer.github.com/changes/2020-02-14-deprecating-oauth-auth-endpoint/). + * + * If you have two-factor authentication setup, Basic Authentication for this endpoint requires that you use a one-time password (OTP) and your username and password instead of tokens. For more information, see "[Working with two-factor authentication](https://docs.github.com/rest/overview/other-authentication-methods#working-with-two-factor-authentication)." + * + * You can only send one of these scope keys at a time. + */ + patch: operations["oauth-authorizations/update-authorization"]; + }; + "/codes_of_conduct": { + get: operations["codes-of-conduct/get-all-codes-of-conduct"]; + }; + "/codes_of_conduct/{key}": { + get: operations["codes-of-conduct/get-conduct-code"]; + }; + "/emojis": { + /** Lists all the emojis available to use on GitHub. */ + get: operations["emojis/get"]; + }; + "/enterprise-installation/{enterprise_or_org}/server-statistics": { + /** + * Returns aggregate usage metrics for your GitHub Enterprise Server 3.5+ instance for a specified time period up to 365 days. + * + * To use this endpoint, your GitHub Enterprise Server instance must be connected to GitHub Enterprise Cloud using GitHub Connect. You must enable Server Statistics, and for the API request provide your enterprise account name or organization name connected to the GitHub Enterprise Server. For more information, see "[Enabling Server Statistics for your enterprise](/admin/configuration/configuring-github-connect/enabling-server-statistics-for-your-enterprise)" in the GitHub Enterprise Server documentation. + * + * You'll need to use a personal access token: + * - If you connected your GitHub Enterprise Server to an enterprise account and enabled Server Statistics, you'll need a personal access token with the `read:enterprise` permission. + * - If you connected your GitHub Enterprise Server to an organization account and enabled Server Statistics, you'll need a personal access token with the `read:org` permission. + * + * For more information on creating a personal access token, see "[Creating a personal access token](/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token)." + */ + get: operations["enterprise-admin/get-server-statistics"]; + }; + "/enterprises/{enterprise}/actions/cache/usage": { + /** + * Gets the total GitHub Actions cache usage for an enterprise. + * The data fetched using this API is refreshed approximately every 5 minutes, so values returned from this endpoint may take at least 5 minutes to get updated. + * You must authenticate using an access token with the `admin:enterprise` scope to use this endpoint. + */ + get: operations["actions/get-actions-cache-usage-for-enterprise"]; + }; + "/enterprises/{enterprise}/actions/oidc/customization/issuer": { + /** + * Sets the GitHub Actions OpenID Connect (OIDC) custom issuer policy for an enterprise. + * You must authenticate using an access token with the `admin:enterprise` scope to use this endpoint. + * GitHub Apps must have the `enterprise_administration:write` permission to use this endpoint. + */ + put: operations["actions/set-actions-oidc-custom-issuer-policy-for-enterprise"]; + }; + "/enterprises/{enterprise}/actions/permissions": { + /** + * Gets the GitHub Actions permissions policy for organizations and allowed actions and reusable workflows in an enterprise. + * + * You must authenticate using an access token with the `admin:enterprise` scope to use this endpoint. + */ + get: operations["enterprise-admin/get-github-actions-permissions-enterprise"]; + /** + * Sets the GitHub Actions permissions policy for organizations and allowed actions and reusable workflows in an enterprise. + * + * You must authenticate using an access token with the `admin:enterprise` scope to use this endpoint. + */ + put: operations["enterprise-admin/set-github-actions-permissions-enterprise"]; + }; + "/enterprises/{enterprise}/actions/permissions/organizations": { + /** + * Lists the organizations that are selected to have GitHub Actions enabled in an enterprise. To use this endpoint, the enterprise permission policy for `enabled_organizations` must be configured to `selected`. For more information, see "[Set GitHub Actions permissions for an enterprise](#set-github-actions-permissions-for-an-enterprise)." + * + * You must authenticate using an access token with the `admin:enterprise` scope to use this endpoint. + */ + get: operations["enterprise-admin/list-selected-organizations-enabled-github-actions-enterprise"]; + /** + * Replaces the list of selected organizations that are enabled for GitHub Actions in an enterprise. To use this endpoint, the enterprise permission policy for `enabled_organizations` must be configured to `selected`. For more information, see "[Set GitHub Actions permissions for an enterprise](#set-github-actions-permissions-for-an-enterprise)." + * + * You must authenticate using an access token with the `admin:enterprise` scope to use this endpoint. + */ + put: operations["enterprise-admin/set-selected-organizations-enabled-github-actions-enterprise"]; + }; + "/enterprises/{enterprise}/actions/permissions/organizations/{org_id}": { + /** + * Adds an organization to the list of selected organizations that are enabled for GitHub Actions in an enterprise. To use this endpoint, the enterprise permission policy for `enabled_organizations` must be configured to `selected`. For more information, see "[Set GitHub Actions permissions for an enterprise](#set-github-actions-permissions-for-an-enterprise)." + * + * You must authenticate using an access token with the `admin:enterprise` scope to use this endpoint. + */ + put: operations["enterprise-admin/enable-selected-organization-github-actions-enterprise"]; + /** + * Removes an organization from the list of selected organizations that are enabled for GitHub Actions in an enterprise. To use this endpoint, the enterprise permission policy for `enabled_organizations` must be configured to `selected`. For more information, see "[Set GitHub Actions permissions for an enterprise](#set-github-actions-permissions-for-an-enterprise)." + * + * You must authenticate using an access token with the `admin:enterprise` scope to use this endpoint. + */ + delete: operations["enterprise-admin/disable-selected-organization-github-actions-enterprise"]; + }; + "/enterprises/{enterprise}/actions/permissions/selected-actions": { + /** + * Gets the selected actions and reusable workflows that are allowed in an enterprise. To use this endpoint, the enterprise permission policy for `allowed_actions` must be configured to `selected`. For more information, see "[Set GitHub Actions permissions for an enterprise](#set-github-actions-permissions-for-an-enterprise)." + * + * You must authenticate using an access token with the `admin:enterprise` scope to use this endpoint. + */ + get: operations["enterprise-admin/get-allowed-actions-enterprise"]; + /** + * Sets the actions and reusable workflows that are allowed in an enterprise. To use this endpoint, the enterprise permission policy for `allowed_actions` must be configured to `selected`. For more information, see "[Set GitHub Actions permissions for an enterprise](#set-github-actions-permissions-for-an-enterprise)." + * + * You must authenticate using an access token with the `admin:enterprise` scope to use this endpoint. + */ + put: operations["enterprise-admin/set-allowed-actions-enterprise"]; + }; + "/enterprises/{enterprise}/actions/permissions/workflow": { + /** + * Gets the default workflow permissions granted to the `GITHUB_TOKEN` when running workflows in an enterprise, + * as well as whether GitHub Actions can submit approving pull request reviews. For more information, see + * "[Enforcing a policy for workflow permissions in your enterprise](https://docs.github.com/enterprise-cloud@latest/admin/policies/enforcing-policies-for-your-enterprise/enforcing-policies-for-github-actions-in-your-enterprise#enforcing-a-policy-for-workflow-permissions-in-your-enterprise)." + * + * You must authenticate using an access token with the `admin:enterprise` scope to use this endpoint. + * GitHub Apps must have the `enterprise_administration:write` permission to use this endpoint. + */ + get: operations["actions/get-github-actions-default-workflow-permissions-enterprise"]; + /** + * Sets the default workflow permissions granted to the `GITHUB_TOKEN` when running workflows in an enterprise, and sets + * whether GitHub Actions can submit approving pull request reviews. For more information, see + * "[Enforcing a policy for workflow permissions in your enterprise](https://docs.github.com/enterprise-cloud@latest/admin/policies/enforcing-policies-for-your-enterprise/enforcing-policies-for-github-actions-in-your-enterprise#enforcing-a-policy-for-workflow-permissions-in-your-enterprise)." + * + * You must authenticate using an access token with the `admin:enterprise` scope to use this endpoint. + * GitHub Apps must have the `enterprise_administration:write` permission to use this endpoint. + */ + put: operations["actions/set-github-actions-default-workflow-permissions-enterprise"]; + }; + "/enterprises/{enterprise}/actions/runner-groups": { + /** + * Lists all self-hosted runner groups for an enterprise. + * + * You must authenticate using an access token with the `manage_runners:enterprise` scope to use this endpoint. + */ + get: operations["enterprise-admin/list-self-hosted-runner-groups-for-enterprise"]; + /** + * Creates a new self-hosted runner group for an enterprise. + * + * You must authenticate using an access token with the `manage_runners:enterprise` scope to use this endpoint. + */ + post: operations["enterprise-admin/create-self-hosted-runner-group-for-enterprise"]; + }; + "/enterprises/{enterprise}/actions/runner-groups/{runner_group_id}": { + /** + * Gets a specific self-hosted runner group for an enterprise. + * + * You must authenticate using an access token with the `manage_runners:enterprise` scope to use this endpoint. + */ + get: operations["enterprise-admin/get-self-hosted-runner-group-for-enterprise"]; + /** + * Deletes a self-hosted runner group for an enterprise. + * + * You must authenticate using an access token with the `manage_runners:enterprise` scope to use this endpoint. + */ + delete: operations["enterprise-admin/delete-self-hosted-runner-group-from-enterprise"]; + /** + * Updates the `name` and `visibility` of a self-hosted runner group in an enterprise. + * + * You must authenticate using an access token with the `manage_runners:enterprise` scope to use this endpoint. + */ + patch: operations["enterprise-admin/update-self-hosted-runner-group-for-enterprise"]; + }; + "/enterprises/{enterprise}/actions/runner-groups/{runner_group_id}/organizations": { + /** + * Lists the organizations with access to a self-hosted runner group. + * + * You must authenticate using an access token with the `manage_runners:enterprise` scope to use this endpoint. + */ + get: operations["enterprise-admin/list-org-access-to-self-hosted-runner-group-in-enterprise"]; + /** + * Replaces the list of organizations that have access to a self-hosted runner configured in an enterprise. + * + * You must authenticate using an access token with the `manage_runners:enterprise` scope to use this endpoint. + */ + put: operations["enterprise-admin/set-org-access-to-self-hosted-runner-group-in-enterprise"]; + }; + "/enterprises/{enterprise}/actions/runner-groups/{runner_group_id}/organizations/{org_id}": { + /** + * Adds an organization to the list of selected organizations that can access a self-hosted runner group. The runner group must have `visibility` set to `selected`. For more information, see "[Create a self-hosted runner group for an enterprise](#create-a-self-hosted-runner-group-for-an-enterprise)." + * + * You must authenticate using an access token with the `manage_runners:enterprise` scope to use this endpoint. + */ + put: operations["enterprise-admin/add-org-access-to-self-hosted-runner-group-in-enterprise"]; + /** + * Removes an organization from the list of selected organizations that can access a self-hosted runner group. The runner group must have `visibility` set to `selected`. For more information, see "[Create a self-hosted runner group for an enterprise](#create-a-self-hosted-runner-group-for-an-enterprise)." + * + * You must authenticate using an access token with the `manage_runners:enterprise` scope to use this endpoint. + */ + delete: operations["enterprise-admin/remove-org-access-to-self-hosted-runner-group-in-enterprise"]; + }; + "/enterprises/{enterprise}/actions/runner-groups/{runner_group_id}/runners": { + /** + * Lists the self-hosted runners that are in a specific enterprise group. + * + * You must authenticate using an access token with the `manage_runners:enterprise` scope to use this endpoint. + */ + get: operations["enterprise-admin/list-self-hosted-runners-in-group-for-enterprise"]; + /** + * Replaces the list of self-hosted runners that are part of an enterprise runner group. + * + * You must authenticate using an access token with the `manage_runners:enterprise` scope to use this endpoint. + */ + put: operations["enterprise-admin/set-self-hosted-runners-in-group-for-enterprise"]; + }; + "/enterprises/{enterprise}/actions/runner-groups/{runner_group_id}/runners/{runner_id}": { + /** + * Adds a self-hosted runner to a runner group configured in an enterprise. + * + * You must authenticate using an access token with the `manage_runners:enterprise` + * scope to use this endpoint. + */ + put: operations["enterprise-admin/add-self-hosted-runner-to-group-for-enterprise"]; + /** + * Removes a self-hosted runner from a group configured in an enterprise. The runner is then returned to the default group. + * + * You must authenticate using an access token with the `manage_runners:enterprise` scope to use this endpoint. + */ + delete: operations["enterprise-admin/remove-self-hosted-runner-from-group-for-enterprise"]; + }; + "/enterprises/{enterprise}/actions/runners": { + /** + * Lists all self-hosted runners configured for an enterprise. + * + * You must authenticate using an access token with the `manage_runners:enterprise` scope to use this endpoint. + */ + get: operations["enterprise-admin/list-self-hosted-runners-for-enterprise"]; + }; + "/enterprises/{enterprise}/actions/runners/downloads": { + /** + * Lists binaries for the runner application that you can download and run. + * + * You must authenticate using an access token with the `manage_runners:enterprise` scope to use this endpoint. + */ + get: operations["enterprise-admin/list-runner-applications-for-enterprise"]; + }; + "/enterprises/{enterprise}/actions/runners/registration-token": { + /** + * Returns a token that you can pass to the `config` script. The token expires after one hour. + * + * You must authenticate using an access token with the `manage_runners:enterprise` scope to use this endpoint. + * + * #### Example using registration token + * + * Configure your self-hosted runner, replacing `TOKEN` with the registration token provided by this endpoint. + * + * ``` + * ./config.sh --url https://github.com/enterprises/octo-enterprise --token TOKEN + * ``` + */ + post: operations["enterprise-admin/create-registration-token-for-enterprise"]; + }; + "/enterprises/{enterprise}/actions/runners/remove-token": { + /** + * Returns a token that you can pass to the `config` script to remove a self-hosted runner from an enterprise. The token expires after one hour. + * + * You must authenticate using an access token with the `manage_runners:enterprise` scope to use this endpoint. + * + * #### Example using remove token + * + * To remove your self-hosted runner from an enterprise, replace `TOKEN` with the remove token provided by this + * endpoint. + * + * ``` + * ./config.sh remove --token TOKEN + * ``` + */ + post: operations["enterprise-admin/create-remove-token-for-enterprise"]; + }; + "/enterprises/{enterprise}/actions/runners/{runner_id}": { + /** + * Gets a specific self-hosted runner configured in an enterprise. + * + * You must authenticate using an access token with the `manage_runners:enterprise` scope to use this endpoint. + */ + get: operations["enterprise-admin/get-self-hosted-runner-for-enterprise"]; + /** + * Forces the removal of a self-hosted runner from an enterprise. You can use this endpoint to completely remove the runner when the machine you were using no longer exists. + * + * You must authenticate using an access token with the `manage_runners:enterprise` scope to use this endpoint. + */ + delete: operations["enterprise-admin/delete-self-hosted-runner-from-enterprise"]; + }; + "/enterprises/{enterprise}/actions/runners/{runner_id}/labels": { + /** + * Lists all labels for a self-hosted runner configured in an enterprise. + * + * You must authenticate using an access token with the `manage_runners:enterprise` scope to use this endpoint. + */ + get: operations["enterprise-admin/list-labels-for-self-hosted-runner-for-enterprise"]; + /** + * Remove all previous custom labels and set the new custom labels for a specific + * self-hosted runner configured in an enterprise. + * + * You must authenticate using an access token with the `manage_runners:enterprise` scope to use this endpoint. + */ + put: operations["enterprise-admin/set-custom-labels-for-self-hosted-runner-for-enterprise"]; + /** + * Add custom labels to a self-hosted runner configured in an enterprise. + * + * You must authenticate using an access token with the `manage_runners:enterprise` scope to use this endpoint. + */ + post: operations["enterprise-admin/add-custom-labels-to-self-hosted-runner-for-enterprise"]; + /** + * Remove all custom labels from a self-hosted runner configured in an + * enterprise. Returns the remaining read-only labels from the runner. + * + * You must authenticate using an access token with the `manage_runners:enterprise` scope to use this endpoint. + */ + delete: operations["enterprise-admin/remove-all-custom-labels-from-self-hosted-runner-for-enterprise"]; + }; + "/enterprises/{enterprise}/actions/runners/{runner_id}/labels/{name}": { + /** + * Remove a custom label from a self-hosted runner configured + * in an enterprise. Returns the remaining labels from the runner. + * + * This endpoint returns a `404 Not Found` status if the custom label is not + * present on the runner. + * + * You must authenticate using an access token with the `manage_runners:enterprise` scope to use this endpoint. + */ + delete: operations["enterprise-admin/remove-custom-label-from-self-hosted-runner-for-enterprise"]; + }; + "/enterprises/{enterprise}/audit-log": { + /** Gets the audit log for an enterprise. To use this endpoint, you must be an enterprise admin, and you must use an access token with the `admin:enterprise` scope. */ + get: operations["enterprise-admin/get-audit-log"]; + }; + "/enterprises/{enterprise}/code-scanning/alerts": { + /** + * Lists code scanning alerts for the default branch for all eligible repositories in an enterprise. Eligible repositories are repositories that are owned by organizations that you own or for which you are a security manager. For more information, see "[Managing security managers in your organization](https://docs.github.com/organizations/managing-peoples-access-to-your-organization-with-roles/managing-security-managers-in-your-organization)." + * + * To use this endpoint, you must be a member of the enterprise, + * and you must use an access token with the `repo` scope or `security_events` scope. + */ + get: operations["code-scanning/list-alerts-for-enterprise"]; + }; + "/enterprises/{enterprise}/secret-scanning/alerts": { + /** + * Lists secret scanning alerts for eligible repositories in an enterprise, from newest to oldest. + * To use this endpoint, you must be a member of the enterprise, and you must use an access token with the `repo` scope or `security_events` scope. Alerts are only returned for organizations in the enterprise for which you are an organization owner or a [security manager](https://docs.github.com/organizations/managing-peoples-access-to-your-organization-with-roles/managing-security-managers-in-your-organization). + */ + get: operations["secret-scanning/list-alerts-for-enterprise"]; + }; + "/enterprises/{enterprise}/settings/billing/actions": { + /** + * Gets the summary of the free and paid GitHub Actions minutes used. + * + * Paid minutes only apply to workflows in private repositories that use GitHub-hosted runners. Minutes used is listed for each GitHub-hosted runner operating system. Any job re-runs are also included in the usage. The usage does not include the multiplier for macOS and Windows runners and is not rounded up to the nearest whole minute. For more information, see "[Managing billing for GitHub Actions](https://docs.github.com/github/setting-up-and-managing-billing-and-payments-on-github/managing-billing-for-github-actions)". + * + * The authenticated user must be an enterprise admin. + */ + get: operations["billing/get-github-actions-billing-ghe"]; + }; + "/enterprises/{enterprise}/settings/billing/advanced-security": { + /** + * Gets the GitHub Advanced Security active committers for an enterprise per repository. + * + * Each distinct user login across all repositories is counted as a single Advanced Security seat, so the `total_advanced_security_committers` is not the sum of active_users for each repository. + * + * The total number of repositories with committer information is tracked by the `total_count` field. + */ + get: operations["billing/get-github-advanced-security-billing-ghe"]; + }; + "/enterprises/{enterprise}/settings/billing/packages": { + /** + * Gets the free and paid storage used for GitHub Packages in gigabytes. + * + * Paid minutes only apply to packages stored for private repositories. For more information, see "[Managing billing for GitHub Packages](https://docs.github.com/github/setting-up-and-managing-billing-and-payments-on-github/managing-billing-for-github-packages)." + * + * The authenticated user must be an enterprise admin. + */ + get: operations["billing/get-github-packages-billing-ghe"]; + }; + "/enterprises/{enterprise}/settings/billing/shared-storage": { + /** + * Gets the estimated paid and estimated total storage used for GitHub Actions and GitHub Packages. + * + * Paid minutes only apply to packages stored for private repositories. For more information, see "[Managing billing for GitHub Packages](https://docs.github.com/github/setting-up-and-managing-billing-and-payments-on-github/managing-billing-for-github-packages)." + * + * The authenticated user must be an enterprise admin. + */ + get: operations["billing/get-shared-storage-billing-ghe"]; + }; + "/events": { + /** We delay the public events feed by five minutes, which means the most recent event returned by the public events API actually occurred at least five minutes ago. */ + get: operations["activity/list-public-events"]; + }; + "/feeds": { + /** + * GitHub provides several timeline resources in [Atom](http://en.wikipedia.org/wiki/Atom_(standard)) format. The Feeds API lists all the feeds available to the authenticated user: + * + * * **Timeline**: The GitHub global public timeline + * * **User**: The public timeline for any user, using [URI template](https://docs.github.com/rest/overview/resources-in-the-rest-api#hypermedia) + * * **Current user public**: The public timeline for the authenticated user + * * **Current user**: The private timeline for the authenticated user + * * **Current user actor**: The private timeline for activity created by the authenticated user + * * **Current user organizations**: The private timeline for the organizations the authenticated user is a member of. + * * **Security advisories**: A collection of public announcements that provide information about security-related vulnerabilities in software on GitHub. + * + * **Note**: Private feeds are only returned when [authenticating via Basic Auth](https://docs.github.com/rest/overview/other-authentication-methods#basic-authentication) since current feed URIs use the older, non revocable auth tokens. + */ + get: operations["activity/get-feeds"]; + }; + "/gists": { + /** Lists the authenticated user's gists or if called anonymously, this endpoint returns all public gists: */ + get: operations["gists/list"]; + /** + * Allows you to add a new gist with one or more files. + * + * **Note:** Don't name your files "gistfile" with a numerical suffix. This is the format of the automatic naming scheme that Gist uses internally. + */ + post: operations["gists/create"]; + }; + "/gists/public": { + /** + * List public gists sorted by most recently updated to least recently updated. + * + * Note: With [pagination](https://docs.github.com/rest/overview/resources-in-the-rest-api#pagination), you can fetch up to 3000 gists. For example, you can fetch 100 pages with 30 gists per page or 30 pages with 100 gists per page. + */ + get: operations["gists/list-public"]; + }; + "/gists/starred": { + /** List the authenticated user's starred gists: */ + get: operations["gists/list-starred"]; + }; + "/gists/{gist_id}": { + get: operations["gists/get"]; + delete: operations["gists/delete"]; + /** Allows you to update or delete a gist file and rename gist files. Files from the previous version of the gist that aren't explicitly changed during an edit are unchanged. */ + patch: operations["gists/update"]; + }; + "/gists/{gist_id}/comments": { + get: operations["gists/list-comments"]; + post: operations["gists/create-comment"]; + }; + "/gists/{gist_id}/comments/{comment_id}": { + get: operations["gists/get-comment"]; + delete: operations["gists/delete-comment"]; + patch: operations["gists/update-comment"]; + }; + "/gists/{gist_id}/commits": { + get: operations["gists/list-commits"]; + }; + "/gists/{gist_id}/forks": { + get: operations["gists/list-forks"]; + /** **Note**: This was previously `/gists/:gist_id/fork`. */ + post: operations["gists/fork"]; + }; + "/gists/{gist_id}/star": { + get: operations["gists/check-is-starred"]; + /** Note that you'll need to set `Content-Length` to zero when calling out to this endpoint. For more information, see "[HTTP verbs](https://docs.github.com/rest/overview/resources-in-the-rest-api#http-verbs)." */ + put: operations["gists/star"]; + delete: operations["gists/unstar"]; + }; + "/gists/{gist_id}/{sha}": { + get: operations["gists/get-revision"]; + }; + "/gitignore/templates": { + /** List all templates available to pass as an option when [creating a repository](https://docs.github.com/rest/reference/repos#create-a-repository-for-the-authenticated-user). */ + get: operations["gitignore/get-all-templates"]; + }; + "/gitignore/templates/{name}": { + /** + * The API also allows fetching the source of a single template. + * Use the raw [media type](https://docs.github.com/rest/overview/media-types/) to get the raw contents. + */ + get: operations["gitignore/get-template"]; + }; + "/installation/repositories": { + /** + * List repositories that an app installation can access. + * + * You must use an [installation access token](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-an-installation) to access this endpoint. + */ + get: operations["apps/list-repos-accessible-to-installation"]; + }; + "/installation/token": { + /** + * Revokes the installation token you're using to authenticate as an installation and access this endpoint. + * + * Once an installation token is revoked, the token is invalidated and cannot be used. Other endpoints that require the revoked installation token must have a new installation token to work. You can create a new token using the "[Create an installation access token for an app](https://docs.github.com/rest/reference/apps#create-an-installation-access-token-for-an-app)" endpoint. + * + * You must use an [installation access token](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-an-installation) to access this endpoint. + */ + delete: operations["apps/revoke-installation-access-token"]; + }; + "/issues": { + /** + * List issues assigned to the authenticated user across all visible repositories including owned repositories, member + * repositories, and organization repositories. You can use the `filter` query parameter to fetch issues that are not + * necessarily assigned to you. + * + * + * **Note**: GitHub's REST API v3 considers every pull request an issue, but not every issue is a pull request. For this + * reason, "Issues" endpoints may return both issues and pull requests in the response. You can identify pull requests by + * the `pull_request` key. Be aware that the `id` of a pull request returned from "Issues" endpoints will be an _issue id_. To find out the pull + * request id, use the "[List pull requests](https://docs.github.com/rest/reference/pulls#list-pull-requests)" endpoint. + */ + get: operations["issues/list"]; + }; + "/licenses": { + get: operations["licenses/get-all-commonly-used"]; + }; + "/licenses/{license}": { + get: operations["licenses/get"]; + }; + "/markdown": { + post: operations["markdown/render"]; + }; + "/markdown/raw": { + /** You must send Markdown as plain text (using a `Content-Type` header of `text/plain` or `text/x-markdown`) to this endpoint, rather than using JSON format. In raw mode, [GitHub Flavored Markdown](https://github.github.com/gfm/) is not supported and Markdown will be rendered in plain format like a README.md file. Markdown content must be 400 KB or less. */ + post: operations["markdown/render-raw"]; + }; + "/marketplace_listing/accounts/{account_id}": { + /** + * Shows whether the user or organization account actively subscribes to a plan listed by the authenticated GitHub App. When someone submits a plan change that won't be processed until the end of their billing cycle, you will also see the upcoming pending change. + * + * GitHub Apps must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. OAuth Apps must use [basic authentication](https://docs.github.com/rest/overview/other-authentication-methods#basic-authentication) with their client ID and client secret to access this endpoint. + */ + get: operations["apps/get-subscription-plan-for-account"]; + }; + "/marketplace_listing/plans": { + /** + * Lists all plans that are part of your GitHub Marketplace listing. + * + * GitHub Apps must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. OAuth Apps must use [basic authentication](https://docs.github.com/rest/overview/other-authentication-methods#basic-authentication) with their client ID and client secret to access this endpoint. + */ + get: operations["apps/list-plans"]; + }; + "/marketplace_listing/plans/{plan_id}/accounts": { + /** + * Returns user and organization accounts associated with the specified plan, including free plans. For per-seat pricing, you see the list of accounts that have purchased the plan, including the number of seats purchased. When someone submits a plan change that won't be processed until the end of their billing cycle, you will also see the upcoming pending change. + * + * GitHub Apps must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. OAuth Apps must use [basic authentication](https://docs.github.com/rest/overview/other-authentication-methods#basic-authentication) with their client ID and client secret to access this endpoint. + */ + get: operations["apps/list-accounts-for-plan"]; + }; + "/marketplace_listing/stubbed/accounts/{account_id}": { + /** + * Shows whether the user or organization account actively subscribes to a plan listed by the authenticated GitHub App. When someone submits a plan change that won't be processed until the end of their billing cycle, you will also see the upcoming pending change. + * + * GitHub Apps must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. OAuth Apps must use [basic authentication](https://docs.github.com/rest/overview/other-authentication-methods#basic-authentication) with their client ID and client secret to access this endpoint. + */ + get: operations["apps/get-subscription-plan-for-account-stubbed"]; + }; + "/marketplace_listing/stubbed/plans": { + /** + * Lists all plans that are part of your GitHub Marketplace listing. + * + * GitHub Apps must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. OAuth Apps must use [basic authentication](https://docs.github.com/rest/overview/other-authentication-methods#basic-authentication) with their client ID and client secret to access this endpoint. + */ + get: operations["apps/list-plans-stubbed"]; + }; + "/marketplace_listing/stubbed/plans/{plan_id}/accounts": { + /** + * Returns repository and organization accounts associated with the specified plan, including free plans. For per-seat pricing, you see the list of accounts that have purchased the plan, including the number of seats purchased. When someone submits a plan change that won't be processed until the end of their billing cycle, you will also see the upcoming pending change. + * + * GitHub Apps must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. OAuth Apps must use [basic authentication](https://docs.github.com/rest/overview/other-authentication-methods#basic-authentication) with their client ID and client secret to access this endpoint. + */ + get: operations["apps/list-accounts-for-plan-stubbed"]; + }; + "/meta": { + /** + * Returns meta information about GitHub, including a list of GitHub's IP addresses. For more information, see "[About GitHub's IP addresses](https://docs.github.com/articles/about-github-s-ip-addresses/)." + * + * **Note:** The IP addresses shown in the documentation's response are only example values. You must always query the API directly to get the latest list of IP addresses. + */ + get: operations["meta/get"]; + }; + "/networks/{owner}/{repo}/events": { + get: operations["activity/list-public-events-for-repo-network"]; + }; + "/notifications": { + /** List all notifications for the current user, sorted by most recently updated. */ + get: operations["activity/list-notifications-for-authenticated-user"]; + /** Marks all notifications as "read" removes it from the [default view on GitHub](https://github.com/notifications). If the number of notifications is too large to complete in one request, you will receive a `202 Accepted` status and GitHub will run an asynchronous process to mark notifications as "read." To check whether any "unread" notifications remain, you can use the [List notifications for the authenticated user](https://docs.github.com/rest/reference/activity#list-notifications-for-the-authenticated-user) endpoint and pass the query parameter `all=false`. */ + put: operations["activity/mark-notifications-as-read"]; + }; + "/notifications/threads/{thread_id}": { + get: operations["activity/get-thread"]; + patch: operations["activity/mark-thread-as-read"]; + }; + "/notifications/threads/{thread_id}/subscription": { + /** + * This checks to see if the current user is subscribed to a thread. You can also [get a repository subscription](https://docs.github.com/rest/reference/activity#get-a-repository-subscription). + * + * Note that subscriptions are only generated if a user is participating in a conversation--for example, they've replied to the thread, were **@mentioned**, or manually subscribe to a thread. + */ + get: operations["activity/get-thread-subscription-for-authenticated-user"]; + /** + * If you are watching a repository, you receive notifications for all threads by default. Use this endpoint to ignore future notifications for threads until you comment on the thread or get an **@mention**. + * + * You can also use this endpoint to subscribe to threads that you are currently not receiving notifications for or to subscribed to threads that you have previously ignored. + * + * Unsubscribing from a conversation in a repository that you are not watching is functionally equivalent to the [Delete a thread subscription](https://docs.github.com/rest/reference/activity#delete-a-thread-subscription) endpoint. + */ + put: operations["activity/set-thread-subscription"]; + /** Mutes all future notifications for a conversation until you comment on the thread or get an **@mention**. If you are watching the repository of the thread, you will still receive notifications. To ignore future notifications for a repository you are watching, use the [Set a thread subscription](https://docs.github.com/rest/reference/activity#set-a-thread-subscription) endpoint and set `ignore` to `true`. */ + delete: operations["activity/delete-thread-subscription"]; + }; + "/octocat": { + /** Get the octocat as ASCII art */ + get: operations["meta/get-octocat"]; + }; + "/organizations": { + /** + * Lists all organizations, in the order that they were created on GitHub. + * + * **Note:** Pagination is powered exclusively by the `since` parameter. Use the [Link header](https://docs.github.com/rest/overview/resources-in-the-rest-api#link-header) to get the URL for the next page of organizations. + */ + get: operations["orgs/list"]; + }; + "/organizations/{organization_id}/custom_roles": { + /** + * List the custom repository roles available in this organization. In order to see custom + * repository roles in an organization, the authenticated user must be an organization owner. + * + * For more information on custom repository roles, see "[Managing custom repository roles for an organization](https://docs.github.com/organizations/managing-peoples-access-to-your-organization-with-roles/managing-custom-repository-roles-for-an-organization)". + */ + get: operations["orgs/list-custom-roles"]; + }; + "/orgs/{org}": { + /** + * To see many of the organization response values, you need to be an authenticated organization owner with the `admin:org` scope. When the value of `two_factor_requirement_enabled` is `true`, the organization requires all members, billing managers, and outside collaborators to enable [two-factor authentication](https://docs.github.com/articles/securing-your-account-with-two-factor-authentication-2fa/). + * + * GitHub Apps with the `Organization plan` permission can use this endpoint to retrieve information about an organization's GitHub plan. See "[Authenticating with GitHub Apps](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/)" for details. For an example response, see 'Response with GitHub plan information' below." + */ + get: operations["orgs/get"]; + /** + * **Parameter Deprecation Notice:** GitHub will replace and discontinue `members_allowed_repository_creation_type` in favor of more granular permissions. The new input parameters are `members_can_create_public_repositories`, `members_can_create_private_repositories` for all organizations and `members_can_create_internal_repositories` for organizations associated with an enterprise account using GitHub Enterprise Cloud or GitHub Enterprise Server 2.20+. For more information, see the [blog post](https://developer.github.com/changes/2019-12-03-internal-visibility-changes). + * + * Enables an authenticated organization owner with the `admin:org` scope to update the organization's profile and member privileges. + */ + patch: operations["orgs/update"]; + }; + "/orgs/{org}/actions/cache/usage": { + /** + * Gets the total GitHub Actions cache usage for an organization. + * The data fetched using this API is refreshed approximately every 5 minutes, so values returned from this endpoint may take at least 5 minutes to get updated. + * You must authenticate using an access token with the `read:org` scope to use this endpoint. GitHub Apps must have the `organization_admistration:read` permission to use this endpoint. + */ + get: operations["actions/get-actions-cache-usage-for-org"]; + }; + "/orgs/{org}/actions/cache/usage-by-repository": { + /** + * Lists repositories and their GitHub Actions cache usage for an organization. + * The data fetched using this API is refreshed approximately every 5 minutes, so values returned from this endpoint may take at least 5 minutes to get updated. + * You must authenticate using an access token with the `read:org` scope to use this endpoint. GitHub Apps must have the `organization_admistration:read` permission to use this endpoint. + */ + get: operations["actions/get-actions-cache-usage-by-repo-for-org"]; + }; + "/orgs/{org}/actions/oidc/customization/sub": { + /** + * Gets the customization template for an OpenID Connect (OIDC) subject claim. + * You must authenticate using an access token with the `read:org` scope to use this endpoint. + * GitHub Apps must have the `organization_administration:write` permission to use this endpoint. + */ + get: operations["oidc/get-oidc-custom-sub-template-for-org"]; + /** + * Creates or updates the customization template for an OpenID Connect (OIDC) subject claim. + * You must authenticate using an access token with the `write:org` scope to use this endpoint. + * GitHub Apps must have the `admin:org` permission to use this endpoint. + */ + put: operations["oidc/update-oidc-custom-sub-template-for-org"]; + }; + "/orgs/{org}/actions/permissions": { + /** + * Gets the GitHub Actions permissions policy for repositories and allowed actions and reusable workflows in an organization. + * + * You must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `administration` organization permission to use this API. + */ + get: operations["actions/get-github-actions-permissions-organization"]; + /** + * Sets the GitHub Actions permissions policy for repositories and allowed actions and reusable workflows in an organization. + * + * If the organization belongs to an enterprise that has set restrictive permissions at the enterprise level, such as `allowed_actions` to `selected` actions and reusable workflows, then you cannot override them for the organization. + * + * You must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `administration` organization permission to use this API. + */ + put: operations["actions/set-github-actions-permissions-organization"]; + }; + "/orgs/{org}/actions/permissions/repositories": { + /** + * Lists the selected repositories that are enabled for GitHub Actions in an organization. To use this endpoint, the organization permission policy for `enabled_repositories` must be configured to `selected`. For more information, see "[Set GitHub Actions permissions for an organization](#set-github-actions-permissions-for-an-organization)." + * + * You must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `administration` organization permission to use this API. + */ + get: operations["actions/list-selected-repositories-enabled-github-actions-organization"]; + /** + * Replaces the list of selected repositories that are enabled for GitHub Actions in an organization. To use this endpoint, the organization permission policy for `enabled_repositories` must be configured to `selected`. For more information, see "[Set GitHub Actions permissions for an organization](#set-github-actions-permissions-for-an-organization)." + * + * You must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `administration` organization permission to use this API. + */ + put: operations["actions/set-selected-repositories-enabled-github-actions-organization"]; + }; + "/orgs/{org}/actions/permissions/repositories/{repository_id}": { + /** + * Adds a repository to the list of selected repositories that are enabled for GitHub Actions in an organization. To use this endpoint, the organization permission policy for `enabled_repositories` must be must be configured to `selected`. For more information, see "[Set GitHub Actions permissions for an organization](#set-github-actions-permissions-for-an-organization)." + * + * You must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `administration` organization permission to use this API. + */ + put: operations["actions/enable-selected-repository-github-actions-organization"]; + /** + * Removes a repository from the list of selected repositories that are enabled for GitHub Actions in an organization. To use this endpoint, the organization permission policy for `enabled_repositories` must be configured to `selected`. For more information, see "[Set GitHub Actions permissions for an organization](#set-github-actions-permissions-for-an-organization)." + * + * You must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `administration` organization permission to use this API. + */ + delete: operations["actions/disable-selected-repository-github-actions-organization"]; + }; + "/orgs/{org}/actions/permissions/selected-actions": { + /** + * Gets the selected actions and reusable workflows that are allowed in an organization. To use this endpoint, the organization permission policy for `allowed_actions` must be configured to `selected`. For more information, see "[Set GitHub Actions permissions for an organization](#set-github-actions-permissions-for-an-organization)."" + * + * You must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `administration` organization permission to use this API. + */ + get: operations["actions/get-allowed-actions-organization"]; + /** + * Sets the actions and reusable workflows that are allowed in an organization. To use this endpoint, the organization permission policy for `allowed_actions` must be configured to `selected`. For more information, see "[Set GitHub Actions permissions for an organization](#set-github-actions-permissions-for-an-organization)." + * + * If the organization belongs to an enterprise that has `selected` actions and reusable workflows set at the enterprise level, then you cannot override any of the enterprise's allowed actions and reusable workflows settings. + * + * To use the `patterns_allowed` setting for private repositories, the organization must belong to an enterprise. If the organization does not belong to an enterprise, then the `patterns_allowed` setting only applies to public repositories in the organization. + * + * You must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `administration` organization permission to use this API. + */ + put: operations["actions/set-allowed-actions-organization"]; + }; + "/orgs/{org}/actions/permissions/workflow": { + /** + * Gets the default workflow permissions granted to the `GITHUB_TOKEN` when running workflows in an organization, + * as well as whether GitHub Actions can submit approving pull request reviews. For more information, see + * "[Setting the permissions of the GITHUB_TOKEN for your organization](https://docs.github.com/organizations/managing-organization-settings/disabling-or-limiting-github-actions-for-your-organization#setting-the-permissions-of-the-github_token-for-your-organization)." + * + * You must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `administration` organization permission to use this API. + */ + get: operations["actions/get-github-actions-default-workflow-permissions-organization"]; + /** + * Sets the default workflow permissions granted to the `GITHUB_TOKEN` when running workflows in an organization, and sets if GitHub Actions + * can submit approving pull request reviews. For more information, see + * "[Setting the permissions of the GITHUB_TOKEN for your organization](https://docs.github.com/organizations/managing-organization-settings/disabling-or-limiting-github-actions-for-your-organization#setting-the-permissions-of-the-github_token-for-your-organization)." + * + * You must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `administration` organization permission to use this API. + */ + put: operations["actions/set-github-actions-default-workflow-permissions-organization"]; + }; + "/orgs/{org}/actions/runner-groups": { + /** + * The self-hosted runner groups REST API is available with GitHub Enterprise Cloud. For more information, see "[GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products)." + * + * Lists all self-hosted runner groups configured in an organization and inherited from an enterprise. + * + * You must authenticate using an access token with the `admin:org` scope to use this endpoint. + */ + get: operations["actions/list-self-hosted-runner-groups-for-org"]; + /** + * The self-hosted runner groups REST API is available with GitHub Enterprise Cloud and GitHub Enterprise Server. For more information, see "[GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products)." + * + * Creates a new self-hosted runner group for an organization. + * + * You must authenticate using an access token with the `admin:org` scope to use this endpoint. + */ + post: operations["actions/create-self-hosted-runner-group-for-org"]; + }; + "/orgs/{org}/actions/runner-groups/{runner_group_id}": { + /** + * The self-hosted runner groups REST API is available with GitHub Enterprise Cloud. For more information, see "[GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products)." + * + * Gets a specific self-hosted runner group for an organization. + * + * You must authenticate using an access token with the `admin:org` scope to use this endpoint. + */ + get: operations["actions/get-self-hosted-runner-group-for-org"]; + /** + * The self-hosted runner groups REST API is available with GitHub Enterprise Cloud. For more information, see "[GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products)." + * + * Deletes a self-hosted runner group for an organization. + * + * You must authenticate using an access token with the `admin:org` scope to use this endpoint. + */ + delete: operations["actions/delete-self-hosted-runner-group-from-org"]; + /** + * The self-hosted runner groups REST API is available with GitHub Enterprise Cloud. For more information, see "[GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products)." + * + * Updates the `name` and `visibility` of a self-hosted runner group in an organization. + * + * You must authenticate using an access token with the `admin:org` scope to use this endpoint. + */ + patch: operations["actions/update-self-hosted-runner-group-for-org"]; + }; + "/orgs/{org}/actions/runner-groups/{runner_group_id}/repositories": { + /** + * The self-hosted runner groups REST API is available with GitHub Enterprise Cloud and GitHub Enterprise Server. For more information, see "[GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products)." + * + * Lists the repositories with access to a self-hosted runner group configured in an organization. + * + * You must authenticate using an access token with the `admin:org` scope to use this endpoint. + */ + get: operations["actions/list-repo-access-to-self-hosted-runner-group-in-org"]; + /** + * The self-hosted runner groups REST API is available with GitHub Enterprise Cloud. For more information, see "[GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products)." + * + * Replaces the list of repositories that have access to a self-hosted runner group configured in an organization. + * + * You must authenticate using an access token with the `admin:org` scope to use this endpoint. + */ + put: operations["actions/set-repo-access-to-self-hosted-runner-group-in-org"]; + }; + "/orgs/{org}/actions/runner-groups/{runner_group_id}/repositories/{repository_id}": { + /** + * The self-hosted runner groups REST API is available with GitHub Enterprise Cloud. For more information, see "[GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products)." + * + * + * Adds a repository to the list of selected repositories that can access a self-hosted runner group. The runner group must have `visibility` set to `selected`. For more information, see "[Create a self-hosted runner group for an organization](#create-a-self-hosted-runner-group-for-an-organization)." + * + * You must authenticate using an access token with the `admin:org` + * scope to use this endpoint. + */ + put: operations["actions/add-repo-access-to-self-hosted-runner-group-in-org"]; + /** + * The self-hosted runner groups REST API is available with GitHub Enterprise Cloud. For more information, see "[GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products)." + * + * + * Removes a repository from the list of selected repositories that can access a self-hosted runner group. The runner group must have `visibility` set to `selected`. For more information, see "[Create a self-hosted runner group for an organization](#create-a-self-hosted-runner-group-for-an-organization)." + * + * You must authenticate using an access token with the `admin:org` scope to use this endpoint. + */ + delete: operations["actions/remove-repo-access-to-self-hosted-runner-group-in-org"]; + }; + "/orgs/{org}/actions/runner-groups/{runner_group_id}/runners": { + /** + * The self-hosted runner groups REST API is available with GitHub Enterprise Cloud. For more information, see "[GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products)." + * + * Lists self-hosted runners that are in a specific organization group. + * + * You must authenticate using an access token with the `admin:org` scope to use this endpoint. + */ + get: operations["actions/list-self-hosted-runners-in-group-for-org"]; + /** + * The self-hosted runner groups REST API is available with GitHub Enterprise Cloud. For more information, see "[GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products)." + * + * Replaces the list of self-hosted runners that are part of an organization runner group. + * + * You must authenticate using an access token with the `admin:org` scope to use this endpoint. + */ + put: operations["actions/set-self-hosted-runners-in-group-for-org"]; + }; + "/orgs/{org}/actions/runner-groups/{runner_group_id}/runners/{runner_id}": { + /** + * The self-hosted runner groups REST API is available with GitHub Enterprise Cloud. For more information, see "[GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products)." + * + * + * Adds a self-hosted runner to a runner group configured in an organization. + * + * You must authenticate using an access token with the `admin:org` + * scope to use this endpoint. + */ + put: operations["actions/add-self-hosted-runner-to-group-for-org"]; + /** + * The self-hosted runner groups REST API is available with GitHub Enterprise Cloud. For more information, see "[GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products)." + * + * + * Removes a self-hosted runner from a group configured in an organization. The runner is then returned to the default group. + * + * You must authenticate using an access token with the `admin:org` scope to use this endpoint. + */ + delete: operations["actions/remove-self-hosted-runner-from-group-for-org"]; + }; + "/orgs/{org}/actions/runners": { + /** + * Lists all self-hosted runners configured in an organization. + * + * You must authenticate using an access token with the `admin:org` scope to use this endpoint. + */ + get: operations["actions/list-self-hosted-runners-for-org"]; + }; + "/orgs/{org}/actions/runners/downloads": { + /** + * Lists binaries for the runner application that you can download and run. + * + * You must authenticate using an access token with the `admin:org` scope to use this endpoint. + */ + get: operations["actions/list-runner-applications-for-org"]; + }; + "/orgs/{org}/actions/runners/registration-token": { + /** + * Returns a token that you can pass to the `config` script. The token expires after one hour. + * + * You must authenticate using an access token with the `admin:org` scope to use this endpoint. + * + * #### Example using registration token + * + * Configure your self-hosted runner, replacing `TOKEN` with the registration token provided by this endpoint. + * + * ``` + * ./config.sh --url https://github.com/octo-org --token TOKEN + * ``` + */ + post: operations["actions/create-registration-token-for-org"]; + }; + "/orgs/{org}/actions/runners/remove-token": { + /** + * Returns a token that you can pass to the `config` script to remove a self-hosted runner from an organization. The token expires after one hour. + * + * You must authenticate using an access token with the `admin:org` scope to use this endpoint. + * + * #### Example using remove token + * + * To remove your self-hosted runner from an organization, replace `TOKEN` with the remove token provided by this + * endpoint. + * + * ``` + * ./config.sh remove --token TOKEN + * ``` + */ + post: operations["actions/create-remove-token-for-org"]; + }; + "/orgs/{org}/actions/runners/{runner_id}": { + /** + * Gets a specific self-hosted runner configured in an organization. + * + * You must authenticate using an access token with the `admin:org` scope to use this endpoint. + */ + get: operations["actions/get-self-hosted-runner-for-org"]; + /** + * Forces the removal of a self-hosted runner from an organization. You can use this endpoint to completely remove the runner when the machine you were using no longer exists. + * + * You must authenticate using an access token with the `admin:org` scope to use this endpoint. + */ + delete: operations["actions/delete-self-hosted-runner-from-org"]; + }; + "/orgs/{org}/actions/runners/{runner_id}/labels": { + /** + * Lists all labels for a self-hosted runner configured in an organization. + * + * You must authenticate using an access token with the `admin:org` scope to use this endpoint. + */ + get: operations["actions/list-labels-for-self-hosted-runner-for-org"]; + /** + * Remove all previous custom labels and set the new custom labels for a specific + * self-hosted runner configured in an organization. + * + * You must authenticate using an access token with the `admin:org` scope to use this endpoint. + */ + put: operations["actions/set-custom-labels-for-self-hosted-runner-for-org"]; + /** + * Add custom labels to a self-hosted runner configured in an organization. + * + * You must authenticate using an access token with the `admin:org` scope to use this endpoint. + */ + post: operations["actions/add-custom-labels-to-self-hosted-runner-for-org"]; + /** + * Remove all custom labels from a self-hosted runner configured in an + * organization. Returns the remaining read-only labels from the runner. + * + * You must authenticate using an access token with the `admin:org` scope to use this endpoint. + */ + delete: operations["actions/remove-all-custom-labels-from-self-hosted-runner-for-org"]; + }; + "/orgs/{org}/actions/runners/{runner_id}/labels/{name}": { + /** + * Remove a custom label from a self-hosted runner configured + * in an organization. Returns the remaining labels from the runner. + * + * This endpoint returns a `404 Not Found` status if the custom label is not + * present on the runner. + * + * You must authenticate using an access token with the `admin:org` scope to use this endpoint. + */ + delete: operations["actions/remove-custom-label-from-self-hosted-runner-for-org"]; + }; + "/orgs/{org}/actions/secrets": { + /** Lists all secrets available in an organization without revealing their encrypted values. You must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `secrets` organization permission to use this endpoint. */ + get: operations["actions/list-org-secrets"]; + }; + "/orgs/{org}/actions/secrets/public-key": { + /** Gets your public key, which you need to encrypt secrets. You need to encrypt a secret before you can create or update secrets. You must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `secrets` organization permission to use this endpoint. */ + get: operations["actions/get-org-public-key"]; + }; + "/orgs/{org}/actions/secrets/{secret_name}": { + /** Gets a single organization secret without revealing its encrypted value. You must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `secrets` organization permission to use this endpoint. */ + get: operations["actions/get-org-secret"]; + /** + * Creates or updates an organization secret with an encrypted value. Encrypt your secret using + * [LibSodium](https://libsodium.gitbook.io/doc/bindings_for_other_languages). You must authenticate using an access + * token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `secrets` organization permission to + * use this endpoint. + * + * #### Example encrypting a secret using Node.js + * + * Encrypt your secret using the [tweetsodium](https://github.com/github/tweetsodium) library. + * + * ``` + * const sodium = require('tweetsodium'); + * + * const key = "base64-encoded-public-key"; + * const value = "plain-text-secret"; + * + * // Convert the message and key to Uint8Array's (Buffer implements that interface) + * const messageBytes = Buffer.from(value); + * const keyBytes = Buffer.from(key, 'base64'); + * + * // Encrypt using LibSodium. + * const encryptedBytes = sodium.seal(messageBytes, keyBytes); + * + * // Base64 the encrypted secret + * const encrypted = Buffer.from(encryptedBytes).toString('base64'); + * + * console.log(encrypted); + * ``` + * + * + * #### Example encrypting a secret using Python + * + * Encrypt your secret using [pynacl](https://pynacl.readthedocs.io/en/latest/public/#nacl-public-sealedbox) with Python 3. + * + * ``` + * from base64 import b64encode + * from nacl import encoding, public + * + * def encrypt(public_key: str, secret_value: str) -> str: + * """Encrypt a Unicode string using the public key.""" + * public_key = public.PublicKey(public_key.encode("utf-8"), encoding.Base64Encoder()) + * sealed_box = public.SealedBox(public_key) + * encrypted = sealed_box.encrypt(secret_value.encode("utf-8")) + * return b64encode(encrypted).decode("utf-8") + * ``` + * + * #### Example encrypting a secret using C# + * + * Encrypt your secret using the [Sodium.Core](https://www.nuget.org/packages/Sodium.Core/) package. + * + * ``` + * var secretValue = System.Text.Encoding.UTF8.GetBytes("mySecret"); + * var publicKey = Convert.FromBase64String("2Sg8iYjAxxmI2LvUXpJjkYrMxURPc8r+dB7TJyvvcCU="); + * + * var sealedPublicKeyBox = Sodium.SealedPublicKeyBox.Create(secretValue, publicKey); + * + * Console.WriteLine(Convert.ToBase64String(sealedPublicKeyBox)); + * ``` + * + * #### Example encrypting a secret using Ruby + * + * Encrypt your secret using the [rbnacl](https://github.com/RubyCrypto/rbnacl) gem. + * + * ```ruby + * require "rbnacl" + * require "base64" + * + * key = Base64.decode64("+ZYvJDZMHUfBkJdyq5Zm9SKqeuBQ4sj+6sfjlH4CgG0=") + * public_key = RbNaCl::PublicKey.new(key) + * + * box = RbNaCl::Boxes::Sealed.from_public_key(public_key) + * encrypted_secret = box.encrypt("my_secret") + * + * # Print the base64 encoded secret + * puts Base64.strict_encode64(encrypted_secret) + * ``` + */ + put: operations["actions/create-or-update-org-secret"]; + /** Deletes a secret in an organization using the secret name. You must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `secrets` organization permission to use this endpoint. */ + delete: operations["actions/delete-org-secret"]; + }; + "/orgs/{org}/actions/secrets/{secret_name}/repositories": { + /** Lists all repositories that have been selected when the `visibility` for repository access to a secret is set to `selected`. You must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `secrets` organization permission to use this endpoint. */ + get: operations["actions/list-selected-repos-for-org-secret"]; + /** Replaces all repositories for an organization secret when the `visibility` for repository access is set to `selected`. The visibility is set when you [Create or update an organization secret](https://docs.github.com/rest/reference/actions#create-or-update-an-organization-secret). You must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `secrets` organization permission to use this endpoint. */ + put: operations["actions/set-selected-repos-for-org-secret"]; + }; + "/orgs/{org}/actions/secrets/{secret_name}/repositories/{repository_id}": { + /** Adds a repository to an organization secret when the `visibility` for repository access is set to `selected`. The visibility is set when you [Create or update an organization secret](https://docs.github.com/rest/reference/actions#create-or-update-an-organization-secret). You must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `secrets` organization permission to use this endpoint. */ + put: operations["actions/add-selected-repo-to-org-secret"]; + /** Removes a repository from an organization secret when the `visibility` for repository access is set to `selected`. The visibility is set when you [Create or update an organization secret](https://docs.github.com/rest/reference/actions#create-or-update-an-organization-secret). You must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `secrets` organization permission to use this endpoint. */ + delete: operations["actions/remove-selected-repo-from-org-secret"]; + }; + "/orgs/{org}/audit-log": { + /** + * Gets the audit log for an organization. For more information, see "[Reviewing the audit log for your organization](https://docs.github.com/github/setting-up-and-managing-organizations-and-teams/reviewing-the-audit-log-for-your-organization)." + * + * This endpoint is available for organizations on GitHub Enterprise Cloud. To use this endpoint, you must be an organization owner, and you must use an access token with the `admin:org` scope. GitHub Apps must have the `organization_administration` read permission to use this endpoint. + * + * By default, the response includes up to 30 events from the past three months. Use the `phrase` parameter to filter results and retrieve older events. For example, use the `phrase` parameter with the `created` qualifier to filter events based on when the events occurred. For more information, see "[Reviewing the audit log for your organization](https://docs.github.com/organizations/keeping-your-organization-secure/managing-security-settings-for-your-organization/reviewing-the-audit-log-for-your-organization#searching-the-audit-log)." + * + * Use pagination to retrieve fewer or more than 30 events. For more information, see "[Resources in the REST API](https://docs.github.com/rest/overview/resources-in-the-rest-api#pagination)." + */ + get: operations["orgs/get-audit-log"]; + }; + "/orgs/{org}/blocks": { + /** List the users blocked by an organization. */ + get: operations["orgs/list-blocked-users"]; + }; + "/orgs/{org}/blocks/{username}": { + get: operations["orgs/check-blocked-user"]; + put: operations["orgs/block-user"]; + delete: operations["orgs/unblock-user"]; + }; + "/orgs/{org}/code-scanning/alerts": { + /** + * Lists code scanning alerts for the default branch for all eligible repositories in an organization. Eligible repositories are repositories that are owned by organizations that you own or for which you are a security manager. For more information, see "[Managing security managers in your organization](https://docs.github.com/organizations/managing-peoples-access-to-your-organization-with-roles/managing-security-managers-in-your-organization)." + * + * To use this endpoint, you must be an owner or security manager for the organization, and you must use an access token with the `repo` scope or `security_events` scope. + * + * GitHub Apps must have the `security_events` read permission to use this endpoint. + */ + get: operations["code-scanning/list-alerts-for-org"]; + }; + "/orgs/{org}/codespaces": { + /** + * Lists the codespaces associated to a specified organization. + * + * You must authenticate using an access token with the `admin:org` scope to use this endpoint. + */ + get: operations["codespaces/list-in-organization"]; + }; + "/orgs/{org}/credential-authorizations": { + /** + * Listing and deleting credential authorizations is available to organizations with GitHub Enterprise Cloud. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products). + * + * An authenticated organization owner with the `read:org` scope can list all credential authorizations for an organization that uses SAML single sign-on (SSO). The credentials are either personal access tokens or SSH keys that organization members have authorized for the organization. For more information, see [About authentication with SAML single sign-on](https://docs.github.com/en/articles/about-authentication-with-saml-single-sign-on). + */ + get: operations["orgs/list-saml-sso-authorizations"]; + }; + "/orgs/{org}/credential-authorizations/{credential_id}": { + /** + * Listing and deleting credential authorizations is available to organizations with GitHub Enterprise Cloud. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products). + * + * An authenticated organization owner with the `admin:org` scope can remove a credential authorization for an organization that uses SAML SSO. Once you remove someone's credential authorization, they will need to create a new personal access token or SSH key and authorize it for the organization they want to access. + */ + delete: operations["orgs/remove-saml-sso-authorization"]; + }; + "/orgs/{org}/dependabot/secrets": { + /** Lists all secrets available in an organization without revealing their encrypted values. You must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `dependabot_secrets` organization permission to use this endpoint. */ + get: operations["dependabot/list-org-secrets"]; + }; + "/orgs/{org}/dependabot/secrets/public-key": { + /** Gets your public key, which you need to encrypt secrets. You need to encrypt a secret before you can create or update secrets. You must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `dependabot_secrets` organization permission to use this endpoint. */ + get: operations["dependabot/get-org-public-key"]; + }; + "/orgs/{org}/dependabot/secrets/{secret_name}": { + /** Gets a single organization secret without revealing its encrypted value. You must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `dependabot_secrets` organization permission to use this endpoint. */ + get: operations["dependabot/get-org-secret"]; + /** + * Creates or updates an organization secret with an encrypted value. Encrypt your secret using + * [LibSodium](https://libsodium.gitbook.io/doc/bindings_for_other_languages). You must authenticate using an access + * token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `dependabot_secrets` organization + * permission to use this endpoint. + * + * #### Example encrypting a secret using Node.js + * + * Encrypt your secret using the [tweetsodium](https://github.com/github/tweetsodium) library. + * + * ``` + * const sodium = require('tweetsodium'); + * + * const key = "base64-encoded-public-key"; + * const value = "plain-text-secret"; + * + * // Convert the message and key to Uint8Array's (Buffer implements that interface) + * const messageBytes = Buffer.from(value); + * const keyBytes = Buffer.from(key, 'base64'); + * + * // Encrypt using LibSodium. + * const encryptedBytes = sodium.seal(messageBytes, keyBytes); + * + * // Base64 the encrypted secret + * const encrypted = Buffer.from(encryptedBytes).toString('base64'); + * + * console.log(encrypted); + * ``` + * + * + * #### Example encrypting a secret using Python + * + * Encrypt your secret using [pynacl](https://pynacl.readthedocs.io/en/latest/public/#nacl-public-sealedbox) with Python 3. + * + * ``` + * from base64 import b64encode + * from nacl import encoding, public + * + * def encrypt(public_key: str, secret_value: str) -> str: + * """Encrypt a Unicode string using the public key.""" + * public_key = public.PublicKey(public_key.encode("utf-8"), encoding.Base64Encoder()) + * sealed_box = public.SealedBox(public_key) + * encrypted = sealed_box.encrypt(secret_value.encode("utf-8")) + * return b64encode(encrypted).decode("utf-8") + * ``` + * + * #### Example encrypting a secret using C# + * + * Encrypt your secret using the [Sodium.Core](https://www.nuget.org/packages/Sodium.Core/) package. + * + * ``` + * var secretValue = System.Text.Encoding.UTF8.GetBytes("mySecret"); + * var publicKey = Convert.FromBase64String("2Sg8iYjAxxmI2LvUXpJjkYrMxURPc8r+dB7TJyvvcCU="); + * + * var sealedPublicKeyBox = Sodium.SealedPublicKeyBox.Create(secretValue, publicKey); + * + * Console.WriteLine(Convert.ToBase64String(sealedPublicKeyBox)); + * ``` + * + * #### Example encrypting a secret using Ruby + * + * Encrypt your secret using the [rbnacl](https://github.com/RubyCrypto/rbnacl) gem. + * + * ```ruby + * require "rbnacl" + * require "base64" + * + * key = Base64.decode64("+ZYvJDZMHUfBkJdyq5Zm9SKqeuBQ4sj+6sfjlH4CgG0=") + * public_key = RbNaCl::PublicKey.new(key) + * + * box = RbNaCl::Boxes::Sealed.from_public_key(public_key) + * encrypted_secret = box.encrypt("my_secret") + * + * # Print the base64 encoded secret + * puts Base64.strict_encode64(encrypted_secret) + * ``` + */ + put: operations["dependabot/create-or-update-org-secret"]; + /** Deletes a secret in an organization using the secret name. You must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `dependabot_secrets` organization permission to use this endpoint. */ + delete: operations["dependabot/delete-org-secret"]; + }; + "/orgs/{org}/dependabot/secrets/{secret_name}/repositories": { + /** Lists all repositories that have been selected when the `visibility` for repository access to a secret is set to `selected`. You must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `dependabot_secrets` organization permission to use this endpoint. */ + get: operations["dependabot/list-selected-repos-for-org-secret"]; + /** Replaces all repositories for an organization secret when the `visibility` for repository access is set to `selected`. The visibility is set when you [Create or update an organization secret](https://docs.github.com/rest/reference/dependabot#create-or-update-an-organization-secret). You must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `dependabot_secrets` organization permission to use this endpoint. */ + put: operations["dependabot/set-selected-repos-for-org-secret"]; + }; + "/orgs/{org}/dependabot/secrets/{secret_name}/repositories/{repository_id}": { + /** Adds a repository to an organization secret when the `visibility` for repository access is set to `selected`. The visibility is set when you [Create or update an organization secret](https://docs.github.com/rest/reference/dependabot#create-or-update-an-organization-secret). You must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `dependabot_secrets` organization permission to use this endpoint. */ + put: operations["dependabot/add-selected-repo-to-org-secret"]; + /** Removes a repository from an organization secret when the `visibility` for repository access is set to `selected`. The visibility is set when you [Create or update an organization secret](https://docs.github.com/rest/reference/dependabot#create-or-update-an-organization-secret). You must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `dependabot_secrets` organization permission to use this endpoint. */ + delete: operations["dependabot/remove-selected-repo-from-org-secret"]; + }; + "/orgs/{org}/events": { + get: operations["activity/list-public-org-events"]; + }; + "/orgs/{org}/external-group/{group_id}": { + /** + * Displays information about the specific group's usage. Provides a list of the group's external members as well as a list of teams that this group is connected to. + * + * You can manage team membership with your identity provider using Enterprise Managed Users for GitHub Enterprise Cloud. For more information, see "[GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products)" in the GitHub Help documentation. + */ + get: operations["teams/external-idp-group-info-for-org"]; + }; + "/orgs/{org}/external-groups": { + /** + * Lists external groups available in an organization. You can query the groups using the `display_name` parameter, only groups with a `group_name` containing the text provided in the `display_name` parameter will be returned. You can also limit your page results using the `per_page` parameter. GitHub generates a url-encoded `page` token using a cursor value for where the next page begins. For more information on cursor pagination, see "[Offset and Cursor Pagination explained](https://dev.to/jackmarchant/offset-and-cursor-pagination-explained-b89)." + * + * You can manage team membership with your identity provider using Enterprise Managed Users for GitHub Enterprise Cloud. For more information, see "[GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products)" in the GitHub Help documentation. + */ + get: operations["teams/list-external-idp-groups-for-org"]; + }; + "/orgs/{org}/failed_invitations": { + /** The return hash contains `failed_at` and `failed_reason` fields which represent the time at which the invitation failed and the reason for the failure. */ + get: operations["orgs/list-failed-invitations"]; + }; + "/orgs/{org}/hooks": { + get: operations["orgs/list-webhooks"]; + /** Here's how you can create a hook that posts payloads in JSON format: */ + post: operations["orgs/create-webhook"]; + }; + "/orgs/{org}/hooks/{hook_id}": { + /** Returns a webhook configured in an organization. To get only the webhook `config` properties, see "[Get a webhook configuration for an organization](/rest/reference/orgs#get-a-webhook-configuration-for-an-organization)." */ + get: operations["orgs/get-webhook"]; + delete: operations["orgs/delete-webhook"]; + /** Updates a webhook configured in an organization. When you update a webhook, the `secret` will be overwritten. If you previously had a `secret` set, you must provide the same `secret` or set a new `secret` or the secret will be removed. If you are only updating individual webhook `config` properties, use "[Update a webhook configuration for an organization](/rest/reference/orgs#update-a-webhook-configuration-for-an-organization)." */ + patch: operations["orgs/update-webhook"]; + }; + "/orgs/{org}/hooks/{hook_id}/config": { + /** + * Returns the webhook configuration for an organization. To get more information about the webhook, including the `active` state and `events`, use "[Get an organization webhook ](/rest/reference/orgs#get-an-organization-webhook)." + * + * Access tokens must have the `admin:org_hook` scope, and GitHub Apps must have the `organization_hooks:read` permission. + */ + get: operations["orgs/get-webhook-config-for-org"]; + /** + * Updates the webhook configuration for an organization. To update more information about the webhook, including the `active` state and `events`, use "[Update an organization webhook ](/rest/reference/orgs#update-an-organization-webhook)." + * + * Access tokens must have the `admin:org_hook` scope, and GitHub Apps must have the `organization_hooks:write` permission. + */ + patch: operations["orgs/update-webhook-config-for-org"]; + }; + "/orgs/{org}/hooks/{hook_id}/deliveries": { + /** Returns a list of webhook deliveries for a webhook configured in an organization. */ + get: operations["orgs/list-webhook-deliveries"]; + }; + "/orgs/{org}/hooks/{hook_id}/deliveries/{delivery_id}": { + /** Returns a delivery for a webhook configured in an organization. */ + get: operations["orgs/get-webhook-delivery"]; + }; + "/orgs/{org}/hooks/{hook_id}/deliveries/{delivery_id}/attempts": { + /** Redeliver a delivery for a webhook configured in an organization. */ + post: operations["orgs/redeliver-webhook-delivery"]; + }; + "/orgs/{org}/hooks/{hook_id}/pings": { + /** This will trigger a [ping event](https://docs.github.com/webhooks/#ping-event) to be sent to the hook. */ + post: operations["orgs/ping-webhook"]; + }; + "/orgs/{org}/installation": { + /** + * Enables an authenticated GitHub App to find the organization's installation information. + * + * You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. + */ + get: operations["apps/get-org-installation"]; + }; + "/orgs/{org}/installations": { + /** Lists all GitHub Apps in an organization. The installation count includes all GitHub Apps installed on repositories in the organization. You must be an organization owner with `admin:read` scope to use this endpoint. */ + get: operations["orgs/list-app-installations"]; + }; + "/orgs/{org}/interaction-limits": { + /** Shows which type of GitHub user can interact with this organization and when the restriction expires. If there is no restrictions, you will see an empty response. */ + get: operations["interactions/get-restrictions-for-org"]; + /** Temporarily restricts interactions to a certain type of GitHub user in any public repository in the given organization. You must be an organization owner to set these restrictions. Setting the interaction limit at the organization level will overwrite any interaction limits that are set for individual repositories owned by the organization. */ + put: operations["interactions/set-restrictions-for-org"]; + /** Removes all interaction restrictions from public repositories in the given organization. You must be an organization owner to remove restrictions. */ + delete: operations["interactions/remove-restrictions-for-org"]; + }; + "/orgs/{org}/invitations": { + /** The return hash contains a `role` field which refers to the Organization Invitation role and will be one of the following values: `direct_member`, `admin`, `billing_manager`, `hiring_manager`, or `reinstate`. If the invitee is not a GitHub member, the `login` field in the return hash will be `null`. */ + get: operations["orgs/list-pending-invitations"]; + /** + * Invite people to an organization by using their GitHub user ID or their email address. In order to create invitations in an organization, the authenticated user must be an organization owner. + * + * This endpoint triggers [notifications](https://docs.github.com/en/github/managing-subscriptions-and-notifications-on-github/about-notifications). Creating content too quickly using this endpoint may result in secondary rate limiting. See "[Secondary rate limits](https://docs.github.com/rest/overview/resources-in-the-rest-api#secondary-rate-limits)" and "[Dealing with secondary rate limits](https://docs.github.com/rest/guides/best-practices-for-integrators#dealing-with-secondary-rate-limits)" for details. + */ + post: operations["orgs/create-invitation"]; + }; + "/orgs/{org}/invitations/{invitation_id}": { + /** + * Cancel an organization invitation. In order to cancel an organization invitation, the authenticated user must be an organization owner. + * + * This endpoint triggers [notifications](https://docs.github.com/en/github/managing-subscriptions-and-notifications-on-github/about-notifications). + */ + delete: operations["orgs/cancel-invitation"]; + }; + "/orgs/{org}/invitations/{invitation_id}/teams": { + /** List all teams associated with an invitation. In order to see invitations in an organization, the authenticated user must be an organization owner. */ + get: operations["orgs/list-invitation-teams"]; + }; + "/orgs/{org}/issues": { + /** + * List issues in an organization assigned to the authenticated user. + * + * **Note**: GitHub's REST API v3 considers every pull request an issue, but not every issue is a pull request. For this + * reason, "Issues" endpoints may return both issues and pull requests in the response. You can identify pull requests by + * the `pull_request` key. Be aware that the `id` of a pull request returned from "Issues" endpoints will be an _issue id_. To find out the pull + * request id, use the "[List pull requests](https://docs.github.com/rest/reference/pulls#list-pull-requests)" endpoint. + */ + get: operations["issues/list-for-org"]; + }; + "/orgs/{org}/members": { + /** List all users who are members of an organization. If the authenticated user is also a member of this organization then both concealed and public members will be returned. */ + get: operations["orgs/list-members"]; + }; + "/orgs/{org}/members/{username}": { + /** Check if a user is, publicly or privately, a member of the organization. */ + get: operations["orgs/check-membership-for-user"]; + /** Removing a user from this list will remove them from all teams and they will no longer have any access to the organization's repositories. */ + delete: operations["orgs/remove-member"]; + }; + "/orgs/{org}/members/{username}/codespaces/{codespace_name}": { + /** + * Deletes a user's codespace. + * + * You must authenticate using an access token with the `admin:org` scope to use this endpoint. + */ + delete: operations["codespaces/delete-from-organization"]; + }; + "/orgs/{org}/members/{username}/codespaces/{codespace_name}/stop": { + /** + * Stops a user's codespace. + * + * You must authenticate using an access token with the `admin:org` scope to use this endpoint. + */ + post: operations["codespaces/stop-in-organization"]; + }; + "/orgs/{org}/memberships/{username}": { + /** In order to get a user's membership with an organization, the authenticated user must be an organization member. The `state` parameter in the response can be used to identify the user's membership status. */ + get: operations["orgs/get-membership-for-user"]; + /** + * Only authenticated organization owners can add a member to the organization or update the member's role. + * + * * If the authenticated user is _adding_ a member to the organization, the invited user will receive an email inviting them to the organization. The user's [membership status](https://docs.github.com/rest/reference/orgs#get-organization-membership-for-a-user) will be `pending` until they accept the invitation. + * + * * Authenticated users can _update_ a user's membership by passing the `role` parameter. If the authenticated user changes a member's role to `admin`, the affected user will receive an email notifying them that they've been made an organization owner. If the authenticated user changes an owner's role to `member`, no email will be sent. + * + * **Rate limits** + * + * To prevent abuse, the authenticated user is limited to 50 organization invitations per 24 hour period. If the organization is more than one month old or on a paid plan, the limit is 500 invitations per 24 hour period. + */ + put: operations["orgs/set-membership-for-user"]; + /** + * In order to remove a user's membership with an organization, the authenticated user must be an organization owner. + * + * If the specified user is an active member of the organization, this will remove them from the organization. If the specified user has been invited to the organization, this will cancel their invitation. The specified user will receive an email notification in both cases. + */ + delete: operations["orgs/remove-membership-for-user"]; + }; + "/orgs/{org}/migrations": { + /** Lists the most recent migrations. */ + get: operations["migrations/list-for-org"]; + /** Initiates the generation of a migration archive. */ + post: operations["migrations/start-for-org"]; + }; + "/orgs/{org}/migrations/{migration_id}": { + /** + * Fetches the status of a migration. + * + * The `state` of a migration can be one of the following values: + * + * * `pending`, which means the migration hasn't started yet. + * * `exporting`, which means the migration is in progress. + * * `exported`, which means the migration finished successfully. + * * `failed`, which means the migration failed. + */ + get: operations["migrations/get-status-for-org"]; + }; + "/orgs/{org}/migrations/{migration_id}/archive": { + /** Fetches the URL to a migration archive. */ + get: operations["migrations/download-archive-for-org"]; + /** Deletes a previous migration archive. Migration archives are automatically deleted after seven days. */ + delete: operations["migrations/delete-archive-for-org"]; + }; + "/orgs/{org}/migrations/{migration_id}/repos/{repo_name}/lock": { + /** Unlocks a repository that was locked for migration. You should unlock each migrated repository and [delete them](https://docs.github.com/rest/reference/repos#delete-a-repository) when the migration is complete and you no longer need the source data. */ + delete: operations["migrations/unlock-repo-for-org"]; + }; + "/orgs/{org}/migrations/{migration_id}/repositories": { + /** List all the repositories for this organization migration. */ + get: operations["migrations/list-repos-for-org"]; + }; + "/orgs/{org}/outside_collaborators": { + /** List all users who are outside collaborators of an organization. */ + get: operations["orgs/list-outside-collaborators"]; + }; + "/orgs/{org}/outside_collaborators/{username}": { + /** When an organization member is converted to an outside collaborator, they'll only have access to the repositories that their current team membership allows. The user will no longer be a member of the organization. For more information, see "[Converting an organization member to an outside collaborator](https://docs.github.com/articles/converting-an-organization-member-to-an-outside-collaborator/)". Converting an organization member to an outside collaborator may be restricted by enterprise administrators. For more information, see "[Enforcing repository management policies in your enterprise](https://docs.github.com/enterprise-cloud@latest/admin/policies/enforcing-policies-for-your-enterprise/enforcing-repository-management-policies-in-your-enterprise#enforcing-a-policy-for-inviting-outside-collaborators-to-repositories)." */ + put: operations["orgs/convert-member-to-outside-collaborator"]; + /** Removing a user from this list will remove them from all the organization's repositories. */ + delete: operations["orgs/remove-outside-collaborator"]; + }; + "/orgs/{org}/packages": { + /** + * Lists all packages in an organization readable by the user. + * + * To use this endpoint, you must authenticate using an access token with the `packages:read` scope. + * If `package_type` is not `container`, your token must also include the `repo` scope. + */ + get: operations["packages/list-packages-for-organization"]; + }; + "/orgs/{org}/packages/{package_type}/{package_name}": { + /** + * Gets a specific package in an organization. + * + * To use this endpoint, you must authenticate using an access token with the `packages:read` scope. + * If `package_type` is not `container`, your token must also include the `repo` scope. + */ + get: operations["packages/get-package-for-organization"]; + /** + * Deletes an entire package in an organization. You cannot delete a public package if any version of the package has more than 5,000 downloads. In this scenario, contact GitHub support for further assistance. + * + * To use this endpoint, you must have admin permissions in the organization and authenticate using an access token with the `packages:read` and `packages:delete` scopes. In addition: + * - If `package_type` is not `container`, your token must also include the `repo` scope. + * - If `package_type` is `container`, you must also have admin permissions to the container you want to delete. + */ + delete: operations["packages/delete-package-for-org"]; + }; + "/orgs/{org}/packages/{package_type}/{package_name}/restore": { + /** + * Restores an entire package in an organization. + * + * You can restore a deleted package under the following conditions: + * - The package was deleted within the last 30 days. + * - The same package namespace and version is still available and not reused for a new package. If the same package namespace is not available, you will not be able to restore your package. In this scenario, to restore the deleted package, you must delete the new package that uses the deleted package's namespace first. + * + * To use this endpoint, you must have admin permissions in the organization and authenticate using an access token with the `packages:read` and `packages:write` scopes. In addition: + * - If `package_type` is not `container`, your token must also include the `repo` scope. + * - If `package_type` is `container`, you must also have admin permissions to the container that you want to restore. + */ + post: operations["packages/restore-package-for-org"]; + }; + "/orgs/{org}/packages/{package_type}/{package_name}/versions": { + /** + * Returns all package versions for a package owned by an organization. + * + * To use this endpoint, you must authenticate using an access token with the `packages:read` scope. + * If `package_type` is not `container`, your token must also include the `repo` scope. + */ + get: operations["packages/get-all-package-versions-for-package-owned-by-org"]; + }; + "/orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}": { + /** + * Gets a specific package version in an organization. + * + * You must authenticate using an access token with the `packages:read` scope. + * If `package_type` is not `container`, your token must also include the `repo` scope. + */ + get: operations["packages/get-package-version-for-organization"]; + /** + * Deletes a specific package version in an organization. If the package is public and the package version has more than 5,000 downloads, you cannot delete the package version. In this scenario, contact GitHub support for further assistance. + * + * To use this endpoint, you must have admin permissions in the organization and authenticate using an access token with the `packages:read` and `packages:delete` scopes. In addition: + * - If `package_type` is not `container`, your token must also include the `repo` scope. + * - If `package_type` is `container`, you must also have admin permissions to the container you want to delete. + */ + delete: operations["packages/delete-package-version-for-org"]; + }; + "/orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}/restore": { + /** + * Restores a specific package version in an organization. + * + * You can restore a deleted package under the following conditions: + * - The package was deleted within the last 30 days. + * - The same package namespace and version is still available and not reused for a new package. If the same package namespace is not available, you will not be able to restore your package. In this scenario, to restore the deleted package, you must delete the new package that uses the deleted package's namespace first. + * + * To use this endpoint, you must have admin permissions in the organization and authenticate using an access token with the `packages:read` and `packages:write` scopes. In addition: + * - If `package_type` is not `container`, your token must also include the `repo` scope. + * - If `package_type` is `container`, you must also have admin permissions to the container that you want to restore. + */ + post: operations["packages/restore-package-version-for-org"]; + }; + "/orgs/{org}/projects": { + /** Lists the projects in an organization. Returns a `404 Not Found` status if projects are disabled in the organization. If you do not have sufficient privileges to perform this action, a `401 Unauthorized` or `410 Gone` status is returned. */ + get: operations["projects/list-for-org"]; + /** Creates an organization project board. Returns a `410 Gone` status if projects are disabled in the organization or if the organization does not have existing classic projects. If you do not have sufficient privileges to perform this action, a `401 Unauthorized` or `410 Gone` status is returned. */ + post: operations["projects/create-for-org"]; + }; + "/orgs/{org}/public_members": { + /** Members of an organization can choose to have their membership publicized or not. */ + get: operations["orgs/list-public-members"]; + }; + "/orgs/{org}/public_members/{username}": { + get: operations["orgs/check-public-membership-for-user"]; + /** + * The user can publicize their own membership. (A user cannot publicize the membership for another user.) + * + * Note that you'll need to set `Content-Length` to zero when calling out to this endpoint. For more information, see "[HTTP verbs](https://docs.github.com/rest/overview/resources-in-the-rest-api#http-verbs)." + */ + put: operations["orgs/set-public-membership-for-authenticated-user"]; + delete: operations["orgs/remove-public-membership-for-authenticated-user"]; + }; + "/orgs/{org}/repos": { + /** Lists repositories for the specified organization. */ + get: operations["repos/list-for-org"]; + /** + * Creates a new repository in the specified organization. The authenticated user must be a member of the organization. + * + * **OAuth scope requirements** + * + * When using [OAuth](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/), authorizations must include: + * + * * `public_repo` scope or `repo` scope to create a public repository. Note: For GitHub AE, use `repo` scope to create an internal repository. + * * `repo` scope to create a private repository + */ + post: operations["repos/create-in-org"]; + }; + "/orgs/{org}/secret-scanning/alerts": { + /** + * Lists secret scanning alerts for eligible repositories in an organization, from newest to oldest. + * To use this endpoint, you must be an administrator or security manager for the organization, and you must use an access token with the `repo` scope or `security_events` scope. + * For public repositories, you may instead use the `public_repo` scope. + * + * GitHub Apps must have the `secret_scanning_alerts` read permission to use this endpoint. + */ + get: operations["secret-scanning/list-alerts-for-org"]; + }; + "/orgs/{org}/settings/billing/actions": { + /** + * Gets the summary of the free and paid GitHub Actions minutes used. + * + * Paid minutes only apply to workflows in private repositories that use GitHub-hosted runners. Minutes used is listed for each GitHub-hosted runner operating system. Any job re-runs are also included in the usage. The usage returned includes any minute multipliers for macOS and Windows runners, and is rounded up to the nearest whole minute. For more information, see "[Managing billing for GitHub Actions](https://docs.github.com/github/setting-up-and-managing-billing-and-payments-on-github/managing-billing-for-github-actions)". + * + * Access tokens must have the `repo` or `admin:org` scope. + */ + get: operations["billing/get-github-actions-billing-org"]; + }; + "/orgs/{org}/settings/billing/advanced-security": { + /** + * Gets the GitHub Advanced Security active committers for an organization per repository. + * + * Each distinct user login across all repositories is counted as a single Advanced Security seat, so the `total_advanced_security_committers` is not the sum of advanced_security_committers for each repository. + * + * If this organization defers to an enterprise for billing, the `total_advanced_security_committers` returned from the organization API may include some users that are in more than one organization, so they will only consume a single Advanced Security seat at the enterprise level. + * + * The total number of repositories with committer information is tracked by the `total_count` field. + */ + get: operations["billing/get-github-advanced-security-billing-org"]; + }; + "/orgs/{org}/settings/billing/packages": { + /** + * Gets the free and paid storage used for GitHub Packages in gigabytes. + * + * Paid minutes only apply to packages stored for private repositories. For more information, see "[Managing billing for GitHub Packages](https://docs.github.com/github/setting-up-and-managing-billing-and-payments-on-github/managing-billing-for-github-packages)." + * + * Access tokens must have the `repo` or `admin:org` scope. + */ + get: operations["billing/get-github-packages-billing-org"]; + }; + "/orgs/{org}/settings/billing/shared-storage": { + /** + * Gets the estimated paid and estimated total storage used for GitHub Actions and GitHub Packages. + * + * Paid minutes only apply to packages stored for private repositories. For more information, see "[Managing billing for GitHub Packages](https://docs.github.com/github/setting-up-and-managing-billing-and-payments-on-github/managing-billing-for-github-packages)." + * + * Access tokens must have the `repo` or `admin:org` scope. + */ + get: operations["billing/get-shared-storage-billing-org"]; + }; + "/orgs/{org}/team-sync/groups": { + /** + * Team synchronization is available for organizations using GitHub Enterprise Cloud. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. + * + * List IdP groups available in an organization. You can limit your page results using the `per_page` parameter. GitHub generates a url-encoded `page` token using a cursor value for where the next page begins. For more information on cursor pagination, see "[Offset and Cursor Pagination explained](https://dev.to/jackmarchant/offset-and-cursor-pagination-explained-b89)." + */ + get: operations["teams/list-idp-groups-for-org"]; + }; + "/orgs/{org}/teams": { + /** Lists all teams in an organization that are visible to the authenticated user. */ + get: operations["teams/list"]; + /** + * To create a team, the authenticated user must be a member or owner of `{org}`. By default, organization members can create teams. Organization owners can limit team creation to organization owners. For more information, see "[Setting team creation permissions](https://docs.github.com/en/articles/setting-team-creation-permissions-in-your-organization)." + * + * When you create a new team, you automatically become a team maintainer without explicitly adding yourself to the optional array of `maintainers`. For more information, see "[About teams](https://docs.github.com/en/github/setting-up-and-managing-organizations-and-teams/about-teams)". + */ + post: operations["teams/create"]; + }; + "/orgs/{org}/teams/{team_slug}": { + /** + * Gets a team using the team's `slug`. GitHub generates the `slug` from the team `name`. + * + * **Note:** You can also specify a team by `org_id` and `team_id` using the route `GET /organizations/{org_id}/team/{team_id}`. + */ + get: operations["teams/get-by-name"]; + /** + * To delete a team, the authenticated user must be an organization owner or team maintainer. + * + * If you are an organization owner, deleting a parent team will delete all of its child teams as well. + * + * **Note:** You can also specify a team by `org_id` and `team_id` using the route `DELETE /organizations/{org_id}/team/{team_id}`. + */ + delete: operations["teams/delete-in-org"]; + /** + * To edit a team, the authenticated user must either be an organization owner or a team maintainer. + * + * **Note:** You can also specify a team by `org_id` and `team_id` using the route `PATCH /organizations/{org_id}/team/{team_id}`. + */ + patch: operations["teams/update-in-org"]; + }; + "/orgs/{org}/teams/{team_slug}/discussions": { + /** + * List all discussions on a team's page. OAuth access tokens require the `read:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). + * + * **Note:** You can also specify a team by `org_id` and `team_id` using the route `GET /organizations/{org_id}/team/{team_id}/discussions`. + */ + get: operations["teams/list-discussions-in-org"]; + /** + * Creates a new discussion post on a team's page. OAuth access tokens require the `write:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). + * + * This endpoint triggers [notifications](https://docs.github.com/en/github/managing-subscriptions-and-notifications-on-github/about-notifications). Creating content too quickly using this endpoint may result in secondary rate limiting. See "[Secondary rate limits](https://docs.github.com/rest/overview/resources-in-the-rest-api#secondary-rate-limits)" and "[Dealing with secondary rate limits](https://docs.github.com/rest/guides/best-practices-for-integrators#dealing-with-secondary-rate-limits)" for details. + * + * **Note:** You can also specify a team by `org_id` and `team_id` using the route `POST /organizations/{org_id}/team/{team_id}/discussions`. + */ + post: operations["teams/create-discussion-in-org"]; + }; + "/orgs/{org}/teams/{team_slug}/discussions/{discussion_number}": { + /** + * Get a specific discussion on a team's page. OAuth access tokens require the `read:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). + * + * **Note:** You can also specify a team by `org_id` and `team_id` using the route `GET /organizations/{org_id}/team/{team_id}/discussions/{discussion_number}`. + */ + get: operations["teams/get-discussion-in-org"]; + /** + * Delete a discussion from a team's page. OAuth access tokens require the `write:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). + * + * **Note:** You can also specify a team by `org_id` and `team_id` using the route `DELETE /organizations/{org_id}/team/{team_id}/discussions/{discussion_number}`. + */ + delete: operations["teams/delete-discussion-in-org"]; + /** + * Edits the title and body text of a discussion post. Only the parameters you provide are updated. OAuth access tokens require the `write:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). + * + * **Note:** You can also specify a team by `org_id` and `team_id` using the route `PATCH /organizations/{org_id}/team/{team_id}/discussions/{discussion_number}`. + */ + patch: operations["teams/update-discussion-in-org"]; + }; + "/orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments": { + /** + * List all comments on a team discussion. OAuth access tokens require the `read:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). + * + * **Note:** You can also specify a team by `org_id` and `team_id` using the route `GET /organizations/{org_id}/team/{team_id}/discussions/{discussion_number}/comments`. + */ + get: operations["teams/list-discussion-comments-in-org"]; + /** + * Creates a new comment on a team discussion. OAuth access tokens require the `write:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). + * + * This endpoint triggers [notifications](https://docs.github.com/en/github/managing-subscriptions-and-notifications-on-github/about-notifications). Creating content too quickly using this endpoint may result in secondary rate limiting. See "[Secondary rate limits](https://docs.github.com/rest/overview/resources-in-the-rest-api#secondary-rate-limits)" and "[Dealing with secondary rate limits](https://docs.github.com/rest/guides/best-practices-for-integrators#dealing-with-secondary-rate-limits)" for details. + * + * **Note:** You can also specify a team by `org_id` and `team_id` using the route `POST /organizations/{org_id}/team/{team_id}/discussions/{discussion_number}/comments`. + */ + post: operations["teams/create-discussion-comment-in-org"]; + }; + "/orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}": { + /** + * Get a specific comment on a team discussion. OAuth access tokens require the `read:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). + * + * **Note:** You can also specify a team by `org_id` and `team_id` using the route `GET /organizations/{org_id}/team/{team_id}/discussions/{discussion_number}/comments/{comment_number}`. + */ + get: operations["teams/get-discussion-comment-in-org"]; + /** + * Deletes a comment on a team discussion. OAuth access tokens require the `write:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). + * + * **Note:** You can also specify a team by `org_id` and `team_id` using the route `DELETE /organizations/{org_id}/team/{team_id}/discussions/{discussion_number}/comments/{comment_number}`. + */ + delete: operations["teams/delete-discussion-comment-in-org"]; + /** + * Edits the body text of a discussion comment. OAuth access tokens require the `write:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). + * + * **Note:** You can also specify a team by `org_id` and `team_id` using the route `PATCH /organizations/{org_id}/team/{team_id}/discussions/{discussion_number}/comments/{comment_number}`. + */ + patch: operations["teams/update-discussion-comment-in-org"]; + }; + "/orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions": { + /** + * List the reactions to a [team discussion comment](https://docs.github.com/rest/reference/teams#discussion-comments/). OAuth access tokens require the `read:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). + * + * **Note:** You can also specify a team by `org_id` and `team_id` using the route `GET /organizations/:org_id/team/:team_id/discussions/:discussion_number/comments/:comment_number/reactions`. + */ + get: operations["reactions/list-for-team-discussion-comment-in-org"]; + /** + * Create a reaction to a [team discussion comment](https://docs.github.com/rest/reference/teams#discussion-comments). OAuth access tokens require the `write:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). A response with an HTTP `200` status means that you already added the reaction type to this team discussion comment. + * + * **Note:** You can also specify a team by `org_id` and `team_id` using the route `POST /organizations/:org_id/team/:team_id/discussions/:discussion_number/comments/:comment_number/reactions`. + */ + post: operations["reactions/create-for-team-discussion-comment-in-org"]; + }; + "/orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions/{reaction_id}": { + /** + * **Note:** You can also specify a team or organization with `team_id` and `org_id` using the route `DELETE /organizations/:org_id/team/:team_id/discussions/:discussion_number/comments/:comment_number/reactions/:reaction_id`. + * + * Delete a reaction to a [team discussion comment](https://docs.github.com/rest/reference/teams#discussion-comments). OAuth access tokens require the `write:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). + */ + delete: operations["reactions/delete-for-team-discussion-comment"]; + }; + "/orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions": { + /** + * List the reactions to a [team discussion](https://docs.github.com/rest/reference/teams#discussions). OAuth access tokens require the `read:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). + * + * **Note:** You can also specify a team by `org_id` and `team_id` using the route `GET /organizations/:org_id/team/:team_id/discussions/:discussion_number/reactions`. + */ + get: operations["reactions/list-for-team-discussion-in-org"]; + /** + * Create a reaction to a [team discussion](https://docs.github.com/rest/reference/teams#discussions). OAuth access tokens require the `write:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). A response with an HTTP `200` status means that you already added the reaction type to this team discussion. + * + * **Note:** You can also specify a team by `org_id` and `team_id` using the route `POST /organizations/:org_id/team/:team_id/discussions/:discussion_number/reactions`. + */ + post: operations["reactions/create-for-team-discussion-in-org"]; + }; + "/orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions/{reaction_id}": { + /** + * **Note:** You can also specify a team or organization with `team_id` and `org_id` using the route `DELETE /organizations/:org_id/team/:team_id/discussions/:discussion_number/reactions/:reaction_id`. + * + * Delete a reaction to a [team discussion](https://docs.github.com/rest/reference/teams#discussions). OAuth access tokens require the `write:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). + */ + delete: operations["reactions/delete-for-team-discussion"]; + }; + "/orgs/{org}/teams/{team_slug}/external-groups": { + /** + * Lists a connection between a team and an external group. + * + * You can manage team membership with your identity provider using Enterprise Managed Users for GitHub Enterprise Cloud. For more information, see "[GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products)" in the GitHub Help documentation. + */ + get: operations["teams/list-linked-external-idp-groups-to-team-for-org"]; + /** + * Deletes a connection between a team and an external group. + * + * You can manage team membership with your IdP using Enterprise Managed Users for GitHub Enterprise Cloud. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. + */ + delete: operations["teams/unlink-external-idp-group-from-team-for-org"]; + /** + * Creates a connection between a team and an external group. Only one external group can be linked to a team. + * + * You can manage team membership with your identity provider using Enterprise Managed Users for GitHub Enterprise Cloud. For more information, see "[GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products)" in the GitHub Help documentation. + */ + patch: operations["teams/link-external-idp-group-to-team-for-org"]; + }; + "/orgs/{org}/teams/{team_slug}/invitations": { + /** + * The return hash contains a `role` field which refers to the Organization Invitation role and will be one of the following values: `direct_member`, `admin`, `billing_manager`, `hiring_manager`, or `reinstate`. If the invitee is not a GitHub member, the `login` field in the return hash will be `null`. + * + * **Note:** You can also specify a team by `org_id` and `team_id` using the route `GET /organizations/{org_id}/team/{team_id}/invitations`. + */ + get: operations["teams/list-pending-invitations-in-org"]; + }; + "/orgs/{org}/teams/{team_slug}/members": { + /** + * Team members will include the members of child teams. + * + * To list members in a team, the team must be visible to the authenticated user. + */ + get: operations["teams/list-members-in-org"]; + }; + "/orgs/{org}/teams/{team_slug}/memberships/{username}": { + /** + * Team members will include the members of child teams. + * + * To get a user's membership with a team, the team must be visible to the authenticated user. + * + * **Note:** You can also specify a team by `org_id` and `team_id` using the route `GET /organizations/{org_id}/team/{team_id}/memberships/{username}`. + * + * **Note:** + * The response contains the `state` of the membership and the member's `role`. + * + * The `role` for organization owners is set to `maintainer`. For more information about `maintainer` roles, see see [Create a team](https://docs.github.com/rest/reference/teams#create-a-team). + */ + get: operations["teams/get-membership-for-user-in-org"]; + /** + * Team synchronization is available for organizations using GitHub Enterprise Cloud. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. + * + * Adds an organization member to a team. An authenticated organization owner or team maintainer can add organization members to a team. + * + * **Note:** When you have team synchronization set up for a team with your organization's identity provider (IdP), you will see an error if you attempt to use the API for making changes to the team's membership. If you have access to manage group membership in your IdP, you can manage GitHub team membership through your identity provider, which automatically adds and removes team members in an organization. For more information, see "[Synchronizing teams between your identity provider and GitHub](https://docs.github.com/articles/synchronizing-teams-between-your-identity-provider-and-github/)." + * + * An organization owner can add someone who is not part of the team's organization to a team. When an organization owner adds someone to a team who is not an organization member, this endpoint will send an invitation to the person via email. This newly-created membership will be in the "pending" state until the person accepts the invitation, at which point the membership will transition to the "active" state and the user will be added as a member of the team. + * + * If the user is already a member of the team, this endpoint will update the role of the team member's role. To update the membership of a team member, the authenticated user must be an organization owner or a team maintainer. + * + * **Note:** You can also specify a team by `org_id` and `team_id` using the route `PUT /organizations/{org_id}/team/{team_id}/memberships/{username}`. + */ + put: operations["teams/add-or-update-membership-for-user-in-org"]; + /** + * Team synchronization is available for organizations using GitHub Enterprise Cloud. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. + * + * To remove a membership between a user and a team, the authenticated user must have 'admin' permissions to the team or be an owner of the organization that the team is associated with. Removing team membership does not delete the user, it just removes their membership from the team. + * + * **Note:** When you have team synchronization set up for a team with your organization's identity provider (IdP), you will see an error if you attempt to use the API for making changes to the team's membership. If you have access to manage group membership in your IdP, you can manage GitHub team membership through your identity provider, which automatically adds and removes team members in an organization. For more information, see "[Synchronizing teams between your identity provider and GitHub](https://docs.github.com/articles/synchronizing-teams-between-your-identity-provider-and-github/)." + * + * **Note:** You can also specify a team by `org_id` and `team_id` using the route `DELETE /organizations/{org_id}/team/{team_id}/memberships/{username}`. + */ + delete: operations["teams/remove-membership-for-user-in-org"]; + }; + "/orgs/{org}/teams/{team_slug}/projects": { + /** + * Lists the organization projects for a team. + * + * **Note:** You can also specify a team by `org_id` and `team_id` using the route `GET /organizations/{org_id}/team/{team_id}/projects`. + */ + get: operations["teams/list-projects-in-org"]; + }; + "/orgs/{org}/teams/{team_slug}/projects/{project_id}": { + /** + * Checks whether a team has `read`, `write`, or `admin` permissions for an organization project. The response includes projects inherited from a parent team. + * + * **Note:** You can also specify a team by `org_id` and `team_id` using the route `GET /organizations/{org_id}/team/{team_id}/projects/{project_id}`. + */ + get: operations["teams/check-permissions-for-project-in-org"]; + /** + * Adds an organization project to a team. To add a project to a team or update the team's permission on a project, the authenticated user must have `admin` permissions for the project. The project and team must be part of the same organization. + * + * **Note:** You can also specify a team by `org_id` and `team_id` using the route `PUT /organizations/{org_id}/team/{team_id}/projects/{project_id}`. + */ + put: operations["teams/add-or-update-project-permissions-in-org"]; + /** + * Removes an organization project from a team. An organization owner or a team maintainer can remove any project from the team. To remove a project from a team as an organization member, the authenticated user must have `read` access to both the team and project, or `admin` access to the team or project. This endpoint removes the project from the team, but does not delete the project. + * + * **Note:** You can also specify a team by `org_id` and `team_id` using the route `DELETE /organizations/{org_id}/team/{team_id}/projects/{project_id}`. + */ + delete: operations["teams/remove-project-in-org"]; + }; + "/orgs/{org}/teams/{team_slug}/repos": { + /** + * Lists a team's repositories visible to the authenticated user. + * + * **Note:** You can also specify a team by `org_id` and `team_id` using the route `GET /organizations/{org_id}/team/{team_id}/repos`. + */ + get: operations["teams/list-repos-in-org"]; + }; + "/orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}": { + /** + * Checks whether a team has `admin`, `push`, `maintain`, `triage`, or `pull` permission for a repository. Repositories inherited through a parent team will also be checked. + * + * You can also get information about the specified repository, including what permissions the team grants on it, by passing the following custom [media type](https://docs.github.com/rest/overview/media-types/) via the `application/vnd.github.v3.repository+json` accept header. + * + * If a team doesn't have permission for the repository, you will receive a `404 Not Found` response status. + * + * **Note:** You can also specify a team by `org_id` and `team_id` using the route `GET /organizations/{org_id}/team/{team_id}/repos/{owner}/{repo}`. + */ + get: operations["teams/check-permissions-for-repo-in-org"]; + /** + * To add a repository to a team or update the team's permission on a repository, the authenticated user must have admin access to the repository, and must be able to see the team. The repository must be owned by the organization, or a direct fork of a repository owned by the organization. You will get a `422 Unprocessable Entity` status if you attempt to add a repository to a team that is not owned by the organization. Note that, if you choose not to pass any parameters, you'll need to set `Content-Length` to zero when calling out to this endpoint. For more information, see "[HTTP verbs](https://docs.github.com/rest/overview/resources-in-the-rest-api#http-verbs)." + * + * **Note:** You can also specify a team by `org_id` and `team_id` using the route `PUT /organizations/{org_id}/team/{team_id}/repos/{owner}/{repo}`. + * + * For more information about the permission levels, see "[Repository permission levels for an organization](https://docs.github.com/en/github/setting-up-and-managing-organizations-and-teams/repository-permission-levels-for-an-organization#permission-levels-for-repositories-owned-by-an-organization)". + */ + put: operations["teams/add-or-update-repo-permissions-in-org"]; + /** + * If the authenticated user is an organization owner or a team maintainer, they can remove any repositories from the team. To remove a repository from a team as an organization member, the authenticated user must have admin access to the repository and must be able to see the team. This does not delete the repository, it just removes it from the team. + * + * **Note:** You can also specify a team by `org_id` and `team_id` using the route `DELETE /organizations/{org_id}/team/{team_id}/repos/{owner}/{repo}`. + */ + delete: operations["teams/remove-repo-in-org"]; + }; + "/orgs/{org}/teams/{team_slug}/team-sync/group-mappings": { + /** + * Team synchronization is available for organizations using GitHub Enterprise Cloud. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. + * + * List IdP groups connected to a team on GitHub. + * + * **Note:** You can also specify a team by `org_id` and `team_id` using the route `GET /organizations/{org_id}/team/{team_id}/team-sync/group-mappings`. + */ + get: operations["teams/list-idp-groups-in-org"]; + /** + * Team synchronization is available for organizations using GitHub Enterprise Cloud. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. + * + * Creates, updates, or removes a connection between a team and an IdP group. When adding groups to a team, you must include all new and existing groups to avoid replacing existing groups with the new ones. Specifying an empty `groups` array will remove all connections for a team. + * + * **Note:** You can also specify a team by `org_id` and `team_id` using the route `PATCH /organizations/{org_id}/team/{team_id}/team-sync/group-mappings`. + */ + patch: operations["teams/create-or-update-idp-group-connections-in-org"]; + }; + "/orgs/{org}/teams/{team_slug}/teams": { + /** + * Lists the child teams of the team specified by `{team_slug}`. + * + * **Note:** You can also specify a team by `org_id` and `team_id` using the route `GET /organizations/{org_id}/team/{team_id}/teams`. + */ + get: operations["teams/list-child-in-org"]; + }; + "/projects/columns/cards/{card_id}": { + get: operations["projects/get-card"]; + delete: operations["projects/delete-card"]; + patch: operations["projects/update-card"]; + }; + "/projects/columns/cards/{card_id}/moves": { + post: operations["projects/move-card"]; + }; + "/projects/columns/{column_id}": { + get: operations["projects/get-column"]; + delete: operations["projects/delete-column"]; + patch: operations["projects/update-column"]; + }; + "/projects/columns/{column_id}/cards": { + get: operations["projects/list-cards"]; + post: operations["projects/create-card"]; + }; + "/projects/columns/{column_id}/moves": { + post: operations["projects/move-column"]; + }; + "/projects/{project_id}": { + /** Gets a project by its `id`. Returns a `404 Not Found` status if projects are disabled. If you do not have sufficient privileges to perform this action, a `401 Unauthorized` or `410 Gone` status is returned. */ + get: operations["projects/get"]; + /** Deletes a project board. Returns a `404 Not Found` status if projects are disabled. */ + delete: operations["projects/delete"]; + /** Updates a project board's information. Returns a `404 Not Found` status if projects are disabled. If you do not have sufficient privileges to perform this action, a `401 Unauthorized` or `410 Gone` status is returned. */ + patch: operations["projects/update"]; + }; + "/projects/{project_id}/collaborators": { + /** Lists the collaborators for an organization project. For a project, the list of collaborators includes outside collaborators, organization members that are direct collaborators, organization members with access through team memberships, organization members with access through default organization permissions, and organization owners. You must be an organization owner or a project `admin` to list collaborators. */ + get: operations["projects/list-collaborators"]; + }; + "/projects/{project_id}/collaborators/{username}": { + /** Adds a collaborator to an organization project and sets their permission level. You must be an organization owner or a project `admin` to add a collaborator. */ + put: operations["projects/add-collaborator"]; + /** Removes a collaborator from an organization project. You must be an organization owner or a project `admin` to remove a collaborator. */ + delete: operations["projects/remove-collaborator"]; + }; + "/projects/{project_id}/collaborators/{username}/permission": { + /** Returns the collaborator's permission level for an organization project. Possible values for the `permission` key: `admin`, `write`, `read`, `none`. You must be an organization owner or a project `admin` to review a user's permission level. */ + get: operations["projects/get-permission-for-user"]; + }; + "/projects/{project_id}/columns": { + get: operations["projects/list-columns"]; + post: operations["projects/create-column"]; + }; + "/rate_limit": { + /** + * **Note:** Accessing this endpoint does not count against your REST API rate limit. + * + * **Note:** The `rate` object is deprecated. If you're writing new API client code or updating existing code, you should use the `core` object instead of the `rate` object. The `core` object contains the same information that is present in the `rate` object. + */ + get: operations["rate-limit/get"]; + }; + "/repos/{owner}/{repo}": { + /** The `parent` and `source` objects are present when the repository is a fork. `parent` is the repository this repository was forked from, `source` is the ultimate source for the network. */ + get: operations["repos/get"]; + /** + * Deleting a repository requires admin access. If OAuth is used, the `delete_repo` scope is required. + * + * If an organization owner has configured the organization to prevent members from deleting organization-owned + * repositories, you will get a `403 Forbidden` response. + */ + delete: operations["repos/delete"]; + /** **Note**: To edit a repository's topics, use the [Replace all repository topics](https://docs.github.com/rest/reference/repos#replace-all-repository-topics) endpoint. */ + patch: operations["repos/update"]; + }; + "/repos/{owner}/{repo}/actions/artifacts": { + /** Lists all artifacts for a repository. Anyone with read access to the repository can use this endpoint. If the repository is private you must use an access token with the `repo` scope. GitHub Apps must have the `actions:read` permission to use this endpoint. */ + get: operations["actions/list-artifacts-for-repo"]; + }; + "/repos/{owner}/{repo}/actions/artifacts/{artifact_id}": { + /** Gets a specific artifact for a workflow run. Anyone with read access to the repository can use this endpoint. If the repository is private you must use an access token with the `repo` scope. GitHub Apps must have the `actions:read` permission to use this endpoint. */ + get: operations["actions/get-artifact"]; + /** Deletes an artifact for a workflow run. You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the `actions:write` permission to use this endpoint. */ + delete: operations["actions/delete-artifact"]; + }; + "/repos/{owner}/{repo}/actions/artifacts/{artifact_id}/{archive_format}": { + /** + * Gets a redirect URL to download an archive for a repository. This URL expires after 1 minute. Look for `Location:` in + * the response header to find the URL for the download. The `:archive_format` must be `zip`. Anyone with read access to + * the repository can use this endpoint. If the repository is private you must use an access token with the `repo` scope. + * GitHub Apps must have the `actions:read` permission to use this endpoint. + */ + get: operations["actions/download-artifact"]; + }; + "/repos/{owner}/{repo}/actions/cache/usage": { + /** + * Gets GitHub Actions cache usage for a repository. + * The data fetched using this API is refreshed approximately every 5 minutes, so values returned from this endpoint may take at least 5 minutes to get updated. + * Anyone with read access to the repository can use this endpoint. If the repository is private, you must use an access token with the `repo` scope. GitHub Apps must have the `actions:read` permission to use this endpoint. + */ + get: operations["actions/get-actions-cache-usage"]; + }; + "/repos/{owner}/{repo}/actions/caches": { + /** + * Lists the GitHub Actions caches for a repository. + * You must authenticate using an access token with the `repo` scope to use this endpoint. + * GitHub Apps must have the `actions:read` permission to use this endpoint. + */ + get: operations["actions/get-actions-cache-list"]; + /** + * Deletes one or more GitHub Actions caches for a repository, using a complete cache key. By default, all caches that match the provided key are deleted, but you can optionally provide a Git ref to restrict deletions to caches that match both the provided key and the Git ref. + * + * You must authenticate using an access token with the `repo` scope to use this endpoint. + * + * GitHub Apps must have the `actions:write` permission to use this endpoint. + */ + delete: operations["actions/delete-actions-cache-by-key"]; + }; + "/repos/{owner}/{repo}/actions/caches/{cache_id}": { + /** + * Deletes a GitHub Actions cache for a repository, using a cache ID. + * + * You must authenticate using an access token with the `repo` scope to use this endpoint. + * + * GitHub Apps must have the `actions:write` permission to use this endpoint. + */ + delete: operations["actions/delete-actions-cache-by-id"]; + }; + "/repos/{owner}/{repo}/actions/jobs/{job_id}": { + /** Gets a specific job in a workflow run. Anyone with read access to the repository can use this endpoint. If the repository is private you must use an access token with the `repo` scope. GitHub Apps must have the `actions:read` permission to use this endpoint. */ + get: operations["actions/get-job-for-workflow-run"]; + }; + "/repos/{owner}/{repo}/actions/jobs/{job_id}/logs": { + /** + * Gets a redirect URL to download a plain text file of logs for a workflow job. This link expires after 1 minute. Look + * for `Location:` in the response header to find the URL for the download. Anyone with read access to the repository can + * use this endpoint. If the repository is private you must use an access token with the `repo` scope. GitHub Apps must + * have the `actions:read` permission to use this endpoint. + */ + get: operations["actions/download-job-logs-for-workflow-run"]; + }; + "/repos/{owner}/{repo}/actions/jobs/{job_id}/rerun": { + /** Re-run a job and its dependent jobs in a workflow run. You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the `actions:write` permission to use this endpoint. */ + post: operations["actions/re-run-job-for-workflow-run"]; + }; + "/repos/{owner}/{repo}/actions/oidc/customization/sub": { + /** + * Gets the `opt-out` flag of a GitHub Actions OpenID Connect (OIDC) subject claim customization for a repository. + * You must authenticate using an access token with the `repo` scope to use this + * endpoint. GitHub Apps must have the `organization_administration:read` permission to use this endpoint. + */ + get: operations["actions/get-custom-oidc-sub-claim-for-repo"]; + /** + * Sets the `opt-out` flag of a GitHub Actions OpenID Connect (OIDC) subject claim customization for a repository. + * You must authenticate using an access token with the `repo` scope to use this + * endpoint. GitHub Apps must have the `actions:write` permission to use this endpoint. + */ + put: operations["actions/set-custom-oidc-sub-claim-for-repo"]; + }; + "/repos/{owner}/{repo}/actions/permissions": { + /** + * Gets the GitHub Actions permissions policy for a repository, including whether GitHub Actions is enabled and the actions and reusable workflows allowed to run in the repository. + * + * You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the `administration` repository permission to use this API. + */ + get: operations["actions/get-github-actions-permissions-repository"]; + /** + * Sets the GitHub Actions permissions policy for enabling GitHub Actions and allowed actions and reusable workflows in the repository. + * + * If the repository belongs to an organization or enterprise that has set restrictive permissions at the organization or enterprise levels, such as `allowed_actions` to `selected` actions and reusable workflows, then you cannot override them for the repository. + * + * You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the `administration` repository permission to use this API. + */ + put: operations["actions/set-github-actions-permissions-repository"]; + }; + "/repos/{owner}/{repo}/actions/permissions/access": { + /** + * Gets the level of access that workflows outside of the repository have to actions and reusable workflows in the repository. + * This endpoint only applies to internal repositories. For more information, see "[Managing GitHub Actions settings for a repository](https://docs.github.com/repositories/managing-your-repositorys-settings-and-features/enabling-features-for-your-repository/managing-github-actions-settings-for-a-repository#allowing-access-to-components-in-an-internal-repository)." + * + * You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the + * repository `administration` permission to use this endpoint. + */ + get: operations["actions/get-workflow-access-to-repository"]; + /** + * Sets the level of access that workflows outside of the repository have to actions and reusable workflows in the repository. + * This endpoint only applies to internal repositories. For more information, see "[Managing GitHub Actions settings for a repository](https://docs.github.com/repositories/managing-your-repositorys-settings-and-features/enabling-features-for-your-repository/managing-github-actions-settings-for-a-repository#allowing-access-to-components-in-an-internal-repository)." + * + * You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the + * repository `administration` permission to use this endpoint. + */ + put: operations["actions/set-workflow-access-to-repository"]; + }; + "/repos/{owner}/{repo}/actions/permissions/selected-actions": { + /** + * Gets the settings for selected actions and reusable workflows that are allowed in a repository. To use this endpoint, the repository policy for `allowed_actions` must be configured to `selected`. For more information, see "[Set GitHub Actions permissions for a repository](#set-github-actions-permissions-for-a-repository)." + * + * You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the `administration` repository permission to use this API. + */ + get: operations["actions/get-allowed-actions-repository"]; + /** + * Sets the actions and reusable workflows that are allowed in a repository. To use this endpoint, the repository permission policy for `allowed_actions` must be configured to `selected`. For more information, see "[Set GitHub Actions permissions for a repository](#set-github-actions-permissions-for-a-repository)." + * + * If the repository belongs to an organization or enterprise that has `selected` actions and reusable workflows set at the organization or enterprise levels, then you cannot override any of the allowed actions and reusable workflows settings. + * + * To use the `patterns_allowed` setting for private repositories, the repository must belong to an enterprise. If the repository does not belong to an enterprise, then the `patterns_allowed` setting only applies to public repositories. + * + * You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the `administration` repository permission to use this API. + */ + put: operations["actions/set-allowed-actions-repository"]; + }; + "/repos/{owner}/{repo}/actions/permissions/workflow": { + /** + * Gets the default workflow permissions granted to the `GITHUB_TOKEN` when running workflows in a repository, + * as well as if GitHub Actions can submit approving pull request reviews. + * For more information, see "[Setting the permissions of the GITHUB_TOKEN for your repository](https://docs.github.com/repositories/managing-your-repositorys-settings-and-features/enabling-features-for-your-repository/managing-github-actions-settings-for-a-repository#setting-the-permissions-of-the-github_token-for-your-repository)." + * + * You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the repository `administration` permission to use this API. + */ + get: operations["actions/get-github-actions-default-workflow-permissions-repository"]; + /** + * Sets the default workflow permissions granted to the `GITHUB_TOKEN` when running workflows in a repository, and sets if GitHub Actions + * can submit approving pull request reviews. + * For more information, see "[Setting the permissions of the GITHUB_TOKEN for your repository](https://docs.github.com/repositories/managing-your-repositorys-settings-and-features/enabling-features-for-your-repository/managing-github-actions-settings-for-a-repository#setting-the-permissions-of-the-github_token-for-your-repository)." + * + * You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the repository `administration` permission to use this API. + */ + put: operations["actions/set-github-actions-default-workflow-permissions-repository"]; + }; + "/repos/{owner}/{repo}/actions/runners": { + /** Lists all self-hosted runners configured in a repository. You must authenticate using an access token with the `repo` scope to use this endpoint. */ + get: operations["actions/list-self-hosted-runners-for-repo"]; + }; + "/repos/{owner}/{repo}/actions/runners/downloads": { + /** + * Lists binaries for the runner application that you can download and run. + * + * You must authenticate using an access token with the `repo` scope to use this endpoint. + */ + get: operations["actions/list-runner-applications-for-repo"]; + }; + "/repos/{owner}/{repo}/actions/runners/registration-token": { + /** + * Returns a token that you can pass to the `config` script. The token expires after one hour. You must authenticate + * using an access token with the `repo` scope to use this endpoint. + * + * #### Example using registration token + * + * Configure your self-hosted runner, replacing `TOKEN` with the registration token provided by this endpoint. + * + * ``` + * ./config.sh --url https://github.com/octo-org/octo-repo-artifacts --token TOKEN + * ``` + */ + post: operations["actions/create-registration-token-for-repo"]; + }; + "/repos/{owner}/{repo}/actions/runners/remove-token": { + /** + * Returns a token that you can pass to remove a self-hosted runner from a repository. The token expires after one hour. + * You must authenticate using an access token with the `repo` scope to use this endpoint. + * + * #### Example using remove token + * + * To remove your self-hosted runner from a repository, replace TOKEN with the remove token provided by this endpoint. + * + * ``` + * ./config.sh remove --token TOKEN + * ``` + */ + post: operations["actions/create-remove-token-for-repo"]; + }; + "/repos/{owner}/{repo}/actions/runners/{runner_id}": { + /** + * Gets a specific self-hosted runner configured in a repository. + * + * You must authenticate using an access token with the `repo` scope to use this + * endpoint. + */ + get: operations["actions/get-self-hosted-runner-for-repo"]; + /** + * Forces the removal of a self-hosted runner from a repository. You can use this endpoint to completely remove the runner when the machine you were using no longer exists. + * + * You must authenticate using an access token with the `repo` + * scope to use this endpoint. + */ + delete: operations["actions/delete-self-hosted-runner-from-repo"]; + }; + "/repos/{owner}/{repo}/actions/runners/{runner_id}/labels": { + /** + * Lists all labels for a self-hosted runner configured in a repository. + * + * You must authenticate using an access token with the `repo` scope to use this + * endpoint. + */ + get: operations["actions/list-labels-for-self-hosted-runner-for-repo"]; + /** + * Remove all previous custom labels and set the new custom labels for a specific + * self-hosted runner configured in a repository. + * + * You must authenticate using an access token with the `repo` scope to use this + * endpoint. + */ + put: operations["actions/set-custom-labels-for-self-hosted-runner-for-repo"]; + /** + * Add custom labels to a self-hosted runner configured in a repository. + * + * You must authenticate using an access token with the `repo` scope to use this + * endpoint. + */ + post: operations["actions/add-custom-labels-to-self-hosted-runner-for-repo"]; + /** + * Remove all custom labels from a self-hosted runner configured in a + * repository. Returns the remaining read-only labels from the runner. + * + * You must authenticate using an access token with the `repo` scope to use this + * endpoint. + */ + delete: operations["actions/remove-all-custom-labels-from-self-hosted-runner-for-repo"]; + }; + "/repos/{owner}/{repo}/actions/runners/{runner_id}/labels/{name}": { + /** + * Remove a custom label from a self-hosted runner configured + * in a repository. Returns the remaining labels from the runner. + * + * This endpoint returns a `404 Not Found` status if the custom label is not + * present on the runner. + * + * You must authenticate using an access token with the `repo` scope to use this + * endpoint. + */ + delete: operations["actions/remove-custom-label-from-self-hosted-runner-for-repo"]; + }; + "/repos/{owner}/{repo}/actions/runs": { + /** + * Lists all workflow runs for a repository. You can use parameters to narrow the list of results. For more information about using parameters, see [Parameters](https://docs.github.com/rest/overview/resources-in-the-rest-api#parameters). + * + * Anyone with read access to the repository can use this endpoint. If the repository is private you must use an access token with the `repo` scope. GitHub Apps must have the `actions:read` permission to use this endpoint. + */ + get: operations["actions/list-workflow-runs-for-repo"]; + }; + "/repos/{owner}/{repo}/actions/runs/{run_id}": { + /** Gets a specific workflow run. Anyone with read access to the repository can use this endpoint. If the repository is private you must use an access token with the `repo` scope. GitHub Apps must have the `actions:read` permission to use this endpoint. */ + get: operations["actions/get-workflow-run"]; + /** + * Delete a specific workflow run. Anyone with write access to the repository can use this endpoint. If the repository is + * private you must use an access token with the `repo` scope. GitHub Apps must have the `actions:write` permission to use + * this endpoint. + */ + delete: operations["actions/delete-workflow-run"]; + }; + "/repos/{owner}/{repo}/actions/runs/{run_id}/approvals": { + /** Anyone with read access to the repository can use this endpoint. If the repository is private, you must use an access token with the `repo` scope. GitHub Apps must have the `actions:read` permission to use this endpoint. */ + get: operations["actions/get-reviews-for-run"]; + }; + "/repos/{owner}/{repo}/actions/runs/{run_id}/approve": { + /** + * Approves a workflow run for a pull request from a public fork of a first time contributor. For more information, see ["Approving workflow runs from public forks](https://docs.github.com/actions/managing-workflow-runs/approving-workflow-runs-from-public-forks)." + * + * You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the `actions:write` permission to use this endpoint. + */ + post: operations["actions/approve-workflow-run"]; + }; + "/repos/{owner}/{repo}/actions/runs/{run_id}/artifacts": { + /** Lists artifacts for a workflow run. Anyone with read access to the repository can use this endpoint. If the repository is private you must use an access token with the `repo` scope. GitHub Apps must have the `actions:read` permission to use this endpoint. */ + get: operations["actions/list-workflow-run-artifacts"]; + }; + "/repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}": { + /** + * Gets a specific workflow run attempt. Anyone with read access to the repository + * can use this endpoint. If the repository is private you must use an access token + * with the `repo` scope. GitHub Apps must have the `actions:read` permission to + * use this endpoint. + */ + get: operations["actions/get-workflow-run-attempt"]; + }; + "/repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/jobs": { + /** Lists jobs for a specific workflow run attempt. Anyone with read access to the repository can use this endpoint. If the repository is private you must use an access token with the `repo` scope. GitHub Apps must have the `actions:read` permission to use this endpoint. You can use parameters to narrow the list of results. For more information about using parameters, see [Parameters](https://docs.github.com/rest/overview/resources-in-the-rest-api#parameters). */ + get: operations["actions/list-jobs-for-workflow-run-attempt"]; + }; + "/repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/logs": { + /** + * Gets a redirect URL to download an archive of log files for a specific workflow run attempt. This link expires after + * 1 minute. Look for `Location:` in the response header to find the URL for the download. Anyone with read access to + * the repository can use this endpoint. If the repository is private you must use an access token with the `repo` scope. + * GitHub Apps must have the `actions:read` permission to use this endpoint. + */ + get: operations["actions/download-workflow-run-attempt-logs"]; + }; + "/repos/{owner}/{repo}/actions/runs/{run_id}/cancel": { + /** Cancels a workflow run using its `id`. You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the `actions:write` permission to use this endpoint. */ + post: operations["actions/cancel-workflow-run"]; + }; + "/repos/{owner}/{repo}/actions/runs/{run_id}/jobs": { + /** Lists jobs for a workflow run. Anyone with read access to the repository can use this endpoint. If the repository is private you must use an access token with the `repo` scope. GitHub Apps must have the `actions:read` permission to use this endpoint. You can use parameters to narrow the list of results. For more information about using parameters, see [Parameters](https://docs.github.com/rest/overview/resources-in-the-rest-api#parameters). */ + get: operations["actions/list-jobs-for-workflow-run"]; + }; + "/repos/{owner}/{repo}/actions/runs/{run_id}/logs": { + /** + * Gets a redirect URL to download an archive of log files for a workflow run. This link expires after 1 minute. Look for + * `Location:` in the response header to find the URL for the download. Anyone with read access to the repository can use + * this endpoint. If the repository is private you must use an access token with the `repo` scope. GitHub Apps must have + * the `actions:read` permission to use this endpoint. + */ + get: operations["actions/download-workflow-run-logs"]; + /** Deletes all logs for a workflow run. You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the `actions:write` permission to use this endpoint. */ + delete: operations["actions/delete-workflow-run-logs"]; + }; + "/repos/{owner}/{repo}/actions/runs/{run_id}/pending_deployments": { + /** + * Get all deployment environments for a workflow run that are waiting for protection rules to pass. + * + * Anyone with read access to the repository can use this endpoint. If the repository is private, you must use an access token with the `repo` scope. GitHub Apps must have the `actions:read` permission to use this endpoint. + */ + get: operations["actions/get-pending-deployments-for-run"]; + /** + * Approve or reject pending deployments that are waiting on approval by a required reviewer. + * + * Required reviewers with read access to the repository contents and deployments can use this endpoint. Required reviewers must authenticate using an access token with the `repo` scope to use this endpoint. + */ + post: operations["actions/review-pending-deployments-for-run"]; + }; + "/repos/{owner}/{repo}/actions/runs/{run_id}/rerun": { + /** Re-runs your workflow run using its `id`. You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the `actions:write` permission to use this endpoint. */ + post: operations["actions/re-run-workflow"]; + }; + "/repos/{owner}/{repo}/actions/runs/{run_id}/rerun-failed-jobs": { + /** Re-run all of the failed jobs and their dependent jobs in a workflow run using the `id` of the workflow run. You must authenticate using an access token with the `repo` scope to use this endpoint. */ + post: operations["actions/re-run-workflow-failed-jobs"]; + }; + "/repos/{owner}/{repo}/actions/runs/{run_id}/timing": { + /** + * Gets the number of billable minutes and total run time for a specific workflow run. Billable minutes only apply to workflows in private repositories that use GitHub-hosted runners. Usage is listed for each GitHub-hosted runner operating system in milliseconds. Any job re-runs are also included in the usage. The usage does not include the multiplier for macOS and Windows runners and is not rounded up to the nearest whole minute. For more information, see "[Managing billing for GitHub Actions](https://docs.github.com/github/setting-up-and-managing-billing-and-payments-on-github/managing-billing-for-github-actions)". + * + * Anyone with read access to the repository can use this endpoint. If the repository is private you must use an access token with the `repo` scope. GitHub Apps must have the `actions:read` permission to use this endpoint. + */ + get: operations["actions/get-workflow-run-usage"]; + }; + "/repos/{owner}/{repo}/actions/secrets": { + /** Lists all secrets available in a repository without revealing their encrypted values. You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the `secrets` repository permission to use this endpoint. */ + get: operations["actions/list-repo-secrets"]; + }; + "/repos/{owner}/{repo}/actions/secrets/public-key": { + /** Gets your public key, which you need to encrypt secrets. You need to encrypt a secret before you can create or update secrets. Anyone with read access to the repository can use this endpoint. If the repository is private you must use an access token with the `repo` scope. GitHub Apps must have the `secrets` repository permission to use this endpoint. */ + get: operations["actions/get-repo-public-key"]; + }; + "/repos/{owner}/{repo}/actions/secrets/{secret_name}": { + /** Gets a single repository secret without revealing its encrypted value. You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the `secrets` repository permission to use this endpoint. */ + get: operations["actions/get-repo-secret"]; + /** + * Creates or updates a repository secret with an encrypted value. Encrypt your secret using + * [LibSodium](https://libsodium.gitbook.io/doc/bindings_for_other_languages). You must authenticate using an access + * token with the `repo` scope to use this endpoint. GitHub Apps must have the `secrets` repository permission to use + * this endpoint. + * + * #### Example encrypting a secret using Node.js + * + * Encrypt your secret using the [tweetsodium](https://github.com/github/tweetsodium) library. + * + * ``` + * const sodium = require('tweetsodium'); + * + * const key = "base64-encoded-public-key"; + * const value = "plain-text-secret"; + * + * // Convert the message and key to Uint8Array's (Buffer implements that interface) + * const messageBytes = Buffer.from(value); + * const keyBytes = Buffer.from(key, 'base64'); + * + * // Encrypt using LibSodium. + * const encryptedBytes = sodium.seal(messageBytes, keyBytes); + * + * // Base64 the encrypted secret + * const encrypted = Buffer.from(encryptedBytes).toString('base64'); + * + * console.log(encrypted); + * ``` + * + * + * #### Example encrypting a secret using Python + * + * Encrypt your secret using [pynacl](https://pynacl.readthedocs.io/en/latest/public/#nacl-public-sealedbox) with Python 3. + * + * ``` + * from base64 import b64encode + * from nacl import encoding, public + * + * def encrypt(public_key: str, secret_value: str) -> str: + * """Encrypt a Unicode string using the public key.""" + * public_key = public.PublicKey(public_key.encode("utf-8"), encoding.Base64Encoder()) + * sealed_box = public.SealedBox(public_key) + * encrypted = sealed_box.encrypt(secret_value.encode("utf-8")) + * return b64encode(encrypted).decode("utf-8") + * ``` + * + * #### Example encrypting a secret using C# + * + * Encrypt your secret using the [Sodium.Core](https://www.nuget.org/packages/Sodium.Core/) package. + * + * ``` + * var secretValue = System.Text.Encoding.UTF8.GetBytes("mySecret"); + * var publicKey = Convert.FromBase64String("2Sg8iYjAxxmI2LvUXpJjkYrMxURPc8r+dB7TJyvvcCU="); + * + * var sealedPublicKeyBox = Sodium.SealedPublicKeyBox.Create(secretValue, publicKey); + * + * Console.WriteLine(Convert.ToBase64String(sealedPublicKeyBox)); + * ``` + * + * #### Example encrypting a secret using Ruby + * + * Encrypt your secret using the [rbnacl](https://github.com/RubyCrypto/rbnacl) gem. + * + * ```ruby + * require "rbnacl" + * require "base64" + * + * key = Base64.decode64("+ZYvJDZMHUfBkJdyq5Zm9SKqeuBQ4sj+6sfjlH4CgG0=") + * public_key = RbNaCl::PublicKey.new(key) + * + * box = RbNaCl::Boxes::Sealed.from_public_key(public_key) + * encrypted_secret = box.encrypt("my_secret") + * + * # Print the base64 encoded secret + * puts Base64.strict_encode64(encrypted_secret) + * ``` + */ + put: operations["actions/create-or-update-repo-secret"]; + /** Deletes a secret in a repository using the secret name. You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the `secrets` repository permission to use this endpoint. */ + delete: operations["actions/delete-repo-secret"]; + }; + "/repos/{owner}/{repo}/actions/workflows": { + /** Lists the workflows in a repository. Anyone with read access to the repository can use this endpoint. If the repository is private you must use an access token with the `repo` scope. GitHub Apps must have the `actions:read` permission to use this endpoint. */ + get: operations["actions/list-repo-workflows"]; + }; + "/repos/{owner}/{repo}/actions/workflows/{workflow_id}": { + /** Gets a specific workflow. You can replace `workflow_id` with the workflow file name. For example, you could use `main.yaml`. Anyone with read access to the repository can use this endpoint. If the repository is private you must use an access token with the `repo` scope. GitHub Apps must have the `actions:read` permission to use this endpoint. */ + get: operations["actions/get-workflow"]; + }; + "/repos/{owner}/{repo}/actions/workflows/{workflow_id}/disable": { + /** + * Disables a workflow and sets the `state` of the workflow to `disabled_manually`. You can replace `workflow_id` with the workflow file name. For example, you could use `main.yaml`. + * + * You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the `actions:write` permission to use this endpoint. + */ + put: operations["actions/disable-workflow"]; + }; + "/repos/{owner}/{repo}/actions/workflows/{workflow_id}/dispatches": { + /** + * You can use this endpoint to manually trigger a GitHub Actions workflow run. You can replace `workflow_id` with the workflow file name. For example, you could use `main.yaml`. + * + * You must configure your GitHub Actions workflow to run when the [`workflow_dispatch` webhook](/developers/webhooks-and-events/webhook-events-and-payloads#workflow_dispatch) event occurs. The `inputs` are configured in the workflow file. For more information about how to configure the `workflow_dispatch` event in the workflow file, see "[Events that trigger workflows](/actions/reference/events-that-trigger-workflows#workflow_dispatch)." + * + * You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the `actions:write` permission to use this endpoint. For more information, see "[Creating a personal access token for the command line](https://docs.github.com/articles/creating-a-personal-access-token-for-the-command-line)." + */ + post: operations["actions/create-workflow-dispatch"]; + }; + "/repos/{owner}/{repo}/actions/workflows/{workflow_id}/enable": { + /** + * Enables a workflow and sets the `state` of the workflow to `active`. You can replace `workflow_id` with the workflow file name. For example, you could use `main.yaml`. + * + * You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the `actions:write` permission to use this endpoint. + */ + put: operations["actions/enable-workflow"]; + }; + "/repos/{owner}/{repo}/actions/workflows/{workflow_id}/runs": { + /** + * List all workflow runs for a workflow. You can replace `workflow_id` with the workflow file name. For example, you could use `main.yaml`. You can use parameters to narrow the list of results. For more information about using parameters, see [Parameters](https://docs.github.com/rest/overview/resources-in-the-rest-api#parameters). + * + * Anyone with read access to the repository can use this endpoint. If the repository is private you must use an access token with the `repo` scope. + */ + get: operations["actions/list-workflow-runs"]; + }; + "/repos/{owner}/{repo}/actions/workflows/{workflow_id}/timing": { + /** + * Gets the number of billable minutes used by a specific workflow during the current billing cycle. Billable minutes only apply to workflows in private repositories that use GitHub-hosted runners. Usage is listed for each GitHub-hosted runner operating system in milliseconds. Any job re-runs are also included in the usage. The usage does not include the multiplier for macOS and Windows runners and is not rounded up to the nearest whole minute. For more information, see "[Managing billing for GitHub Actions](https://docs.github.com/github/setting-up-and-managing-billing-and-payments-on-github/managing-billing-for-github-actions)". + * + * You can replace `workflow_id` with the workflow file name. For example, you could use `main.yaml`. Anyone with read access to the repository can use this endpoint. If the repository is private you must use an access token with the `repo` scope. GitHub Apps must have the `actions:read` permission to use this endpoint. + */ + get: operations["actions/get-workflow-usage"]; + }; + "/repos/{owner}/{repo}/assignees": { + /** Lists the [available assignees](https://docs.github.com/articles/assigning-issues-and-pull-requests-to-other-github-users/) for issues in a repository. */ + get: operations["issues/list-assignees"]; + }; + "/repos/{owner}/{repo}/assignees/{assignee}": { + /** + * Checks if a user has permission to be assigned to an issue in this repository. + * + * If the `assignee` can be assigned to issues in the repository, a `204` header with no content is returned. + * + * Otherwise a `404` status code is returned. + */ + get: operations["issues/check-user-can-be-assigned"]; + }; + "/repos/{owner}/{repo}/autolinks": { + /** + * This returns a list of autolinks configured for the given repository. + * + * Information about autolinks are only available to repository administrators. + */ + get: operations["repos/list-autolinks"]; + /** Users with admin access to the repository can create an autolink. */ + post: operations["repos/create-autolink"]; + }; + "/repos/{owner}/{repo}/autolinks/{autolink_id}": { + /** + * This returns a single autolink reference by ID that was configured for the given repository. + * + * Information about autolinks are only available to repository administrators. + */ + get: operations["repos/get-autolink"]; + /** + * This deletes a single autolink reference by ID that was configured for the given repository. + * + * Information about autolinks are only available to repository administrators. + */ + delete: operations["repos/delete-autolink"]; + }; + "/repos/{owner}/{repo}/automated-security-fixes": { + /** Enables automated security fixes for a repository. The authenticated user must have admin access to the repository. For more information, see "[Configuring automated security fixes](https://docs.github.com/en/articles/configuring-automated-security-fixes)". */ + put: operations["repos/enable-automated-security-fixes"]; + /** Disables automated security fixes for a repository. The authenticated user must have admin access to the repository. For more information, see "[Configuring automated security fixes](https://docs.github.com/en/articles/configuring-automated-security-fixes)". */ + delete: operations["repos/disable-automated-security-fixes"]; + }; + "/repos/{owner}/{repo}/branches": { + get: operations["repos/list-branches"]; + }; + "/repos/{owner}/{repo}/branches/{branch}": { + get: operations["repos/get-branch"]; + }; + "/repos/{owner}/{repo}/branches/{branch}/protection": { + /** Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. */ + get: operations["repos/get-branch-protection"]; + /** + * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. + * + * Protecting a branch requires admin or owner permissions to the repository. + * + * **Note**: Passing new arrays of `users` and `teams` replaces their previous values. + * + * **Note**: The list of users, apps, and teams in total is limited to 100 items. + */ + put: operations["repos/update-branch-protection"]; + /** Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. */ + delete: operations["repos/delete-branch-protection"]; + }; + "/repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins": { + /** Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. */ + get: operations["repos/get-admin-branch-protection"]; + /** + * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. + * + * Adding admin enforcement requires admin or owner permissions to the repository and branch protection to be enabled. + */ + post: operations["repos/set-admin-branch-protection"]; + /** + * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. + * + * Removing admin enforcement requires admin or owner permissions to the repository and branch protection to be enabled. + */ + delete: operations["repos/delete-admin-branch-protection"]; + }; + "/repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews": { + /** Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. */ + get: operations["repos/get-pull-request-review-protection"]; + /** Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. */ + delete: operations["repos/delete-pull-request-review-protection"]; + /** + * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. + * + * Updating pull request review enforcement requires admin or owner permissions to the repository and branch protection to be enabled. + * + * **Note**: Passing new arrays of `users` and `teams` replaces their previous values. + */ + patch: operations["repos/update-pull-request-review-protection"]; + }; + "/repos/{owner}/{repo}/branches/{branch}/protection/required_signatures": { + /** + * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. + * + * When authenticated with admin or owner permissions to the repository, you can use this endpoint to check whether a branch requires signed commits. An enabled status of `true` indicates you must sign commits on this branch. For more information, see [Signing commits with GPG](https://docs.github.com/articles/signing-commits-with-gpg) in GitHub Help. + * + * **Note**: You must enable branch protection to require signed commits. + */ + get: operations["repos/get-commit-signature-protection"]; + /** + * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. + * + * When authenticated with admin or owner permissions to the repository, you can use this endpoint to require signed commits on a branch. You must enable branch protection to require signed commits. + */ + post: operations["repos/create-commit-signature-protection"]; + /** + * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. + * + * When authenticated with admin or owner permissions to the repository, you can use this endpoint to disable required signed commits on a branch. You must enable branch protection to require signed commits. + */ + delete: operations["repos/delete-commit-signature-protection"]; + }; + "/repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks": { + /** Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. */ + get: operations["repos/get-status-checks-protection"]; + /** Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. */ + delete: operations["repos/remove-status-check-protection"]; + /** + * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. + * + * Updating required status checks requires admin or owner permissions to the repository and branch protection to be enabled. + */ + patch: operations["repos/update-status-check-protection"]; + }; + "/repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts": { + /** Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. */ + get: operations["repos/get-all-status-check-contexts"]; + /** Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. */ + put: operations["repos/set-status-check-contexts"]; + /** Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. */ + post: operations["repos/add-status-check-contexts"]; + /** Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. */ + delete: operations["repos/remove-status-check-contexts"]; + }; + "/repos/{owner}/{repo}/branches/{branch}/protection/restrictions": { + /** + * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. + * + * Lists who has access to this protected branch. + * + * **Note**: Users, apps, and teams `restrictions` are only available for organization-owned repositories. + */ + get: operations["repos/get-access-restrictions"]; + /** + * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. + * + * Disables the ability to restrict who can push to this branch. + */ + delete: operations["repos/delete-access-restrictions"]; + }; + "/repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps": { + /** + * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. + * + * Lists the GitHub Apps that have push access to this branch. Only installed GitHub Apps with `write` access to the `contents` permission can be added as authorized actors on a protected branch. + */ + get: operations["repos/get-apps-with-access-to-protected-branch"]; + /** + * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. + * + * Replaces the list of apps that have push access to this branch. This removes all apps that previously had push access and grants push access to the new list of apps. Only installed GitHub Apps with `write` access to the `contents` permission can be added as authorized actors on a protected branch. + * + * | Type | Description | + * | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | + * | `array` | The GitHub Apps that have push access to this branch. Use the app's `slug`. **Note**: The list of users, apps, and teams in total is limited to 100 items. | + */ + put: operations["repos/set-app-access-restrictions"]; + /** + * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. + * + * Grants the specified apps push access for this branch. Only installed GitHub Apps with `write` access to the `contents` permission can be added as authorized actors on a protected branch. + * + * | Type | Description | + * | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | + * | `array` | The GitHub Apps that have push access to this branch. Use the app's `slug`. **Note**: The list of users, apps, and teams in total is limited to 100 items. | + */ + post: operations["repos/add-app-access-restrictions"]; + /** + * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. + * + * Removes the ability of an app to push to this branch. Only installed GitHub Apps with `write` access to the `contents` permission can be added as authorized actors on a protected branch. + * + * | Type | Description | + * | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | + * | `array` | The GitHub Apps that have push access to this branch. Use the app's `slug`. **Note**: The list of users, apps, and teams in total is limited to 100 items. | + */ + delete: operations["repos/remove-app-access-restrictions"]; + }; + "/repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams": { + /** + * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. + * + * Lists the teams who have push access to this branch. The list includes child teams. + */ + get: operations["repos/get-teams-with-access-to-protected-branch"]; + /** + * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. + * + * Replaces the list of teams that have push access to this branch. This removes all teams that previously had push access and grants push access to the new list of teams. Team restrictions include child teams. + * + * | Type | Description | + * | ------- | ------------------------------------------------------------------------------------------------------------------------------------------ | + * | `array` | The teams that can have push access. Use the team's `slug`. **Note**: The list of users, apps, and teams in total is limited to 100 items. | + */ + put: operations["repos/set-team-access-restrictions"]; + /** + * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. + * + * Grants the specified teams push access for this branch. You can also give push access to child teams. + * + * | Type | Description | + * | ------- | ------------------------------------------------------------------------------------------------------------------------------------------ | + * | `array` | The teams that can have push access. Use the team's `slug`. **Note**: The list of users, apps, and teams in total is limited to 100 items. | + */ + post: operations["repos/add-team-access-restrictions"]; + /** + * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. + * + * Removes the ability of a team to push to this branch. You can also remove push access for child teams. + * + * | Type | Description | + * | ------- | --------------------------------------------------------------------------------------------------------------------------------------------------- | + * | `array` | Teams that should no longer have push access. Use the team's `slug`. **Note**: The list of users, apps, and teams in total is limited to 100 items. | + */ + delete: operations["repos/remove-team-access-restrictions"]; + }; + "/repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users": { + /** + * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. + * + * Lists the people who have push access to this branch. + */ + get: operations["repos/get-users-with-access-to-protected-branch"]; + /** + * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. + * + * Replaces the list of people that have push access to this branch. This removes all people that previously had push access and grants push access to the new list of people. + * + * | Type | Description | + * | ------- | ----------------------------------------------------------------------------------------------------------------------------- | + * | `array` | Usernames for people who can have push access. **Note**: The list of users, apps, and teams in total is limited to 100 items. | + */ + put: operations["repos/set-user-access-restrictions"]; + /** + * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. + * + * Grants the specified people push access for this branch. + * + * | Type | Description | + * | ------- | ----------------------------------------------------------------------------------------------------------------------------- | + * | `array` | Usernames for people who can have push access. **Note**: The list of users, apps, and teams in total is limited to 100 items. | + */ + post: operations["repos/add-user-access-restrictions"]; + /** + * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. + * + * Removes the ability of a user to push to this branch. + * + * | Type | Description | + * | ------- | --------------------------------------------------------------------------------------------------------------------------------------------- | + * | `array` | Usernames of the people who should no longer have push access. **Note**: The list of users, apps, and teams in total is limited to 100 items. | + */ + delete: operations["repos/remove-user-access-restrictions"]; + }; + "/repos/{owner}/{repo}/branches/{branch}/rename": { + /** + * Renames a branch in a repository. + * + * **Note:** Although the API responds immediately, the branch rename process might take some extra time to complete in the background. You won't be able to push to the old branch name while the rename process is in progress. For more information, see "[Renaming a branch](https://docs.github.com/github/administering-a-repository/renaming-a-branch)". + * + * The permissions required to use this endpoint depends on whether you are renaming the default branch. + * + * To rename a non-default branch: + * + * * Users must have push access. + * * GitHub Apps must have the `contents:write` repository permission. + * + * To rename the default branch: + * + * * Users must have admin or owner permissions. + * * GitHub Apps must have the `administration:write` repository permission. + */ + post: operations["repos/rename-branch"]; + }; + "/repos/{owner}/{repo}/check-runs": { + /** + * **Note:** The Checks API only looks for pushes in the repository where the check suite or check run were created. Pushes to a branch in a forked repository are not detected and return an empty `pull_requests` array. + * + * Creates a new check run for a specific commit in a repository. Your GitHub App must have the `checks:write` permission to create check runs. + * + * In a check suite, GitHub limits the number of check runs with the same name to 1000. Once these check runs exceed 1000, GitHub will start to automatically delete older check runs. + */ + post: operations["checks/create"]; + }; + "/repos/{owner}/{repo}/check-runs/{check_run_id}": { + /** + * **Note:** The Checks API only looks for pushes in the repository where the check suite or check run were created. Pushes to a branch in a forked repository are not detected and return an empty `pull_requests` array. + * + * Gets a single check run using its `id`. GitHub Apps must have the `checks:read` permission on a private repository or pull access to a public repository to get check runs. OAuth Apps and authenticated users must have the `repo` scope to get check runs in a private repository. + */ + get: operations["checks/get"]; + /** + * **Note:** The Checks API only looks for pushes in the repository where the check suite or check run were created. Pushes to a branch in a forked repository are not detected and return an empty `pull_requests` array. + * + * Updates a check run for a specific commit in a repository. Your GitHub App must have the `checks:write` permission to edit check runs. + */ + patch: operations["checks/update"]; + }; + "/repos/{owner}/{repo}/check-runs/{check_run_id}/annotations": { + /** Lists annotations for a check run using the annotation `id`. GitHub Apps must have the `checks:read` permission on a private repository or pull access to a public repository to get annotations for a check run. OAuth Apps and authenticated users must have the `repo` scope to get annotations for a check run in a private repository. */ + get: operations["checks/list-annotations"]; + }; + "/repos/{owner}/{repo}/check-runs/{check_run_id}/rerequest": { + /** + * Triggers GitHub to rerequest an existing check run, without pushing new code to a repository. This endpoint will trigger the [`check_run` webhook](https://docs.github.com/webhooks/event-payloads/#check_run) event with the action `rerequested`. When a check run is `rerequested`, its `status` is reset to `queued` and the `conclusion` is cleared. + * + * To rerequest a check run, your GitHub App must have the `checks:read` permission on a private repository or pull access to a public repository. + */ + post: operations["checks/rerequest-run"]; + }; + "/repos/{owner}/{repo}/check-suites": { + /** + * **Note:** The Checks API only looks for pushes in the repository where the check suite or check run were created. Pushes to a branch in a forked repository are not detected and return an empty `pull_requests` array and a `null` value for `head_branch`. + * + * By default, check suites are automatically created when you create a [check run](https://docs.github.com/rest/reference/checks#check-runs). You only need to use this endpoint for manually creating check suites when you've disabled automatic creation using "[Update repository preferences for check suites](https://docs.github.com/rest/reference/checks#update-repository-preferences-for-check-suites)". Your GitHub App must have the `checks:write` permission to create check suites. + */ + post: operations["checks/create-suite"]; + }; + "/repos/{owner}/{repo}/check-suites/preferences": { + /** Changes the default automatic flow when creating check suites. By default, a check suite is automatically created each time code is pushed to a repository. When you disable the automatic creation of check suites, you can manually [Create a check suite](https://docs.github.com/rest/reference/checks#create-a-check-suite). You must have admin permissions in the repository to set preferences for check suites. */ + patch: operations["checks/set-suites-preferences"]; + }; + "/repos/{owner}/{repo}/check-suites/{check_suite_id}": { + /** + * **Note:** The Checks API only looks for pushes in the repository where the check suite or check run were created. Pushes to a branch in a forked repository are not detected and return an empty `pull_requests` array and a `null` value for `head_branch`. + * + * Gets a single check suite using its `id`. GitHub Apps must have the `checks:read` permission on a private repository or pull access to a public repository to get check suites. OAuth Apps and authenticated users must have the `repo` scope to get check suites in a private repository. + */ + get: operations["checks/get-suite"]; + }; + "/repos/{owner}/{repo}/check-suites/{check_suite_id}/check-runs": { + /** + * **Note:** The Checks API only looks for pushes in the repository where the check suite or check run were created. Pushes to a branch in a forked repository are not detected and return an empty `pull_requests` array. + * + * Lists check runs for a check suite using its `id`. GitHub Apps must have the `checks:read` permission on a private repository or pull access to a public repository to get check runs. OAuth Apps and authenticated users must have the `repo` scope to get check runs in a private repository. + */ + get: operations["checks/list-for-suite"]; + }; + "/repos/{owner}/{repo}/check-suites/{check_suite_id}/rerequest": { + /** + * Triggers GitHub to rerequest an existing check suite, without pushing new code to a repository. This endpoint will trigger the [`check_suite` webhook](https://docs.github.com/webhooks/event-payloads/#check_suite) event with the action `rerequested`. When a check suite is `rerequested`, its `status` is reset to `queued` and the `conclusion` is cleared. + * + * To rerequest a check suite, your GitHub App must have the `checks:read` permission on a private repository or pull access to a public repository. + */ + post: operations["checks/rerequest-suite"]; + }; + "/repos/{owner}/{repo}/code-scanning/alerts": { + /** + * Lists all open code scanning alerts for the default branch (usually `main` + * or `master`). You must use an access token with the `security_events` scope to use + * this endpoint with private repos, the `public_repo` scope also grants permission to read + * security events on public repos only. GitHub Apps must have the `security_events` read + * permission to use this endpoint. + * + * The response includes a `most_recent_instance` object. + * This provides details of the most recent instance of this alert + * for the default branch or for the specified Git reference + * (if you used `ref` in the request). + */ + get: operations["code-scanning/list-alerts-for-repo"]; + }; + "/repos/{owner}/{repo}/code-scanning/alerts/{alert_number}": { + /** + * Gets a single code scanning alert. You must use an access token with the `security_events` scope to use this endpoint with private repos, the `public_repo` scope also grants permission to read security events on public repos only. GitHub Apps must have the `security_events` read permission to use this endpoint. + * + * **Deprecation notice**: + * The instances field is deprecated and will, in future, not be included in the response for this endpoint. The example response reflects this change. The same information can now be retrieved via a GET request to the URL specified by `instances_url`. + */ + get: operations["code-scanning/get-alert"]; + /** Updates the status of a single code scanning alert. You must use an access token with the `security_events` scope to use this endpoint with private repositories. You can also use tokens with the `public_repo` scope for public repositories only. GitHub Apps must have the `security_events` write permission to use this endpoint. */ + patch: operations["code-scanning/update-alert"]; + }; + "/repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances": { + /** + * Lists all instances of the specified code scanning alert. + * You must use an access token with the `security_events` scope to use this endpoint with private repos, + * the `public_repo` scope also grants permission to read security events on public repos only. + * GitHub Apps must have the `security_events` read permission to use this endpoint. + */ + get: operations["code-scanning/list-alert-instances"]; + }; + "/repos/{owner}/{repo}/code-scanning/analyses": { + /** + * Lists the details of all code scanning analyses for a repository, + * starting with the most recent. + * The response is paginated and you can use the `page` and `per_page` parameters + * to list the analyses you're interested in. + * By default 30 analyses are listed per page. + * + * The `rules_count` field in the response give the number of rules + * that were run in the analysis. + * For very old analyses this data is not available, + * and `0` is returned in this field. + * + * You must use an access token with the `security_events` scope to use this endpoint with private repos, + * the `public_repo` scope also grants permission to read security events on public repos only. + * GitHub Apps must have the `security_events` read permission to use this endpoint. + * + * **Deprecation notice**: + * The `tool_name` field is deprecated and will, in future, not be included in the response for this endpoint. The example response reflects this change. The tool name can now be found inside the `tool` field. + */ + get: operations["code-scanning/list-recent-analyses"]; + }; + "/repos/{owner}/{repo}/code-scanning/analyses/{analysis_id}": { + /** + * Gets a specified code scanning analysis for a repository. + * You must use an access token with the `security_events` scope to use this endpoint with private repos, + * the `public_repo` scope also grants permission to read security events on public repos only. + * GitHub Apps must have the `security_events` read permission to use this endpoint. + * + * The default JSON response contains fields that describe the analysis. + * This includes the Git reference and commit SHA to which the analysis relates, + * the datetime of the analysis, the name of the code scanning tool, + * and the number of alerts. + * + * The `rules_count` field in the default response give the number of rules + * that were run in the analysis. + * For very old analyses this data is not available, + * and `0` is returned in this field. + * + * If you use the Accept header `application/sarif+json`, + * the response contains the analysis data that was uploaded. + * This is formatted as + * [SARIF version 2.1.0](https://docs.oasis-open.org/sarif/sarif/v2.1.0/cs01/sarif-v2.1.0-cs01.html). + */ + get: operations["code-scanning/get-analysis"]; + /** + * Deletes a specified code scanning analysis from a repository. For + * private repositories, you must use an access token with the `repo` scope. For public repositories, + * you must use an access token with `public_repo` scope. + * GitHub Apps must have the `security_events` write permission to use this endpoint. + * + * You can delete one analysis at a time. + * To delete a series of analyses, start with the most recent analysis and work backwards. + * Conceptually, the process is similar to the undo function in a text editor. + * + * When you list the analyses for a repository, + * one or more will be identified as deletable in the response: + * + * ``` + * "deletable": true + * ``` + * + * An analysis is deletable when it's the most recent in a set of analyses. + * Typically, a repository will have multiple sets of analyses + * for each enabled code scanning tool, + * where a set is determined by a unique combination of analysis values: + * + * * `ref` + * * `tool` + * * `analysis_key` + * * `environment` + * + * If you attempt to delete an analysis that is not the most recent in a set, + * you'll get a 400 response with the message: + * + * ``` + * Analysis specified is not deletable. + * ``` + * + * The response from a successful `DELETE` operation provides you with + * two alternative URLs for deleting the next analysis in the set: + * `next_analysis_url` and `confirm_delete_url`. + * Use the `next_analysis_url` URL if you want to avoid accidentally deleting the final analysis + * in a set. This is a useful option if you want to preserve at least one analysis + * for the specified tool in your repository. + * Use the `confirm_delete_url` URL if you are content to remove all analyses for a tool. + * When you delete the last analysis in a set, the value of `next_analysis_url` and `confirm_delete_url` + * in the 200 response is `null`. + * + * As an example of the deletion process, + * let's imagine that you added a workflow that configured a particular code scanning tool + * to analyze the code in a repository. This tool has added 15 analyses: + * 10 on the default branch, and another 5 on a topic branch. + * You therefore have two separate sets of analyses for this tool. + * You've now decided that you want to remove all of the analyses for the tool. + * To do this you must make 15 separate deletion requests. + * To start, you must find an analysis that's identified as deletable. + * Each set of analyses always has one that's identified as deletable. + * Having found the deletable analysis for one of the two sets, + * delete this analysis and then continue deleting the next analysis in the set until they're all deleted. + * Then repeat the process for the second set. + * The procedure therefore consists of a nested loop: + * + * **Outer loop**: + * * List the analyses for the repository, filtered by tool. + * * Parse this list to find a deletable analysis. If found: + * + * **Inner loop**: + * * Delete the identified analysis. + * * Parse the response for the value of `confirm_delete_url` and, if found, use this in the next iteration. + * + * The above process assumes that you want to remove all trace of the tool's analyses from the GitHub user interface, for the specified repository, and it therefore uses the `confirm_delete_url` value. Alternatively, you could use the `next_analysis_url` value, which would leave the last analysis in each set undeleted to avoid removing a tool's analysis entirely. + */ + delete: operations["code-scanning/delete-analysis"]; + }; + "/repos/{owner}/{repo}/code-scanning/sarifs": { + /** + * Uploads SARIF data containing the results of a code scanning analysis to make the results available in a repository. You must use an access token with the `security_events` scope to use this endpoint for private repositories. You can also use tokens with the `public_repo` scope for public repositories only. GitHub Apps must have the `security_events` write permission to use this endpoint. + * + * There are two places where you can upload code scanning results. + * - If you upload to a pull request, for example `--ref refs/pull/42/merge` or `--ref refs/pull/42/head`, then the results appear as alerts in a pull request check. For more information, see "[Triaging code scanning alerts in pull requests](/code-security/secure-coding/triaging-code-scanning-alerts-in-pull-requests)." + * - If you upload to a branch, for example `--ref refs/heads/my-branch`, then the results appear in the **Security** tab for your repository. For more information, see "[Managing code scanning alerts for your repository](/code-security/secure-coding/managing-code-scanning-alerts-for-your-repository#viewing-the-alerts-for-a-repository)." + * + * You must compress the SARIF-formatted analysis data that you want to upload, using `gzip`, and then encode it as a Base64 format string. For example: + * + * ``` + * gzip -c analysis-data.sarif | base64 -w0 + * ``` + * + * SARIF upload supports a maximum of 5000 results per analysis run. Any results over this limit are ignored and any SARIF uploads with more than 25,000 results are rejected. Typically, but not necessarily, a SARIF file contains a single run of a single tool. If a code scanning tool generates too many results, you should update the analysis configuration to run only the most important rules or queries. + * + * The `202 Accepted`, response includes an `id` value. + * You can use this ID to check the status of the upload by using this for the `/sarifs/{sarif_id}` endpoint. + * For more information, see "[Get information about a SARIF upload](/rest/reference/code-scanning#get-information-about-a-sarif-upload)." + */ + post: operations["code-scanning/upload-sarif"]; + }; + "/repos/{owner}/{repo}/code-scanning/sarifs/{sarif_id}": { + /** Gets information about a SARIF upload, including the status and the URL of the analysis that was uploaded so that you can retrieve details of the analysis. For more information, see "[Get a code scanning analysis for a repository](/rest/reference/code-scanning#get-a-code-scanning-analysis-for-a-repository)." You must use an access token with the `security_events` scope to use this endpoint with private repos, the `public_repo` scope also grants permission to read security events on public repos only. GitHub Apps must have the `security_events` read permission to use this endpoint. */ + get: operations["code-scanning/get-sarif"]; + }; + "/repos/{owner}/{repo}/codeowners/errors": { + /** + * List any syntax errors that are detected in the CODEOWNERS + * file. + * + * For more information about the correct CODEOWNERS syntax, + * see "[About code owners](https://docs.github.com/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/about-code-owners)." + */ + get: operations["repos/codeowners-errors"]; + }; + "/repos/{owner}/{repo}/codespaces": { + /** + * Lists the codespaces associated to a specified repository and the authenticated user. + * + * You must authenticate using an access token with the `codespace` scope to use this endpoint. + * + * GitHub Apps must have read access to the `codespaces` repository permission to use this endpoint. + */ + get: operations["codespaces/list-in-repository-for-authenticated-user"]; + /** + * Creates a codespace owned by the authenticated user in the specified repository. + * + * You must authenticate using an access token with the `codespace` scope to use this endpoint. + * + * GitHub Apps must have write access to the `codespaces` repository permission to use this endpoint. + */ + post: operations["codespaces/create-with-repo-for-authenticated-user"]; + }; + "/repos/{owner}/{repo}/codespaces/devcontainers": { + /** + * Lists the devcontainer.json files associated with a specified repository and the authenticated user. These files + * specify launchpoint configurations for codespaces created within the repository. + * + * You must authenticate using an access token with the `codespace` scope to use this endpoint. + * + * GitHub Apps must have read access to the `codespaces_metadata` repository permission to use this endpoint. + */ + get: operations["codespaces/list-devcontainers-in-repository-for-authenticated-user"]; + }; + "/repos/{owner}/{repo}/codespaces/machines": { + /** + * List the machine types available for a given repository based on its configuration. + * + * You must authenticate using an access token with the `codespace` scope to use this endpoint. + * + * GitHub Apps must have write access to the `codespaces_metadata` repository permission to use this endpoint. + */ + get: operations["codespaces/repo-machines-for-authenticated-user"]; + }; + "/repos/{owner}/{repo}/codespaces/new": { + /** + * Gets the default attributes for codespaces created by the user with the repository. + * + * You must authenticate using an access token with the `codespace` scope to use this endpoint. + * + * GitHub Apps must have write access to the `codespaces` repository permission to use this endpoint. + */ + get: operations["codespaces/pre-flight-with-repo-for-authenticated-user"]; + }; + "/repos/{owner}/{repo}/codespaces/secrets": { + /** Lists all secrets available in a repository without revealing their encrypted values. You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the `codespaces_secrets` repository permission to use this endpoint. */ + get: operations["codespaces/list-repo-secrets"]; + }; + "/repos/{owner}/{repo}/codespaces/secrets/public-key": { + /** Gets your public key, which you need to encrypt secrets. You need to encrypt a secret before you can create or update secrets. Anyone with read access to the repository can use this endpoint. If the repository is private you must use an access token with the `repo` scope. GitHub Apps must have the `codespaces_secrets` repository permission to use this endpoint. */ + get: operations["codespaces/get-repo-public-key"]; + }; + "/repos/{owner}/{repo}/codespaces/secrets/{secret_name}": { + /** Gets a single repository secret without revealing its encrypted value. You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the `codespaces_secrets` repository permission to use this endpoint. */ + get: operations["codespaces/get-repo-secret"]; + /** + * Creates or updates a repository secret with an encrypted value. Encrypt your secret using + * [LibSodium](https://libsodium.gitbook.io/doc/bindings_for_other_languages). You must authenticate using an access + * token with the `repo` scope to use this endpoint. GitHub Apps must have the `codespaces_secrets` repository + * permission to use this endpoint. + * + * #### Example of encrypting a secret using Node.js + * + * Encrypt your secret using the [tweetsodium](https://github.com/github/tweetsodium) library. + * + * ``` + * const sodium = require('tweetsodium'); + * + * const key = "base64-encoded-public-key"; + * const value = "plain-text-secret"; + * + * // Convert the message and key to Uint8Array's (Buffer implements that interface) + * const messageBytes = Buffer.from(value); + * const keyBytes = Buffer.from(key, 'base64'); + * + * // Encrypt using LibSodium. + * const encryptedBytes = sodium.seal(messageBytes, keyBytes); + * + * // Base64 the encrypted secret + * const encrypted = Buffer.from(encryptedBytes).toString('base64'); + * + * console.log(encrypted); + * ``` + * + * + * #### Example of encrypting a secret using Python + * + * Encrypt your secret using [pynacl](https://pynacl.readthedocs.io/en/latest/public/#nacl-public-sealedbox) with Python 3. + * + * ``` + * from base64 import b64encode + * from nacl import encoding, public + * + * def encrypt(public_key: str, secret_value: str) -> str: + * """Encrypt a Unicode string using the public key.""" + * public_key = public.PublicKey(public_key.encode("utf-8"), encoding.Base64Encoder()) + * sealed_box = public.SealedBox(public_key) + * encrypted = sealed_box.encrypt(secret_value.encode("utf-8")) + * return b64encode(encrypted).decode("utf-8") + * ``` + * + * #### Example of encrypting a secret using C# + * + * Encrypt your secret using the [Sodium.Core](https://www.nuget.org/packages/Sodium.Core/) package. + * + * ``` + * var secretValue = System.Text.Encoding.UTF8.GetBytes("mySecret"); + * var publicKey = Convert.FromBase64String("2Sg8iYjAxxmI2LvUXpJjkYrMxURPc8r+dB7TJyvvcCU="); + * + * var sealedPublicKeyBox = Sodium.SealedPublicKeyBox.Create(secretValue, publicKey); + * + * Console.WriteLine(Convert.ToBase64String(sealedPublicKeyBox)); + * ``` + * + * #### Example of encrypting a secret using Ruby + * + * Encrypt your secret using the [rbnacl](https://github.com/RubyCrypto/rbnacl) gem. + * + * ```ruby + * require "rbnacl" + * require "base64" + * + * key = Base64.decode64("+ZYvJDZMHUfBkJdyq5Zm9SKqeuBQ4sj+6sfjlH4CgG0=") + * public_key = RbNaCl::PublicKey.new(key) + * + * box = RbNaCl::Boxes::Sealed.from_public_key(public_key) + * encrypted_secret = box.encrypt("my_secret") + * + * # Print the base64 encoded secret + * puts Base64.strict_encode64(encrypted_secret) + * ``` + */ + put: operations["codespaces/create-or-update-repo-secret"]; + /** Deletes a secret in a repository using the secret name. You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the `codespaces_secrets` repository permission to use this endpoint. */ + delete: operations["codespaces/delete-repo-secret"]; + }; + "/repos/{owner}/{repo}/collaborators": { + /** + * For organization-owned repositories, the list of collaborators includes outside collaborators, organization members that are direct collaborators, organization members with access through team memberships, organization members with access through default organization permissions, and organization owners. + * Organization members with write, maintain, or admin privileges on the organization-owned repository can use this endpoint. + * + * Team members will include the members of child teams. + * + * You must authenticate using an access token with the `read:org` and `repo` scopes with push access to use this + * endpoint. GitHub Apps must have the `members` organization permission and `metadata` repository permission to use this + * endpoint. + */ + get: operations["repos/list-collaborators"]; + }; + "/repos/{owner}/{repo}/collaborators/{username}": { + /** + * For organization-owned repositories, the list of collaborators includes outside collaborators, organization members that are direct collaborators, organization members with access through team memberships, organization members with access through default organization permissions, and organization owners. + * + * Team members will include the members of child teams. + * + * You must authenticate using an access token with the `read:org` and `repo` scopes with push access to use this + * endpoint. GitHub Apps must have the `members` organization permission and `metadata` repository permission to use this + * endpoint. + */ + get: operations["repos/check-collaborator"]; + /** + * This endpoint triggers [notifications](https://docs.github.com/github/managing-subscriptions-and-notifications-on-github/about-notifications). Creating content too quickly using this endpoint may result in secondary rate limiting. See "[Secondary rate limits](https://docs.github.com/rest/overview/resources-in-the-rest-api#secondary-rate-limits)" and "[Dealing with secondary rate limits](https://docs.github.com/rest/guides/best-practices-for-integrators#dealing-with-secondary-rate-limits)" for details. + * + * Adding an outside collaborator may be restricted by enterprise administrators. For more information, see "[Enforcing repository management policies in your enterprise](https://docs.github.com/enterprise-cloud@latest/admin/policies/enforcing-policies-for-your-enterprise/enforcing-repository-management-policies-in-your-enterprise#enforcing-a-policy-for-inviting-outside-collaborators-to-repositories)." + * + * For more information on permission levels, see "[Repository permission levels for an organization](https://docs.github.com/github/setting-up-and-managing-organizations-and-teams/repository-permission-levels-for-an-organization#permission-levels-for-repositories-owned-by-an-organization)". There are restrictions on which permissions can be granted to organization members when an organization base role is in place. In this case, the permission being given must be equal to or higher than the org base permission. Otherwise, the request will fail with: + * + * ``` + * Cannot assign {member} permission of {role name} + * ``` + * + * Note that, if you choose not to pass any parameters, you'll need to set `Content-Length` to zero when calling out to this endpoint. For more information, see "[HTTP verbs](https://docs.github.com/rest/overview/resources-in-the-rest-api#http-verbs)." + * + * The invitee will receive a notification that they have been invited to the repository, which they must accept or decline. They may do this via the notifications page, the email they receive, or by using the [repository invitations API endpoints](https://docs.github.com/rest/reference/repos#invitations). + * + * **Updating an existing collaborator's permission level** + * + * The endpoint can also be used to change the permissions of an existing collaborator without first removing and re-adding the collaborator. To change the permissions, use the same endpoint and pass a different `permission` parameter. The response will be a `204`, with no other indication that the permission level changed. + * + * **Rate limits** + * + * You are limited to sending 50 invitations to a repository per 24 hour period. Note there is no limit if you are inviting organization members to an organization repository. + */ + put: operations["repos/add-collaborator"]; + delete: operations["repos/remove-collaborator"]; + }; + "/repos/{owner}/{repo}/collaborators/{username}/permission": { + /** Checks the repository permission of a collaborator. The possible repository permissions are `admin`, `write`, `read`, and `none`. */ + get: operations["repos/get-collaborator-permission-level"]; + }; + "/repos/{owner}/{repo}/comments": { + /** + * Commit Comments use [these custom media types](https://docs.github.com/rest/reference/repos#custom-media-types). You can read more about the use of media types in the API [here](https://docs.github.com/rest/overview/media-types/). + * + * Comments are ordered by ascending ID. + */ + get: operations["repos/list-commit-comments-for-repo"]; + }; + "/repos/{owner}/{repo}/comments/{comment_id}": { + get: operations["repos/get-commit-comment"]; + delete: operations["repos/delete-commit-comment"]; + patch: operations["repos/update-commit-comment"]; + }; + "/repos/{owner}/{repo}/comments/{comment_id}/reactions": { + /** List the reactions to a [commit comment](https://docs.github.com/rest/reference/repos#comments). */ + get: operations["reactions/list-for-commit-comment"]; + /** Create a reaction to a [commit comment](https://docs.github.com/rest/reference/repos#comments). A response with an HTTP `200` status means that you already added the reaction type to this commit comment. */ + post: operations["reactions/create-for-commit-comment"]; + }; + "/repos/{owner}/{repo}/comments/{comment_id}/reactions/{reaction_id}": { + /** + * **Note:** You can also specify a repository by `repository_id` using the route `DELETE /repositories/:repository_id/comments/:comment_id/reactions/:reaction_id`. + * + * Delete a reaction to a [commit comment](https://docs.github.com/rest/reference/repos#comments). + */ + delete: operations["reactions/delete-for-commit-comment"]; + }; + "/repos/{owner}/{repo}/commits": { + /** + * **Signature verification object** + * + * The response will include a `verification` object that describes the result of verifying the commit's signature. The following fields are included in the `verification` object: + * + * | Name | Type | Description | + * | ---- | ---- | ----------- | + * | `verified` | `boolean` | Indicates whether GitHub considers the signature in this commit to be verified. | + * | `reason` | `string` | The reason for verified value. Possible values and their meanings are enumerated in table below. | + * | `signature` | `string` | The signature that was extracted from the commit. | + * | `payload` | `string` | The value that was signed. | + * + * These are the possible values for `reason` in the `verification` object: + * + * | Value | Description | + * | ----- | ----------- | + * | `expired_key` | The key that made the signature is expired. | + * | `not_signing_key` | The "signing" flag is not among the usage flags in the GPG key that made the signature. | + * | `gpgverify_error` | There was an error communicating with the signature verification service. | + * | `gpgverify_unavailable` | The signature verification service is currently unavailable. | + * | `unsigned` | The object does not include a signature. | + * | `unknown_signature_type` | A non-PGP signature was found in the commit. | + * | `no_user` | No user was associated with the `committer` email address in the commit. | + * | `unverified_email` | The `committer` email address in the commit was associated with a user, but the email address is not verified on her/his account. | + * | `bad_email` | The `committer` email address in the commit is not included in the identities of the PGP key that made the signature. | + * | `unknown_key` | The key that made the signature has not been registered with any user's account. | + * | `malformed_signature` | There was an error parsing the signature. | + * | `invalid` | The signature could not be cryptographically verified using the key whose key-id was found in the signature. | + * | `valid` | None of the above errors applied, so the signature is considered to be verified. | + */ + get: operations["repos/list-commits"]; + }; + "/repos/{owner}/{repo}/commits/{commit_sha}/branches-where-head": { + /** + * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. + * + * Returns all branches where the given commit SHA is the HEAD, or latest commit for the branch. + */ + get: operations["repos/list-branches-for-head-commit"]; + }; + "/repos/{owner}/{repo}/commits/{commit_sha}/comments": { + /** Use the `:commit_sha` to specify the commit that will have its comments listed. */ + get: operations["repos/list-comments-for-commit"]; + /** + * Create a comment for a commit using its `:commit_sha`. + * + * This endpoint triggers [notifications](https://docs.github.com/en/github/managing-subscriptions-and-notifications-on-github/about-notifications). Creating content too quickly using this endpoint may result in secondary rate limiting. See "[Secondary rate limits](https://docs.github.com/rest/overview/resources-in-the-rest-api#secondary-rate-limits)" and "[Dealing with secondary rate limits](https://docs.github.com/rest/guides/best-practices-for-integrators#dealing-with-secondary-rate-limits)" for details. + */ + post: operations["repos/create-commit-comment"]; + }; + "/repos/{owner}/{repo}/commits/{commit_sha}/pulls": { + /** Lists the merged pull request that introduced the commit to the repository. If the commit is not present in the default branch, additionally returns open pull requests associated with the commit. The results may include open and closed pull requests. */ + get: operations["repos/list-pull-requests-associated-with-commit"]; + }; + "/repos/{owner}/{repo}/commits/{ref}": { + /** + * Returns the contents of a single commit reference. You must have `read` access for the repository to use this endpoint. + * + * **Note:** If there are more than 300 files in the commit diff, the response will include pagination link headers for the remaining files, up to a limit of 3000 files. Each page contains the static commit information, and the only changes are to the file listing. + * + * You can pass the appropriate [media type](https://docs.github.com/rest/overview/media-types/#commits-commit-comparison-and-pull-requests) to fetch `diff` and `patch` formats. Diffs with binary data will have no `patch` property. + * + * To return only the SHA-1 hash of the commit reference, you can provide the `sha` custom [media type](https://docs.github.com/rest/overview/media-types/#commits-commit-comparison-and-pull-requests) in the `Accept` header. You can use this endpoint to check if a remote reference's SHA-1 hash is the same as your local reference's SHA-1 hash by providing the local SHA-1 reference as the ETag. + * + * **Signature verification object** + * + * The response will include a `verification` object that describes the result of verifying the commit's signature. The following fields are included in the `verification` object: + * + * | Name | Type | Description | + * | ---- | ---- | ----------- | + * | `verified` | `boolean` | Indicates whether GitHub considers the signature in this commit to be verified. | + * | `reason` | `string` | The reason for verified value. Possible values and their meanings are enumerated in table below. | + * | `signature` | `string` | The signature that was extracted from the commit. | + * | `payload` | `string` | The value that was signed. | + * + * These are the possible values for `reason` in the `verification` object: + * + * | Value | Description | + * | ----- | ----------- | + * | `expired_key` | The key that made the signature is expired. | + * | `not_signing_key` | The "signing" flag is not among the usage flags in the GPG key that made the signature. | + * | `gpgverify_error` | There was an error communicating with the signature verification service. | + * | `gpgverify_unavailable` | The signature verification service is currently unavailable. | + * | `unsigned` | The object does not include a signature. | + * | `unknown_signature_type` | A non-PGP signature was found in the commit. | + * | `no_user` | No user was associated with the `committer` email address in the commit. | + * | `unverified_email` | The `committer` email address in the commit was associated with a user, but the email address is not verified on her/his account. | + * | `bad_email` | The `committer` email address in the commit is not included in the identities of the PGP key that made the signature. | + * | `unknown_key` | The key that made the signature has not been registered with any user's account. | + * | `malformed_signature` | There was an error parsing the signature. | + * | `invalid` | The signature could not be cryptographically verified using the key whose key-id was found in the signature. | + * | `valid` | None of the above errors applied, so the signature is considered to be verified. | + */ + get: operations["repos/get-commit"]; + }; + "/repos/{owner}/{repo}/commits/{ref}/check-runs": { + /** + * **Note:** The Checks API only looks for pushes in the repository where the check suite or check run were created. Pushes to a branch in a forked repository are not detected and return an empty `pull_requests` array. + * + * Lists check runs for a commit ref. The `ref` can be a SHA, branch name, or a tag name. GitHub Apps must have the `checks:read` permission on a private repository or pull access to a public repository to get check runs. OAuth Apps and authenticated users must have the `repo` scope to get check runs in a private repository. + */ + get: operations["checks/list-for-ref"]; + }; + "/repos/{owner}/{repo}/commits/{ref}/check-suites": { + /** + * **Note:** The Checks API only looks for pushes in the repository where the check suite or check run were created. Pushes to a branch in a forked repository are not detected and return an empty `pull_requests` array and a `null` value for `head_branch`. + * + * Lists check suites for a commit `ref`. The `ref` can be a SHA, branch name, or a tag name. GitHub Apps must have the `checks:read` permission on a private repository or pull access to a public repository to list check suites. OAuth Apps and authenticated users must have the `repo` scope to get check suites in a private repository. + */ + get: operations["checks/list-suites-for-ref"]; + }; + "/repos/{owner}/{repo}/commits/{ref}/status": { + /** + * Users with pull access in a repository can access a combined view of commit statuses for a given ref. The ref can be a SHA, a branch name, or a tag name. + * + * + * Additionally, a combined `state` is returned. The `state` is one of: + * + * * **failure** if any of the contexts report as `error` or `failure` + * * **pending** if there are no statuses or a context is `pending` + * * **success** if the latest status for all contexts is `success` + */ + get: operations["repos/get-combined-status-for-ref"]; + }; + "/repos/{owner}/{repo}/commits/{ref}/statuses": { + /** + * Users with pull access in a repository can view commit statuses for a given ref. The ref can be a SHA, a branch name, or a tag name. Statuses are returned in reverse chronological order. The first status in the list will be the latest one. + * + * This resource is also available via a legacy route: `GET /repos/:owner/:repo/statuses/:ref`. + */ + get: operations["repos/list-commit-statuses-for-ref"]; + }; + "/repos/{owner}/{repo}/community/profile": { + /** + * This endpoint will return all community profile metrics, including an + * overall health score, repository description, the presence of documentation, detected + * code of conduct, detected license, and the presence of ISSUE\_TEMPLATE, PULL\_REQUEST\_TEMPLATE, + * README, and CONTRIBUTING files. + * + * The `health_percentage` score is defined as a percentage of how many of + * these four documents are present: README, CONTRIBUTING, LICENSE, and + * CODE_OF_CONDUCT. For example, if all four documents are present, then + * the `health_percentage` is `100`. If only one is present, then the + * `health_percentage` is `25`. + * + * `content_reports_enabled` is only returned for organization-owned repositories. + */ + get: operations["repos/get-community-profile-metrics"]; + }; + "/repos/{owner}/{repo}/compare/{basehead}": { + /** + * The `basehead` param is comprised of two parts: `base` and `head`. Both must be branch names in `repo`. To compare branches across other repositories in the same network as `repo`, use the format `:branch`. + * + * The response from the API is equivalent to running the `git log base..head` command; however, commits are returned in chronological order. Pass the appropriate [media type](https://docs.github.com/rest/overview/media-types/#commits-commit-comparison-and-pull-requests) to fetch diff and patch formats. + * + * The response also includes details on the files that were changed between the two commits. This includes the status of the change (for example, if a file was added, removed, modified, or renamed), and details of the change itself. For example, files with a `renamed` status have a `previous_filename` field showing the previous filename of the file, and files with a `modified` status have a `patch` field showing the changes made to the file. + * + * **Working with large comparisons** + * + * To process a response with a large number of commits, you can use (`per_page` or `page`) to paginate the results. When using paging, the list of changed files is only returned with page 1, but includes all changed files for the entire comparison. For more information on working with pagination, see "[Traversing with pagination](/rest/guides/traversing-with-pagination)." + * + * When calling this API without any paging parameters (`per_page` or `page`), the returned list is limited to 250 commits and the last commit in the list is the most recent of the entire comparison. When a paging parameter is specified, the first commit in the returned list of each page is the earliest. + * + * **Signature verification object** + * + * The response will include a `verification` object that describes the result of verifying the commit's signature. The following fields are included in the `verification` object: + * + * | Name | Type | Description | + * | ---- | ---- | ----------- | + * | `verified` | `boolean` | Indicates whether GitHub considers the signature in this commit to be verified. | + * | `reason` | `string` | The reason for verified value. Possible values and their meanings are enumerated in table below. | + * | `signature` | `string` | The signature that was extracted from the commit. | + * | `payload` | `string` | The value that was signed. | + * + * These are the possible values for `reason` in the `verification` object: + * + * | Value | Description | + * | ----- | ----------- | + * | `expired_key` | The key that made the signature is expired. | + * | `not_signing_key` | The "signing" flag is not among the usage flags in the GPG key that made the signature. | + * | `gpgverify_error` | There was an error communicating with the signature verification service. | + * | `gpgverify_unavailable` | The signature verification service is currently unavailable. | + * | `unsigned` | The object does not include a signature. | + * | `unknown_signature_type` | A non-PGP signature was found in the commit. | + * | `no_user` | No user was associated with the `committer` email address in the commit. | + * | `unverified_email` | The `committer` email address in the commit was associated with a user, but the email address is not verified on her/his account. | + * | `bad_email` | The `committer` email address in the commit is not included in the identities of the PGP key that made the signature. | + * | `unknown_key` | The key that made the signature has not been registered with any user's account. | + * | `malformed_signature` | There was an error parsing the signature. | + * | `invalid` | The signature could not be cryptographically verified using the key whose key-id was found in the signature. | + * | `valid` | None of the above errors applied, so the signature is considered to be verified. | + */ + get: operations["repos/compare-commits-with-basehead"]; + }; + "/repos/{owner}/{repo}/contents/{path}": { + /** + * Gets the contents of a file or directory in a repository. Specify the file path or directory in `:path`. If you omit + * `:path`, you will receive the contents of the repository's root directory. See the description below regarding what the API response includes for directories. + * + * Files and symlinks support [a custom media type](https://docs.github.com/rest/reference/repos#custom-media-types) for + * retrieving the raw content or rendered HTML (when supported). All content types support [a custom media + * type](https://docs.github.com/rest/reference/repos#custom-media-types) to ensure the content is returned in a consistent + * object format. + * + * **Note**: + * * To get a repository's contents recursively, you can [recursively get the tree](https://docs.github.com/rest/reference/git#trees). + * * This API has an upper limit of 1,000 files for a directory. If you need to retrieve more files, use the [Git Trees + * API](https://docs.github.com/rest/reference/git#get-a-tree). + * + * #### Size limits + * If the requested file's size is: + * * 1 MB or smaller: All features of this endpoint are supported. + * * Between 1-100 MB: Only the `raw` or `object` [custom media types](https://docs.github.com/rest/repos/contents#custom-media-types-for-repository-contents) are supported. Both will work as normal, except that when using the `object` media type, the `content` field will be an empty string and the `encoding` field will be `"none"`. To get the contents of these larger files, use the `raw` media type. + * * Greater than 100 MB: This endpoint is not supported. + * + * #### If the content is a directory + * The response will be an array of objects, one object for each item in the directory. + * When listing the contents of a directory, submodules have their "type" specified as "file". Logically, the value + * _should_ be "submodule". This behavior exists in API v3 [for backwards compatibility purposes](https://git.io/v1YCW). + * In the next major version of the API, the type will be returned as "submodule". + * + * #### If the content is a symlink + * If the requested `:path` points to a symlink, and the symlink's target is a normal file in the repository, then the + * API responds with the content of the file (in the format shown in the example. Otherwise, the API responds with an object + * describing the symlink itself. + * + * #### If the content is a submodule + * The `submodule_git_url` identifies the location of the submodule repository, and the `sha` identifies a specific + * commit within the submodule repository. Git uses the given URL when cloning the submodule repository, and checks out + * the submodule at that specific commit. + * + * If the submodule repository is not hosted on github.com, the Git URLs (`git_url` and `_links["git"]`) and the + * github.com URLs (`html_url` and `_links["html"]`) will have null values. + */ + get: operations["repos/get-content"]; + /** Creates a new file or replaces an existing file in a repository. */ + put: operations["repos/create-or-update-file-contents"]; + /** + * Deletes a file in a repository. + * + * You can provide an additional `committer` parameter, which is an object containing information about the committer. Or, you can provide an `author` parameter, which is an object containing information about the author. + * + * The `author` section is optional and is filled in with the `committer` information if omitted. If the `committer` information is omitted, the authenticated user's information is used. + * + * You must provide values for both `name` and `email`, whether you choose to use `author` or `committer`. Otherwise, you'll receive a `422` status code. + */ + delete: operations["repos/delete-file"]; + }; + "/repos/{owner}/{repo}/contributors": { + /** + * Lists contributors to the specified repository and sorts them by the number of commits per contributor in descending order. This endpoint may return information that is a few hours old because the GitHub REST API v3 caches contributor data to improve performance. + * + * GitHub identifies contributors by author email address. This endpoint groups contribution counts by GitHub user, which includes all associated email addresses. To improve performance, only the first 500 author email addresses in the repository link to GitHub users. The rest will appear as anonymous contributors without associated GitHub user information. + */ + get: operations["repos/list-contributors"]; + }; + "/repos/{owner}/{repo}/dependabot/secrets": { + /** Lists all secrets available in a repository without revealing their encrypted values. You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the `dependabot_secrets` repository permission to use this endpoint. */ + get: operations["dependabot/list-repo-secrets"]; + }; + "/repos/{owner}/{repo}/dependabot/secrets/public-key": { + /** Gets your public key, which you need to encrypt secrets. You need to encrypt a secret before you can create or update secrets. Anyone with read access to the repository can use this endpoint. If the repository is private you must use an access token with the `repo` scope. GitHub Apps must have the `dependabot_secrets` repository permission to use this endpoint. */ + get: operations["dependabot/get-repo-public-key"]; + }; + "/repos/{owner}/{repo}/dependabot/secrets/{secret_name}": { + /** Gets a single repository secret without revealing its encrypted value. You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the `dependabot_secrets` repository permission to use this endpoint. */ + get: operations["dependabot/get-repo-secret"]; + /** + * Creates or updates a repository secret with an encrypted value. Encrypt your secret using + * [LibSodium](https://libsodium.gitbook.io/doc/bindings_for_other_languages). You must authenticate using an access + * token with the `repo` scope to use this endpoint. GitHub Apps must have the `dependabot_secrets` repository + * permission to use this endpoint. + * + * #### Example encrypting a secret using Node.js + * + * Encrypt your secret using the [tweetsodium](https://github.com/github/tweetsodium) library. + * + * ``` + * const sodium = require('tweetsodium'); + * + * const key = "base64-encoded-public-key"; + * const value = "plain-text-secret"; + * + * // Convert the message and key to Uint8Array's (Buffer implements that interface) + * const messageBytes = Buffer.from(value); + * const keyBytes = Buffer.from(key, 'base64'); + * + * // Encrypt using LibSodium. + * const encryptedBytes = sodium.seal(messageBytes, keyBytes); + * + * // Base64 the encrypted secret + * const encrypted = Buffer.from(encryptedBytes).toString('base64'); + * + * console.log(encrypted); + * ``` + * + * + * #### Example encrypting a secret using Python + * + * Encrypt your secret using [pynacl](https://pynacl.readthedocs.io/en/latest/public/#nacl-public-sealedbox) with Python 3. + * + * ``` + * from base64 import b64encode + * from nacl import encoding, public + * + * def encrypt(public_key: str, secret_value: str) -> str: + * """Encrypt a Unicode string using the public key.""" + * public_key = public.PublicKey(public_key.encode("utf-8"), encoding.Base64Encoder()) + * sealed_box = public.SealedBox(public_key) + * encrypted = sealed_box.encrypt(secret_value.encode("utf-8")) + * return b64encode(encrypted).decode("utf-8") + * ``` + * + * #### Example encrypting a secret using C# + * + * Encrypt your secret using the [Sodium.Core](https://www.nuget.org/packages/Sodium.Core/) package. + * + * ``` + * var secretValue = System.Text.Encoding.UTF8.GetBytes("mySecret"); + * var publicKey = Convert.FromBase64String("2Sg8iYjAxxmI2LvUXpJjkYrMxURPc8r+dB7TJyvvcCU="); + * + * var sealedPublicKeyBox = Sodium.SealedPublicKeyBox.Create(secretValue, publicKey); + * + * Console.WriteLine(Convert.ToBase64String(sealedPublicKeyBox)); + * ``` + * + * #### Example encrypting a secret using Ruby + * + * Encrypt your secret using the [rbnacl](https://github.com/RubyCrypto/rbnacl) gem. + * + * ```ruby + * require "rbnacl" + * require "base64" + * + * key = Base64.decode64("+ZYvJDZMHUfBkJdyq5Zm9SKqeuBQ4sj+6sfjlH4CgG0=") + * public_key = RbNaCl::PublicKey.new(key) + * + * box = RbNaCl::Boxes::Sealed.from_public_key(public_key) + * encrypted_secret = box.encrypt("my_secret") + * + * # Print the base64 encoded secret + * puts Base64.strict_encode64(encrypted_secret) + * ``` + */ + put: operations["dependabot/create-or-update-repo-secret"]; + /** Deletes a secret in a repository using the secret name. You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the `dependabot_secrets` repository permission to use this endpoint. */ + delete: operations["dependabot/delete-repo-secret"]; + }; + "/repos/{owner}/{repo}/dependency-graph/compare/{basehead}": { + /** Gets the diff of the dependency changes between two commits of a repository, based on the changes to the dependency manifests made in those commits. */ + get: operations["dependency-graph/diff-range"]; + }; + "/repos/{owner}/{repo}/dependency-graph/snapshots": { + /** Create a new snapshot of a repository's dependencies. You must authenticate using an access token with the `repo` scope to use this endpoint for a repository that the requesting user has access to. */ + post: operations["dependency-graph/create-repository-snapshot"]; + }; + "/repos/{owner}/{repo}/deployments": { + /** Simple filtering of deployments is available via query parameters: */ + get: operations["repos/list-deployments"]; + /** + * Deployments offer a few configurable parameters with certain defaults. + * + * The `ref` parameter can be any named branch, tag, or SHA. At GitHub we often deploy branches and verify them + * before we merge a pull request. + * + * The `environment` parameter allows deployments to be issued to different runtime environments. Teams often have + * multiple environments for verifying their applications, such as `production`, `staging`, and `qa`. This parameter + * makes it easier to track which environments have requested deployments. The default environment is `production`. + * + * The `auto_merge` parameter is used to ensure that the requested ref is not behind the repository's default branch. If + * the ref _is_ behind the default branch for the repository, we will attempt to merge it for you. If the merge succeeds, + * the API will return a successful merge commit. If merge conflicts prevent the merge from succeeding, the API will + * return a failure response. + * + * By default, [commit statuses](https://docs.github.com/rest/commits/statuses) for every submitted context must be in a `success` + * state. The `required_contexts` parameter allows you to specify a subset of contexts that must be `success`, or to + * specify contexts that have not yet been submitted. You are not required to use commit statuses to deploy. If you do + * not require any contexts or create any commit statuses, the deployment will always succeed. + * + * The `payload` parameter is available for any extra information that a deployment system might need. It is a JSON text + * field that will be passed on when a deployment event is dispatched. + * + * The `task` parameter is used by the deployment system to allow different execution paths. In the web world this might + * be `deploy:migrations` to run schema changes on the system. In the compiled world this could be a flag to compile an + * application with debugging enabled. + * + * Users with `repo` or `repo_deployment` scopes can create a deployment for a given ref. + * + * #### Merged branch response + * You will see this response when GitHub automatically merges the base branch into the topic branch instead of creating + * a deployment. This auto-merge happens when: + * * Auto-merge option is enabled in the repository + * * Topic branch does not include the latest changes on the base branch, which is `master` in the response example + * * There are no merge conflicts + * + * If there are no new commits in the base branch, a new request to create a deployment should give a successful + * response. + * + * #### Merge conflict response + * This error happens when the `auto_merge` option is enabled and when the default branch (in this case `master`), can't + * be merged into the branch that's being deployed (in this case `topic-branch`), due to merge conflicts. + * + * #### Failed commit status checks + * This error happens when the `required_contexts` parameter indicates that one or more contexts need to have a `success` + * status for the commit to be deployed, but one or more of the required contexts do not have a state of `success`. + */ + post: operations["repos/create-deployment"]; + }; + "/repos/{owner}/{repo}/deployments/{deployment_id}": { + get: operations["repos/get-deployment"]; + /** + * If the repository only has one deployment, you can delete the deployment regardless of its status. If the repository has more than one deployment, you can only delete inactive deployments. This ensures that repositories with multiple deployments will always have an active deployment. Anyone with `repo` or `repo_deployment` scopes can delete a deployment. + * + * To set a deployment as inactive, you must: + * + * * Create a new deployment that is active so that the system has a record of the current state, then delete the previously active deployment. + * * Mark the active deployment as inactive by adding any non-successful deployment status. + * + * For more information, see "[Create a deployment](https://docs.github.com/rest/reference/repos/#create-a-deployment)" and "[Create a deployment status](https://docs.github.com/rest/reference/repos#create-a-deployment-status)." + */ + delete: operations["repos/delete-deployment"]; + }; + "/repos/{owner}/{repo}/deployments/{deployment_id}/statuses": { + /** Users with pull access can view deployment statuses for a deployment: */ + get: operations["repos/list-deployment-statuses"]; + /** + * Users with `push` access can create deployment statuses for a given deployment. + * + * GitHub Apps require `read & write` access to "Deployments" and `read-only` access to "Repo contents" (for private repos). OAuth Apps require the `repo_deployment` scope. + */ + post: operations["repos/create-deployment-status"]; + }; + "/repos/{owner}/{repo}/deployments/{deployment_id}/statuses/{status_id}": { + /** Users with pull access can view a deployment status for a deployment: */ + get: operations["repos/get-deployment-status"]; + }; + "/repos/{owner}/{repo}/dispatches": { + /** + * You can use this endpoint to trigger a webhook event called `repository_dispatch` when you want activity that happens outside of GitHub to trigger a GitHub Actions workflow or GitHub App webhook. You must configure your GitHub Actions workflow or GitHub App to run when the `repository_dispatch` event occurs. For an example `repository_dispatch` webhook payload, see "[RepositoryDispatchEvent](https://docs.github.com/webhooks/event-payloads/#repository_dispatch)." + * + * The `client_payload` parameter is available for any extra information that your workflow might need. This parameter is a JSON payload that will be passed on when the webhook event is dispatched. For example, the `client_payload` can include a message that a user would like to send using a GitHub Actions workflow. Or the `client_payload` can be used as a test to debug your workflow. + * + * This endpoint requires write access to the repository by providing either: + * + * - Personal access tokens with `repo` scope. For more information, see "[Creating a personal access token for the command line](https://docs.github.com/articles/creating-a-personal-access-token-for-the-command-line)" in the GitHub Help documentation. + * - GitHub Apps with both `metadata:read` and `contents:read&write` permissions. + * + * This input example shows how you can use the `client_payload` as a test to debug your workflow. + */ + post: operations["repos/create-dispatch-event"]; + }; + "/repos/{owner}/{repo}/environments": { + /** + * Get all environments for a repository. + * + * Anyone with read access to the repository can use this endpoint. If the repository is private, you must use an access token with the `repo` scope. GitHub Apps must have the `actions:read` permission to use this endpoint. + */ + get: operations["repos/get-all-environments"]; + }; + "/repos/{owner}/{repo}/environments/{environment_name}": { + /** Anyone with read access to the repository can use this endpoint. If the repository is private, you must use an access token with the `repo` scope. GitHub Apps must have the `actions:read` permission to use this endpoint. */ + get: operations["repos/get-environment"]; + /** + * Create or update an environment with protection rules, such as required reviewers. For more information about environment protection rules, see "[Environments](/actions/reference/environments#environment-protection-rules)." + * + * **Note:** Although you can use this operation to specify that only branches that match specified name patterns can deploy to this environment, you must use the UI to set the name patterns. For more information, see "[Environments](/actions/reference/environments#deployment-branches)." + * + * **Note:** To create or update secrets for an environment, see "[Secrets](/rest/reference/actions#secrets)." + * + * You must authenticate using an access token with the repo scope to use this endpoint. + */ + put: operations["repos/create-or-update-environment"]; + /** You must authenticate using an access token with the repo scope to use this endpoint. */ + delete: operations["repos/delete-an-environment"]; + }; + "/repos/{owner}/{repo}/events": { + get: operations["activity/list-repo-events"]; + }; + "/repos/{owner}/{repo}/forks": { + get: operations["repos/list-forks"]; + /** + * Create a fork for the authenticated user. + * + * **Note**: Forking a Repository happens asynchronously. You may have to wait a short period of time before you can access the git objects. If this takes longer than 5 minutes, be sure to contact [GitHub Support](https://support.github.com/contact?tags=dotcom-rest-api). + */ + post: operations["repos/create-fork"]; + }; + "/repos/{owner}/{repo}/git/blobs": { + post: operations["git/create-blob"]; + }; + "/repos/{owner}/{repo}/git/blobs/{file_sha}": { + /** + * The `content` in the response will always be Base64 encoded. + * + * _Note_: This API supports blobs up to 100 megabytes in size. + */ + get: operations["git/get-blob"]; + }; + "/repos/{owner}/{repo}/git/commits": { + /** + * Creates a new Git [commit object](https://git-scm.com/book/en/v1/Git-Internals-Git-Objects#Commit-Objects). + * + * **Signature verification object** + * + * The response will include a `verification` object that describes the result of verifying the commit's signature. The following fields are included in the `verification` object: + * + * | Name | Type | Description | + * | ---- | ---- | ----------- | + * | `verified` | `boolean` | Indicates whether GitHub considers the signature in this commit to be verified. | + * | `reason` | `string` | The reason for verified value. Possible values and their meanings are enumerated in the table below. | + * | `signature` | `string` | The signature that was extracted from the commit. | + * | `payload` | `string` | The value that was signed. | + * + * These are the possible values for `reason` in the `verification` object: + * + * | Value | Description | + * | ----- | ----------- | + * | `expired_key` | The key that made the signature is expired. | + * | `not_signing_key` | The "signing" flag is not among the usage flags in the GPG key that made the signature. | + * | `gpgverify_error` | There was an error communicating with the signature verification service. | + * | `gpgverify_unavailable` | The signature verification service is currently unavailable. | + * | `unsigned` | The object does not include a signature. | + * | `unknown_signature_type` | A non-PGP signature was found in the commit. | + * | `no_user` | No user was associated with the `committer` email address in the commit. | + * | `unverified_email` | The `committer` email address in the commit was associated with a user, but the email address is not verified on her/his account. | + * | `bad_email` | The `committer` email address in the commit is not included in the identities of the PGP key that made the signature. | + * | `unknown_key` | The key that made the signature has not been registered with any user's account. | + * | `malformed_signature` | There was an error parsing the signature. | + * | `invalid` | The signature could not be cryptographically verified using the key whose key-id was found in the signature. | + * | `valid` | None of the above errors applied, so the signature is considered to be verified. | + */ + post: operations["git/create-commit"]; + }; + "/repos/{owner}/{repo}/git/commits/{commit_sha}": { + /** + * Gets a Git [commit object](https://git-scm.com/book/en/v1/Git-Internals-Git-Objects#Commit-Objects). + * + * **Signature verification object** + * + * The response will include a `verification` object that describes the result of verifying the commit's signature. The following fields are included in the `verification` object: + * + * | Name | Type | Description | + * | ---- | ---- | ----------- | + * | `verified` | `boolean` | Indicates whether GitHub considers the signature in this commit to be verified. | + * | `reason` | `string` | The reason for verified value. Possible values and their meanings are enumerated in the table below. | + * | `signature` | `string` | The signature that was extracted from the commit. | + * | `payload` | `string` | The value that was signed. | + * + * These are the possible values for `reason` in the `verification` object: + * + * | Value | Description | + * | ----- | ----------- | + * | `expired_key` | The key that made the signature is expired. | + * | `not_signing_key` | The "signing" flag is not among the usage flags in the GPG key that made the signature. | + * | `gpgverify_error` | There was an error communicating with the signature verification service. | + * | `gpgverify_unavailable` | The signature verification service is currently unavailable. | + * | `unsigned` | The object does not include a signature. | + * | `unknown_signature_type` | A non-PGP signature was found in the commit. | + * | `no_user` | No user was associated with the `committer` email address in the commit. | + * | `unverified_email` | The `committer` email address in the commit was associated with a user, but the email address is not verified on her/his account. | + * | `bad_email` | The `committer` email address in the commit is not included in the identities of the PGP key that made the signature. | + * | `unknown_key` | The key that made the signature has not been registered with any user's account. | + * | `malformed_signature` | There was an error parsing the signature. | + * | `invalid` | The signature could not be cryptographically verified using the key whose key-id was found in the signature. | + * | `valid` | None of the above errors applied, so the signature is considered to be verified. | + */ + get: operations["git/get-commit"]; + }; + "/repos/{owner}/{repo}/git/matching-refs/{ref}": { + /** + * Returns an array of references from your Git database that match the supplied name. The `:ref` in the URL must be formatted as `heads/` for branches and `tags/` for tags. If the `:ref` doesn't exist in the repository, but existing refs start with `:ref`, they will be returned as an array. + * + * When you use this endpoint without providing a `:ref`, it will return an array of all the references from your Git database, including notes and stashes if they exist on the server. Anything in the namespace is returned, not just `heads` and `tags`. + * + * **Note:** You need to explicitly [request a pull request](https://docs.github.com/rest/reference/pulls#get-a-pull-request) to trigger a test merge commit, which checks the mergeability of pull requests. For more information, see "[Checking mergeability of pull requests](https://docs.github.com/rest/guides/getting-started-with-the-git-database-api#checking-mergeability-of-pull-requests)". + * + * If you request matching references for a branch named `feature` but the branch `feature` doesn't exist, the response can still include other matching head refs that start with the word `feature`, such as `featureA` and `featureB`. + */ + get: operations["git/list-matching-refs"]; + }; + "/repos/{owner}/{repo}/git/ref/{ref}": { + /** + * Returns a single reference from your Git database. The `:ref` in the URL must be formatted as `heads/` for branches and `tags/` for tags. If the `:ref` doesn't match an existing ref, a `404` is returned. + * + * **Note:** You need to explicitly [request a pull request](https://docs.github.com/rest/reference/pulls#get-a-pull-request) to trigger a test merge commit, which checks the mergeability of pull requests. For more information, see "[Checking mergeability of pull requests](https://docs.github.com/rest/guides/getting-started-with-the-git-database-api#checking-mergeability-of-pull-requests)". + */ + get: operations["git/get-ref"]; + }; + "/repos/{owner}/{repo}/git/refs": { + /** Creates a reference for your repository. You are unable to create new references for empty repositories, even if the commit SHA-1 hash used exists. Empty repositories are repositories without branches. */ + post: operations["git/create-ref"]; + }; + "/repos/{owner}/{repo}/git/refs/{ref}": { + delete: operations["git/delete-ref"]; + patch: operations["git/update-ref"]; + }; + "/repos/{owner}/{repo}/git/tags": { + /** + * Note that creating a tag object does not create the reference that makes a tag in Git. If you want to create an annotated tag in Git, you have to do this call to create the tag object, and then [create](https://docs.github.com/rest/reference/git#create-a-reference) the `refs/tags/[tag]` reference. If you want to create a lightweight tag, you only have to [create](https://docs.github.com/rest/reference/git#create-a-reference) the tag reference - this call would be unnecessary. + * + * **Signature verification object** + * + * The response will include a `verification` object that describes the result of verifying the commit's signature. The following fields are included in the `verification` object: + * + * | Name | Type | Description | + * | ---- | ---- | ----------- | + * | `verified` | `boolean` | Indicates whether GitHub considers the signature in this commit to be verified. | + * | `reason` | `string` | The reason for verified value. Possible values and their meanings are enumerated in table below. | + * | `signature` | `string` | The signature that was extracted from the commit. | + * | `payload` | `string` | The value that was signed. | + * + * These are the possible values for `reason` in the `verification` object: + * + * | Value | Description | + * | ----- | ----------- | + * | `expired_key` | The key that made the signature is expired. | + * | `not_signing_key` | The "signing" flag is not among the usage flags in the GPG key that made the signature. | + * | `gpgverify_error` | There was an error communicating with the signature verification service. | + * | `gpgverify_unavailable` | The signature verification service is currently unavailable. | + * | `unsigned` | The object does not include a signature. | + * | `unknown_signature_type` | A non-PGP signature was found in the commit. | + * | `no_user` | No user was associated with the `committer` email address in the commit. | + * | `unverified_email` | The `committer` email address in the commit was associated with a user, but the email address is not verified on her/his account. | + * | `bad_email` | The `committer` email address in the commit is not included in the identities of the PGP key that made the signature. | + * | `unknown_key` | The key that made the signature has not been registered with any user's account. | + * | `malformed_signature` | There was an error parsing the signature. | + * | `invalid` | The signature could not be cryptographically verified using the key whose key-id was found in the signature. | + * | `valid` | None of the above errors applied, so the signature is considered to be verified. | + */ + post: operations["git/create-tag"]; + }; + "/repos/{owner}/{repo}/git/tags/{tag_sha}": { + /** + * **Signature verification object** + * + * The response will include a `verification` object that describes the result of verifying the commit's signature. The following fields are included in the `verification` object: + * + * | Name | Type | Description | + * | ---- | ---- | ----------- | + * | `verified` | `boolean` | Indicates whether GitHub considers the signature in this commit to be verified. | + * | `reason` | `string` | The reason for verified value. Possible values and their meanings are enumerated in table below. | + * | `signature` | `string` | The signature that was extracted from the commit. | + * | `payload` | `string` | The value that was signed. | + * + * These are the possible values for `reason` in the `verification` object: + * + * | Value | Description | + * | ----- | ----------- | + * | `expired_key` | The key that made the signature is expired. | + * | `not_signing_key` | The "signing" flag is not among the usage flags in the GPG key that made the signature. | + * | `gpgverify_error` | There was an error communicating with the signature verification service. | + * | `gpgverify_unavailable` | The signature verification service is currently unavailable. | + * | `unsigned` | The object does not include a signature. | + * | `unknown_signature_type` | A non-PGP signature was found in the commit. | + * | `no_user` | No user was associated with the `committer` email address in the commit. | + * | `unverified_email` | The `committer` email address in the commit was associated with a user, but the email address is not verified on her/his account. | + * | `bad_email` | The `committer` email address in the commit is not included in the identities of the PGP key that made the signature. | + * | `unknown_key` | The key that made the signature has not been registered with any user's account. | + * | `malformed_signature` | There was an error parsing the signature. | + * | `invalid` | The signature could not be cryptographically verified using the key whose key-id was found in the signature. | + * | `valid` | None of the above errors applied, so the signature is considered to be verified. | + */ + get: operations["git/get-tag"]; + }; + "/repos/{owner}/{repo}/git/trees": { + /** + * The tree creation API accepts nested entries. If you specify both a tree and a nested path modifying that tree, this endpoint will overwrite the contents of the tree with the new path contents, and create a new tree structure. + * + * If you use this endpoint to add, delete, or modify the file contents in a tree, you will need to commit the tree and then update a branch to point to the commit. For more information see "[Create a commit](https://docs.github.com/rest/reference/git#create-a-commit)" and "[Update a reference](https://docs.github.com/rest/reference/git#update-a-reference)." + */ + post: operations["git/create-tree"]; + }; + "/repos/{owner}/{repo}/git/trees/{tree_sha}": { + /** + * Returns a single tree using the SHA1 value for that tree. + * + * If `truncated` is `true` in the response then the number of items in the `tree` array exceeded our maximum limit. If you need to fetch more items, use the non-recursive method of fetching trees, and fetch one sub-tree at a time. + */ + get: operations["git/get-tree"]; + }; + "/repos/{owner}/{repo}/hooks": { + get: operations["repos/list-webhooks"]; + /** + * Repositories can have multiple webhooks installed. Each webhook should have a unique `config`. Multiple webhooks can + * share the same `config` as long as those webhooks do not have any `events` that overlap. + */ + post: operations["repos/create-webhook"]; + }; + "/repos/{owner}/{repo}/hooks/{hook_id}": { + /** Returns a webhook configured in a repository. To get only the webhook `config` properties, see "[Get a webhook configuration for a repository](/rest/reference/repos#get-a-webhook-configuration-for-a-repository)." */ + get: operations["repos/get-webhook"]; + delete: operations["repos/delete-webhook"]; + /** Updates a webhook configured in a repository. If you previously had a `secret` set, you must provide the same `secret` or set a new `secret` or the secret will be removed. If you are only updating individual webhook `config` properties, use "[Update a webhook configuration for a repository](/rest/reference/repos#update-a-webhook-configuration-for-a-repository)." */ + patch: operations["repos/update-webhook"]; + }; + "/repos/{owner}/{repo}/hooks/{hook_id}/config": { + /** + * Returns the webhook configuration for a repository. To get more information about the webhook, including the `active` state and `events`, use "[Get a repository webhook](/rest/reference/orgs#get-a-repository-webhook)." + * + * Access tokens must have the `read:repo_hook` or `repo` scope, and GitHub Apps must have the `repository_hooks:read` permission. + */ + get: operations["repos/get-webhook-config-for-repo"]; + /** + * Updates the webhook configuration for a repository. To update more information about the webhook, including the `active` state and `events`, use "[Update a repository webhook](/rest/reference/orgs#update-a-repository-webhook)." + * + * Access tokens must have the `write:repo_hook` or `repo` scope, and GitHub Apps must have the `repository_hooks:write` permission. + */ + patch: operations["repos/update-webhook-config-for-repo"]; + }; + "/repos/{owner}/{repo}/hooks/{hook_id}/deliveries": { + /** Returns a list of webhook deliveries for a webhook configured in a repository. */ + get: operations["repos/list-webhook-deliveries"]; + }; + "/repos/{owner}/{repo}/hooks/{hook_id}/deliveries/{delivery_id}": { + /** Returns a delivery for a webhook configured in a repository. */ + get: operations["repos/get-webhook-delivery"]; + }; + "/repos/{owner}/{repo}/hooks/{hook_id}/deliveries/{delivery_id}/attempts": { + /** Redeliver a webhook delivery for a webhook configured in a repository. */ + post: operations["repos/redeliver-webhook-delivery"]; + }; + "/repos/{owner}/{repo}/hooks/{hook_id}/pings": { + /** This will trigger a [ping event](https://docs.github.com/webhooks/#ping-event) to be sent to the hook. */ + post: operations["repos/ping-webhook"]; + }; + "/repos/{owner}/{repo}/hooks/{hook_id}/tests": { + /** + * This will trigger the hook with the latest push to the current repository if the hook is subscribed to `push` events. If the hook is not subscribed to `push` events, the server will respond with 204 but no test POST will be generated. + * + * **Note**: Previously `/repos/:owner/:repo/hooks/:hook_id/test` + */ + post: operations["repos/test-push-webhook"]; + }; + "/repos/{owner}/{repo}/import": { + /** + * View the progress of an import. + * + * **Import status** + * + * This section includes details about the possible values of the `status` field of the Import Progress response. + * + * An import that does not have errors will progress through these steps: + * + * * `detecting` - the "detection" step of the import is in progress because the request did not include a `vcs` parameter. The import is identifying the type of source control present at the URL. + * * `importing` - the "raw" step of the import is in progress. This is where commit data is fetched from the original repository. The import progress response will include `commit_count` (the total number of raw commits that will be imported) and `percent` (0 - 100, the current progress through the import). + * * `mapping` - the "rewrite" step of the import is in progress. This is where SVN branches are converted to Git branches, and where author updates are applied. The import progress response does not include progress information. + * * `pushing` - the "push" step of the import is in progress. This is where the importer updates the repository on GitHub. The import progress response will include `push_percent`, which is the percent value reported by `git push` when it is "Writing objects". + * * `complete` - the import is complete, and the repository is ready on GitHub. + * + * If there are problems, you will see one of these in the `status` field: + * + * * `auth_failed` - the import requires authentication in order to connect to the original repository. To update authentication for the import, please see the [Update an import](https://docs.github.com/rest/reference/migrations#update-an-import) section. + * * `error` - the import encountered an error. The import progress response will include the `failed_step` and an error message. Contact [GitHub Support](https://support.github.com/contact?tags=dotcom-rest-api) for more information. + * * `detection_needs_auth` - the importer requires authentication for the originating repository to continue detection. To update authentication for the import, please see the [Update an import](https://docs.github.com/rest/reference/migrations#update-an-import) section. + * * `detection_found_nothing` - the importer didn't recognize any source control at the URL. To resolve, [Cancel the import](https://docs.github.com/rest/reference/migrations#cancel-an-import) and [retry](https://docs.github.com/rest/reference/migrations#start-an-import) with the correct URL. + * * `detection_found_multiple` - the importer found several projects or repositories at the provided URL. When this is the case, the Import Progress response will also include a `project_choices` field with the possible project choices as values. To update project choice, please see the [Update an import](https://docs.github.com/rest/reference/migrations#update-an-import) section. + * + * **The project_choices field** + * + * When multiple projects are found at the provided URL, the response hash will include a `project_choices` field, the value of which is an array of hashes each representing a project choice. The exact key/value pairs of the project hashes will differ depending on the version control type. + * + * **Git LFS related fields** + * + * This section includes details about Git LFS related fields that may be present in the Import Progress response. + * + * * `use_lfs` - describes whether the import has been opted in or out of using Git LFS. The value can be `opt_in`, `opt_out`, or `undecided` if no action has been taken. + * * `has_large_files` - the boolean value describing whether files larger than 100MB were found during the `importing` step. + * * `large_files_size` - the total size in gigabytes of files larger than 100MB found in the originating repository. + * * `large_files_count` - the total number of files larger than 100MB found in the originating repository. To see a list of these files, make a "Get Large Files" request. + */ + get: operations["migrations/get-import-status"]; + /** Start a source import to a GitHub repository using GitHub Importer. */ + put: operations["migrations/start-import"]; + /** Stop an import for a repository. */ + delete: operations["migrations/cancel-import"]; + /** + * An import can be updated with credentials or a project choice by passing in the appropriate parameters in this API + * request. If no parameters are provided, the import will be restarted. + * + * Some servers (e.g. TFS servers) can have several projects at a single URL. In those cases the import progress will + * have the status `detection_found_multiple` and the Import Progress response will include a `project_choices` array. + * You can select the project to import by providing one of the objects in the `project_choices` array in the update request. + */ + patch: operations["migrations/update-import"]; + }; + "/repos/{owner}/{repo}/import/authors": { + /** + * Each type of source control system represents authors in a different way. For example, a Git commit author has a display name and an email address, but a Subversion commit author just has a username. The GitHub Importer will make the author information valid, but the author might not be correct. For example, it will change the bare Subversion username `hubot` into something like `hubot `. + * + * This endpoint and the [Map a commit author](https://docs.github.com/rest/reference/migrations#map-a-commit-author) endpoint allow you to provide correct Git author information. + */ + get: operations["migrations/get-commit-authors"]; + }; + "/repos/{owner}/{repo}/import/authors/{author_id}": { + /** Update an author's identity for the import. Your application can continue updating authors any time before you push new commits to the repository. */ + patch: operations["migrations/map-commit-author"]; + }; + "/repos/{owner}/{repo}/import/large_files": { + /** List files larger than 100MB found during the import */ + get: operations["migrations/get-large-files"]; + }; + "/repos/{owner}/{repo}/import/lfs": { + /** You can import repositories from Subversion, Mercurial, and TFS that include files larger than 100MB. This ability is powered by [Git LFS](https://git-lfs.github.com). You can learn more about our LFS feature and working with large files [on our help site](https://docs.github.com/articles/versioning-large-files/). */ + patch: operations["migrations/set-lfs-preference"]; + }; + "/repos/{owner}/{repo}/installation": { + /** + * Enables an authenticated GitHub App to find the repository's installation information. The installation's account type will be either an organization or a user account, depending which account the repository belongs to. + * + * You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. + */ + get: operations["apps/get-repo-installation"]; + }; + "/repos/{owner}/{repo}/interaction-limits": { + /** Shows which type of GitHub user can interact with this repository and when the restriction expires. If there are no restrictions, you will see an empty response. */ + get: operations["interactions/get-restrictions-for-repo"]; + /** Temporarily restricts interactions to a certain type of GitHub user within the given repository. You must have owner or admin access to set these restrictions. If an interaction limit is set for the user or organization that owns this repository, you will receive a `409 Conflict` response and will not be able to use this endpoint to change the interaction limit for a single repository. */ + put: operations["interactions/set-restrictions-for-repo"]; + /** Removes all interaction restrictions from the given repository. You must have owner or admin access to remove restrictions. If the interaction limit is set for the user or organization that owns this repository, you will receive a `409 Conflict` response and will not be able to use this endpoint to change the interaction limit for a single repository. */ + delete: operations["interactions/remove-restrictions-for-repo"]; + }; + "/repos/{owner}/{repo}/invitations": { + /** When authenticating as a user with admin rights to a repository, this endpoint will list all currently open repository invitations. */ + get: operations["repos/list-invitations"]; + }; + "/repos/{owner}/{repo}/invitations/{invitation_id}": { + delete: operations["repos/delete-invitation"]; + patch: operations["repos/update-invitation"]; + }; + "/repos/{owner}/{repo}/issues": { + /** + * List issues in a repository. + * + * **Note**: GitHub's REST API v3 considers every pull request an issue, but not every issue is a pull request. For this + * reason, "Issues" endpoints may return both issues and pull requests in the response. You can identify pull requests by + * the `pull_request` key. Be aware that the `id` of a pull request returned from "Issues" endpoints will be an _issue id_. To find out the pull + * request id, use the "[List pull requests](https://docs.github.com/rest/reference/pulls#list-pull-requests)" endpoint. + */ + get: operations["issues/list-for-repo"]; + /** + * Any user with pull access to a repository can create an issue. If [issues are disabled in the repository](https://docs.github.com/articles/disabling-issues/), the API returns a `410 Gone` status. + * + * This endpoint triggers [notifications](https://docs.github.com/github/managing-subscriptions-and-notifications-on-github/about-notifications). Creating content too quickly using this endpoint may result in secondary rate limiting. See "[Secondary rate limits](https://docs.github.com/rest/overview/resources-in-the-rest-api#secondary-rate-limits)" and "[Dealing with secondary rate limits](https://docs.github.com/rest/guides/best-practices-for-integrators#dealing-with-secondary-rate-limits)" for details. + */ + post: operations["issues/create"]; + }; + "/repos/{owner}/{repo}/issues/comments": { + /** By default, Issue Comments are ordered by ascending ID. */ + get: operations["issues/list-comments-for-repo"]; + }; + "/repos/{owner}/{repo}/issues/comments/{comment_id}": { + get: operations["issues/get-comment"]; + delete: operations["issues/delete-comment"]; + patch: operations["issues/update-comment"]; + }; + "/repos/{owner}/{repo}/issues/comments/{comment_id}/reactions": { + /** List the reactions to an [issue comment](https://docs.github.com/rest/reference/issues#comments). */ + get: operations["reactions/list-for-issue-comment"]; + /** Create a reaction to an [issue comment](https://docs.github.com/rest/reference/issues#comments). A response with an HTTP `200` status means that you already added the reaction type to this issue comment. */ + post: operations["reactions/create-for-issue-comment"]; + }; + "/repos/{owner}/{repo}/issues/comments/{comment_id}/reactions/{reaction_id}": { + /** + * **Note:** You can also specify a repository by `repository_id` using the route `DELETE delete /repositories/:repository_id/issues/comments/:comment_id/reactions/:reaction_id`. + * + * Delete a reaction to an [issue comment](https://docs.github.com/rest/reference/issues#comments). + */ + delete: operations["reactions/delete-for-issue-comment"]; + }; + "/repos/{owner}/{repo}/issues/events": { + get: operations["issues/list-events-for-repo"]; + }; + "/repos/{owner}/{repo}/issues/events/{event_id}": { + get: operations["issues/get-event"]; + }; + "/repos/{owner}/{repo}/issues/{issue_number}": { + /** + * The API returns a [`301 Moved Permanently` status](https://docs.github.com/rest/overview/resources-in-the-rest-api#http-redirects-redirects) if the issue was + * [transferred](https://docs.github.com/articles/transferring-an-issue-to-another-repository/) to another repository. If + * the issue was transferred to or deleted from a repository where the authenticated user lacks read access, the API + * returns a `404 Not Found` status. If the issue was deleted from a repository where the authenticated user has read + * access, the API returns a `410 Gone` status. To receive webhook events for transferred and deleted issues, subscribe + * to the [`issues`](https://docs.github.com/webhooks/event-payloads/#issues) webhook. + * + * **Note**: GitHub's REST API v3 considers every pull request an issue, but not every issue is a pull request. For this + * reason, "Issues" endpoints may return both issues and pull requests in the response. You can identify pull requests by + * the `pull_request` key. Be aware that the `id` of a pull request returned from "Issues" endpoints will be an _issue id_. To find out the pull + * request id, use the "[List pull requests](https://docs.github.com/rest/reference/pulls#list-pull-requests)" endpoint. + */ + get: operations["issues/get"]; + /** Issue owners and users with push access can edit an issue. */ + patch: operations["issues/update"]; + }; + "/repos/{owner}/{repo}/issues/{issue_number}/assignees": { + /** Adds up to 10 assignees to an issue. Users already assigned to an issue are not replaced. */ + post: operations["issues/add-assignees"]; + /** Removes one or more assignees from an issue. */ + delete: operations["issues/remove-assignees"]; + }; + "/repos/{owner}/{repo}/issues/{issue_number}/comments": { + /** Issue Comments are ordered by ascending ID. */ + get: operations["issues/list-comments"]; + /** This endpoint triggers [notifications](https://docs.github.com/github/managing-subscriptions-and-notifications-on-github/about-notifications). Creating content too quickly using this endpoint may result in secondary rate limiting. See "[Secondary rate limits](https://docs.github.com/rest/overview/resources-in-the-rest-api#secondary-rate-limits)" and "[Dealing with secondary rate limits](https://docs.github.com/rest/guides/best-practices-for-integrators#dealing-with-secondary-rate-limits)" for details. */ + post: operations["issues/create-comment"]; + }; + "/repos/{owner}/{repo}/issues/{issue_number}/events": { + get: operations["issues/list-events"]; + }; + "/repos/{owner}/{repo}/issues/{issue_number}/labels": { + get: operations["issues/list-labels-on-issue"]; + /** Removes any previous labels and sets the new labels for an issue. */ + put: operations["issues/set-labels"]; + post: operations["issues/add-labels"]; + delete: operations["issues/remove-all-labels"]; + }; + "/repos/{owner}/{repo}/issues/{issue_number}/labels/{name}": { + /** Removes the specified label from the issue, and returns the remaining labels on the issue. This endpoint returns a `404 Not Found` status if the label does not exist. */ + delete: operations["issues/remove-label"]; + }; + "/repos/{owner}/{repo}/issues/{issue_number}/lock": { + /** + * Users with push access can lock an issue or pull request's conversation. + * + * Note that, if you choose not to pass any parameters, you'll need to set `Content-Length` to zero when calling out to this endpoint. For more information, see "[HTTP verbs](https://docs.github.com/rest/overview/resources-in-the-rest-api#http-verbs)." + */ + put: operations["issues/lock"]; + /** Users with push access can unlock an issue's conversation. */ + delete: operations["issues/unlock"]; + }; + "/repos/{owner}/{repo}/issues/{issue_number}/reactions": { + /** List the reactions to an [issue](https://docs.github.com/rest/reference/issues). */ + get: operations["reactions/list-for-issue"]; + /** Create a reaction to an [issue](https://docs.github.com/rest/reference/issues/). A response with an HTTP `200` status means that you already added the reaction type to this issue. */ + post: operations["reactions/create-for-issue"]; + }; + "/repos/{owner}/{repo}/issues/{issue_number}/reactions/{reaction_id}": { + /** + * **Note:** You can also specify a repository by `repository_id` using the route `DELETE /repositories/:repository_id/issues/:issue_number/reactions/:reaction_id`. + * + * Delete a reaction to an [issue](https://docs.github.com/rest/reference/issues/). + */ + delete: operations["reactions/delete-for-issue"]; + }; + "/repos/{owner}/{repo}/issues/{issue_number}/timeline": { + get: operations["issues/list-events-for-timeline"]; + }; + "/repos/{owner}/{repo}/keys": { + get: operations["repos/list-deploy-keys"]; + /** You can create a read-only deploy key. */ + post: operations["repos/create-deploy-key"]; + }; + "/repos/{owner}/{repo}/keys/{key_id}": { + get: operations["repos/get-deploy-key"]; + /** Deploy keys are immutable. If you need to update a key, remove the key and create a new one instead. */ + delete: operations["repos/delete-deploy-key"]; + }; + "/repos/{owner}/{repo}/labels": { + get: operations["issues/list-labels-for-repo"]; + post: operations["issues/create-label"]; + }; + "/repos/{owner}/{repo}/labels/{name}": { + get: operations["issues/get-label"]; + delete: operations["issues/delete-label"]; + patch: operations["issues/update-label"]; + }; + "/repos/{owner}/{repo}/languages": { + /** Lists languages for the specified repository. The value shown for each language is the number of bytes of code written in that language. */ + get: operations["repos/list-languages"]; + }; + "/repos/{owner}/{repo}/lfs": { + put: operations["repos/enable-lfs-for-repo"]; + delete: operations["repos/disable-lfs-for-repo"]; + }; + "/repos/{owner}/{repo}/license": { + /** + * This method returns the contents of the repository's license file, if one is detected. + * + * Similar to [Get repository content](https://docs.github.com/rest/reference/repos#get-repository-content), this method also supports [custom media types](https://docs.github.com/rest/overview/media-types) for retrieving the raw license content or rendered license HTML. + */ + get: operations["licenses/get-for-repo"]; + }; + "/repos/{owner}/{repo}/merge-upstream": { + /** Sync a branch of a forked repository to keep it up-to-date with the upstream repository. */ + post: operations["repos/merge-upstream"]; + }; + "/repos/{owner}/{repo}/merges": { + post: operations["repos/merge"]; + }; + "/repos/{owner}/{repo}/milestones": { + get: operations["issues/list-milestones"]; + post: operations["issues/create-milestone"]; + }; + "/repos/{owner}/{repo}/milestones/{milestone_number}": { + get: operations["issues/get-milestone"]; + delete: operations["issues/delete-milestone"]; + patch: operations["issues/update-milestone"]; + }; + "/repos/{owner}/{repo}/milestones/{milestone_number}/labels": { + get: operations["issues/list-labels-for-milestone"]; + }; + "/repos/{owner}/{repo}/notifications": { + /** List all notifications for the current user. */ + get: operations["activity/list-repo-notifications-for-authenticated-user"]; + /** Marks all notifications in a repository as "read" removes them from the [default view on GitHub](https://github.com/notifications). If the number of notifications is too large to complete in one request, you will receive a `202 Accepted` status and GitHub will run an asynchronous process to mark notifications as "read." To check whether any "unread" notifications remain, you can use the [List repository notifications for the authenticated user](https://docs.github.com/rest/reference/activity#list-repository-notifications-for-the-authenticated-user) endpoint and pass the query parameter `all=false`. */ + put: operations["activity/mark-repo-notifications-as-read"]; + }; + "/repos/{owner}/{repo}/pages": { + get: operations["repos/get-pages"]; + /** Updates information for a GitHub Pages site. For more information, see "[About GitHub Pages](/github/working-with-github-pages/about-github-pages). */ + put: operations["repos/update-information-about-pages-site"]; + /** Configures a GitHub Pages site. For more information, see "[About GitHub Pages](/github/working-with-github-pages/about-github-pages)." */ + post: operations["repos/create-pages-site"]; + delete: operations["repos/delete-pages-site"]; + }; + "/repos/{owner}/{repo}/pages/builds": { + get: operations["repos/list-pages-builds"]; + /** + * You can request that your site be built from the latest revision on the default branch. This has the same effect as pushing a commit to your default branch, but does not require an additional commit. Manually triggering page builds can be helpful when diagnosing build warnings and failures. + * + * Build requests are limited to one concurrent build per repository and one concurrent build per requester. If you request a build while another is still in progress, the second request will be queued until the first completes. + */ + post: operations["repos/request-pages-build"]; + }; + "/repos/{owner}/{repo}/pages/builds/latest": { + get: operations["repos/get-latest-pages-build"]; + }; + "/repos/{owner}/{repo}/pages/builds/{build_id}": { + get: operations["repos/get-pages-build"]; + }; + "/repos/{owner}/{repo}/pages/health": { + /** + * Gets a health check of the DNS settings for the `CNAME` record configured for a repository's GitHub Pages. + * + * The first request to this endpoint returns a `202 Accepted` status and starts an asynchronous background task to get the results for the domain. After the background task completes, subsequent requests to this endpoint return a `200 OK` status with the health check results in the response. + * + * Users must have admin or owner permissions. GitHub Apps must have the `pages:write` and `administration:write` permission to use this endpoint. + */ + get: operations["repos/get-pages-health-check"]; + }; + "/repos/{owner}/{repo}/projects": { + /** Lists the projects in a repository. Returns a `404 Not Found` status if projects are disabled in the repository. If you do not have sufficient privileges to perform this action, a `401 Unauthorized` or `410 Gone` status is returned. */ + get: operations["projects/list-for-repo"]; + /** Creates a repository project board. Returns a `410 Gone` status if projects are disabled in the repository or if the repository does not have existing classic projects. If you do not have sufficient privileges to perform this action, a `401 Unauthorized` or `410 Gone` status is returned. */ + post: operations["projects/create-for-repo"]; + }; + "/repos/{owner}/{repo}/pulls": { + /** Draft pull requests are available in public repositories with GitHub Free and GitHub Free for organizations, GitHub Pro, and legacy per-repository billing plans, and in public and private repositories with GitHub Team and GitHub Enterprise Cloud. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. */ + get: operations["pulls/list"]; + /** + * Draft pull requests are available in public repositories with GitHub Free and GitHub Free for organizations, GitHub Pro, and legacy per-repository billing plans, and in public and private repositories with GitHub Team and GitHub Enterprise Cloud. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. + * + * To open or update a pull request in a public repository, you must have write access to the head or the source branch. For organization-owned repositories, you must be a member of the organization that owns the repository to open or update a pull request. + * + * You can create a new pull request. + * + * This endpoint triggers [notifications](https://docs.github.com/en/github/managing-subscriptions-and-notifications-on-github/about-notifications). Creating content too quickly using this endpoint may result in secondary rate limiting. See "[Secondary rate limits](https://docs.github.com/rest/overview/resources-in-the-rest-api#secondary-rate-limits)" and "[Dealing with secondary rate limits](https://docs.github.com/rest/guides/best-practices-for-integrators#dealing-with-rate-limits)" for details. + */ + post: operations["pulls/create"]; + }; + "/repos/{owner}/{repo}/pulls/comments": { + /** Lists review comments for all pull requests in a repository. By default, review comments are in ascending order by ID. */ + get: operations["pulls/list-review-comments-for-repo"]; + }; + "/repos/{owner}/{repo}/pulls/comments/{comment_id}": { + /** Provides details for a review comment. */ + get: operations["pulls/get-review-comment"]; + /** Deletes a review comment. */ + delete: operations["pulls/delete-review-comment"]; + /** Enables you to edit a review comment. */ + patch: operations["pulls/update-review-comment"]; + }; + "/repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions": { + /** List the reactions to a [pull request review comment](https://docs.github.com/rest/reference/pulls#review-comments). */ + get: operations["reactions/list-for-pull-request-review-comment"]; + /** Create a reaction to a [pull request review comment](https://docs.github.com/rest/reference/pulls#comments). A response with an HTTP `200` status means that you already added the reaction type to this pull request review comment. */ + post: operations["reactions/create-for-pull-request-review-comment"]; + }; + "/repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions/{reaction_id}": { + /** + * **Note:** You can also specify a repository by `repository_id` using the route `DELETE /repositories/:repository_id/pulls/comments/:comment_id/reactions/:reaction_id.` + * + * Delete a reaction to a [pull request review comment](https://docs.github.com/rest/reference/pulls#review-comments). + */ + delete: operations["reactions/delete-for-pull-request-comment"]; + }; + "/repos/{owner}/{repo}/pulls/{pull_number}": { + /** + * Draft pull requests are available in public repositories with GitHub Free and GitHub Free for organizations, GitHub Pro, and legacy per-repository billing plans, and in public and private repositories with GitHub Team and GitHub Enterprise Cloud. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. + * + * Lists details of a pull request by providing its number. + * + * When you get, [create](https://docs.github.com/rest/reference/pulls/#create-a-pull-request), or [edit](https://docs.github.com/rest/reference/pulls#update-a-pull-request) a pull request, GitHub creates a merge commit to test whether the pull request can be automatically merged into the base branch. This test commit is not added to the base branch or the head branch. You can review the status of the test commit using the `mergeable` key. For more information, see "[Checking mergeability of pull requests](https://docs.github.com/rest/guides/getting-started-with-the-git-database-api#checking-mergeability-of-pull-requests)". + * + * The value of the `mergeable` attribute can be `true`, `false`, or `null`. If the value is `null`, then GitHub has started a background job to compute the mergeability. After giving the job time to complete, resubmit the request. When the job finishes, you will see a non-`null` value for the `mergeable` attribute in the response. If `mergeable` is `true`, then `merge_commit_sha` will be the SHA of the _test_ merge commit. + * + * The value of the `merge_commit_sha` attribute changes depending on the state of the pull request. Before merging a pull request, the `merge_commit_sha` attribute holds the SHA of the _test_ merge commit. After merging a pull request, the `merge_commit_sha` attribute changes depending on how you merged the pull request: + * + * * If merged as a [merge commit](https://docs.github.com/articles/about-merge-methods-on-github/), `merge_commit_sha` represents the SHA of the merge commit. + * * If merged via a [squash](https://docs.github.com/articles/about-merge-methods-on-github/#squashing-your-merge-commits), `merge_commit_sha` represents the SHA of the squashed commit on the base branch. + * * If [rebased](https://docs.github.com/articles/about-merge-methods-on-github/#rebasing-and-merging-your-commits), `merge_commit_sha` represents the commit that the base branch was updated to. + * + * Pass the appropriate [media type](https://docs.github.com/rest/overview/media-types/#commits-commit-comparison-and-pull-requests) to fetch diff and patch formats. + */ + get: operations["pulls/get"]; + /** + * Draft pull requests are available in public repositories with GitHub Free and GitHub Free for organizations, GitHub Pro, and legacy per-repository billing plans, and in public and private repositories with GitHub Team and GitHub Enterprise Cloud. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. + * + * To open or update a pull request in a public repository, you must have write access to the head or the source branch. For organization-owned repositories, you must be a member of the organization that owns the repository to open or update a pull request. + */ + patch: operations["pulls/update"]; + }; + "/repos/{owner}/{repo}/pulls/{pull_number}/codespaces": { + /** + * Creates a codespace owned by the authenticated user for the specified pull request. + * + * You must authenticate using an access token with the `codespace` scope to use this endpoint. + * + * GitHub Apps must have write access to the `codespaces` repository permission to use this endpoint. + */ + post: operations["codespaces/create-with-pr-for-authenticated-user"]; + }; + "/repos/{owner}/{repo}/pulls/{pull_number}/comments": { + /** Lists all review comments for a pull request. By default, review comments are in ascending order by ID. */ + get: operations["pulls/list-review-comments"]; + /** + * Creates a review comment in the pull request diff. To add a regular comment to a pull request timeline, see "[Create an issue comment](https://docs.github.com/rest/reference/issues#create-an-issue-comment)." We recommend creating a review comment using `line`, `side`, and optionally `start_line` and `start_side` if your comment applies to more than one line in the pull request diff. + * + * The `position` parameter is deprecated. If you use `position`, the `line`, `side`, `start_line`, and `start_side` parameters are not required. + * + * **Note:** The position value equals the number of lines down from the first "@@" hunk header in the file you want to add a comment. The line just below the "@@" line is position 1, the next line is position 2, and so on. The position in the diff continues to increase through lines of whitespace and additional hunks until the beginning of a new file. + * + * This endpoint triggers [notifications](https://docs.github.com/en/github/managing-subscriptions-and-notifications-on-github/about-notifications). Creating content too quickly using this endpoint may result in secondary rate limiting. See "[Secondary rate limits](https://docs.github.com/rest/overview/resources-in-the-rest-api#secondary-rate-limits)" and "[Dealing with secondary rate limits](https://docs.github.com/rest/guides/best-practices-for-integrators#dealing-with-secondary-rate-limits)" for details. + */ + post: operations["pulls/create-review-comment"]; + }; + "/repos/{owner}/{repo}/pulls/{pull_number}/comments/{comment_id}/replies": { + /** + * Creates a reply to a review comment for a pull request. For the `comment_id`, provide the ID of the review comment you are replying to. This must be the ID of a _top-level review comment_, not a reply to that comment. Replies to replies are not supported. + * + * This endpoint triggers [notifications](https://docs.github.com/en/github/managing-subscriptions-and-notifications-on-github/about-notifications). Creating content too quickly using this endpoint may result in secondary rate limiting. See "[Secondary rate limits](https://docs.github.com/rest/overview/resources-in-the-rest-api#secondary-rate-limits)" and "[Dealing with secondary rate limits](https://docs.github.com/rest/guides/best-practices-for-integrators#dealing-with-secondary-rate-limits)" for details. + */ + post: operations["pulls/create-reply-for-review-comment"]; + }; + "/repos/{owner}/{repo}/pulls/{pull_number}/commits": { + /** Lists a maximum of 250 commits for a pull request. To receive a complete commit list for pull requests with more than 250 commits, use the [List commits](https://docs.github.com/rest/reference/repos#list-commits) endpoint. */ + get: operations["pulls/list-commits"]; + }; + "/repos/{owner}/{repo}/pulls/{pull_number}/files": { + /** **Note:** Responses include a maximum of 3000 files. The paginated response returns 30 files per page by default. */ + get: operations["pulls/list-files"]; + }; + "/repos/{owner}/{repo}/pulls/{pull_number}/merge": { + get: operations["pulls/check-if-merged"]; + /** This endpoint triggers [notifications](https://docs.github.com/github/managing-subscriptions-and-notifications-on-github/about-notifications). Creating content too quickly using this endpoint may result in secondary rate limiting. See "[Secondary rate limits](https://docs.github.com/rest/overview/resources-in-the-rest-api#secondary-rate-limits)" and "[Dealing with secondary rate limits](https://docs.github.com/rest/guides/best-practices-for-integrators#dealing-with-secondary-rate-limits)" for details. */ + put: operations["pulls/merge"]; + }; + "/repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers": { + /** Lists the users or teams whose review is requested for a pull request. Once a requested reviewer submits a review, they are no longer considered a requested reviewer. Their review will instead be returned by the [List reviews for a pull request](https://docs.github.com/rest/pulls/reviews#list-reviews-for-a-pull-request) operation. */ + get: operations["pulls/list-requested-reviewers"]; + /** This endpoint triggers [notifications](https://docs.github.com/github/managing-subscriptions-and-notifications-on-github/about-notifications). Creating content too quickly using this endpoint may result in secondary rate limiting. See "[Secondary rate limits](https://docs.github.com/rest/overview/resources-in-the-rest-api#secondary-rate-limits)" and "[Dealing with secondary rate limits](https://docs.github.com/rest/guides/best-practices-for-integrators#dealing-with-secondary-rate-limits)" for details. */ + post: operations["pulls/request-reviewers"]; + delete: operations["pulls/remove-requested-reviewers"]; + }; + "/repos/{owner}/{repo}/pulls/{pull_number}/reviews": { + /** The list of reviews returns in chronological order. */ + get: operations["pulls/list-reviews"]; + /** + * This endpoint triggers [notifications](https://docs.github.com/en/github/managing-subscriptions-and-notifications-on-github/about-notifications). Creating content too quickly using this endpoint may result in secondary rate limiting. See "[Secondary rate limits](https://docs.github.com/rest/overview/resources-in-the-rest-api#secondary-rate-limits)" and "[Dealing with secondary rate limits](https://docs.github.com/rest/guides/best-practices-for-integrators#dealing-with-secondary-rate-limits)" for details. + * + * Pull request reviews created in the `PENDING` state do not include the `submitted_at` property in the response. + * + * **Note:** To comment on a specific line in a file, you need to first determine the _position_ of that line in the diff. The GitHub REST API v3 offers the `application/vnd.github.v3.diff` [media type](https://docs.github.com/rest/overview/media-types#commits-commit-comparison-and-pull-requests). To see a pull request diff, add this media type to the `Accept` header of a call to the [single pull request](https://docs.github.com/rest/reference/pulls#get-a-pull-request) endpoint. + * + * The `position` value equals the number of lines down from the first "@@" hunk header in the file you want to add a comment. The line just below the "@@" line is position 1, the next line is position 2, and so on. The position in the diff continues to increase through lines of whitespace and additional hunks until the beginning of a new file. + */ + post: operations["pulls/create-review"]; + }; + "/repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}": { + get: operations["pulls/get-review"]; + /** Update the review summary comment with new text. */ + put: operations["pulls/update-review"]; + delete: operations["pulls/delete-pending-review"]; + }; + "/repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/comments": { + /** List comments for a specific pull request review. */ + get: operations["pulls/list-comments-for-review"]; + }; + "/repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/dismissals": { + /** **Note:** To dismiss a pull request review on a [protected branch](https://docs.github.com/rest/reference/repos#branches), you must be a repository administrator or be included in the list of people or teams who can dismiss pull request reviews. */ + put: operations["pulls/dismiss-review"]; + }; + "/repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/events": { + post: operations["pulls/submit-review"]; + }; + "/repos/{owner}/{repo}/pulls/{pull_number}/update-branch": { + /** Updates the pull request branch with the latest upstream changes by merging HEAD from the base branch into the pull request branch. */ + put: operations["pulls/update-branch"]; + }; + "/repos/{owner}/{repo}/readme": { + /** + * Gets the preferred README for a repository. + * + * READMEs support [custom media types](https://docs.github.com/rest/reference/repos#custom-media-types) for retrieving the raw content or rendered HTML. + */ + get: operations["repos/get-readme"]; + }; + "/repos/{owner}/{repo}/readme/{dir}": { + /** + * Gets the README from a repository directory. + * + * READMEs support [custom media types](https://docs.github.com/rest/reference/repos#custom-media-types) for retrieving the raw content or rendered HTML. + */ + get: operations["repos/get-readme-in-directory"]; + }; + "/repos/{owner}/{repo}/releases": { + /** + * This returns a list of releases, which does not include regular Git tags that have not been associated with a release. To get a list of Git tags, use the [Repository Tags API](https://docs.github.com/rest/reference/repos#list-repository-tags). + * + * Information about published releases are available to everyone. Only users with push access will receive listings for draft releases. + */ + get: operations["repos/list-releases"]; + /** + * Users with push access to the repository can create a release. + * + * This endpoint triggers [notifications](https://docs.github.com/en/github/managing-subscriptions-and-notifications-on-github/about-notifications). Creating content too quickly using this endpoint may result in secondary rate limiting. See "[Secondary rate limits](https://docs.github.com/rest/overview/resources-in-the-rest-api#secondary-rate-limits)" and "[Dealing with secondary rate limits](https://docs.github.com/rest/guides/best-practices-for-integrators#dealing-with-secondary-rate-limits)" for details. + */ + post: operations["repos/create-release"]; + }; + "/repos/{owner}/{repo}/releases/assets/{asset_id}": { + /** To download the asset's binary content, set the `Accept` header of the request to [`application/octet-stream`](https://docs.github.com/rest/overview/media-types). The API will either redirect the client to the location, or stream it directly if possible. API clients should handle both a `200` or `302` response. */ + get: operations["repos/get-release-asset"]; + delete: operations["repos/delete-release-asset"]; + /** Users with push access to the repository can edit a release asset. */ + patch: operations["repos/update-release-asset"]; + }; + "/repos/{owner}/{repo}/releases/generate-notes": { + /** Generate a name and body describing a [release](https://docs.github.com/rest/reference/repos#releases). The body content will be markdown formatted and contain information like the changes since last release and users who contributed. The generated release notes are not saved anywhere. They are intended to be generated and used when creating a new release. */ + post: operations["repos/generate-release-notes"]; + }; + "/repos/{owner}/{repo}/releases/latest": { + /** + * View the latest published full release for the repository. + * + * The latest release is the most recent non-prerelease, non-draft release, sorted by the `created_at` attribute. The `created_at` attribute is the date of the commit used for the release, and not the date when the release was drafted or published. + */ + get: operations["repos/get-latest-release"]; + }; + "/repos/{owner}/{repo}/releases/tags/{tag}": { + /** Get a published release with the specified tag. */ + get: operations["repos/get-release-by-tag"]; + }; + "/repos/{owner}/{repo}/releases/{release_id}": { + /** **Note:** This returns an `upload_url` key corresponding to the endpoint for uploading release assets. This key is a [hypermedia resource](https://docs.github.com/rest/overview/resources-in-the-rest-api#hypermedia). */ + get: operations["repos/get-release"]; + /** Users with push access to the repository can delete a release. */ + delete: operations["repos/delete-release"]; + /** Users with push access to the repository can edit a release. */ + patch: operations["repos/update-release"]; + }; + "/repos/{owner}/{repo}/releases/{release_id}/assets": { + get: operations["repos/list-release-assets"]; + /** + * This endpoint makes use of [a Hypermedia relation](https://docs.github.com/rest/overview/resources-in-the-rest-api#hypermedia) to determine which URL to access. The endpoint you call to upload release assets is specific to your release. Use the `upload_url` returned in + * the response of the [Create a release endpoint](https://docs.github.com/rest/reference/repos#create-a-release) to upload a release asset. + * + * You need to use an HTTP client which supports [SNI](http://en.wikipedia.org/wiki/Server_Name_Indication) to make calls to this endpoint. + * + * Most libraries will set the required `Content-Length` header automatically. Use the required `Content-Type` header to provide the media type of the asset. For a list of media types, see [Media Types](https://www.iana.org/assignments/media-types/media-types.xhtml). For example: + * + * `application/zip` + * + * GitHub expects the asset data in its raw binary form, rather than JSON. You will send the raw binary content of the asset as the request body. Everything else about the endpoint is the same as the rest of the API. For example, + * you'll still need to pass your authentication to be able to upload an asset. + * + * When an upstream failure occurs, you will receive a `502 Bad Gateway` status. This may leave an empty asset with a state of `starter`. It can be safely deleted. + * + * **Notes:** + * * GitHub renames asset filenames that have special characters, non-alphanumeric characters, and leading or trailing periods. The "[List assets for a release](https://docs.github.com/rest/reference/repos#list-assets-for-a-release)" + * endpoint lists the renamed filenames. For more information and help, contact [GitHub Support](https://support.github.com/contact?tags=dotcom-rest-api). + * * If you upload an asset with the same filename as another uploaded asset, you'll receive an error and must delete the old file before you can re-upload the new asset. + */ + post: operations["repos/upload-release-asset"]; + }; + "/repos/{owner}/{repo}/releases/{release_id}/reactions": { + /** List the reactions to a [release](https://docs.github.com/rest/reference/repos#releases). */ + get: operations["reactions/list-for-release"]; + /** Create a reaction to a [release](https://docs.github.com/rest/reference/repos#releases). A response with a `Status: 200 OK` means that you already added the reaction type to this release. */ + post: operations["reactions/create-for-release"]; + }; + "/repos/{owner}/{repo}/releases/{release_id}/reactions/{reaction_id}": { + /** + * **Note:** You can also specify a repository by `repository_id` using the route `DELETE delete /repositories/:repository_id/releases/:release_id/reactions/:reaction_id`. + * + * Delete a reaction to a [release](https://docs.github.com/rest/reference/repos#releases). + */ + delete: operations["reactions/delete-for-release"]; + }; + "/repos/{owner}/{repo}/secret-scanning/alerts": { + /** + * Lists secret scanning alerts for an eligible repository, from newest to oldest. + * To use this endpoint, you must be an administrator for the repository or for the organization that owns the repository, and you must use a personal access token with the `repo` scope or `security_events` scope. + * For public repositories, you may instead use the `public_repo` scope. + * + * GitHub Apps must have the `secret_scanning_alerts` read permission to use this endpoint. + */ + get: operations["secret-scanning/list-alerts-for-repo"]; + }; + "/repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}": { + /** + * Gets a single secret scanning alert detected in an eligible repository. + * To use this endpoint, you must be an administrator for the repository or for the organization that owns the repository, and you must use a personal access token with the `repo` scope or `security_events` scope. + * For public repositories, you may instead use the `public_repo` scope. + * + * GitHub Apps must have the `secret_scanning_alerts` read permission to use this endpoint. + */ + get: operations["secret-scanning/get-alert"]; + /** + * Updates the status of a secret scanning alert in an eligible repository. + * To use this endpoint, you must be an administrator for the repository or for the organization that owns the repository, and you must use a personal access token with the `repo` scope or `security_events` scope. + * For public repositories, you may instead use the `public_repo` scope. + * + * GitHub Apps must have the `secret_scanning_alerts` write permission to use this endpoint. + */ + patch: operations["secret-scanning/update-alert"]; + }; + "/repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}/locations": { + /** + * Lists all locations for a given secret scanning alert for an eligible repository. + * To use this endpoint, you must be an administrator for the repository or for the organization that owns the repository, and you must use a personal access token with the `repo` scope or `security_events` scope. + * For public repositories, you may instead use the `public_repo` scope. + * + * GitHub Apps must have the `secret_scanning_alerts` read permission to use this endpoint. + */ + get: operations["secret-scanning/list-locations-for-alert"]; + }; + "/repos/{owner}/{repo}/stargazers": { + /** + * Lists the people that have starred the repository. + * + * You can also find out _when_ stars were created by passing the following custom [media type](https://docs.github.com/rest/overview/media-types/) via the `Accept` header: + */ + get: operations["activity/list-stargazers-for-repo"]; + }; + "/repos/{owner}/{repo}/stats/code_frequency": { + /** Returns a weekly aggregate of the number of additions and deletions pushed to a repository. */ + get: operations["repos/get-code-frequency-stats"]; + }; + "/repos/{owner}/{repo}/stats/commit_activity": { + /** Returns the last year of commit activity grouped by week. The `days` array is a group of commits per day, starting on `Sunday`. */ + get: operations["repos/get-commit-activity-stats"]; + }; + "/repos/{owner}/{repo}/stats/contributors": { + /** + * Returns the `total` number of commits authored by the contributor. In addition, the response includes a Weekly Hash (`weeks` array) with the following information: + * + * * `w` - Start of the week, given as a [Unix timestamp](http://en.wikipedia.org/wiki/Unix_time). + * * `a` - Number of additions + * * `d` - Number of deletions + * * `c` - Number of commits + */ + get: operations["repos/get-contributors-stats"]; + }; + "/repos/{owner}/{repo}/stats/participation": { + /** + * Returns the total commit counts for the `owner` and total commit counts in `all`. `all` is everyone combined, including the `owner` in the last 52 weeks. If you'd like to get the commit counts for non-owners, you can subtract `owner` from `all`. + * + * The array order is oldest week (index 0) to most recent week. + */ + get: operations["repos/get-participation-stats"]; + }; + "/repos/{owner}/{repo}/stats/punch_card": { + /** + * Each array contains the day number, hour number, and number of commits: + * + * * `0-6`: Sunday - Saturday + * * `0-23`: Hour of day + * * Number of commits + * + * For example, `[2, 14, 25]` indicates that there were 25 total commits, during the 2:00pm hour on Tuesdays. All times are based on the time zone of individual commits. + */ + get: operations["repos/get-punch-card-stats"]; + }; + "/repos/{owner}/{repo}/statuses/{sha}": { + /** + * Users with push access in a repository can create commit statuses for a given SHA. + * + * Note: there is a limit of 1000 statuses per `sha` and `context` within a repository. Attempts to create more than 1000 statuses will result in a validation error. + */ + post: operations["repos/create-commit-status"]; + }; + "/repos/{owner}/{repo}/subscribers": { + /** Lists the people watching the specified repository. */ + get: operations["activity/list-watchers-for-repo"]; + }; + "/repos/{owner}/{repo}/subscription": { + get: operations["activity/get-repo-subscription"]; + /** If you would like to watch a repository, set `subscribed` to `true`. If you would like to ignore notifications made within a repository, set `ignored` to `true`. If you would like to stop watching a repository, [delete the repository's subscription](https://docs.github.com/rest/reference/activity#delete-a-repository-subscription) completely. */ + put: operations["activity/set-repo-subscription"]; + /** This endpoint should only be used to stop watching a repository. To control whether or not you wish to receive notifications from a repository, [set the repository's subscription manually](https://docs.github.com/rest/reference/activity#set-a-repository-subscription). */ + delete: operations["activity/delete-repo-subscription"]; + }; + "/repos/{owner}/{repo}/tags": { + get: operations["repos/list-tags"]; + }; + "/repos/{owner}/{repo}/tags/protection": { + /** + * This returns the tag protection states of a repository. + * + * This information is only available to repository administrators. + */ + get: operations["repos/list-tag-protection"]; + /** + * This creates a tag protection state for a repository. + * This endpoint is only available to repository administrators. + */ + post: operations["repos/create-tag-protection"]; + }; + "/repos/{owner}/{repo}/tags/protection/{tag_protection_id}": { + /** + * This deletes a tag protection state for a repository. + * This endpoint is only available to repository administrators. + */ + delete: operations["repos/delete-tag-protection"]; + }; + "/repos/{owner}/{repo}/tarball/{ref}": { + /** + * Gets a redirect URL to download a tar archive for a repository. If you omit `:ref`, the repository’s default branch (usually + * `master`) will be used. Please make sure your HTTP framework is configured to follow redirects or you will need to use + * the `Location` header to make a second `GET` request. + * **Note**: For private repositories, these links are temporary and expire after five minutes. + */ + get: operations["repos/download-tarball-archive"]; + }; + "/repos/{owner}/{repo}/teams": { + get: operations["repos/list-teams"]; + }; + "/repos/{owner}/{repo}/topics": { + get: operations["repos/get-all-topics"]; + put: operations["repos/replace-all-topics"]; + }; + "/repos/{owner}/{repo}/traffic/clones": { + /** Get the total number of clones and breakdown per day or week for the last 14 days. Timestamps are aligned to UTC midnight of the beginning of the day or week. Week begins on Monday. */ + get: operations["repos/get-clones"]; + }; + "/repos/{owner}/{repo}/traffic/popular/paths": { + /** Get the top 10 popular contents over the last 14 days. */ + get: operations["repos/get-top-paths"]; + }; + "/repos/{owner}/{repo}/traffic/popular/referrers": { + /** Get the top 10 referrers over the last 14 days. */ + get: operations["repos/get-top-referrers"]; + }; + "/repos/{owner}/{repo}/traffic/views": { + /** Get the total number of views and breakdown per day or week for the last 14 days. Timestamps are aligned to UTC midnight of the beginning of the day or week. Week begins on Monday. */ + get: operations["repos/get-views"]; + }; + "/repos/{owner}/{repo}/transfer": { + /** A transfer request will need to be accepted by the new owner when transferring a personal repository to another user. The response will contain the original `owner`, and the transfer will continue asynchronously. For more details on the requirements to transfer personal and organization-owned repositories, see [about repository transfers](https://docs.github.com/articles/about-repository-transfers/). */ + post: operations["repos/transfer"]; + }; + "/repos/{owner}/{repo}/vulnerability-alerts": { + /** Shows whether dependency alerts are enabled or disabled for a repository. The authenticated user must have admin read access to the repository. For more information, see "[About security alerts for vulnerable dependencies](https://docs.github.com/en/articles/about-security-alerts-for-vulnerable-dependencies)". */ + get: operations["repos/check-vulnerability-alerts"]; + /** Enables dependency alerts and the dependency graph for a repository. The authenticated user must have admin access to the repository. For more information, see "[About security alerts for vulnerable dependencies](https://docs.github.com/en/articles/about-security-alerts-for-vulnerable-dependencies)". */ + put: operations["repos/enable-vulnerability-alerts"]; + /** Disables dependency alerts and the dependency graph for a repository. The authenticated user must have admin access to the repository. For more information, see "[About security alerts for vulnerable dependencies](https://docs.github.com/en/articles/about-security-alerts-for-vulnerable-dependencies)". */ + delete: operations["repos/disable-vulnerability-alerts"]; + }; + "/repos/{owner}/{repo}/zipball/{ref}": { + /** + * Gets a redirect URL to download a zip archive for a repository. If you omit `:ref`, the repository’s default branch (usually + * `master`) will be used. Please make sure your HTTP framework is configured to follow redirects or you will need to use + * the `Location` header to make a second `GET` request. + * **Note**: For private repositories, these links are temporary and expire after five minutes. + */ + get: operations["repos/download-zipball-archive"]; + }; + "/repos/{template_owner}/{template_repo}/generate": { + /** + * Creates a new repository using a repository template. Use the `template_owner` and `template_repo` route parameters to specify the repository to use as the template. The authenticated user must own or be a member of an organization that owns the repository. To check if a repository is available to use as a template, get the repository's information using the [Get a repository](https://docs.github.com/rest/reference/repos#get-a-repository) endpoint and check that the `is_template` key is `true`. + * + * **OAuth scope requirements** + * + * When using [OAuth](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/), authorizations must include: + * + * * `public_repo` scope or `repo` scope to create a public repository. Note: For GitHub AE, use `repo` scope to create an internal repository. + * * `repo` scope to create a private repository + */ + post: operations["repos/create-using-template"]; + }; + "/repositories": { + /** + * Lists all public repositories in the order that they were created. + * + * Note: + * - For GitHub Enterprise Server, this endpoint will only list repositories available to all users on the enterprise. + * - Pagination is powered exclusively by the `since` parameter. Use the [Link header](https://docs.github.com/rest/overview/resources-in-the-rest-api#link-header) to get the URL for the next page of repositories. + */ + get: operations["repos/list-public"]; + }; + "/repositories/{repository_id}/environments/{environment_name}/secrets": { + /** Lists all secrets available in an environment without revealing their encrypted values. You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the `secrets` repository permission to use this endpoint. */ + get: operations["actions/list-environment-secrets"]; + }; + "/repositories/{repository_id}/environments/{environment_name}/secrets/public-key": { + /** Get the public key for an environment, which you need to encrypt environment secrets. You need to encrypt a secret before you can create or update secrets. Anyone with read access to the repository can use this endpoint. If the repository is private you must use an access token with the `repo` scope. GitHub Apps must have the `secrets` repository permission to use this endpoint. */ + get: operations["actions/get-environment-public-key"]; + }; + "/repositories/{repository_id}/environments/{environment_name}/secrets/{secret_name}": { + /** Gets a single environment secret without revealing its encrypted value. You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the `secrets` repository permission to use this endpoint. */ + get: operations["actions/get-environment-secret"]; + /** + * Creates or updates an environment secret with an encrypted value. Encrypt your secret using + * [LibSodium](https://libsodium.gitbook.io/doc/bindings_for_other_languages). You must authenticate using an access + * token with the `repo` scope to use this endpoint. GitHub Apps must have the `secrets` repository permission to use + * this endpoint. + * + * #### Example encrypting a secret using Node.js + * + * Encrypt your secret using the [tweetsodium](https://github.com/github/tweetsodium) library. + * + * ``` + * const sodium = require('tweetsodium'); + * + * const key = "base64-encoded-public-key"; + * const value = "plain-text-secret"; + * + * // Convert the message and key to Uint8Array's (Buffer implements that interface) + * const messageBytes = Buffer.from(value); + * const keyBytes = Buffer.from(key, 'base64'); + * + * // Encrypt using LibSodium. + * const encryptedBytes = sodium.seal(messageBytes, keyBytes); + * + * // Base64 the encrypted secret + * const encrypted = Buffer.from(encryptedBytes).toString('base64'); + * + * console.log(encrypted); + * ``` + * + * + * #### Example encrypting a secret using Python + * + * Encrypt your secret using [pynacl](https://pynacl.readthedocs.io/en/latest/public/#nacl-public-sealedbox) with Python 3. + * + * ``` + * from base64 import b64encode + * from nacl import encoding, public + * + * def encrypt(public_key: str, secret_value: str) -> str: + * """Encrypt a Unicode string using the public key.""" + * public_key = public.PublicKey(public_key.encode("utf-8"), encoding.Base64Encoder()) + * sealed_box = public.SealedBox(public_key) + * encrypted = sealed_box.encrypt(secret_value.encode("utf-8")) + * return b64encode(encrypted).decode("utf-8") + * ``` + * + * #### Example encrypting a secret using C# + * + * Encrypt your secret using the [Sodium.Core](https://www.nuget.org/packages/Sodium.Core/) package. + * + * ``` + * var secretValue = System.Text.Encoding.UTF8.GetBytes("mySecret"); + * var publicKey = Convert.FromBase64String("2Sg8iYjAxxmI2LvUXpJjkYrMxURPc8r+dB7TJyvvcCU="); + * + * var sealedPublicKeyBox = Sodium.SealedPublicKeyBox.Create(secretValue, publicKey); + * + * Console.WriteLine(Convert.ToBase64String(sealedPublicKeyBox)); + * ``` + * + * #### Example encrypting a secret using Ruby + * + * Encrypt your secret using the [rbnacl](https://github.com/RubyCrypto/rbnacl) gem. + * + * ```ruby + * require "rbnacl" + * require "base64" + * + * key = Base64.decode64("+ZYvJDZMHUfBkJdyq5Zm9SKqeuBQ4sj+6sfjlH4CgG0=") + * public_key = RbNaCl::PublicKey.new(key) + * + * box = RbNaCl::Boxes::Sealed.from_public_key(public_key) + * encrypted_secret = box.encrypt("my_secret") + * + * # Print the base64 encoded secret + * puts Base64.strict_encode64(encrypted_secret) + * ``` + */ + put: operations["actions/create-or-update-environment-secret"]; + /** Deletes a secret in an environment using the secret name. You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the `secrets` repository permission to use this endpoint. */ + delete: operations["actions/delete-environment-secret"]; + }; + "/scim/v2/enterprises/{enterprise}/Groups": { + /** **Note:** The SCIM API endpoints for enterprise accounts are currently in beta and are subject to change. */ + get: operations["enterprise-admin/list-provisioned-groups-enterprise"]; + /** + * **Note:** The SCIM API endpoints for enterprise accounts are currently in beta and are subject to change. + * + * Provision an enterprise group, and invite users to the group. This sends invitation emails to the email address of the invited users to join the GitHub organization that the SCIM group corresponds to. + */ + post: operations["enterprise-admin/provision-and-invite-enterprise-group"]; + }; + "/scim/v2/enterprises/{enterprise}/Groups/{scim_group_id}": { + /** **Note:** The SCIM API endpoints for enterprise accounts are currently in beta and are subject to change. */ + get: operations["enterprise-admin/get-provisioning-information-for-enterprise-group"]; + /** + * **Note:** The SCIM API endpoints for enterprise accounts are currently in beta and are subject to change. + * + * Replaces an existing provisioned group’s information. You must provide all the information required for the group as if you were provisioning it for the first time. Any existing group information that you don't provide will be removed, including group membership. If you want to only update a specific attribute, use the [Update an attribute for a SCIM enterprise group](#update-an-attribute-for-a-scim-enterprise-group) endpoint instead. + */ + put: operations["enterprise-admin/set-information-for-provisioned-enterprise-group"]; + /** **Note:** The SCIM API endpoints for enterprise accounts are currently in beta and are subject to change. */ + delete: operations["enterprise-admin/delete-scim-group-from-enterprise"]; + /** + * **Note:** The SCIM API endpoints for enterprise accounts are currently in beta and are subject to change. + * + * Allows you to change a provisioned group’s individual attributes. To change a group’s values, you must provide a specific Operations JSON format that contains at least one of the add, remove, or replace operations. For examples and more information on the SCIM operations format, see the [SCIM specification](https://tools.ietf.org/html/rfc7644#section-3.5.2). + */ + patch: operations["enterprise-admin/update-attribute-for-enterprise-group"]; + }; + "/scim/v2/enterprises/{enterprise}/Users": { + /** + * **Note:** The SCIM API endpoints for enterprise accounts are currently in beta and are subject to change. + * + * Retrieves a paginated list of all provisioned enterprise members, including pending invitations. + * + * When a user with a SAML-provisioned external identity leaves (or is removed from) an enterprise, the account's metadata is immediately removed. However, the returned list of user accounts might not always match the organization or enterprise member list you see on GitHub. This can happen in certain cases where an external identity associated with an organization will not match an organization member: + * - When a user with a SCIM-provisioned external identity is removed from an enterprise, the account's metadata is preserved to allow the user to re-join the organization in the future. + * - When inviting a user to join an organization, you can expect to see their external identity in the results before they accept the invitation, or if the invitation is cancelled (or never accepted). + * - When a user is invited over SCIM, an external identity is created that matches with the invitee's email address. However, this identity is only linked to a user account when the user accepts the invitation by going through SAML SSO. + * + * The returned list of external identities can include an entry for a `null` user. These are unlinked SAML identities that are created when a user goes through the following Single Sign-On (SSO) process but does not sign in to their GitHub account after completing SSO: + * + * 1. The user is granted access by the IdP and is not a member of the GitHub enterprise. + * + * 1. The user attempts to access the GitHub enterprise and initiates the SAML SSO process, and is not currently signed in to their GitHub account. + * + * 1. After successfully authenticating with the SAML SSO IdP, the `null` external identity entry is created and the user is prompted to sign in to their GitHub account: + * - If the user signs in, their GitHub account is linked to this entry. + * - If the user does not sign in (or does not create a new account when prompted), they are not added to the GitHub enterprise, and the external identity `null` entry remains in place. + */ + get: operations["enterprise-admin/list-provisioned-identities-enterprise"]; + /** + * **Note:** The SCIM API endpoints for enterprise accounts are currently in beta and are subject to change. + * + * Provision enterprise membership for a user, and send organization invitation emails to the email address. + * + * You can optionally include the groups a user will be invited to join. If you do not provide a list of `groups`, the user is provisioned for the enterprise, but no organization invitation emails will be sent. + */ + post: operations["enterprise-admin/provision-and-invite-enterprise-user"]; + }; + "/scim/v2/enterprises/{enterprise}/Users/{scim_user_id}": { + /** **Note:** The SCIM API endpoints for enterprise accounts are currently in beta and are subject to change. */ + get: operations["enterprise-admin/get-provisioning-information-for-enterprise-user"]; + /** + * **Note:** The SCIM API endpoints for enterprise accounts are currently in beta and are subject to change. + * + * Replaces an existing provisioned user's information. You must provide all the information required for the user as if you were provisioning them for the first time. Any existing user information that you don't provide will be removed. If you want to only update a specific attribute, use the [Update an attribute for a SCIM user](#update-an-attribute-for-an-enterprise-scim-user) endpoint instead. + * + * You must at least provide the required values for the user: `userName`, `name`, and `emails`. + * + * **Warning:** Setting `active: false` removes the user from the enterprise, deletes the external identity, and deletes the associated `{scim_user_id}`. + */ + put: operations["enterprise-admin/set-information-for-provisioned-enterprise-user"]; + /** **Note:** The SCIM API endpoints for enterprise accounts are currently in beta and are subject to change. */ + delete: operations["enterprise-admin/delete-user-from-enterprise"]; + /** + * **Note:** The SCIM API endpoints for enterprise accounts are currently in beta and are subject to change. + * + * Allows you to change a provisioned user's individual attributes. To change a user's values, you must provide a specific `Operations` JSON format that contains at least one of the `add`, `remove`, or `replace` operations. For examples and more information on the SCIM operations format, see the [SCIM specification](https://tools.ietf.org/html/rfc7644#section-3.5.2). + * + * **Note:** Complicated SCIM `path` selectors that include filters are not supported. For example, a `path` selector defined as `"path": "emails[type eq \"work\"]"` will not work. + * + * **Warning:** If you set `active:false` using the `replace` operation (as shown in the JSON example below), it removes the user from the enterprise, deletes the external identity, and deletes the associated `:scim_user_id`. + * + * ``` + * { + * "Operations":[{ + * "op":"replace", + * "value":{ + * "active":false + * } + * }] + * } + * ``` + */ + patch: operations["enterprise-admin/update-attribute-for-enterprise-user"]; + }; + "/scim/v2/organizations/{org}/Users": { + /** + * Retrieves a paginated list of all provisioned organization members, including pending invitations. If you provide the `filter` parameter, the resources for all matching provisions members are returned. + * + * When a user with a SAML-provisioned external identity leaves (or is removed from) an organization, the account's metadata is immediately removed. However, the returned list of user accounts might not always match the organization or enterprise member list you see on GitHub. This can happen in certain cases where an external identity associated with an organization will not match an organization member: + * - When a user with a SCIM-provisioned external identity is removed from an organization, the account's metadata is preserved to allow the user to re-join the organization in the future. + * - When inviting a user to join an organization, you can expect to see their external identity in the results before they accept the invitation, or if the invitation is cancelled (or never accepted). + * - When a user is invited over SCIM, an external identity is created that matches with the invitee's email address. However, this identity is only linked to a user account when the user accepts the invitation by going through SAML SSO. + * + * The returned list of external identities can include an entry for a `null` user. These are unlinked SAML identities that are created when a user goes through the following Single Sign-On (SSO) process but does not sign in to their GitHub account after completing SSO: + * + * 1. The user is granted access by the IdP and is not a member of the GitHub organization. + * + * 1. The user attempts to access the GitHub organization and initiates the SAML SSO process, and is not currently signed in to their GitHub account. + * + * 1. After successfully authenticating with the SAML SSO IdP, the `null` external identity entry is created and the user is prompted to sign in to their GitHub account: + * - If the user signs in, their GitHub account is linked to this entry. + * - If the user does not sign in (or does not create a new account when prompted), they are not added to the GitHub organization, and the external identity `null` entry remains in place. + */ + get: operations["scim/list-provisioned-identities"]; + /** Provision organization membership for a user, and send an activation email to the email address. */ + post: operations["scim/provision-and-invite-user"]; + }; + "/scim/v2/organizations/{org}/Users/{scim_user_id}": { + get: operations["scim/get-provisioning-information-for-user"]; + /** + * Replaces an existing provisioned user's information. You must provide all the information required for the user as if you were provisioning them for the first time. Any existing user information that you don't provide will be removed. If you want to only update a specific attribute, use the [Update an attribute for a SCIM user](https://docs.github.com/rest/reference/scim#update-an-attribute-for-a-scim-user) endpoint instead. + * + * You must at least provide the required values for the user: `userName`, `name`, and `emails`. + * + * **Warning:** Setting `active: false` removes the user from the organization, deletes the external identity, and deletes the associated `{scim_user_id}`. + */ + put: operations["scim/set-information-for-provisioned-user"]; + delete: operations["scim/delete-user-from-org"]; + /** + * Allows you to change a provisioned user's individual attributes. To change a user's values, you must provide a specific `Operations` JSON format that contains at least one of the `add`, `remove`, or `replace` operations. For examples and more information on the SCIM operations format, see the [SCIM specification](https://tools.ietf.org/html/rfc7644#section-3.5.2). + * + * **Note:** Complicated SCIM `path` selectors that include filters are not supported. For example, a `path` selector defined as `"path": "emails[type eq \"work\"]"` will not work. + * + * **Warning:** If you set `active:false` using the `replace` operation (as shown in the JSON example below), it removes the user from the organization, deletes the external identity, and deletes the associated `:scim_user_id`. + * + * ``` + * { + * "Operations":[{ + * "op":"replace", + * "value":{ + * "active":false + * } + * }] + * } + * ``` + */ + patch: operations["scim/update-attribute-for-user"]; + }; + "/search/code": { + /** + * Searches for query terms inside of a file. This method returns up to 100 results [per page](https://docs.github.com/rest/overview/resources-in-the-rest-api#pagination). + * + * When searching for code, you can get text match metadata for the file **content** and file **path** fields when you pass the `text-match` media type. For more details about how to receive highlighted search results, see [Text match metadata](https://docs.github.com/rest/reference/search#text-match-metadata). + * + * For example, if you want to find the definition of the `addClass` function inside [jQuery](https://github.com/jquery/jquery) repository, your query would look something like this: + * + * `q=addClass+in:file+language:js+repo:jquery/jquery` + * + * This query searches for the keyword `addClass` within a file's contents. The query limits the search to files where the language is JavaScript in the `jquery/jquery` repository. + * + * #### Considerations for code search + * + * Due to the complexity of searching code, there are a few restrictions on how searches are performed: + * + * * Only the _default branch_ is considered. In most cases, this will be the `master` branch. + * * Only files smaller than 384 KB are searchable. + * * You must always include at least one search term when searching source code. For example, searching for [`language:go`](https://github.com/search?utf8=%E2%9C%93&q=language%3Ago&type=Code) is not valid, while [`amazing + * language:go`](https://github.com/search?utf8=%E2%9C%93&q=amazing+language%3Ago&type=Code) is. + */ + get: operations["search/code"]; + }; + "/search/commits": { + /** + * Find commits via various criteria on the default branch (usually `master`). This method returns up to 100 results [per page](https://docs.github.com/rest/overview/resources-in-the-rest-api#pagination). + * + * When searching for commits, you can get text match metadata for the **message** field when you provide the `text-match` media type. For more details about how to receive highlighted search results, see [Text match + * metadata](https://docs.github.com/rest/reference/search#text-match-metadata). + * + * For example, if you want to find commits related to CSS in the [octocat/Spoon-Knife](https://github.com/octocat/Spoon-Knife) repository. Your query would look something like this: + * + * `q=repo:octocat/Spoon-Knife+css` + */ + get: operations["search/commits"]; + }; + "/search/issues": { + /** + * Find issues by state and keyword. This method returns up to 100 results [per page](https://docs.github.com/rest/overview/resources-in-the-rest-api#pagination). + * + * When searching for issues, you can get text match metadata for the issue **title**, issue **body**, and issue **comment body** fields when you pass the `text-match` media type. For more details about how to receive highlighted + * search results, see [Text match metadata](https://docs.github.com/rest/reference/search#text-match-metadata). + * + * For example, if you want to find the oldest unresolved Python bugs on Windows. Your query might look something like this. + * + * `q=windows+label:bug+language:python+state:open&sort=created&order=asc` + * + * This query searches for the keyword `windows`, within any open issue that is labeled as `bug`. The search runs across repositories whose primary language is Python. The results are sorted by creation date in ascending order, which means the oldest issues appear first in the search results. + * + * **Note:** For [user-to-server](https://docs.github.com/developers/apps/identifying-and-authorizing-users-for-github-apps#user-to-server-requests) GitHub App requests, you can't retrieve a combination of issues and pull requests in a single query. Requests that don't include the `is:issue` or `is:pull-request` qualifier will receive an HTTP `422 Unprocessable Entity` response. To get results for both issues and pull requests, you must send separate queries for issues and pull requests. For more information about the `is` qualifier, see "[Searching only issues or pull requests](https://docs.github.com/github/searching-for-information-on-github/searching-issues-and-pull-requests#search-only-issues-or-pull-requests)." + */ + get: operations["search/issues-and-pull-requests"]; + }; + "/search/labels": { + /** + * Find labels in a repository with names or descriptions that match search keywords. Returns up to 100 results [per page](https://docs.github.com/rest/overview/resources-in-the-rest-api#pagination). + * + * When searching for labels, you can get text match metadata for the label **name** and **description** fields when you pass the `text-match` media type. For more details about how to receive highlighted search results, see [Text match metadata](https://docs.github.com/rest/reference/search#text-match-metadata). + * + * For example, if you want to find labels in the `linguist` repository that match `bug`, `defect`, or `enhancement`. Your query might look like this: + * + * `q=bug+defect+enhancement&repository_id=64778136` + * + * The labels that best match the query appear first in the search results. + */ + get: operations["search/labels"]; + }; + "/search/repositories": { + /** + * Find repositories via various criteria. This method returns up to 100 results [per page](https://docs.github.com/rest/overview/resources-in-the-rest-api#pagination). + * + * When searching for repositories, you can get text match metadata for the **name** and **description** fields when you pass the `text-match` media type. For more details about how to receive highlighted search results, see [Text match metadata](https://docs.github.com/rest/reference/search#text-match-metadata). + * + * For example, if you want to search for popular Tetris repositories written in assembly code, your query might look like this: + * + * `q=tetris+language:assembly&sort=stars&order=desc` + * + * This query searches for repositories with the word `tetris` in the name, the description, or the README. The results are limited to repositories where the primary language is assembly. The results are sorted by stars in descending order, so that the most popular repositories appear first in the search results. + */ + get: operations["search/repos"]; + }; + "/search/topics": { + /** + * Find topics via various criteria. Results are sorted by best match. This method returns up to 100 results [per page](https://docs.github.com/rest/overview/resources-in-the-rest-api#pagination). See "[Searching topics](https://docs.github.com/articles/searching-topics/)" for a detailed list of qualifiers. + * + * When searching for topics, you can get text match metadata for the topic's **short\_description**, **description**, **name**, or **display\_name** field when you pass the `text-match` media type. For more details about how to receive highlighted search results, see [Text match metadata](https://docs.github.com/rest/reference/search#text-match-metadata). + * + * For example, if you want to search for topics related to Ruby that are featured on https://github.com/topics. Your query might look like this: + * + * `q=ruby+is:featured` + * + * This query searches for topics with the keyword `ruby` and limits the results to find only topics that are featured. The topics that are the best match for the query appear first in the search results. + */ + get: operations["search/topics"]; + }; + "/search/users": { + /** + * Find users via various criteria. This method returns up to 100 results [per page](https://docs.github.com/rest/overview/resources-in-the-rest-api#pagination). + * + * When searching for users, you can get text match metadata for the issue **login**, **email**, and **name** fields when you pass the `text-match` media type. For more details about highlighting search results, see [Text match metadata](https://docs.github.com/rest/reference/search#text-match-metadata). For more details about how to receive highlighted search results, see [Text match metadata](https://docs.github.com/rest/reference/search#text-match-metadata). + * + * For example, if you're looking for a list of popular users, you might try this query: + * + * `q=tom+repos:%3E42+followers:%3E1000` + * + * This query searches for users with the name `tom`. The results are restricted to users with more than 42 repositories and over 1,000 followers. + */ + get: operations["search/users"]; + }; + "/teams/{team_id}": { + /** **Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the [Get a team by name](https://docs.github.com/rest/reference/teams#get-a-team-by-name) endpoint. */ + get: operations["teams/get-legacy"]; + /** + * **Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [Delete a team](https://docs.github.com/rest/reference/teams#delete-a-team) endpoint. + * + * To delete a team, the authenticated user must be an organization owner or team maintainer. + * + * If you are an organization owner, deleting a parent team will delete all of its child teams as well. + */ + delete: operations["teams/delete-legacy"]; + /** + * **Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [Update a team](https://docs.github.com/rest/reference/teams#update-a-team) endpoint. + * + * To edit a team, the authenticated user must either be an organization owner or a team maintainer. + * + * **Note:** With nested teams, the `privacy` for parent teams cannot be `secret`. + */ + patch: operations["teams/update-legacy"]; + }; + "/teams/{team_id}/discussions": { + /** + * **Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [`List discussions`](https://docs.github.com/rest/reference/teams#list-discussions) endpoint. + * + * List all discussions on a team's page. OAuth access tokens require the `read:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). + */ + get: operations["teams/list-discussions-legacy"]; + /** + * **Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [`Create a discussion`](https://docs.github.com/rest/reference/teams#create-a-discussion) endpoint. + * + * Creates a new discussion post on a team's page. OAuth access tokens require the `write:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). + * + * This endpoint triggers [notifications](https://docs.github.com/en/github/managing-subscriptions-and-notifications-on-github/about-notifications). Creating content too quickly using this endpoint may result in secondary rate limiting. See "[Secondary rate limits](https://docs.github.com/rest/overview/resources-in-the-rest-api#secondary-rate-limits)" and "[Dealing with secondary rate limits](https://docs.github.com/rest/guides/best-practices-for-integrators#dealing-with-secondary-rate-limits)" for details. + */ + post: operations["teams/create-discussion-legacy"]; + }; + "/teams/{team_id}/discussions/{discussion_number}": { + /** + * **Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [Get a discussion](https://docs.github.com/rest/reference/teams#get-a-discussion) endpoint. + * + * Get a specific discussion on a team's page. OAuth access tokens require the `read:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). + */ + get: operations["teams/get-discussion-legacy"]; + /** + * **Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [`Delete a discussion`](https://docs.github.com/rest/reference/teams#delete-a-discussion) endpoint. + * + * Delete a discussion from a team's page. OAuth access tokens require the `write:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). + */ + delete: operations["teams/delete-discussion-legacy"]; + /** + * **Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [Update a discussion](https://docs.github.com/rest/reference/teams#update-a-discussion) endpoint. + * + * Edits the title and body text of a discussion post. Only the parameters you provide are updated. OAuth access tokens require the `write:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). + */ + patch: operations["teams/update-discussion-legacy"]; + }; + "/teams/{team_id}/discussions/{discussion_number}/comments": { + /** + * **Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [List discussion comments](https://docs.github.com/rest/reference/teams#list-discussion-comments) endpoint. + * + * List all comments on a team discussion. OAuth access tokens require the `read:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). + */ + get: operations["teams/list-discussion-comments-legacy"]; + /** + * **Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [Create a discussion comment](https://docs.github.com/rest/reference/teams#create-a-discussion-comment) endpoint. + * + * Creates a new comment on a team discussion. OAuth access tokens require the `write:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). + * + * This endpoint triggers [notifications](https://docs.github.com/en/github/managing-subscriptions-and-notifications-on-github/about-notifications). Creating content too quickly using this endpoint may result in secondary rate limiting. See "[Secondary rate limits](https://docs.github.com/rest/overview/resources-in-the-rest-api#secondary-rate-limits)" and "[Dealing with secondary rate limits](https://docs.github.com/rest/guides/best-practices-for-integrators#dealing-with-secondary-rate-limits)" for details. + */ + post: operations["teams/create-discussion-comment-legacy"]; + }; + "/teams/{team_id}/discussions/{discussion_number}/comments/{comment_number}": { + /** + * **Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [Get a discussion comment](https://docs.github.com/rest/reference/teams#get-a-discussion-comment) endpoint. + * + * Get a specific comment on a team discussion. OAuth access tokens require the `read:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). + */ + get: operations["teams/get-discussion-comment-legacy"]; + /** + * **Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [Delete a discussion comment](https://docs.github.com/rest/reference/teams#delete-a-discussion-comment) endpoint. + * + * Deletes a comment on a team discussion. OAuth access tokens require the `write:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). + */ + delete: operations["teams/delete-discussion-comment-legacy"]; + /** + * **Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [Update a discussion comment](https://docs.github.com/rest/reference/teams#update-a-discussion-comment) endpoint. + * + * Edits the body text of a discussion comment. OAuth access tokens require the `write:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). + */ + patch: operations["teams/update-discussion-comment-legacy"]; + }; + "/teams/{team_id}/discussions/{discussion_number}/comments/{comment_number}/reactions": { + /** + * **Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [`List reactions for a team discussion comment`](https://docs.github.com/rest/reference/reactions#list-reactions-for-a-team-discussion-comment) endpoint. + * + * List the reactions to a [team discussion comment](https://docs.github.com/rest/reference/teams#discussion-comments). OAuth access tokens require the `read:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). + */ + get: operations["reactions/list-for-team-discussion-comment-legacy"]; + /** + * **Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new "[Create reaction for a team discussion comment](https://docs.github.com/rest/reference/reactions#create-reaction-for-a-team-discussion-comment)" endpoint. + * + * Create a reaction to a [team discussion comment](https://docs.github.com/rest/reference/teams#discussion-comments). OAuth access tokens require the `write:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). A response with an HTTP `200` status means that you already added the reaction type to this team discussion comment. + */ + post: operations["reactions/create-for-team-discussion-comment-legacy"]; + }; + "/teams/{team_id}/discussions/{discussion_number}/reactions": { + /** + * **Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [`List reactions for a team discussion`](https://docs.github.com/rest/reference/reactions#list-reactions-for-a-team-discussion) endpoint. + * + * List the reactions to a [team discussion](https://docs.github.com/rest/reference/teams#discussions). OAuth access tokens require the `read:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). + */ + get: operations["reactions/list-for-team-discussion-legacy"]; + /** + * **Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [`Create reaction for a team discussion`](https://docs.github.com/rest/reference/reactions#create-reaction-for-a-team-discussion) endpoint. + * + * Create a reaction to a [team discussion](https://docs.github.com/rest/reference/teams#discussions). OAuth access tokens require the `write:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). A response with an HTTP `200` status means that you already added the reaction type to this team discussion. + */ + post: operations["reactions/create-for-team-discussion-legacy"]; + }; + "/teams/{team_id}/invitations": { + /** + * **Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [`List pending team invitations`](https://docs.github.com/rest/reference/teams#list-pending-team-invitations) endpoint. + * + * The return hash contains a `role` field which refers to the Organization Invitation role and will be one of the following values: `direct_member`, `admin`, `billing_manager`, `hiring_manager`, or `reinstate`. If the invitee is not a GitHub member, the `login` field in the return hash will be `null`. + */ + get: operations["teams/list-pending-invitations-legacy"]; + }; + "/teams/{team_id}/members": { + /** + * **Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [`List team members`](https://docs.github.com/rest/reference/teams#list-team-members) endpoint. + * + * Team members will include the members of child teams. + */ + get: operations["teams/list-members-legacy"]; + }; + "/teams/{team_id}/members/{username}": { + /** + * The "Get team member" endpoint (described below) is deprecated. + * + * We recommend using the [Get team membership for a user](https://docs.github.com/rest/reference/teams#get-team-membership-for-a-user) endpoint instead. It allows you to get both active and pending memberships. + * + * To list members in a team, the team must be visible to the authenticated user. + */ + get: operations["teams/get-member-legacy"]; + /** + * The "Add team member" endpoint (described below) is deprecated. + * + * We recommend using the [Add or update team membership for a user](https://docs.github.com/rest/reference/teams#add-or-update-team-membership-for-a-user) endpoint instead. It allows you to invite new organization members to your teams. + * + * Team synchronization is available for organizations using GitHub Enterprise Cloud. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. + * + * To add someone to a team, the authenticated user must be an organization owner or a team maintainer in the team they're changing. The person being added to the team must be a member of the team's organization. + * + * **Note:** When you have team synchronization set up for a team with your organization's identity provider (IdP), you will see an error if you attempt to use the API for making changes to the team's membership. If you have access to manage group membership in your IdP, you can manage GitHub team membership through your identity provider, which automatically adds and removes team members in an organization. For more information, see "[Synchronizing teams between your identity provider and GitHub](https://docs.github.com/articles/synchronizing-teams-between-your-identity-provider-and-github/)." + * + * Note that you'll need to set `Content-Length` to zero when calling out to this endpoint. For more information, see "[HTTP verbs](https://docs.github.com/rest/overview/resources-in-the-rest-api#http-verbs)." + */ + put: operations["teams/add-member-legacy"]; + /** + * The "Remove team member" endpoint (described below) is deprecated. + * + * We recommend using the [Remove team membership for a user](https://docs.github.com/rest/reference/teams#remove-team-membership-for-a-user) endpoint instead. It allows you to remove both active and pending memberships. + * + * Team synchronization is available for organizations using GitHub Enterprise Cloud. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. + * + * To remove a team member, the authenticated user must have 'admin' permissions to the team or be an owner of the org that the team is associated with. Removing a team member does not delete the user, it just removes them from the team. + * + * **Note:** When you have team synchronization set up for a team with your organization's identity provider (IdP), you will see an error if you attempt to use the API for making changes to the team's membership. If you have access to manage group membership in your IdP, you can manage GitHub team membership through your identity provider, which automatically adds and removes team members in an organization. For more information, see "[Synchronizing teams between your identity provider and GitHub](https://docs.github.com/articles/synchronizing-teams-between-your-identity-provider-and-github/)." + */ + delete: operations["teams/remove-member-legacy"]; + }; + "/teams/{team_id}/memberships/{username}": { + /** + * **Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [Get team membership for a user](https://docs.github.com/rest/reference/teams#get-team-membership-for-a-user) endpoint. + * + * Team members will include the members of child teams. + * + * To get a user's membership with a team, the team must be visible to the authenticated user. + * + * **Note:** + * The response contains the `state` of the membership and the member's `role`. + * + * The `role` for organization owners is set to `maintainer`. For more information about `maintainer` roles, see [Create a team](https://docs.github.com/rest/reference/teams#create-a-team). + */ + get: operations["teams/get-membership-for-user-legacy"]; + /** + * **Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [Add or update team membership for a user](https://docs.github.com/rest/reference/teams#add-or-update-team-membership-for-a-user) endpoint. + * + * Team synchronization is available for organizations using GitHub Enterprise Cloud. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. + * + * If the user is already a member of the team's organization, this endpoint will add the user to the team. To add a membership between an organization member and a team, the authenticated user must be an organization owner or a team maintainer. + * + * **Note:** When you have team synchronization set up for a team with your organization's identity provider (IdP), you will see an error if you attempt to use the API for making changes to the team's membership. If you have access to manage group membership in your IdP, you can manage GitHub team membership through your identity provider, which automatically adds and removes team members in an organization. For more information, see "[Synchronizing teams between your identity provider and GitHub](https://docs.github.com/articles/synchronizing-teams-between-your-identity-provider-and-github/)." + * + * If the user is unaffiliated with the team's organization, this endpoint will send an invitation to the user via email. This newly-created membership will be in the "pending" state until the user accepts the invitation, at which point the membership will transition to the "active" state and the user will be added as a member of the team. To add a membership between an unaffiliated user and a team, the authenticated user must be an organization owner. + * + * If the user is already a member of the team, this endpoint will update the role of the team member's role. To update the membership of a team member, the authenticated user must be an organization owner or a team maintainer. + */ + put: operations["teams/add-or-update-membership-for-user-legacy"]; + /** + * **Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [Remove team membership for a user](https://docs.github.com/rest/reference/teams#remove-team-membership-for-a-user) endpoint. + * + * Team synchronization is available for organizations using GitHub Enterprise Cloud. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. + * + * To remove a membership between a user and a team, the authenticated user must have 'admin' permissions to the team or be an owner of the organization that the team is associated with. Removing team membership does not delete the user, it just removes their membership from the team. + * + * **Note:** When you have team synchronization set up for a team with your organization's identity provider (IdP), you will see an error if you attempt to use the API for making changes to the team's membership. If you have access to manage group membership in your IdP, you can manage GitHub team membership through your identity provider, which automatically adds and removes team members in an organization. For more information, see "[Synchronizing teams between your identity provider and GitHub](https://docs.github.com/articles/synchronizing-teams-between-your-identity-provider-and-github/)." + */ + delete: operations["teams/remove-membership-for-user-legacy"]; + }; + "/teams/{team_id}/projects": { + /** + * **Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [`List team projects`](https://docs.github.com/rest/reference/teams#list-team-projects) endpoint. + * + * Lists the organization projects for a team. + */ + get: operations["teams/list-projects-legacy"]; + }; + "/teams/{team_id}/projects/{project_id}": { + /** + * **Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [Check team permissions for a project](https://docs.github.com/rest/reference/teams#check-team-permissions-for-a-project) endpoint. + * + * Checks whether a team has `read`, `write`, or `admin` permissions for an organization project. The response includes projects inherited from a parent team. + */ + get: operations["teams/check-permissions-for-project-legacy"]; + /** + * **Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [Add or update team project permissions](https://docs.github.com/rest/reference/teams#add-or-update-team-project-permissions) endpoint. + * + * Adds an organization project to a team. To add a project to a team or update the team's permission on a project, the authenticated user must have `admin` permissions for the project. The project and team must be part of the same organization. + */ + put: operations["teams/add-or-update-project-permissions-legacy"]; + /** + * **Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [Remove a project from a team](https://docs.github.com/rest/reference/teams#remove-a-project-from-a-team) endpoint. + * + * Removes an organization project from a team. An organization owner or a team maintainer can remove any project from the team. To remove a project from a team as an organization member, the authenticated user must have `read` access to both the team and project, or `admin` access to the team or project. **Note:** This endpoint removes the project from the team, but does not delete it. + */ + delete: operations["teams/remove-project-legacy"]; + }; + "/teams/{team_id}/repos": { + /** **Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [List team repositories](https://docs.github.com/rest/reference/teams#list-team-repositories) endpoint. */ + get: operations["teams/list-repos-legacy"]; + }; + "/teams/{team_id}/repos/{owner}/{repo}": { + /** + * **Note**: Repositories inherited through a parent team will also be checked. + * + * **Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [Check team permissions for a repository](https://docs.github.com/rest/reference/teams#check-team-permissions-for-a-repository) endpoint. + * + * You can also get information about the specified repository, including what permissions the team grants on it, by passing the following custom [media type](https://docs.github.com/rest/overview/media-types/) via the `Accept` header: + */ + get: operations["teams/check-permissions-for-repo-legacy"]; + /** + * **Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new "[Add or update team repository permissions](https://docs.github.com/rest/reference/teams#add-or-update-team-repository-permissions)" endpoint. + * + * To add a repository to a team or update the team's permission on a repository, the authenticated user must have admin access to the repository, and must be able to see the team. The repository must be owned by the organization, or a direct fork of a repository owned by the organization. You will get a `422 Unprocessable Entity` status if you attempt to add a repository to a team that is not owned by the organization. + * + * Note that, if you choose not to pass any parameters, you'll need to set `Content-Length` to zero when calling out to this endpoint. For more information, see "[HTTP verbs](https://docs.github.com/rest/overview/resources-in-the-rest-api#http-verbs)." + */ + put: operations["teams/add-or-update-repo-permissions-legacy"]; + /** + * **Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [Remove a repository from a team](https://docs.github.com/rest/reference/teams#remove-a-repository-from-a-team) endpoint. + * + * If the authenticated user is an organization owner or a team maintainer, they can remove any repositories from the team. To remove a repository from a team as an organization member, the authenticated user must have admin access to the repository and must be able to see the team. NOTE: This does not delete the repository, it just removes it from the team. + */ + delete: operations["teams/remove-repo-legacy"]; + }; + "/teams/{team_id}/team-sync/group-mappings": { + /** + * **Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [`List IdP groups for a team`](https://docs.github.com/rest/reference/teams#list-idp-groups-for-a-team) endpoint. + * + * Team synchronization is available for organizations using GitHub Enterprise Cloud. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. + * + * List IdP groups connected to a team on GitHub. + */ + get: operations["teams/list-idp-groups-for-legacy"]; + /** + * **Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [`Create or update IdP group connections`](https://docs.github.com/rest/reference/teams#create-or-update-idp-group-connections) endpoint. + * + * Team synchronization is available for organizations using GitHub Enterprise Cloud. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. + * + * Creates, updates, or removes a connection between a team and an IdP group. When adding groups to a team, you must include all new and existing groups to avoid replacing existing groups with the new ones. Specifying an empty `groups` array will remove all connections for a team. + */ + patch: operations["teams/create-or-update-idp-group-connections-legacy"]; + }; + "/teams/{team_id}/teams": { + /** **Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [`List child teams`](https://docs.github.com/rest/reference/teams#list-child-teams) endpoint. */ + get: operations["teams/list-child-legacy"]; + }; + "/user": { + /** + * If the authenticated user is authenticated through basic authentication or OAuth with the `user` scope, then the response lists public and private profile information. + * + * If the authenticated user is authenticated through OAuth without the `user` scope, then the response lists only public profile information. + */ + get: operations["users/get-authenticated"]; + /** **Note:** If your email is set to private and you send an `email` parameter as part of this request to update your profile, your privacy settings are still enforced: the email address will not be displayed on your public profile or via the API. */ + patch: operations["users/update-authenticated"]; + }; + "/user/blocks": { + /** List the users you've blocked on your personal account. */ + get: operations["users/list-blocked-by-authenticated-user"]; + }; + "/user/blocks/{username}": { + get: operations["users/check-blocked"]; + put: operations["users/block"]; + delete: operations["users/unblock"]; + }; + "/user/codespaces": { + /** + * Lists the authenticated user's codespaces. + * + * You must authenticate using an access token with the `codespace` scope to use this endpoint. + * + * GitHub Apps must have read access to the `codespaces` repository permission to use this endpoint. + */ + get: operations["codespaces/list-for-authenticated-user"]; + /** + * Creates a new codespace, owned by the authenticated user. + * + * This endpoint requires either a `repository_id` OR a `pull_request` but not both. + * + * You must authenticate using an access token with the `codespace` scope to use this endpoint. + * + * GitHub Apps must have write access to the `codespaces` repository permission to use this endpoint. + */ + post: operations["codespaces/create-for-authenticated-user"]; + }; + "/user/codespaces/secrets": { + /** + * Lists all secrets available for a user's Codespaces without revealing their + * encrypted values. + * + * You must authenticate using an access token with the `codespace` or `codespace:secrets` scope to use this endpoint. User must have Codespaces access to use this endpoint. + * + * GitHub Apps must have read access to the `codespaces_user_secrets` user permission to use this endpoint. + */ + get: operations["codespaces/list-secrets-for-authenticated-user"]; + }; + "/user/codespaces/secrets/public-key": { + /** + * Gets your public key, which you need to encrypt secrets. You need to encrypt a secret before you can create or update secrets. + * + * You must authenticate using an access token with the `codespace` or `codespace:secrets` scope to use this endpoint. User must have Codespaces access to use this endpoint. + * + * GitHub Apps must have read access to the `codespaces_user_secrets` user permission to use this endpoint. + */ + get: operations["codespaces/get-public-key-for-authenticated-user"]; + }; + "/user/codespaces/secrets/{secret_name}": { + /** + * Gets a secret available to a user's codespaces without revealing its encrypted value. + * + * You must authenticate using an access token with the `codespace` or `codespace:secrets` scope to use this endpoint. User must have Codespaces access to use this endpoint. + * + * GitHub Apps must have read access to the `codespaces_user_secrets` user permission to use this endpoint. + */ + get: operations["codespaces/get-secret-for-authenticated-user"]; + /** + * Creates or updates a secret for a user's codespace with an encrypted value. Encrypt your secret using + * [LibSodium](https://libsodium.gitbook.io/doc/bindings_for_other_languages). + * + * You must authenticate using an access token with the `codespace` or `codespace:secrets` scope to use this endpoint. User must also have Codespaces access to use this endpoint. + * + * GitHub Apps must have read access to the `codespaces_user_secrets` user permission and `codespaces_secrets` repository permission on all referenced repositories to use this endpoint. + * + * #### Example encrypting a secret using Node.js + * + * Encrypt your secret using the [tweetsodium](https://github.com/github/tweetsodium) library. + * + * ``` + * const sodium = require('tweetsodium'); + * + * const key = "base64-encoded-public-key"; + * const value = "plain-text-secret"; + * + * // Convert the message and key to Uint8Array's (Buffer implements that interface) + * const messageBytes = Buffer.from(value); + * const keyBytes = Buffer.from(key, 'base64'); + * + * // Encrypt using LibSodium. + * const encryptedBytes = sodium.seal(messageBytes, keyBytes); + * + * // Base64 the encrypted secret + * const encrypted = Buffer.from(encryptedBytes).toString('base64'); + * + * console.log(encrypted); + * ``` + * + * + * #### Example encrypting a secret using Python + * + * Encrypt your secret using [pynacl](https://pynacl.readthedocs.io/en/latest/public/#nacl-public-sealedbox) with Python 3. + * + * ``` + * from base64 import b64encode + * from nacl import encoding, public + * + * def encrypt(public_key: str, secret_value: str) -> str: + * """Encrypt a Unicode string using the public key.""" + * public_key = public.PublicKey(public_key.encode("utf-8"), encoding.Base64Encoder()) + * sealed_box = public.SealedBox(public_key) + * encrypted = sealed_box.encrypt(secret_value.encode("utf-8")) + * return b64encode(encrypted).decode("utf-8") + * ``` + * + * #### Example encrypting a secret using C# + * + * Encrypt your secret using the [Sodium.Core](https://www.nuget.org/packages/Sodium.Core/) package. + * + * ``` + * var secretValue = System.Text.Encoding.UTF8.GetBytes("mySecret"); + * var publicKey = Convert.FromBase64String("2Sg8iYjAxxmI2LvUXpJjkYrMxURPc8r+dB7TJyvvcCU="); + * + * var sealedPublicKeyBox = Sodium.SealedPublicKeyBox.Create(secretValue, publicKey); + * + * Console.WriteLine(Convert.ToBase64String(sealedPublicKeyBox)); + * ``` + * + * #### Example encrypting a secret using Ruby + * + * Encrypt your secret using the [rbnacl](https://github.com/RubyCrypto/rbnacl) gem. + * + * ```ruby + * require "rbnacl" + * require "base64" + * + * key = Base64.decode64("+ZYvJDZMHUfBkJdyq5Zm9SKqeuBQ4sj+6sfjlH4CgG0=") + * public_key = RbNaCl::PublicKey.new(key) + * + * box = RbNaCl::Boxes::Sealed.from_public_key(public_key) + * encrypted_secret = box.encrypt("my_secret") + * + * # Print the base64 encoded secret + * puts Base64.strict_encode64(encrypted_secret) + * ``` + */ + put: operations["codespaces/create-or-update-secret-for-authenticated-user"]; + /** + * Deletes a secret from a user's codespaces using the secret name. Deleting the secret will remove access from all codespaces that were allowed to access the secret. + * + * You must authenticate using an access token with the `codespace` or `codespace:secrets` scope to use this endpoint. User must have Codespaces access to use this endpoint. + * + * GitHub Apps must have write access to the `codespaces_user_secrets` user permission to use this endpoint. + */ + delete: operations["codespaces/delete-secret-for-authenticated-user"]; + }; + "/user/codespaces/secrets/{secret_name}/repositories": { + /** + * List the repositories that have been granted the ability to use a user's codespace secret. + * + * You must authenticate using an access token with the `codespace` or `codespace:secrets` scope to use this endpoint. User must have Codespaces access to use this endpoint. + * + * GitHub Apps must have read access to the `codespaces_user_secrets` user permission and write access to the `codespaces_secrets` repository permission on all referenced repositories to use this endpoint. + */ + get: operations["codespaces/list-repositories-for-secret-for-authenticated-user"]; + /** + * Select the repositories that will use a user's codespace secret. + * + * You must authenticate using an access token with the `codespace` or `codespace:secrets` scope to use this endpoint. User must have Codespaces access to use this endpoint. + * + * GitHub Apps must have write access to the `codespaces_user_secrets` user permission and write access to the `codespaces_secrets` repository permission on all referenced repositories to use this endpoint. + */ + put: operations["codespaces/set-repositories-for-secret-for-authenticated-user"]; + }; + "/user/codespaces/secrets/{secret_name}/repositories/{repository_id}": { + /** + * Adds a repository to the selected repositories for a user's codespace secret. + * You must authenticate using an access token with the `codespace` or `codespace:secrets` scope to use this endpoint. User must have Codespaces access to use this endpoint. + * GitHub Apps must have write access to the `codespaces_user_secrets` user permission and write access to the `codespaces_secrets` repository permission on the referenced repository to use this endpoint. + */ + put: operations["codespaces/add-repository-for-secret-for-authenticated-user"]; + /** + * Removes a repository from the selected repositories for a user's codespace secret. + * You must authenticate using an access token with the `codespace` or `codespace:secrets` scope to use this endpoint. User must have Codespaces access to use this endpoint. + * GitHub Apps must have write access to the `codespaces_user_secrets` user permission to use this endpoint. + */ + delete: operations["codespaces/remove-repository-for-secret-for-authenticated-user"]; + }; + "/user/codespaces/{codespace_name}": { + /** + * Gets information about a user's codespace. + * + * You must authenticate using an access token with the `codespace` scope to use this endpoint. + * + * GitHub Apps must have read access to the `codespaces` repository permission to use this endpoint. + */ + get: operations["codespaces/get-for-authenticated-user"]; + /** + * Deletes a user's codespace. + * + * You must authenticate using an access token with the `codespace` scope to use this endpoint. + * + * GitHub Apps must have write access to the `codespaces` repository permission to use this endpoint. + */ + delete: operations["codespaces/delete-for-authenticated-user"]; + /** + * Updates a codespace owned by the authenticated user. Currently only the codespace's machine type and recent folders can be modified using this endpoint. + * + * If you specify a new machine type it will be applied the next time your codespace is started. + * + * You must authenticate using an access token with the `codespace` scope to use this endpoint. + * + * GitHub Apps must have write access to the `codespaces` repository permission to use this endpoint. + */ + patch: operations["codespaces/update-for-authenticated-user"]; + }; + "/user/codespaces/{codespace_name}/exports": { + /** + * Triggers an export of the specified codespace and returns a URL and ID where the status of the export can be monitored. + * + * You must authenticate using a personal access token with the `codespace` scope to use this endpoint. + * + * GitHub Apps must have write access to the `codespaces_lifecycle_admin` repository permission to use this endpoint. + */ + post: operations["codespaces/export-for-authenticated-user"]; + }; + "/user/codespaces/{codespace_name}/exports/{export_id}": { + /** + * Gets information about an export of a codespace. + * + * You must authenticate using a personal access token with the `codespace` scope to use this endpoint. + * + * GitHub Apps must have read access to the `codespaces_lifecycle_admin` repository permission to use this endpoint. + */ + get: operations["codespaces/get-export-details-for-authenticated-user"]; + }; + "/user/codespaces/{codespace_name}/machines": { + /** + * List the machine types a codespace can transition to use. + * + * You must authenticate using an access token with the `codespace` scope to use this endpoint. + * + * GitHub Apps must have read access to the `codespaces_metadata` repository permission to use this endpoint. + */ + get: operations["codespaces/codespace-machines-for-authenticated-user"]; + }; + "/user/codespaces/{codespace_name}/start": { + /** + * Starts a user's codespace. + * + * You must authenticate using an access token with the `codespace` scope to use this endpoint. + * + * GitHub Apps must have write access to the `codespaces_lifecycle_admin` repository permission to use this endpoint. + */ + post: operations["codespaces/start-for-authenticated-user"]; + }; + "/user/codespaces/{codespace_name}/stop": { + /** + * Stops a user's codespace. + * + * You must authenticate using an access token with the `codespace` scope to use this endpoint. + * + * GitHub Apps must have write access to the `codespaces_lifecycle_admin` repository permission to use this endpoint. + */ + post: operations["codespaces/stop-for-authenticated-user"]; + }; + "/user/email/visibility": { + /** Sets the visibility for your primary email addresses. */ + patch: operations["users/set-primary-email-visibility-for-authenticated-user"]; + }; + "/user/emails": { + /** Lists all of your email addresses, and specifies which one is visible to the public. This endpoint is accessible with the `user:email` scope. */ + get: operations["users/list-emails-for-authenticated-user"]; + /** This endpoint is accessible with the `user` scope. */ + post: operations["users/add-email-for-authenticated-user"]; + /** This endpoint is accessible with the `user` scope. */ + delete: operations["users/delete-email-for-authenticated-user"]; + }; + "/user/followers": { + /** Lists the people following the authenticated user. */ + get: operations["users/list-followers-for-authenticated-user"]; + }; + "/user/following": { + /** Lists the people who the authenticated user follows. */ + get: operations["users/list-followed-by-authenticated-user"]; + }; + "/user/following/{username}": { + get: operations["users/check-person-is-followed-by-authenticated"]; + /** + * Note that you'll need to set `Content-Length` to zero when calling out to this endpoint. For more information, see "[HTTP verbs](https://docs.github.com/rest/overview/resources-in-the-rest-api#http-verbs)." + * + * Following a user requires the user to be logged in and authenticated with basic auth or OAuth with the `user:follow` scope. + */ + put: operations["users/follow"]; + /** Unfollowing a user requires the user to be logged in and authenticated with basic auth or OAuth with the `user:follow` scope. */ + delete: operations["users/unfollow"]; + }; + "/user/gpg_keys": { + /** Lists the current user's GPG keys. Requires that you are authenticated via Basic Auth or via OAuth with at least `read:gpg_key` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). */ + get: operations["users/list-gpg-keys-for-authenticated-user"]; + /** Adds a GPG key to the authenticated user's GitHub account. Requires that you are authenticated via Basic Auth, or OAuth with at least `write:gpg_key` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). */ + post: operations["users/create-gpg-key-for-authenticated-user"]; + }; + "/user/gpg_keys/{gpg_key_id}": { + /** View extended details for a single GPG key. Requires that you are authenticated via Basic Auth or via OAuth with at least `read:gpg_key` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). */ + get: operations["users/get-gpg-key-for-authenticated-user"]; + /** Removes a GPG key from the authenticated user's GitHub account. Requires that you are authenticated via Basic Auth or via OAuth with at least `admin:gpg_key` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). */ + delete: operations["users/delete-gpg-key-for-authenticated-user"]; + }; + "/user/installations": { + /** + * Lists installations of your GitHub App that the authenticated user has explicit permission (`:read`, `:write`, or `:admin`) to access. + * + * You must use a [user-to-server OAuth access token](https://docs.github.com/apps/building-github-apps/identifying-and-authorizing-users-for-github-apps/#identifying-users-on-your-site), created for a user who has authorized your GitHub App, to access this endpoint. + * + * The authenticated user has explicit permission to access repositories they own, repositories where they are a collaborator, and repositories that they can access through an organization membership. + * + * You can find the permissions for the installation under the `permissions` key. + */ + get: operations["apps/list-installations-for-authenticated-user"]; + }; + "/user/installations/{installation_id}/repositories": { + /** + * List repositories that the authenticated user has explicit permission (`:read`, `:write`, or `:admin`) to access for an installation. + * + * The authenticated user has explicit permission to access repositories they own, repositories where they are a collaborator, and repositories that they can access through an organization membership. + * + * You must use a [user-to-server OAuth access token](https://docs.github.com/apps/building-github-apps/identifying-and-authorizing-users-for-github-apps/#identifying-users-on-your-site), created for a user who has authorized your GitHub App, to access this endpoint. + * + * The access the user has to each repository is included in the hash under the `permissions` key. + */ + get: operations["apps/list-installation-repos-for-authenticated-user"]; + }; + "/user/installations/{installation_id}/repositories/{repository_id}": { + /** + * Add a single repository to an installation. The authenticated user must have admin access to the repository. + * + * You must use a personal access token (which you can create via the [command line](https://docs.github.com/github/authenticating-to-github/creating-a-personal-access-token) or [Basic Authentication](https://docs.github.com/rest/overview/other-authentication-methods#basic-authentication)) to access this endpoint. + */ + put: operations["apps/add-repo-to-installation-for-authenticated-user"]; + /** + * Remove a single repository from an installation. The authenticated user must have admin access to the repository. + * + * You must use a personal access token (which you can create via the [command line](https://docs.github.com/github/authenticating-to-github/creating-a-personal-access-token) or [Basic Authentication](https://docs.github.com/rest/overview/other-authentication-methods#basic-authentication)) to access this endpoint. + */ + delete: operations["apps/remove-repo-from-installation-for-authenticated-user"]; + }; + "/user/interaction-limits": { + /** Shows which type of GitHub user can interact with your public repositories and when the restriction expires. */ + get: operations["interactions/get-restrictions-for-authenticated-user"]; + /** Temporarily restricts which type of GitHub user can interact with your public repositories. Setting the interaction limit at the user level will overwrite any interaction limits that are set for individual repositories owned by the user. */ + put: operations["interactions/set-restrictions-for-authenticated-user"]; + /** Removes any interaction restrictions from your public repositories. */ + delete: operations["interactions/remove-restrictions-for-authenticated-user"]; + }; + "/user/issues": { + /** + * List issues across owned and member repositories assigned to the authenticated user. + * + * **Note**: GitHub's REST API v3 considers every pull request an issue, but not every issue is a pull request. For this + * reason, "Issues" endpoints may return both issues and pull requests in the response. You can identify pull requests by + * the `pull_request` key. Be aware that the `id` of a pull request returned from "Issues" endpoints will be an _issue id_. To find out the pull + * request id, use the "[List pull requests](https://docs.github.com/rest/reference/pulls#list-pull-requests)" endpoint. + */ + get: operations["issues/list-for-authenticated-user"]; + }; + "/user/keys": { + /** Lists the public SSH keys for the authenticated user's GitHub account. Requires that you are authenticated via Basic Auth or via OAuth with at least `read:public_key` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). */ + get: operations["users/list-public-ssh-keys-for-authenticated-user"]; + /** Adds a public SSH key to the authenticated user's GitHub account. Requires that you are authenticated via Basic Auth, or OAuth with at least `write:public_key` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). */ + post: operations["users/create-public-ssh-key-for-authenticated-user"]; + }; + "/user/keys/{key_id}": { + /** View extended details for a single public SSH key. Requires that you are authenticated via Basic Auth or via OAuth with at least `read:public_key` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). */ + get: operations["users/get-public-ssh-key-for-authenticated-user"]; + /** Removes a public SSH key from the authenticated user's GitHub account. Requires that you are authenticated via Basic Auth or via OAuth with at least `admin:public_key` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). */ + delete: operations["users/delete-public-ssh-key-for-authenticated-user"]; + }; + "/user/marketplace_purchases": { + /** Lists the active subscriptions for the authenticated user. You must use a [user-to-server OAuth access token](https://docs.github.com/apps/building-github-apps/identifying-and-authorizing-users-for-github-apps/#identifying-users-on-your-site), created for a user who has authorized your GitHub App, to access this endpoint. . OAuth Apps must authenticate using an [OAuth token](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/). */ + get: operations["apps/list-subscriptions-for-authenticated-user"]; + }; + "/user/marketplace_purchases/stubbed": { + /** Lists the active subscriptions for the authenticated user. You must use a [user-to-server OAuth access token](https://docs.github.com/apps/building-github-apps/identifying-and-authorizing-users-for-github-apps/#identifying-users-on-your-site), created for a user who has authorized your GitHub App, to access this endpoint. . OAuth Apps must authenticate using an [OAuth token](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/). */ + get: operations["apps/list-subscriptions-for-authenticated-user-stubbed"]; + }; + "/user/memberships/orgs": { + get: operations["orgs/list-memberships-for-authenticated-user"]; + }; + "/user/memberships/orgs/{org}": { + get: operations["orgs/get-membership-for-authenticated-user"]; + patch: operations["orgs/update-membership-for-authenticated-user"]; + }; + "/user/migrations": { + /** Lists all migrations a user has started. */ + get: operations["migrations/list-for-authenticated-user"]; + /** Initiates the generation of a user migration archive. */ + post: operations["migrations/start-for-authenticated-user"]; + }; + "/user/migrations/{migration_id}": { + /** + * Fetches a single user migration. The response includes the `state` of the migration, which can be one of the following values: + * + * * `pending` - the migration hasn't started yet. + * * `exporting` - the migration is in progress. + * * `exported` - the migration finished successfully. + * * `failed` - the migration failed. + * + * Once the migration has been `exported` you can [download the migration archive](https://docs.github.com/rest/reference/migrations#download-a-user-migration-archive). + */ + get: operations["migrations/get-status-for-authenticated-user"]; + }; + "/user/migrations/{migration_id}/archive": { + /** + * Fetches the URL to download the migration archive as a `tar.gz` file. Depending on the resources your repository uses, the migration archive can contain JSON files with data for these objects: + * + * * attachments + * * bases + * * commit\_comments + * * issue\_comments + * * issue\_events + * * issues + * * milestones + * * organizations + * * projects + * * protected\_branches + * * pull\_request\_reviews + * * pull\_requests + * * releases + * * repositories + * * review\_comments + * * schema + * * users + * + * The archive will also contain an `attachments` directory that includes all attachment files uploaded to GitHub.com and a `repositories` directory that contains the repository's Git data. + */ + get: operations["migrations/get-archive-for-authenticated-user"]; + /** Deletes a previous migration archive. Downloadable migration archives are automatically deleted after seven days. Migration metadata, which is returned in the [List user migrations](https://docs.github.com/rest/reference/migrations#list-user-migrations) and [Get a user migration status](https://docs.github.com/rest/reference/migrations#get-a-user-migration-status) endpoints, will continue to be available even after an archive is deleted. */ + delete: operations["migrations/delete-archive-for-authenticated-user"]; + }; + "/user/migrations/{migration_id}/repos/{repo_name}/lock": { + /** Unlocks a repository. You can lock repositories when you [start a user migration](https://docs.github.com/rest/reference/migrations#start-a-user-migration). Once the migration is complete you can unlock each repository to begin using it again or [delete the repository](https://docs.github.com/rest/reference/repos#delete-a-repository) if you no longer need the source data. Returns a status of `404 Not Found` if the repository is not locked. */ + delete: operations["migrations/unlock-repo-for-authenticated-user"]; + }; + "/user/migrations/{migration_id}/repositories": { + /** Lists all the repositories for this user migration. */ + get: operations["migrations/list-repos-for-authenticated-user"]; + }; + "/user/orgs": { + /** + * List organizations for the authenticated user. + * + * **OAuth scope requirements** + * + * This only lists organizations that your authorization allows you to operate on in some way (e.g., you can list teams with `read:org` scope, you can publicize your organization membership with `user` scope, etc.). Therefore, this API requires at least `user` or `read:org` scope. OAuth requests with insufficient scope receive a `403 Forbidden` response. + */ + get: operations["orgs/list-for-authenticated-user"]; + }; + "/user/packages": { + /** + * Lists packages owned by the authenticated user within the user's namespace. + * + * To use this endpoint, you must authenticate using an access token with the `packages:read` scope. + * If `package_type` is not `container`, your token must also include the `repo` scope. + */ + get: operations["packages/list-packages-for-authenticated-user"]; + }; + "/user/packages/{package_type}/{package_name}": { + /** + * Gets a specific package for a package owned by the authenticated user. + * + * To use this endpoint, you must authenticate using an access token with the `packages:read` scope. + * If `package_type` is not `container`, your token must also include the `repo` scope. + */ + get: operations["packages/get-package-for-authenticated-user"]; + /** + * Deletes a package owned by the authenticated user. You cannot delete a public package if any version of the package has more than 5,000 downloads. In this scenario, contact GitHub support for further assistance. + * + * To use this endpoint, you must authenticate using an access token with the `packages:read` and `packages:delete` scopes. + * If `package_type` is not `container`, your token must also include the `repo` scope. + */ + delete: operations["packages/delete-package-for-authenticated-user"]; + }; + "/user/packages/{package_type}/{package_name}/restore": { + /** + * Restores a package owned by the authenticated user. + * + * You can restore a deleted package under the following conditions: + * - The package was deleted within the last 30 days. + * - The same package namespace and version is still available and not reused for a new package. If the same package namespace is not available, you will not be able to restore your package. In this scenario, to restore the deleted package, you must delete the new package that uses the deleted package's namespace first. + * + * To use this endpoint, you must authenticate using an access token with the `packages:read` and `packages:write` scopes. If `package_type` is not `container`, your token must also include the `repo` scope. + */ + post: operations["packages/restore-package-for-authenticated-user"]; + }; + "/user/packages/{package_type}/{package_name}/versions": { + /** + * Returns all package versions for a package owned by the authenticated user. + * + * To use this endpoint, you must authenticate using an access token with the `packages:read` scope. + * If `package_type` is not `container`, your token must also include the `repo` scope. + */ + get: operations["packages/get-all-package-versions-for-package-owned-by-authenticated-user"]; + }; + "/user/packages/{package_type}/{package_name}/versions/{package_version_id}": { + /** + * Gets a specific package version for a package owned by the authenticated user. + * + * To use this endpoint, you must authenticate using an access token with the `packages:read` scope. + * If `package_type` is not `container`, your token must also include the `repo` scope. + */ + get: operations["packages/get-package-version-for-authenticated-user"]; + /** + * Deletes a specific package version for a package owned by the authenticated user. If the package is public and the package version has more than 5,000 downloads, you cannot delete the package version. In this scenario, contact GitHub support for further assistance. + * + * To use this endpoint, you must have admin permissions in the organization and authenticate using an access token with the `packages:read` and `packages:delete` scopes. + * If `package_type` is not `container`, your token must also include the `repo` scope. + */ + delete: operations["packages/delete-package-version-for-authenticated-user"]; + }; + "/user/packages/{package_type}/{package_name}/versions/{package_version_id}/restore": { + /** + * Restores a package version owned by the authenticated user. + * + * You can restore a deleted package version under the following conditions: + * - The package was deleted within the last 30 days. + * - The same package namespace and version is still available and not reused for a new package. If the same package namespace is not available, you will not be able to restore your package. In this scenario, to restore the deleted package, you must delete the new package that uses the deleted package's namespace first. + * + * To use this endpoint, you must authenticate using an access token with the `packages:read` and `packages:write` scopes. If `package_type` is not `container`, your token must also include the `repo` scope. + */ + post: operations["packages/restore-package-version-for-authenticated-user"]; + }; + "/user/projects": { + /** Creates a user project board. Returns a `410 Gone` status if the user does not have existing classic projects. If you do not have sufficient privileges to perform this action, a `401 Unauthorized` or `410 Gone` status is returned. */ + post: operations["projects/create-for-authenticated-user"]; + }; + "/user/public_emails": { + /** Lists your publicly visible email address, which you can set with the [Set primary email visibility for the authenticated user](https://docs.github.com/rest/reference/users#set-primary-email-visibility-for-the-authenticated-user) endpoint. This endpoint is accessible with the `user:email` scope. */ + get: operations["users/list-public-emails-for-authenticated-user"]; + }; + "/user/repos": { + /** + * Lists repositories that the authenticated user has explicit permission (`:read`, `:write`, or `:admin`) to access. + * + * The authenticated user has explicit permission to access repositories they own, repositories where they are a collaborator, and repositories that they can access through an organization membership. + */ + get: operations["repos/list-for-authenticated-user"]; + /** + * Creates a new repository for the authenticated user. + * + * **OAuth scope requirements** + * + * When using [OAuth](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/), authorizations must include: + * + * * `public_repo` scope or `repo` scope to create a public repository. Note: For GitHub AE, use `repo` scope to create an internal repository. + * * `repo` scope to create a private repository. + */ + post: operations["repos/create-for-authenticated-user"]; + }; + "/user/repository_invitations": { + /** When authenticating as a user, this endpoint will list all currently open repository invitations for that user. */ + get: operations["repos/list-invitations-for-authenticated-user"]; + }; + "/user/repository_invitations/{invitation_id}": { + delete: operations["repos/decline-invitation-for-authenticated-user"]; + patch: operations["repos/accept-invitation-for-authenticated-user"]; + }; + "/user/starred": { + /** + * Lists repositories the authenticated user has starred. + * + * You can also find out _when_ stars were created by passing the following custom [media type](https://docs.github.com/rest/overview/media-types/) via the `Accept` header: + */ + get: operations["activity/list-repos-starred-by-authenticated-user"]; + }; + "/user/starred/{owner}/{repo}": { + get: operations["activity/check-repo-is-starred-by-authenticated-user"]; + /** Note that you'll need to set `Content-Length` to zero when calling out to this endpoint. For more information, see "[HTTP verbs](https://docs.github.com/rest/overview/resources-in-the-rest-api#http-verbs)." */ + put: operations["activity/star-repo-for-authenticated-user"]; + delete: operations["activity/unstar-repo-for-authenticated-user"]; + }; + "/user/subscriptions": { + /** Lists repositories the authenticated user is watching. */ + get: operations["activity/list-watched-repos-for-authenticated-user"]; + }; + "/user/teams": { + /** List all of the teams across all of the organizations to which the authenticated user belongs. This method requires `user`, `repo`, or `read:org` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/) when authenticating via [OAuth](https://docs.github.com/apps/building-oauth-apps/). */ + get: operations["teams/list-for-authenticated-user"]; + }; + "/users": { + /** + * Lists all users, in the order that they signed up on GitHub. This list includes personal user accounts and organization accounts. + * + * Note: Pagination is powered exclusively by the `since` parameter. Use the [Link header](https://docs.github.com/rest/overview/resources-in-the-rest-api#link-header) to get the URL for the next page of users. + */ + get: operations["users/list"]; + }; + "/users/{username}": { + /** + * Provides publicly available information about someone with a GitHub account. + * + * GitHub Apps with the `Plan` user permission can use this endpoint to retrieve information about a user's GitHub plan. The GitHub App must be authenticated as a user. See "[Identifying and authorizing users for GitHub Apps](https://docs.github.com/apps/building-github-apps/identifying-and-authorizing-users-for-github-apps/)" for details about authentication. For an example response, see 'Response with GitHub plan information' below" + * + * The `email` key in the following response is the publicly visible email address from your GitHub [profile page](https://github.com/settings/profile). When setting up your profile, you can select a primary email address to be “public” which provides an email entry for this endpoint. If you do not set a public email address for `email`, then it will have a value of `null`. You only see publicly visible email addresses when authenticated with GitHub. For more information, see [Authentication](https://docs.github.com/rest/overview/resources-in-the-rest-api#authentication). + * + * The Emails API enables you to list all of your email addresses, and toggle a primary email to be visible publicly. For more information, see "[Emails API](https://docs.github.com/rest/reference/users#emails)". + */ + get: operations["users/get-by-username"]; + }; + "/users/{username}/events": { + /** If you are authenticated as the given user, you will see your private events. Otherwise, you'll only see public events. */ + get: operations["activity/list-events-for-authenticated-user"]; + }; + "/users/{username}/events/orgs/{org}": { + /** This is the user's organization dashboard. You must be authenticated as the user to view this. */ + get: operations["activity/list-org-events-for-authenticated-user"]; + }; + "/users/{username}/events/public": { + get: operations["activity/list-public-events-for-user"]; + }; + "/users/{username}/followers": { + /** Lists the people following the specified user. */ + get: operations["users/list-followers-for-user"]; + }; + "/users/{username}/following": { + /** Lists the people who the specified user follows. */ + get: operations["users/list-following-for-user"]; + }; + "/users/{username}/following/{target_user}": { + get: operations["users/check-following-for-user"]; + }; + "/users/{username}/gists": { + /** Lists public gists for the specified user: */ + get: operations["gists/list-for-user"]; + }; + "/users/{username}/gpg_keys": { + /** Lists the GPG keys for a user. This information is accessible by anyone. */ + get: operations["users/list-gpg-keys-for-user"]; + }; + "/users/{username}/hovercard": { + /** + * Provides hovercard information when authenticated through basic auth or OAuth with the `repo` scope. You can find out more about someone in relation to their pull requests, issues, repositories, and organizations. + * + * The `subject_type` and `subject_id` parameters provide context for the person's hovercard, which returns more information than without the parameters. For example, if you wanted to find out more about `octocat` who owns the `Spoon-Knife` repository via cURL, it would look like this: + * + * ```shell + * curl -u username:token + * https://api.github.com/users/octocat/hovercard?subject_type=repository&subject_id=1300192 + * ``` + */ + get: operations["users/get-context-for-user"]; + }; + "/users/{username}/installation": { + /** + * Enables an authenticated GitHub App to find the user’s installation information. + * + * You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. + */ + get: operations["apps/get-user-installation"]; + }; + "/users/{username}/keys": { + /** Lists the _verified_ public SSH keys for a user. This is accessible by anyone. */ + get: operations["users/list-public-keys-for-user"]; + }; + "/users/{username}/orgs": { + /** + * List [public organization memberships](https://docs.github.com/articles/publicizing-or-concealing-organization-membership) for the specified user. + * + * This method only lists _public_ memberships, regardless of authentication. If you need to fetch all of the organization memberships (public and private) for the authenticated user, use the [List organizations for the authenticated user](https://docs.github.com/rest/reference/orgs#list-organizations-for-the-authenticated-user) API instead. + */ + get: operations["orgs/list-for-user"]; + }; + "/users/{username}/packages": { + /** + * Lists all packages in a user's namespace for which the requesting user has access. + * + * To use this endpoint, you must authenticate using an access token with the `packages:read` scope. + * If `package_type` is not `container`, your token must also include the `repo` scope. + */ + get: operations["packages/list-packages-for-user"]; + }; + "/users/{username}/packages/{package_type}/{package_name}": { + /** + * Gets a specific package metadata for a public package owned by a user. + * + * To use this endpoint, you must authenticate using an access token with the `packages:read` scope. + * If `package_type` is not `container`, your token must also include the `repo` scope. + */ + get: operations["packages/get-package-for-user"]; + /** + * Deletes an entire package for a user. You cannot delete a public package if any version of the package has more than 5,000 downloads. In this scenario, contact GitHub support for further assistance. + * + * To use this endpoint, you must authenticate using an access token with the `packages:read` and `packages:delete` scopes. In addition: + * - If `package_type` is not `container`, your token must also include the `repo` scope. + * - If `package_type` is `container`, you must also have admin permissions to the container you want to delete. + */ + delete: operations["packages/delete-package-for-user"]; + }; + "/users/{username}/packages/{package_type}/{package_name}/restore": { + /** + * Restores an entire package for a user. + * + * You can restore a deleted package under the following conditions: + * - The package was deleted within the last 30 days. + * - The same package namespace and version is still available and not reused for a new package. If the same package namespace is not available, you will not be able to restore your package. In this scenario, to restore the deleted package, you must delete the new package that uses the deleted package's namespace first. + * + * To use this endpoint, you must authenticate using an access token with the `packages:read` and `packages:write` scopes. In addition: + * - If `package_type` is not `container`, your token must also include the `repo` scope. + * - If `package_type` is `container`, you must also have admin permissions to the container that you want to restore. + */ + post: operations["packages/restore-package-for-user"]; + }; + "/users/{username}/packages/{package_type}/{package_name}/versions": { + /** + * Returns all package versions for a public package owned by a specified user. + * + * To use this endpoint, you must authenticate using an access token with the `packages:read` scope. + * If `package_type` is not `container`, your token must also include the `repo` scope. + */ + get: operations["packages/get-all-package-versions-for-package-owned-by-user"]; + }; + "/users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}": { + /** + * Gets a specific package version for a public package owned by a specified user. + * + * At this time, to use this endpoint, you must authenticate using an access token with the `packages:read` scope. + * If `package_type` is not `container`, your token must also include the `repo` scope. + */ + get: operations["packages/get-package-version-for-user"]; + /** + * Deletes a specific package version for a user. If the package is public and the package version has more than 5,000 downloads, you cannot delete the package version. In this scenario, contact GitHub support for further assistance. + * + * To use this endpoint, you must authenticate using an access token with the `packages:read` and `packages:delete` scopes. In addition: + * - If `package_type` is not `container`, your token must also include the `repo` scope. + * - If `package_type` is `container`, you must also have admin permissions to the container you want to delete. + */ + delete: operations["packages/delete-package-version-for-user"]; + }; + "/users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}/restore": { + /** + * Restores a specific package version for a user. + * + * You can restore a deleted package under the following conditions: + * - The package was deleted within the last 30 days. + * - The same package namespace and version is still available and not reused for a new package. If the same package namespace is not available, you will not be able to restore your package. In this scenario, to restore the deleted package, you must delete the new package that uses the deleted package's namespace first. + * + * To use this endpoint, you must authenticate using an access token with the `packages:read` and `packages:write` scopes. In addition: + * - If `package_type` is not `container`, your token must also include the `repo` scope. + * - If `package_type` is `container`, you must also have admin permissions to the container that you want to restore. + */ + post: operations["packages/restore-package-version-for-user"]; + }; + "/users/{username}/projects": { + get: operations["projects/list-for-user"]; + }; + "/users/{username}/received_events": { + /** These are events that you've received by watching repos and following users. If you are authenticated as the given user, you will see private events. Otherwise, you'll only see public events. */ + get: operations["activity/list-received-events-for-user"]; + }; + "/users/{username}/received_events/public": { + get: operations["activity/list-received-public-events-for-user"]; + }; + "/users/{username}/repos": { + /** Lists public repositories for the specified user. Note: For GitHub AE, this endpoint will list internal repositories for the specified user. */ + get: operations["repos/list-for-user"]; + }; + "/users/{username}/settings/billing/actions": { + /** + * Gets the summary of the free and paid GitHub Actions minutes used. + * + * Paid minutes only apply to workflows in private repositories that use GitHub-hosted runners. Minutes used is listed for each GitHub-hosted runner operating system. Any job re-runs are also included in the usage. The usage returned includes any minute multipliers for macOS and Windows runners, and is rounded up to the nearest whole minute. For more information, see "[Managing billing for GitHub Actions](https://docs.github.com/github/setting-up-and-managing-billing-and-payments-on-github/managing-billing-for-github-actions)". + * + * Access tokens must have the `user` scope. + */ + get: operations["billing/get-github-actions-billing-user"]; + }; + "/users/{username}/settings/billing/packages": { + /** + * Gets the free and paid storage used for GitHub Packages in gigabytes. + * + * Paid minutes only apply to packages stored for private repositories. For more information, see "[Managing billing for GitHub Packages](https://docs.github.com/github/setting-up-and-managing-billing-and-payments-on-github/managing-billing-for-github-packages)." + * + * Access tokens must have the `user` scope. + */ + get: operations["billing/get-github-packages-billing-user"]; + }; + "/users/{username}/settings/billing/shared-storage": { + /** + * Gets the estimated paid and estimated total storage used for GitHub Actions and GitHub Packages. + * + * Paid minutes only apply to packages stored for private repositories. For more information, see "[Managing billing for GitHub Packages](https://docs.github.com/github/setting-up-and-managing-billing-and-payments-on-github/managing-billing-for-github-packages)." + * + * Access tokens must have the `user` scope. + */ + get: operations["billing/get-shared-storage-billing-user"]; + }; + "/users/{username}/starred": { + /** + * Lists repositories a user has starred. + * + * You can also find out _when_ stars were created by passing the following custom [media type](https://docs.github.com/rest/overview/media-types/) via the `Accept` header: + */ + get: operations["activity/list-repos-starred-by-user"]; + }; + "/users/{username}/subscriptions": { + /** Lists repositories a user is watching. */ + get: operations["activity/list-repos-watched-by-user"]; + }; + "/zen": { + /** Get a random sentence from the Zen of GitHub */ + get: operations["meta/get-zen"]; + }; + "/repos/{owner}/{repo}/compare/{base}...{head}": { + /** + * **Deprecated**: Use `repos.compareCommitsWithBasehead()` (`GET /repos/{owner}/{repo}/compare/{basehead}`) instead. Both `:base` and `:head` must be branch names in `:repo`. To compare branches across other repositories in the same network as `:repo`, use the format `:branch`. + * + * The response from the API is equivalent to running the `git log base..head` command; however, commits are returned in chronological order. Pass the appropriate [media type](https://docs.github.com/rest/overview/media-types/#commits-commit-comparison-and-pull-requests) to fetch diff and patch formats. + * + * The response also includes details on the files that were changed between the two commits. This includes the status of the change (for example, if a file was added, removed, modified, or renamed), and details of the change itself. For example, files with a `renamed` status have a `previous_filename` field showing the previous filename of the file, and files with a `modified` status have a `patch` field showing the changes made to the file. + * + * **Working with large comparisons** + * + * To process a response with a large number of commits, you can use (`per_page` or `page`) to paginate the results. When using paging, the list of changed files is only returned with page 1, but includes all changed files for the entire comparison. For more information on working with pagination, see "[Traversing with pagination](/rest/guides/traversing-with-pagination)." + * + * When calling this API without any paging parameters (`per_page` or `page`), the returned list is limited to 250 commits and the last commit in the list is the most recent of the entire comparison. When a paging parameter is specified, the first commit in the returned list of each page is the earliest. + * + * **Signature verification object** + * + * The response will include a `verification` object that describes the result of verifying the commit's signature. The following fields are included in the `verification` object: + * + * | Name | Type | Description | + * | ---- | ---- | ----------- | + * | `verified` | `boolean` | Indicates whether GitHub considers the signature in this commit to be verified. | + * | `reason` | `string` | The reason for verified value. Possible values and their meanings are enumerated in table below. | + * | `signature` | `string` | The signature that was extracted from the commit. | + * | `payload` | `string` | The value that was signed. | + * + * These are the possible values for `reason` in the `verification` object: + * + * | Value | Description | + * | ----- | ----------- | + * | `expired_key` | The key that made the signature is expired. | + * | `not_signing_key` | The "signing" flag is not among the usage flags in the GPG key that made the signature. | + * | `gpgverify_error` | There was an error communicating with the signature verification service. | + * | `gpgverify_unavailable` | The signature verification service is currently unavailable. | + * | `unsigned` | The object does not include a signature. | + * | `unknown_signature_type` | A non-PGP signature was found in the commit. | + * | `no_user` | No user was associated with the `committer` email address in the commit. | + * | `unverified_email` | The `committer` email address in the commit was associated with a user, but the email address is not verified on her/his account. | + * | `bad_email` | The `committer` email address in the commit is not included in the identities of the PGP key that made the signature. | + * | `unknown_key` | The key that made the signature has not been registered with any user's account. | + * | `malformed_signature` | There was an error parsing the signature. | + * | `invalid` | The signature could not be cryptographically verified using the key whose key-id was found in the signature. | + * | `valid` | None of the above errors applied, so the signature is considered to be verified. | + */ + get: operations["repos/compare-commits"]; + }; +} + +export interface components { + schemas: { + root: { + /** Format: uri-template */ + current_user_url: string; + /** Format: uri-template */ + current_user_authorizations_html_url: string; + /** Format: uri-template */ + authorizations_url: string; + /** Format: uri-template */ + code_search_url: string; + /** Format: uri-template */ + commit_search_url: string; + /** Format: uri-template */ + emails_url: string; + /** Format: uri-template */ + emojis_url: string; + /** Format: uri-template */ + events_url: string; + /** Format: uri-template */ + feeds_url: string; + /** Format: uri-template */ + followers_url: string; + /** Format: uri-template */ + following_url: string; + /** Format: uri-template */ + gists_url: string; + /** Format: uri-template */ + hub_url: string; + /** Format: uri-template */ + issue_search_url: string; + /** Format: uri-template */ + issues_url: string; + /** Format: uri-template */ + keys_url: string; + /** Format: uri-template */ + label_search_url: string; + /** Format: uri-template */ + notifications_url: string; + /** Format: uri-template */ + organization_url: string; + /** Format: uri-template */ + organization_repositories_url: string; + /** Format: uri-template */ + organization_teams_url: string; + /** Format: uri-template */ + public_gists_url: string; + /** Format: uri-template */ + rate_limit_url: string; + /** Format: uri-template */ + repository_url: string; + /** Format: uri-template */ + repository_search_url: string; + /** Format: uri-template */ + current_user_repositories_url: string; + /** Format: uri-template */ + starred_url: string; + /** Format: uri-template */ + starred_gists_url: string; + /** Format: uri-template */ + topic_search_url?: string; + /** Format: uri-template */ + user_url: string; + /** Format: uri-template */ + user_organizations_url: string; + /** Format: uri-template */ + user_repositories_url: string; + /** Format: uri-template */ + user_search_url: string; + }; + /** + * Simple User + * @description Simple User + */ + "nullable-simple-user": { + name?: string | null; + email?: string | null; + /** @example octocat */ + login: string; + /** @example 1 */ + id: number; + /** @example MDQ6VXNlcjE= */ + node_id: string; + /** + * Format: uri + * @example https://github.com/images/error/octocat_happy.gif + */ + avatar_url: string; + /** @example 41d064eb2195891e12d0413f63227ea7 */ + gravatar_id: string | null; + /** + * Format: uri + * @example https://api.github.com/users/octocat + */ + url: string; + /** + * Format: uri + * @example https://github.com/octocat + */ + html_url: string; + /** + * Format: uri + * @example https://api.github.com/users/octocat/followers + */ + followers_url: string; + /** @example https://api.github.com/users/octocat/following{/other_user} */ + following_url: string; + /** @example https://api.github.com/users/octocat/gists{/gist_id} */ + gists_url: string; + /** @example https://api.github.com/users/octocat/starred{/owner}{/repo} */ + starred_url: string; + /** + * Format: uri + * @example https://api.github.com/users/octocat/subscriptions + */ + subscriptions_url: string; + /** + * Format: uri + * @example https://api.github.com/users/octocat/orgs + */ + organizations_url: string; + /** + * Format: uri + * @example https://api.github.com/users/octocat/repos + */ + repos_url: string; + /** @example https://api.github.com/users/octocat/events{/privacy} */ + events_url: string; + /** + * Format: uri + * @example https://api.github.com/users/octocat/received_events + */ + received_events_url: string; + /** @example User */ + type: string; + site_admin: boolean; + /** @example "2020-07-09T00:17:55Z" */ + starred_at?: string; + } | null; + /** + * GitHub app + * @description GitHub apps are a new way to extend GitHub. They can be installed directly on organizations and user accounts and granted access to specific repositories. They come with granular permissions and built-in webhooks. GitHub apps are first class actors within GitHub. + */ + integration: { + /** + * @description Unique identifier of the GitHub app + * @example 37 + */ + id: number; + /** + * @description The slug name of the GitHub app + * @example probot-owners + */ + slug?: string; + /** @example MDExOkludGVncmF0aW9uMQ== */ + node_id: string; + owner: components["schemas"]["nullable-simple-user"]; + /** + * @description The name of the GitHub app + * @example Probot Owners + */ + name: string; + /** @example The description of the app. */ + description: string | null; + /** + * Format: uri + * @example https://example.com + */ + external_url: string; + /** + * Format: uri + * @example https://github.com/apps/super-ci + */ + html_url: string; + /** + * Format: date-time + * @example 2017-07-08T16:18:44-04:00 + */ + created_at: string; + /** + * Format: date-time + * @example 2017-07-08T16:18:44-04:00 + */ + updated_at: string; + /** + * @description The set of permissions for the GitHub app + * @example { + * "issues": "read", + * "deployments": "write" + * } + */ + permissions: { + issues?: string; + checks?: string; + metadata?: string; + contents?: string; + deployments?: string; + } & { [key: string]: string }; + /** + * @description The list of events for the GitHub app + * @example [ + * "label", + * "deployment" + * ] + */ + events: string[]; + /** + * @description The number of installations associated with the GitHub app + * @example 5 + */ + installations_count?: number; + /** @example "Iv1.25b5d1e65ffc4022" */ + client_id?: string; + /** @example "1d4b2097ac622ba702d19de498f005747a8b21d3" */ + client_secret?: string; + /** @example "6fba8f2fc8a7e8f2cca5577eddd82ca7586b3b6b" */ + webhook_secret?: string | null; + /** @example "-----BEGIN RSA PRIVATE KEY-----\nMIIEogIBAAKCAQEArYxrNYD/iT5CZVpRJu4rBKmmze3PVmT/gCo2ATUvDvZTPTey\nxcGJ3vvrJXazKk06pN05TN29o98jrYz4cengG3YGsXPNEpKsIrEl8NhbnxapEnM9\nJCMRe0P5JcPsfZlX6hmiT7136GRWiGOUba2X9+HKh8QJVLG5rM007TBER9/z9mWm\nrJuNh+m5l320oBQY/Qq3A7wzdEfZw8qm/mIN0FCeoXH1L6B8xXWaAYBwhTEh6SSn\nZHlO1Xu1JWDmAvBCi0RO5aRSKM8q9QEkvvHP4yweAtK3N8+aAbZ7ovaDhyGz8r6r\nzhU1b8Uo0Z2ysf503WqzQgIajr7Fry7/kUwpgQIDAQABAoIBADwJp80Ko1xHPZDy\nfcCKBDfIuPvkmSW6KumbsLMaQv1aGdHDwwTGv3t0ixSay8CGlxMRtRDyZPib6SvQ\n6OH/lpfpbMdW2ErkksgtoIKBVrDilfrcAvrNZu7NxRNbhCSvN8q0s4ICecjbbVQh\nnueSdlA6vGXbW58BHMq68uRbHkP+k+mM9U0mDJ1HMch67wlg5GbayVRt63H7R2+r\nVxcna7B80J/lCEjIYZznawgiTvp3MSanTglqAYi+m1EcSsP14bJIB9vgaxS79kTu\noiSo93leJbBvuGo8QEiUqTwMw4tDksmkLsoqNKQ1q9P7LZ9DGcujtPy4EZsamSJT\ny8OJt0ECgYEA2lxOxJsQk2kI325JgKFjo92mQeUObIvPfSNWUIZQDTjniOI6Gv63\nGLWVFrZcvQBWjMEQraJA9xjPbblV8PtfO87MiJGLWCHFxmPz2dzoedN+2Coxom8m\nV95CLz8QUShuao6u/RYcvUaZEoYs5bHcTmy5sBK80JyEmafJPtCQVxMCgYEAy3ar\nZr3yv4xRPEPMat4rseswmuMooSaK3SKub19WFI5IAtB/e7qR1Rj9JhOGcZz+OQrl\nT78O2OFYlgOIkJPvRMrPpK5V9lslc7tz1FSh3BZMRGq5jSyD7ETSOQ0c8T2O/s7v\nbeEPbVbDe4mwvM24XByH0GnWveVxaDl51ABD65sCgYB3ZAspUkOA5egVCh8kNpnd\nSd6SnuQBE3ySRlT2WEnCwP9Ph6oPgn+oAfiPX4xbRqkL8q/k0BdHQ4h+zNwhk7+h\nWtPYRAP1Xxnc/F+jGjb+DVaIaKGU18MWPg7f+FI6nampl3Q0KvfxwX0GdNhtio8T\nTj1E+SnFwh56SRQuxSh2gwKBgHKjlIO5NtNSflsUYFM+hyQiPiqnHzddfhSG+/3o\nm5nNaSmczJesUYreH5San7/YEy2UxAugvP7aSY2MxB+iGsiJ9WD2kZzTUlDZJ7RV\nUzWsoqBR+eZfVJ2FUWWvy8TpSG6trh4dFxImNtKejCR1TREpSiTV3Zb1dmahK9GV\nrK9NAoGAbBxRLoC01xfxCTgt5BDiBcFVh4fp5yYKwavJPLzHSpuDOrrI9jDn1oKN\nonq5sDU1i391zfQvdrbX4Ova48BN+B7p63FocP/MK5tyyBoT8zQEk2+vWDOw7H/Z\nu5dTCPxTIsoIwUw1I+7yIxqJzLPFgR2gVBwY1ra/8iAqCj+zeBw=\n-----END RSA PRIVATE KEY-----\n" */ + pem?: string; + }; + /** + * Basic Error + * @description Basic Error + */ + "basic-error": { + message?: string; + documentation_url?: string; + url?: string; + status?: string; + }; + /** + * Validation Error Simple + * @description Validation Error Simple + */ + "validation-error-simple": { + message: string; + documentation_url: string; + errors?: string[]; + }; + /** + * Format: uri + * @description The URL to which the payloads will be delivered. + * @example https://example.com/webhook + */ + "webhook-config-url": string; + /** + * @description The media type used to serialize the payloads. Supported values include `json` and `form`. The default is `form`. + * @example "json" + */ + "webhook-config-content-type": string; + /** + * @description If provided, the `secret` will be used as the `key` to generate the HMAC hex digest value for [delivery signature headers](https://docs.github.com/webhooks/event-payloads/#delivery-headers). + * @example "********" + */ + "webhook-config-secret": string; + "webhook-config-insecure-ssl": string | number; + /** + * Webhook Configuration + * @description Configuration object of the webhook + */ + "webhook-config": { + url?: components["schemas"]["webhook-config-url"]; + content_type?: components["schemas"]["webhook-config-content-type"]; + secret?: components["schemas"]["webhook-config-secret"]; + insecure_ssl?: components["schemas"]["webhook-config-insecure-ssl"]; + }; + /** + * Simple webhook delivery + * @description Delivery made by a webhook, without request and response information. + */ + "hook-delivery-item": { + /** + * @description Unique identifier of the webhook delivery. + * @example 42 + */ + id: number; + /** + * @description Unique identifier for the event (shared with all deliveries for all webhooks that subscribe to this event). + * @example 58474f00-b361-11eb-836d-0e4f3503ccbe + */ + guid: string; + /** + * Format: date-time + * @description Time when the webhook delivery occurred. + * @example 2021-05-12T20:33:44Z + */ + delivered_at: string; + /** + * @description Whether the webhook delivery is a redelivery. + * @example false + */ + redelivery: boolean; + /** + * @description Time spent delivering. + * @example 0.03 + */ + duration: number; + /** + * @description Describes the response returned after attempting the delivery. + * @example failed to connect + */ + status: string; + /** + * @description Status code received when delivery was made. + * @example 502 + */ + status_code: number; + /** + * @description The event that triggered the delivery. + * @example issues + */ + event: string; + /** + * @description The type of activity for the event that triggered the delivery. + * @example opened + */ + action: string | null; + /** + * @description The id of the GitHub App installation associated with this event. + * @example 123 + */ + installation_id: number | null; + /** + * @description The id of the repository associated with this event. + * @example 123 + */ + repository_id: number | null; + }; + /** + * Scim Error + * @description Scim Error + */ + "scim-error": { + message?: string | null; + documentation_url?: string | null; + detail?: string | null; + status?: number; + scimType?: string | null; + schemas?: string[]; + }; + /** + * Validation Error + * @description Validation Error + */ + "validation-error": { + message: string; + documentation_url: string; + errors?: { + resource?: string; + field?: string; + message?: string; + code: string; + index?: number; + value?: (string | null) | (number | null) | (string[] | null); + }[]; + }; + /** + * Webhook delivery + * @description Delivery made by a webhook. + */ + "hook-delivery": { + /** + * @description Unique identifier of the delivery. + * @example 42 + */ + id: number; + /** + * @description Unique identifier for the event (shared with all deliveries for all webhooks that subscribe to this event). + * @example 58474f00-b361-11eb-836d-0e4f3503ccbe + */ + guid: string; + /** + * Format: date-time + * @description Time when the delivery was delivered. + * @example 2021-05-12T20:33:44Z + */ + delivered_at: string; + /** + * @description Whether the delivery is a redelivery. + * @example false + */ + redelivery: boolean; + /** + * @description Time spent delivering. + * @example 0.03 + */ + duration: number; + /** + * @description Description of the status of the attempted delivery + * @example failed to connect + */ + status: string; + /** + * @description Status code received when delivery was made. + * @example 502 + */ + status_code: number; + /** + * @description The event that triggered the delivery. + * @example issues + */ + event: string; + /** + * @description The type of activity for the event that triggered the delivery. + * @example opened + */ + action: string | null; + /** + * @description The id of the GitHub App installation associated with this event. + * @example 123 + */ + installation_id: number | null; + /** + * @description The id of the repository associated with this event. + * @example 123 + */ + repository_id: number | null; + /** + * @description The URL target of the delivery. + * @example https://www.example.com + */ + url?: string; + request: { + /** @description The request headers sent with the webhook delivery. */ + headers: { [key: string]: unknown } | null; + /** @description The webhook payload. */ + payload: { [key: string]: unknown } | null; + }; + response: { + /** @description The response headers received when the delivery was made. */ + headers: { [key: string]: unknown } | null; + /** @description The response payload received. */ + payload: string | null; + }; + }; + /** + * Simple User + * @description Simple User + */ + "simple-user": { + name?: string | null; + email?: string | null; + /** @example octocat */ + login: string; + /** @example 1 */ + id: number; + /** @example MDQ6VXNlcjE= */ + node_id: string; + /** + * Format: uri + * @example https://github.com/images/error/octocat_happy.gif + */ + avatar_url: string; + /** @example 41d064eb2195891e12d0413f63227ea7 */ + gravatar_id: string | null; + /** + * Format: uri + * @example https://api.github.com/users/octocat + */ + url: string; + /** + * Format: uri + * @example https://github.com/octocat + */ + html_url: string; + /** + * Format: uri + * @example https://api.github.com/users/octocat/followers + */ + followers_url: string; + /** @example https://api.github.com/users/octocat/following{/other_user} */ + following_url: string; + /** @example https://api.github.com/users/octocat/gists{/gist_id} */ + gists_url: string; + /** @example https://api.github.com/users/octocat/starred{/owner}{/repo} */ + starred_url: string; + /** + * Format: uri + * @example https://api.github.com/users/octocat/subscriptions + */ + subscriptions_url: string; + /** + * Format: uri + * @example https://api.github.com/users/octocat/orgs + */ + organizations_url: string; + /** + * Format: uri + * @example https://api.github.com/users/octocat/repos + */ + repos_url: string; + /** @example https://api.github.com/users/octocat/events{/privacy} */ + events_url: string; + /** + * Format: uri + * @example https://api.github.com/users/octocat/received_events + */ + received_events_url: string; + /** @example User */ + type: string; + site_admin: boolean; + /** @example "2020-07-09T00:17:55Z" */ + starred_at?: string; + }; + /** + * Enterprise + * @description An enterprise account + */ + enterprise: { + /** @description A short description of the enterprise. */ + description?: string | null; + /** + * Format: uri + * @example https://github.com/enterprises/octo-business + */ + html_url: string; + /** + * Format: uri + * @description The enterprise's website URL. + */ + website_url?: string | null; + /** + * @description Unique identifier of the enterprise + * @example 42 + */ + id: number; + /** @example MDEwOlJlcG9zaXRvcnkxMjk2MjY5 */ + node_id: string; + /** + * @description The name of the enterprise. + * @example Octo Business + */ + name: string; + /** + * @description The slug url identifier for the enterprise. + * @example octo-business + */ + slug: string; + /** + * Format: date-time + * @example 2019-01-26T19:01:12Z + */ + created_at: string | null; + /** + * Format: date-time + * @example 2019-01-26T19:14:43Z + */ + updated_at: string | null; + /** Format: uri */ + avatar_url: string; + }; + /** + * App Permissions + * @description The permissions granted to the user-to-server access token. + * @example { + * "contents": "read", + * "issues": "read", + * "deployments": "write", + * "single_file": "read" + * } + */ + "app-permissions": { + /** + * @description The level of permission to grant the access token for GitHub Actions workflows, workflow runs, and artifacts. + * @enum {string} + */ + actions?: "read" | "write"; + /** + * @description The level of permission to grant the access token for repository creation, deletion, settings, teams, and collaborators creation. + * @enum {string} + */ + administration?: "read" | "write"; + /** + * @description The level of permission to grant the access token for checks on code. + * @enum {string} + */ + checks?: "read" | "write"; + /** + * @description The level of permission to grant the access token for repository contents, commits, branches, downloads, releases, and merges. + * @enum {string} + */ + contents?: "read" | "write"; + /** + * @description The level of permission to grant the access token for deployments and deployment statuses. + * @enum {string} + */ + deployments?: "read" | "write"; + /** + * @description The level of permission to grant the access token for managing repository environments. + * @enum {string} + */ + environments?: "read" | "write"; + /** + * @description The level of permission to grant the access token for issues and related comments, assignees, labels, and milestones. + * @enum {string} + */ + issues?: "read" | "write"; + /** + * @description The level of permission to grant the access token to search repositories, list collaborators, and access repository metadata. + * @enum {string} + */ + metadata?: "read" | "write"; + /** + * @description The level of permission to grant the access token for packages published to GitHub Packages. + * @enum {string} + */ + packages?: "read" | "write"; + /** + * @description The level of permission to grant the access token to retrieve Pages statuses, configuration, and builds, as well as create new builds. + * @enum {string} + */ + pages?: "read" | "write"; + /** + * @description The level of permission to grant the access token for pull requests and related comments, assignees, labels, milestones, and merges. + * @enum {string} + */ + pull_requests?: "read" | "write"; + /** + * @description The level of permission to grant the access token to manage the post-receive hooks for a repository. + * @enum {string} + */ + repository_hooks?: "read" | "write"; + /** + * @description The level of permission to grant the access token to manage repository projects, columns, and cards. + * @enum {string} + */ + repository_projects?: "read" | "write" | "admin"; + /** + * @description The level of permission to grant the access token to view and manage secret scanning alerts. + * @enum {string} + */ + secret_scanning_alerts?: "read" | "write"; + /** + * @description The level of permission to grant the access token to manage repository secrets. + * @enum {string} + */ + secrets?: "read" | "write"; + /** + * @description The level of permission to grant the access token to view and manage security events like code scanning alerts. + * @enum {string} + */ + security_events?: "read" | "write"; + /** + * @description The level of permission to grant the access token to manage just a single file. + * @enum {string} + */ + single_file?: "read" | "write"; + /** + * @description The level of permission to grant the access token for commit statuses. + * @enum {string} + */ + statuses?: "read" | "write"; + /** + * @description The level of permission to grant the access token to manage Dependabot alerts. + * @enum {string} + */ + vulnerability_alerts?: "read" | "write"; + /** + * @description The level of permission to grant the access token to update GitHub Actions workflow files. + * @enum {string} + */ + workflows?: "write"; + /** + * @description The level of permission to grant the access token for organization teams and members. + * @enum {string} + */ + members?: "read" | "write"; + /** + * @description The level of permission to grant the access token to manage access to an organization. + * @enum {string} + */ + organization_administration?: "read" | "write"; + /** + * @description The level of permission to grant the access token to manage the post-receive hooks for an organization. + * @enum {string} + */ + organization_hooks?: "read" | "write"; + /** + * @description The level of permission to grant the access token for viewing an organization's plan. + * @enum {string} + */ + organization_plan?: "read"; + /** + * @description The level of permission to grant the access token to manage organization projects and projects beta (where available). + * @enum {string} + */ + organization_projects?: "read" | "write" | "admin"; + /** + * @description The level of permission to grant the access token for organization packages published to GitHub Packages. + * @enum {string} + */ + organization_packages?: "read" | "write"; + /** + * @description The level of permission to grant the access token to manage organization secrets. + * @enum {string} + */ + organization_secrets?: "read" | "write"; + /** + * @description The level of permission to grant the access token to view and manage GitHub Actions self-hosted runners available to an organization. + * @enum {string} + */ + organization_self_hosted_runners?: "read" | "write"; + /** + * @description The level of permission to grant the access token to view and manage users blocked by the organization. + * @enum {string} + */ + organization_user_blocking?: "read" | "write"; + /** + * @description The level of permission to grant the access token to manage team discussions and related comments. + * @enum {string} + */ + team_discussions?: "read" | "write"; + }; + /** + * Installation + * @description Installation + */ + installation: { + /** + * @description The ID of the installation. + * @example 1 + */ + id: number; + account: + | (Partial & + Partial) + | null; + /** + * @description Describe whether all repositories have been selected or there's a selection involved + * @enum {string} + */ + repository_selection: "all" | "selected"; + /** + * Format: uri + * @example https://api.github.com/installations/1/access_tokens + */ + access_tokens_url: string; + /** + * Format: uri + * @example https://api.github.com/installation/repositories + */ + repositories_url: string; + /** + * Format: uri + * @example https://github.com/organizations/github/settings/installations/1 + */ + html_url: string; + /** @example 1 */ + app_id: number; + /** @description The ID of the user or organization this token is being scoped to. */ + target_id: number; + /** @example Organization */ + target_type: string; + permissions: components["schemas"]["app-permissions"]; + events: string[]; + /** Format: date-time */ + created_at: string; + /** Format: date-time */ + updated_at: string; + /** @example config.yaml */ + single_file_name: string | null; + /** @example true */ + has_multiple_single_files?: boolean; + /** + * @example [ + * "config.yml", + * ".github/issue_TEMPLATE.md" + * ] + */ + single_file_paths?: string[]; + /** @example github-actions */ + app_slug: string; + suspended_by: components["schemas"]["nullable-simple-user"]; + /** Format: date-time */ + suspended_at: string | null; + /** @example "test_13f1e99741e3e004@d7e1eb0bc0a1ba12.com" */ + contact_email?: string | null; + }; + /** + * License Simple + * @description License Simple + */ + "nullable-license-simple": { + /** @example mit */ + key: string; + /** @example MIT License */ + name: string; + /** + * Format: uri + * @example https://api.github.com/licenses/mit + */ + url: string | null; + /** @example MIT */ + spdx_id: string | null; + /** @example MDc6TGljZW5zZW1pdA== */ + node_id: string; + /** Format: uri */ + html_url?: string; + } | null; + /** + * Repository + * @description A git repository + */ + repository: { + /** + * @description Unique identifier of the repository + * @example 42 + */ + id: number; + /** @example MDEwOlJlcG9zaXRvcnkxMjk2MjY5 */ + node_id: string; + /** + * @description The name of the repository. + * @example Team Environment + */ + name: string; + /** @example octocat/Hello-World */ + full_name: string; + license: components["schemas"]["nullable-license-simple"]; + organization?: components["schemas"]["nullable-simple-user"]; + forks: number; + permissions?: { + admin: boolean; + pull: boolean; + triage?: boolean; + push: boolean; + maintain?: boolean; + }; + owner: components["schemas"]["simple-user"]; + /** + * @description Whether the repository is private or public. + * @default false + */ + private: boolean; + /** + * Format: uri + * @example https://github.com/octocat/Hello-World + */ + html_url: string; + /** @example This your first repo! */ + description: string | null; + fork: boolean; + /** + * Format: uri + * @example https://api.github.com/repos/octocat/Hello-World + */ + url: string; + /** @example http://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref} */ + archive_url: string; + /** @example http://api.github.com/repos/octocat/Hello-World/assignees{/user} */ + assignees_url: string; + /** @example http://api.github.com/repos/octocat/Hello-World/git/blobs{/sha} */ + blobs_url: string; + /** @example http://api.github.com/repos/octocat/Hello-World/branches{/branch} */ + branches_url: string; + /** @example http://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator} */ + collaborators_url: string; + /** @example http://api.github.com/repos/octocat/Hello-World/comments{/number} */ + comments_url: string; + /** @example http://api.github.com/repos/octocat/Hello-World/commits{/sha} */ + commits_url: string; + /** @example http://api.github.com/repos/octocat/Hello-World/compare/{base}...{head} */ + compare_url: string; + /** @example http://api.github.com/repos/octocat/Hello-World/contents/{+path} */ + contents_url: string; + /** + * Format: uri + * @example http://api.github.com/repos/octocat/Hello-World/contributors + */ + contributors_url: string; + /** + * Format: uri + * @example http://api.github.com/repos/octocat/Hello-World/deployments + */ + deployments_url: string; + /** + * Format: uri + * @example http://api.github.com/repos/octocat/Hello-World/downloads + */ + downloads_url: string; + /** + * Format: uri + * @example http://api.github.com/repos/octocat/Hello-World/events + */ + events_url: string; + /** + * Format: uri + * @example http://api.github.com/repos/octocat/Hello-World/forks + */ + forks_url: string; + /** @example http://api.github.com/repos/octocat/Hello-World/git/commits{/sha} */ + git_commits_url: string; + /** @example http://api.github.com/repos/octocat/Hello-World/git/refs{/sha} */ + git_refs_url: string; + /** @example http://api.github.com/repos/octocat/Hello-World/git/tags{/sha} */ + git_tags_url: string; + /** @example git:github.com/octocat/Hello-World.git */ + git_url: string; + /** @example http://api.github.com/repos/octocat/Hello-World/issues/comments{/number} */ + issue_comment_url: string; + /** @example http://api.github.com/repos/octocat/Hello-World/issues/events{/number} */ + issue_events_url: string; + /** @example http://api.github.com/repos/octocat/Hello-World/issues{/number} */ + issues_url: string; + /** @example http://api.github.com/repos/octocat/Hello-World/keys{/key_id} */ + keys_url: string; + /** @example http://api.github.com/repos/octocat/Hello-World/labels{/name} */ + labels_url: string; + /** + * Format: uri + * @example http://api.github.com/repos/octocat/Hello-World/languages + */ + languages_url: string; + /** + * Format: uri + * @example http://api.github.com/repos/octocat/Hello-World/merges + */ + merges_url: string; + /** @example http://api.github.com/repos/octocat/Hello-World/milestones{/number} */ + milestones_url: string; + /** @example http://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating} */ + notifications_url: string; + /** @example http://api.github.com/repos/octocat/Hello-World/pulls{/number} */ + pulls_url: string; + /** @example http://api.github.com/repos/octocat/Hello-World/releases{/id} */ + releases_url: string; + /** @example git@github.com:octocat/Hello-World.git */ + ssh_url: string; + /** + * Format: uri + * @example http://api.github.com/repos/octocat/Hello-World/stargazers + */ + stargazers_url: string; + /** @example http://api.github.com/repos/octocat/Hello-World/statuses/{sha} */ + statuses_url: string; + /** + * Format: uri + * @example http://api.github.com/repos/octocat/Hello-World/subscribers + */ + subscribers_url: string; + /** + * Format: uri + * @example http://api.github.com/repos/octocat/Hello-World/subscription + */ + subscription_url: string; + /** + * Format: uri + * @example http://api.github.com/repos/octocat/Hello-World/tags + */ + tags_url: string; + /** + * Format: uri + * @example http://api.github.com/repos/octocat/Hello-World/teams + */ + teams_url: string; + /** @example http://api.github.com/repos/octocat/Hello-World/git/trees{/sha} */ + trees_url: string; + /** @example https://github.com/octocat/Hello-World.git */ + clone_url: string; + /** + * Format: uri + * @example git:git.example.com/octocat/Hello-World + */ + mirror_url: string | null; + /** + * Format: uri + * @example http://api.github.com/repos/octocat/Hello-World/hooks + */ + hooks_url: string; + /** + * Format: uri + * @example https://svn.github.com/octocat/Hello-World + */ + svn_url: string; + /** + * Format: uri + * @example https://github.com + */ + homepage: string | null; + language: string | null; + /** @example 9 */ + forks_count: number; + /** @example 80 */ + stargazers_count: number; + /** @example 80 */ + watchers_count: number; + /** @example 108 */ + size: number; + /** + * @description The default branch of the repository. + * @example master + */ + default_branch: string; + /** @example 0 */ + open_issues_count: number; + /** + * @description Whether this repository acts as a template that can be used to generate new repositories. + * @default false + * @example true + */ + is_template?: boolean; + topics?: string[]; + /** + * @description Whether issues are enabled. + * @default true + * @example true + */ + has_issues: boolean; + /** + * @description Whether projects are enabled. + * @default true + * @example true + */ + has_projects: boolean; + /** + * @description Whether the wiki is enabled. + * @default true + * @example true + */ + has_wiki: boolean; + has_pages: boolean; + /** + * @description Whether downloads are enabled. + * @default true + * @example true + */ + has_downloads: boolean; + /** + * @description Whether the repository is archived. + * @default false + */ + archived: boolean; + /** @description Returns whether or not this repository disabled. */ + disabled: boolean; + /** + * @description The repository visibility: public, private, or internal. + * @default public + */ + visibility?: string; + /** + * Format: date-time + * @example 2011-01-26T19:06:43Z + */ + pushed_at: string | null; + /** + * Format: date-time + * @example 2011-01-26T19:01:12Z + */ + created_at: string | null; + /** + * Format: date-time + * @example 2011-01-26T19:14:43Z + */ + updated_at: string | null; + /** + * @description Whether to allow rebase merges for pull requests. + * @default true + * @example true + */ + allow_rebase_merge?: boolean; + template_repository?: { + id?: number; + node_id?: string; + name?: string; + full_name?: string; + owner?: { + login?: string; + id?: number; + node_id?: string; + avatar_url?: string; + gravatar_id?: string; + url?: string; + html_url?: string; + followers_url?: string; + following_url?: string; + gists_url?: string; + starred_url?: string; + subscriptions_url?: string; + organizations_url?: string; + repos_url?: string; + events_url?: string; + received_events_url?: string; + type?: string; + site_admin?: boolean; + }; + private?: boolean; + html_url?: string; + description?: string; + fork?: boolean; + url?: string; + archive_url?: string; + assignees_url?: string; + blobs_url?: string; + branches_url?: string; + collaborators_url?: string; + comments_url?: string; + commits_url?: string; + compare_url?: string; + contents_url?: string; + contributors_url?: string; + deployments_url?: string; + downloads_url?: string; + events_url?: string; + forks_url?: string; + git_commits_url?: string; + git_refs_url?: string; + git_tags_url?: string; + git_url?: string; + issue_comment_url?: string; + issue_events_url?: string; + issues_url?: string; + keys_url?: string; + labels_url?: string; + languages_url?: string; + merges_url?: string; + milestones_url?: string; + notifications_url?: string; + pulls_url?: string; + releases_url?: string; + ssh_url?: string; + stargazers_url?: string; + statuses_url?: string; + subscribers_url?: string; + subscription_url?: string; + tags_url?: string; + teams_url?: string; + trees_url?: string; + clone_url?: string; + mirror_url?: string; + hooks_url?: string; + svn_url?: string; + homepage?: string; + language?: string; + forks_count?: number; + stargazers_count?: number; + watchers_count?: number; + size?: number; + default_branch?: string; + open_issues_count?: number; + is_template?: boolean; + topics?: string[]; + has_issues?: boolean; + has_projects?: boolean; + has_wiki?: boolean; + has_pages?: boolean; + has_downloads?: boolean; + archived?: boolean; + disabled?: boolean; + visibility?: string; + pushed_at?: string; + created_at?: string; + updated_at?: string; + permissions?: { + admin?: boolean; + maintain?: boolean; + push?: boolean; + triage?: boolean; + pull?: boolean; + }; + allow_rebase_merge?: boolean; + temp_clone_token?: string; + allow_squash_merge?: boolean; + allow_auto_merge?: boolean; + delete_branch_on_merge?: boolean; + allow_update_branch?: boolean; + use_squash_pr_title_as_default?: boolean; + allow_merge_commit?: boolean; + subscribers_count?: number; + network_count?: number; + } | null; + temp_clone_token?: string; + /** + * @description Whether to allow squash merges for pull requests. + * @default true + * @example true + */ + allow_squash_merge?: boolean; + /** + * @description Whether to allow Auto-merge to be used on pull requests. + * @default false + * @example false + */ + allow_auto_merge?: boolean; + /** + * @description Whether to delete head branches when pull requests are merged + * @default false + * @example false + */ + delete_branch_on_merge?: boolean; + /** + * @description Whether or not a pull request head branch that is behind its base branch can always be updated even if it is not required to be up to date before merging. + * @default false + * @example false + */ + allow_update_branch?: boolean; + /** + * @description Whether a squash merge commit can use the pull request title as default. + * @default false + */ + use_squash_pr_title_as_default?: boolean; + /** + * @description Whether to allow merge commits for pull requests. + * @default true + * @example true + */ + allow_merge_commit?: boolean; + /** @description Whether to allow forking this repo */ + allow_forking?: boolean; + subscribers_count?: number; + network_count?: number; + open_issues: number; + watchers: number; + master_branch?: string; + /** @example "2020-07-09T00:17:42Z" */ + starred_at?: string; + }; + /** + * Installation Token + * @description Authentication token for a GitHub App installed on a user or org. + */ + "installation-token": { + token: string; + expires_at: string; + permissions?: components["schemas"]["app-permissions"]; + /** @enum {string} */ + repository_selection?: "all" | "selected"; + repositories?: components["schemas"]["repository"][]; + /** @example README.md */ + single_file?: string; + /** @example true */ + has_multiple_single_files?: boolean; + /** + * @example [ + * "config.yml", + * ".github/issue_TEMPLATE.md" + * ] + */ + single_file_paths?: string[]; + }; + /** + * Application Grant + * @description The authorization associated with an OAuth Access. + */ + "application-grant": { + /** @example 1 */ + id: number; + /** + * Format: uri + * @example https://api.github.com/applications/grants/1 + */ + url: string; + app: { + client_id: string; + name: string; + /** Format: uri */ + url: string; + }; + /** + * Format: date-time + * @example 2011-09-06T17:26:27Z + */ + created_at: string; + /** + * Format: date-time + * @example 2011-09-06T20:39:23Z + */ + updated_at: string; + /** + * @example [ + * "public_repo" + * ] + */ + scopes: string[]; + user?: components["schemas"]["nullable-simple-user"]; + }; + /** Scoped Installation */ + "nullable-scoped-installation": { + permissions: components["schemas"]["app-permissions"]; + /** + * @description Describe whether all repositories have been selected or there's a selection involved + * @enum {string} + */ + repository_selection: "all" | "selected"; + /** @example config.yaml */ + single_file_name: string | null; + /** @example true */ + has_multiple_single_files?: boolean; + /** + * @example [ + * "config.yml", + * ".github/issue_TEMPLATE.md" + * ] + */ + single_file_paths?: string[]; + /** + * Format: uri + * @example https://api.github.com/users/octocat/repos + */ + repositories_url: string; + account: components["schemas"]["simple-user"]; + } | null; + /** + * Authorization + * @description The authorization for an OAuth app, GitHub App, or a Personal Access Token. + */ + authorization: { + id: number; + /** Format: uri */ + url: string; + /** @description A list of scopes that this authorization is in. */ + scopes: string[] | null; + token: string; + token_last_eight: string | null; + hashed_token: string | null; + app: { + client_id: string; + name: string; + /** Format: uri */ + url: string; + }; + note: string | null; + /** Format: uri */ + note_url: string | null; + /** Format: date-time */ + updated_at: string; + /** Format: date-time */ + created_at: string; + fingerprint: string | null; + user?: components["schemas"]["nullable-simple-user"]; + installation?: components["schemas"]["nullable-scoped-installation"]; + /** Format: date-time */ + expires_at: string | null; + }; + /** + * Code Of Conduct + * @description Code Of Conduct + */ + "code-of-conduct": { + /** @example contributor_covenant */ + key: string; + /** @example Contributor Covenant */ + name: string; + /** + * Format: uri + * @example https://api.github.com/codes_of_conduct/contributor_covenant + */ + url: string; + /** + * @example # Contributor Covenant Code of Conduct + * + * ## Our Pledge + * + * In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation. + * + * ## Our Standards + * + * Examples of behavior that contributes to creating a positive environment include: + * + * * Using welcoming and inclusive language + * * Being respectful of differing viewpoints and experiences + * * Gracefully accepting constructive criticism + * * Focusing on what is best for the community + * * Showing empathy towards other community members + * + * Examples of unacceptable behavior by participants include: + * + * * The use of sexualized language or imagery and unwelcome sexual attention or advances + * * Trolling, insulting/derogatory comments, and personal or political attacks + * * Public or private harassment + * * Publishing others' private information, such as a physical or electronic address, without explicit permission + * * Other conduct which could reasonably be considered inappropriate in a professional setting + * + * ## Our Responsibilities + * + * Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response + * to any instances of unacceptable behavior. + * + * Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful. + * + * ## Scope + * + * This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, + * posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers. + * + * ## Enforcement + * + * Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at [EMAIL]. The project team will review and investigate all complaints, and will respond in a way that it deems appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately. + * + * Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership. + * + * ## Attribution + * + * This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at [http://contributor-covenant.org/version/1/4][version] + * + * [homepage]: http://contributor-covenant.org + * [version]: http://contributor-covenant.org/version/1/4/ + */ + body?: string; + /** Format: uri */ + html_url: string | null; + }; + /** + * Server Statistics Proxy Endpoint + * @description Response of S4 Proxy endpoint that provides GHES statistics + */ + "server-statistics": { + server_id?: string; + collection_date?: string; + schema_version?: string; + ghes_version?: string; + host_name?: string; + github_connect?: { + features_enabled?: string[]; + }; + ghe_stats?: { + comments?: { + total_commit_comments?: number; + total_gist_comments?: number; + total_issue_comments?: number; + total_pull_request_comments?: number; + }; + gists?: { + total_gists?: number; + private_gists?: number; + public_gists?: number; + }; + hooks?: { + total_hooks?: number; + active_hooks?: number; + inactive_hooks?: number; + }; + issues?: { + total_issues?: number; + open_issues?: number; + closed_issues?: number; + }; + milestones?: { + total_milestones?: number; + open_milestones?: number; + closed_milestones?: number; + }; + orgs?: { + total_orgs?: number; + disabled_orgs?: number; + total_teams?: number; + total_team_members?: number; + }; + pages?: { + total_pages?: number; + }; + pulls?: { + total_pulls?: number; + merged_pulls?: number; + mergeable_pulls?: number; + unmergeable_pulls?: number; + }; + repos?: { + total_repos?: number; + root_repos?: number; + fork_repos?: number; + org_repos?: number; + total_pushes?: number; + total_wikis?: number; + }; + users?: { + total_users?: number; + admin_users?: number; + suspended_users?: number; + }; + }; + dormant_users?: { + total_dormant_users?: number; + dormancy_threshold?: string; + }; + }; + "actions-cache-usage-org-enterprise": { + /** @description The count of active caches across all repositories of an enterprise or an organization. */ + total_active_caches_count: number; + /** @description The total size in bytes of all active cache items across all repositories of an enterprise or an organization. */ + total_active_caches_size_in_bytes: number; + }; + "actions-oidc-custom-issuer-policy-for-enterprise": { + /** + * @description Whether the enterprise customer requested a custom issuer URL. + * @example true + */ + include_enterprise_slug?: boolean; + }; + /** + * @description The policy that controls the organizations in the enterprise that are allowed to run GitHub Actions. + * @enum {string} + */ + "enabled-organizations": "all" | "none" | "selected"; + /** + * @description The permissions policy that controls the actions and reusable workflows that are allowed to run. + * @enum {string} + */ + "allowed-actions": "all" | "local_only" | "selected"; + /** @description The API URL to use to get or set the actions and reusable workflows that are allowed to run, when `allowed_actions` is set to `selected`. */ + "selected-actions-url": string; + "actions-enterprise-permissions": { + enabled_organizations: components["schemas"]["enabled-organizations"]; + /** @description The API URL to use to get or set the selected organizations that are allowed to run GitHub Actions, when `enabled_organizations` is set to `selected`. */ + selected_organizations_url?: string; + allowed_actions?: components["schemas"]["allowed-actions"]; + selected_actions_url?: components["schemas"]["selected-actions-url"]; + }; + /** + * Organization Simple + * @description Organization Simple + */ + "organization-simple": { + /** @example github */ + login: string; + /** @example 1 */ + id: number; + /** @example MDEyOk9yZ2FuaXphdGlvbjE= */ + node_id: string; + /** + * Format: uri + * @example https://api.github.com/orgs/github + */ + url: string; + /** + * Format: uri + * @example https://api.github.com/orgs/github/repos + */ + repos_url: string; + /** + * Format: uri + * @example https://api.github.com/orgs/github/events + */ + events_url: string; + /** @example https://api.github.com/orgs/github/hooks */ + hooks_url: string; + /** @example https://api.github.com/orgs/github/issues */ + issues_url: string; + /** @example https://api.github.com/orgs/github/members{/member} */ + members_url: string; + /** @example https://api.github.com/orgs/github/public_members{/member} */ + public_members_url: string; + /** @example https://github.com/images/error/octocat_happy.gif */ + avatar_url: string; + /** @example A great organization */ + description: string | null; + }; + "selected-actions": { + /** @description Whether GitHub-owned actions are allowed. For example, this includes the actions in the `actions` organization. */ + github_owned_allowed?: boolean; + /** @description Whether actions from GitHub Marketplace verified creators are allowed. Set to `true` to allow all actions by GitHub Marketplace verified creators. */ + verified_allowed?: boolean; + /** @description Specifies a list of string-matching patterns to allow specific action(s) and reusable workflow(s). Wildcards, tags, and SHAs are allowed. For example, `monalisa/octocat@*`, `monalisa/octocat@v2`, `monalisa/*`." */ + patterns_allowed?: string[]; + }; + /** + * @description The default workflow permissions granted to the GITHUB_TOKEN when running workflows. + * @enum {string} + */ + "actions-default-workflow-permissions": "read" | "write"; + /** @description Whether GitHub Actions can approve pull requests. Enabling this can be a security risk. */ + "actions-can-approve-pull-request-reviews": boolean; + "actions-get-default-workflow-permissions": { + default_workflow_permissions: components["schemas"]["actions-default-workflow-permissions"]; + can_approve_pull_request_reviews: components["schemas"]["actions-can-approve-pull-request-reviews"]; + }; + "actions-set-default-workflow-permissions": { + default_workflow_permissions?: components["schemas"]["actions-default-workflow-permissions"]; + can_approve_pull_request_reviews?: components["schemas"]["actions-can-approve-pull-request-reviews"]; + }; + "runner-groups-enterprise": { + id: number; + name: string; + visibility: string; + default: boolean; + selected_organizations_url?: string; + runners_url: string; + allows_public_repositories: boolean; + /** + * @description If `true`, the `restricted_to_workflows` and `selected_workflows` fields cannot be modified. + * @default false + */ + workflow_restrictions_read_only?: boolean; + /** + * @description If `true`, the runner group will be restricted to running only the workflows specified in the `selected_workflows` array. + * @default false + */ + restricted_to_workflows?: boolean; + /** @description List of workflows the runner group should be allowed to run. This setting will be ignored unless `restricted_to_workflows` is set to `true`. */ + selected_workflows?: string[]; + }; + /** + * Self hosted runner label + * @description A label for a self hosted runner + */ + "runner-label": { + /** @description Unique identifier of the label. */ + id?: number; + /** @description Name of the label. */ + name: string; + /** + * @description The type of label. Read-only labels are applied automatically when the runner is configured. + * @enum {string} + */ + type?: "read-only" | "custom"; + }; + /** + * Self hosted runners + * @description A self hosted runner + */ + runner: { + /** + * @description The id of the runner. + * @example 5 + */ + id: number; + /** + * @description The name of the runner. + * @example iMac + */ + name: string; + /** + * @description The Operating System of the runner. + * @example macos + */ + os: string; + /** + * @description The status of the runner. + * @example online + */ + status: string; + busy: boolean; + labels: components["schemas"]["runner-label"][]; + }; + /** + * Runner Application + * @description Runner Application + */ + "runner-application": { + os: string; + architecture: string; + download_url: string; + filename: string; + /** @description A short lived bearer token used to download the runner, if needed. */ + temp_download_token?: string; + sha256_checksum?: string; + }; + /** + * Authentication Token + * @description Authentication Token + */ + "authentication-token": { + /** + * @description The token used for authentication + * @example v1.1f699f1069f60xxx + */ + token: string; + /** + * Format: date-time + * @description The time this token expires + * @example 2016-07-11T22:14:10Z + */ + expires_at: string; + /** + * @example { + * "issues": "read", + * "deployments": "write" + * } + */ + permissions?: { [key: string]: unknown }; + /** @description The repositories this token has access to */ + repositories?: components["schemas"]["repository"][]; + /** @example config.yaml */ + single_file?: string | null; + /** + * @description Describe whether all repositories have been selected or there's a selection involved + * @enum {string} + */ + repository_selection?: "all" | "selected"; + }; + "audit-log-event": { + /** @description The time the audit log event occurred, given as a [Unix timestamp](http://en.wikipedia.org/wiki/Unix_time). */ + "@timestamp"?: number; + /** @description The name of the action that was performed, for example `user.login` or `repo.create`. */ + action?: string; + active?: boolean; + active_was?: boolean; + /** @description The actor who performed the action. */ + actor?: string; + /** @description The id of the actor who performed the action. */ + actor_id?: number; + actor_location?: { + country_name?: string; + }; + data?: { [key: string]: unknown }; + org_id?: number; + /** @description The username of the account being blocked. */ + blocked_user?: string; + business?: string; + config?: { [key: string]: unknown }[]; + config_was?: { [key: string]: unknown }[]; + content_type?: string; + /** @description The time the audit log event was recorded, given as a [Unix timestamp](http://en.wikipedia.org/wiki/Unix_time). */ + created_at?: number; + deploy_key_fingerprint?: string; + /** @description A unique identifier for an audit event. */ + _document_id?: string; + emoji?: string; + events?: { [key: string]: unknown }[]; + events_were?: { [key: string]: unknown }[]; + explanation?: string; + fingerprint?: string; + hook_id?: number; + limited_availability?: boolean; + message?: string; + name?: string; + old_user?: string; + openssh_public_key?: string; + org?: string; + previous_visibility?: string; + read_only?: boolean; + /** @description The name of the repository. */ + repo?: string; + /** @description The name of the repository. */ + repository?: string; + repository_public?: boolean; + target_login?: string; + team?: string; + /** @description The type of protocol (for example, HTTP or SSH) used to transfer Git data. */ + transport_protocol?: number; + /** @description A human readable name for the protocol (for example, HTTP or SSH) used to transfer Git data. */ + transport_protocol_name?: string; + /** @description The user that was affected by the action performed (if available). */ + user?: string; + /** @description The repository visibility, for example `public` or `private`. */ + visibility?: string; + }; + /** @description The name of the tool used to generate the code scanning analysis. */ + "code-scanning-analysis-tool-name": string; + /** @description The GUID of the tool used to generate the code scanning analysis, if provided in the uploaded SARIF data. */ + "code-scanning-analysis-tool-guid": string | null; + /** + * @description State of a code scanning alert. + * @enum {string} + */ + "code-scanning-alert-state": "open" | "closed" | "dismissed" | "fixed"; + /** @description The security alert number. */ + "alert-number": number; + /** + * Format: date-time + * @description The time that the alert was created in ISO 8601 format: `YYYY-MM-DDTHH:MM:SSZ`. + */ + "alert-created-at": string; + /** + * Format: date-time + * @description The time that the alert was last updated in ISO 8601 format: `YYYY-MM-DDTHH:MM:SSZ`. + */ + "alert-updated-at": string; + /** + * Format: uri + * @description The REST API URL of the alert resource. + */ + "alert-url": string; + /** + * Format: uri + * @description The GitHub URL of the alert resource. + */ + "alert-html-url": string; + /** + * Format: uri + * @description The REST API URL for fetching the list of instances for an alert. + */ + "alert-instances-url": string; + /** + * Format: date-time + * @description The time that the alert was no longer detected and was considered fixed in ISO 8601 format: `YYYY-MM-DDTHH:MM:SSZ`. + */ + "code-scanning-alert-fixed-at": string | null; + /** + * Format: date-time + * @description The time that the alert was dismissed in ISO 8601 format: `YYYY-MM-DDTHH:MM:SSZ`. + */ + "code-scanning-alert-dismissed-at": string | null; + /** + * @description **Required when the state is dismissed.** The reason for dismissing or closing the alert. + * @enum {string|null} + */ + "code-scanning-alert-dismissed-reason": + | (null | "false positive" | "won't fix" | "used in tests") + | null; + /** @description The dismissal comment associated with the dismissal of the alert. */ + "code-scanning-alert-dismissed-comment": string | null; + "code-scanning-alert-rule": { + /** @description A unique identifier for the rule used to detect the alert. */ + id?: string | null; + /** @description The name of the rule used to detect the alert. */ + name?: string; + /** + * @description The severity of the alert. + * @enum {string|null} + */ + severity?: ("none" | "note" | "warning" | "error") | null; + /** + * @description The security severity of the alert. + * @enum {string|null} + */ + security_severity_level?: ("low" | "medium" | "high" | "critical") | null; + /** @description A short description of the rule used to detect the alert. */ + description?: string; + /** @description description of the rule used to detect the alert. */ + full_description?: string; + /** @description A set of tags applicable for the rule. */ + tags?: string[] | null; + /** @description Detailed documentation for the rule as GitHub Flavored Markdown. */ + help?: string | null; + }; + /** @description The version of the tool used to generate the code scanning analysis. */ + "code-scanning-analysis-tool-version": string | null; + "code-scanning-analysis-tool": { + name?: components["schemas"]["code-scanning-analysis-tool-name"]; + version?: components["schemas"]["code-scanning-analysis-tool-version"]; + guid?: components["schemas"]["code-scanning-analysis-tool-guid"]; + }; + /** + * @description The full Git reference, formatted as `refs/heads/`, + * `refs/pull//merge`, or `refs/pull//head`. + */ + "code-scanning-ref": string; + /** @description Identifies the configuration under which the analysis was executed. For example, in GitHub Actions this includes the workflow filename and job name. */ + "code-scanning-analysis-analysis-key": string; + /** @description Identifies the variable values associated with the environment in which the analysis that generated this alert instance was performed, such as the language that was analyzed. */ + "code-scanning-alert-environment": string; + /** @description Identifies the configuration under which the analysis was executed. Used to distinguish between multiple analyses for the same tool and commit, but performed on different languages or different parts of the code. */ + "code-scanning-analysis-category": string; + /** @description Describe a region within a file for the alert. */ + "code-scanning-alert-location": { + path?: string; + start_line?: number; + end_line?: number; + start_column?: number; + end_column?: number; + }; + /** + * @description A classification of the file. For example to identify it as generated. + * @enum {string|null} + */ + "code-scanning-alert-classification": + | ("source" | "generated" | "test" | "library") + | null; + "code-scanning-alert-instance": { + ref?: components["schemas"]["code-scanning-ref"]; + analysis_key?: components["schemas"]["code-scanning-analysis-analysis-key"]; + environment?: components["schemas"]["code-scanning-alert-environment"]; + category?: components["schemas"]["code-scanning-analysis-category"]; + state?: components["schemas"]["code-scanning-alert-state"]; + commit_sha?: string; + message?: { + text?: string; + }; + location?: components["schemas"]["code-scanning-alert-location"]; + html_url?: string; + /** + * @description Classifications that have been applied to the file that triggered the alert. + * For example identifying it as documentation, or a generated file. + */ + classifications?: components["schemas"]["code-scanning-alert-classification"][]; + }; + /** + * Simple Repository + * @description Simple Repository + */ + "simple-repository": { + /** + * @description A unique identifier of the repository. + * @example 1296269 + */ + id: number; + /** + * @description The GraphQL identifier of the repository. + * @example MDEwOlJlcG9zaXRvcnkxMjk2MjY5 + */ + node_id: string; + /** + * @description The name of the repository. + * @example Hello-World + */ + name: string; + /** + * @description The full, globally unique, name of the repository. + * @example octocat/Hello-World + */ + full_name: string; + owner: components["schemas"]["simple-user"]; + /** @description Whether the repository is private. */ + private: boolean; + /** + * Format: uri + * @description The URL to view the repository on GitHub.com. + * @example https://github.com/octocat/Hello-World + */ + html_url: string; + /** + * @description The repository description. + * @example This your first repo! + */ + description: string | null; + /** @description Whether the repository is a fork. */ + fork: boolean; + /** + * Format: uri + * @description The URL to get more information about the repository from the GitHub API. + * @example https://api.github.com/repos/octocat/Hello-World + */ + url: string; + /** + * @description A template for the API URL to download the repository as an archive. + * @example https://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref} + */ + archive_url: string; + /** + * @description A template for the API URL to list the available assignees for issues in the repository. + * @example https://api.github.com/repos/octocat/Hello-World/assignees{/user} + */ + assignees_url: string; + /** + * @description A template for the API URL to create or retrieve a raw Git blob in the repository. + * @example https://api.github.com/repos/octocat/Hello-World/git/blobs{/sha} + */ + blobs_url: string; + /** + * @description A template for the API URL to get information about branches in the repository. + * @example https://api.github.com/repos/octocat/Hello-World/branches{/branch} + */ + branches_url: string; + /** + * @description A template for the API URL to get information about collaborators of the repository. + * @example https://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator} + */ + collaborators_url: string; + /** + * @description A template for the API URL to get information about comments on the repository. + * @example https://api.github.com/repos/octocat/Hello-World/comments{/number} + */ + comments_url: string; + /** + * @description A template for the API URL to get information about commits on the repository. + * @example https://api.github.com/repos/octocat/Hello-World/commits{/sha} + */ + commits_url: string; + /** + * @description A template for the API URL to compare two commits or refs. + * @example https://api.github.com/repos/octocat/Hello-World/compare/{base}...{head} + */ + compare_url: string; + /** + * @description A template for the API URL to get the contents of the repository. + * @example https://api.github.com/repos/octocat/Hello-World/contents/{+path} + */ + contents_url: string; + /** + * Format: uri + * @description A template for the API URL to list the contributors to the repository. + * @example https://api.github.com/repos/octocat/Hello-World/contributors + */ + contributors_url: string; + /** + * Format: uri + * @description The API URL to list the deployments of the repository. + * @example https://api.github.com/repos/octocat/Hello-World/deployments + */ + deployments_url: string; + /** + * Format: uri + * @description The API URL to list the downloads on the repository. + * @example https://api.github.com/repos/octocat/Hello-World/downloads + */ + downloads_url: string; + /** + * Format: uri + * @description The API URL to list the events of the repository. + * @example https://api.github.com/repos/octocat/Hello-World/events + */ + events_url: string; + /** + * Format: uri + * @description The API URL to list the forks of the repository. + * @example https://api.github.com/repos/octocat/Hello-World/forks + */ + forks_url: string; + /** + * @description A template for the API URL to get information about Git commits of the repository. + * @example https://api.github.com/repos/octocat/Hello-World/git/commits{/sha} + */ + git_commits_url: string; + /** + * @description A template for the API URL to get information about Git refs of the repository. + * @example https://api.github.com/repos/octocat/Hello-World/git/refs{/sha} + */ + git_refs_url: string; + /** + * @description A template for the API URL to get information about Git tags of the repository. + * @example https://api.github.com/repos/octocat/Hello-World/git/tags{/sha} + */ + git_tags_url: string; + /** + * @description A template for the API URL to get information about issue comments on the repository. + * @example https://api.github.com/repos/octocat/Hello-World/issues/comments{/number} + */ + issue_comment_url: string; + /** + * @description A template for the API URL to get information about issue events on the repository. + * @example https://api.github.com/repos/octocat/Hello-World/issues/events{/number} + */ + issue_events_url: string; + /** + * @description A template for the API URL to get information about issues on the repository. + * @example https://api.github.com/repos/octocat/Hello-World/issues{/number} + */ + issues_url: string; + /** + * @description A template for the API URL to get information about deploy keys on the repository. + * @example https://api.github.com/repos/octocat/Hello-World/keys{/key_id} + */ + keys_url: string; + /** + * @description A template for the API URL to get information about labels of the repository. + * @example https://api.github.com/repos/octocat/Hello-World/labels{/name} + */ + labels_url: string; + /** + * Format: uri + * @description The API URL to get information about the languages of the repository. + * @example https://api.github.com/repos/octocat/Hello-World/languages + */ + languages_url: string; + /** + * Format: uri + * @description The API URL to merge branches in the repository. + * @example https://api.github.com/repos/octocat/Hello-World/merges + */ + merges_url: string; + /** + * @description A template for the API URL to get information about milestones of the repository. + * @example https://api.github.com/repos/octocat/Hello-World/milestones{/number} + */ + milestones_url: string; + /** + * @description A template for the API URL to get information about notifications on the repository. + * @example https://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating} + */ + notifications_url: string; + /** + * @description A template for the API URL to get information about pull requests on the repository. + * @example https://api.github.com/repos/octocat/Hello-World/pulls{/number} + */ + pulls_url: string; + /** + * @description A template for the API URL to get information about releases on the repository. + * @example https://api.github.com/repos/octocat/Hello-World/releases{/id} + */ + releases_url: string; + /** + * Format: uri + * @description The API URL to list the stargazers on the repository. + * @example https://api.github.com/repos/octocat/Hello-World/stargazers + */ + stargazers_url: string; + /** + * @description A template for the API URL to get information about statuses of a commit. + * @example https://api.github.com/repos/octocat/Hello-World/statuses/{sha} + */ + statuses_url: string; + /** + * Format: uri + * @description The API URL to list the subscribers on the repository. + * @example https://api.github.com/repos/octocat/Hello-World/subscribers + */ + subscribers_url: string; + /** + * Format: uri + * @description The API URL to subscribe to notifications for this repository. + * @example https://api.github.com/repos/octocat/Hello-World/subscription + */ + subscription_url: string; + /** + * Format: uri + * @description The API URL to get information about tags on the repository. + * @example https://api.github.com/repos/octocat/Hello-World/tags + */ + tags_url: string; + /** + * Format: uri + * @description The API URL to list the teams on the repository. + * @example https://api.github.com/repos/octocat/Hello-World/teams + */ + teams_url: string; + /** + * @description A template for the API URL to create or retrieve a raw Git tree of the repository. + * @example https://api.github.com/repos/octocat/Hello-World/git/trees{/sha} + */ + trees_url: string; + /** + * Format: uri + * @description The API URL to list the hooks on the repository. + * @example https://api.github.com/repos/octocat/Hello-World/hooks + */ + hooks_url: string; + }; + "code-scanning-organization-alert-items": { + number: components["schemas"]["alert-number"]; + created_at: components["schemas"]["alert-created-at"]; + updated_at?: components["schemas"]["alert-updated-at"]; + url: components["schemas"]["alert-url"]; + html_url: components["schemas"]["alert-html-url"]; + instances_url: components["schemas"]["alert-instances-url"]; + state: components["schemas"]["code-scanning-alert-state"]; + fixed_at?: components["schemas"]["code-scanning-alert-fixed-at"]; + dismissed_by: components["schemas"]["nullable-simple-user"]; + dismissed_at: components["schemas"]["code-scanning-alert-dismissed-at"]; + dismissed_reason: components["schemas"]["code-scanning-alert-dismissed-reason"]; + dismissed_comment?: components["schemas"]["code-scanning-alert-dismissed-comment"]; + rule: components["schemas"]["code-scanning-alert-rule"]; + tool: components["schemas"]["code-scanning-analysis-tool"]; + most_recent_instance: components["schemas"]["code-scanning-alert-instance"]; + repository: components["schemas"]["simple-repository"]; + }; + /** + * Format: date-time + * @description The time that the alert was last updated in ISO 8601 format: `YYYY-MM-DDTHH:MM:SSZ`. + */ + "nullable-alert-updated-at": string | null; + /** + * @description Sets the state of the secret scanning alert. Can be either `open` or `resolved`. You must provide `resolution` when you set the state to `resolved`. + * @enum {string} + */ + "secret-scanning-alert-state": "open" | "resolved"; + /** + * @description **Required when the `state` is `resolved`.** The reason for resolving the alert. + * @enum {string|null} + */ + "secret-scanning-alert-resolution": + | (null | "false_positive" | "wont_fix" | "revoked" | "used_in_tests") + | null; + "organization-secret-scanning-alert": { + number?: components["schemas"]["alert-number"]; + created_at?: components["schemas"]["alert-created-at"]; + updated_at?: components["schemas"]["nullable-alert-updated-at"]; + url?: components["schemas"]["alert-url"]; + html_url?: components["schemas"]["alert-html-url"]; + /** + * Format: uri + * @description The REST API URL of the code locations for this alert. + */ + locations_url?: string; + state?: components["schemas"]["secret-scanning-alert-state"]; + resolution?: components["schemas"]["secret-scanning-alert-resolution"]; + /** + * Format: date-time + * @description The time that the alert was resolved in ISO 8601 format: `YYYY-MM-DDTHH:MM:SSZ`. + */ + resolved_at?: string | null; + resolved_by?: components["schemas"]["nullable-simple-user"]; + /** @description The type of secret that secret scanning detected. */ + secret_type?: string; + /** + * @description User-friendly name for the detected secret, matching the `secret_type`. + * For a list of built-in patterns, see "[Secret scanning patterns](https://docs.github.com/code-security/secret-scanning/secret-scanning-patterns#supported-secrets-for-advanced-security)." + */ + secret_type_display_name?: string; + /** @description The secret that was detected. */ + secret?: string; + repository?: components["schemas"]["simple-repository"]; + /** @description Whether push protection was bypassed for the detected secret. */ + push_protection_bypassed?: boolean | null; + push_protection_bypassed_by?: components["schemas"]["nullable-simple-user"]; + /** + * Format: date-time + * @description The time that push protection was bypassed in ISO 8601 format: `YYYY-MM-DDTHH:MM:SSZ`. + */ + push_protection_bypassed_at?: string | null; + }; + "actions-billing-usage": { + /** @description The sum of the free and paid GitHub Actions minutes used. */ + total_minutes_used: number; + /** @description The total paid GitHub Actions minutes used. */ + total_paid_minutes_used: number; + /** @description The amount of free GitHub Actions minutes available. */ + included_minutes: number; + minutes_used_breakdown: { + /** @description Total minutes used on Ubuntu runner machines. */ + UBUNTU?: number; + /** @description Total minutes used on macOS runner machines. */ + MACOS?: number; + /** @description Total minutes used on Windows runner machines. */ + WINDOWS?: number; + /** @description Total minutes used on Ubuntu 4 core runner machines. */ + ubuntu_4_core?: number; + /** @description Total minutes used on Ubuntu 8 core runner machines. */ + ubuntu_8_core?: number; + /** @description Total minutes used on Ubuntu 16 core runner machines. */ + ubuntu_16_core?: number; + /** @description Total minutes used on Ubuntu 32 core runner machines. */ + ubuntu_32_core?: number; + /** @description Total minutes used on Ubuntu 64 core runner machines. */ + ubuntu_64_core?: number; + /** @description Total minutes used on Windows 4 core runner machines. */ + windows_4_core?: number; + /** @description Total minutes used on Windows 8 core runner machines. */ + windows_8_core?: number; + /** @description Total minutes used on Windows 16 core runner machines. */ + windows_16_core?: number; + /** @description Total minutes used on Windows 32 core runner machines. */ + windows_32_core?: number; + /** @description Total minutes used on Windows 64 core runner machines. */ + windows_64_core?: number; + /** @description Total minutes used on all runner machines. */ + total?: number; + }; + }; + "advanced-security-active-committers-user": { + user_login: string; + /** @example 2021-11-03 */ + last_pushed_date: string; + }; + "advanced-security-active-committers-repository": { + /** @example octocat/Hello-World */ + name: string; + /** @example 25 */ + advanced_security_committers: number; + advanced_security_committers_breakdown: components["schemas"]["advanced-security-active-committers-user"][]; + }; + "advanced-security-active-committers": { + /** @example 25 */ + total_advanced_security_committers?: number; + /** @example 2 */ + total_count?: number; + repositories: components["schemas"]["advanced-security-active-committers-repository"][]; + }; + "packages-billing-usage": { + /** @description Sum of the free and paid storage space (GB) for GitHuub Packages. */ + total_gigabytes_bandwidth_used: number; + /** @description Total paid storage space (GB) for GitHuub Packages. */ + total_paid_gigabytes_bandwidth_used: number; + /** @description Free storage space (GB) for GitHub Packages. */ + included_gigabytes_bandwidth: number; + }; + "combined-billing-usage": { + /** @description Numbers of days left in billing cycle. */ + days_left_in_billing_cycle: number; + /** @description Estimated storage space (GB) used in billing cycle. */ + estimated_paid_storage_for_month: number; + /** @description Estimated sum of free and paid storage space (GB) used in billing cycle. */ + estimated_storage_for_month: number; + }; + /** + * Actor + * @description Actor + */ + actor: { + id: number; + login: string; + display_login?: string; + gravatar_id: string | null; + /** Format: uri */ + url: string; + /** Format: uri */ + avatar_url: string; + }; + /** + * Milestone + * @description A collection of related issues and pull requests. + */ + "nullable-milestone": { + /** + * Format: uri + * @example https://api.github.com/repos/octocat/Hello-World/milestones/1 + */ + url: string; + /** + * Format: uri + * @example https://github.com/octocat/Hello-World/milestones/v1.0 + */ + html_url: string; + /** + * Format: uri + * @example https://api.github.com/repos/octocat/Hello-World/milestones/1/labels + */ + labels_url: string; + /** @example 1002604 */ + id: number; + /** @example MDk6TWlsZXN0b25lMTAwMjYwNA== */ + node_id: string; + /** + * @description The number of the milestone. + * @example 42 + */ + number: number; + /** + * @description The state of the milestone. + * @default open + * @example open + * @enum {string} + */ + state: "open" | "closed"; + /** + * @description The title of the milestone. + * @example v1.0 + */ + title: string; + /** @example Tracking milestone for version 1.0 */ + description: string | null; + creator: components["schemas"]["nullable-simple-user"]; + /** @example 4 */ + open_issues: number; + /** @example 8 */ + closed_issues: number; + /** + * Format: date-time + * @example 2011-04-10T20:09:31Z + */ + created_at: string; + /** + * Format: date-time + * @example 2014-03-03T18:58:10Z + */ + updated_at: string; + /** + * Format: date-time + * @example 2013-02-12T13:22:01Z + */ + closed_at: string | null; + /** + * Format: date-time + * @example 2012-10-09T23:39:01Z + */ + due_on: string | null; + } | null; + /** + * GitHub app + * @description GitHub apps are a new way to extend GitHub. They can be installed directly on organizations and user accounts and granted access to specific repositories. They come with granular permissions and built-in webhooks. GitHub apps are first class actors within GitHub. + */ + "nullable-integration": { + /** + * @description Unique identifier of the GitHub app + * @example 37 + */ + id: number; + /** + * @description The slug name of the GitHub app + * @example probot-owners + */ + slug?: string; + /** @example MDExOkludGVncmF0aW9uMQ== */ + node_id: string; + owner: components["schemas"]["nullable-simple-user"]; + /** + * @description The name of the GitHub app + * @example Probot Owners + */ + name: string; + /** @example The description of the app. */ + description: string | null; + /** + * Format: uri + * @example https://example.com + */ + external_url: string; + /** + * Format: uri + * @example https://github.com/apps/super-ci + */ + html_url: string; + /** + * Format: date-time + * @example 2017-07-08T16:18:44-04:00 + */ + created_at: string; + /** + * Format: date-time + * @example 2017-07-08T16:18:44-04:00 + */ + updated_at: string; + /** + * @description The set of permissions for the GitHub app + * @example { + * "issues": "read", + * "deployments": "write" + * } + */ + permissions: { + issues?: string; + checks?: string; + metadata?: string; + contents?: string; + deployments?: string; + } & { [key: string]: string }; + /** + * @description The list of events for the GitHub app + * @example [ + * "label", + * "deployment" + * ] + */ + events: string[]; + /** + * @description The number of installations associated with the GitHub app + * @example 5 + */ + installations_count?: number; + /** @example "Iv1.25b5d1e65ffc4022" */ + client_id?: string; + /** @example "1d4b2097ac622ba702d19de498f005747a8b21d3" */ + client_secret?: string; + /** @example "6fba8f2fc8a7e8f2cca5577eddd82ca7586b3b6b" */ + webhook_secret?: string | null; + /** @example "-----BEGIN RSA PRIVATE KEY-----\nMIIEogIBAAKCAQEArYxrNYD/iT5CZVpRJu4rBKmmze3PVmT/gCo2ATUvDvZTPTey\nxcGJ3vvrJXazKk06pN05TN29o98jrYz4cengG3YGsXPNEpKsIrEl8NhbnxapEnM9\nJCMRe0P5JcPsfZlX6hmiT7136GRWiGOUba2X9+HKh8QJVLG5rM007TBER9/z9mWm\nrJuNh+m5l320oBQY/Qq3A7wzdEfZw8qm/mIN0FCeoXH1L6B8xXWaAYBwhTEh6SSn\nZHlO1Xu1JWDmAvBCi0RO5aRSKM8q9QEkvvHP4yweAtK3N8+aAbZ7ovaDhyGz8r6r\nzhU1b8Uo0Z2ysf503WqzQgIajr7Fry7/kUwpgQIDAQABAoIBADwJp80Ko1xHPZDy\nfcCKBDfIuPvkmSW6KumbsLMaQv1aGdHDwwTGv3t0ixSay8CGlxMRtRDyZPib6SvQ\n6OH/lpfpbMdW2ErkksgtoIKBVrDilfrcAvrNZu7NxRNbhCSvN8q0s4ICecjbbVQh\nnueSdlA6vGXbW58BHMq68uRbHkP+k+mM9U0mDJ1HMch67wlg5GbayVRt63H7R2+r\nVxcna7B80J/lCEjIYZznawgiTvp3MSanTglqAYi+m1EcSsP14bJIB9vgaxS79kTu\noiSo93leJbBvuGo8QEiUqTwMw4tDksmkLsoqNKQ1q9P7LZ9DGcujtPy4EZsamSJT\ny8OJt0ECgYEA2lxOxJsQk2kI325JgKFjo92mQeUObIvPfSNWUIZQDTjniOI6Gv63\nGLWVFrZcvQBWjMEQraJA9xjPbblV8PtfO87MiJGLWCHFxmPz2dzoedN+2Coxom8m\nV95CLz8QUShuao6u/RYcvUaZEoYs5bHcTmy5sBK80JyEmafJPtCQVxMCgYEAy3ar\nZr3yv4xRPEPMat4rseswmuMooSaK3SKub19WFI5IAtB/e7qR1Rj9JhOGcZz+OQrl\nT78O2OFYlgOIkJPvRMrPpK5V9lslc7tz1FSh3BZMRGq5jSyD7ETSOQ0c8T2O/s7v\nbeEPbVbDe4mwvM24XByH0GnWveVxaDl51ABD65sCgYB3ZAspUkOA5egVCh8kNpnd\nSd6SnuQBE3ySRlT2WEnCwP9Ph6oPgn+oAfiPX4xbRqkL8q/k0BdHQ4h+zNwhk7+h\nWtPYRAP1Xxnc/F+jGjb+DVaIaKGU18MWPg7f+FI6nampl3Q0KvfxwX0GdNhtio8T\nTj1E+SnFwh56SRQuxSh2gwKBgHKjlIO5NtNSflsUYFM+hyQiPiqnHzddfhSG+/3o\nm5nNaSmczJesUYreH5San7/YEy2UxAugvP7aSY2MxB+iGsiJ9WD2kZzTUlDZJ7RV\nUzWsoqBR+eZfVJ2FUWWvy8TpSG6trh4dFxImNtKejCR1TREpSiTV3Zb1dmahK9GV\nrK9NAoGAbBxRLoC01xfxCTgt5BDiBcFVh4fp5yYKwavJPLzHSpuDOrrI9jDn1oKN\nonq5sDU1i391zfQvdrbX4Ova48BN+B7p63FocP/MK5tyyBoT8zQEk2+vWDOw7H/Z\nu5dTCPxTIsoIwUw1I+7yIxqJzLPFgR2gVBwY1ra/8iAqCj+zeBw=\n-----END RSA PRIVATE KEY-----\n" */ + pem?: string; + } | null; + /** + * author_association + * @description How the author is associated with the repository. + * @example OWNER + * @enum {string} + */ + "author-association": + | "COLLABORATOR" + | "CONTRIBUTOR" + | "FIRST_TIMER" + | "FIRST_TIME_CONTRIBUTOR" + | "MANNEQUIN" + | "MEMBER" + | "NONE" + | "OWNER"; + /** Reaction Rollup */ + "reaction-rollup": { + /** Format: uri */ + url: string; + total_count: number; + "+1": number; + "-1": number; + laugh: number; + confused: number; + heart: number; + hooray: number; + eyes: number; + rocket: number; + }; + /** + * Issue + * @description Issues are a great way to keep track of tasks, enhancements, and bugs for your projects. + */ + issue: { + id: number; + node_id: string; + /** + * Format: uri + * @description URL for the issue + * @example https://api.github.com/repositories/42/issues/1 + */ + url: string; + /** Format: uri */ + repository_url: string; + labels_url: string; + /** Format: uri */ + comments_url: string; + /** Format: uri */ + events_url: string; + /** Format: uri */ + html_url: string; + /** + * @description Number uniquely identifying the issue within its repository + * @example 42 + */ + number: number; + /** + * @description State of the issue; either 'open' or 'closed' + * @example open + */ + state: string; + /** + * @description The reason for the current state + * @example not_planned + */ + state_reason?: string | null; + /** + * @description Title of the issue + * @example Widget creation fails in Safari on OS X 10.8 + */ + title: string; + /** + * @description Contents of the issue + * @example It looks like the new widget form is broken on Safari. When I try and create the widget, Safari crashes. This is reproducible on 10.8, but not 10.9. Maybe a browser bug? + */ + body?: string | null; + user: components["schemas"]["nullable-simple-user"]; + /** + * @description Labels to associate with this issue; pass one or more label names to replace the set of labels on this issue; send an empty array to clear all labels from the issue; note that the labels are silently dropped for users without push access to the repository + * @example [ + * "bug", + * "registration" + * ] + */ + labels: ( + | string + | { + /** Format: int64 */ + id?: number; + node_id?: string; + /** Format: uri */ + url?: string; + name?: string; + description?: string | null; + color?: string | null; + default?: boolean; + } + )[]; + assignee: components["schemas"]["nullable-simple-user"]; + assignees?: components["schemas"]["simple-user"][] | null; + milestone: components["schemas"]["nullable-milestone"]; + locked: boolean; + active_lock_reason?: string | null; + comments: number; + pull_request?: { + /** Format: date-time */ + merged_at?: string | null; + /** Format: uri */ + diff_url: string | null; + /** Format: uri */ + html_url: string | null; + /** Format: uri */ + patch_url: string | null; + /** Format: uri */ + url: string | null; + }; + /** Format: date-time */ + closed_at: string | null; + /** Format: date-time */ + created_at: string; + /** Format: date-time */ + updated_at: string; + draft?: boolean; + closed_by?: components["schemas"]["nullable-simple-user"]; + body_html?: string; + body_text?: string; + /** Format: uri */ + timeline_url?: string; + repository?: components["schemas"]["repository"]; + performed_via_github_app?: components["schemas"]["nullable-integration"]; + author_association: components["schemas"]["author-association"]; + reactions?: components["schemas"]["reaction-rollup"]; + }; + /** + * Issue Comment + * @description Comments provide a way for people to collaborate on an issue. + */ + "issue-comment": { + /** + * @description Unique identifier of the issue comment + * @example 42 + */ + id: number; + node_id: string; + /** + * Format: uri + * @description URL for the issue comment + * @example https://api.github.com/repositories/42/issues/comments/1 + */ + url: string; + /** + * @description Contents of the issue comment + * @example What version of Safari were you using when you observed this bug? + */ + body?: string; + body_text?: string; + body_html?: string; + /** Format: uri */ + html_url: string; + user: components["schemas"]["nullable-simple-user"]; + /** + * Format: date-time + * @example 2011-04-14T16:00:49Z + */ + created_at: string; + /** + * Format: date-time + * @example 2011-04-14T16:00:49Z + */ + updated_at: string; + /** Format: uri */ + issue_url: string; + author_association: components["schemas"]["author-association"]; + performed_via_github_app?: components["schemas"]["nullable-integration"]; + reactions?: components["schemas"]["reaction-rollup"]; + }; + /** + * Event + * @description Event + */ + event: { + id: string; + type: string | null; + actor: components["schemas"]["actor"]; + repo: { + id: number; + name: string; + /** Format: uri */ + url: string; + }; + org?: components["schemas"]["actor"]; + payload: { + action?: string; + issue?: components["schemas"]["issue"]; + comment?: components["schemas"]["issue-comment"]; + pages?: { + page_name?: string; + title?: string; + summary?: string | null; + action?: string; + sha?: string; + html_url?: string; + }[]; + }; + public: boolean; + /** Format: date-time */ + created_at: string | null; + }; + /** + * Link With Type + * @description Hypermedia Link with Type + */ + "link-with-type": { + href: string; + type: string; + }; + /** + * Feed + * @description Feed + */ + feed: { + /** @example https://github.com/timeline */ + timeline_url: string; + /** @example https://github.com/{user} */ + user_url: string; + /** @example https://github.com/octocat */ + current_user_public_url?: string; + /** @example https://github.com/octocat.private?token=abc123 */ + current_user_url?: string; + /** @example https://github.com/octocat.private.actor?token=abc123 */ + current_user_actor_url?: string; + /** @example https://github.com/octocat-org */ + current_user_organization_url?: string; + /** + * @example [ + * "https://github.com/organizations/github/octocat.private.atom?token=abc123" + * ] + */ + current_user_organization_urls?: string[]; + /** @example https://github.com/security-advisories */ + security_advisories_url?: string; + _links: { + timeline: components["schemas"]["link-with-type"]; + user: components["schemas"]["link-with-type"]; + security_advisories?: components["schemas"]["link-with-type"]; + current_user?: components["schemas"]["link-with-type"]; + current_user_public?: components["schemas"]["link-with-type"]; + current_user_actor?: components["schemas"]["link-with-type"]; + current_user_organization?: components["schemas"]["link-with-type"]; + current_user_organizations?: components["schemas"]["link-with-type"][]; + }; + }; + /** + * Base Gist + * @description Base Gist + */ + "base-gist": { + /** Format: uri */ + url: string; + /** Format: uri */ + forks_url: string; + /** Format: uri */ + commits_url: string; + id: string; + node_id: string; + /** Format: uri */ + git_pull_url: string; + /** Format: uri */ + git_push_url: string; + /** Format: uri */ + html_url: string; + files: { + [key: string]: { + filename?: string; + type?: string; + language?: string; + raw_url?: string; + size?: number; + }; + }; + public: boolean; + /** Format: date-time */ + created_at: string; + /** Format: date-time */ + updated_at: string; + description: string | null; + comments: number; + user: components["schemas"]["nullable-simple-user"]; + /** Format: uri */ + comments_url: string; + owner?: components["schemas"]["simple-user"]; + truncated?: boolean; + forks?: unknown[]; + history?: unknown[]; + }; + /** + * Public User + * @description Public User + */ + "public-user": { + login: string; + id: number; + node_id: string; + /** Format: uri */ + avatar_url: string; + gravatar_id: string | null; + /** Format: uri */ + url: string; + /** Format: uri */ + html_url: string; + /** Format: uri */ + followers_url: string; + following_url: string; + gists_url: string; + starred_url: string; + /** Format: uri */ + subscriptions_url: string; + /** Format: uri */ + organizations_url: string; + /** Format: uri */ + repos_url: string; + events_url: string; + /** Format: uri */ + received_events_url: string; + type: string; + site_admin: boolean; + name: string | null; + company: string | null; + blog: string | null; + location: string | null; + /** Format: email */ + email: string | null; + hireable: boolean | null; + bio: string | null; + twitter_username?: string | null; + public_repos: number; + public_gists: number; + followers: number; + following: number; + /** Format: date-time */ + created_at: string; + /** Format: date-time */ + updated_at: string; + plan?: { + collaborators: number; + name: string; + space: number; + private_repos: number; + }; + /** Format: date-time */ + suspended_at?: string | null; + /** @example 1 */ + private_gists?: number; + /** @example 2 */ + total_private_repos?: number; + /** @example 2 */ + owned_private_repos?: number; + /** @example 1 */ + disk_usage?: number; + /** @example 3 */ + collaborators?: number; + }; + /** + * Gist History + * @description Gist History + */ + "gist-history": { + user?: components["schemas"]["nullable-simple-user"]; + version?: string; + /** Format: date-time */ + committed_at?: string; + change_status?: { + total?: number; + additions?: number; + deletions?: number; + }; + /** Format: uri */ + url?: string; + }; + /** + * Gist Simple + * @description Gist Simple + */ + "gist-simple": { + /** @deprecated */ + forks?: + | { + id?: string; + /** Format: uri */ + url?: string; + user?: components["schemas"]["public-user"]; + /** Format: date-time */ + created_at?: string; + /** Format: date-time */ + updated_at?: string; + }[] + | null; + /** @deprecated */ + history?: components["schemas"]["gist-history"][] | null; + /** + * Gist + * @description Gist + */ + fork_of?: { + /** Format: uri */ + url: string; + /** Format: uri */ + forks_url: string; + /** Format: uri */ + commits_url: string; + id: string; + node_id: string; + /** Format: uri */ + git_pull_url: string; + /** Format: uri */ + git_push_url: string; + /** Format: uri */ + html_url: string; + files: { + [key: string]: { + filename?: string; + type?: string; + language?: string; + raw_url?: string; + size?: number; + }; + }; + public: boolean; + /** Format: date-time */ + created_at: string; + /** Format: date-time */ + updated_at: string; + description: string | null; + comments: number; + user: components["schemas"]["nullable-simple-user"]; + /** Format: uri */ + comments_url: string; + owner?: components["schemas"]["nullable-simple-user"]; + truncated?: boolean; + forks?: unknown[]; + history?: unknown[]; + } | null; + url?: string; + forks_url?: string; + commits_url?: string; + id?: string; + node_id?: string; + git_pull_url?: string; + git_push_url?: string; + html_url?: string; + files?: { + [key: string]: { + filename?: string; + type?: string; + language?: string; + raw_url?: string; + size?: number; + truncated?: boolean; + content?: string; + } | null; + }; + public?: boolean; + created_at?: string; + updated_at?: string; + description?: string | null; + comments?: number; + user?: string | null; + comments_url?: string; + owner?: components["schemas"]["simple-user"]; + truncated?: boolean; + }; + /** + * Gist Comment + * @description A comment made to a gist. + */ + "gist-comment": { + /** @example 1 */ + id: number; + /** @example MDExOkdpc3RDb21tZW50MQ== */ + node_id: string; + /** + * Format: uri + * @example https://api.github.com/gists/a6db0bec360bb87e9418/comments/1 + */ + url: string; + /** + * @description The comment text. + * @example Body of the attachment + */ + body: string; + user: components["schemas"]["nullable-simple-user"]; + /** + * Format: date-time + * @example 2011-04-18T23:23:56Z + */ + created_at: string; + /** + * Format: date-time + * @example 2011-04-18T23:23:56Z + */ + updated_at: string; + author_association: components["schemas"]["author-association"]; + }; + /** + * Gist Commit + * @description Gist Commit + */ + "gist-commit": { + /** + * Format: uri + * @example https://api.github.com/gists/aa5a315d61ae9438b18d/57a7f021a713b1c5a6a199b54cc514735d2d462f + */ + url: string; + /** @example 57a7f021a713b1c5a6a199b54cc514735d2d462f */ + version: string; + user: components["schemas"]["nullable-simple-user"]; + change_status: { + total?: number; + additions?: number; + deletions?: number; + }; + /** + * Format: date-time + * @example 2010-04-14T02:15:15Z + */ + committed_at: string; + }; + /** + * Gitignore Template + * @description Gitignore Template + */ + "gitignore-template": { + /** @example C */ + name: string; + /** + * @example # Object files + * *.o + * + * # Libraries + * *.lib + * *.a + * + * # Shared objects (inc. Windows DLLs) + * *.dll + * *.so + * *.so.* + * *.dylib + * + * # Executables + * *.exe + * *.out + * *.app + */ + source: string; + }; + /** + * License Simple + * @description License Simple + */ + "license-simple": { + /** @example mit */ + key: string; + /** @example MIT License */ + name: string; + /** + * Format: uri + * @example https://api.github.com/licenses/mit + */ + url: string | null; + /** @example MIT */ + spdx_id: string | null; + /** @example MDc6TGljZW5zZW1pdA== */ + node_id: string; + /** Format: uri */ + html_url?: string; + }; + /** + * License + * @description License + */ + license: { + /** @example mit */ + key: string; + /** @example MIT License */ + name: string; + /** @example MIT */ + spdx_id: string | null; + /** + * Format: uri + * @example https://api.github.com/licenses/mit + */ + url: string | null; + /** @example MDc6TGljZW5zZW1pdA== */ + node_id: string; + /** + * Format: uri + * @example http://choosealicense.com/licenses/mit/ + */ + html_url: string; + /** @example A permissive license that is short and to the point. It lets people do anything with your code with proper attribution and without warranty. */ + description: string; + /** @example Create a text file (typically named LICENSE or LICENSE.txt) in the root of your source code and copy the text of the license into the file. Replace [year] with the current year and [fullname] with the name (or names) of the copyright holders. */ + implementation: string; + /** + * @example [ + * "commercial-use", + * "modifications", + * "distribution", + * "sublicense", + * "private-use" + * ] + */ + permissions: string[]; + /** + * @example [ + * "include-copyright" + * ] + */ + conditions: string[]; + /** + * @example [ + * "no-liability" + * ] + */ + limitations: string[]; + /** + * @example + * + * The MIT License (MIT) + * + * Copyright (c) [year] [fullname] + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + body: string; + /** @example true */ + featured: boolean; + }; + /** + * Marketplace Listing Plan + * @description Marketplace Listing Plan + */ + "marketplace-listing-plan": { + /** + * Format: uri + * @example https://api.github.com/marketplace_listing/plans/1313 + */ + url: string; + /** + * Format: uri + * @example https://api.github.com/marketplace_listing/plans/1313/accounts + */ + accounts_url: string; + /** @example 1313 */ + id: number; + /** @example 3 */ + number: number; + /** @example Pro */ + name: string; + /** @example A professional-grade CI solution */ + description: string; + /** @example 1099 */ + monthly_price_in_cents: number; + /** @example 11870 */ + yearly_price_in_cents: number; + /** @example flat-rate */ + price_model: string; + /** @example true */ + has_free_trial: boolean; + unit_name: string | null; + /** @example published */ + state: string; + /** + * @example [ + * "Up to 25 private repositories", + * "11 concurrent builds" + * ] + */ + bullets: string[]; + }; + /** + * Marketplace Purchase + * @description Marketplace Purchase + */ + "marketplace-purchase": { + url: string; + type: string; + id: number; + login: string; + organization_billing_email?: string; + email?: string | null; + marketplace_pending_change?: { + is_installed?: boolean; + effective_date?: string; + unit_count?: number | null; + id?: number; + plan?: components["schemas"]["marketplace-listing-plan"]; + } | null; + marketplace_purchase: { + billing_cycle?: string; + next_billing_date?: string | null; + is_installed?: boolean; + unit_count?: number | null; + on_free_trial?: boolean; + free_trial_ends_on?: string | null; + updated_at?: string; + plan?: components["schemas"]["marketplace-listing-plan"]; + }; + }; + /** + * Api Overview + * @description Api Overview + */ + "api-overview": { + /** @example true */ + verifiable_password_authentication: boolean; + ssh_key_fingerprints?: { + SHA256_RSA?: string; + SHA256_DSA?: string; + SHA256_ECDSA?: string; + SHA256_ED25519?: string; + }; + /** + * @example [ + * "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOMqqnkVzrm0SdG6UOoqKLsabgH5C9okWi0dh2l9GKJl" + * ] + */ + ssh_keys?: string[]; + /** + * @example [ + * "127.0.0.1/32" + * ] + */ + hooks?: string[]; + /** + * @example [ + * "127.0.0.1/32" + * ] + */ + web?: string[]; + /** + * @example [ + * "127.0.0.1/32" + * ] + */ + api?: string[]; + /** + * @example [ + * "127.0.0.1/32" + * ] + */ + git?: string[]; + /** + * @example [ + * "13.65.0.0/16", + * "157.55.204.33/32", + * "2a01:111:f403:f90c::/62" + * ] + */ + packages?: string[]; + /** + * @example [ + * "192.30.252.153/32", + * "192.30.252.154/32" + * ] + */ + pages?: string[]; + /** + * @example [ + * "54.158.161.132", + * "54.226.70.38" + * ] + */ + importer?: string[]; + /** + * @example [ + * "13.64.0.0/16", + * "13.65.0.0/16" + * ] + */ + actions?: string[]; + /** + * @example [ + * "192.168.7.15/32", + * "192.168.7.16/32" + * ] + */ + dependabot?: string[]; + }; + /** + * Repository + * @description A git repository + */ + "nullable-repository": { + /** + * @description Unique identifier of the repository + * @example 42 + */ + id: number; + /** @example MDEwOlJlcG9zaXRvcnkxMjk2MjY5 */ + node_id: string; + /** + * @description The name of the repository. + * @example Team Environment + */ + name: string; + /** @example octocat/Hello-World */ + full_name: string; + license: components["schemas"]["nullable-license-simple"]; + organization?: components["schemas"]["nullable-simple-user"]; + forks: number; + permissions?: { + admin: boolean; + pull: boolean; + triage?: boolean; + push: boolean; + maintain?: boolean; + }; + owner: components["schemas"]["simple-user"]; + /** + * @description Whether the repository is private or public. + * @default false + */ + private: boolean; + /** + * Format: uri + * @example https://github.com/octocat/Hello-World + */ + html_url: string; + /** @example This your first repo! */ + description: string | null; + fork: boolean; + /** + * Format: uri + * @example https://api.github.com/repos/octocat/Hello-World + */ + url: string; + /** @example http://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref} */ + archive_url: string; + /** @example http://api.github.com/repos/octocat/Hello-World/assignees{/user} */ + assignees_url: string; + /** @example http://api.github.com/repos/octocat/Hello-World/git/blobs{/sha} */ + blobs_url: string; + /** @example http://api.github.com/repos/octocat/Hello-World/branches{/branch} */ + branches_url: string; + /** @example http://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator} */ + collaborators_url: string; + /** @example http://api.github.com/repos/octocat/Hello-World/comments{/number} */ + comments_url: string; + /** @example http://api.github.com/repos/octocat/Hello-World/commits{/sha} */ + commits_url: string; + /** @example http://api.github.com/repos/octocat/Hello-World/compare/{base}...{head} */ + compare_url: string; + /** @example http://api.github.com/repos/octocat/Hello-World/contents/{+path} */ + contents_url: string; + /** + * Format: uri + * @example http://api.github.com/repos/octocat/Hello-World/contributors + */ + contributors_url: string; + /** + * Format: uri + * @example http://api.github.com/repos/octocat/Hello-World/deployments + */ + deployments_url: string; + /** + * Format: uri + * @example http://api.github.com/repos/octocat/Hello-World/downloads + */ + downloads_url: string; + /** + * Format: uri + * @example http://api.github.com/repos/octocat/Hello-World/events + */ + events_url: string; + /** + * Format: uri + * @example http://api.github.com/repos/octocat/Hello-World/forks + */ + forks_url: string; + /** @example http://api.github.com/repos/octocat/Hello-World/git/commits{/sha} */ + git_commits_url: string; + /** @example http://api.github.com/repos/octocat/Hello-World/git/refs{/sha} */ + git_refs_url: string; + /** @example http://api.github.com/repos/octocat/Hello-World/git/tags{/sha} */ + git_tags_url: string; + /** @example git:github.com/octocat/Hello-World.git */ + git_url: string; + /** @example http://api.github.com/repos/octocat/Hello-World/issues/comments{/number} */ + issue_comment_url: string; + /** @example http://api.github.com/repos/octocat/Hello-World/issues/events{/number} */ + issue_events_url: string; + /** @example http://api.github.com/repos/octocat/Hello-World/issues{/number} */ + issues_url: string; + /** @example http://api.github.com/repos/octocat/Hello-World/keys{/key_id} */ + keys_url: string; + /** @example http://api.github.com/repos/octocat/Hello-World/labels{/name} */ + labels_url: string; + /** + * Format: uri + * @example http://api.github.com/repos/octocat/Hello-World/languages + */ + languages_url: string; + /** + * Format: uri + * @example http://api.github.com/repos/octocat/Hello-World/merges + */ + merges_url: string; + /** @example http://api.github.com/repos/octocat/Hello-World/milestones{/number} */ + milestones_url: string; + /** @example http://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating} */ + notifications_url: string; + /** @example http://api.github.com/repos/octocat/Hello-World/pulls{/number} */ + pulls_url: string; + /** @example http://api.github.com/repos/octocat/Hello-World/releases{/id} */ + releases_url: string; + /** @example git@github.com:octocat/Hello-World.git */ + ssh_url: string; + /** + * Format: uri + * @example http://api.github.com/repos/octocat/Hello-World/stargazers + */ + stargazers_url: string; + /** @example http://api.github.com/repos/octocat/Hello-World/statuses/{sha} */ + statuses_url: string; + /** + * Format: uri + * @example http://api.github.com/repos/octocat/Hello-World/subscribers + */ + subscribers_url: string; + /** + * Format: uri + * @example http://api.github.com/repos/octocat/Hello-World/subscription + */ + subscription_url: string; + /** + * Format: uri + * @example http://api.github.com/repos/octocat/Hello-World/tags + */ + tags_url: string; + /** + * Format: uri + * @example http://api.github.com/repos/octocat/Hello-World/teams + */ + teams_url: string; + /** @example http://api.github.com/repos/octocat/Hello-World/git/trees{/sha} */ + trees_url: string; + /** @example https://github.com/octocat/Hello-World.git */ + clone_url: string; + /** + * Format: uri + * @example git:git.example.com/octocat/Hello-World + */ + mirror_url: string | null; + /** + * Format: uri + * @example http://api.github.com/repos/octocat/Hello-World/hooks + */ + hooks_url: string; + /** + * Format: uri + * @example https://svn.github.com/octocat/Hello-World + */ + svn_url: string; + /** + * Format: uri + * @example https://github.com + */ + homepage: string | null; + language: string | null; + /** @example 9 */ + forks_count: number; + /** @example 80 */ + stargazers_count: number; + /** @example 80 */ + watchers_count: number; + /** @example 108 */ + size: number; + /** + * @description The default branch of the repository. + * @example master + */ + default_branch: string; + /** @example 0 */ + open_issues_count: number; + /** + * @description Whether this repository acts as a template that can be used to generate new repositories. + * @default false + * @example true + */ + is_template?: boolean; + topics?: string[]; + /** + * @description Whether issues are enabled. + * @default true + * @example true + */ + has_issues: boolean; + /** + * @description Whether projects are enabled. + * @default true + * @example true + */ + has_projects: boolean; + /** + * @description Whether the wiki is enabled. + * @default true + * @example true + */ + has_wiki: boolean; + has_pages: boolean; + /** + * @description Whether downloads are enabled. + * @default true + * @example true + */ + has_downloads: boolean; + /** + * @description Whether the repository is archived. + * @default false + */ + archived: boolean; + /** @description Returns whether or not this repository disabled. */ + disabled: boolean; + /** + * @description The repository visibility: public, private, or internal. + * @default public + */ + visibility?: string; + /** + * Format: date-time + * @example 2011-01-26T19:06:43Z + */ + pushed_at: string | null; + /** + * Format: date-time + * @example 2011-01-26T19:01:12Z + */ + created_at: string | null; + /** + * Format: date-time + * @example 2011-01-26T19:14:43Z + */ + updated_at: string | null; + /** + * @description Whether to allow rebase merges for pull requests. + * @default true + * @example true + */ + allow_rebase_merge?: boolean; + template_repository?: { + id?: number; + node_id?: string; + name?: string; + full_name?: string; + owner?: { + login?: string; + id?: number; + node_id?: string; + avatar_url?: string; + gravatar_id?: string; + url?: string; + html_url?: string; + followers_url?: string; + following_url?: string; + gists_url?: string; + starred_url?: string; + subscriptions_url?: string; + organizations_url?: string; + repos_url?: string; + events_url?: string; + received_events_url?: string; + type?: string; + site_admin?: boolean; + }; + private?: boolean; + html_url?: string; + description?: string; + fork?: boolean; + url?: string; + archive_url?: string; + assignees_url?: string; + blobs_url?: string; + branches_url?: string; + collaborators_url?: string; + comments_url?: string; + commits_url?: string; + compare_url?: string; + contents_url?: string; + contributors_url?: string; + deployments_url?: string; + downloads_url?: string; + events_url?: string; + forks_url?: string; + git_commits_url?: string; + git_refs_url?: string; + git_tags_url?: string; + git_url?: string; + issue_comment_url?: string; + issue_events_url?: string; + issues_url?: string; + keys_url?: string; + labels_url?: string; + languages_url?: string; + merges_url?: string; + milestones_url?: string; + notifications_url?: string; + pulls_url?: string; + releases_url?: string; + ssh_url?: string; + stargazers_url?: string; + statuses_url?: string; + subscribers_url?: string; + subscription_url?: string; + tags_url?: string; + teams_url?: string; + trees_url?: string; + clone_url?: string; + mirror_url?: string; + hooks_url?: string; + svn_url?: string; + homepage?: string; + language?: string; + forks_count?: number; + stargazers_count?: number; + watchers_count?: number; + size?: number; + default_branch?: string; + open_issues_count?: number; + is_template?: boolean; + topics?: string[]; + has_issues?: boolean; + has_projects?: boolean; + has_wiki?: boolean; + has_pages?: boolean; + has_downloads?: boolean; + archived?: boolean; + disabled?: boolean; + visibility?: string; + pushed_at?: string; + created_at?: string; + updated_at?: string; + permissions?: { + admin?: boolean; + maintain?: boolean; + push?: boolean; + triage?: boolean; + pull?: boolean; + }; + allow_rebase_merge?: boolean; + temp_clone_token?: string; + allow_squash_merge?: boolean; + allow_auto_merge?: boolean; + delete_branch_on_merge?: boolean; + allow_update_branch?: boolean; + use_squash_pr_title_as_default?: boolean; + allow_merge_commit?: boolean; + subscribers_count?: number; + network_count?: number; + } | null; + temp_clone_token?: string; + /** + * @description Whether to allow squash merges for pull requests. + * @default true + * @example true + */ + allow_squash_merge?: boolean; + /** + * @description Whether to allow Auto-merge to be used on pull requests. + * @default false + * @example false + */ + allow_auto_merge?: boolean; + /** + * @description Whether to delete head branches when pull requests are merged + * @default false + * @example false + */ + delete_branch_on_merge?: boolean; + /** + * @description Whether or not a pull request head branch that is behind its base branch can always be updated even if it is not required to be up to date before merging. + * @default false + * @example false + */ + allow_update_branch?: boolean; + /** + * @description Whether a squash merge commit can use the pull request title as default. + * @default false + */ + use_squash_pr_title_as_default?: boolean; + /** + * @description Whether to allow merge commits for pull requests. + * @default true + * @example true + */ + allow_merge_commit?: boolean; + /** @description Whether to allow forking this repo */ + allow_forking?: boolean; + subscribers_count?: number; + network_count?: number; + open_issues: number; + watchers: number; + master_branch?: string; + /** @example "2020-07-09T00:17:42Z" */ + starred_at?: string; + } | null; + /** + * Minimal Repository + * @description Minimal Repository + */ + "minimal-repository": { + /** @example 1296269 */ + id: number; + /** @example MDEwOlJlcG9zaXRvcnkxMjk2MjY5 */ + node_id: string; + /** @example Hello-World */ + name: string; + /** @example octocat/Hello-World */ + full_name: string; + owner: components["schemas"]["simple-user"]; + private: boolean; + /** + * Format: uri + * @example https://github.com/octocat/Hello-World + */ + html_url: string; + /** @example This your first repo! */ + description: string | null; + fork: boolean; + /** + * Format: uri + * @example https://api.github.com/repos/octocat/Hello-World + */ + url: string; + /** @example http://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref} */ + archive_url: string; + /** @example http://api.github.com/repos/octocat/Hello-World/assignees{/user} */ + assignees_url: string; + /** @example http://api.github.com/repos/octocat/Hello-World/git/blobs{/sha} */ + blobs_url: string; + /** @example http://api.github.com/repos/octocat/Hello-World/branches{/branch} */ + branches_url: string; + /** @example http://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator} */ + collaborators_url: string; + /** @example http://api.github.com/repos/octocat/Hello-World/comments{/number} */ + comments_url: string; + /** @example http://api.github.com/repos/octocat/Hello-World/commits{/sha} */ + commits_url: string; + /** @example http://api.github.com/repos/octocat/Hello-World/compare/{base}...{head} */ + compare_url: string; + /** @example http://api.github.com/repos/octocat/Hello-World/contents/{+path} */ + contents_url: string; + /** + * Format: uri + * @example http://api.github.com/repos/octocat/Hello-World/contributors + */ + contributors_url: string; + /** + * Format: uri + * @example http://api.github.com/repos/octocat/Hello-World/deployments + */ + deployments_url: string; + /** + * Format: uri + * @example http://api.github.com/repos/octocat/Hello-World/downloads + */ + downloads_url: string; + /** + * Format: uri + * @example http://api.github.com/repos/octocat/Hello-World/events + */ + events_url: string; + /** + * Format: uri + * @example http://api.github.com/repos/octocat/Hello-World/forks + */ + forks_url: string; + /** @example http://api.github.com/repos/octocat/Hello-World/git/commits{/sha} */ + git_commits_url: string; + /** @example http://api.github.com/repos/octocat/Hello-World/git/refs{/sha} */ + git_refs_url: string; + /** @example http://api.github.com/repos/octocat/Hello-World/git/tags{/sha} */ + git_tags_url: string; + git_url?: string; + /** @example http://api.github.com/repos/octocat/Hello-World/issues/comments{/number} */ + issue_comment_url: string; + /** @example http://api.github.com/repos/octocat/Hello-World/issues/events{/number} */ + issue_events_url: string; + /** @example http://api.github.com/repos/octocat/Hello-World/issues{/number} */ + issues_url: string; + /** @example http://api.github.com/repos/octocat/Hello-World/keys{/key_id} */ + keys_url: string; + /** @example http://api.github.com/repos/octocat/Hello-World/labels{/name} */ + labels_url: string; + /** + * Format: uri + * @example http://api.github.com/repos/octocat/Hello-World/languages + */ + languages_url: string; + /** + * Format: uri + * @example http://api.github.com/repos/octocat/Hello-World/merges + */ + merges_url: string; + /** @example http://api.github.com/repos/octocat/Hello-World/milestones{/number} */ + milestones_url: string; + /** @example http://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating} */ + notifications_url: string; + /** @example http://api.github.com/repos/octocat/Hello-World/pulls{/number} */ + pulls_url: string; + /** @example http://api.github.com/repos/octocat/Hello-World/releases{/id} */ + releases_url: string; + ssh_url?: string; + /** + * Format: uri + * @example http://api.github.com/repos/octocat/Hello-World/stargazers + */ + stargazers_url: string; + /** @example http://api.github.com/repos/octocat/Hello-World/statuses/{sha} */ + statuses_url: string; + /** + * Format: uri + * @example http://api.github.com/repos/octocat/Hello-World/subscribers + */ + subscribers_url: string; + /** + * Format: uri + * @example http://api.github.com/repos/octocat/Hello-World/subscription + */ + subscription_url: string; + /** + * Format: uri + * @example http://api.github.com/repos/octocat/Hello-World/tags + */ + tags_url: string; + /** + * Format: uri + * @example http://api.github.com/repos/octocat/Hello-World/teams + */ + teams_url: string; + /** @example http://api.github.com/repos/octocat/Hello-World/git/trees{/sha} */ + trees_url: string; + clone_url?: string; + mirror_url?: string | null; + /** + * Format: uri + * @example http://api.github.com/repos/octocat/Hello-World/hooks + */ + hooks_url: string; + svn_url?: string; + homepage?: string | null; + language?: string | null; + forks_count?: number; + stargazers_count?: number; + watchers_count?: number; + size?: number; + default_branch?: string; + open_issues_count?: number; + is_template?: boolean; + topics?: string[]; + has_issues?: boolean; + has_projects?: boolean; + has_wiki?: boolean; + has_pages?: boolean; + has_downloads?: boolean; + archived?: boolean; + disabled?: boolean; + visibility?: string; + /** + * Format: date-time + * @example 2011-01-26T19:06:43Z + */ + pushed_at?: string | null; + /** + * Format: date-time + * @example 2011-01-26T19:01:12Z + */ + created_at?: string | null; + /** + * Format: date-time + * @example 2011-01-26T19:14:43Z + */ + updated_at?: string | null; + permissions?: { + admin?: boolean; + maintain?: boolean; + push?: boolean; + triage?: boolean; + pull?: boolean; + }; + /** @example admin */ + role_name?: string; + template_repository?: components["schemas"]["nullable-repository"]; + temp_clone_token?: string; + delete_branch_on_merge?: boolean; + subscribers_count?: number; + network_count?: number; + code_of_conduct?: components["schemas"]["code-of-conduct"]; + license?: { + key?: string; + name?: string; + spdx_id?: string; + url?: string; + node_id?: string; + } | null; + /** @example 0 */ + forks?: number; + /** @example 0 */ + open_issues?: number; + /** @example 0 */ + watchers?: number; + allow_forking?: boolean; + }; + /** + * Thread + * @description Thread + */ + thread: { + id: string; + repository: components["schemas"]["minimal-repository"]; + subject: { + title: string; + url: string; + latest_comment_url: string; + type: string; + }; + reason: string; + unread: boolean; + updated_at: string; + last_read_at: string | null; + url: string; + /** @example https://api.github.com/notifications/threads/2/subscription */ + subscription_url: string; + }; + /** + * Thread Subscription + * @description Thread Subscription + */ + "thread-subscription": { + /** @example true */ + subscribed: boolean; + ignored: boolean; + reason: string | null; + /** + * Format: date-time + * @example 2012-10-06T21:34:12Z + */ + created_at: string | null; + /** + * Format: uri + * @example https://api.github.com/notifications/threads/1/subscription + */ + url: string; + /** + * Format: uri + * @example https://api.github.com/notifications/threads/1 + */ + thread_url?: string; + /** + * Format: uri + * @example https://api.github.com/repos/1 + */ + repository_url?: string; + }; + /** + * Organization Custom Repository Role + * @description Custom repository roles created by organization administrators + */ + "organization-custom-repository-role": { + id: number; + name: string; + }; + /** + * Organization Full + * @description Organization Full + */ + "organization-full": { + /** @example github */ + login: string; + /** @example 1 */ + id: number; + /** @example MDEyOk9yZ2FuaXphdGlvbjE= */ + node_id: string; + /** + * Format: uri + * @example https://api.github.com/orgs/github + */ + url: string; + /** + * Format: uri + * @example https://api.github.com/orgs/github/repos + */ + repos_url: string; + /** + * Format: uri + * @example https://api.github.com/orgs/github/events + */ + events_url: string; + /** @example https://api.github.com/orgs/github/hooks */ + hooks_url: string; + /** @example https://api.github.com/orgs/github/issues */ + issues_url: string; + /** @example https://api.github.com/orgs/github/members{/member} */ + members_url: string; + /** @example https://api.github.com/orgs/github/public_members{/member} */ + public_members_url: string; + /** @example https://github.com/images/error/octocat_happy.gif */ + avatar_url: string; + /** @example A great organization */ + description: string | null; + /** @example github */ + name?: string; + /** @example GitHub */ + company?: string; + /** + * Format: uri + * @example https://github.com/blog + */ + blog?: string; + /** @example San Francisco */ + location?: string; + /** + * Format: email + * @example octocat@github.com + */ + email?: string; + /** @example github */ + twitter_username?: string | null; + /** @example true */ + is_verified?: boolean; + /** @example true */ + has_organization_projects: boolean; + /** @example true */ + has_repository_projects: boolean; + /** @example 2 */ + public_repos: number; + /** @example 1 */ + public_gists: number; + /** @example 20 */ + followers: number; + /** @example 0 */ + following: number; + /** + * Format: uri + * @example https://github.com/octocat + */ + html_url: string; + /** + * Format: date-time + * @example 2008-01-14T04:33:35Z + */ + created_at: string; + /** @example Organization */ + type: string; + /** @example 100 */ + total_private_repos?: number; + /** @example 100 */ + owned_private_repos?: number; + /** @example 81 */ + private_gists?: number | null; + /** @example 10000 */ + disk_usage?: number | null; + /** @example 8 */ + collaborators?: number | null; + /** + * Format: email + * @example org@example.com + */ + billing_email?: string | null; + plan?: { + name: string; + space: number; + private_repos: number; + filled_seats?: number; + seats?: number; + }; + default_repository_permission?: string | null; + /** @example true */ + members_can_create_repositories?: boolean | null; + /** @example true */ + two_factor_requirement_enabled?: boolean | null; + /** @example all */ + members_allowed_repository_creation_type?: string; + /** @example true */ + members_can_create_public_repositories?: boolean; + /** @example true */ + members_can_create_private_repositories?: boolean; + /** @example true */ + members_can_create_internal_repositories?: boolean; + /** @example true */ + members_can_create_pages?: boolean; + /** @example true */ + members_can_create_public_pages?: boolean; + /** @example true */ + members_can_create_private_pages?: boolean; + /** @example false */ + members_can_fork_private_repositories?: boolean | null; + /** Format: date-time */ + updated_at: string; + }; + /** + * Actions Cache Usage by repository + * @description GitHub Actions Cache Usage by repository. + */ + "actions-cache-usage-by-repository": { + /** + * @description The repository owner and name for the cache usage being shown. + * @example octo-org/Hello-World + */ + full_name: string; + /** + * @description The sum of the size in bytes of all the active cache items in the repository. + * @example 2322142 + */ + active_caches_size_in_bytes: number; + /** + * @description The number of active caches in the repository. + * @example 3 + */ + active_caches_count: number; + }; + /** + * Actions OIDC Subject customization + * @description Actions OIDC Subject customization + */ + "oidc-custom-sub": { + include_claim_keys: string[]; + }; + /** + * Empty Object + * @description An object without any properties. + */ + "empty-object": { [key: string]: unknown }; + /** + * @description The policy that controls the repositories in the organization that are allowed to run GitHub Actions. + * @enum {string} + */ + "enabled-repositories": "all" | "none" | "selected"; + "actions-organization-permissions": { + enabled_repositories: components["schemas"]["enabled-repositories"]; + /** @description The API URL to use to get or set the selected repositories that are allowed to run GitHub Actions, when `enabled_repositories` is set to `selected`. */ + selected_repositories_url?: string; + allowed_actions?: components["schemas"]["allowed-actions"]; + selected_actions_url?: components["schemas"]["selected-actions-url"]; + }; + "runner-groups-org": { + id: number; + name: string; + visibility: string; + default: boolean; + /** @description Link to the selected repositories resource for this runner group. Not present unless visibility was set to `selected` */ + selected_repositories_url?: string; + runners_url: string; + inherited: boolean; + inherited_allows_public_repositories?: boolean; + allows_public_repositories: boolean; + /** + * @description If `true`, the `restricted_to_workflows` and `selected_workflows` fields cannot be modified. + * @default false + */ + workflow_restrictions_read_only?: boolean; + /** + * @description If `true`, the runner group will be restricted to running only the workflows specified in the `selected_workflows` array. + * @default false + */ + restricted_to_workflows?: boolean; + /** @description List of workflows the runner group should be allowed to run. This setting will be ignored unless `restricted_to_workflows` is set to `true`. */ + selected_workflows?: string[]; + }; + /** + * Actions Secret for an Organization + * @description Secrets for GitHub Actions for an organization. + */ + "organization-actions-secret": { + /** + * @description The name of the secret. + * @example SECRET_TOKEN + */ + name: string; + /** Format: date-time */ + created_at: string; + /** Format: date-time */ + updated_at: string; + /** + * @description Visibility of a secret + * @enum {string} + */ + visibility: "all" | "private" | "selected"; + /** + * Format: uri + * @example https://api.github.com/organizations/org/secrets/my_secret/repositories + */ + selected_repositories_url?: string; + }; + /** + * ActionsPublicKey + * @description The public key used for setting Actions Secrets. + */ + "actions-public-key": { + /** + * @description The identifier for the key. + * @example 1234567 + */ + key_id: string; + /** + * @description The Base64 encoded public key. + * @example hBT5WZEj8ZoOv6TYJsfWq7MxTEQopZO5/IT3ZCVQPzs= + */ + key: string; + /** @example 2 */ + id?: number; + /** @example https://api.github.com/user/keys/2 */ + url?: string; + /** @example ssh-rsa AAAAB3NzaC1yc2EAAA */ + title?: string; + /** @example 2011-01-26T19:01:12Z */ + created_at?: string; + }; + /** + * Codespace machine + * @description A description of the machine powering a codespace. + */ + "nullable-codespace-machine": { + /** + * @description The name of the machine. + * @example standardLinux + */ + name: string; + /** + * @description The display name of the machine includes cores, memory, and storage. + * @example 4 cores, 8 GB RAM, 64 GB storage + */ + display_name: string; + /** + * @description The operating system of the machine. + * @example linux + */ + operating_system: string; + /** + * @description How much storage is available to the codespace. + * @example 68719476736 + */ + storage_in_bytes: number; + /** + * @description How much memory is available to the codespace. + * @example 8589934592 + */ + memory_in_bytes: number; + /** + * @description How many cores are available to the codespace. + * @example 4 + */ + cpus: number; + /** + * @description Whether a prebuild is currently available when creating a codespace for this machine and repository. If a branch was not specified as a ref, the default branch will be assumed. Value will be "null" if prebuilds are not supported or prebuild availability could not be determined. Value will be "none" if no prebuild is available. Latest values "ready" and "in_progress" indicate the prebuild availability status. + * @example ready + * @enum {string|null} + */ + prebuild_availability: ("none" | "ready" | "in_progress") | null; + } | null; + /** + * Codespace + * @description A codespace. + */ + codespace: { + /** @example 1 */ + id: number; + /** + * @description Automatically generated name of this codespace. + * @example monalisa-octocat-hello-world-g4wpq6h95q + */ + name: string; + /** + * @description Display name for this codespace. + * @example bookish space pancake + */ + display_name?: string | null; + /** + * @description UUID identifying this codespace's environment. + * @example 26a7c758-7299-4a73-b978-5a92a7ae98a0 + */ + environment_id: string | null; + owner: components["schemas"]["simple-user"]; + billable_owner: components["schemas"]["simple-user"]; + repository: components["schemas"]["minimal-repository"]; + machine: components["schemas"]["nullable-codespace-machine"]; + /** + * @description Path to devcontainer.json from repo root used to create Codespace. + * @example .devcontainer/example/devcontainer.json + */ + devcontainer_path?: string | null; + /** + * @description Whether the codespace was created from a prebuild. + * @example false + */ + prebuild: boolean | null; + /** + * Format: date-time + * @example 2011-01-26T19:01:12Z + */ + created_at: string; + /** + * Format: date-time + * @example 2011-01-26T19:01:12Z + */ + updated_at: string; + /** + * Format: date-time + * @description Last known time this codespace was started. + * @example 2011-01-26T19:01:12Z + */ + last_used_at: string; + /** + * @description State of this codespace. + * @example Available + * @enum {string} + */ + state: + | "Unknown" + | "Created" + | "Queued" + | "Provisioning" + | "Available" + | "Awaiting" + | "Unavailable" + | "Deleted" + | "Moved" + | "Shutdown" + | "Archived" + | "Starting" + | "ShuttingDown" + | "Failed" + | "Exporting" + | "Updating" + | "Rebuilding"; + /** + * Format: uri + * @description API URL for this codespace. + */ + url: string; + /** @description Details about the codespace's git repository. */ + git_status: { + /** + * @description The number of commits the local repository is ahead of the remote. + * @example 0 + */ + ahead?: number; + /** + * @description The number of commits the local repository is behind the remote. + * @example 0 + */ + behind?: number; + /** @description Whether the local repository has unpushed changes. */ + has_unpushed_changes?: boolean; + /** @description Whether the local repository has uncommitted changes. */ + has_uncommitted_changes?: boolean; + /** + * @description The current branch (or SHA if in detached HEAD state) of the local repository. + * @example main + */ + ref?: string; + }; + /** + * @description The Azure region where this codespace is located. + * @example WestUs2 + * @enum {string} + */ + location: "EastUs" | "SouthEastAsia" | "WestEurope" | "WestUs2"; + /** + * @description The number of minutes of inactivity after which this codespace will be automatically stopped. + * @example 60 + */ + idle_timeout_minutes: number | null; + /** + * Format: uri + * @description URL to access this codespace on the web. + */ + web_url: string; + /** + * Format: uri + * @description API URL to access available alternate machine types for this codespace. + */ + machines_url: string; + /** + * Format: uri + * @description API URL to start this codespace. + */ + start_url: string; + /** + * Format: uri + * @description API URL to stop this codespace. + */ + stop_url: string; + /** + * Format: uri + * @description API URL for the Pull Request associated with this codespace, if any. + */ + pulls_url: string | null; + recent_folders: string[]; + runtime_constraints?: { + /** @description The privacy settings a user can select from when forwarding a port. */ + allowed_port_privacy_settings?: string[] | null; + }; + /** @description Whether or not a codespace has a pending async operation. This would mean that the codespace is temporarily unavailable. The only thing that you can do with a codespace in this state is delete it. */ + pending_operation?: boolean | null; + /** @description Text to show user when codespace is disabled by a pending operation */ + pending_operation_disabled_reason?: string | null; + /** @description Text to show user when codespace idle timeout minutes has been overriden by an organization policy */ + idle_timeout_notice?: string | null; + }; + /** + * Credential Authorization + * @description Credential Authorization + */ + "credential-authorization": { + /** + * @description User login that owns the underlying credential. + * @example monalisa + */ + login: string; + /** + * @description Unique identifier for the credential. + * @example 1 + */ + credential_id: number; + /** + * @description Human-readable description of the credential type. + * @example SSH Key + */ + credential_type: string; + /** + * @description Last eight characters of the credential. Only included in responses with credential_type of personal access token. + * @example 12345678 + */ + token_last_eight?: string; + /** + * Format: date-time + * @description Date when the credential was authorized for use. + * @example 2011-01-26T19:06:43Z + */ + credential_authorized_at: string; + /** + * @description List of oauth scopes the token has been granted. + * @example [ + * "user", + * "repo" + * ] + */ + scopes?: string[]; + /** + * @description Unique string to distinguish the credential. Only included in responses with credential_type of SSH Key. + * @example jklmnop12345678 + */ + fingerprint?: string; + /** + * Format: date-time + * @description Date when the credential was last accessed. May be null if it was never accessed + * @example 2011-01-26T19:06:43Z + */ + credential_accessed_at: string | null; + /** @example 12345678 */ + authorized_credential_id: number | null; + /** + * @description The title given to the ssh key. This will only be present when the credential is an ssh key. + * @example my ssh key + */ + authorized_credential_title?: string | null; + /** + * @description The note given to the token. This will only be present when the credential is a token. + * @example my token + */ + authorized_credential_note?: string | null; + /** + * Format: date-time + * @description The expiry for the token. This will only be present when the credential is a token. + */ + authorized_credential_expires_at?: string | null; + }; + /** + * Dependabot Secret for an Organization + * @description Secrets for GitHub Dependabot for an organization. + */ + "organization-dependabot-secret": { + /** + * @description The name of the secret. + * @example SECRET_TOKEN + */ + name: string; + /** Format: date-time */ + created_at: string; + /** Format: date-time */ + updated_at: string; + /** + * @description Visibility of a secret + * @enum {string} + */ + visibility: "all" | "private" | "selected"; + /** + * Format: uri + * @example https://api.github.com/organizations/org/dependabot/secrets/my_secret/repositories + */ + selected_repositories_url?: string; + }; + /** + * DependabotPublicKey + * @description The public key used for setting Dependabot Secrets. + */ + "dependabot-public-key": { + /** + * @description The identifier for the key. + * @example 1234567 + */ + key_id: string; + /** + * @description The Base64 encoded public key. + * @example hBT5WZEj8ZoOv6TYJsfWq7MxTEQopZO5/IT3ZCVQPzs= + */ + key: string; + }; + /** + * ExternalGroup + * @description Information about an external group's usage and its members + */ + "external-group": { + /** + * @description The internal ID of the group + * @example 1 + */ + group_id: number; + /** + * @description The display name for the group + * @example group-azuread-test + */ + group_name: string; + /** + * @description The date when the group was last updated_at + * @example 2021-01-03 22:27:15:000 -700 + */ + updated_at?: string; + /** + * @description An array of teams linked to this group + * @example [ + * { + * "team_id": 1, + * "team_name": "team-test" + * }, + * { + * "team_id": 2, + * "team_name": "team-test2" + * } + * ] + */ + teams: { + /** + * @description The id for a team + * @example 1 + */ + team_id: number; + /** + * @description The name of the team + * @example team-test + */ + team_name: string; + }[]; + /** + * @description An array of external members linked to this group + * @example [ + * { + * "member_id": 1, + * "member_login": "mona-lisa_eocsaxrs", + * "member_name": "Mona Lisa", + * "member_email": "mona_lisa@github.com" + * }, + * { + * "member_id": 2, + * "member_login": "octo-lisa_eocsaxrs", + * "member_name": "Octo Lisa", + * "member_email": "octo_lisa@github.com" + * } + * ] + */ + members: { + /** + * @description The internal user ID of the identity + * @example 1 + */ + member_id: number; + /** + * @description The handle/login for the user + * @example mona-lisa_eocsaxrs + */ + member_login: string; + /** + * @description The user display name/profile name + * @example Mona Lisa + */ + member_name: string; + /** + * @description An email attached to a user + * @example mona_lisa@github.com + */ + member_email: string; + }[]; + }; + /** + * ExternalGroups + * @description A list of external groups available to be connected to a team + */ + "external-groups": { + /** + * @description An array of external groups available to be mapped to a team + * @example [ + * { + * "group_id": 1, + * "group_name": "group-azuread-test", + * "updated_at": "2021-01-03 22:27:15:000 -700" + * }, + * { + * "group_id": 2, + * "group_name": "group-azuread-test2", + * "updated_at": "2021-06-03 22:27:15:000 -700" + * } + * ] + */ + groups?: { + /** + * @description The internal ID of the group + * @example 1 + */ + group_id: number; + /** + * @description The display name of the group + * @example group-azuread-test + */ + group_name: string; + /** + * @description The time of the last update for this group + * @example 2019-06-03 22:27:15:000 -700 + */ + updated_at: string; + }[]; + }; + /** + * Organization Invitation + * @description Organization Invitation + */ + "organization-invitation": { + id: number; + login: string | null; + email: string | null; + role: string; + created_at: string; + failed_at?: string | null; + failed_reason?: string | null; + inviter: components["schemas"]["simple-user"]; + team_count: number; + /** @example "MDIyOk9yZ2FuaXphdGlvbkludml0YXRpb24x" */ + node_id: string; + /** @example "https://api.github.com/organizations/16/invitations/1/teams" */ + invitation_teams_url: string; + }; + /** + * Org Hook + * @description Org Hook + */ + "org-hook": { + /** @example 1 */ + id: number; + /** + * Format: uri + * @example https://api.github.com/orgs/octocat/hooks/1 + */ + url: string; + /** + * Format: uri + * @example https://api.github.com/orgs/octocat/hooks/1/pings + */ + ping_url: string; + /** + * Format: uri + * @example https://api.github.com/orgs/octocat/hooks/1/deliveries + */ + deliveries_url?: string; + /** @example web */ + name: string; + /** + * @example [ + * "push", + * "pull_request" + * ] + */ + events: string[]; + /** @example true */ + active: boolean; + config: { + /** @example "http://example.com/2" */ + url?: string; + /** @example "0" */ + insecure_ssl?: string; + /** @example "form" */ + content_type?: string; + /** @example "********" */ + secret?: string; + }; + /** + * Format: date-time + * @example 2011-09-06T20:39:23Z + */ + updated_at: string; + /** + * Format: date-time + * @example 2011-09-06T17:26:27Z + */ + created_at: string; + type: string; + }; + /** + * @description The type of GitHub user that can comment, open issues, or create pull requests while the interaction limit is in effect. + * @example collaborators_only + * @enum {string} + */ + "interaction-group": + | "existing_users" + | "contributors_only" + | "collaborators_only"; + /** + * Interaction Limits + * @description Interaction limit settings. + */ + "interaction-limit-response": { + limit: components["schemas"]["interaction-group"]; + /** @example repository */ + origin: string; + /** + * Format: date-time + * @example 2018-08-17T04:18:39Z + */ + expires_at: string; + }; + /** + * @description The duration of the interaction restriction. Default: `one_day`. + * @example one_month + * @enum {string} + */ + "interaction-expiry": + | "one_day" + | "three_days" + | "one_week" + | "one_month" + | "six_months"; + /** + * Interaction Restrictions + * @description Limit interactions to a specific type of user for a specified duration + */ + "interaction-limit": { + limit: components["schemas"]["interaction-group"]; + expiry?: components["schemas"]["interaction-expiry"]; + }; + /** + * Team Simple + * @description Groups of organization members that gives permissions on specified repositories. + */ + "nullable-team-simple": { + /** + * @description Unique identifier of the team + * @example 1 + */ + id: number; + /** @example MDQ6VGVhbTE= */ + node_id: string; + /** + * Format: uri + * @description URL for the team + * @example https://api.github.com/organizations/1/team/1 + */ + url: string; + /** @example https://api.github.com/organizations/1/team/1/members{/member} */ + members_url: string; + /** + * @description Name of the team + * @example Justice League + */ + name: string; + /** + * @description Description of the team + * @example A great team. + */ + description: string | null; + /** + * @description Permission that the team will have for its repositories + * @example admin + */ + permission: string; + /** + * @description The level of privacy this team should have + * @example closed + */ + privacy?: string; + /** + * Format: uri + * @example https://github.com/orgs/rails/teams/core + */ + html_url: string; + /** + * Format: uri + * @example https://api.github.com/organizations/1/team/1/repos + */ + repositories_url: string; + /** @example justice-league */ + slug: string; + /** + * @description Distinguished Name (DN) that team maps to within LDAP environment + * @example uid=example,ou=users,dc=github,dc=com + */ + ldap_dn?: string; + } | null; + /** + * Team + * @description Groups of organization members that gives permissions on specified repositories. + */ + team: { + id: number; + node_id: string; + name: string; + slug: string; + description: string | null; + privacy?: string; + permission: string; + permissions?: { + pull: boolean; + triage: boolean; + push: boolean; + maintain: boolean; + admin: boolean; + }; + /** Format: uri */ + url: string; + /** + * Format: uri + * @example https://github.com/orgs/rails/teams/core + */ + html_url: string; + members_url: string; + /** Format: uri */ + repositories_url: string; + parent: components["schemas"]["nullable-team-simple"]; + }; + /** + * Org Membership + * @description Org Membership + */ + "org-membership": { + /** + * Format: uri + * @example https://api.github.com/orgs/octocat/memberships/defunkt + */ + url: string; + /** + * @description The state of the member in the organization. The `pending` state indicates the user has not yet accepted an invitation. + * @example active + * @enum {string} + */ + state: "active" | "pending"; + /** + * @description The user's membership type in the organization. + * @example admin + * @enum {string} + */ + role: "admin" | "member" | "billing_manager"; + /** + * Format: uri + * @example https://api.github.com/orgs/octocat + */ + organization_url: string; + organization: components["schemas"]["organization-simple"]; + user: components["schemas"]["nullable-simple-user"]; + permissions?: { + can_create_repository: boolean; + }; + }; + /** + * Migration + * @description A migration. + */ + migration: { + /** @example 79 */ + id: number; + owner: components["schemas"]["nullable-simple-user"]; + /** @example 0b989ba4-242f-11e5-81e1-c7b6966d2516 */ + guid: string; + /** @example pending */ + state: string; + /** @example true */ + lock_repositories: boolean; + exclude_metadata: boolean; + exclude_git_data: boolean; + exclude_attachments: boolean; + exclude_releases: boolean; + exclude_owner_projects: boolean; + org_metadata_only: boolean; + repositories: components["schemas"]["repository"][]; + /** + * Format: uri + * @example https://api.github.com/orgs/octo-org/migrations/79 + */ + url: string; + /** + * Format: date-time + * @example 2015-07-06T15:33:38-07:00 + */ + created_at: string; + /** + * Format: date-time + * @example 2015-07-06T15:33:38-07:00 + */ + updated_at: string; + node_id: string; + /** Format: uri */ + archive_url?: string; + exclude?: unknown[]; + }; + /** + * Minimal Repository + * @description Minimal Repository + */ + "nullable-minimal-repository": { + /** @example 1296269 */ + id: number; + /** @example MDEwOlJlcG9zaXRvcnkxMjk2MjY5 */ + node_id: string; + /** @example Hello-World */ + name: string; + /** @example octocat/Hello-World */ + full_name: string; + owner: components["schemas"]["simple-user"]; + private: boolean; + /** + * Format: uri + * @example https://github.com/octocat/Hello-World + */ + html_url: string; + /** @example This your first repo! */ + description: string | null; + fork: boolean; + /** + * Format: uri + * @example https://api.github.com/repos/octocat/Hello-World + */ + url: string; + /** @example http://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref} */ + archive_url: string; + /** @example http://api.github.com/repos/octocat/Hello-World/assignees{/user} */ + assignees_url: string; + /** @example http://api.github.com/repos/octocat/Hello-World/git/blobs{/sha} */ + blobs_url: string; + /** @example http://api.github.com/repos/octocat/Hello-World/branches{/branch} */ + branches_url: string; + /** @example http://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator} */ + collaborators_url: string; + /** @example http://api.github.com/repos/octocat/Hello-World/comments{/number} */ + comments_url: string; + /** @example http://api.github.com/repos/octocat/Hello-World/commits{/sha} */ + commits_url: string; + /** @example http://api.github.com/repos/octocat/Hello-World/compare/{base}...{head} */ + compare_url: string; + /** @example http://api.github.com/repos/octocat/Hello-World/contents/{+path} */ + contents_url: string; + /** + * Format: uri + * @example http://api.github.com/repos/octocat/Hello-World/contributors + */ + contributors_url: string; + /** + * Format: uri + * @example http://api.github.com/repos/octocat/Hello-World/deployments + */ + deployments_url: string; + /** + * Format: uri + * @example http://api.github.com/repos/octocat/Hello-World/downloads + */ + downloads_url: string; + /** + * Format: uri + * @example http://api.github.com/repos/octocat/Hello-World/events + */ + events_url: string; + /** + * Format: uri + * @example http://api.github.com/repos/octocat/Hello-World/forks + */ + forks_url: string; + /** @example http://api.github.com/repos/octocat/Hello-World/git/commits{/sha} */ + git_commits_url: string; + /** @example http://api.github.com/repos/octocat/Hello-World/git/refs{/sha} */ + git_refs_url: string; + /** @example http://api.github.com/repos/octocat/Hello-World/git/tags{/sha} */ + git_tags_url: string; + git_url?: string; + /** @example http://api.github.com/repos/octocat/Hello-World/issues/comments{/number} */ + issue_comment_url: string; + /** @example http://api.github.com/repos/octocat/Hello-World/issues/events{/number} */ + issue_events_url: string; + /** @example http://api.github.com/repos/octocat/Hello-World/issues{/number} */ + issues_url: string; + /** @example http://api.github.com/repos/octocat/Hello-World/keys{/key_id} */ + keys_url: string; + /** @example http://api.github.com/repos/octocat/Hello-World/labels{/name} */ + labels_url: string; + /** + * Format: uri + * @example http://api.github.com/repos/octocat/Hello-World/languages + */ + languages_url: string; + /** + * Format: uri + * @example http://api.github.com/repos/octocat/Hello-World/merges + */ + merges_url: string; + /** @example http://api.github.com/repos/octocat/Hello-World/milestones{/number} */ + milestones_url: string; + /** @example http://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating} */ + notifications_url: string; + /** @example http://api.github.com/repos/octocat/Hello-World/pulls{/number} */ + pulls_url: string; + /** @example http://api.github.com/repos/octocat/Hello-World/releases{/id} */ + releases_url: string; + ssh_url?: string; + /** + * Format: uri + * @example http://api.github.com/repos/octocat/Hello-World/stargazers + */ + stargazers_url: string; + /** @example http://api.github.com/repos/octocat/Hello-World/statuses/{sha} */ + statuses_url: string; + /** + * Format: uri + * @example http://api.github.com/repos/octocat/Hello-World/subscribers + */ + subscribers_url: string; + /** + * Format: uri + * @example http://api.github.com/repos/octocat/Hello-World/subscription + */ + subscription_url: string; + /** + * Format: uri + * @example http://api.github.com/repos/octocat/Hello-World/tags + */ + tags_url: string; + /** + * Format: uri + * @example http://api.github.com/repos/octocat/Hello-World/teams + */ + teams_url: string; + /** @example http://api.github.com/repos/octocat/Hello-World/git/trees{/sha} */ + trees_url: string; + clone_url?: string; + mirror_url?: string | null; + /** + * Format: uri + * @example http://api.github.com/repos/octocat/Hello-World/hooks + */ + hooks_url: string; + svn_url?: string; + homepage?: string | null; + language?: string | null; + forks_count?: number; + stargazers_count?: number; + watchers_count?: number; + size?: number; + default_branch?: string; + open_issues_count?: number; + is_template?: boolean; + topics?: string[]; + has_issues?: boolean; + has_projects?: boolean; + has_wiki?: boolean; + has_pages?: boolean; + has_downloads?: boolean; + archived?: boolean; + disabled?: boolean; + visibility?: string; + /** + * Format: date-time + * @example 2011-01-26T19:06:43Z + */ + pushed_at?: string | null; + /** + * Format: date-time + * @example 2011-01-26T19:01:12Z + */ + created_at?: string | null; + /** + * Format: date-time + * @example 2011-01-26T19:14:43Z + */ + updated_at?: string | null; + permissions?: { + admin?: boolean; + maintain?: boolean; + push?: boolean; + triage?: boolean; + pull?: boolean; + }; + /** @example admin */ + role_name?: string; + template_repository?: components["schemas"]["nullable-repository"]; + temp_clone_token?: string; + delete_branch_on_merge?: boolean; + subscribers_count?: number; + network_count?: number; + code_of_conduct?: components["schemas"]["code-of-conduct"]; + license?: { + key?: string; + name?: string; + spdx_id?: string; + url?: string; + node_id?: string; + } | null; + /** @example 0 */ + forks?: number; + /** @example 0 */ + open_issues?: number; + /** @example 0 */ + watchers?: number; + allow_forking?: boolean; + } | null; + /** + * Package + * @description A software package + */ + package: { + /** + * @description Unique identifier of the package. + * @example 1 + */ + id: number; + /** + * @description The name of the package. + * @example super-linter + */ + name: string; + /** + * @example docker + * @enum {string} + */ + package_type: + | "npm" + | "maven" + | "rubygems" + | "docker" + | "nuget" + | "container"; + /** @example https://api.github.com/orgs/github/packages/container/super-linter */ + url: string; + /** @example https://github.com/orgs/github/packages/container/package/super-linter */ + html_url: string; + /** + * @description The number of versions of the package. + * @example 1 + */ + version_count: number; + /** + * @example private + * @enum {string} + */ + visibility: "private" | "public"; + owner?: components["schemas"]["nullable-simple-user"]; + repository?: components["schemas"]["nullable-minimal-repository"]; + /** Format: date-time */ + created_at: string; + /** Format: date-time */ + updated_at: string; + }; + /** + * Package Version + * @description A version of a software package + */ + "package-version": { + /** + * @description Unique identifier of the package version. + * @example 1 + */ + id: number; + /** + * @description The name of the package version. + * @example latest + */ + name: string; + /** @example https://api.github.com/orgs/github/packages/container/super-linter/versions/786068 */ + url: string; + /** @example https://github.com/orgs/github/packages/container/package/super-linter */ + package_html_url: string; + /** @example https://github.com/orgs/github/packages/container/super-linter/786068 */ + html_url?: string; + /** @example MIT */ + license?: string; + description?: string; + /** + * Format: date-time + * @example 2011-04-10T20:09:31Z + */ + created_at: string; + /** + * Format: date-time + * @example 2014-03-03T18:58:10Z + */ + updated_at: string; + /** + * Format: date-time + * @example 2014-03-03T18:58:10Z + */ + deleted_at?: string; + /** Package Version Metadata */ + metadata?: { + /** + * @example docker + * @enum {string} + */ + package_type: + | "npm" + | "maven" + | "rubygems" + | "docker" + | "nuget" + | "container"; + /** Container Metadata */ + container?: { + tags: string[]; + }; + /** Docker Metadata */ + docker?: { + tag?: string[]; + } & { + tags: unknown; + }; + }; + }; + /** + * Project + * @description Projects are a way to organize columns and cards of work. + */ + project: { + /** + * Format: uri + * @example https://api.github.com/repos/api-playground/projects-test + */ + owner_url: string; + /** + * Format: uri + * @example https://api.github.com/projects/1002604 + */ + url: string; + /** + * Format: uri + * @example https://github.com/api-playground/projects-test/projects/12 + */ + html_url: string; + /** + * Format: uri + * @example https://api.github.com/projects/1002604/columns + */ + columns_url: string; + /** @example 1002604 */ + id: number; + /** @example MDc6UHJvamVjdDEwMDI2MDQ= */ + node_id: string; + /** + * @description Name of the project + * @example Week One Sprint + */ + name: string; + /** + * @description Body of the project + * @example This project represents the sprint of the first week in January + */ + body: string | null; + /** @example 1 */ + number: number; + /** + * @description State of the project; either 'open' or 'closed' + * @example open + */ + state: string; + creator: components["schemas"]["nullable-simple-user"]; + /** + * Format: date-time + * @example 2011-04-10T20:09:31Z + */ + created_at: string; + /** + * Format: date-time + * @example 2014-03-03T18:58:10Z + */ + updated_at: string; + /** + * @description The baseline permission that all organization members have on this project. Only present if owner is an organization. + * @enum {string} + */ + organization_permission?: "read" | "write" | "admin" | "none"; + /** @description Whether or not this project can be seen by everyone. Only present if owner is an organization. */ + private?: boolean; + }; + /** + * GroupMapping + * @description External Groups to be mapped to a team for membership + */ + "group-mapping": { + /** + * @description Array of groups to be mapped to this team + * @example [ + * { + * "group_id": "111a1a11-aaa1-1aaa-11a1-a1a1a1a1a1aa", + * "group_name": "saml-azuread-test", + * "group_description": "A group of Developers working on AzureAD SAML SSO" + * }, + * { + * "group_id": "2bb2bb2b-bb22-22bb-2bb2-bb2bbb2bb2b2", + * "group_name": "saml-azuread-test2", + * "group_description": "Another group of Developers working on AzureAD SAML SSO" + * } + * ] + */ + groups?: { + /** + * @description The ID of the group + * @example 111a1a11-aaa1-1aaa-11a1-a1a1a1a1a1aa + */ + group_id: string; + /** + * @description The name of the group + * @example saml-azuread-test + */ + group_name: string; + /** + * @description a description of the group + * @example A group of Developers working on AzureAD SAML SSO + */ + group_description: string; + /** + * @description synchronization status for this group mapping + * @example unsynced + */ + status?: string; + /** + * @description the time of the last sync for this group-mapping + * @example 2019-06-03 22:27:15:000 -700 + */ + synced_at?: string | null; + }[]; + }; + /** + * Full Team + * @description Groups of organization members that gives permissions on specified repositories. + */ + "team-full": { + /** + * @description Unique identifier of the team + * @example 42 + */ + id: number; + /** @example MDQ6VGVhbTE= */ + node_id: string; + /** + * Format: uri + * @description URL for the team + * @example https://api.github.com/organizations/1/team/1 + */ + url: string; + /** + * Format: uri + * @example https://github.com/orgs/rails/teams/core + */ + html_url: string; + /** + * @description Name of the team + * @example Developers + */ + name: string; + /** @example justice-league */ + slug: string; + /** @example A great team. */ + description: string | null; + /** + * @description The level of privacy this team should have + * @example closed + * @enum {string} + */ + privacy?: "closed" | "secret"; + /** + * @description Permission that the team will have for its repositories + * @example push + */ + permission: string; + /** @example https://api.github.com/organizations/1/team/1/members{/member} */ + members_url: string; + /** + * Format: uri + * @example https://api.github.com/organizations/1/team/1/repos + */ + repositories_url: string; + parent?: components["schemas"]["nullable-team-simple"]; + /** @example 3 */ + members_count: number; + /** @example 10 */ + repos_count: number; + /** + * Format: date-time + * @example 2017-07-14T16:53:42Z + */ + created_at: string; + /** + * Format: date-time + * @example 2017-08-17T12:37:15Z + */ + updated_at: string; + organization: components["schemas"]["organization-full"]; + /** + * @description Distinguished Name (DN) that team maps to within LDAP environment + * @example uid=example,ou=users,dc=github,dc=com + */ + ldap_dn?: string; + }; + /** + * Team Discussion + * @description A team discussion is a persistent record of a free-form conversation within a team. + */ + "team-discussion": { + author: components["schemas"]["nullable-simple-user"]; + /** + * @description The main text of the discussion. + * @example Please suggest improvements to our workflow in comments. + */ + body: string; + /** @example

        Hi! This is an area for us to collaborate as a team

        */ + body_html: string; + /** + * @description The current version of the body content. If provided, this update operation will be rejected if the given version does not match the latest version on the server. + * @example 0307116bbf7ced493b8d8a346c650b71 + */ + body_version: string; + /** @example 0 */ + comments_count: number; + /** + * Format: uri + * @example https://api.github.com/organizations/1/team/2343027/discussions/1/comments + */ + comments_url: string; + /** + * Format: date-time + * @example 2018-01-25T18:56:31Z + */ + created_at: string; + /** Format: date-time */ + last_edited_at: string | null; + /** + * Format: uri + * @example https://github.com/orgs/github/teams/justice-league/discussions/1 + */ + html_url: string; + /** @example MDE0OlRlYW1EaXNjdXNzaW9uMQ== */ + node_id: string; + /** + * @description The unique sequence number of a team discussion. + * @example 42 + */ + number: number; + /** + * @description Whether or not this discussion should be pinned for easy retrieval. + * @example true + */ + pinned: boolean; + /** + * @description Whether or not this discussion should be restricted to team members and organization administrators. + * @example true + */ + private: boolean; + /** + * Format: uri + * @example https://api.github.com/organizations/1/team/2343027 + */ + team_url: string; + /** + * @description The title of the discussion. + * @example How can we improve our workflow? + */ + title: string; + /** + * Format: date-time + * @example 2018-01-25T18:56:31Z + */ + updated_at: string; + /** + * Format: uri + * @example https://api.github.com/organizations/1/team/2343027/discussions/1 + */ + url: string; + reactions?: components["schemas"]["reaction-rollup"]; + }; + /** + * Team Discussion Comment + * @description A reply to a discussion within a team. + */ + "team-discussion-comment": { + author: components["schemas"]["nullable-simple-user"]; + /** + * @description The main text of the comment. + * @example I agree with this suggestion. + */ + body: string; + /** @example

        Do you like apples?

        */ + body_html: string; + /** + * @description The current version of the body content. If provided, this update operation will be rejected if the given version does not match the latest version on the server. + * @example 0307116bbf7ced493b8d8a346c650b71 + */ + body_version: string; + /** + * Format: date-time + * @example 2018-01-15T23:53:58Z + */ + created_at: string; + /** Format: date-time */ + last_edited_at: string | null; + /** + * Format: uri + * @example https://api.github.com/organizations/1/team/2403582/discussions/1 + */ + discussion_url: string; + /** + * Format: uri + * @example https://github.com/orgs/github/teams/justice-league/discussions/1/comments/1 + */ + html_url: string; + /** @example MDIxOlRlYW1EaXNjdXNzaW9uQ29tbWVudDE= */ + node_id: string; + /** + * @description The unique sequence number of a team discussion comment. + * @example 42 + */ + number: number; + /** + * Format: date-time + * @example 2018-01-15T23:53:58Z + */ + updated_at: string; + /** + * Format: uri + * @example https://api.github.com/organizations/1/team/2403582/discussions/1/comments/1 + */ + url: string; + reactions?: components["schemas"]["reaction-rollup"]; + }; + /** + * Reaction + * @description Reactions to conversations provide a way to help people express their feelings more simply and effectively. + */ + reaction: { + /** @example 1 */ + id: number; + /** @example MDg6UmVhY3Rpb24x */ + node_id: string; + user: components["schemas"]["nullable-simple-user"]; + /** + * @description The reaction to use + * @example heart + * @enum {string} + */ + content: + | "+1" + | "-1" + | "laugh" + | "confused" + | "heart" + | "hooray" + | "rocket" + | "eyes"; + /** + * Format: date-time + * @example 2016-05-20T20:09:31Z + */ + created_at: string; + }; + /** + * Team Membership + * @description Team Membership + */ + "team-membership": { + /** Format: uri */ + url: string; + /** + * @description The role of the user in the team. + * @default member + * @example member + * @enum {string} + */ + role: "member" | "maintainer"; + /** + * @description The state of the user's membership in the team. + * @enum {string} + */ + state: "active" | "pending"; + }; + /** + * Team Project + * @description A team's access to a project. + */ + "team-project": { + owner_url: string; + url: string; + html_url: string; + columns_url: string; + id: number; + node_id: string; + name: string; + body: string | null; + number: number; + state: string; + creator: components["schemas"]["simple-user"]; + created_at: string; + updated_at: string; + /** @description The organization permission for this project. Only present when owner is an organization. */ + organization_permission?: string; + /** @description Whether the project is private or not. Only present when owner is an organization. */ + private?: boolean; + permissions: { + read: boolean; + write: boolean; + admin: boolean; + }; + }; + /** + * Team Repository + * @description A team's access to a repository. + */ + "team-repository": { + /** + * @description Unique identifier of the repository + * @example 42 + */ + id: number; + /** @example MDEwOlJlcG9zaXRvcnkxMjk2MjY5 */ + node_id: string; + /** + * @description The name of the repository. + * @example Team Environment + */ + name: string; + /** @example octocat/Hello-World */ + full_name: string; + license: components["schemas"]["nullable-license-simple"]; + forks: number; + permissions?: { + admin: boolean; + pull: boolean; + triage?: boolean; + push: boolean; + maintain?: boolean; + }; + /** @example admin */ + role_name?: string; + owner: components["schemas"]["nullable-simple-user"]; + /** + * @description Whether the repository is private or public. + * @default false + */ + private: boolean; + /** + * Format: uri + * @example https://github.com/octocat/Hello-World + */ + html_url: string; + /** @example This your first repo! */ + description: string | null; + fork: boolean; + /** + * Format: uri + * @example https://api.github.com/repos/octocat/Hello-World + */ + url: string; + /** @example http://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref} */ + archive_url: string; + /** @example http://api.github.com/repos/octocat/Hello-World/assignees{/user} */ + assignees_url: string; + /** @example http://api.github.com/repos/octocat/Hello-World/git/blobs{/sha} */ + blobs_url: string; + /** @example http://api.github.com/repos/octocat/Hello-World/branches{/branch} */ + branches_url: string; + /** @example http://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator} */ + collaborators_url: string; + /** @example http://api.github.com/repos/octocat/Hello-World/comments{/number} */ + comments_url: string; + /** @example http://api.github.com/repos/octocat/Hello-World/commits{/sha} */ + commits_url: string; + /** @example http://api.github.com/repos/octocat/Hello-World/compare/{base}...{head} */ + compare_url: string; + /** @example http://api.github.com/repos/octocat/Hello-World/contents/{+path} */ + contents_url: string; + /** + * Format: uri + * @example http://api.github.com/repos/octocat/Hello-World/contributors + */ + contributors_url: string; + /** + * Format: uri + * @example http://api.github.com/repos/octocat/Hello-World/deployments + */ + deployments_url: string; + /** + * Format: uri + * @example http://api.github.com/repos/octocat/Hello-World/downloads + */ + downloads_url: string; + /** + * Format: uri + * @example http://api.github.com/repos/octocat/Hello-World/events + */ + events_url: string; + /** + * Format: uri + * @example http://api.github.com/repos/octocat/Hello-World/forks + */ + forks_url: string; + /** @example http://api.github.com/repos/octocat/Hello-World/git/commits{/sha} */ + git_commits_url: string; + /** @example http://api.github.com/repos/octocat/Hello-World/git/refs{/sha} */ + git_refs_url: string; + /** @example http://api.github.com/repos/octocat/Hello-World/git/tags{/sha} */ + git_tags_url: string; + /** @example git:github.com/octocat/Hello-World.git */ + git_url: string; + /** @example http://api.github.com/repos/octocat/Hello-World/issues/comments{/number} */ + issue_comment_url: string; + /** @example http://api.github.com/repos/octocat/Hello-World/issues/events{/number} */ + issue_events_url: string; + /** @example http://api.github.com/repos/octocat/Hello-World/issues{/number} */ + issues_url: string; + /** @example http://api.github.com/repos/octocat/Hello-World/keys{/key_id} */ + keys_url: string; + /** @example http://api.github.com/repos/octocat/Hello-World/labels{/name} */ + labels_url: string; + /** + * Format: uri + * @example http://api.github.com/repos/octocat/Hello-World/languages + */ + languages_url: string; + /** + * Format: uri + * @example http://api.github.com/repos/octocat/Hello-World/merges + */ + merges_url: string; + /** @example http://api.github.com/repos/octocat/Hello-World/milestones{/number} */ + milestones_url: string; + /** @example http://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating} */ + notifications_url: string; + /** @example http://api.github.com/repos/octocat/Hello-World/pulls{/number} */ + pulls_url: string; + /** @example http://api.github.com/repos/octocat/Hello-World/releases{/id} */ + releases_url: string; + /** @example git@github.com:octocat/Hello-World.git */ + ssh_url: string; + /** + * Format: uri + * @example http://api.github.com/repos/octocat/Hello-World/stargazers + */ + stargazers_url: string; + /** @example http://api.github.com/repos/octocat/Hello-World/statuses/{sha} */ + statuses_url: string; + /** + * Format: uri + * @example http://api.github.com/repos/octocat/Hello-World/subscribers + */ + subscribers_url: string; + /** + * Format: uri + * @example http://api.github.com/repos/octocat/Hello-World/subscription + */ + subscription_url: string; + /** + * Format: uri + * @example http://api.github.com/repos/octocat/Hello-World/tags + */ + tags_url: string; + /** + * Format: uri + * @example http://api.github.com/repos/octocat/Hello-World/teams + */ + teams_url: string; + /** @example http://api.github.com/repos/octocat/Hello-World/git/trees{/sha} */ + trees_url: string; + /** @example https://github.com/octocat/Hello-World.git */ + clone_url: string; + /** + * Format: uri + * @example git:git.example.com/octocat/Hello-World + */ + mirror_url: string | null; + /** + * Format: uri + * @example http://api.github.com/repos/octocat/Hello-World/hooks + */ + hooks_url: string; + /** + * Format: uri + * @example https://svn.github.com/octocat/Hello-World + */ + svn_url: string; + /** + * Format: uri + * @example https://github.com + */ + homepage: string | null; + language: string | null; + /** @example 9 */ + forks_count: number; + /** @example 80 */ + stargazers_count: number; + /** @example 80 */ + watchers_count: number; + /** @example 108 */ + size: number; + /** + * @description The default branch of the repository. + * @example master + */ + default_branch: string; + /** @example 0 */ + open_issues_count: number; + /** + * @description Whether this repository acts as a template that can be used to generate new repositories. + * @default false + * @example true + */ + is_template?: boolean; + topics?: string[]; + /** + * @description Whether issues are enabled. + * @default true + * @example true + */ + has_issues: boolean; + /** + * @description Whether projects are enabled. + * @default true + * @example true + */ + has_projects: boolean; + /** + * @description Whether the wiki is enabled. + * @default true + * @example true + */ + has_wiki: boolean; + has_pages: boolean; + /** + * @description Whether downloads are enabled. + * @default true + * @example true + */ + has_downloads: boolean; + /** + * @description Whether the repository is archived. + * @default false + */ + archived: boolean; + /** @description Returns whether or not this repository disabled. */ + disabled: boolean; + /** + * @description The repository visibility: public, private, or internal. + * @default public + */ + visibility?: string; + /** + * Format: date-time + * @example 2011-01-26T19:06:43Z + */ + pushed_at: string | null; + /** + * Format: date-time + * @example 2011-01-26T19:01:12Z + */ + created_at: string | null; + /** + * Format: date-time + * @example 2011-01-26T19:14:43Z + */ + updated_at: string | null; + /** + * @description Whether to allow rebase merges for pull requests. + * @default true + * @example true + */ + allow_rebase_merge?: boolean; + template_repository?: components["schemas"]["nullable-repository"]; + temp_clone_token?: string; + /** + * @description Whether to allow squash merges for pull requests. + * @default true + * @example true + */ + allow_squash_merge?: boolean; + /** + * @description Whether to allow Auto-merge to be used on pull requests. + * @default false + * @example false + */ + allow_auto_merge?: boolean; + /** + * @description Whether to delete head branches when pull requests are merged + * @default false + * @example false + */ + delete_branch_on_merge?: boolean; + /** + * @description Whether to allow merge commits for pull requests. + * @default true + * @example true + */ + allow_merge_commit?: boolean; + /** + * @description Whether to allow forking this repo + * @default false + * @example false + */ + allow_forking?: boolean; + subscribers_count?: number; + network_count?: number; + open_issues: number; + watchers: number; + master_branch?: string; + }; + /** + * Project Card + * @description Project cards represent a scope of work. + */ + "project-card": { + /** + * Format: uri + * @example https://api.github.com/projects/columns/cards/1478 + */ + url: string; + /** + * @description The project card's ID + * @example 42 + */ + id: number; + /** @example MDExOlByb2plY3RDYXJkMTQ3OA== */ + node_id: string; + /** @example Add payload for delete Project column */ + note: string | null; + creator: components["schemas"]["nullable-simple-user"]; + /** + * Format: date-time + * @example 2016-09-05T14:21:06Z + */ + created_at: string; + /** + * Format: date-time + * @example 2016-09-05T14:20:22Z + */ + updated_at: string; + /** + * @description Whether or not the card is archived + * @example false + */ + archived?: boolean; + column_name?: string; + project_id?: string; + /** + * Format: uri + * @example https://api.github.com/projects/columns/367 + */ + column_url: string; + /** + * Format: uri + * @example https://api.github.com/repos/api-playground/projects-test/issues/3 + */ + content_url?: string; + /** + * Format: uri + * @example https://api.github.com/projects/120 + */ + project_url: string; + }; + /** + * Project Column + * @description Project columns contain cards of work. + */ + "project-column": { + /** + * Format: uri + * @example https://api.github.com/projects/columns/367 + */ + url: string; + /** + * Format: uri + * @example https://api.github.com/projects/120 + */ + project_url: string; + /** + * Format: uri + * @example https://api.github.com/projects/columns/367/cards + */ + cards_url: string; + /** + * @description The unique identifier of the project column + * @example 42 + */ + id: number; + /** @example MDEzOlByb2plY3RDb2x1bW4zNjc= */ + node_id: string; + /** + * @description Name of the project column + * @example Remaining tasks + */ + name: string; + /** + * Format: date-time + * @example 2016-09-05T14:18:44Z + */ + created_at: string; + /** + * Format: date-time + * @example 2016-09-05T14:22:28Z + */ + updated_at: string; + }; + /** + * Project Collaborator Permission + * @description Project Collaborator Permission + */ + "project-collaborator-permission": { + permission: string; + user: components["schemas"]["nullable-simple-user"]; + }; + /** Rate Limit */ + "rate-limit": { + limit: number; + remaining: number; + reset: number; + used: number; + }; + /** + * Rate Limit Overview + * @description Rate Limit Overview + */ + "rate-limit-overview": { + resources: { + core: components["schemas"]["rate-limit"]; + graphql?: components["schemas"]["rate-limit"]; + search: components["schemas"]["rate-limit"]; + source_import?: components["schemas"]["rate-limit"]; + integration_manifest?: components["schemas"]["rate-limit"]; + code_scanning_upload?: components["schemas"]["rate-limit"]; + actions_runner_registration?: components["schemas"]["rate-limit"]; + scim?: components["schemas"]["rate-limit"]; + dependency_snapshots?: components["schemas"]["rate-limit"]; + }; + rate: components["schemas"]["rate-limit"]; + }; + /** + * Code Of Conduct Simple + * @description Code of Conduct Simple + */ + "code-of-conduct-simple": { + /** + * Format: uri + * @example https://api.github.com/repos/github/docs/community/code_of_conduct + */ + url: string; + /** @example citizen_code_of_conduct */ + key: string; + /** @example Citizen Code of Conduct */ + name: string; + /** + * Format: uri + * @example https://github.com/github/docs/blob/main/CODE_OF_CONDUCT.md + */ + html_url: string | null; + }; + "security-and-analysis": { + advanced_security?: { + /** @enum {string} */ + status?: "enabled" | "disabled"; + }; + secret_scanning?: { + /** @enum {string} */ + status?: "enabled" | "disabled"; + }; + secret_scanning_push_protection?: { + /** @enum {string} */ + status?: "enabled" | "disabled"; + }; + } | null; + /** + * Full Repository + * @description Full Repository + */ + "full-repository": { + /** @example 1296269 */ + id: number; + /** @example MDEwOlJlcG9zaXRvcnkxMjk2MjY5 */ + node_id: string; + /** @example Hello-World */ + name: string; + /** @example octocat/Hello-World */ + full_name: string; + owner: components["schemas"]["simple-user"]; + private: boolean; + /** + * Format: uri + * @example https://github.com/octocat/Hello-World + */ + html_url: string; + /** @example This your first repo! */ + description: string | null; + fork: boolean; + /** + * Format: uri + * @example https://api.github.com/repos/octocat/Hello-World + */ + url: string; + /** @example http://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref} */ + archive_url: string; + /** @example http://api.github.com/repos/octocat/Hello-World/assignees{/user} */ + assignees_url: string; + /** @example http://api.github.com/repos/octocat/Hello-World/git/blobs{/sha} */ + blobs_url: string; + /** @example http://api.github.com/repos/octocat/Hello-World/branches{/branch} */ + branches_url: string; + /** @example http://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator} */ + collaborators_url: string; + /** @example http://api.github.com/repos/octocat/Hello-World/comments{/number} */ + comments_url: string; + /** @example http://api.github.com/repos/octocat/Hello-World/commits{/sha} */ + commits_url: string; + /** @example http://api.github.com/repos/octocat/Hello-World/compare/{base}...{head} */ + compare_url: string; + /** @example http://api.github.com/repos/octocat/Hello-World/contents/{+path} */ + contents_url: string; + /** + * Format: uri + * @example http://api.github.com/repos/octocat/Hello-World/contributors + */ + contributors_url: string; + /** + * Format: uri + * @example http://api.github.com/repos/octocat/Hello-World/deployments + */ + deployments_url: string; + /** + * Format: uri + * @example http://api.github.com/repos/octocat/Hello-World/downloads + */ + downloads_url: string; + /** + * Format: uri + * @example http://api.github.com/repos/octocat/Hello-World/events + */ + events_url: string; + /** + * Format: uri + * @example http://api.github.com/repos/octocat/Hello-World/forks + */ + forks_url: string; + /** @example http://api.github.com/repos/octocat/Hello-World/git/commits{/sha} */ + git_commits_url: string; + /** @example http://api.github.com/repos/octocat/Hello-World/git/refs{/sha} */ + git_refs_url: string; + /** @example http://api.github.com/repos/octocat/Hello-World/git/tags{/sha} */ + git_tags_url: string; + /** @example git:github.com/octocat/Hello-World.git */ + git_url: string; + /** @example http://api.github.com/repos/octocat/Hello-World/issues/comments{/number} */ + issue_comment_url: string; + /** @example http://api.github.com/repos/octocat/Hello-World/issues/events{/number} */ + issue_events_url: string; + /** @example http://api.github.com/repos/octocat/Hello-World/issues{/number} */ + issues_url: string; + /** @example http://api.github.com/repos/octocat/Hello-World/keys{/key_id} */ + keys_url: string; + /** @example http://api.github.com/repos/octocat/Hello-World/labels{/name} */ + labels_url: string; + /** + * Format: uri + * @example http://api.github.com/repos/octocat/Hello-World/languages + */ + languages_url: string; + /** + * Format: uri + * @example http://api.github.com/repos/octocat/Hello-World/merges + */ + merges_url: string; + /** @example http://api.github.com/repos/octocat/Hello-World/milestones{/number} */ + milestones_url: string; + /** @example http://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating} */ + notifications_url: string; + /** @example http://api.github.com/repos/octocat/Hello-World/pulls{/number} */ + pulls_url: string; + /** @example http://api.github.com/repos/octocat/Hello-World/releases{/id} */ + releases_url: string; + /** @example git@github.com:octocat/Hello-World.git */ + ssh_url: string; + /** + * Format: uri + * @example http://api.github.com/repos/octocat/Hello-World/stargazers + */ + stargazers_url: string; + /** @example http://api.github.com/repos/octocat/Hello-World/statuses/{sha} */ + statuses_url: string; + /** + * Format: uri + * @example http://api.github.com/repos/octocat/Hello-World/subscribers + */ + subscribers_url: string; + /** + * Format: uri + * @example http://api.github.com/repos/octocat/Hello-World/subscription + */ + subscription_url: string; + /** + * Format: uri + * @example http://api.github.com/repos/octocat/Hello-World/tags + */ + tags_url: string; + /** + * Format: uri + * @example http://api.github.com/repos/octocat/Hello-World/teams + */ + teams_url: string; + /** @example http://api.github.com/repos/octocat/Hello-World/git/trees{/sha} */ + trees_url: string; + /** @example https://github.com/octocat/Hello-World.git */ + clone_url: string; + /** + * Format: uri + * @example git:git.example.com/octocat/Hello-World + */ + mirror_url: string | null; + /** + * Format: uri + * @example http://api.github.com/repos/octocat/Hello-World/hooks + */ + hooks_url: string; + /** + * Format: uri + * @example https://svn.github.com/octocat/Hello-World + */ + svn_url: string; + /** + * Format: uri + * @example https://github.com + */ + homepage: string | null; + language: string | null; + /** @example 9 */ + forks_count: number; + /** @example 80 */ + stargazers_count: number; + /** @example 80 */ + watchers_count: number; + /** @example 108 */ + size: number; + /** @example master */ + default_branch: string; + /** @example 0 */ + open_issues_count: number; + /** @example true */ + is_template?: boolean; + /** + * @example [ + * "octocat", + * "atom", + * "electron", + * "API" + * ] + */ + topics?: string[]; + /** @example true */ + has_issues: boolean; + /** @example true */ + has_projects: boolean; + /** @example true */ + has_wiki: boolean; + has_pages: boolean; + /** @example true */ + has_downloads: boolean; + archived: boolean; + /** @description Returns whether or not this repository disabled. */ + disabled: boolean; + /** + * @description The repository visibility: public, private, or internal. + * @example public + */ + visibility?: string; + /** + * Format: date-time + * @example 2011-01-26T19:06:43Z + */ + pushed_at: string; + /** + * Format: date-time + * @example 2011-01-26T19:01:12Z + */ + created_at: string; + /** + * Format: date-time + * @example 2011-01-26T19:14:43Z + */ + updated_at: string; + permissions?: { + admin: boolean; + maintain?: boolean; + push: boolean; + triage?: boolean; + pull: boolean; + }; + /** @example true */ + allow_rebase_merge?: boolean; + template_repository?: components["schemas"]["nullable-repository"]; + temp_clone_token?: string | null; + /** @example true */ + allow_squash_merge?: boolean; + /** @example false */ + allow_auto_merge?: boolean; + /** @example false */ + delete_branch_on_merge?: boolean; + /** @example true */ + allow_merge_commit?: boolean; + /** @example true */ + allow_update_branch?: boolean; + /** @example false */ + use_squash_pr_title_as_default?: boolean; + /** @example true */ + allow_forking?: boolean; + /** @example 42 */ + subscribers_count: number; + /** @example 0 */ + network_count: number; + license: components["schemas"]["nullable-license-simple"]; + organization?: components["schemas"]["nullable-simple-user"]; + parent?: components["schemas"]["repository"]; + source?: components["schemas"]["repository"]; + forks: number; + master_branch?: string; + open_issues: number; + watchers: number; + /** + * @description Whether anonymous git access is allowed. + * @default true + */ + anonymous_access_enabled?: boolean; + code_of_conduct?: components["schemas"]["code-of-conduct-simple"]; + security_and_analysis?: components["schemas"]["security-and-analysis"]; + }; + /** + * Artifact + * @description An artifact + */ + artifact: { + /** @example 5 */ + id: number; + /** @example MDEwOkNoZWNrU3VpdGU1 */ + node_id: string; + /** + * @description The name of the artifact. + * @example AdventureWorks.Framework + */ + name: string; + /** + * @description The size in bytes of the artifact. + * @example 12345 + */ + size_in_bytes: number; + /** @example https://api.github.com/repos/github/hello-world/actions/artifacts/5 */ + url: string; + /** @example https://api.github.com/repos/github/hello-world/actions/artifacts/5/zip */ + archive_download_url: string; + /** @description Whether or not the artifact has expired. */ + expired: boolean; + /** Format: date-time */ + created_at: string | null; + /** Format: date-time */ + expires_at: string | null; + /** Format: date-time */ + updated_at: string | null; + workflow_run?: { + /** @example 10 */ + id?: number; + /** @example 42 */ + repository_id?: number; + /** @example 42 */ + head_repository_id?: number; + /** @example main */ + head_branch?: string; + /** @example 009b8a3a9ccbb128af87f9b1c0f4c62e8a304f6d */ + head_sha?: string; + } | null; + }; + /** + * Repository actions caches + * @description Repository actions caches + */ + "actions-cache-list": { + /** + * @description Total number of caches + * @example 2 + */ + total_count: number; + /** @description Array of caches */ + actions_caches: { + /** @example 2 */ + id?: number; + /** @example refs/heads/main */ + ref?: string; + /** @example Linux-node-958aff96db2d75d67787d1e634ae70b659de937b */ + key?: string; + /** @example 73885106f58cc52a7df9ec4d4a5622a5614813162cb516c759a30af6bf56e6f0 */ + version?: string; + /** + * Format: date-time + * @example 2019-01-24T22:45:36.000Z + */ + last_accessed_at?: string; + /** + * Format: date-time + * @example 2019-01-24T22:45:36.000Z + */ + created_at?: string; + /** @example 1024 */ + size_in_bytes?: number; + }[]; + }; + /** + * Job + * @description Information of a job execution in a workflow run + */ + job: { + /** + * @description The id of the job. + * @example 21 + */ + id: number; + /** + * @description The id of the associated workflow run. + * @example 5 + */ + run_id: number; + /** @example https://api.github.com/repos/github/hello-world/actions/runs/5 */ + run_url: string; + /** + * @description Attempt number of the associated workflow run, 1 for first attempt and higher if the workflow was re-run. + * @example 1 + */ + run_attempt?: number; + /** @example MDg6Q2hlY2tSdW40 */ + node_id: string; + /** + * @description The SHA of the commit that is being run. + * @example 009b8a3a9ccbb128af87f9b1c0f4c62e8a304f6d + */ + head_sha: string; + /** @example https://api.github.com/repos/github/hello-world/actions/jobs/21 */ + url: string; + /** @example https://github.com/github/hello-world/runs/4 */ + html_url: string | null; + /** + * @description The phase of the lifecycle that the job is currently in. + * @example queued + * @enum {string} + */ + status: "queued" | "in_progress" | "completed"; + /** + * @description The outcome of the job. + * @example success + */ + conclusion: string | null; + /** + * Format: date-time + * @description The time that the job started, in ISO 8601 format. + * @example 2019-08-08T08:00:00-07:00 + */ + started_at: string; + /** + * Format: date-time + * @description The time that the job finished, in ISO 8601 format. + * @example 2019-08-08T08:00:00-07:00 + */ + completed_at: string | null; + /** + * @description The name of the job. + * @example test-coverage + */ + name: string; + /** @description Steps in this job. */ + steps?: { + /** + * @description The phase of the lifecycle that the job is currently in. + * @example queued + * @enum {string} + */ + status: "queued" | "in_progress" | "completed"; + /** + * @description The outcome of the job. + * @example success + */ + conclusion: string | null; + /** + * @description The name of the job. + * @example test-coverage + */ + name: string; + /** @example 1 */ + number: number; + /** + * Format: date-time + * @description The time that the step started, in ISO 8601 format. + * @example 2019-08-08T08:00:00-07:00 + */ + started_at?: string | null; + /** + * Format: date-time + * @description The time that the job finished, in ISO 8601 format. + * @example 2019-08-08T08:00:00-07:00 + */ + completed_at?: string | null; + }[]; + /** @example https://api.github.com/repos/github/hello-world/check-runs/4 */ + check_run_url: string; + /** + * @description Labels for the workflow job. Specified by the "runs_on" attribute in the action's workflow file. + * @example [ + * "self-hosted", + * "foo", + * "bar" + * ] + */ + labels: string[]; + /** + * @description The ID of the runner to which this job has been assigned. (If a runner hasn't yet been assigned, this will be null.) + * @example 1 + */ + runner_id: number | null; + /** + * @description The name of the runner to which this job has been assigned. (If a runner hasn't yet been assigned, this will be null.) + * @example my runner + */ + runner_name: string | null; + /** + * @description The ID of the runner group to which this job has been assigned. (If a runner hasn't yet been assigned, this will be null.) + * @example 2 + */ + runner_group_id: number | null; + /** + * @description The name of the runner group to which this job has been assigned. (If a runner hasn't yet been assigned, this will be null.) + * @example my runner group + */ + runner_group_name: string | null; + }; + /** + * The json payload enables/disables the use of sub claim customization + * @description OIDC Customer Subject + */ + "opt-out-oidc-custom-sub": { + use_default: boolean; + }; + /** @description Whether GitHub Actions is enabled on the repository. */ + "actions-enabled": boolean; + "actions-repository-permissions": { + enabled: components["schemas"]["actions-enabled"]; + allowed_actions?: components["schemas"]["allowed-actions"]; + selected_actions_url?: components["schemas"]["selected-actions-url"]; + }; + "actions-workflow-access-to-repository": { + /** + * @description Defines the level of access that workflows outside of the repository have to actions and reusable workflows within the + * repository. `none` means access is only possible from workflows in this repository. + * @enum {string} + */ + access_level: "none" | "organization" | "enterprise"; + }; + /** + * Referenced workflow + * @description A workflow referenced/reused by the initial caller workflow + */ + "referenced-workflow": { + path: string; + sha: string; + ref?: string; + }; + /** Pull Request Minimal */ + "pull-request-minimal": { + id: number; + number: number; + url: string; + head: { + ref: string; + sha: string; + repo: { + id: number; + url: string; + name: string; + }; + }; + base: { + ref: string; + sha: string; + repo: { + id: number; + url: string; + name: string; + }; + }; + }; + /** + * Simple Commit + * @description Simple Commit + */ + "nullable-simple-commit": { + id: string; + tree_id: string; + message: string; + /** Format: date-time */ + timestamp: string; + author: { + name: string; + email: string; + } | null; + committer: { + name: string; + email: string; + } | null; + } | null; + /** + * Workflow Run + * @description An invocation of a workflow + */ + "workflow-run": { + /** + * @description The ID of the workflow run. + * @example 5 + */ + id: number; + /** + * @description The name of the workflow run. + * @example Build + */ + name?: string | null; + /** @example MDEwOkNoZWNrU3VpdGU1 */ + node_id: string; + /** + * @description The ID of the associated check suite. + * @example 42 + */ + check_suite_id?: number; + /** + * @description The node ID of the associated check suite. + * @example MDEwOkNoZWNrU3VpdGU0Mg== + */ + check_suite_node_id?: string; + /** @example master */ + head_branch: string | null; + /** + * @description The SHA of the head commit that points to the version of the workflow being run. + * @example 009b8a3a9ccbb128af87f9b1c0f4c62e8a304f6d + */ + head_sha: string; + /** + * @description The full path of the workflow + * @example octocat/octo-repo/.github/workflows/ci.yml@main + */ + path: string; + /** + * @description The auto incrementing run number for the workflow run. + * @example 106 + */ + run_number: number; + /** + * @description Attempt number of the run, 1 for first attempt and higher if the workflow was re-run. + * @example 1 + */ + run_attempt?: number; + referenced_workflows?: + | components["schemas"]["referenced-workflow"][] + | null; + /** @example push */ + event: string; + /** @example completed */ + status: string | null; + /** @example neutral */ + conclusion: string | null; + /** + * @description The ID of the parent workflow. + * @example 5 + */ + workflow_id: number; + /** + * @description The URL to the workflow run. + * @example https://api.github.com/repos/github/hello-world/actions/runs/5 + */ + url: string; + /** @example https://github.com/github/hello-world/suites/4 */ + html_url: string; + pull_requests: components["schemas"]["pull-request-minimal"][] | null; + /** Format: date-time */ + created_at: string; + /** Format: date-time */ + updated_at: string; + actor?: components["schemas"]["simple-user"]; + triggering_actor?: components["schemas"]["simple-user"]; + /** + * Format: date-time + * @description The start time of the latest run. Resets on re-run. + */ + run_started_at?: string; + /** + * @description The URL to the jobs for the workflow run. + * @example https://api.github.com/repos/github/hello-world/actions/runs/5/jobs + */ + jobs_url: string; + /** + * @description The URL to download the logs for the workflow run. + * @example https://api.github.com/repos/github/hello-world/actions/runs/5/logs + */ + logs_url: string; + /** + * @description The URL to the associated check suite. + * @example https://api.github.com/repos/github/hello-world/check-suites/12 + */ + check_suite_url: string; + /** + * @description The URL to the artifacts for the workflow run. + * @example https://api.github.com/repos/github/hello-world/actions/runs/5/rerun/artifacts + */ + artifacts_url: string; + /** + * @description The URL to cancel the workflow run. + * @example https://api.github.com/repos/github/hello-world/actions/runs/5/cancel + */ + cancel_url: string; + /** + * @description The URL to rerun the workflow run. + * @example https://api.github.com/repos/github/hello-world/actions/runs/5/rerun + */ + rerun_url: string; + /** + * @description The URL to the previous attempted run of this workflow, if one exists. + * @example https://api.github.com/repos/github/hello-world/actions/runs/5/attempts/3 + */ + previous_attempt_url?: string | null; + /** + * @description The URL to the workflow. + * @example https://api.github.com/repos/github/hello-world/actions/workflows/main.yaml + */ + workflow_url: string; + head_commit: components["schemas"]["nullable-simple-commit"]; + repository: components["schemas"]["minimal-repository"]; + head_repository: components["schemas"]["minimal-repository"]; + /** @example 5 */ + head_repository_id?: number; + }; + /** + * Environment Approval + * @description An entry in the reviews log for environment deployments + */ + "environment-approvals": { + /** @description The list of environments that were approved or rejected */ + environments: { + /** + * @description The id of the environment. + * @example 56780428 + */ + id?: number; + /** @example MDExOkVudmlyb25tZW50NTY3ODA0Mjg= */ + node_id?: string; + /** + * @description The name of the environment. + * @example staging + */ + name?: string; + /** @example https://api.github.com/repos/github/hello-world/environments/staging */ + url?: string; + /** @example https://github.com/github/hello-world/deployments/activity_log?environments_filter=staging */ + html_url?: string; + /** + * Format: date-time + * @description The time that the environment was created, in ISO 8601 format. + * @example 2020-11-23T22:00:40Z + */ + created_at?: string; + /** + * Format: date-time + * @description The time that the environment was last updated, in ISO 8601 format. + * @example 2020-11-23T22:00:40Z + */ + updated_at?: string; + }[]; + /** + * @description Whether deployment to the environment(s) was approved or rejected + * @example approved + * @enum {string} + */ + state: "approved" | "rejected"; + user: components["schemas"]["simple-user"]; + /** + * @description The comment submitted with the deployment review + * @example Ship it! + */ + comment: string; + }; + /** + * @description The type of reviewer. + * @example User + * @enum {string} + */ + "deployment-reviewer-type": "User" | "Team"; + /** + * Pending Deployment + * @description Details of a deployment that is waiting for protection rules to pass + */ + "pending-deployment": { + environment: { + /** + * @description The id of the environment. + * @example 56780428 + */ + id?: number; + /** @example MDExOkVudmlyb25tZW50NTY3ODA0Mjg= */ + node_id?: string; + /** + * @description The name of the environment. + * @example staging + */ + name?: string; + /** @example https://api.github.com/repos/github/hello-world/environments/staging */ + url?: string; + /** @example https://github.com/github/hello-world/deployments/activity_log?environments_filter=staging */ + html_url?: string; + }; + /** + * @description The set duration of the wait timer + * @example 30 + */ + wait_timer: number; + /** + * Format: date-time + * @description The time that the wait timer began. + * @example 2020-11-23T22:00:40Z + */ + wait_timer_started_at: string | null; + /** + * @description Whether the currently authenticated user can approve the deployment + * @example true + */ + current_user_can_approve: boolean; + /** @description The people or teams that may approve jobs that reference the environment. You can list up to six users or teams as reviewers. The reviewers must have at least read access to the repository. Only one of the required reviewers needs to approve the job for it to proceed. */ + reviewers: { + type?: components["schemas"]["deployment-reviewer-type"]; + reviewer?: Partial & + Partial; + }[]; + }; + /** + * Deployment + * @description A request for a specific ref(branch,sha,tag) to be deployed + */ + deployment: { + /** + * Format: uri + * @example https://api.github.com/repos/octocat/example/deployments/1 + */ + url: string; + /** + * @description Unique identifier of the deployment + * @example 42 + */ + id: number; + /** @example MDEwOkRlcGxveW1lbnQx */ + node_id: string; + /** @example a84d88e7554fc1fa21bcbc4efae3c782a70d2b9d */ + sha: string; + /** + * @description The ref to deploy. This can be a branch, tag, or sha. + * @example topic-branch + */ + ref: string; + /** + * @description Parameter to specify a task to execute + * @example deploy + */ + task: string; + payload: { [key: string]: unknown } | string; + /** @example staging */ + original_environment?: string; + /** + * @description Name for the target deployment environment. + * @example production + */ + environment: string; + /** @example Deploy request from hubot */ + description: string | null; + creator: components["schemas"]["nullable-simple-user"]; + /** + * Format: date-time + * @example 2012-07-20T01:19:13Z + */ + created_at: string; + /** + * Format: date-time + * @example 2012-07-20T01:19:13Z + */ + updated_at: string; + /** + * Format: uri + * @example https://api.github.com/repos/octocat/example/deployments/1/statuses + */ + statuses_url: string; + /** + * Format: uri + * @example https://api.github.com/repos/octocat/example + */ + repository_url: string; + /** + * @description Specifies if the given environment is will no longer exist at some point in the future. Default: false. + * @example true + */ + transient_environment?: boolean; + /** + * @description Specifies if the given environment is one that end-users directly interact with. Default: false. + * @example true + */ + production_environment?: boolean; + performed_via_github_app?: components["schemas"]["nullable-integration"]; + }; + /** + * Workflow Run Usage + * @description Workflow Run Usage + */ + "workflow-run-usage": { + billable: { + UBUNTU?: { + total_ms: number; + jobs: number; + job_runs?: { + job_id: number; + duration_ms: number; + }[]; + }; + MACOS?: { + total_ms: number; + jobs: number; + job_runs?: { + job_id: number; + duration_ms: number; + }[]; + }; + WINDOWS?: { + total_ms: number; + jobs: number; + job_runs?: { + job_id: number; + duration_ms: number; + }[]; + }; + }; + run_duration_ms?: number; + }; + /** + * Actions Secret + * @description Set secrets for GitHub Actions. + */ + "actions-secret": { + /** + * @description The name of the secret. + * @example SECRET_TOKEN + */ + name: string; + /** Format: date-time */ + created_at: string; + /** Format: date-time */ + updated_at: string; + }; + /** + * Workflow + * @description A GitHub Actions workflow + */ + workflow: { + /** @example 5 */ + id: number; + /** @example MDg6V29ya2Zsb3cxMg== */ + node_id: string; + /** @example CI */ + name: string; + /** @example ruby.yaml */ + path: string; + /** + * @example active + * @enum {string} + */ + state: + | "active" + | "deleted" + | "disabled_fork" + | "disabled_inactivity" + | "disabled_manually"; + /** + * Format: date-time + * @example 2019-12-06T14:20:20.000Z + */ + created_at: string; + /** + * Format: date-time + * @example 2019-12-06T14:20:20.000Z + */ + updated_at: string; + /** @example https://api.github.com/repos/actions/setup-ruby/workflows/5 */ + url: string; + /** @example https://github.com/actions/setup-ruby/blob/master/.github/workflows/ruby.yaml */ + html_url: string; + /** @example https://github.com/actions/setup-ruby/workflows/CI/badge.svg */ + badge_url: string; + /** + * Format: date-time + * @example 2019-12-06T14:20:20.000Z + */ + deleted_at?: string; + }; + /** + * Workflow Usage + * @description Workflow Usage + */ + "workflow-usage": { + billable: { + UBUNTU?: { + total_ms?: number; + }; + MACOS?: { + total_ms?: number; + }; + WINDOWS?: { + total_ms?: number; + }; + }; + }; + /** + * Autolink reference + * @description An autolink reference. + */ + autolink: { + /** @example 3 */ + id: number; + /** + * @description The prefix of a key that is linkified. + * @example TICKET- + */ + key_prefix: string; + /** + * @description A template for the target URL that is generated if a key was found. + * @example https://example.com/TICKET?query= + */ + url_template: string; + /** @description Whether this autolink reference matches alphanumeric characters. If false, this autolink reference is a legacy autolink that only matches numeric characters. */ + is_alphanumeric?: boolean; + }; + /** + * Protected Branch Required Status Check + * @description Protected Branch Required Status Check + */ + "protected-branch-required-status-check": { + url?: string; + enforcement_level?: string; + contexts: string[]; + checks: { + context: string; + app_id: number | null; + }[]; + contexts_url?: string; + strict?: boolean; + }; + /** + * Protected Branch Admin Enforced + * @description Protected Branch Admin Enforced + */ + "protected-branch-admin-enforced": { + /** + * Format: uri + * @example https://api.github.com/repos/octocat/Hello-World/branches/master/protection/enforce_admins + */ + url: string; + /** @example true */ + enabled: boolean; + }; + /** + * Protected Branch Pull Request Review + * @description Protected Branch Pull Request Review + */ + "protected-branch-pull-request-review": { + /** + * Format: uri + * @example https://api.github.com/repos/octocat/Hello-World/branches/master/protection/dismissal_restrictions + */ + url?: string; + dismissal_restrictions?: { + /** @description The list of users with review dismissal access. */ + users?: components["schemas"]["simple-user"][]; + /** @description The list of teams with review dismissal access. */ + teams?: components["schemas"]["team"][]; + /** @description The list of apps with review dismissal access. */ + apps?: components["schemas"]["integration"][]; + /** @example "https://api.github.com/repos/the-org/an-org-repo/branches/master/protection/dismissal_restrictions" */ + url?: string; + /** @example "https://api.github.com/repos/the-org/an-org-repo/branches/master/protection/dismissal_restrictions/users" */ + users_url?: string; + /** @example "https://api.github.com/repos/the-org/an-org-repo/branches/master/protection/dismissal_restrictions/teams" */ + teams_url?: string; + }; + /** @description Allow specific users, teams, or apps to bypass pull request requirements. */ + bypass_pull_request_allowances?: { + /** @description The list of users allowed to bypass pull request requirements. */ + users?: components["schemas"]["simple-user"][]; + /** @description The list of teams allowed to bypass pull request requirements. */ + teams?: components["schemas"]["team"][]; + /** @description The list of apps allowed to bypass pull request requirements. */ + apps?: components["schemas"]["integration"][]; + }; + /** @example true */ + dismiss_stale_reviews: boolean; + /** @example true */ + require_code_owner_reviews: boolean; + /** @example 2 */ + required_approving_review_count?: number; + }; + /** + * Branch Restriction Policy + * @description Branch Restriction Policy + */ + "branch-restriction-policy": { + /** Format: uri */ + url: string; + /** Format: uri */ + users_url: string; + /** Format: uri */ + teams_url: string; + /** Format: uri */ + apps_url: string; + users: { + login?: string; + id?: number; + node_id?: string; + avatar_url?: string; + gravatar_id?: string; + url?: string; + html_url?: string; + followers_url?: string; + following_url?: string; + gists_url?: string; + starred_url?: string; + subscriptions_url?: string; + organizations_url?: string; + repos_url?: string; + events_url?: string; + received_events_url?: string; + type?: string; + site_admin?: boolean; + }[]; + teams: { + id?: number; + node_id?: string; + url?: string; + html_url?: string; + name?: string; + slug?: string; + description?: string | null; + privacy?: string; + permission?: string; + members_url?: string; + repositories_url?: string; + parent?: string | null; + }[]; + apps: { + id?: number; + slug?: string; + node_id?: string; + owner?: { + login?: string; + id?: number; + node_id?: string; + url?: string; + repos_url?: string; + events_url?: string; + hooks_url?: string; + issues_url?: string; + members_url?: string; + public_members_url?: string; + avatar_url?: string; + description?: string; + /** @example "" */ + gravatar_id?: string; + /** @example "https://github.com/testorg-ea8ec76d71c3af4b" */ + html_url?: string; + /** @example "https://api.github.com/users/testorg-ea8ec76d71c3af4b/followers" */ + followers_url?: string; + /** @example "https://api.github.com/users/testorg-ea8ec76d71c3af4b/following{/other_user}" */ + following_url?: string; + /** @example "https://api.github.com/users/testorg-ea8ec76d71c3af4b/gists{/gist_id}" */ + gists_url?: string; + /** @example "https://api.github.com/users/testorg-ea8ec76d71c3af4b/starred{/owner}{/repo}" */ + starred_url?: string; + /** @example "https://api.github.com/users/testorg-ea8ec76d71c3af4b/subscriptions" */ + subscriptions_url?: string; + /** @example "https://api.github.com/users/testorg-ea8ec76d71c3af4b/orgs" */ + organizations_url?: string; + /** @example "https://api.github.com/users/testorg-ea8ec76d71c3af4b/received_events" */ + received_events_url?: string; + /** @example "Organization" */ + type?: string; + /** @example false */ + site_admin?: boolean; + }; + name?: string; + description?: string; + external_url?: string; + html_url?: string; + created_at?: string; + updated_at?: string; + permissions?: { + metadata?: string; + contents?: string; + issues?: string; + single_file?: string; + }; + events?: string[]; + }[]; + }; + /** + * Branch Protection + * @description Branch Protection + */ + "branch-protection": { + url?: string; + enabled?: boolean; + required_status_checks?: components["schemas"]["protected-branch-required-status-check"]; + enforce_admins?: components["schemas"]["protected-branch-admin-enforced"]; + required_pull_request_reviews?: components["schemas"]["protected-branch-pull-request-review"]; + restrictions?: components["schemas"]["branch-restriction-policy"]; + required_linear_history?: { + enabled?: boolean; + }; + allow_force_pushes?: { + enabled?: boolean; + }; + allow_deletions?: { + enabled?: boolean; + }; + block_creations?: { + enabled?: boolean; + }; + required_conversation_resolution?: { + enabled?: boolean; + }; + /** @example "branch/with/protection" */ + name?: string; + /** @example "https://api.github.com/repos/owner-79e94e2d36b3fd06a32bb213/AAA_Public_Repo/branches/branch/with/protection/protection" */ + protection_url?: string; + required_signatures?: { + /** + * Format: uri + * @example https://api.github.com/repos/octocat/Hello-World/branches/master/protection/required_signatures + */ + url: string; + /** @example true */ + enabled: boolean; + }; + }; + /** + * Short Branch + * @description Short Branch + */ + "short-branch": { + name: string; + commit: { + sha: string; + /** Format: uri */ + url: string; + }; + protected: boolean; + protection?: components["schemas"]["branch-protection"]; + /** Format: uri */ + protection_url?: string; + }; + /** + * Git User + * @description Metaproperties for Git author/committer information. + */ + "nullable-git-user": { + /** @example "Chris Wanstrath" */ + name?: string; + /** @example "chris@ozmm.org" */ + email?: string; + /** @example "2007-10-29T02:42:39.000-07:00" */ + date?: string; + } | null; + /** Verification */ + verification: { + verified: boolean; + reason: string; + payload: string | null; + signature: string | null; + }; + /** + * Diff Entry + * @description Diff Entry + */ + "diff-entry": { + /** @example bbcd538c8e72b8c175046e27cc8f907076331401 */ + sha: string; + /** @example file1.txt */ + filename: string; + /** + * @example added + * @enum {string} + */ + status: + | "added" + | "removed" + | "modified" + | "renamed" + | "copied" + | "changed" + | "unchanged"; + /** @example 103 */ + additions: number; + /** @example 21 */ + deletions: number; + /** @example 124 */ + changes: number; + /** + * Format: uri + * @example https://github.com/octocat/Hello-World/blob/6dcb09b5b57875f334f61aebed695e2e4193db5e/file1.txt + */ + blob_url: string; + /** + * Format: uri + * @example https://github.com/octocat/Hello-World/raw/6dcb09b5b57875f334f61aebed695e2e4193db5e/file1.txt + */ + raw_url: string; + /** + * Format: uri + * @example https://api.github.com/repos/octocat/Hello-World/contents/file1.txt?ref=6dcb09b5b57875f334f61aebed695e2e4193db5e + */ + contents_url: string; + /** @example @@ -132,7 +132,7 @@ module Test @@ -1000,7 +1000,7 @@ module Test */ + patch?: string; + /** @example file.txt */ + previous_filename?: string; + }; + /** + * Commit + * @description Commit + */ + commit: { + /** + * Format: uri + * @example https://api.github.com/repos/octocat/Hello-World/commits/6dcb09b5b57875f334f61aebed695e2e4193db5e + */ + url: string; + /** @example 6dcb09b5b57875f334f61aebed695e2e4193db5e */ + sha: string; + /** @example MDY6Q29tbWl0NmRjYjA5YjViNTc4NzVmMzM0ZjYxYWViZWQ2OTVlMmU0MTkzZGI1ZQ== */ + node_id: string; + /** + * Format: uri + * @example https://github.com/octocat/Hello-World/commit/6dcb09b5b57875f334f61aebed695e2e4193db5e + */ + html_url: string; + /** + * Format: uri + * @example https://api.github.com/repos/octocat/Hello-World/commits/6dcb09b5b57875f334f61aebed695e2e4193db5e/comments + */ + comments_url: string; + commit: { + /** + * Format: uri + * @example https://api.github.com/repos/octocat/Hello-World/commits/6dcb09b5b57875f334f61aebed695e2e4193db5e + */ + url: string; + author: components["schemas"]["nullable-git-user"]; + committer: components["schemas"]["nullable-git-user"]; + /** @example Fix all the bugs */ + message: string; + /** @example 0 */ + comment_count: number; + tree: { + /** @example 827efc6d56897b048c772eb4087f854f46256132 */ + sha: string; + /** + * Format: uri + * @example https://api.github.com/repos/octocat/Hello-World/tree/827efc6d56897b048c772eb4087f854f46256132 + */ + url: string; + }; + verification?: components["schemas"]["verification"]; + }; + author: components["schemas"]["nullable-simple-user"]; + committer: components["schemas"]["nullable-simple-user"]; + parents: { + /** @example 7638417db6d59f3c431d3e1f261cc637155684cd */ + sha: string; + /** + * Format: uri + * @example https://api.github.com/repos/octocat/Hello-World/commits/7638417db6d59f3c431d3e1f261cc637155684cd + */ + url: string; + /** + * Format: uri + * @example https://github.com/octocat/Hello-World/commit/7638417db6d59f3c431d3e1f261cc637155684cd + */ + html_url?: string; + }[]; + stats?: { + additions?: number; + deletions?: number; + total?: number; + }; + files?: components["schemas"]["diff-entry"][]; + }; + /** + * Branch With Protection + * @description Branch With Protection + */ + "branch-with-protection": { + name: string; + commit: components["schemas"]["commit"]; + _links: { + html: string; + /** Format: uri */ + self: string; + }; + protected: boolean; + protection: components["schemas"]["branch-protection"]; + /** Format: uri */ + protection_url: string; + /** @example "mas*" */ + pattern?: string; + /** @example 1 */ + required_approving_review_count?: number; + }; + /** + * Status Check Policy + * @description Status Check Policy + */ + "status-check-policy": { + /** + * Format: uri + * @example https://api.github.com/repos/octocat/Hello-World/branches/master/protection/required_status_checks + */ + url: string; + /** @example true */ + strict: boolean; + /** + * @example [ + * "continuous-integration/travis-ci" + * ] + */ + contexts: string[]; + checks: { + /** @example continuous-integration/travis-ci */ + context: string; + app_id: number | null; + }[]; + /** + * Format: uri + * @example https://api.github.com/repos/octocat/Hello-World/branches/master/protection/required_status_checks/contexts + */ + contexts_url: string; + }; + /** + * Protected Branch + * @description Branch protections protect branches + */ + "protected-branch": { + /** Format: uri */ + url: string; + required_status_checks?: components["schemas"]["status-check-policy"]; + required_pull_request_reviews?: { + /** Format: uri */ + url: string; + dismiss_stale_reviews?: boolean; + require_code_owner_reviews?: boolean; + required_approving_review_count?: number; + dismissal_restrictions?: { + /** Format: uri */ + url: string; + /** Format: uri */ + users_url: string; + /** Format: uri */ + teams_url: string; + users: components["schemas"]["simple-user"][]; + teams: components["schemas"]["team"][]; + apps?: components["schemas"]["integration"][]; + }; + bypass_pull_request_allowances?: { + users: components["schemas"]["simple-user"][]; + teams: components["schemas"]["team"][]; + apps?: components["schemas"]["integration"][]; + }; + }; + required_signatures?: { + /** + * Format: uri + * @example https://api.github.com/repos/octocat/Hello-World/branches/master/protection/required_signatures + */ + url: string; + /** @example true */ + enabled: boolean; + }; + enforce_admins?: { + /** Format: uri */ + url: string; + enabled: boolean; + }; + required_linear_history?: { + enabled: boolean; + }; + allow_force_pushes?: { + enabled: boolean; + }; + allow_deletions?: { + enabled: boolean; + }; + restrictions?: components["schemas"]["branch-restriction-policy"]; + required_conversation_resolution?: { + enabled?: boolean; + }; + block_creations?: { + enabled: boolean; + }; + }; + /** + * Deployment + * @description A deployment created as the result of an Actions check run from a workflow that references an environment + */ + "deployment-simple": { + /** + * Format: uri + * @example https://api.github.com/repos/octocat/example/deployments/1 + */ + url: string; + /** + * @description Unique identifier of the deployment + * @example 42 + */ + id: number; + /** @example MDEwOkRlcGxveW1lbnQx */ + node_id: string; + /** + * @description Parameter to specify a task to execute + * @example deploy + */ + task: string; + /** @example staging */ + original_environment?: string; + /** + * @description Name for the target deployment environment. + * @example production + */ + environment: string; + /** @example Deploy request from hubot */ + description: string | null; + /** + * Format: date-time + * @example 2012-07-20T01:19:13Z + */ + created_at: string; + /** + * Format: date-time + * @example 2012-07-20T01:19:13Z + */ + updated_at: string; + /** + * Format: uri + * @example https://api.github.com/repos/octocat/example/deployments/1/statuses + */ + statuses_url: string; + /** + * Format: uri + * @example https://api.github.com/repos/octocat/example + */ + repository_url: string; + /** + * @description Specifies if the given environment is will no longer exist at some point in the future. Default: false. + * @example true + */ + transient_environment?: boolean; + /** + * @description Specifies if the given environment is one that end-users directly interact with. Default: false. + * @example true + */ + production_environment?: boolean; + performed_via_github_app?: components["schemas"]["nullable-integration"]; + }; + /** + * CheckRun + * @description A check performed on the code of a given code change + */ + "check-run": { + /** + * @description The id of the check. + * @example 21 + */ + id: number; + /** + * @description The SHA of the commit that is being checked. + * @example 009b8a3a9ccbb128af87f9b1c0f4c62e8a304f6d + */ + head_sha: string; + /** @example MDg6Q2hlY2tSdW40 */ + node_id: string; + /** @example 42 */ + external_id: string | null; + /** @example https://api.github.com/repos/github/hello-world/check-runs/4 */ + url: string; + /** @example https://github.com/github/hello-world/runs/4 */ + html_url: string | null; + /** @example https://example.com */ + details_url: string | null; + /** + * @description The phase of the lifecycle that the check is currently in. + * @example queued + * @enum {string} + */ + status: "queued" | "in_progress" | "completed"; + /** + * @example neutral + * @enum {string|null} + */ + conclusion: + | ( + | "success" + | "failure" + | "neutral" + | "cancelled" + | "skipped" + | "timed_out" + | "action_required" + ) + | null; + /** + * Format: date-time + * @example 2018-05-04T01:14:52Z + */ + started_at: string | null; + /** + * Format: date-time + * @example 2018-05-04T01:14:52Z + */ + completed_at: string | null; + output: { + title: string | null; + summary: string | null; + text: string | null; + annotations_count: number; + /** Format: uri */ + annotations_url: string; + }; + /** + * @description The name of the check. + * @example test-coverage + */ + name: string; + check_suite: { + id: number; + } | null; + app: components["schemas"]["nullable-integration"]; + pull_requests: components["schemas"]["pull-request-minimal"][]; + deployment?: components["schemas"]["deployment-simple"]; + }; + /** + * Check Annotation + * @description Check Annotation + */ + "check-annotation": { + /** @example README.md */ + path: string; + /** @example 2 */ + start_line: number; + /** @example 2 */ + end_line: number; + /** @example 5 */ + start_column: number | null; + /** @example 10 */ + end_column: number | null; + /** @example warning */ + annotation_level: string | null; + /** @example Spell Checker */ + title: string | null; + /** @example Check your spelling for 'banaas'. */ + message: string | null; + /** @example Do you mean 'bananas' or 'banana'? */ + raw_details: string | null; + blob_href: string; + }; + /** + * Simple Commit + * @description Simple Commit + */ + "simple-commit": { + id: string; + tree_id: string; + message: string; + /** Format: date-time */ + timestamp: string; + author: { + name: string; + email: string; + } | null; + committer: { + name: string; + email: string; + } | null; + }; + /** + * CheckSuite + * @description A suite of checks performed on the code of a given code change + */ + "check-suite": { + /** @example 5 */ + id: number; + /** @example MDEwOkNoZWNrU3VpdGU1 */ + node_id: string; + /** @example master */ + head_branch: string | null; + /** + * @description The SHA of the head commit that is being checked. + * @example 009b8a3a9ccbb128af87f9b1c0f4c62e8a304f6d + */ + head_sha: string; + /** + * @example completed + * @enum {string|null} + */ + status: ("queued" | "in_progress" | "completed") | null; + /** + * @example neutral + * @enum {string|null} + */ + conclusion: + | ( + | "success" + | "failure" + | "neutral" + | "cancelled" + | "skipped" + | "timed_out" + | "action_required" + ) + | null; + /** @example https://api.github.com/repos/github/hello-world/check-suites/5 */ + url: string | null; + /** @example 146e867f55c26428e5f9fade55a9bbf5e95a7912 */ + before: string | null; + /** @example d6fde92930d4715a2b49857d24b940956b26d2d3 */ + after: string | null; + pull_requests: components["schemas"]["pull-request-minimal"][] | null; + app: components["schemas"]["nullable-integration"]; + repository: components["schemas"]["minimal-repository"]; + /** Format: date-time */ + created_at: string | null; + /** Format: date-time */ + updated_at: string | null; + head_commit: components["schemas"]["simple-commit"]; + latest_check_runs_count: number; + check_runs_url: string; + rerequestable?: boolean; + runs_rerequestable?: boolean; + }; + /** + * Check Suite Preference + * @description Check suite configuration preferences for a repository. + */ + "check-suite-preference": { + preferences: { + auto_trigger_checks?: { + app_id: number; + setting: boolean; + }[]; + }; + repository: components["schemas"]["minimal-repository"]; + }; + "code-scanning-alert-rule-summary": { + /** @description A unique identifier for the rule used to detect the alert. */ + id?: string | null; + /** @description The name of the rule used to detect the alert. */ + name?: string; + /** @description A set of tags applicable for the rule. */ + tags?: string[] | null; + /** + * @description The severity of the alert. + * @enum {string|null} + */ + severity?: ("none" | "note" | "warning" | "error") | null; + /** @description A short description of the rule used to detect the alert. */ + description?: string; + }; + "code-scanning-alert-items": { + number: components["schemas"]["alert-number"]; + created_at: components["schemas"]["alert-created-at"]; + updated_at?: components["schemas"]["alert-updated-at"]; + url: components["schemas"]["alert-url"]; + html_url: components["schemas"]["alert-html-url"]; + instances_url: components["schemas"]["alert-instances-url"]; + state: components["schemas"]["code-scanning-alert-state"]; + fixed_at?: components["schemas"]["code-scanning-alert-fixed-at"]; + dismissed_by: components["schemas"]["nullable-simple-user"]; + dismissed_at: components["schemas"]["code-scanning-alert-dismissed-at"]; + dismissed_reason: components["schemas"]["code-scanning-alert-dismissed-reason"]; + dismissed_comment?: components["schemas"]["code-scanning-alert-dismissed-comment"]; + rule: components["schemas"]["code-scanning-alert-rule-summary"]; + tool: components["schemas"]["code-scanning-analysis-tool"]; + most_recent_instance: components["schemas"]["code-scanning-alert-instance"]; + }; + "code-scanning-alert": { + number: components["schemas"]["alert-number"]; + created_at: components["schemas"]["alert-created-at"]; + updated_at?: components["schemas"]["alert-updated-at"]; + url: components["schemas"]["alert-url"]; + html_url: components["schemas"]["alert-html-url"]; + instances_url: components["schemas"]["alert-instances-url"]; + state: components["schemas"]["code-scanning-alert-state"]; + fixed_at?: components["schemas"]["code-scanning-alert-fixed-at"]; + dismissed_by: components["schemas"]["nullable-simple-user"]; + dismissed_at: components["schemas"]["code-scanning-alert-dismissed-at"]; + dismissed_reason: components["schemas"]["code-scanning-alert-dismissed-reason"]; + dismissed_comment?: components["schemas"]["code-scanning-alert-dismissed-comment"]; + rule: components["schemas"]["code-scanning-alert-rule"]; + tool: components["schemas"]["code-scanning-analysis-tool"]; + most_recent_instance: components["schemas"]["code-scanning-alert-instance"]; + }; + /** + * @description Sets the state of the code scanning alert. You must provide `dismissed_reason` when you set the state to `dismissed`. + * @enum {string} + */ + "code-scanning-alert-set-state": "open" | "dismissed"; + /** + * @description An identifier for the upload. + * @example 6c81cd8e-b078-4ac3-a3be-1dad7dbd0b53 + */ + "code-scanning-analysis-sarif-id": string; + /** @description The SHA of the commit to which the analysis you are uploading relates. */ + "code-scanning-analysis-commit-sha": string; + /** @description Identifies the variable values associated with the environment in which this analysis was performed. */ + "code-scanning-analysis-environment": string; + /** + * Format: date-time + * @description The time that the analysis was created in ISO 8601 format: `YYYY-MM-DDTHH:MM:SSZ`. + */ + "code-scanning-analysis-created-at": string; + /** + * Format: uri + * @description The REST API URL of the analysis resource. + */ + "code-scanning-analysis-url": string; + "code-scanning-analysis": { + ref: components["schemas"]["code-scanning-ref"]; + commit_sha: components["schemas"]["code-scanning-analysis-commit-sha"]; + analysis_key: components["schemas"]["code-scanning-analysis-analysis-key"]; + environment: components["schemas"]["code-scanning-analysis-environment"]; + category?: components["schemas"]["code-scanning-analysis-category"]; + /** @example error reading field xyz */ + error: string; + created_at: components["schemas"]["code-scanning-analysis-created-at"]; + /** @description The total number of results in the analysis. */ + results_count: number; + /** @description The total number of rules used in the analysis. */ + rules_count: number; + /** @description Unique identifier for this analysis. */ + id: number; + url: components["schemas"]["code-scanning-analysis-url"]; + sarif_id: components["schemas"]["code-scanning-analysis-sarif-id"]; + tool: components["schemas"]["code-scanning-analysis-tool"]; + deletable: boolean; + /** + * @description Warning generated when processing the analysis + * @example 123 results were ignored + */ + warning: string; + }; + /** + * Analysis deletion + * @description Successful deletion of a code scanning analysis + */ + "code-scanning-analysis-deletion": { + /** + * Format: uri + * @description Next deletable analysis in chain, without last analysis deletion confirmation + */ + next_analysis_url: string | null; + /** + * Format: uri + * @description Next deletable analysis in chain, with last analysis deletion confirmation + */ + confirm_delete_url: string | null; + }; + /** @description A Base64 string representing the SARIF file to upload. You must first compress your SARIF file using [`gzip`](http://www.gnu.org/software/gzip/manual/gzip.html) and then translate the contents of the file into a Base64 encoding string. For more information, see "[SARIF support for code scanning](https://docs.github.com/code-security/secure-coding/sarif-support-for-code-scanning)." */ + "code-scanning-analysis-sarif-file": string; + "code-scanning-sarifs-receipt": { + id?: components["schemas"]["code-scanning-analysis-sarif-id"]; + /** + * Format: uri + * @description The REST API URL for checking the status of the upload. + */ + url?: string; + }; + "code-scanning-sarifs-status": { + /** + * @description `pending` files have not yet been processed, while `complete` means results from the SARIF have been stored. `failed` files have either not been processed at all, or could only be partially processed. + * @enum {string} + */ + processing_status?: "pending" | "complete" | "failed"; + /** + * Format: uri + * @description The REST API URL for getting the analyses associated with the upload. + */ + analyses_url?: string | null; + /** @description Any errors that ocurred during processing of the delivery. */ + errors?: string[] | null; + }; + /** + * CODEOWNERS errors + * @description A list of errors found in a repo's CODEOWNERS file + */ + "codeowners-errors": { + errors: { + /** + * @description The line number where this errors occurs. + * @example 7 + */ + line: number; + /** + * @description The column number where this errors occurs. + * @example 3 + */ + column: number; + /** + * @description The contents of the line where the error occurs. + * @example * user + */ + source?: string; + /** + * @description The type of error. + * @example Invalid owner + */ + kind: string; + /** + * @description Suggested action to fix the error. This will usually be `null`, but is provided for some common errors. + * @example The pattern `/` will never match anything, did you mean `*` instead? + */ + suggestion?: string | null; + /** + * @description A human-readable description of the error, combining information from multiple fields, laid out for display in a monospaced typeface (for example, a command-line setting). + * @example Invalid owner on line 7: + * + * * user + * ^ + */ + message: string; + /** + * @description The path of the file where the error occured. + * @example .github/CODEOWNERS + */ + path: string; + }[]; + }; + /** + * Codespace machine + * @description A description of the machine powering a codespace. + */ + "codespace-machine": { + /** + * @description The name of the machine. + * @example standardLinux + */ + name: string; + /** + * @description The display name of the machine includes cores, memory, and storage. + * @example 4 cores, 8 GB RAM, 64 GB storage + */ + display_name: string; + /** + * @description The operating system of the machine. + * @example linux + */ + operating_system: string; + /** + * @description How much storage is available to the codespace. + * @example 68719476736 + */ + storage_in_bytes: number; + /** + * @description How much memory is available to the codespace. + * @example 8589934592 + */ + memory_in_bytes: number; + /** + * @description How many cores are available to the codespace. + * @example 4 + */ + cpus: number; + /** + * @description Whether a prebuild is currently available when creating a codespace for this machine and repository. If a branch was not specified as a ref, the default branch will be assumed. Value will be "null" if prebuilds are not supported or prebuild availability could not be determined. Value will be "none" if no prebuild is available. Latest values "ready" and "in_progress" indicate the prebuild availability status. + * @example ready + * @enum {string|null} + */ + prebuild_availability: ("none" | "ready" | "in_progress") | null; + }; + /** + * Codespaces Secret + * @description Set repository secrets for GitHub Codespaces. + */ + "repo-codespaces-secret": { + /** + * @description The name of the secret. + * @example SECRET_TOKEN + */ + name: string; + /** Format: date-time */ + created_at: string; + /** Format: date-time */ + updated_at: string; + }; + /** + * CodespacesPublicKey + * @description The public key used for setting Codespaces secrets. + */ + "codespaces-public-key": { + /** + * @description The identifier for the key. + * @example 1234567 + */ + key_id: string; + /** + * @description The Base64 encoded public key. + * @example hBT5WZEj8ZoOv6TYJsfWq7MxTEQopZO5/IT3ZCVQPzs= + */ + key: string; + /** @example 2 */ + id?: number; + /** @example https://api.github.com/user/keys/2 */ + url?: string; + /** @example ssh-rsa AAAAB3NzaC1yc2EAAA */ + title?: string; + /** @example 2011-01-26T19:01:12Z */ + created_at?: string; + }; + /** + * Collaborator + * @description Collaborator + */ + collaborator: { + /** @example octocat */ + login: string; + /** @example 1 */ + id: number; + email?: string | null; + name?: string | null; + /** @example MDQ6VXNlcjE= */ + node_id: string; + /** + * Format: uri + * @example https://github.com/images/error/octocat_happy.gif + */ + avatar_url: string; + /** @example 41d064eb2195891e12d0413f63227ea7 */ + gravatar_id: string | null; + /** + * Format: uri + * @example https://api.github.com/users/octocat + */ + url: string; + /** + * Format: uri + * @example https://github.com/octocat + */ + html_url: string; + /** + * Format: uri + * @example https://api.github.com/users/octocat/followers + */ + followers_url: string; + /** @example https://api.github.com/users/octocat/following{/other_user} */ + following_url: string; + /** @example https://api.github.com/users/octocat/gists{/gist_id} */ + gists_url: string; + /** @example https://api.github.com/users/octocat/starred{/owner}{/repo} */ + starred_url: string; + /** + * Format: uri + * @example https://api.github.com/users/octocat/subscriptions + */ + subscriptions_url: string; + /** + * Format: uri + * @example https://api.github.com/users/octocat/orgs + */ + organizations_url: string; + /** + * Format: uri + * @example https://api.github.com/users/octocat/repos + */ + repos_url: string; + /** @example https://api.github.com/users/octocat/events{/privacy} */ + events_url: string; + /** + * Format: uri + * @example https://api.github.com/users/octocat/received_events + */ + received_events_url: string; + /** @example User */ + type: string; + site_admin: boolean; + permissions?: { + pull: boolean; + triage?: boolean; + push: boolean; + maintain?: boolean; + admin: boolean; + }; + /** @example admin */ + role_name: string; + }; + /** + * Repository Invitation + * @description Repository invitations let you manage who you collaborate with. + */ + "repository-invitation": { + /** + * @description Unique identifier of the repository invitation. + * @example 42 + */ + id: number; + repository: components["schemas"]["minimal-repository"]; + invitee: components["schemas"]["nullable-simple-user"]; + inviter: components["schemas"]["nullable-simple-user"]; + /** + * @description The permission associated with the invitation. + * @example read + * @enum {string} + */ + permissions: "read" | "write" | "admin" | "triage" | "maintain"; + /** + * Format: date-time + * @example 2016-06-13T14:52:50-05:00 + */ + created_at: string; + /** @description Whether or not the invitation has expired */ + expired?: boolean; + /** + * @description URL for the repository invitation + * @example https://api.github.com/user/repository-invitations/1 + */ + url: string; + /** @example https://github.com/octocat/Hello-World/invitations */ + html_url: string; + node_id: string; + }; + /** + * Collaborator + * @description Collaborator + */ + "nullable-collaborator": { + /** @example octocat */ + login: string; + /** @example 1 */ + id: number; + email?: string | null; + name?: string | null; + /** @example MDQ6VXNlcjE= */ + node_id: string; + /** + * Format: uri + * @example https://github.com/images/error/octocat_happy.gif + */ + avatar_url: string; + /** @example 41d064eb2195891e12d0413f63227ea7 */ + gravatar_id: string | null; + /** + * Format: uri + * @example https://api.github.com/users/octocat + */ + url: string; + /** + * Format: uri + * @example https://github.com/octocat + */ + html_url: string; + /** + * Format: uri + * @example https://api.github.com/users/octocat/followers + */ + followers_url: string; + /** @example https://api.github.com/users/octocat/following{/other_user} */ + following_url: string; + /** @example https://api.github.com/users/octocat/gists{/gist_id} */ + gists_url: string; + /** @example https://api.github.com/users/octocat/starred{/owner}{/repo} */ + starred_url: string; + /** + * Format: uri + * @example https://api.github.com/users/octocat/subscriptions + */ + subscriptions_url: string; + /** + * Format: uri + * @example https://api.github.com/users/octocat/orgs + */ + organizations_url: string; + /** + * Format: uri + * @example https://api.github.com/users/octocat/repos + */ + repos_url: string; + /** @example https://api.github.com/users/octocat/events{/privacy} */ + events_url: string; + /** + * Format: uri + * @example https://api.github.com/users/octocat/received_events + */ + received_events_url: string; + /** @example User */ + type: string; + site_admin: boolean; + permissions?: { + pull: boolean; + triage?: boolean; + push: boolean; + maintain?: boolean; + admin: boolean; + }; + /** @example admin */ + role_name: string; + } | null; + /** + * Repository Collaborator Permission + * @description Repository Collaborator Permission + */ + "repository-collaborator-permission": { + permission: string; + /** @example admin */ + role_name: string; + user: components["schemas"]["nullable-collaborator"]; + }; + /** + * Commit Comment + * @description Commit Comment + */ + "commit-comment": { + /** Format: uri */ + html_url: string; + /** Format: uri */ + url: string; + id: number; + node_id: string; + body: string; + path: string | null; + position: number | null; + line: number | null; + commit_id: string; + user: components["schemas"]["nullable-simple-user"]; + /** Format: date-time */ + created_at: string; + /** Format: date-time */ + updated_at: string; + author_association: components["schemas"]["author-association"]; + reactions?: components["schemas"]["reaction-rollup"]; + }; + /** + * Branch Short + * @description Branch Short + */ + "branch-short": { + name: string; + commit: { + sha: string; + url: string; + }; + protected: boolean; + }; + /** + * Link + * @description Hypermedia Link + */ + link: { + href: string; + }; + /** + * Auto merge + * @description The status of auto merging a pull request. + */ + "auto-merge": { + enabled_by: components["schemas"]["simple-user"]; + /** + * @description The merge method to use. + * @enum {string} + */ + merge_method: "merge" | "squash" | "rebase"; + /** @description Title for the merge commit message. */ + commit_title: string; + /** @description Commit message for the merge commit. */ + commit_message: string; + } | null; + /** + * Pull Request Simple + * @description Pull Request Simple + */ + "pull-request-simple": { + /** + * Format: uri + * @example https://api.github.com/repos/octocat/Hello-World/pulls/1347 + */ + url: string; + /** @example 1 */ + id: number; + /** @example MDExOlB1bGxSZXF1ZXN0MQ== */ + node_id: string; + /** + * Format: uri + * @example https://github.com/octocat/Hello-World/pull/1347 + */ + html_url: string; + /** + * Format: uri + * @example https://github.com/octocat/Hello-World/pull/1347.diff + */ + diff_url: string; + /** + * Format: uri + * @example https://github.com/octocat/Hello-World/pull/1347.patch + */ + patch_url: string; + /** + * Format: uri + * @example https://api.github.com/repos/octocat/Hello-World/issues/1347 + */ + issue_url: string; + /** + * Format: uri + * @example https://api.github.com/repos/octocat/Hello-World/pulls/1347/commits + */ + commits_url: string; + /** + * Format: uri + * @example https://api.github.com/repos/octocat/Hello-World/pulls/1347/comments + */ + review_comments_url: string; + /** @example https://api.github.com/repos/octocat/Hello-World/pulls/comments{/number} */ + review_comment_url: string; + /** + * Format: uri + * @example https://api.github.com/repos/octocat/Hello-World/issues/1347/comments + */ + comments_url: string; + /** + * Format: uri + * @example https://api.github.com/repos/octocat/Hello-World/statuses/6dcb09b5b57875f334f61aebed695e2e4193db5e + */ + statuses_url: string; + /** @example 1347 */ + number: number; + /** @example open */ + state: string; + /** @example true */ + locked: boolean; + /** @example new-feature */ + title: string; + user: components["schemas"]["nullable-simple-user"]; + /** @example Please pull these awesome changes */ + body: string | null; + labels: { + /** Format: int64 */ + id: number; + node_id: string; + url: string; + name: string; + description: string; + color: string; + default: boolean; + }[]; + milestone: components["schemas"]["nullable-milestone"]; + /** @example too heated */ + active_lock_reason?: string | null; + /** + * Format: date-time + * @example 2011-01-26T19:01:12Z + */ + created_at: string; + /** + * Format: date-time + * @example 2011-01-26T19:01:12Z + */ + updated_at: string; + /** + * Format: date-time + * @example 2011-01-26T19:01:12Z + */ + closed_at: string | null; + /** + * Format: date-time + * @example 2011-01-26T19:01:12Z + */ + merged_at: string | null; + /** @example e5bd3914e2e596debea16f433f57875b5b90bcd6 */ + merge_commit_sha: string | null; + assignee: components["schemas"]["nullable-simple-user"]; + assignees?: components["schemas"]["simple-user"][] | null; + requested_reviewers?: components["schemas"]["simple-user"][] | null; + requested_teams?: components["schemas"]["team"][] | null; + head: { + label: string; + ref: string; + repo: components["schemas"]["repository"]; + sha: string; + user: components["schemas"]["nullable-simple-user"]; + }; + base: { + label: string; + ref: string; + repo: components["schemas"]["repository"]; + sha: string; + user: components["schemas"]["nullable-simple-user"]; + }; + _links: { + comments: components["schemas"]["link"]; + commits: components["schemas"]["link"]; + statuses: components["schemas"]["link"]; + html: components["schemas"]["link"]; + issue: components["schemas"]["link"]; + review_comments: components["schemas"]["link"]; + review_comment: components["schemas"]["link"]; + self: components["schemas"]["link"]; + }; + author_association: components["schemas"]["author-association"]; + auto_merge: components["schemas"]["auto-merge"]; + /** + * @description Indicates whether or not the pull request is a draft. + * @example false + */ + draft?: boolean; + }; + /** Simple Commit Status */ + "simple-commit-status": { + description: string | null; + id: number; + node_id: string; + state: string; + context: string; + /** Format: uri */ + target_url: string; + required?: boolean | null; + /** Format: uri */ + avatar_url: string | null; + /** Format: uri */ + url: string; + /** Format: date-time */ + created_at: string; + /** Format: date-time */ + updated_at: string; + }; + /** + * Combined Commit Status + * @description Combined Commit Status + */ + "combined-commit-status": { + state: string; + statuses: components["schemas"]["simple-commit-status"][]; + sha: string; + total_count: number; + repository: components["schemas"]["minimal-repository"]; + /** Format: uri */ + commit_url: string; + /** Format: uri */ + url: string; + }; + /** + * Status + * @description The status of a commit. + */ + status: { + url: string; + avatar_url: string | null; + id: number; + node_id: string; + state: string; + description: string; + target_url: string; + context: string; + created_at: string; + updated_at: string; + creator: components["schemas"]["nullable-simple-user"]; + }; + /** + * Code Of Conduct Simple + * @description Code of Conduct Simple + */ + "nullable-code-of-conduct-simple": { + /** + * Format: uri + * @example https://api.github.com/repos/github/docs/community/code_of_conduct + */ + url: string; + /** @example citizen_code_of_conduct */ + key: string; + /** @example Citizen Code of Conduct */ + name: string; + /** + * Format: uri + * @example https://github.com/github/docs/blob/main/CODE_OF_CONDUCT.md + */ + html_url: string | null; + } | null; + /** Community Health File */ + "nullable-community-health-file": { + /** Format: uri */ + url: string; + /** Format: uri */ + html_url: string; + } | null; + /** + * Community Profile + * @description Community Profile + */ + "community-profile": { + /** @example 100 */ + health_percentage: number; + /** @example My first repository on GitHub! */ + description: string | null; + /** @example example.com */ + documentation: string | null; + files: { + code_of_conduct: components["schemas"]["nullable-code-of-conduct-simple"]; + code_of_conduct_file: components["schemas"]["nullable-community-health-file"]; + license: components["schemas"]["nullable-license-simple"]; + contributing: components["schemas"]["nullable-community-health-file"]; + readme: components["schemas"]["nullable-community-health-file"]; + issue_template: components["schemas"]["nullable-community-health-file"]; + pull_request_template: components["schemas"]["nullable-community-health-file"]; + }; + /** + * Format: date-time + * @example 2017-02-28T19:09:29Z + */ + updated_at: string | null; + /** @example true */ + content_reports_enabled?: boolean; + }; + /** + * Commit Comparison + * @description Commit Comparison + */ + "commit-comparison": { + /** + * Format: uri + * @example https://api.github.com/repos/octocat/Hello-World/compare/master...topic + */ + url: string; + /** + * Format: uri + * @example https://github.com/octocat/Hello-World/compare/master...topic + */ + html_url: string; + /** + * Format: uri + * @example https://github.com/octocat/Hello-World/compare/octocat:bbcd538c8e72b8c175046e27cc8f907076331401...octocat:0328041d1152db8ae77652d1618a02e57f745f17 + */ + permalink_url: string; + /** + * Format: uri + * @example https://github.com/octocat/Hello-World/compare/master...topic.diff + */ + diff_url: string; + /** + * Format: uri + * @example https://github.com/octocat/Hello-World/compare/master...topic.patch + */ + patch_url: string; + base_commit: components["schemas"]["commit"]; + merge_base_commit: components["schemas"]["commit"]; + /** + * @example ahead + * @enum {string} + */ + status: "diverged" | "ahead" | "behind" | "identical"; + /** @example 4 */ + ahead_by: number; + /** @example 5 */ + behind_by: number; + /** @example 6 */ + total_commits: number; + commits: components["schemas"]["commit"][]; + files?: components["schemas"]["diff-entry"][]; + }; + /** + * Content Tree + * @description Content Tree + */ + "content-tree": { + type: string; + size: number; + name: string; + path: string; + sha: string; + /** Format: uri */ + url: string; + /** Format: uri */ + git_url: string | null; + /** Format: uri */ + html_url: string | null; + /** Format: uri */ + download_url: string | null; + entries?: { + type: string; + size: number; + name: string; + path: string; + content?: string; + sha: string; + /** Format: uri */ + url: string; + /** Format: uri */ + git_url: string | null; + /** Format: uri */ + html_url: string | null; + /** Format: uri */ + download_url: string | null; + _links: { + /** Format: uri */ + git: string | null; + /** Format: uri */ + html: string | null; + /** Format: uri */ + self: string; + }; + }[]; + _links: { + /** Format: uri */ + git: string | null; + /** Format: uri */ + html: string | null; + /** Format: uri */ + self: string; + }; + } & { + content: unknown; + encoding: unknown; + }; + /** + * Content Directory + * @description A list of directory items + */ + "content-directory": { + type: string; + size: number; + name: string; + path: string; + content?: string; + sha: string; + /** Format: uri */ + url: string; + /** Format: uri */ + git_url: string | null; + /** Format: uri */ + html_url: string | null; + /** Format: uri */ + download_url: string | null; + _links: { + /** Format: uri */ + git: string | null; + /** Format: uri */ + html: string | null; + /** Format: uri */ + self: string; + }; + }[]; + /** + * Content File + * @description Content File + */ + "content-file": { + type: string; + encoding: string; + size: number; + name: string; + path: string; + content: string; + sha: string; + /** Format: uri */ + url: string; + /** Format: uri */ + git_url: string | null; + /** Format: uri */ + html_url: string | null; + /** Format: uri */ + download_url: string | null; + _links: { + /** Format: uri */ + git: string | null; + /** Format: uri */ + html: string | null; + /** Format: uri */ + self: string; + }; + /** @example "actual/actual.md" */ + target?: string; + /** @example "git://example.com/defunkt/dotjs.git" */ + submodule_git_url?: string; + }; + /** + * Symlink Content + * @description An object describing a symlink + */ + "content-symlink": { + type: string; + target: string; + size: number; + name: string; + path: string; + sha: string; + /** Format: uri */ + url: string; + /** Format: uri */ + git_url: string | null; + /** Format: uri */ + html_url: string | null; + /** Format: uri */ + download_url: string | null; + _links: { + /** Format: uri */ + git: string | null; + /** Format: uri */ + html: string | null; + /** Format: uri */ + self: string; + }; + }; + /** + * Symlink Content + * @description An object describing a symlink + */ + "content-submodule": { + type: string; + /** Format: uri */ + submodule_git_url: string; + size: number; + name: string; + path: string; + sha: string; + /** Format: uri */ + url: string; + /** Format: uri */ + git_url: string | null; + /** Format: uri */ + html_url: string | null; + /** Format: uri */ + download_url: string | null; + _links: { + /** Format: uri */ + git: string | null; + /** Format: uri */ + html: string | null; + /** Format: uri */ + self: string; + }; + }; + /** + * File Commit + * @description File Commit + */ + "file-commit": { + content: { + name?: string; + path?: string; + sha?: string; + size?: number; + url?: string; + html_url?: string; + git_url?: string; + download_url?: string; + type?: string; + _links?: { + self?: string; + git?: string; + html?: string; + }; + } | null; + commit: { + sha?: string; + node_id?: string; + url?: string; + html_url?: string; + author?: { + date?: string; + name?: string; + email?: string; + }; + committer?: { + date?: string; + name?: string; + email?: string; + }; + message?: string; + tree?: { + url?: string; + sha?: string; + }; + parents?: { + url?: string; + html_url?: string; + sha?: string; + }[]; + verification?: { + verified?: boolean; + reason?: string; + signature?: string | null; + payload?: string | null; + }; + }; + }; + /** + * Contributor + * @description Contributor + */ + contributor: { + login?: string; + id?: number; + node_id?: string; + /** Format: uri */ + avatar_url?: string; + gravatar_id?: string | null; + /** Format: uri */ + url?: string; + /** Format: uri */ + html_url?: string; + /** Format: uri */ + followers_url?: string; + following_url?: string; + gists_url?: string; + starred_url?: string; + /** Format: uri */ + subscriptions_url?: string; + /** Format: uri */ + organizations_url?: string; + /** Format: uri */ + repos_url?: string; + events_url?: string; + /** Format: uri */ + received_events_url?: string; + type: string; + site_admin?: boolean; + contributions: number; + email?: string; + name?: string; + }; + /** + * Dependabot Secret + * @description Set secrets for Dependabot. + */ + "dependabot-secret": { + /** + * @description The name of the secret. + * @example MY_ARTIFACTORY_PASSWORD + */ + name: string; + /** Format: date-time */ + created_at: string; + /** Format: date-time */ + updated_at: string; + }; + /** + * Dependency Graph Diff + * @description A diff of the dependencies between two commits. + */ + "dependency-graph-diff": { + /** @enum {string} */ + change_type: "added" | "removed"; + /** @example path/to/package-lock.json */ + manifest: string; + /** @example npm */ + ecosystem: string; + /** @example @actions/core */ + name: string; + /** @example 1.0.0 */ + version: string; + /** @example pkg:/npm/%40actions/core@1.1.0 */ + package_url: string | null; + /** @example MIT */ + license: string | null; + /** @example https://github.com/github/actions */ + source_repository_url: string | null; + vulnerabilities: { + /** @example critical */ + severity: string; + /** @example GHSA-rf4j-j272-fj86 */ + advisory_ghsa_id: string; + /** @example A summary of the advisory. */ + advisory_summary: string; + /** @example https://github.com/advisories/GHSA-rf4j-j272-fj86 */ + advisory_url: string; + }[]; + }[]; + /** + * metadata + * @description User-defined metadata to store domain-specific information limited to 8 keys with scalar values. + */ + metadata: { + [key: string]: Partial & Partial & Partial; + }; + /** + * Dependency + * @description A single package dependency. + */ + dependency: { + /** + * @description Package-url (PURL) of dependency. See https://github.com/package-url/purl-spec for more details. + * @example pkg:/npm/%40actions/http-client@1.0.11 + */ + package_url?: string; + metadata?: components["schemas"]["metadata"]; + /** + * @description A notation of whether a dependency is requested directly by this manifest or is a dependency of another dependency. + * @example direct + * @enum {string} + */ + relationship?: "direct" | "indirect"; + /** + * @description A notation of whether the dependency is required for the primary build artifact (runtime) or is only used for development. Future versions of this specification may allow for more granular scopes. + * @example runtime + * @enum {string} + */ + scope?: "runtime" | "development"; + /** + * @description Array of package-url (PURLs) of direct child dependencies. + * @example @actions/http-client + */ + dependencies?: string[]; + }; + /** + * manifest + * @description A collection of related dependencies declared in a file or representing a logical group of dependencies. + */ + manifest: { + /** + * @description The name of the manifest. + * @example package-lock.json + */ + name: string; + file?: { + /** + * @description The path of the manifest file relative to the root of the Git repository. + * @example /src/build/package-lock.json + */ + source_location?: string; + }; + metadata?: components["schemas"]["metadata"]; + resolved?: { [key: string]: components["schemas"]["dependency"] }; + }; + /** + * snapshot + * @description Create a new snapshot of a repository's dependencies. + */ + snapshot: { + /** @description The version of the repository snapshot submission. */ + version: number; + job: { + /** + * @description The external ID of the job. + * @example 5622a2b0-63f6-4732-8c34-a1ab27e102a11 + */ + id: string; + /** + * @description Correlator provides a key that is used to group snapshots submitted over time. Only the "latest" submitted snapshot for a given combination of `job.correlator` and `detector.name` will be considered when calculating a repository's current dependencies. Correlator should be as unique as it takes to distinguish all detection runs for a given "wave" of CI workflow you run. If you're using GitHub Actions, a good default value for this could be the environment variables GITHUB_WORKFLOW and GITHUB_JOB concatenated together. If you're using a build matrix, then you'll also need to add additional key(s) to distinguish between each submission inside a matrix variation. + * @example yourworkflowname_yourjobname + */ + correlator: string; + /** + * @description The url for the job. + * @example http://example.com/build + */ + html_url?: string; + }; + /** + * @description The commit SHA associated with this dependency snapshot. + * @example ddc951f4b1293222421f2c8df679786153acf689 + */ + sha: string; + /** + * @description The repository branch that triggered this snapshot. + * @example refs/heads/main + */ + ref: string; + /** @description A description of the detector used. */ + detector: { + /** + * @description The name of the detector used. + * @example docker buildtime detector + */ + name: string; + /** + * @description The version of the detector used. + * @example 1.0.0 + */ + version: string; + /** + * @description The url of the detector used. + * @example http://example.com/docker-buildtimer-detector + */ + url: string; + }; + metadata?: components["schemas"]["metadata"]; + /** @description A collection of package manifests */ + manifests?: { [key: string]: components["schemas"]["manifest"] }; + /** + * Format: date-time + * @description The time at which the snapshot was scanned. + * @example 2020-06-13T14:52:50-05:00 + */ + scanned: string; + }; + /** + * Deployment Status + * @description The status of a deployment. + */ + "deployment-status": { + /** + * Format: uri + * @example https://api.github.com/repos/octocat/example/deployments/42/statuses/1 + */ + url: string; + /** @example 1 */ + id: number; + /** @example MDE2OkRlcGxveW1lbnRTdGF0dXMx */ + node_id: string; + /** + * @description The state of the status. + * @example success + * @enum {string} + */ + state: + | "error" + | "failure" + | "inactive" + | "pending" + | "success" + | "queued" + | "in_progress"; + creator: components["schemas"]["nullable-simple-user"]; + /** + * @description A short description of the status. + * @default + * @example Deployment finished successfully. + */ + description: string; + /** + * @description The environment of the deployment that the status is for. + * @default + * @example production + */ + environment?: string; + /** + * Format: uri + * @description Deprecated: the URL to associate with this status. + * @default + * @example https://example.com/deployment/42/output + */ + target_url: string; + /** + * Format: date-time + * @example 2012-07-20T01:19:13Z + */ + created_at: string; + /** + * Format: date-time + * @example 2012-07-20T01:19:13Z + */ + updated_at: string; + /** + * Format: uri + * @example https://api.github.com/repos/octocat/example/deployments/42 + */ + deployment_url: string; + /** + * Format: uri + * @example https://api.github.com/repos/octocat/example + */ + repository_url: string; + /** + * Format: uri + * @description The URL for accessing your environment. + * @default + * @example https://staging.example.com/ + */ + environment_url?: string; + /** + * Format: uri + * @description The URL to associate with this status. + * @default + * @example https://example.com/deployment/42/output + */ + log_url?: string; + performed_via_github_app?: components["schemas"]["nullable-integration"]; + }; + /** + * @description The amount of time to delay a job after the job is initially triggered. The time (in minutes) must be an integer between 0 and 43,200 (30 days). + * @example 30 + */ + "wait-timer": number; + /** @description The type of deployment branch policy for this environment. To allow all branches to deploy, set to `null`. */ + "deployment-branch-policy": { + /** @description Whether only branches with branch protection rules can deploy to this environment. If `protected_branches` is `true`, `custom_branch_policies` must be `false`; if `protected_branches` is `false`, `custom_branch_policies` must be `true`. */ + protected_branches: boolean; + /** @description Whether only branches that match the specified name patterns can deploy to this environment. If `custom_branch_policies` is `true`, `protected_branches` must be `false`; if `custom_branch_policies` is `false`, `protected_branches` must be `true`. */ + custom_branch_policies: boolean; + } | null; + /** + * Environment + * @description Details of a deployment environment + */ + environment: { + /** + * @description The id of the environment. + * @example 56780428 + */ + id: number; + /** @example MDExOkVudmlyb25tZW50NTY3ODA0Mjg= */ + node_id: string; + /** + * @description The name of the environment. + * @example staging + */ + name: string; + /** @example https://api.github.com/repos/github/hello-world/environments/staging */ + url: string; + /** @example https://github.com/github/hello-world/deployments/activity_log?environments_filter=staging */ + html_url: string; + /** + * Format: date-time + * @description The time that the environment was created, in ISO 8601 format. + * @example 2020-11-23T22:00:40Z + */ + created_at: string; + /** + * Format: date-time + * @description The time that the environment was last updated, in ISO 8601 format. + * @example 2020-11-23T22:00:40Z + */ + updated_at: string; + protection_rules?: (Partial<{ + /** @example 3515 */ + id: number; + /** @example MDQ6R2F0ZTM1MTU= */ + node_id: string; + /** @example wait_timer */ + type: string; + wait_timer?: components["schemas"]["wait-timer"]; + }> & + Partial<{ + /** @example 3755 */ + id: number; + /** @example MDQ6R2F0ZTM3NTU= */ + node_id: string; + /** @example required_reviewers */ + type: string; + /** @description The people or teams that may approve jobs that reference the environment. You can list up to six users or teams as reviewers. The reviewers must have at least read access to the repository. Only one of the required reviewers needs to approve the job for it to proceed. */ + reviewers?: { + type?: components["schemas"]["deployment-reviewer-type"]; + reviewer?: Partial & + Partial; + }[]; + }> & + Partial<{ + /** @example 3515 */ + id: number; + /** @example MDQ6R2F0ZTM1MTU= */ + node_id: string; + /** @example branch_policy */ + type: string; + }>)[]; + deployment_branch_policy?: components["schemas"]["deployment-branch-policy"]; + }; + /** + * Short Blob + * @description Short Blob + */ + "short-blob": { + url: string; + sha: string; + }; + /** + * Blob + * @description Blob + */ + blob: { + content: string; + encoding: string; + /** Format: uri */ + url: string; + sha: string; + size: number | null; + node_id: string; + highlighted_content?: string; + }; + /** + * Git Commit + * @description Low-level Git commit operations within a repository + */ + "git-commit": { + /** + * @description SHA for the commit + * @example 7638417db6d59f3c431d3e1f261cc637155684cd + */ + sha: string; + node_id: string; + /** Format: uri */ + url: string; + /** @description Identifying information for the git-user */ + author: { + /** + * Format: date-time + * @description Timestamp of the commit + * @example 2014-08-09T08:02:04+12:00 + */ + date: string; + /** + * @description Git email address of the user + * @example monalisa.octocat@example.com + */ + email: string; + /** + * @description Name of the git user + * @example Monalisa Octocat + */ + name: string; + }; + /** @description Identifying information for the git-user */ + committer: { + /** + * Format: date-time + * @description Timestamp of the commit + * @example 2014-08-09T08:02:04+12:00 + */ + date: string; + /** + * @description Git email address of the user + * @example monalisa.octocat@example.com + */ + email: string; + /** + * @description Name of the git user + * @example Monalisa Octocat + */ + name: string; + }; + /** + * @description Message describing the purpose of the commit + * @example Fix #42 + */ + message: string; + tree: { + /** + * @description SHA for the commit + * @example 7638417db6d59f3c431d3e1f261cc637155684cd + */ + sha: string; + /** Format: uri */ + url: string; + }; + parents: { + /** + * @description SHA for the commit + * @example 7638417db6d59f3c431d3e1f261cc637155684cd + */ + sha: string; + /** Format: uri */ + url: string; + /** Format: uri */ + html_url: string; + }[]; + verification: { + verified: boolean; + reason: string; + signature: string | null; + payload: string | null; + }; + /** Format: uri */ + html_url: string; + }; + /** + * Git Reference + * @description Git references within a repository + */ + "git-ref": { + ref: string; + node_id: string; + /** Format: uri */ + url: string; + object: { + type: string; + /** + * @description SHA for the reference + * @example 7638417db6d59f3c431d3e1f261cc637155684cd + */ + sha: string; + /** Format: uri */ + url: string; + }; + }; + /** + * Git Tag + * @description Metadata for a Git tag + */ + "git-tag": { + /** @example MDM6VGFnOTQwYmQzMzYyNDhlZmFlMGY5ZWU1YmM3YjJkNWM5ODU4ODdiMTZhYw== */ + node_id: string; + /** + * @description Name of the tag + * @example v0.0.1 + */ + tag: string; + /** @example 940bd336248efae0f9ee5bc7b2d5c985887b16ac */ + sha: string; + /** + * Format: uri + * @description URL for the tag + * @example https://api.github.com/repositories/42/git/tags/940bd336248efae0f9ee5bc7b2d5c985887b16ac + */ + url: string; + /** + * @description Message describing the purpose of the tag + * @example Initial public release + */ + message: string; + tagger: { + date: string; + email: string; + name: string; + }; + object: { + sha: string; + type: string; + /** Format: uri */ + url: string; + }; + verification?: components["schemas"]["verification"]; + }; + /** + * Git Tree + * @description The hierarchy between files in a Git repository. + */ + "git-tree": { + sha: string; + /** Format: uri */ + url: string; + truncated: boolean; + /** + * @description Objects specifying a tree structure + * @example [ + * { + * "path": "file.rb", + * "mode": "100644", + * "type": "blob", + * "size": 30, + * "sha": "44b4fc6d56897b048c772eb4087f854f46256132", + * "url": "https://api.github.com/repos/octocat/Hello-World/git/blobs/44b4fc6d56897b048c772eb4087f854f46256132", + * "properties": { + * "path": { + * "type": "string" + * }, + * "mode": { + * "type": "string" + * }, + * "type": { + * "type": "string" + * }, + * "size": { + * "type": "integer" + * }, + * "sha": { + * "type": "string" + * }, + * "url": { + * "type": "string" + * } + * }, + * "required": [ + * "path", + * "mode", + * "type", + * "sha", + * "url", + * "size" + * ] + * } + * ] + */ + tree: { + /** @example test/file.rb */ + path?: string; + /** @example 040000 */ + mode?: string; + /** @example tree */ + type?: string; + /** @example 23f6827669e43831def8a7ad935069c8bd418261 */ + sha?: string; + /** @example 12 */ + size?: number; + /** @example https://api.github.com/repos/owner-482f3203ecf01f67e9deb18e/BBB_Private_Repo/git/blobs/23f6827669e43831def8a7ad935069c8bd418261 */ + url?: string; + }[]; + }; + /** Hook Response */ + "hook-response": { + code: number | null; + status: string | null; + message: string | null; + }; + /** + * Webhook + * @description Webhooks for repositories. + */ + hook: { + type: string; + /** + * @description Unique identifier of the webhook. + * @example 42 + */ + id: number; + /** + * @description The name of a valid service, use 'web' for a webhook. + * @example web + */ + name: string; + /** + * @description Determines whether the hook is actually triggered on pushes. + * @example true + */ + active: boolean; + /** + * @description Determines what events the hook is triggered for. Default: ['push']. + * @example [ + * "push", + * "pull_request" + * ] + */ + events: string[]; + config: { + /** @example "foo@bar.com" */ + email?: string; + /** @example "foo" */ + password?: string; + /** @example "roomer" */ + room?: string; + /** @example "foo" */ + subdomain?: string; + url?: components["schemas"]["webhook-config-url"]; + insecure_ssl?: components["schemas"]["webhook-config-insecure-ssl"]; + content_type?: components["schemas"]["webhook-config-content-type"]; + /** @example "sha256" */ + digest?: string; + secret?: components["schemas"]["webhook-config-secret"]; + /** @example "abc" */ + token?: string; + }; + /** + * Format: date-time + * @example 2011-09-06T20:39:23Z + */ + updated_at: string; + /** + * Format: date-time + * @example 2011-09-06T17:26:27Z + */ + created_at: string; + /** + * Format: uri + * @example https://api.github.com/repos/octocat/Hello-World/hooks/1 + */ + url: string; + /** + * Format: uri + * @example https://api.github.com/repos/octocat/Hello-World/hooks/1/test + */ + test_url: string; + /** + * Format: uri + * @example https://api.github.com/repos/octocat/Hello-World/hooks/1/pings + */ + ping_url: string; + /** + * Format: uri + * @example https://api.github.com/repos/octocat/Hello-World/hooks/1/deliveries + */ + deliveries_url?: string; + last_response: components["schemas"]["hook-response"]; + }; + /** + * Import + * @description A repository import from an external source. + */ + import: { + vcs: string | null; + use_lfs?: boolean; + /** @description The URL of the originating repository. */ + vcs_url: string; + svc_root?: string; + tfvc_project?: string; + /** @enum {string} */ + status: + | "auth" + | "error" + | "none" + | "detecting" + | "choose" + | "auth_failed" + | "importing" + | "mapping" + | "waiting_to_push" + | "pushing" + | "complete" + | "setup" + | "unknown" + | "detection_found_multiple" + | "detection_found_nothing" + | "detection_needs_auth"; + status_text?: string | null; + failed_step?: string | null; + error_message?: string | null; + import_percent?: number | null; + commit_count?: number | null; + push_percent?: number | null; + has_large_files?: boolean; + large_files_size?: number; + large_files_count?: number; + project_choices?: { + vcs?: string; + tfvc_project?: string; + human_name?: string; + }[]; + message?: string; + authors_count?: number | null; + /** Format: uri */ + url: string; + /** Format: uri */ + html_url: string; + /** Format: uri */ + authors_url: string; + /** Format: uri */ + repository_url: string; + svn_root?: string; + }; + /** + * Porter Author + * @description Porter Author + */ + "porter-author": { + id: number; + remote_id: string; + remote_name: string; + email: string; + name: string; + /** Format: uri */ + url: string; + /** Format: uri */ + import_url: string; + }; + /** + * Porter Large File + * @description Porter Large File + */ + "porter-large-file": { + ref_name: string; + path: string; + oid: string; + size: number; + }; + /** + * Issue + * @description Issues are a great way to keep track of tasks, enhancements, and bugs for your projects. + */ + "nullable-issue": { + id: number; + node_id: string; + /** + * Format: uri + * @description URL for the issue + * @example https://api.github.com/repositories/42/issues/1 + */ + url: string; + /** Format: uri */ + repository_url: string; + labels_url: string; + /** Format: uri */ + comments_url: string; + /** Format: uri */ + events_url: string; + /** Format: uri */ + html_url: string; + /** + * @description Number uniquely identifying the issue within its repository + * @example 42 + */ + number: number; + /** + * @description State of the issue; either 'open' or 'closed' + * @example open + */ + state: string; + /** + * @description The reason for the current state + * @example not_planned + */ + state_reason?: string | null; + /** + * @description Title of the issue + * @example Widget creation fails in Safari on OS X 10.8 + */ + title: string; + /** + * @description Contents of the issue + * @example It looks like the new widget form is broken on Safari. When I try and create the widget, Safari crashes. This is reproducible on 10.8, but not 10.9. Maybe a browser bug? + */ + body?: string | null; + user: components["schemas"]["nullable-simple-user"]; + /** + * @description Labels to associate with this issue; pass one or more label names to replace the set of labels on this issue; send an empty array to clear all labels from the issue; note that the labels are silently dropped for users without push access to the repository + * @example [ + * "bug", + * "registration" + * ] + */ + labels: ( + | string + | { + /** Format: int64 */ + id?: number; + node_id?: string; + /** Format: uri */ + url?: string; + name?: string; + description?: string | null; + color?: string | null; + default?: boolean; + } + )[]; + assignee: components["schemas"]["nullable-simple-user"]; + assignees?: components["schemas"]["simple-user"][] | null; + milestone: components["schemas"]["nullable-milestone"]; + locked: boolean; + active_lock_reason?: string | null; + comments: number; + pull_request?: { + /** Format: date-time */ + merged_at?: string | null; + /** Format: uri */ + diff_url: string | null; + /** Format: uri */ + html_url: string | null; + /** Format: uri */ + patch_url: string | null; + /** Format: uri */ + url: string | null; + }; + /** Format: date-time */ + closed_at: string | null; + /** Format: date-time */ + created_at: string; + /** Format: date-time */ + updated_at: string; + draft?: boolean; + closed_by?: components["schemas"]["nullable-simple-user"]; + body_html?: string; + body_text?: string; + /** Format: uri */ + timeline_url?: string; + repository?: components["schemas"]["repository"]; + performed_via_github_app?: components["schemas"]["nullable-integration"]; + author_association: components["schemas"]["author-association"]; + reactions?: components["schemas"]["reaction-rollup"]; + } | null; + /** + * Issue Event Label + * @description Issue Event Label + */ + "issue-event-label": { + name: string | null; + color: string | null; + }; + /** Issue Event Dismissed Review */ + "issue-event-dismissed-review": { + state: string; + review_id: number; + dismissal_message: string | null; + dismissal_commit_id?: string | null; + }; + /** + * Issue Event Milestone + * @description Issue Event Milestone + */ + "issue-event-milestone": { + title: string; + }; + /** + * Issue Event Project Card + * @description Issue Event Project Card + */ + "issue-event-project-card": { + /** Format: uri */ + url: string; + id: number; + /** Format: uri */ + project_url: string; + project_id: number; + column_name: string; + previous_column_name?: string; + }; + /** + * Issue Event Rename + * @description Issue Event Rename + */ + "issue-event-rename": { + from: string; + to: string; + }; + /** + * Issue Event + * @description Issue Event + */ + "issue-event": { + /** @example 1 */ + id: number; + /** @example MDEwOklzc3VlRXZlbnQx */ + node_id: string; + /** + * Format: uri + * @example https://api.github.com/repos/octocat/Hello-World/issues/events/1 + */ + url: string; + actor: components["schemas"]["nullable-simple-user"]; + /** @example closed */ + event: string; + /** @example 6dcb09b5b57875f334f61aebed695e2e4193db5e */ + commit_id: string | null; + /** @example https://api.github.com/repos/octocat/Hello-World/commits/6dcb09b5b57875f334f61aebed695e2e4193db5e */ + commit_url: string | null; + /** + * Format: date-time + * @example 2011-04-14T16:00:49Z + */ + created_at: string; + issue?: components["schemas"]["nullable-issue"]; + label?: components["schemas"]["issue-event-label"]; + assignee?: components["schemas"]["nullable-simple-user"]; + assigner?: components["schemas"]["nullable-simple-user"]; + review_requester?: components["schemas"]["nullable-simple-user"]; + requested_reviewer?: components["schemas"]["nullable-simple-user"]; + requested_team?: components["schemas"]["team"]; + dismissed_review?: components["schemas"]["issue-event-dismissed-review"]; + milestone?: components["schemas"]["issue-event-milestone"]; + project_card?: components["schemas"]["issue-event-project-card"]; + rename?: components["schemas"]["issue-event-rename"]; + author_association?: components["schemas"]["author-association"]; + lock_reason?: string | null; + performed_via_github_app?: components["schemas"]["nullable-integration"]; + }; + /** + * Labeled Issue Event + * @description Labeled Issue Event + */ + "labeled-issue-event": { + id: number; + node_id: string; + url: string; + actor: components["schemas"]["simple-user"]; + event: string; + commit_id: string | null; + commit_url: string | null; + created_at: string; + performed_via_github_app: components["schemas"]["nullable-integration"]; + label: { + name: string; + color: string; + }; + }; + /** + * Unlabeled Issue Event + * @description Unlabeled Issue Event + */ + "unlabeled-issue-event": { + id: number; + node_id: string; + url: string; + actor: components["schemas"]["simple-user"]; + event: string; + commit_id: string | null; + commit_url: string | null; + created_at: string; + performed_via_github_app: components["schemas"]["nullable-integration"]; + label: { + name: string; + color: string; + }; + }; + /** + * Assigned Issue Event + * @description Assigned Issue Event + */ + "assigned-issue-event": { + id: number; + node_id: string; + url: string; + actor: components["schemas"]["simple-user"]; + event: string; + commit_id: string | null; + commit_url: string | null; + created_at: string; + performed_via_github_app: components["schemas"]["integration"]; + assignee: components["schemas"]["simple-user"]; + assigner: components["schemas"]["simple-user"]; + }; + /** + * Unassigned Issue Event + * @description Unassigned Issue Event + */ + "unassigned-issue-event": { + id: number; + node_id: string; + url: string; + actor: components["schemas"]["simple-user"]; + event: string; + commit_id: string | null; + commit_url: string | null; + created_at: string; + performed_via_github_app: components["schemas"]["nullable-integration"]; + assignee: components["schemas"]["simple-user"]; + assigner: components["schemas"]["simple-user"]; + }; + /** + * Milestoned Issue Event + * @description Milestoned Issue Event + */ + "milestoned-issue-event": { + id: number; + node_id: string; + url: string; + actor: components["schemas"]["simple-user"]; + event: string; + commit_id: string | null; + commit_url: string | null; + created_at: string; + performed_via_github_app: components["schemas"]["nullable-integration"]; + milestone: { + title: string; + }; + }; + /** + * Demilestoned Issue Event + * @description Demilestoned Issue Event + */ + "demilestoned-issue-event": { + id: number; + node_id: string; + url: string; + actor: components["schemas"]["simple-user"]; + event: string; + commit_id: string | null; + commit_url: string | null; + created_at: string; + performed_via_github_app: components["schemas"]["nullable-integration"]; + milestone: { + title: string; + }; + }; + /** + * Renamed Issue Event + * @description Renamed Issue Event + */ + "renamed-issue-event": { + id: number; + node_id: string; + url: string; + actor: components["schemas"]["simple-user"]; + event: string; + commit_id: string | null; + commit_url: string | null; + created_at: string; + performed_via_github_app: components["schemas"]["nullable-integration"]; + rename: { + from: string; + to: string; + }; + }; + /** + * Review Requested Issue Event + * @description Review Requested Issue Event + */ + "review-requested-issue-event": { + id: number; + node_id: string; + url: string; + actor: components["schemas"]["simple-user"]; + event: string; + commit_id: string | null; + commit_url: string | null; + created_at: string; + performed_via_github_app: components["schemas"]["nullable-integration"]; + review_requester: components["schemas"]["simple-user"]; + requested_team?: components["schemas"]["team"]; + requested_reviewer?: components["schemas"]["simple-user"]; + }; + /** + * Review Request Removed Issue Event + * @description Review Request Removed Issue Event + */ + "review-request-removed-issue-event": { + id: number; + node_id: string; + url: string; + actor: components["schemas"]["simple-user"]; + event: string; + commit_id: string | null; + commit_url: string | null; + created_at: string; + performed_via_github_app: components["schemas"]["nullable-integration"]; + review_requester: components["schemas"]["simple-user"]; + requested_team?: components["schemas"]["team"]; + requested_reviewer?: components["schemas"]["simple-user"]; + }; + /** + * Review Dismissed Issue Event + * @description Review Dismissed Issue Event + */ + "review-dismissed-issue-event": { + id: number; + node_id: string; + url: string; + actor: components["schemas"]["simple-user"]; + event: string; + commit_id: string | null; + commit_url: string | null; + created_at: string; + performed_via_github_app: components["schemas"]["nullable-integration"]; + dismissed_review: { + state: string; + review_id: number; + dismissal_message: string | null; + dismissal_commit_id?: string; + }; + }; + /** + * Locked Issue Event + * @description Locked Issue Event + */ + "locked-issue-event": { + id: number; + node_id: string; + url: string; + actor: components["schemas"]["simple-user"]; + event: string; + commit_id: string | null; + commit_url: string | null; + created_at: string; + performed_via_github_app: components["schemas"]["nullable-integration"]; + /** @example "off-topic" */ + lock_reason: string | null; + }; + /** + * Added to Project Issue Event + * @description Added to Project Issue Event + */ + "added-to-project-issue-event": { + id: number; + node_id: string; + url: string; + actor: components["schemas"]["simple-user"]; + event: string; + commit_id: string | null; + commit_url: string | null; + created_at: string; + performed_via_github_app: components["schemas"]["nullable-integration"]; + project_card?: { + id: number; + /** Format: uri */ + url: string; + project_id: number; + /** Format: uri */ + project_url: string; + column_name: string; + previous_column_name?: string; + }; + }; + /** + * Moved Column in Project Issue Event + * @description Moved Column in Project Issue Event + */ + "moved-column-in-project-issue-event": { + id: number; + node_id: string; + url: string; + actor: components["schemas"]["simple-user"]; + event: string; + commit_id: string | null; + commit_url: string | null; + created_at: string; + performed_via_github_app: components["schemas"]["nullable-integration"]; + project_card?: { + id: number; + /** Format: uri */ + url: string; + project_id: number; + /** Format: uri */ + project_url: string; + column_name: string; + previous_column_name?: string; + }; + }; + /** + * Removed from Project Issue Event + * @description Removed from Project Issue Event + */ + "removed-from-project-issue-event": { + id: number; + node_id: string; + url: string; + actor: components["schemas"]["simple-user"]; + event: string; + commit_id: string | null; + commit_url: string | null; + created_at: string; + performed_via_github_app: components["schemas"]["nullable-integration"]; + project_card?: { + id: number; + /** Format: uri */ + url: string; + project_id: number; + /** Format: uri */ + project_url: string; + column_name: string; + previous_column_name?: string; + }; + }; + /** + * Converted Note to Issue Issue Event + * @description Converted Note to Issue Issue Event + */ + "converted-note-to-issue-issue-event": { + id: number; + node_id: string; + url: string; + actor: components["schemas"]["simple-user"]; + event: string; + commit_id: string | null; + commit_url: string | null; + created_at: string; + performed_via_github_app: components["schemas"]["integration"]; + project_card?: { + id: number; + /** Format: uri */ + url: string; + project_id: number; + /** Format: uri */ + project_url: string; + column_name: string; + previous_column_name?: string; + }; + }; + /** + * Issue Event for Issue + * @description Issue Event for Issue + */ + "issue-event-for-issue": Partial< + components["schemas"]["labeled-issue-event"] + > & + Partial & + Partial & + Partial & + Partial & + Partial & + Partial & + Partial & + Partial & + Partial & + Partial & + Partial & + Partial & + Partial & + Partial; + /** + * Label + * @description Color-coded labels help you categorize and filter your issues (just like labels in Gmail). + */ + label: { + /** + * Format: int64 + * @example 208045946 + */ + id: number; + /** @example MDU6TGFiZWwyMDgwNDU5NDY= */ + node_id: string; + /** + * Format: uri + * @description URL for the label + * @example https://api.github.com/repositories/42/labels/bug + */ + url: string; + /** + * @description The name of the label. + * @example bug + */ + name: string; + /** @example Something isn't working */ + description: string | null; + /** + * @description 6-character hex code, without the leading #, identifying the color + * @example FFFFFF + */ + color: string; + /** @example true */ + default: boolean; + }; + /** + * Timeline Comment Event + * @description Timeline Comment Event + */ + "timeline-comment-event": { + event: string; + actor: components["schemas"]["simple-user"]; + /** + * @description Unique identifier of the issue comment + * @example 42 + */ + id: number; + node_id: string; + /** + * Format: uri + * @description URL for the issue comment + * @example https://api.github.com/repositories/42/issues/comments/1 + */ + url: string; + /** + * @description Contents of the issue comment + * @example What version of Safari were you using when you observed this bug? + */ + body?: string; + body_text?: string; + body_html?: string; + /** Format: uri */ + html_url: string; + user: components["schemas"]["simple-user"]; + /** + * Format: date-time + * @example 2011-04-14T16:00:49Z + */ + created_at: string; + /** + * Format: date-time + * @example 2011-04-14T16:00:49Z + */ + updated_at: string; + /** Format: uri */ + issue_url: string; + author_association: components["schemas"]["author-association"]; + performed_via_github_app?: components["schemas"]["nullable-integration"]; + reactions?: components["schemas"]["reaction-rollup"]; + }; + /** + * Timeline Cross Referenced Event + * @description Timeline Cross Referenced Event + */ + "timeline-cross-referenced-event": { + event: string; + actor?: components["schemas"]["simple-user"]; + /** Format: date-time */ + created_at: string; + /** Format: date-time */ + updated_at: string; + source: { + type?: string; + issue?: components["schemas"]["issue"]; + }; + }; + /** + * Timeline Committed Event + * @description Timeline Committed Event + */ + "timeline-committed-event": { + event?: string; + /** + * @description SHA for the commit + * @example 7638417db6d59f3c431d3e1f261cc637155684cd + */ + sha: string; + node_id: string; + /** Format: uri */ + url: string; + /** @description Identifying information for the git-user */ + author: { + /** + * Format: date-time + * @description Timestamp of the commit + * @example 2014-08-09T08:02:04+12:00 + */ + date: string; + /** + * @description Git email address of the user + * @example monalisa.octocat@example.com + */ + email: string; + /** + * @description Name of the git user + * @example Monalisa Octocat + */ + name: string; + }; + /** @description Identifying information for the git-user */ + committer: { + /** + * Format: date-time + * @description Timestamp of the commit + * @example 2014-08-09T08:02:04+12:00 + */ + date: string; + /** + * @description Git email address of the user + * @example monalisa.octocat@example.com + */ + email: string; + /** + * @description Name of the git user + * @example Monalisa Octocat + */ + name: string; + }; + /** + * @description Message describing the purpose of the commit + * @example Fix #42 + */ + message: string; + tree: { + /** + * @description SHA for the commit + * @example 7638417db6d59f3c431d3e1f261cc637155684cd + */ + sha: string; + /** Format: uri */ + url: string; + }; + parents: { + /** + * @description SHA for the commit + * @example 7638417db6d59f3c431d3e1f261cc637155684cd + */ + sha: string; + /** Format: uri */ + url: string; + /** Format: uri */ + html_url: string; + }[]; + verification: { + verified: boolean; + reason: string; + signature: string | null; + payload: string | null; + }; + /** Format: uri */ + html_url: string; + }; + /** + * Timeline Reviewed Event + * @description Timeline Reviewed Event + */ + "timeline-reviewed-event": { + event: string; + /** + * @description Unique identifier of the review + * @example 42 + */ + id: number; + /** @example MDE3OlB1bGxSZXF1ZXN0UmV2aWV3ODA= */ + node_id: string; + user: components["schemas"]["simple-user"]; + /** + * @description The text of the review. + * @example This looks great. + */ + body: string | null; + /** @example CHANGES_REQUESTED */ + state: string; + /** + * Format: uri + * @example https://github.com/octocat/Hello-World/pull/12#pullrequestreview-80 + */ + html_url: string; + /** + * Format: uri + * @example https://api.github.com/repos/octocat/Hello-World/pulls/12 + */ + pull_request_url: string; + _links: { + html: { + href: string; + }; + pull_request: { + href: string; + }; + }; + /** Format: date-time */ + submitted_at?: string; + /** + * @description A commit SHA for the review. + * @example 54bb654c9e6025347f57900a4a5c2313a96b8035 + */ + commit_id: string; + body_html?: string; + body_text?: string; + author_association: components["schemas"]["author-association"]; + }; + /** + * Pull Request Review Comment + * @description Pull Request Review Comments are comments on a portion of the Pull Request's diff. + */ + "pull-request-review-comment": { + /** + * @description URL for the pull request review comment + * @example https://api.github.com/repos/octocat/Hello-World/pulls/comments/1 + */ + url: string; + /** + * @description The ID of the pull request review to which the comment belongs. + * @example 42 + */ + pull_request_review_id: number | null; + /** + * @description The ID of the pull request review comment. + * @example 1 + */ + id: number; + /** + * @description The node ID of the pull request review comment. + * @example MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDEw + */ + node_id: string; + /** + * @description The diff of the line that the comment refers to. + * @example @@ -16,33 +16,40 @@ public class Connection : IConnection... + */ + diff_hunk: string; + /** + * @description The relative path of the file to which the comment applies. + * @example config/database.yaml + */ + path: string; + /** + * @description The line index in the diff to which the comment applies. This field is deprecated; use `line` instead. + * @example 1 + */ + position: number; + /** + * @description The index of the original line in the diff to which the comment applies. This field is deprecated; use `original_line` instead. + * @example 4 + */ + original_position: number; + /** + * @description The SHA of the commit to which the comment applies. + * @example 6dcb09b5b57875f334f61aebed695e2e4193db5e + */ + commit_id: string; + /** + * @description The SHA of the original commit to which the comment applies. + * @example 9c48853fa3dc5c1c3d6f1f1cd1f2743e72652840 + */ + original_commit_id: string; + /** + * @description The comment ID to reply to. + * @example 8 + */ + in_reply_to_id?: number; + user: components["schemas"]["simple-user"]; + /** + * @description The text of the comment. + * @example We should probably include a check for null values here. + */ + body: string; + /** + * Format: date-time + * @example 2011-04-14T16:00:49Z + */ + created_at: string; + /** + * Format: date-time + * @example 2011-04-14T16:00:49Z + */ + updated_at: string; + /** + * Format: uri + * @description HTML URL for the pull request review comment. + * @example https://github.com/octocat/Hello-World/pull/1#discussion-diff-1 + */ + html_url: string; + /** + * Format: uri + * @description URL for the pull request that the review comment belongs to. + * @example https://api.github.com/repos/octocat/Hello-World/pulls/1 + */ + pull_request_url: string; + author_association: components["schemas"]["author-association"]; + _links: { + self: { + /** + * Format: uri + * @example https://api.github.com/repos/octocat/Hello-World/pulls/comments/1 + */ + href: string; + }; + html: { + /** + * Format: uri + * @example https://github.com/octocat/Hello-World/pull/1#discussion-diff-1 + */ + href: string; + }; + pull_request: { + /** + * Format: uri + * @example https://api.github.com/repos/octocat/Hello-World/pulls/1 + */ + href: string; + }; + }; + /** + * @description The first line of the range for a multi-line comment. + * @example 2 + */ + start_line?: number | null; + /** + * @description The first line of the range for a multi-line comment. + * @example 2 + */ + original_start_line?: number | null; + /** + * @description The side of the first line of the range for a multi-line comment. + * @default RIGHT + * @enum {string|null} + */ + start_side?: ("LEFT" | "RIGHT") | null; + /** + * @description The line of the blob to which the comment applies. The last line of the range for a multi-line comment + * @example 2 + */ + line?: number; + /** + * @description The line of the blob to which the comment applies. The last line of the range for a multi-line comment + * @example 2 + */ + original_line?: number; + /** + * @description The side of the diff to which the comment applies. The side of the last line of the range for a multi-line comment + * @default RIGHT + * @enum {string} + */ + side?: "LEFT" | "RIGHT"; + reactions?: components["schemas"]["reaction-rollup"]; + /** @example "

        comment body

        " */ + body_html?: string; + /** @example "comment body" */ + body_text?: string; + }; + /** + * Timeline Line Commented Event + * @description Timeline Line Commented Event + */ + "timeline-line-commented-event": { + event?: string; + node_id?: string; + comments?: components["schemas"]["pull-request-review-comment"][]; + }; + /** + * Timeline Commit Commented Event + * @description Timeline Commit Commented Event + */ + "timeline-commit-commented-event": { + event?: string; + node_id?: string; + commit_id?: string; + comments?: components["schemas"]["commit-comment"][]; + }; + /** + * Timeline Assigned Issue Event + * @description Timeline Assigned Issue Event + */ + "timeline-assigned-issue-event": { + id: number; + node_id: string; + url: string; + actor: components["schemas"]["simple-user"]; + event: string; + commit_id: string | null; + commit_url: string | null; + created_at: string; + performed_via_github_app: components["schemas"]["nullable-integration"]; + assignee: components["schemas"]["simple-user"]; + }; + /** + * Timeline Unassigned Issue Event + * @description Timeline Unassigned Issue Event + */ + "timeline-unassigned-issue-event": { + id: number; + node_id: string; + url: string; + actor: components["schemas"]["simple-user"]; + event: string; + commit_id: string | null; + commit_url: string | null; + created_at: string; + performed_via_github_app: components["schemas"]["nullable-integration"]; + assignee: components["schemas"]["simple-user"]; + }; + /** + * State Change Issue Event + * @description State Change Issue Event + */ + "state-change-issue-event": { + id: number; + node_id: string; + url: string; + actor: components["schemas"]["simple-user"]; + event: string; + commit_id: string | null; + commit_url: string | null; + created_at: string; + performed_via_github_app: components["schemas"]["nullable-integration"]; + state_reason?: string | null; + }; + /** + * Timeline Event + * @description Timeline Event + */ + "timeline-issue-events": Partial< + components["schemas"]["labeled-issue-event"] + > & + Partial & + Partial & + Partial & + Partial & + Partial & + Partial & + Partial & + Partial & + Partial & + Partial & + Partial & + Partial & + Partial & + Partial & + Partial & + Partial & + Partial & + Partial & + Partial & + Partial & + Partial; + /** + * Deploy Key + * @description An SSH key granting access to a single repository. + */ + "deploy-key": { + id: number; + key: string; + url: string; + title: string; + verified: boolean; + created_at: string; + read_only: boolean; + }; + /** + * Language + * @description Language + */ + language: { [key: string]: number }; + /** + * License Content + * @description License Content + */ + "license-content": { + name: string; + path: string; + sha: string; + size: number; + /** Format: uri */ + url: string; + /** Format: uri */ + html_url: string | null; + /** Format: uri */ + git_url: string | null; + /** Format: uri */ + download_url: string | null; + type: string; + content: string; + encoding: string; + _links: { + /** Format: uri */ + git: string | null; + /** Format: uri */ + html: string | null; + /** Format: uri */ + self: string; + }; + license: components["schemas"]["nullable-license-simple"]; + }; + /** + * Merged upstream + * @description Results of a successful merge upstream request + */ + "merged-upstream": { + message?: string; + /** @enum {string} */ + merge_type?: "merge" | "fast-forward" | "none"; + base_branch?: string; + }; + /** + * Milestone + * @description A collection of related issues and pull requests. + */ + milestone: { + /** + * Format: uri + * @example https://api.github.com/repos/octocat/Hello-World/milestones/1 + */ + url: string; + /** + * Format: uri + * @example https://github.com/octocat/Hello-World/milestones/v1.0 + */ + html_url: string; + /** + * Format: uri + * @example https://api.github.com/repos/octocat/Hello-World/milestones/1/labels + */ + labels_url: string; + /** @example 1002604 */ + id: number; + /** @example MDk6TWlsZXN0b25lMTAwMjYwNA== */ + node_id: string; + /** + * @description The number of the milestone. + * @example 42 + */ + number: number; + /** + * @description The state of the milestone. + * @default open + * @example open + * @enum {string} + */ + state: "open" | "closed"; + /** + * @description The title of the milestone. + * @example v1.0 + */ + title: string; + /** @example Tracking milestone for version 1.0 */ + description: string | null; + creator: components["schemas"]["nullable-simple-user"]; + /** @example 4 */ + open_issues: number; + /** @example 8 */ + closed_issues: number; + /** + * Format: date-time + * @example 2011-04-10T20:09:31Z + */ + created_at: string; + /** + * Format: date-time + * @example 2014-03-03T18:58:10Z + */ + updated_at: string; + /** + * Format: date-time + * @example 2013-02-12T13:22:01Z + */ + closed_at: string | null; + /** + * Format: date-time + * @example 2012-10-09T23:39:01Z + */ + due_on: string | null; + }; + /** Pages Source Hash */ + "pages-source-hash": { + branch: string; + path: string; + }; + /** Pages Https Certificate */ + "pages-https-certificate": { + /** + * @example approved + * @enum {string} + */ + state: + | "new" + | "authorization_created" + | "authorization_pending" + | "authorized" + | "authorization_revoked" + | "issued" + | "uploaded" + | "approved" + | "errored" + | "bad_authz" + | "destroy_pending" + | "dns_changed"; + /** @example Certificate is approved */ + description: string; + /** + * @description Array of the domain set and its alternate name (if it is configured) + * @example [ + * "example.com", + * "www.example.com" + * ] + */ + domains: string[]; + /** Format: date */ + expires_at?: string; + }; + /** + * GitHub Pages + * @description The configuration for GitHub Pages for a repository. + */ + page: { + /** + * Format: uri + * @description The API address for accessing this Page resource. + * @example https://api.github.com/repos/github/hello-world/pages + */ + url: string; + /** + * @description The status of the most recent build of the Page. + * @example built + * @enum {string|null} + */ + status: ("built" | "building" | "errored") | null; + /** + * @description The Pages site's custom domain + * @example example.com + */ + cname: string | null; + /** + * @description The state if the domain is verified + * @example pending + * @enum {string|null} + */ + protected_domain_state?: ("pending" | "verified" | "unverified") | null; + /** + * Format: date-time + * @description The timestamp when a pending domain becomes unverified. + */ + pending_domain_unverified_at?: string | null; + /** + * @description Whether the Page has a custom 404 page. + * @default false + * @example false + */ + custom_404: boolean; + /** + * Format: uri + * @description The web address the Page can be accessed from. + * @example https://example.com + */ + html_url?: string; + /** + * @description The process in which the Page will be built. + * @example legacy + * @enum {string|null} + */ + build_type?: ("legacy" | "workflow") | null; + source?: components["schemas"]["pages-source-hash"]; + /** + * @description Whether the GitHub Pages site is publicly visible. If set to `true`, the site is accessible to anyone on the internet. If set to `false`, the site will only be accessible to users who have at least `read` access to the repository that published the site. + * @example true + */ + public: boolean; + https_certificate?: components["schemas"]["pages-https-certificate"]; + /** + * @description Whether https is enabled on the domain + * @example true + */ + https_enforced?: boolean; + }; + /** + * Page Build + * @description Page Build + */ + "page-build": { + /** Format: uri */ + url: string; + status: string; + error: { + message: string | null; + }; + pusher: components["schemas"]["nullable-simple-user"]; + commit: string; + duration: number; + /** Format: date-time */ + created_at: string; + /** Format: date-time */ + updated_at: string; + }; + /** + * Page Build Status + * @description Page Build Status + */ + "page-build-status": { + /** + * Format: uri + * @example https://api.github.com/repos/github/hello-world/pages/builds/latest + */ + url: string; + /** @example queued */ + status: string; + }; + /** + * Pages Health Check Status + * @description Pages Health Check Status + */ + "pages-health-check": { + domain?: { + host?: string; + uri?: string; + nameservers?: string; + dns_resolves?: boolean; + is_proxied?: boolean | null; + is_cloudflare_ip?: boolean | null; + is_fastly_ip?: boolean | null; + is_old_ip_address?: boolean | null; + is_a_record?: boolean | null; + has_cname_record?: boolean | null; + has_mx_records_present?: boolean | null; + is_valid_domain?: boolean; + is_apex_domain?: boolean; + should_be_a_record?: boolean | null; + is_cname_to_github_user_domain?: boolean | null; + is_cname_to_pages_dot_github_dot_com?: boolean | null; + is_cname_to_fastly?: boolean | null; + is_pointed_to_github_pages_ip?: boolean | null; + is_non_github_pages_ip_present?: boolean | null; + is_pages_domain?: boolean; + is_served_by_pages?: boolean | null; + is_valid?: boolean; + reason?: string | null; + responds_to_https?: boolean; + enforces_https?: boolean; + https_error?: string | null; + is_https_eligible?: boolean | null; + caa_error?: string | null; + }; + alt_domain?: { + host?: string; + uri?: string; + nameservers?: string; + dns_resolves?: boolean; + is_proxied?: boolean | null; + is_cloudflare_ip?: boolean | null; + is_fastly_ip?: boolean | null; + is_old_ip_address?: boolean | null; + is_a_record?: boolean | null; + has_cname_record?: boolean | null; + has_mx_records_present?: boolean | null; + is_valid_domain?: boolean; + is_apex_domain?: boolean; + should_be_a_record?: boolean | null; + is_cname_to_github_user_domain?: boolean | null; + is_cname_to_pages_dot_github_dot_com?: boolean | null; + is_cname_to_fastly?: boolean | null; + is_pointed_to_github_pages_ip?: boolean | null; + is_non_github_pages_ip_present?: boolean | null; + is_pages_domain?: boolean; + is_served_by_pages?: boolean | null; + is_valid?: boolean; + reason?: string | null; + responds_to_https?: boolean; + enforces_https?: boolean; + https_error?: string | null; + is_https_eligible?: boolean | null; + caa_error?: string | null; + } | null; + }; + /** + * Team Simple + * @description Groups of organization members that gives permissions on specified repositories. + */ + "team-simple": { + /** + * @description Unique identifier of the team + * @example 1 + */ + id: number; + /** @example MDQ6VGVhbTE= */ + node_id: string; + /** + * Format: uri + * @description URL for the team + * @example https://api.github.com/organizations/1/team/1 + */ + url: string; + /** @example https://api.github.com/organizations/1/team/1/members{/member} */ + members_url: string; + /** + * @description Name of the team + * @example Justice League + */ + name: string; + /** + * @description Description of the team + * @example A great team. + */ + description: string | null; + /** + * @description Permission that the team will have for its repositories + * @example admin + */ + permission: string; + /** + * @description The level of privacy this team should have + * @example closed + */ + privacy?: string; + /** + * Format: uri + * @example https://github.com/orgs/rails/teams/core + */ + html_url: string; + /** + * Format: uri + * @example https://api.github.com/organizations/1/team/1/repos + */ + repositories_url: string; + /** @example justice-league */ + slug: string; + /** + * @description Distinguished Name (DN) that team maps to within LDAP environment + * @example uid=example,ou=users,dc=github,dc=com + */ + ldap_dn?: string; + }; + /** + * Pull Request + * @description Pull requests let you tell others about changes you've pushed to a repository on GitHub. Once a pull request is sent, interested parties can review the set of changes, discuss potential modifications, and even push follow-up commits if necessary. + */ + "pull-request": { + /** + * Format: uri + * @example https://api.github.com/repos/octocat/Hello-World/pulls/1347 + */ + url: string; + /** @example 1 */ + id: number; + /** @example MDExOlB1bGxSZXF1ZXN0MQ== */ + node_id: string; + /** + * Format: uri + * @example https://github.com/octocat/Hello-World/pull/1347 + */ + html_url: string; + /** + * Format: uri + * @example https://github.com/octocat/Hello-World/pull/1347.diff + */ + diff_url: string; + /** + * Format: uri + * @example https://github.com/octocat/Hello-World/pull/1347.patch + */ + patch_url: string; + /** + * Format: uri + * @example https://api.github.com/repos/octocat/Hello-World/issues/1347 + */ + issue_url: string; + /** + * Format: uri + * @example https://api.github.com/repos/octocat/Hello-World/pulls/1347/commits + */ + commits_url: string; + /** + * Format: uri + * @example https://api.github.com/repos/octocat/Hello-World/pulls/1347/comments + */ + review_comments_url: string; + /** @example https://api.github.com/repos/octocat/Hello-World/pulls/comments{/number} */ + review_comment_url: string; + /** + * Format: uri + * @example https://api.github.com/repos/octocat/Hello-World/issues/1347/comments + */ + comments_url: string; + /** + * Format: uri + * @example https://api.github.com/repos/octocat/Hello-World/statuses/6dcb09b5b57875f334f61aebed695e2e4193db5e + */ + statuses_url: string; + /** + * @description Number uniquely identifying the pull request within its repository. + * @example 42 + */ + number: number; + /** + * @description State of this Pull Request. Either `open` or `closed`. + * @example open + * @enum {string} + */ + state: "open" | "closed"; + /** @example true */ + locked: boolean; + /** + * @description The title of the pull request. + * @example Amazing new feature + */ + title: string; + user: components["schemas"]["nullable-simple-user"]; + /** @example Please pull these awesome changes */ + body: string | null; + labels: { + /** Format: int64 */ + id: number; + node_id: string; + url: string; + name: string; + description: string | null; + color: string; + default: boolean; + }[]; + milestone: components["schemas"]["nullable-milestone"]; + /** @example too heated */ + active_lock_reason?: string | null; + /** + * Format: date-time + * @example 2011-01-26T19:01:12Z + */ + created_at: string; + /** + * Format: date-time + * @example 2011-01-26T19:01:12Z + */ + updated_at: string; + /** + * Format: date-time + * @example 2011-01-26T19:01:12Z + */ + closed_at: string | null; + /** + * Format: date-time + * @example 2011-01-26T19:01:12Z + */ + merged_at: string | null; + /** @example e5bd3914e2e596debea16f433f57875b5b90bcd6 */ + merge_commit_sha: string | null; + assignee: components["schemas"]["nullable-simple-user"]; + assignees?: components["schemas"]["simple-user"][] | null; + requested_reviewers?: components["schemas"]["simple-user"][] | null; + requested_teams?: components["schemas"]["team-simple"][] | null; + head: { + label: string; + ref: string; + repo: { + archive_url: string; + assignees_url: string; + blobs_url: string; + branches_url: string; + collaborators_url: string; + comments_url: string; + commits_url: string; + compare_url: string; + contents_url: string; + /** Format: uri */ + contributors_url: string; + /** Format: uri */ + deployments_url: string; + description: string | null; + /** Format: uri */ + downloads_url: string; + /** Format: uri */ + events_url: string; + fork: boolean; + /** Format: uri */ + forks_url: string; + full_name: string; + git_commits_url: string; + git_refs_url: string; + git_tags_url: string; + /** Format: uri */ + hooks_url: string; + /** Format: uri */ + html_url: string; + id: number; + node_id: string; + issue_comment_url: string; + issue_events_url: string; + issues_url: string; + keys_url: string; + labels_url: string; + /** Format: uri */ + languages_url: string; + /** Format: uri */ + merges_url: string; + milestones_url: string; + name: string; + notifications_url: string; + owner: { + /** Format: uri */ + avatar_url: string; + events_url: string; + /** Format: uri */ + followers_url: string; + following_url: string; + gists_url: string; + gravatar_id: string | null; + /** Format: uri */ + html_url: string; + id: number; + node_id: string; + login: string; + /** Format: uri */ + organizations_url: string; + /** Format: uri */ + received_events_url: string; + /** Format: uri */ + repos_url: string; + site_admin: boolean; + starred_url: string; + /** Format: uri */ + subscriptions_url: string; + type: string; + /** Format: uri */ + url: string; + }; + private: boolean; + pulls_url: string; + releases_url: string; + /** Format: uri */ + stargazers_url: string; + statuses_url: string; + /** Format: uri */ + subscribers_url: string; + /** Format: uri */ + subscription_url: string; + /** Format: uri */ + tags_url: string; + /** Format: uri */ + teams_url: string; + trees_url: string; + /** Format: uri */ + url: string; + clone_url: string; + default_branch: string; + forks: number; + forks_count: number; + git_url: string; + has_downloads: boolean; + has_issues: boolean; + has_projects: boolean; + has_wiki: boolean; + has_pages: boolean; + /** Format: uri */ + homepage: string | null; + language: string | null; + master_branch?: string; + archived: boolean; + disabled: boolean; + /** @description The repository visibility: public, private, or internal. */ + visibility?: string; + /** Format: uri */ + mirror_url: string | null; + open_issues: number; + open_issues_count: number; + permissions?: { + admin: boolean; + maintain?: boolean; + push: boolean; + triage?: boolean; + pull: boolean; + }; + temp_clone_token?: string; + allow_merge_commit?: boolean; + allow_squash_merge?: boolean; + allow_rebase_merge?: boolean; + license: { + key: string; + name: string; + /** Format: uri */ + url: string | null; + spdx_id: string | null; + node_id: string; + } | null; + /** Format: date-time */ + pushed_at: string; + size: number; + ssh_url: string; + stargazers_count: number; + /** Format: uri */ + svn_url: string; + topics?: string[]; + watchers: number; + watchers_count: number; + /** Format: date-time */ + created_at: string; + /** Format: date-time */ + updated_at: string; + allow_forking?: boolean; + is_template?: boolean; + } | null; + sha: string; + user: { + /** Format: uri */ + avatar_url: string; + events_url: string; + /** Format: uri */ + followers_url: string; + following_url: string; + gists_url: string; + gravatar_id: string | null; + /** Format: uri */ + html_url: string; + id: number; + node_id: string; + login: string; + /** Format: uri */ + organizations_url: string; + /** Format: uri */ + received_events_url: string; + /** Format: uri */ + repos_url: string; + site_admin: boolean; + starred_url: string; + /** Format: uri */ + subscriptions_url: string; + type: string; + /** Format: uri */ + url: string; + }; + }; + base: { + label: string; + ref: string; + repo: { + archive_url: string; + assignees_url: string; + blobs_url: string; + branches_url: string; + collaborators_url: string; + comments_url: string; + commits_url: string; + compare_url: string; + contents_url: string; + /** Format: uri */ + contributors_url: string; + /** Format: uri */ + deployments_url: string; + description: string | null; + /** Format: uri */ + downloads_url: string; + /** Format: uri */ + events_url: string; + fork: boolean; + /** Format: uri */ + forks_url: string; + full_name: string; + git_commits_url: string; + git_refs_url: string; + git_tags_url: string; + /** Format: uri */ + hooks_url: string; + /** Format: uri */ + html_url: string; + id: number; + is_template?: boolean; + node_id: string; + issue_comment_url: string; + issue_events_url: string; + issues_url: string; + keys_url: string; + labels_url: string; + /** Format: uri */ + languages_url: string; + /** Format: uri */ + merges_url: string; + milestones_url: string; + name: string; + notifications_url: string; + owner: { + /** Format: uri */ + avatar_url: string; + events_url: string; + /** Format: uri */ + followers_url: string; + following_url: string; + gists_url: string; + gravatar_id: string | null; + /** Format: uri */ + html_url: string; + id: number; + node_id: string; + login: string; + /** Format: uri */ + organizations_url: string; + /** Format: uri */ + received_events_url: string; + /** Format: uri */ + repos_url: string; + site_admin: boolean; + starred_url: string; + /** Format: uri */ + subscriptions_url: string; + type: string; + /** Format: uri */ + url: string; + }; + private: boolean; + pulls_url: string; + releases_url: string; + /** Format: uri */ + stargazers_url: string; + statuses_url: string; + /** Format: uri */ + subscribers_url: string; + /** Format: uri */ + subscription_url: string; + /** Format: uri */ + tags_url: string; + /** Format: uri */ + teams_url: string; + trees_url: string; + /** Format: uri */ + url: string; + clone_url: string; + default_branch: string; + forks: number; + forks_count: number; + git_url: string; + has_downloads: boolean; + has_issues: boolean; + has_projects: boolean; + has_wiki: boolean; + has_pages: boolean; + /** Format: uri */ + homepage: string | null; + language: string | null; + master_branch?: string; + archived: boolean; + disabled: boolean; + /** @description The repository visibility: public, private, or internal. */ + visibility?: string; + /** Format: uri */ + mirror_url: string | null; + open_issues: number; + open_issues_count: number; + permissions?: { + admin: boolean; + maintain?: boolean; + push: boolean; + triage?: boolean; + pull: boolean; + }; + temp_clone_token?: string; + allow_merge_commit?: boolean; + allow_squash_merge?: boolean; + allow_rebase_merge?: boolean; + license: components["schemas"]["nullable-license-simple"]; + /** Format: date-time */ + pushed_at: string; + size: number; + ssh_url: string; + stargazers_count: number; + /** Format: uri */ + svn_url: string; + topics?: string[]; + watchers: number; + watchers_count: number; + /** Format: date-time */ + created_at: string; + /** Format: date-time */ + updated_at: string; + allow_forking?: boolean; + }; + sha: string; + user: { + /** Format: uri */ + avatar_url: string; + events_url: string; + /** Format: uri */ + followers_url: string; + following_url: string; + gists_url: string; + gravatar_id: string | null; + /** Format: uri */ + html_url: string; + id: number; + node_id: string; + login: string; + /** Format: uri */ + organizations_url: string; + /** Format: uri */ + received_events_url: string; + /** Format: uri */ + repos_url: string; + site_admin: boolean; + starred_url: string; + /** Format: uri */ + subscriptions_url: string; + type: string; + /** Format: uri */ + url: string; + }; + }; + _links: { + comments: components["schemas"]["link"]; + commits: components["schemas"]["link"]; + statuses: components["schemas"]["link"]; + html: components["schemas"]["link"]; + issue: components["schemas"]["link"]; + review_comments: components["schemas"]["link"]; + review_comment: components["schemas"]["link"]; + self: components["schemas"]["link"]; + }; + author_association: components["schemas"]["author-association"]; + auto_merge: components["schemas"]["auto-merge"]; + /** + * @description Indicates whether or not the pull request is a draft. + * @example false + */ + draft?: boolean; + merged: boolean; + /** @example true */ + mergeable: boolean | null; + /** @example true */ + rebaseable?: boolean | null; + /** @example clean */ + mergeable_state: string; + merged_by: components["schemas"]["nullable-simple-user"]; + /** @example 10 */ + comments: number; + /** @example 0 */ + review_comments: number; + /** + * @description Indicates whether maintainers can modify the pull request. + * @example true + */ + maintainer_can_modify: boolean; + /** @example 3 */ + commits: number; + /** @example 100 */ + additions: number; + /** @example 3 */ + deletions: number; + /** @example 5 */ + changed_files: number; + }; + /** + * Pull Request Merge Result + * @description Pull Request Merge Result + */ + "pull-request-merge-result": { + sha: string; + merged: boolean; + message: string; + }; + /** + * Pull Request Review Request + * @description Pull Request Review Request + */ + "pull-request-review-request": { + users: components["schemas"]["simple-user"][]; + teams: components["schemas"]["team"][]; + }; + /** + * Pull Request Review + * @description Pull Request Reviews are reviews on pull requests. + */ + "pull-request-review": { + /** + * @description Unique identifier of the review + * @example 42 + */ + id: number; + /** @example MDE3OlB1bGxSZXF1ZXN0UmV2aWV3ODA= */ + node_id: string; + user: components["schemas"]["nullable-simple-user"]; + /** + * @description The text of the review. + * @example This looks great. + */ + body: string; + /** @example CHANGES_REQUESTED */ + state: string; + /** + * Format: uri + * @example https://github.com/octocat/Hello-World/pull/12#pullrequestreview-80 + */ + html_url: string; + /** + * Format: uri + * @example https://api.github.com/repos/octocat/Hello-World/pulls/12 + */ + pull_request_url: string; + _links: { + html: { + href: string; + }; + pull_request: { + href: string; + }; + }; + /** Format: date-time */ + submitted_at?: string; + /** + * @description A commit SHA for the review. + * @example 54bb654c9e6025347f57900a4a5c2313a96b8035 + */ + commit_id: string; + body_html?: string; + body_text?: string; + author_association: components["schemas"]["author-association"]; + }; + /** + * Legacy Review Comment + * @description Legacy Review Comment + */ + "review-comment": { + /** + * Format: uri + * @example https://api.github.com/repos/octocat/Hello-World/pulls/comments/1 + */ + url: string; + /** @example 42 */ + pull_request_review_id: number | null; + /** @example 10 */ + id: number; + /** @example MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDEw */ + node_id: string; + /** @example @@ -16,33 +16,40 @@ public class Connection : IConnection... */ + diff_hunk: string; + /** @example file1.txt */ + path: string; + /** @example 1 */ + position: number | null; + /** @example 4 */ + original_position: number; + /** @example 6dcb09b5b57875f334f61aebed695e2e4193db5e */ + commit_id: string; + /** @example 9c48853fa3dc5c1c3d6f1f1cd1f2743e72652840 */ + original_commit_id: string; + /** @example 8 */ + in_reply_to_id?: number; + user: components["schemas"]["nullable-simple-user"]; + /** @example Great stuff */ + body: string; + /** + * Format: date-time + * @example 2011-04-14T16:00:49Z + */ + created_at: string; + /** + * Format: date-time + * @example 2011-04-14T16:00:49Z + */ + updated_at: string; + /** + * Format: uri + * @example https://github.com/octocat/Hello-World/pull/1#discussion-diff-1 + */ + html_url: string; + /** + * Format: uri + * @example https://api.github.com/repos/octocat/Hello-World/pulls/1 + */ + pull_request_url: string; + author_association: components["schemas"]["author-association"]; + _links: { + self: components["schemas"]["link"]; + html: components["schemas"]["link"]; + pull_request: components["schemas"]["link"]; + }; + body_text?: string; + body_html?: string; + reactions?: components["schemas"]["reaction-rollup"]; + /** + * @description The side of the first line of the range for a multi-line comment. + * @default RIGHT + * @enum {string} + */ + side?: "LEFT" | "RIGHT"; + /** + * @description The side of the first line of the range for a multi-line comment. + * @default RIGHT + * @enum {string|null} + */ + start_side?: ("LEFT" | "RIGHT") | null; + /** + * @description The line of the blob to which the comment applies. The last line of the range for a multi-line comment + * @example 2 + */ + line?: number; + /** + * @description The original line of the blob to which the comment applies. The last line of the range for a multi-line comment + * @example 2 + */ + original_line?: number; + /** + * @description The first line of the range for a multi-line comment. + * @example 2 + */ + start_line?: number | null; + /** + * @description The original first line of the range for a multi-line comment. + * @example 2 + */ + original_start_line?: number | null; + }; + /** + * Release Asset + * @description Data related to a release. + */ + "release-asset": { + /** Format: uri */ + url: string; + /** Format: uri */ + browser_download_url: string; + id: number; + node_id: string; + /** + * @description The file name of the asset. + * @example Team Environment + */ + name: string; + label: string | null; + /** + * @description State of the release asset. + * @enum {string} + */ + state: "uploaded" | "open"; + content_type: string; + size: number; + download_count: number; + /** Format: date-time */ + created_at: string; + /** Format: date-time */ + updated_at: string; + uploader: components["schemas"]["nullable-simple-user"]; + }; + /** + * Release + * @description A release. + */ + release: { + /** Format: uri */ + url: string; + /** Format: uri */ + html_url: string; + /** Format: uri */ + assets_url: string; + upload_url: string; + /** Format: uri */ + tarball_url: string | null; + /** Format: uri */ + zipball_url: string | null; + id: number; + node_id: string; + /** + * @description The name of the tag. + * @example v1.0.0 + */ + tag_name: string; + /** + * @description Specifies the commitish value that determines where the Git tag is created from. + * @example master + */ + target_commitish: string; + name: string | null; + body?: string | null; + /** + * @description true to create a draft (unpublished) release, false to create a published one. + * @example false + */ + draft: boolean; + /** + * @description Whether to identify the release as a prerelease or a full release. + * @example false + */ + prerelease: boolean; + /** Format: date-time */ + created_at: string; + /** Format: date-time */ + published_at: string | null; + author: components["schemas"]["simple-user"]; + assets: components["schemas"]["release-asset"][]; + body_html?: string; + body_text?: string; + mentions_count?: number; + /** + * Format: uri + * @description The URL of the release discussion. + */ + discussion_url?: string; + reactions?: components["schemas"]["reaction-rollup"]; + }; + /** + * Generated Release Notes Content + * @description Generated name and body describing a release + */ + "release-notes-content": { + /** + * @description The generated name of the release + * @example Release v1.0.0 is now available! + */ + name: string; + /** @description The generated body describing the contents of the release supporting markdown formatting */ + body: string; + }; + "secret-scanning-alert": { + number?: components["schemas"]["alert-number"]; + created_at?: components["schemas"]["alert-created-at"]; + updated_at?: components["schemas"]["alert-updated-at"]; + url?: components["schemas"]["alert-url"]; + html_url?: components["schemas"]["alert-html-url"]; + /** + * Format: uri + * @description The REST API URL of the code locations for this alert. + */ + locations_url?: string; + state?: components["schemas"]["secret-scanning-alert-state"]; + resolution?: components["schemas"]["secret-scanning-alert-resolution"]; + /** + * Format: date-time + * @description The time that the alert was resolved in ISO 8601 format: `YYYY-MM-DDTHH:MM:SSZ`. + */ + resolved_at?: string | null; + resolved_by?: components["schemas"]["nullable-simple-user"]; + /** @description The type of secret that secret scanning detected. */ + secret_type?: string; + /** + * @description User-friendly name for the detected secret, matching the `secret_type`. + * For a list of built-in patterns, see "[Secret scanning patterns](https://docs.github.com/code-security/secret-scanning/secret-scanning-patterns#supported-secrets-for-advanced-security)." + */ + secret_type_display_name?: string; + /** @description The secret that was detected. */ + secret?: string; + /** @description Whether push protection was bypassed for the detected secret. */ + push_protection_bypassed?: boolean | null; + push_protection_bypassed_by?: components["schemas"]["nullable-simple-user"]; + /** + * Format: date-time + * @description The time that push protection was bypassed in ISO 8601 format: `YYYY-MM-DDTHH:MM:SSZ`. + */ + push_protection_bypassed_at?: string | null; + }; + /** @description Represents a 'commit' secret scanning location type. This location type shows that a secret was detected inside a commit to a repository. */ + "secret-scanning-location-commit": { + /** + * @description The file path in the repository + * @example /example/secrets.txt + */ + path: string; + /** @description Line number at which the secret starts in the file */ + start_line: number; + /** @description Line number at which the secret ends in the file */ + end_line: number; + /** @description The column at which the secret starts within the start line when the file is interpreted as 8BIT ASCII */ + start_column: number; + /** @description The column at which the secret ends within the end line when the file is interpreted as 8BIT ASCII */ + end_column: number; + /** + * @description SHA-1 hash ID of the associated blob + * @example af5626b4a114abcb82d63db7c8082c3c4756e51b + */ + blob_sha: string; + /** @description The API URL to get the associated blob resource */ + blob_url: string; + /** + * @description SHA-1 hash ID of the associated commit + * @example af5626b4a114abcb82d63db7c8082c3c4756e51b + */ + commit_sha: string; + /** @description The API URL to get the associated commit resource */ + commit_url: string; + }; + "secret-scanning-location": { + /** + * @description The location type. Because secrets may be found in different types of resources (ie. code, comments, issues), this field identifies the type of resource where the secret was found. + * @example commit + * @enum {string} + */ + type: "commit"; + details: components["schemas"]["secret-scanning-location-commit"]; + }; + /** + * Stargazer + * @description Stargazer + */ + stargazer: { + /** Format: date-time */ + starred_at: string; + user: components["schemas"]["nullable-simple-user"]; + }; + /** + * Code Frequency Stat + * @description Code Frequency Stat + */ + "code-frequency-stat": number[]; + /** + * Commit Activity + * @description Commit Activity + */ + "commit-activity": { + /** + * @example [ + * 0, + * 3, + * 26, + * 20, + * 39, + * 1, + * 0 + * ] + */ + days: number[]; + /** @example 89 */ + total: number; + /** @example 1336280400 */ + week: number; + }; + /** + * Contributor Activity + * @description Contributor Activity + */ + "contributor-activity": { + author: components["schemas"]["nullable-simple-user"]; + /** @example 135 */ + total: number; + /** + * @example [ + * { + * "w": "1367712000", + * "a": 6898, + * "d": 77, + * "c": 10 + * } + * ] + */ + weeks: { + w?: number; + a?: number; + d?: number; + c?: number; + }[]; + }; + /** Participation Stats */ + "participation-stats": { + all: number[]; + owner: number[]; + }; + /** + * Repository Invitation + * @description Repository invitations let you manage who you collaborate with. + */ + "repository-subscription": { + /** + * @description Determines if notifications should be received from this repository. + * @example true + */ + subscribed: boolean; + /** @description Determines if all notifications should be blocked from this repository. */ + ignored: boolean; + reason: string | null; + /** + * Format: date-time + * @example 2012-10-06T21:34:12Z + */ + created_at: string; + /** + * Format: uri + * @example https://api.github.com/repos/octocat/example/subscription + */ + url: string; + /** + * Format: uri + * @example https://api.github.com/repos/octocat/example + */ + repository_url: string; + }; + /** + * Tag + * @description Tag + */ + tag: { + /** @example v0.1 */ + name: string; + commit: { + sha: string; + /** Format: uri */ + url: string; + }; + /** + * Format: uri + * @example https://github.com/octocat/Hello-World/zipball/v0.1 + */ + zipball_url: string; + /** + * Format: uri + * @example https://github.com/octocat/Hello-World/tarball/v0.1 + */ + tarball_url: string; + node_id: string; + }; + /** + * Tag protection + * @description Tag protection + */ + "tag-protection": { + /** @example 2 */ + id?: number; + /** @example 2011-01-26T19:01:12Z */ + created_at?: string; + /** @example 2011-01-26T19:01:12Z */ + updated_at?: string; + /** @example true */ + enabled?: boolean; + /** @example v1.* */ + pattern: string; + }; + /** + * Topic + * @description A topic aggregates entities that are related to a subject. + */ + topic: { + names: string[]; + }; + /** Traffic */ + traffic: { + /** Format: date-time */ + timestamp: string; + uniques: number; + count: number; + }; + /** + * Clone Traffic + * @description Clone Traffic + */ + "clone-traffic": { + /** @example 173 */ + count: number; + /** @example 128 */ + uniques: number; + clones: components["schemas"]["traffic"][]; + }; + /** + * Content Traffic + * @description Content Traffic + */ + "content-traffic": { + /** @example /github/hubot */ + path: string; + /** @example github/hubot: A customizable life embetterment robot. */ + title: string; + /** @example 3542 */ + count: number; + /** @example 2225 */ + uniques: number; + }; + /** + * Referrer Traffic + * @description Referrer Traffic + */ + "referrer-traffic": { + /** @example Google */ + referrer: string; + /** @example 4 */ + count: number; + /** @example 3 */ + uniques: number; + }; + /** + * View Traffic + * @description View Traffic + */ + "view-traffic": { + /** @example 14850 */ + count: number; + /** @example 3782 */ + uniques: number; + views: components["schemas"]["traffic"][]; + }; + "scim-group-list-enterprise": { + schemas: string[]; + totalResults: number; + itemsPerPage: number; + startIndex: number; + Resources: { + schemas: string[]; + id: string; + externalId?: string | null; + displayName?: string; + members?: { + value?: string; + $ref?: string; + display?: string; + }[]; + meta?: { + resourceType?: string; + created?: string; + lastModified?: string; + location?: string; + }; + }[]; + }; + "scim-enterprise-group": { + schemas: string[]; + id: string; + externalId?: string | null; + displayName?: string; + members?: { + value?: string; + $ref?: string; + display?: string; + }[]; + meta?: { + resourceType?: string; + created?: string; + lastModified?: string; + location?: string; + }; + }; + "scim-user-list-enterprise": { + schemas: string[]; + totalResults: number; + itemsPerPage: number; + startIndex: number; + Resources: { + schemas: string[]; + id: string; + externalId?: string; + userName?: string; + name?: { + givenName?: string; + familyName?: string; + }; + emails?: { + value?: string; + primary?: boolean; + type?: string; + }[]; + groups?: { + value?: string; + }[]; + active?: boolean; + meta?: { + resourceType?: string; + created?: string; + lastModified?: string; + location?: string; + }; + }[]; + }; + "scim-enterprise-user": { + schemas: string[]; + id: string; + externalId?: string; + userName?: string; + name?: { + givenName?: string; + familyName?: string; + }; + emails?: { + value?: string; + type?: string; + primary?: boolean; + }[]; + groups?: { + value?: string; + }[]; + active?: boolean; + meta?: { + resourceType?: string; + created?: string; + lastModified?: string; + location?: string; + }; + }; + /** + * SCIM /Users + * @description SCIM /Users provisioning endpoints + */ + "scim-user": { + /** @description SCIM schema used. */ + schemas: string[]; + /** + * @description Unique identifier of an external identity + * @example 1b78eada-9baa-11e6-9eb6-a431576d590e + */ + id: string; + /** + * @description The ID of the User. + * @example a7b0f98395 + */ + externalId: string | null; + /** + * @description Configured by the admin. Could be an email, login, or username + * @example someone@example.com + */ + userName: string | null; + /** + * @description The name of the user, suitable for display to end-users + * @example Jon Doe + */ + displayName?: string | null; + /** + * @example { + * "givenName": "Jane", + * "familyName": "User" + * } + */ + name: { + givenName: string | null; + familyName: string | null; + formatted?: string | null; + }; + /** + * @description user emails + * @example [ + * { + * "value": "someone@example.com", + * "primary": true + * }, + * { + * "value": "another@example.com", + * "primary": false + * } + * ] + */ + emails: { + value: string; + primary?: boolean; + }[]; + /** + * @description The active status of the User. + * @example true + */ + active: boolean; + meta: { + /** @example User */ + resourceType?: string; + /** + * Format: date-time + * @example 2019-01-24T22:45:36.000Z + */ + created?: string; + /** + * Format: date-time + * @example 2019-01-24T22:45:36.000Z + */ + lastModified?: string; + /** + * Format: uri + * @example https://api.github.com/scim/v2/organizations/myorg-123abc55141bfd8f/Users/c42772b5-2029-11e9-8543-9264a97dec8d + */ + location?: string; + }; + /** @description The ID of the organization. */ + organization_id?: number; + /** + * @description Set of operations to be performed + * @example [ + * { + * "op": "replace", + * "value": { + * "active": false + * } + * } + * ] + */ + operations?: { + /** @enum {string} */ + op: "add" | "remove" | "replace"; + path?: string; + value?: string | { [key: string]: unknown } | unknown[]; + }[]; + /** @description associated groups */ + groups?: { + value?: string; + display?: string; + }[]; + }; + /** + * SCIM User List + * @description SCIM User List + */ + "scim-user-list": { + /** @description SCIM schema used. */ + schemas: string[]; + /** @example 3 */ + totalResults: number; + /** @example 10 */ + itemsPerPage: number; + /** @example 1 */ + startIndex: number; + Resources: components["schemas"]["scim-user"][]; + }; + /** Search Result Text Matches */ + "search-result-text-matches": { + object_url?: string; + object_type?: string | null; + property?: string; + fragment?: string; + matches?: { + text?: string; + indices?: number[]; + }[]; + }[]; + /** + * Code Search Result Item + * @description Code Search Result Item + */ + "code-search-result-item": { + name: string; + path: string; + sha: string; + /** Format: uri */ + url: string; + /** Format: uri */ + git_url: string; + /** Format: uri */ + html_url: string; + repository: components["schemas"]["minimal-repository"]; + score: number; + file_size?: number; + language?: string | null; + /** Format: date-time */ + last_modified_at?: string; + /** + * @example [ + * "73..77", + * "77..78" + * ] + */ + line_numbers?: string[]; + text_matches?: components["schemas"]["search-result-text-matches"]; + }; + /** + * Commit Search Result Item + * @description Commit Search Result Item + */ + "commit-search-result-item": { + /** Format: uri */ + url: string; + sha: string; + /** Format: uri */ + html_url: string; + /** Format: uri */ + comments_url: string; + commit: { + author: { + name: string; + email: string; + /** Format: date-time */ + date: string; + }; + committer: components["schemas"]["nullable-git-user"]; + comment_count: number; + message: string; + tree: { + sha: string; + /** Format: uri */ + url: string; + }; + /** Format: uri */ + url: string; + verification?: components["schemas"]["verification"]; + }; + author: components["schemas"]["nullable-simple-user"]; + committer: components["schemas"]["nullable-git-user"]; + parents: { + url?: string; + html_url?: string; + sha?: string; + }[]; + repository: components["schemas"]["minimal-repository"]; + score: number; + node_id: string; + text_matches?: components["schemas"]["search-result-text-matches"]; + }; + /** + * Issue Search Result Item + * @description Issue Search Result Item + */ + "issue-search-result-item": { + /** Format: uri */ + url: string; + /** Format: uri */ + repository_url: string; + labels_url: string; + /** Format: uri */ + comments_url: string; + /** Format: uri */ + events_url: string; + /** Format: uri */ + html_url: string; + id: number; + node_id: string; + number: number; + title: string; + locked: boolean; + active_lock_reason?: string | null; + assignees?: components["schemas"]["simple-user"][] | null; + user: components["schemas"]["nullable-simple-user"]; + labels: { + /** Format: int64 */ + id?: number; + node_id?: string; + url?: string; + name?: string; + color?: string; + default?: boolean; + description?: string | null; + }[]; + state: string; + state_reason?: string | null; + assignee: components["schemas"]["nullable-simple-user"]; + milestone: components["schemas"]["nullable-milestone"]; + comments: number; + /** Format: date-time */ + created_at: string; + /** Format: date-time */ + updated_at: string; + /** Format: date-time */ + closed_at: string | null; + text_matches?: components["schemas"]["search-result-text-matches"]; + pull_request?: { + /** Format: date-time */ + merged_at?: string | null; + /** Format: uri */ + diff_url: string | null; + /** Format: uri */ + html_url: string | null; + /** Format: uri */ + patch_url: string | null; + /** Format: uri */ + url: string | null; + }; + body?: string; + score: number; + author_association: components["schemas"]["author-association"]; + draft?: boolean; + repository?: components["schemas"]["repository"]; + body_html?: string; + body_text?: string; + /** Format: uri */ + timeline_url?: string; + performed_via_github_app?: components["schemas"]["nullable-integration"]; + reactions?: components["schemas"]["reaction-rollup"]; + }; + /** + * Label Search Result Item + * @description Label Search Result Item + */ + "label-search-result-item": { + id: number; + node_id: string; + /** Format: uri */ + url: string; + name: string; + color: string; + default: boolean; + description: string | null; + score: number; + text_matches?: components["schemas"]["search-result-text-matches"]; + }; + /** + * Repo Search Result Item + * @description Repo Search Result Item + */ + "repo-search-result-item": { + id: number; + node_id: string; + name: string; + full_name: string; + owner: components["schemas"]["nullable-simple-user"]; + private: boolean; + /** Format: uri */ + html_url: string; + description: string | null; + fork: boolean; + /** Format: uri */ + url: string; + /** Format: date-time */ + created_at: string; + /** Format: date-time */ + updated_at: string; + /** Format: date-time */ + pushed_at: string; + /** Format: uri */ + homepage: string | null; + size: number; + stargazers_count: number; + watchers_count: number; + language: string | null; + forks_count: number; + open_issues_count: number; + master_branch?: string; + default_branch: string; + score: number; + /** Format: uri */ + forks_url: string; + keys_url: string; + collaborators_url: string; + /** Format: uri */ + teams_url: string; + /** Format: uri */ + hooks_url: string; + issue_events_url: string; + /** Format: uri */ + events_url: string; + assignees_url: string; + branches_url: string; + /** Format: uri */ + tags_url: string; + blobs_url: string; + git_tags_url: string; + git_refs_url: string; + trees_url: string; + statuses_url: string; + /** Format: uri */ + languages_url: string; + /** Format: uri */ + stargazers_url: string; + /** Format: uri */ + contributors_url: string; + /** Format: uri */ + subscribers_url: string; + /** Format: uri */ + subscription_url: string; + commits_url: string; + git_commits_url: string; + comments_url: string; + issue_comment_url: string; + contents_url: string; + compare_url: string; + /** Format: uri */ + merges_url: string; + archive_url: string; + /** Format: uri */ + downloads_url: string; + issues_url: string; + pulls_url: string; + milestones_url: string; + notifications_url: string; + labels_url: string; + releases_url: string; + /** Format: uri */ + deployments_url: string; + git_url: string; + ssh_url: string; + clone_url: string; + /** Format: uri */ + svn_url: string; + forks: number; + open_issues: number; + watchers: number; + topics?: string[]; + /** Format: uri */ + mirror_url: string | null; + has_issues: boolean; + has_projects: boolean; + has_pages: boolean; + has_wiki: boolean; + has_downloads: boolean; + archived: boolean; + /** @description Returns whether or not this repository disabled. */ + disabled: boolean; + /** @description The repository visibility: public, private, or internal. */ + visibility?: string; + license: components["schemas"]["nullable-license-simple"]; + permissions?: { + admin: boolean; + maintain?: boolean; + push: boolean; + triage?: boolean; + pull: boolean; + }; + text_matches?: components["schemas"]["search-result-text-matches"]; + temp_clone_token?: string; + allow_merge_commit?: boolean; + allow_squash_merge?: boolean; + allow_rebase_merge?: boolean; + allow_auto_merge?: boolean; + delete_branch_on_merge?: boolean; + allow_forking?: boolean; + is_template?: boolean; + }; + /** + * Topic Search Result Item + * @description Topic Search Result Item + */ + "topic-search-result-item": { + name: string; + display_name: string | null; + short_description: string | null; + description: string | null; + created_by: string | null; + released: string | null; + /** Format: date-time */ + created_at: string; + /** Format: date-time */ + updated_at: string; + featured: boolean; + curated: boolean; + score: number; + repository_count?: number | null; + /** Format: uri */ + logo_url?: string | null; + text_matches?: components["schemas"]["search-result-text-matches"]; + related?: + | { + topic_relation?: { + id?: number; + name?: string; + topic_id?: number; + relation_type?: string; + }; + }[] + | null; + aliases?: + | { + topic_relation?: { + id?: number; + name?: string; + topic_id?: number; + relation_type?: string; + }; + }[] + | null; + }; + /** + * User Search Result Item + * @description User Search Result Item + */ + "user-search-result-item": { + login: string; + id: number; + node_id: string; + /** Format: uri */ + avatar_url: string; + gravatar_id: string | null; + /** Format: uri */ + url: string; + /** Format: uri */ + html_url: string; + /** Format: uri */ + followers_url: string; + /** Format: uri */ + subscriptions_url: string; + /** Format: uri */ + organizations_url: string; + /** Format: uri */ + repos_url: string; + /** Format: uri */ + received_events_url: string; + type: string; + score: number; + following_url: string; + gists_url: string; + starred_url: string; + events_url: string; + public_repos?: number; + public_gists?: number; + followers?: number; + following?: number; + /** Format: date-time */ + created_at?: string; + /** Format: date-time */ + updated_at?: string; + name?: string | null; + bio?: string | null; + /** Format: email */ + email?: string | null; + location?: string | null; + site_admin: boolean; + hireable?: boolean | null; + text_matches?: components["schemas"]["search-result-text-matches"]; + blog?: string | null; + company?: string | null; + /** Format: date-time */ + suspended_at?: string | null; + }; + /** + * Private User + * @description Private User + */ + "private-user": { + /** @example octocat */ + login: string; + /** @example 1 */ + id: number; + /** @example MDQ6VXNlcjE= */ + node_id: string; + /** + * Format: uri + * @example https://github.com/images/error/octocat_happy.gif + */ + avatar_url: string; + /** @example 41d064eb2195891e12d0413f63227ea7 */ + gravatar_id: string | null; + /** + * Format: uri + * @example https://api.github.com/users/octocat + */ + url: string; + /** + * Format: uri + * @example https://github.com/octocat + */ + html_url: string; + /** + * Format: uri + * @example https://api.github.com/users/octocat/followers + */ + followers_url: string; + /** @example https://api.github.com/users/octocat/following{/other_user} */ + following_url: string; + /** @example https://api.github.com/users/octocat/gists{/gist_id} */ + gists_url: string; + /** @example https://api.github.com/users/octocat/starred{/owner}{/repo} */ + starred_url: string; + /** + * Format: uri + * @example https://api.github.com/users/octocat/subscriptions + */ + subscriptions_url: string; + /** + * Format: uri + * @example https://api.github.com/users/octocat/orgs + */ + organizations_url: string; + /** + * Format: uri + * @example https://api.github.com/users/octocat/repos + */ + repos_url: string; + /** @example https://api.github.com/users/octocat/events{/privacy} */ + events_url: string; + /** + * Format: uri + * @example https://api.github.com/users/octocat/received_events + */ + received_events_url: string; + /** @example User */ + type: string; + site_admin: boolean; + /** @example monalisa octocat */ + name: string | null; + /** @example GitHub */ + company: string | null; + /** @example https://github.com/blog */ + blog: string | null; + /** @example San Francisco */ + location: string | null; + /** + * Format: email + * @example octocat@github.com + */ + email: string | null; + hireable: boolean | null; + /** @example There once was... */ + bio: string | null; + /** @example monalisa */ + twitter_username?: string | null; + /** @example 2 */ + public_repos: number; + /** @example 1 */ + public_gists: number; + /** @example 20 */ + followers: number; + /** @example 0 */ + following: number; + /** + * Format: date-time + * @example 2008-01-14T04:33:35Z + */ + created_at: string; + /** + * Format: date-time + * @example 2008-01-14T04:33:35Z + */ + updated_at: string; + /** @example 81 */ + private_gists: number; + /** @example 100 */ + total_private_repos: number; + /** @example 100 */ + owned_private_repos: number; + /** @example 10000 */ + disk_usage: number; + /** @example 8 */ + collaborators: number; + /** @example true */ + two_factor_authentication: boolean; + plan?: { + collaborators: number; + name: string; + space: number; + private_repos: number; + }; + /** Format: date-time */ + suspended_at?: string | null; + business_plus?: boolean; + ldap_dn?: string; + }; + /** + * Codespaces Secret + * @description Secrets for a GitHub Codespace. + */ + "codespaces-secret": { + /** + * @description The name of the secret + * @example SECRET_NAME + */ + name: string; + /** + * Format: date-time + * @description Secret created at + */ + created_at: string; + /** + * Format: date-time + * @description Secret last updated at + */ + updated_at: string; + /** + * @description The type of repositories in the organization that the secret is visible to + * @enum {string} + */ + visibility: "all" | "private" | "selected"; + /** + * Format: uri + * @description API URL at which the list of repositories this secret is vicible can be retrieved + * @example https://api.github.com/user/secrets/SECRET_NAME/repositories + */ + selected_repositories_url: string; + }; + /** + * CodespacesUserPublicKey + * @description The public key used for setting user Codespaces' Secrets. + */ + "codespaces-user-public-key": { + /** + * @description The identifier for the key. + * @example 1234567 + */ + key_id: string; + /** + * @description The Base64 encoded public key. + * @example hBT5WZEj8ZoOv6TYJsfWq7MxTEQopZO5/IT3ZCVQPzs= + */ + key: string; + }; + /** + * Fetches information about an export of a codespace. + * @description An export of a codespace. Also, latest export details for a codespace can be fetched with id = latest + */ + "codespace-export-details": { + /** + * @description State of the latest export + * @example succeeded | failed | in_progress + */ + state?: string | null; + /** + * Format: date-time + * @description Completion time of the last export operation + * @example 2021-01-01T19:01:12Z + */ + completed_at?: string | null; + /** + * @description Name of the exported branch + * @example codespace-monalisa-octocat-hello-world-g4wpq6h95q + */ + branch?: string | null; + /** + * @description Git commit SHA of the exported branch + * @example fd95a81ca01e48ede9f39c799ecbcef817b8a3b2 + */ + sha?: string | null; + /** + * @description Id for the export details + * @example latest + */ + id?: string; + /** + * @description Url for fetching export details + * @example https://api.github.com/user/codespaces/:name/exports/latest + */ + export_url?: string; + /** + * @description Web url for the exported branch + * @example https://github.com/octocat/hello-world/tree/:branch + */ + html_url?: string | null; + }; + /** + * Email + * @description Email + */ + email: { + /** + * Format: email + * @example octocat@github.com + */ + email: string; + /** @example true */ + primary: boolean; + /** @example true */ + verified: boolean; + /** @example public */ + visibility: string | null; + }; + /** + * GPG Key + * @description A unique encryption key + */ + "gpg-key": { + /** @example 3 */ + id: number; + /** @example Octocat's GPG Key */ + name?: string | null; + primary_key_id: number | null; + /** @example 3262EFF25BA0D270 */ + key_id: string; + /** @example xsBNBFayYZ... */ + public_key: string; + /** + * @example [ + * { + * "email": "octocat@users.noreply.github.com", + * "verified": true + * } + * ] + */ + emails: { + email?: string; + verified?: boolean; + }[]; + /** + * @example [ + * { + * "id": 4, + * "primary_key_id": 3, + * "key_id": "4A595D4C72EE49C7", + * "public_key": "zsBNBFayYZ...", + * "emails": [], + * "subkeys": [], + * "can_sign": false, + * "can_encrypt_comms": true, + * "can_encrypt_storage": true, + * "can_certify": false, + * "created_at": "2016-03-24T11:31:04-06:00", + * "expires_at": null, + * "revoked": false + * } + * ] + */ + subkeys: { + id?: number; + primary_key_id?: number; + key_id?: string; + public_key?: string; + emails?: unknown[]; + subkeys?: unknown[]; + can_sign?: boolean; + can_encrypt_comms?: boolean; + can_encrypt_storage?: boolean; + can_certify?: boolean; + created_at?: string; + expires_at?: string | null; + raw_key?: string | null; + revoked?: boolean; + }[]; + /** @example true */ + can_sign: boolean; + can_encrypt_comms: boolean; + can_encrypt_storage: boolean; + /** @example true */ + can_certify: boolean; + /** + * Format: date-time + * @example 2016-03-24T11:31:04-06:00 + */ + created_at: string; + /** Format: date-time */ + expires_at: string | null; + /** @example true */ + revoked: boolean; + raw_key: string | null; + }; + /** + * Key + * @description Key + */ + key: { + key: string; + id: number; + url: string; + title: string; + /** Format: date-time */ + created_at: string; + verified: boolean; + read_only: boolean; + }; + /** Marketplace Account */ + "marketplace-account": { + /** Format: uri */ + url: string; + id: number; + type: string; + node_id?: string; + login: string; + /** Format: email */ + email?: string | null; + /** Format: email */ + organization_billing_email?: string | null; + }; + /** + * User Marketplace Purchase + * @description User Marketplace Purchase + */ + "user-marketplace-purchase": { + /** @example monthly */ + billing_cycle: string; + /** + * Format: date-time + * @example 2017-11-11T00:00:00Z + */ + next_billing_date: string | null; + unit_count: number | null; + /** @example true */ + on_free_trial: boolean; + /** + * Format: date-time + * @example 2017-11-11T00:00:00Z + */ + free_trial_ends_on: string | null; + /** + * Format: date-time + * @example 2017-11-02T01:12:12Z + */ + updated_at: string | null; + account: components["schemas"]["marketplace-account"]; + plan: components["schemas"]["marketplace-listing-plan"]; + }; + /** + * Starred Repository + * @description Starred Repository + */ + "starred-repository": { + /** Format: date-time */ + starred_at: string; + repo: components["schemas"]["repository"]; + }; + /** + * Hovercard + * @description Hovercard + */ + hovercard: { + contexts: { + message: string; + octicon: string; + }[]; + }; + /** + * Key Simple + * @description Key Simple + */ + "key-simple": { + id: number; + key: string; + }; + }; + responses: { + /** Resource not found */ + not_found: { + content: { + "application/json": components["schemas"]["basic-error"]; + }; + }; + /** Validation failed */ + validation_failed_simple: { + content: { + "application/json": components["schemas"]["validation-error-simple"]; + }; + }; + /** Bad Request */ + bad_request: { + content: { + "application/json": components["schemas"]["basic-error"]; + "application/scim+json": components["schemas"]["scim-error"]; + }; + }; + /** Validation failed */ + validation_failed: { + content: { + "application/json": components["schemas"]["validation-error"]; + }; + }; + /** Accepted */ + accepted: { + content: { + "application/json": { [key: string]: unknown }; + }; + }; + /** Forbidden */ + forbidden: { + content: { + "application/json": components["schemas"]["basic-error"]; + }; + }; + /** Requires authentication */ + requires_authentication: { + content: { + "application/json": components["schemas"]["basic-error"]; + }; + }; + /** Not modified */ + not_modified: unknown; + /** Gone */ + gone: { + content: { + "application/json": components["schemas"]["basic-error"]; + }; + }; + /** Response */ + actions_runner_labels: { + content: { + "application/json": { + total_count: number; + labels: components["schemas"]["runner-label"][]; + }; + }; + }; + /** Response */ + actions_runner_labels_readonly: { + content: { + "application/json": { + total_count: number; + labels: components["schemas"]["runner-label"][]; + }; + }; + }; + /** Response if GitHub Advanced Security is not enabled for this repository */ + code_scanning_forbidden_read: { + content: { + "application/json": components["schemas"]["basic-error"]; + }; + }; + /** Service unavailable */ + service_unavailable: { + content: { + "application/json": { + code?: string; + message?: string; + documentation_url?: string; + }; + }; + }; + /** Forbidden Gist */ + forbidden_gist: { + content: { + "application/json": { + block?: { + reason?: string; + created_at?: string; + html_url?: string | null; + }; + message?: string; + documentation_url?: string; + }; + }; + }; + /** Moved permanently */ + moved_permanently: { + content: { + "application/json": components["schemas"]["basic-error"]; + }; + }; + /** Conflict */ + conflict: { + content: { + "application/json": components["schemas"]["basic-error"]; + }; + }; + /** Internal Error */ + internal_error: { + content: { + "application/json": components["schemas"]["basic-error"]; + }; + }; + /** Temporary Redirect */ + temporary_redirect: { + content: { + "application/json": components["schemas"]["basic-error"]; + }; + }; + /** Response if the repository is archived or if github advanced security is not enabled for this repository */ + code_scanning_forbidden_write: { + content: { + "application/json": components["schemas"]["basic-error"]; + }; + }; + /** Found */ + found: unknown; + /** A header with no content is returned. */ + no_content: unknown; + /** Resource not found */ + scim_not_found: { + content: { + "application/json": components["schemas"]["scim-error"]; + "application/scim+json": components["schemas"]["scim-error"]; + }; + }; + /** Forbidden */ + scim_forbidden: { + content: { + "application/json": components["schemas"]["scim-error"]; + "application/scim+json": components["schemas"]["scim-error"]; + }; + }; + /** Bad Request */ + scim_bad_request: { + content: { + "application/json": components["schemas"]["scim-error"]; + "application/scim+json": components["schemas"]["scim-error"]; + }; + }; + /** Too Many Requests */ + scim_too_many_requests: { + content: { + "application/json": components["schemas"]["scim-error"]; + "application/scim+json": components["schemas"]["scim-error"]; + }; + }; + /** Internal Error */ + scim_internal_error: { + content: { + "application/json": components["schemas"]["scim-error"]; + "application/scim+json": components["schemas"]["scim-error"]; + }; + }; + /** Conflict */ + scim_conflict: { + content: { + "application/json": components["schemas"]["scim-error"]; + "application/scim+json": components["schemas"]["scim-error"]; + }; + }; + }; + parameters: { + /** @description The number of results per page (max 100). */ + "per-page": number; + /** @description Used for pagination: the starting delivery from which the page of deliveries is fetched. Refer to the `link` header for the next and previous page cursors. */ + cursor: string; + "delivery-id": number; + /** @description Page number of the results to fetch. */ + page: number; + /** @description Only show notifications updated after the given time. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`. */ + since: string; + /** @description The unique identifier of the installation. */ + "installation-id": number; + /** @description The unique identifier of the grant. */ + "grant-id": number; + /** @description The client ID of the GitHub app. */ + "client-id": string; + "app-slug": string; + /** @description The client ID of the OAuth app. */ + "oauth-client-id": string; + /** @description The unique identifier of the authorization. */ + "authorization-id": number; + /** @description The slug version of the enterprise name or the login of an organization. */ + "enterprise-or-org": string; + /** @description The slug version of the enterprise name. You can also substitute this value with the enterprise id. */ + enterprise: string; + /** @description The unique identifier of the organization. */ + "org-id": number; + /** @description Only return runner groups that are allowed to be used by this organization. */ + "visible-to-organization": string; + /** @description Unique identifier of the self-hosted runner group. */ + "runner-group-id": number; + /** @description Unique identifier of the self-hosted runner. */ + "runner-id": number; + /** @description The name of a self-hosted runner's custom label. */ + "runner-label-name": string; + /** @description A search phrase. For more information, see [Searching the audit log](https://docs.github.com/github/setting-up-and-managing-organizations-and-teams/reviewing-the-audit-log-for-your-organization#searching-the-audit-log). */ + "audit-log-phrase": string; + /** + * @description The event types to include: + * + * - `web` - returns web (non-Git) events. + * - `git` - returns Git events. + * - `all` - returns both web and Git events. + * + * The default is `web`. + */ + "audit-log-include": "web" | "git" | "all"; + /** @description A cursor, as given in the [Link header](https://docs.github.com/rest/overview/resources-in-the-rest-api#link-header). If specified, the query only searches for events after this cursor. */ + "audit-log-after": string; + /** @description A cursor, as given in the [Link header](https://docs.github.com/rest/overview/resources-in-the-rest-api#link-header). If specified, the query only searches for events before this cursor. */ + "audit-log-before": string; + /** + * @description The order of audit log events. To list newest events first, specify `desc`. To list oldest events first, specify `asc`. + * + * The default is `desc`. + */ + "audit-log-order": "desc" | "asc"; + /** @description The name of a code scanning tool. Only results by this tool will be listed. You can specify the tool by using either `tool_name` or `tool_guid`, but not both. */ + "tool-name": components["schemas"]["code-scanning-analysis-tool-name"]; + /** @description The GUID of a code scanning tool. Only results by this tool will be listed. Note that some code scanning tools may not include a GUID in their analysis data. You can specify the tool by using either `tool_guid` or `tool_name`, but not both. */ + "tool-guid": components["schemas"]["code-scanning-analysis-tool-guid"]; + /** @description A cursor, as given in the [Link header](https://docs.github.com/rest/overview/resources-in-the-rest-api#link-header). If specified, the query only searches for events before this cursor. */ + "pagination-before": string; + /** @description A cursor, as given in the [Link header](https://docs.github.com/rest/overview/resources-in-the-rest-api#link-header). If specified, the query only searches for events after this cursor. */ + "pagination-after": string; + /** @description The direction to sort the results by. */ + direction: "asc" | "desc"; + /** @description Set to `open` or `resolved` to only list secret scanning alerts in a specific state. */ + "secret-scanning-alert-state": "open" | "resolved"; + /** + * @description A comma-separated list of secret types to return. By default all secret types are returned. + * See "[Secret scanning patterns](https://docs.github.com/code-security/secret-scanning/secret-scanning-patterns#supported-secrets-for-advanced-security)" + * for a complete list of secret types. + */ + "secret-scanning-alert-secret-type": string; + /** @description A comma-separated list of resolutions. Only secret scanning alerts with one of these resolutions are listed. Valid resolutions are `false_positive`, `wont_fix`, `revoked`, `pattern_edited`, `pattern_deleted` or `used_in_tests`. */ + "secret-scanning-alert-resolution": string; + /** @description The property to sort the results by. `created` means when the alert was created. `updated` means when the alert was updated or resolved. */ + "secret-scanning-alert-sort": "created" | "updated"; + /** @description The unique identifier of the gist. */ + "gist-id": string; + /** @description The unique identifier of the comment. */ + "comment-id": number; + /** @description A list of comma separated label names. Example: `bug,ui,@high` */ + labels: string; + /** @description account_id parameter */ + "account-id": number; + /** @description The unique identifier of the plan. */ + "plan-id": number; + /** @description The property to sort the results by. `created` means when the repository was starred. `updated` means when the repository was last pushed to. */ + sort: "created" | "updated"; + /** @description The account owner of the repository. The name is not case sensitive. */ + owner: string; + /** @description The name of the repository. The name is not case sensitive. */ + repo: string; + /** @description If `true`, show notifications marked as read. */ + all: boolean; + /** @description If `true`, only shows notifications in which the user is directly participating or mentioned. */ + participating: boolean; + /** @description Only show notifications updated before the given time. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`. */ + before: string; + /** @description The unique identifier of the pull request thread. */ + "thread-id": number; + /** @description An organization ID. Only return organizations with an ID greater than this ID. */ + "since-org": number; + /** @description The organization name. The name is not case sensitive. */ + org: string; + /** @description The unique identifier of the repository. */ + "repository-id": number; + /** @description Only return runner groups that are allowed to be used by this repository. */ + "visible-to-repository": string; + /** @description The name of the secret. */ + "secret-name": string; + /** @description The handle for the GitHub user account. */ + username: string; + /** @description The unique identifier of the group. */ + "group-id": number; + /** @description The unique identifier of the hook. */ + "hook-id": number; + /** @description The unique identifier of the invitation. */ + "invitation-id": number; + /** @description The name of the codespace. */ + "codespace-name": string; + /** @description The unique identifier of the migration. */ + "migration-id": number; + /** @description repo_name parameter */ + "repo-name": string; + /** @description The selected visibility of the packages. Only `container` package_types currently support `internal` visibility properly. For other ecosystems `internal` is synonymous with `private`. This parameter is optional and only filters an existing result set. */ + "package-visibility": "public" | "private" | "internal"; + /** @description The type of supported package. Packages in GitHub's Gradle registry have the type `maven`. Docker images pushed to GitHub's Container registry (`ghcr.io`) have the type `container`. You can use the type `docker` to find images that were pushed to GitHub's Docker registry (`docker.pkg.github.com`), even if these have now been migrated to the Container registry. */ + "package-type": + | "npm" + | "maven" + | "rubygems" + | "docker" + | "nuget" + | "container"; + /** @description The name of the package. */ + "package-name": string; + /** @description Unique identifier of the package version. */ + "package-version-id": number; + /** @description A cursor, as given in the [Link header](https://docs.github.com/rest/overview/resources-in-the-rest-api#link-header). If specified, the query only searches for events before this cursor. To receive an initial cursor on your first request, include an empty "before" query string. */ + "secret-scanning-pagination-before-org-repo": string; + /** @description A cursor, as given in the [Link header](https://docs.github.com/rest/overview/resources-in-the-rest-api#link-header). If specified, the query only searches for events after this cursor. To receive an initial cursor on your first request, include an empty "after" query string. */ + "secret-scanning-pagination-after-org-repo": string; + /** @description The slug of the team name. */ + "team-slug": string; + /** @description The number that identifies the discussion. */ + "discussion-number": number; + /** @description The number that identifies the comment. */ + "comment-number": number; + /** @description The unique identifier of the reaction. */ + "reaction-id": number; + /** @description The unique identifier of the project. */ + "project-id": number; + /** @description The unique identifier of the card. */ + "card-id": number; + /** @description The unique identifier of the column. */ + "column-id": number; + /** @description The unique identifier of the artifact. */ + "artifact-id": number; + /** @description The Git reference for the results you want to list. The `ref` for a branch can be formatted either as `refs/heads/` or simply ``. To reference a pull request use `refs/pull//merge`. */ + "git-ref": components["schemas"]["code-scanning-ref"]; + /** @description An explicit key or prefix for identifying the cache */ + "actions-cache-key": string; + /** @description The property to sort the results by. `created_at` means when the cache was created. `last_accessed_at` means when the cache was last accessed. `size_in_bytes` is the size of the cache in bytes. */ + "actions-cache-list-sort": + | "created_at" + | "last_accessed_at" + | "size_in_bytes"; + /** @description A key for identifying the cache. */ + "actions-cache-key-required": string; + /** @description The unique identifier of the GitHub Actions cache. */ + "cache-id": number; + /** @description The unique identifier of the job. */ + "job-id": number; + /** @description Returns someone's workflow runs. Use the login for the user who created the `push` associated with the check suite or workflow run. */ + actor: string; + /** @description Returns workflow runs associated with a branch. Use the name of the branch of the `push`. */ + "workflow-run-branch": string; + /** @description Returns workflow run triggered by the event you specify. For example, `push`, `pull_request` or `issue`. For more information, see "[Events that trigger workflows](https://docs.github.com/en/actions/automating-your-workflow-with-github-actions/events-that-trigger-workflows)." */ + event: string; + /** @description Returns workflow runs with the check run `status` or `conclusion` that you specify. For example, a conclusion can be `success` or a status can be `in_progress`. Only GitHub can set a status of `waiting` or `requested`. For a list of the possible `status` and `conclusion` options, see "[Create a check run](https://docs.github.com/rest/reference/checks#create-a-check-run)." */ + "workflow-run-status": + | "completed" + | "action_required" + | "cancelled" + | "failure" + | "neutral" + | "skipped" + | "stale" + | "success" + | "timed_out" + | "in_progress" + | "queued" + | "requested" + | "waiting"; + /** @description Returns workflow runs created within the given date-time range. For more information on the syntax, see "[Understanding the search syntax](https://docs.github.com/search-github/getting-started-with-searching-on-github/understanding-the-search-syntax#query-for-dates)." */ + created: string; + /** @description If `true` pull requests are omitted from the response (empty array). */ + "exclude-pull-requests": boolean; + /** @description Returns workflow runs with the `check_suite_id` that you specify. */ + "workflow-run-check-suite-id": number; + /** @description The unique identifier of the workflow run. */ + "run-id": number; + /** @description The attempt number of the workflow run. */ + "attempt-number": number; + /** @description The ID of the workflow. You can also pass the workflow file name as a string. */ + "workflow-id": number | string; + /** @description The unique identifier of the autolink. */ + "autolink-id": number; + /** @description The name of the branch. */ + branch: string; + /** @description The unique identifier of the check run. */ + "check-run-id": number; + /** @description The unique identifier of the check suite. */ + "check-suite-id": number; + /** @description Returns check runs with the specified `name`. */ + "check-name": string; + /** @description Returns check runs with the specified `status`. */ + status: "queued" | "in_progress" | "completed"; + /** @description The number that identifies an alert. You can find this at the end of the URL for a code scanning alert within GitHub, and in the `number` field in the response from the `GET /repos/{owner}/{repo}/code-scanning/alerts` operation. */ + "alert-number": components["schemas"]["alert-number"]; + /** @description The SHA of the commit. */ + "commit-sha": string; + /** @description The full path, relative to the repository root, of the dependency manifest file. */ + "manifest-path": string; + /** @description deployment_id parameter */ + "deployment-id": number; + /** @description The name of the environment */ + "environment-name": string; + /** @description A user ID. Only return users with an ID greater than this ID. */ + "since-user": number; + /** @description The number that identifies the issue. */ + "issue-number": number; + /** @description The unique identifier of the key. */ + "key-id": number; + /** @description The number that identifies the milestone. */ + "milestone-number": number; + /** @description The number that identifies the pull request. */ + "pull-number": number; + /** @description The unique identifier of the review. */ + "review-id": number; + /** @description The unique identifier of the asset. */ + "asset-id": number; + /** @description The unique identifier of the release. */ + "release-id": number; + /** @description The unique identifier of the tag protection. */ + "tag-protection-id": number; + /** @description The time frame to display results for. */ + per: "" | "day" | "week"; + /** @description A repository ID. Only return repositories with an ID greater than this ID. */ + "since-repo": number; + /** @description Used for pagination: the index of the first result to return. */ + "start-index": number; + /** @description Used for pagination: the number of results to return. */ + count: number; + /** @description Identifier generated by the GitHub SCIM endpoint. */ + "scim-group-id": string; + /** @description The unique identifier of the SCIM user. */ + "scim-user-id": string; + /** @description Determines whether the first search result returned is the highest number of matches (`desc`) or lowest number of matches (`asc`). This parameter is ignored unless you provide `sort`. */ + order: "desc" | "asc"; + /** @description The unique identifier of the team. */ + "team-id": number; + /** @description ID of the Repository to filter on */ + "repository-id-in-query": number; + /** @description The ID of the export operation, or `latest`. Currently only `latest` is currently supported. */ + "export-id": string; + /** @description The unique identifier of the GPG key. */ + "gpg-key-id": number; + }; + headers: { + link?: string; + "content-type"?: string; + "x-common-marker-version"?: string; + "x-rate-limit-limit"?: number; + "x-rate-limit-remaining"?: number; + "x-rate-limit-reset"?: number; + location?: string; + }; +} + +export interface operations { + /** Get Hypermedia links to resources accessible in GitHub's REST API */ + "meta/root": { + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["root"]; + }; + }; + }; + }; + /** + * Returns the GitHub App associated with the authentication credentials used. To see how many app installations are associated with this GitHub App, see the `installations_count` in the response. For more details about your app's installations, see the "[List installations for the authenticated app](https://docs.github.com/rest/reference/apps#list-installations-for-the-authenticated-app)" endpoint. + * + * You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. + */ + "apps/get-authenticated": { + parameters: {}; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["integration"]; + }; + }; + }; + }; + /** Use this endpoint to complete the handshake necessary when implementing the [GitHub App Manifest flow](https://docs.github.com/apps/building-github-apps/creating-github-apps-from-a-manifest/). When you create a GitHub App with the manifest flow, you receive a temporary `code` used to retrieve the GitHub App's `id`, `pem` (private key), and `webhook_secret`. */ + "apps/create-from-manifest": { + parameters: { + path: { + code: string; + }; + }; + responses: { + /** Response */ + 201: { + content: { + "application/json": components["schemas"]["integration"] & + ({ + client_id: string; + client_secret: string; + webhook_secret: string | null; + pem: string; + } & { [key: string]: unknown }); + }; + }; + 404: components["responses"]["not_found"]; + 422: components["responses"]["validation_failed_simple"]; + }; + }; + /** + * Returns the webhook configuration for a GitHub App. For more information about configuring a webhook for your app, see "[Creating a GitHub App](/developers/apps/creating-a-github-app)." + * + * You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. + */ + "apps/get-webhook-config-for-app": { + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["webhook-config"]; + }; + }; + }; + }; + /** + * Updates the webhook configuration for a GitHub App. For more information about configuring a webhook for your app, see "[Creating a GitHub App](/developers/apps/creating-a-github-app)." + * + * You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. + */ + "apps/update-webhook-config-for-app": { + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["webhook-config"]; + }; + }; + }; + requestBody: { + content: { + "application/json": { + url?: components["schemas"]["webhook-config-url"]; + content_type?: components["schemas"]["webhook-config-content-type"]; + secret?: components["schemas"]["webhook-config-secret"]; + insecure_ssl?: components["schemas"]["webhook-config-insecure-ssl"]; + }; + }; + }; + }; + /** + * Returns a list of webhook deliveries for the webhook configured for a GitHub App. + * + * You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. + */ + "apps/list-webhook-deliveries": { + parameters: { + query: { + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Used for pagination: the starting delivery from which the page of deliveries is fetched. Refer to the `link` header for the next and previous page cursors. */ + cursor?: components["parameters"]["cursor"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["hook-delivery-item"][]; + }; + }; + 400: components["responses"]["bad_request"]; + 422: components["responses"]["validation_failed"]; + }; + }; + /** + * Returns a delivery for the webhook configured for a GitHub App. + * + * You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. + */ + "apps/get-webhook-delivery": { + parameters: { + path: { + delivery_id: components["parameters"]["delivery-id"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["hook-delivery"]; + }; + }; + 400: components["responses"]["bad_request"]; + 422: components["responses"]["validation_failed"]; + }; + }; + /** + * Redeliver a delivery for the webhook configured for a GitHub App. + * + * You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. + */ + "apps/redeliver-webhook-delivery": { + parameters: { + path: { + delivery_id: components["parameters"]["delivery-id"]; + }; + }; + responses: { + 202: components["responses"]["accepted"]; + 400: components["responses"]["bad_request"]; + 422: components["responses"]["validation_failed"]; + }; + }; + /** + * You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. + * + * The permissions the installation has are included under the `permissions` key. + */ + "apps/list-installations": { + parameters: { + query: { + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + /** Only show notifications updated after the given time. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`. */ + since?: components["parameters"]["since"]; + outdated?: string; + }; + }; + responses: { + /** The permissions the installation has are included under the `permissions` key. */ + 200: { + headers: {}; + content: { + "application/json": components["schemas"]["installation"][]; + }; + }; + }; + }; + /** + * Enables an authenticated GitHub App to find an installation's information using the installation id. + * + * You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. + */ + "apps/get-installation": { + parameters: { + path: { + /** The unique identifier of the installation. */ + installation_id: components["parameters"]["installation-id"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["installation"]; + }; + }; + 404: components["responses"]["not_found"]; + }; + }; + /** + * Uninstalls a GitHub App on a user, organization, or business account. If you prefer to temporarily suspend an app's access to your account's resources, then we recommend the "[Suspend an app installation](https://docs.github.com/rest/reference/apps/#suspend-an-app-installation)" endpoint. + * + * You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. + */ + "apps/delete-installation": { + parameters: { + path: { + /** The unique identifier of the installation. */ + installation_id: components["parameters"]["installation-id"]; + }; + }; + responses: { + /** Response */ + 204: never; + 404: components["responses"]["not_found"]; + }; + }; + /** + * Creates an installation access token that enables a GitHub App to make authenticated API requests for the app's installation on an organization or individual account. Installation tokens expire one hour from the time you create them. Using an expired token produces a status code of `401 - Unauthorized`, and requires creating a new installation token. By default the installation token has access to all repositories that the installation can access. To restrict the access to specific repositories, you can provide the `repository_ids` when creating the token. When you omit `repository_ids`, the response does not contain the `repositories` key. + * + * You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. + */ + "apps/create-installation-access-token": { + parameters: { + path: { + /** The unique identifier of the installation. */ + installation_id: components["parameters"]["installation-id"]; + }; + }; + responses: { + /** Response */ + 201: { + content: { + "application/json": components["schemas"]["installation-token"]; + }; + }; + 401: components["responses"]["requires_authentication"]; + 403: components["responses"]["forbidden"]; + 404: components["responses"]["not_found"]; + 422: components["responses"]["validation_failed"]; + }; + requestBody: { + content: { + "application/json": { + /** @description List of repository names that the token should have access to */ + repositories?: string[]; + /** + * @description List of repository IDs that the token should have access to + * @example [ + * 1 + * ] + */ + repository_ids?: number[]; + permissions?: components["schemas"]["app-permissions"]; + }; + }; + }; + }; + /** + * Suspends a GitHub App on a user, organization, or business account, which blocks the app from accessing the account's resources. When a GitHub App is suspended, the app's access to the GitHub API or webhook events is blocked for that account. + * + * You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. + */ + "apps/suspend-installation": { + parameters: { + path: { + /** The unique identifier of the installation. */ + installation_id: components["parameters"]["installation-id"]; + }; + }; + responses: { + /** Response */ + 204: never; + 404: components["responses"]["not_found"]; + }; + }; + /** + * Removes a GitHub App installation suspension. + * + * You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. + */ + "apps/unsuspend-installation": { + parameters: { + path: { + /** The unique identifier of the installation. */ + installation_id: components["parameters"]["installation-id"]; + }; + }; + responses: { + /** Response */ + 204: never; + 404: components["responses"]["not_found"]; + }; + }; + /** + * **Deprecation Notice:** GitHub will discontinue the [OAuth Authorizations API](https://docs.github.com/rest/reference/oauth-authorizations/), which is used by integrations to create personal access tokens and OAuth tokens, and you must now create these tokens using our [web application flow](https://docs.github.com/developers/apps/authorizing-oauth-apps#web-application-flow). The [OAuth Authorizations API](https://docs.github.com/rest/reference/oauth-authorizations) will be removed on November, 13, 2020. For more information, including scheduled brownouts, see the [blog post](https://developer.github.com/changes/2020-02-14-deprecating-oauth-auth-endpoint/). + * + * You can use this API to list the set of OAuth applications that have been granted access to your account. Unlike the [list your authorizations](https://docs.github.com/rest/reference/oauth-authorizations#list-your-authorizations) API, this API does not manage individual tokens. This API will return one entry for each OAuth application that has been granted access to your account, regardless of the number of tokens an application has generated for your user. The list of OAuth applications returned matches what is shown on [the application authorizations settings screen within GitHub](https://github.com/settings/applications#authorized). The `scopes` returned are the union of scopes authorized for the application. For example, if an application has one token with `repo` scope and another token with `user` scope, the grant will return `["repo", "user"]`. + */ + "oauth-authorizations/list-grants": { + parameters: { + query: { + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + /** The client ID of your GitHub app. */ + client_id?: string; + }; + }; + responses: { + /** Response */ + 200: { + headers: {}; + content: { + "application/json": components["schemas"]["application-grant"][]; + }; + }; + 304: components["responses"]["not_modified"]; + 401: components["responses"]["requires_authentication"]; + 403: components["responses"]["forbidden"]; + 404: components["responses"]["not_found"]; + }; + }; + /** **Deprecation Notice:** GitHub will discontinue the [OAuth Authorizations API](https://docs.github.com/rest/reference/oauth-authorizations), which is used by integrations to create personal access tokens and OAuth tokens, and you must now create these tokens using our [web application flow](https://docs.github.com/apps/building-oauth-apps/authorizing-oauth-apps/#web-application-flow). The [OAuth Authorizations API](https://docs.github.com/rest/reference/oauth-authorizations) will be removed on November, 13, 2020. For more information, including scheduled brownouts, see the [blog post](https://developer.github.com/changes/2020-02-14-deprecating-oauth-auth-endpoint/). */ + "oauth-authorizations/get-grant": { + parameters: { + path: { + /** The unique identifier of the grant. */ + grant_id: components["parameters"]["grant-id"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["application-grant"]; + }; + }; + 304: components["responses"]["not_modified"]; + 401: components["responses"]["requires_authentication"]; + 403: components["responses"]["forbidden"]; + }; + }; + /** + * **Deprecation Notice:** GitHub will discontinue the [OAuth Authorizations API](https://docs.github.com/rest/reference/oauth-authorizations/), which is used by integrations to create personal access tokens and OAuth tokens, and you must now create these tokens using our [web application flow](https://docs.github.com/developers/apps/authorizing-oauth-apps#web-application-flow). The [OAuth Authorizations API](https://docs.github.com/rest/reference/oauth-authorizations/) will be removed on November, 13, 2020. For more information, including scheduled brownouts, see the [blog post](https://developer.github.com/changes/2020-02-14-deprecating-oauth-auth-endpoint/). + * + * Deleting an OAuth application's grant will also delete all OAuth tokens associated with the application for your user. Once deleted, the application has no access to your account and is no longer listed on [the application authorizations settings screen within GitHub](https://github.com/settings/applications#authorized). + */ + "oauth-authorizations/delete-grant": { + parameters: { + path: { + /** The unique identifier of the grant. */ + grant_id: components["parameters"]["grant-id"]; + }; + }; + responses: { + /** Response */ + 204: never; + 304: components["responses"]["not_modified"]; + 401: components["responses"]["requires_authentication"]; + 403: components["responses"]["forbidden"]; + }; + }; + /** + * OAuth application owners can revoke a grant for their OAuth application and a specific user. You must use [Basic Authentication](https://docs.github.com/rest/overview/other-authentication-methods#basic-authentication) when accessing this endpoint, using the OAuth application's `client_id` and `client_secret` as the username and password. You must also provide a valid OAuth `access_token` as an input parameter and the grant for the token's owner will be deleted. + * Deleting an OAuth application's grant will also delete all OAuth tokens associated with the application for the user. Once deleted, the application will have no access to the user's account and will no longer be listed on [the application authorizations settings screen within GitHub](https://github.com/settings/applications#authorized). + */ + "apps/delete-authorization": { + parameters: { + path: { + /** The client ID of the GitHub app. */ + client_id: components["parameters"]["client-id"]; + }; + }; + responses: { + /** Response */ + 204: never; + 422: components["responses"]["validation_failed"]; + }; + requestBody: { + content: { + "application/json": { + /** @description The OAuth access token used to authenticate to the GitHub API. */ + access_token: string; + }; + }; + }; + }; + /** OAuth applications can use a special API method for checking OAuth token validity without exceeding the normal rate limits for failed login attempts. Authentication works differently with this particular endpoint. You must use [Basic Authentication](https://docs.github.com/rest/overview/other-authentication-methods#basic-authentication) to use this endpoint, where the username is the OAuth application `client_id` and the password is its `client_secret`. Invalid tokens will return `404 NOT FOUND`. */ + "apps/check-token": { + parameters: { + path: { + /** The client ID of the GitHub app. */ + client_id: components["parameters"]["client-id"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["authorization"]; + }; + }; + 404: components["responses"]["not_found"]; + 422: components["responses"]["validation_failed"]; + }; + requestBody: { + content: { + "application/json": { + /** @description The access_token of the OAuth application. */ + access_token: string; + }; + }; + }; + }; + /** OAuth application owners can revoke a single token for an OAuth application. You must use [Basic Authentication](https://docs.github.com/rest/overview/other-authentication-methods#basic-authentication) when accessing this endpoint, using the OAuth application's `client_id` and `client_secret` as the username and password. */ + "apps/delete-token": { + parameters: { + path: { + /** The client ID of the GitHub app. */ + client_id: components["parameters"]["client-id"]; + }; + }; + responses: { + /** Response */ + 204: never; + 422: components["responses"]["validation_failed"]; + }; + requestBody: { + content: { + "application/json": { + /** @description The OAuth access token used to authenticate to the GitHub API. */ + access_token: string; + }; + }; + }; + }; + /** OAuth applications can use this API method to reset a valid OAuth token without end-user involvement. Applications must save the "token" property in the response because changes take effect immediately. You must use [Basic Authentication](https://docs.github.com/rest/overview/other-authentication-methods#basic-authentication) when accessing this endpoint, using the OAuth application's `client_id` and `client_secret` as the username and password. Invalid tokens will return `404 NOT FOUND`. */ + "apps/reset-token": { + parameters: { + path: { + /** The client ID of the GitHub app. */ + client_id: components["parameters"]["client-id"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["authorization"]; + }; + }; + 422: components["responses"]["validation_failed"]; + }; + requestBody: { + content: { + "application/json": { + /** @description The access_token of the OAuth application. */ + access_token: string; + }; + }; + }; + }; + /** Use a non-scoped user-to-server OAuth access token to create a repository scoped and/or permission scoped user-to-server OAuth access token. You can specify which repositories the token can access and which permissions are granted to the token. You must use [Basic Authentication](https://docs.github.com/rest/overview/other-authentication-methods#basic-authentication) when accessing this endpoint, using the OAuth application's `client_id` and `client_secret` as the username and password. Invalid tokens will return `404 NOT FOUND`. */ + "apps/scope-token": { + parameters: { + path: { + /** The client ID of the GitHub app. */ + client_id: components["parameters"]["client-id"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["authorization"]; + }; + }; + 401: components["responses"]["requires_authentication"]; + 403: components["responses"]["forbidden"]; + 404: components["responses"]["not_found"]; + 422: components["responses"]["validation_failed"]; + }; + requestBody: { + content: { + "application/json": { + /** + * @description The OAuth access token used to authenticate to the GitHub API. + * @example e72e16c7e42f292c6912e7710c838347ae178b4a + */ + access_token: string; + /** + * @description The name of the user or organization to scope the user-to-server access token to. **Required** unless `target_id` is specified. + * @example octocat + */ + target?: string; + /** + * @description The ID of the user or organization to scope the user-to-server access token to. **Required** unless `target` is specified. + * @example 1 + */ + target_id?: number; + /** @description The list of repository names to scope the user-to-server access token to. `repositories` may not be specified if `repository_ids` is specified. */ + repositories?: string[]; + /** + * @description The list of repository IDs to scope the user-to-server access token to. `repository_ids` may not be specified if `repositories` is specified. + * @example [ + * 1 + * ] + */ + repository_ids?: number[]; + permissions?: components["schemas"]["app-permissions"]; + }; + }; + }; + }; + /** + * **Note**: The `:app_slug` is just the URL-friendly name of your GitHub App. You can find this on the settings page for your GitHub App (e.g., `https://github.com/settings/apps/:app_slug`). + * + * If the GitHub App you specify is public, you can access this endpoint without authenticating. If the GitHub App you specify is private, you must authenticate with a [personal access token](https://docs.github.com/articles/creating-a-personal-access-token-for-the-command-line/) or an [installation access token](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-an-installation) to access this endpoint. + */ + "apps/get-by-slug": { + parameters: { + path: { + app_slug: components["parameters"]["app-slug"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["integration"]; + }; + }; + 403: components["responses"]["forbidden"]; + 404: components["responses"]["not_found"]; + }; + }; + /** **Deprecation Notice:** GitHub will discontinue the [OAuth Authorizations API](https://docs.github.com/rest/reference/oauth-authorizations), which is used by integrations to create personal access tokens and OAuth tokens, and you must now create these tokens using our [web application flow](https://docs.github.com/apps/building-oauth-apps/authorizing-oauth-apps/#web-application-flow). The [OAuth Authorizations API](https://docs.github.com/rest/reference/oauth-authorizations) will be removed on November, 13, 2020. For more information, including scheduled brownouts, see the [blog post](https://developer.github.com/changes/2020-02-14-deprecating-oauth-auth-endpoint/). */ + "oauth-authorizations/list-authorizations": { + parameters: { + query: { + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + /** The client ID of your GitHub app. */ + client_id?: string; + }; + }; + responses: { + /** Response */ + 200: { + headers: {}; + content: { + "application/json": components["schemas"]["authorization"][]; + }; + }; + 304: components["responses"]["not_modified"]; + 401: components["responses"]["requires_authentication"]; + 403: components["responses"]["forbidden"]; + 404: components["responses"]["not_found"]; + }; + }; + /** + * **Deprecation Notice:** GitHub will discontinue the [OAuth Authorizations API](https://docs.github.com/rest/reference/oauth-authorizations), which is used by integrations to create personal access tokens and OAuth tokens, and you must now create these tokens using our [web application flow](https://docs.github.com/developers/apps/authorizing-oauth-apps#web-application-flow). The [OAuth Authorizations API](https://docs.github.com/rest/reference/oauth-authorizations) will be removed on November, 13, 2020. For more information, including scheduled brownouts, see the [blog post](https://developer.github.com/changes/2020-02-14-deprecating-oauth-auth-endpoint/). + * + * **Warning:** Apps must use the [web application flow](https://docs.github.com/apps/building-oauth-apps/authorizing-oauth-apps/#web-application-flow) to obtain OAuth tokens that work with GitHub SAML organizations. OAuth tokens created using the Authorizations API will be unable to access GitHub SAML organizations. For more information, see the [blog post](https://developer.github.com/changes/2019-11-05-deprecated-passwords-and-authorizations-api). + * + * Creates OAuth tokens using [Basic Authentication](https://docs.github.com/rest/overview/other-authentication-methods#basic-authentication). If you have two-factor authentication setup, Basic Authentication for this endpoint requires that you use a one-time password (OTP) and your username and password instead of tokens. For more information, see "[Working with two-factor authentication](https://docs.github.com/rest/overview/other-authentication-methods#working-with-two-factor-authentication)." + * + * To create tokens for a particular OAuth application using this endpoint, you must authenticate as the user you want to create an authorization for and provide the app's client ID and secret, found on your OAuth application's settings page. If your OAuth application intends to create multiple tokens for one user, use `fingerprint` to differentiate between them. + * + * You can also create tokens on GitHub from the [personal access tokens settings](https://github.com/settings/tokens) page. Read more about these tokens in [the GitHub Help documentation](https://docs.github.com/articles/creating-an-access-token-for-command-line-use). + * + * Organizations that enforce SAML SSO require personal access tokens to be allowed. Read more about allowing tokens in [the GitHub Help documentation](https://docs.github.com/articles/about-identity-and-access-management-with-saml-single-sign-on). + */ + "oauth-authorizations/create-authorization": { + parameters: {}; + responses: { + /** Response */ + 201: { + headers: { + Location?: string; + }; + content: { + "application/json": components["schemas"]["authorization"]; + }; + }; + 304: components["responses"]["not_modified"]; + 401: components["responses"]["requires_authentication"]; + 403: components["responses"]["forbidden"]; + 410: components["responses"]["gone"]; + 422: components["responses"]["validation_failed"]; + }; + requestBody: { + content: { + "application/json": { + /** + * @description A list of scopes that this authorization is in. + * @example [ + * "public_repo", + * "user" + * ] + */ + scopes?: string[] | null; + /** + * @description A note to remind you what the OAuth token is for. + * @example Update all gems + */ + note?: string; + /** @description A URL to remind you what app the OAuth token is for. */ + note_url?: string; + /** @description The OAuth app client key for which to create the token. */ + client_id?: string; + /** @description The OAuth app client secret for which to create the token. */ + client_secret?: string; + /** @description A unique string to distinguish an authorization from others created for the same client ID and user. */ + fingerprint?: string; + }; + }; + }; + }; + /** + * **Deprecation Notice:** GitHub will discontinue the [OAuth Authorizations API](https://docs.github.com/rest/reference/oauth-authorizations/), which is used by integrations to create personal access tokens and OAuth tokens, and you must now create these tokens using our [web application flow](https://docs.github.com/developers/apps/authorizing-oauth-apps#web-application-flow). The [OAuth Authorizations API](https://docs.github.com/rest/reference/oauth-authorizations) will be removed on November, 13, 2020. For more information, including scheduled brownouts, see the [blog post](https://developer.github.com/changes/2020-02-14-deprecating-oauth-auth-endpoint/). + * + * **Warning:** Apps must use the [web application flow](https://docs.github.com/apps/building-oauth-apps/authorizing-oauth-apps/#web-application-flow) to obtain OAuth tokens that work with GitHub SAML organizations. OAuth tokens created using the Authorizations API will be unable to access GitHub SAML organizations. For more information, see the [blog post](https://developer.github.com/changes/2019-11-05-deprecated-passwords-and-authorizations-api). + * + * Creates a new authorization for the specified OAuth application, only if an authorization for that application doesn't already exist for the user. The URL includes the 20 character client ID for the OAuth app that is requesting the token. It returns the user's existing authorization for the application if one is present. Otherwise, it creates and returns a new one. + * + * If you have two-factor authentication setup, Basic Authentication for this endpoint requires that you use a one-time password (OTP) and your username and password instead of tokens. For more information, see "[Working with two-factor authentication](https://docs.github.com/rest/overview/other-authentication-methods#working-with-two-factor-authentication)." + * + * **Deprecation Notice:** GitHub will discontinue the [OAuth Authorizations API](https://docs.github.com/rest/reference/oauth-authorizations/), which is used by integrations to create personal access tokens and OAuth tokens, and you must now create these tokens using our [web application flow](https://docs.github.com/developers/apps/authorizing-oauth-apps#web-application-flow). The [OAuth Authorizations API](https://docs.github.com/rest/reference/oauth-authorizations) will be removed on November, 13, 2020. For more information, including scheduled brownouts, see the [blog post](https://developer.github.com/changes/2020-02-14-deprecating-oauth-auth-endpoint/). + */ + "oauth-authorizations/get-or-create-authorization-for-app": { + parameters: { + path: { + /** The client ID of the OAuth app. */ + client_id: components["parameters"]["oauth-client-id"]; + }; + }; + responses: { + /** if returning an existing token */ + 200: { + headers: { + Location?: string; + }; + content: { + "application/json": components["schemas"]["authorization"]; + }; + }; + /** **Deprecation Notice:** GitHub will discontinue the [OAuth Authorizations API](https://docs.github.com/rest/reference/oauth-authorizations), which is used by integrations to create personal access tokens and OAuth tokens, and you must now create these tokens using our [web application flow](https://docs.github.com/apps/building-oauth-apps/authorizing-oauth-apps/#web-application-flow). The [OAuth Authorizations API](https://docs.github.com/rest/reference/oauth-authorizations) will be removed on November, 13, 2020. For more information, including scheduled brownouts, see the [blog post](https://developer.github.com/changes/2020-02-14-deprecating-oauth-auth-endpoint/). */ + 201: { + headers: { + Location?: string; + }; + content: { + "application/json": components["schemas"]["authorization"]; + }; + }; + 304: components["responses"]["not_modified"]; + 401: components["responses"]["requires_authentication"]; + 403: components["responses"]["forbidden"]; + 422: components["responses"]["validation_failed"]; + }; + requestBody: { + content: { + "application/json": { + /** @description The OAuth app client secret for which to create the token. */ + client_secret: string; + /** + * @description A list of scopes that this authorization is in. + * @example [ + * "public_repo", + * "user" + * ] + */ + scopes?: string[] | null; + /** + * @description A note to remind you what the OAuth token is for. + * @example Update all gems + */ + note?: string; + /** @description A URL to remind you what app the OAuth token is for. */ + note_url?: string; + /** @description A unique string to distinguish an authorization from others created for the same client ID and user. */ + fingerprint?: string; + }; + }; + }; + }; + /** + * **Deprecation Notice:** GitHub will discontinue the [OAuth Authorizations API](https://docs.github.com/rest/reference/oauth-authorizations/), which is used by integrations to create personal access tokens and OAuth tokens, and you must now create these tokens using our [web application flow](https://docs.github.com/developers/apps/authorizing-oauth-apps#web-application-flow). The [OAuth Authorizations API](https://docs.github.com/rest/reference/oauth-authorizations) will be removed on November, 13, 2020. For more information, including scheduled brownouts, see the [blog post](https://developer.github.com/changes/2020-02-14-deprecating-oauth-auth-endpoint/). + * + * **Warning:** Apps must use the [web application flow](https://docs.github.com/apps/building-oauth-apps/authorizing-oauth-apps/#web-application-flow) to obtain OAuth tokens that work with GitHub SAML organizations. OAuth tokens created using the Authorizations API will be unable to access GitHub SAML organizations. For more information, see the [blog post](https://developer.github.com/changes/2019-11-05-deprecated-passwords-and-authorizations-api). + * + * This method will create a new authorization for the specified OAuth application, only if an authorization for that application and fingerprint do not already exist for the user. The URL includes the 20 character client ID for the OAuth app that is requesting the token. `fingerprint` is a unique string to distinguish an authorization from others created for the same client ID and user. It returns the user's existing authorization for the application if one is present. Otherwise, it creates and returns a new one. + * + * If you have two-factor authentication setup, Basic Authentication for this endpoint requires that you use a one-time password (OTP) and your username and password instead of tokens. For more information, see "[Working with two-factor authentication](https://docs.github.com/rest/overview/other-authentication-methods#working-with-two-factor-authentication)." + */ + "oauth-authorizations/get-or-create-authorization-for-app-and-fingerprint": { + parameters: { + path: { + /** The client ID of the OAuth app. */ + client_id: components["parameters"]["oauth-client-id"]; + fingerprint: string; + }; + }; + responses: { + /** if returning an existing token */ + 200: { + headers: { + Location?: string; + }; + content: { + "application/json": components["schemas"]["authorization"]; + }; + }; + /** Response if returning a new token */ + 201: { + headers: { + Location?: string; + }; + content: { + "application/json": components["schemas"]["authorization"]; + }; + }; + 422: components["responses"]["validation_failed"]; + }; + requestBody: { + content: { + "application/json": { + /** @description The OAuth app client secret for which to create the token. */ + client_secret: string; + /** + * @description A list of scopes that this authorization is in. + * @example [ + * "public_repo", + * "user" + * ] + */ + scopes?: string[] | null; + /** + * @description A note to remind you what the OAuth token is for. + * @example Update all gems + */ + note?: string; + /** @description A URL to remind you what app the OAuth token is for. */ + note_url?: string; + }; + }; + }; + }; + /** **Deprecation Notice:** GitHub will discontinue the [OAuth Authorizations API](https://docs.github.com/rest/reference/oauth-authorizations), which is used by integrations to create personal access tokens and OAuth tokens, and you must now create these tokens using our [web application flow](https://docs.github.com/apps/building-oauth-apps/authorizing-oauth-apps/#web-application-flow). The [OAuth Authorizations API](https://docs.github.com/rest/reference/oauth-authorizations) will be removed on November, 13, 2020. For more information, including scheduled brownouts, see the [blog post](https://developer.github.com/changes/2020-02-14-deprecating-oauth-auth-endpoint/). */ + "oauth-authorizations/get-authorization": { + parameters: { + path: { + /** The unique identifier of the authorization. */ + authorization_id: components["parameters"]["authorization-id"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["authorization"]; + }; + }; + 304: components["responses"]["not_modified"]; + 401: components["responses"]["requires_authentication"]; + 403: components["responses"]["forbidden"]; + }; + }; + /** **Deprecation Notice:** GitHub will discontinue the [OAuth Authorizations API](https://docs.github.com/rest/reference/oauth-authorizations), which is used by integrations to create personal access tokens and OAuth tokens, and you must now create these tokens using our [web application flow](https://docs.github.com/apps/building-oauth-apps/authorizing-oauth-apps/#web-application-flow). The [OAuth Authorizations API](https://docs.github.com/rest/reference/oauth-authorizations) will be removed on November, 13, 2020. For more information, including scheduled brownouts, see the [blog post](https://developer.github.com/changes/2020-02-14-deprecating-oauth-auth-endpoint/). */ + "oauth-authorizations/delete-authorization": { + parameters: { + path: { + /** The unique identifier of the authorization. */ + authorization_id: components["parameters"]["authorization-id"]; + }; + }; + responses: { + /** Response */ + 204: never; + 304: components["responses"]["not_modified"]; + 401: components["responses"]["requires_authentication"]; + 403: components["responses"]["forbidden"]; + }; + }; + /** + * **Deprecation Notice:** GitHub will discontinue the [OAuth Authorizations API](https://docs.github.com/rest/reference/oauth-authorizations/), which is used by integrations to create personal access tokens and OAuth tokens, and you must now create these tokens using our [web application flow](https://docs.github.com/developers/apps/authorizing-oauth-apps#web-application-flow). The [OAuth Authorizations API](https://docs.github.com/rest/reference/oauth-authorizations) will be removed on November, 13, 2020. For more information, including scheduled brownouts, see the [blog post](https://developer.github.com/changes/2020-02-14-deprecating-oauth-auth-endpoint/). + * + * If you have two-factor authentication setup, Basic Authentication for this endpoint requires that you use a one-time password (OTP) and your username and password instead of tokens. For more information, see "[Working with two-factor authentication](https://docs.github.com/rest/overview/other-authentication-methods#working-with-two-factor-authentication)." + * + * You can only send one of these scope keys at a time. + */ + "oauth-authorizations/update-authorization": { + parameters: { + path: { + /** The unique identifier of the authorization. */ + authorization_id: components["parameters"]["authorization-id"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["authorization"]; + }; + }; + 422: components["responses"]["validation_failed"]; + }; + requestBody: { + content: { + "application/json": { + /** + * @description A list of scopes that this authorization is in. + * @example [ + * "public_repo", + * "user" + * ] + */ + scopes?: string[] | null; + /** @description A list of scopes to add to this authorization. */ + add_scopes?: string[]; + /** @description A list of scopes to remove from this authorization. */ + remove_scopes?: string[]; + /** + * @description A note to remind you what the OAuth token is for. + * @example Update all gems + */ + note?: string; + /** @description A URL to remind you what app the OAuth token is for. */ + note_url?: string; + /** @description A unique string to distinguish an authorization from others created for the same client ID and user. */ + fingerprint?: string; + }; + }; + }; + }; + "codes-of-conduct/get-all-codes-of-conduct": { + parameters: {}; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["code-of-conduct"][]; + }; + }; + 304: components["responses"]["not_modified"]; + }; + }; + "codes-of-conduct/get-conduct-code": { + parameters: { + path: { + key: string; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["code-of-conduct"]; + }; + }; + 304: components["responses"]["not_modified"]; + 404: components["responses"]["not_found"]; + }; + }; + /** Lists all the emojis available to use on GitHub. */ + "emojis/get": { + parameters: {}; + responses: { + /** Response */ + 200: { + content: { + "application/json": { [key: string]: string }; + }; + }; + 304: components["responses"]["not_modified"]; + }; + }; + /** + * Returns aggregate usage metrics for your GitHub Enterprise Server 3.5+ instance for a specified time period up to 365 days. + * + * To use this endpoint, your GitHub Enterprise Server instance must be connected to GitHub Enterprise Cloud using GitHub Connect. You must enable Server Statistics, and for the API request provide your enterprise account name or organization name connected to the GitHub Enterprise Server. For more information, see "[Enabling Server Statistics for your enterprise](/admin/configuration/configuring-github-connect/enabling-server-statistics-for-your-enterprise)" in the GitHub Enterprise Server documentation. + * + * You'll need to use a personal access token: + * - If you connected your GitHub Enterprise Server to an enterprise account and enabled Server Statistics, you'll need a personal access token with the `read:enterprise` permission. + * - If you connected your GitHub Enterprise Server to an organization account and enabled Server Statistics, you'll need a personal access token with the `read:org` permission. + * + * For more information on creating a personal access token, see "[Creating a personal access token](/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token)." + */ + "enterprise-admin/get-server-statistics": { + parameters: { + path: { + /** The slug version of the enterprise name or the login of an organization. */ + enterprise_or_org: components["parameters"]["enterprise-or-org"]; + }; + query: { + /** A cursor, as given in the [Link header](https://docs.github.com/rest/overview/resources-in-the-rest-api#link-header). If specified, the query only searches for events after this cursor. */ + date_start?: string; + /** A cursor, as given in the [Link header](https://docs.github.com/rest/overview/resources-in-the-rest-api#link-header). If specified, the query only searches for events before this cursor. */ + date_end?: string; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["server-statistics"]; + }; + }; + }; + }; + /** + * Gets the total GitHub Actions cache usage for an enterprise. + * The data fetched using this API is refreshed approximately every 5 minutes, so values returned from this endpoint may take at least 5 minutes to get updated. + * You must authenticate using an access token with the `admin:enterprise` scope to use this endpoint. + */ + "actions/get-actions-cache-usage-for-enterprise": { + parameters: { + path: { + /** The slug version of the enterprise name. You can also substitute this value with the enterprise id. */ + enterprise: components["parameters"]["enterprise"]; + }; + }; + responses: { + /** Response */ + 200: { + headers: {}; + content: { + "application/json": components["schemas"]["actions-cache-usage-org-enterprise"]; + }; + }; + }; + }; + /** + * Sets the GitHub Actions OpenID Connect (OIDC) custom issuer policy for an enterprise. + * You must authenticate using an access token with the `admin:enterprise` scope to use this endpoint. + * GitHub Apps must have the `enterprise_administration:write` permission to use this endpoint. + */ + "actions/set-actions-oidc-custom-issuer-policy-for-enterprise": { + parameters: { + path: { + /** The slug version of the enterprise name. You can also substitute this value with the enterprise id. */ + enterprise: components["parameters"]["enterprise"]; + }; + }; + responses: { + /** Response */ + 204: never; + }; + requestBody: { + content: { + "application/json": components["schemas"]["actions-oidc-custom-issuer-policy-for-enterprise"]; + }; + }; + }; + /** + * Gets the GitHub Actions permissions policy for organizations and allowed actions and reusable workflows in an enterprise. + * + * You must authenticate using an access token with the `admin:enterprise` scope to use this endpoint. + */ + "enterprise-admin/get-github-actions-permissions-enterprise": { + parameters: { + path: { + /** The slug version of the enterprise name. You can also substitute this value with the enterprise id. */ + enterprise: components["parameters"]["enterprise"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["actions-enterprise-permissions"]; + }; + }; + }; + }; + /** + * Sets the GitHub Actions permissions policy for organizations and allowed actions and reusable workflows in an enterprise. + * + * You must authenticate using an access token with the `admin:enterprise` scope to use this endpoint. + */ + "enterprise-admin/set-github-actions-permissions-enterprise": { + parameters: { + path: { + /** The slug version of the enterprise name. You can also substitute this value with the enterprise id. */ + enterprise: components["parameters"]["enterprise"]; + }; + }; + responses: { + /** Response */ + 204: never; + }; + requestBody: { + content: { + "application/json": { + enabled_organizations: components["schemas"]["enabled-organizations"]; + allowed_actions?: components["schemas"]["allowed-actions"]; + }; + }; + }; + }; + /** + * Lists the organizations that are selected to have GitHub Actions enabled in an enterprise. To use this endpoint, the enterprise permission policy for `enabled_organizations` must be configured to `selected`. For more information, see "[Set GitHub Actions permissions for an enterprise](#set-github-actions-permissions-for-an-enterprise)." + * + * You must authenticate using an access token with the `admin:enterprise` scope to use this endpoint. + */ + "enterprise-admin/list-selected-organizations-enabled-github-actions-enterprise": { + parameters: { + path: { + /** The slug version of the enterprise name. You can also substitute this value with the enterprise id. */ + enterprise: components["parameters"]["enterprise"]; + }; + query: { + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": { + total_count: number; + organizations: components["schemas"]["organization-simple"][]; + }; + }; + }; + }; + }; + /** + * Replaces the list of selected organizations that are enabled for GitHub Actions in an enterprise. To use this endpoint, the enterprise permission policy for `enabled_organizations` must be configured to `selected`. For more information, see "[Set GitHub Actions permissions for an enterprise](#set-github-actions-permissions-for-an-enterprise)." + * + * You must authenticate using an access token with the `admin:enterprise` scope to use this endpoint. + */ + "enterprise-admin/set-selected-organizations-enabled-github-actions-enterprise": { + parameters: { + path: { + /** The slug version of the enterprise name. You can also substitute this value with the enterprise id. */ + enterprise: components["parameters"]["enterprise"]; + }; + }; + responses: { + /** Response */ + 204: never; + }; + requestBody: { + content: { + "application/json": { + /** @description List of organization IDs to enable for GitHub Actions. */ + selected_organization_ids: number[]; + }; + }; + }; + }; + /** + * Adds an organization to the list of selected organizations that are enabled for GitHub Actions in an enterprise. To use this endpoint, the enterprise permission policy for `enabled_organizations` must be configured to `selected`. For more information, see "[Set GitHub Actions permissions for an enterprise](#set-github-actions-permissions-for-an-enterprise)." + * + * You must authenticate using an access token with the `admin:enterprise` scope to use this endpoint. + */ + "enterprise-admin/enable-selected-organization-github-actions-enterprise": { + parameters: { + path: { + /** The slug version of the enterprise name. You can also substitute this value with the enterprise id. */ + enterprise: components["parameters"]["enterprise"]; + /** The unique identifier of the organization. */ + org_id: components["parameters"]["org-id"]; + }; + }; + responses: { + /** Response */ + 204: never; + }; + }; + /** + * Removes an organization from the list of selected organizations that are enabled for GitHub Actions in an enterprise. To use this endpoint, the enterprise permission policy for `enabled_organizations` must be configured to `selected`. For more information, see "[Set GitHub Actions permissions for an enterprise](#set-github-actions-permissions-for-an-enterprise)." + * + * You must authenticate using an access token with the `admin:enterprise` scope to use this endpoint. + */ + "enterprise-admin/disable-selected-organization-github-actions-enterprise": { + parameters: { + path: { + /** The slug version of the enterprise name. You can also substitute this value with the enterprise id. */ + enterprise: components["parameters"]["enterprise"]; + /** The unique identifier of the organization. */ + org_id: components["parameters"]["org-id"]; + }; + }; + responses: { + /** Response */ + 204: never; + }; + }; + /** + * Gets the selected actions and reusable workflows that are allowed in an enterprise. To use this endpoint, the enterprise permission policy for `allowed_actions` must be configured to `selected`. For more information, see "[Set GitHub Actions permissions for an enterprise](#set-github-actions-permissions-for-an-enterprise)." + * + * You must authenticate using an access token with the `admin:enterprise` scope to use this endpoint. + */ + "enterprise-admin/get-allowed-actions-enterprise": { + parameters: { + path: { + /** The slug version of the enterprise name. You can also substitute this value with the enterprise id. */ + enterprise: components["parameters"]["enterprise"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["selected-actions"]; + }; + }; + }; + }; + /** + * Sets the actions and reusable workflows that are allowed in an enterprise. To use this endpoint, the enterprise permission policy for `allowed_actions` must be configured to `selected`. For more information, see "[Set GitHub Actions permissions for an enterprise](#set-github-actions-permissions-for-an-enterprise)." + * + * You must authenticate using an access token with the `admin:enterprise` scope to use this endpoint. + */ + "enterprise-admin/set-allowed-actions-enterprise": { + parameters: { + path: { + /** The slug version of the enterprise name. You can also substitute this value with the enterprise id. */ + enterprise: components["parameters"]["enterprise"]; + }; + }; + responses: { + /** Response */ + 204: never; + }; + requestBody: { + content: { + "application/json": components["schemas"]["selected-actions"]; + }; + }; + }; + /** + * Gets the default workflow permissions granted to the `GITHUB_TOKEN` when running workflows in an enterprise, + * as well as whether GitHub Actions can submit approving pull request reviews. For more information, see + * "[Enforcing a policy for workflow permissions in your enterprise](https://docs.github.com/enterprise-cloud@latest/admin/policies/enforcing-policies-for-your-enterprise/enforcing-policies-for-github-actions-in-your-enterprise#enforcing-a-policy-for-workflow-permissions-in-your-enterprise)." + * + * You must authenticate using an access token with the `admin:enterprise` scope to use this endpoint. + * GitHub Apps must have the `enterprise_administration:write` permission to use this endpoint. + */ + "actions/get-github-actions-default-workflow-permissions-enterprise": { + parameters: { + path: { + /** The slug version of the enterprise name. You can also substitute this value with the enterprise id. */ + enterprise: components["parameters"]["enterprise"]; + }; + }; + responses: { + /** Success response */ + 200: { + content: { + "application/json": components["schemas"]["actions-get-default-workflow-permissions"]; + }; + }; + }; + }; + /** + * Sets the default workflow permissions granted to the `GITHUB_TOKEN` when running workflows in an enterprise, and sets + * whether GitHub Actions can submit approving pull request reviews. For more information, see + * "[Enforcing a policy for workflow permissions in your enterprise](https://docs.github.com/enterprise-cloud@latest/admin/policies/enforcing-policies-for-your-enterprise/enforcing-policies-for-github-actions-in-your-enterprise#enforcing-a-policy-for-workflow-permissions-in-your-enterprise)." + * + * You must authenticate using an access token with the `admin:enterprise` scope to use this endpoint. + * GitHub Apps must have the `enterprise_administration:write` permission to use this endpoint. + */ + "actions/set-github-actions-default-workflow-permissions-enterprise": { + parameters: { + path: { + /** The slug version of the enterprise name. You can also substitute this value with the enterprise id. */ + enterprise: components["parameters"]["enterprise"]; + }; + }; + responses: { + /** Success response */ + 204: never; + }; + requestBody: { + content: { + "application/json": components["schemas"]["actions-set-default-workflow-permissions"]; + }; + }; + }; + /** + * Lists all self-hosted runner groups for an enterprise. + * + * You must authenticate using an access token with the `manage_runners:enterprise` scope to use this endpoint. + */ + "enterprise-admin/list-self-hosted-runner-groups-for-enterprise": { + parameters: { + path: { + /** The slug version of the enterprise name. You can also substitute this value with the enterprise id. */ + enterprise: components["parameters"]["enterprise"]; + }; + query: { + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + /** Only return runner groups that are allowed to be used by this organization. */ + visible_to_organization?: components["parameters"]["visible-to-organization"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": { + total_count: number; + runner_groups: components["schemas"]["runner-groups-enterprise"][]; + }; + }; + }; + }; + }; + /** + * Creates a new self-hosted runner group for an enterprise. + * + * You must authenticate using an access token with the `manage_runners:enterprise` scope to use this endpoint. + */ + "enterprise-admin/create-self-hosted-runner-group-for-enterprise": { + parameters: { + path: { + /** The slug version of the enterprise name. You can also substitute this value with the enterprise id. */ + enterprise: components["parameters"]["enterprise"]; + }; + }; + responses: { + /** Response */ + 201: { + content: { + "application/json": components["schemas"]["runner-groups-enterprise"]; + }; + }; + }; + requestBody: { + content: { + "application/json": { + /** @description Name of the runner group. */ + name: string; + /** + * @description Visibility of a runner group. You can select all organizations or select individual organization. + * @enum {string} + */ + visibility?: "selected" | "all"; + /** @description List of organization IDs that can access the runner group. */ + selected_organization_ids?: number[]; + /** @description List of runner IDs to add to the runner group. */ + runners?: number[]; + /** + * @description Whether the runner group can be used by `public` repositories. + * @default false + */ + allows_public_repositories?: boolean; + /** + * @description If `true`, the runner group will be restricted to running only the workflows specified in the `selected_workflows` array. + * @default false + */ + restricted_to_workflows?: boolean; + /** @description List of workflows the runner group should be allowed to run. This setting will be ignored unless `restricted_to_workflows` is set to `true`. */ + selected_workflows?: string[]; + }; + }; + }; + }; + /** + * Gets a specific self-hosted runner group for an enterprise. + * + * You must authenticate using an access token with the `manage_runners:enterprise` scope to use this endpoint. + */ + "enterprise-admin/get-self-hosted-runner-group-for-enterprise": { + parameters: { + path: { + /** The slug version of the enterprise name. You can also substitute this value with the enterprise id. */ + enterprise: components["parameters"]["enterprise"]; + /** Unique identifier of the self-hosted runner group. */ + runner_group_id: components["parameters"]["runner-group-id"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["runner-groups-enterprise"]; + }; + }; + }; + }; + /** + * Deletes a self-hosted runner group for an enterprise. + * + * You must authenticate using an access token with the `manage_runners:enterprise` scope to use this endpoint. + */ + "enterprise-admin/delete-self-hosted-runner-group-from-enterprise": { + parameters: { + path: { + /** The slug version of the enterprise name. You can also substitute this value with the enterprise id. */ + enterprise: components["parameters"]["enterprise"]; + /** Unique identifier of the self-hosted runner group. */ + runner_group_id: components["parameters"]["runner-group-id"]; + }; + }; + responses: { + /** Response */ + 204: never; + }; + }; + /** + * Updates the `name` and `visibility` of a self-hosted runner group in an enterprise. + * + * You must authenticate using an access token with the `manage_runners:enterprise` scope to use this endpoint. + */ + "enterprise-admin/update-self-hosted-runner-group-for-enterprise": { + parameters: { + path: { + /** The slug version of the enterprise name. You can also substitute this value with the enterprise id. */ + enterprise: components["parameters"]["enterprise"]; + /** Unique identifier of the self-hosted runner group. */ + runner_group_id: components["parameters"]["runner-group-id"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["runner-groups-enterprise"]; + }; + }; + }; + requestBody: { + content: { + "application/json": { + /** @description Name of the runner group. */ + name?: string; + /** + * @description Visibility of a runner group. You can select all organizations or select individual organizations. + * @default all + * @enum {string} + */ + visibility?: "selected" | "all"; + /** + * @description Whether the runner group can be used by `public` repositories. + * @default false + */ + allows_public_repositories?: boolean; + /** + * @description If `true`, the runner group will be restricted to running only the workflows specified in the `selected_workflows` array. + * @default false + */ + restricted_to_workflows?: boolean; + /** @description List of workflows the runner group should be allowed to run. This setting will be ignored unless `restricted_to_workflows` is set to `true`. */ + selected_workflows?: string[]; + }; + }; + }; + }; + /** + * Lists the organizations with access to a self-hosted runner group. + * + * You must authenticate using an access token with the `manage_runners:enterprise` scope to use this endpoint. + */ + "enterprise-admin/list-org-access-to-self-hosted-runner-group-in-enterprise": { + parameters: { + path: { + /** The slug version of the enterprise name. You can also substitute this value with the enterprise id. */ + enterprise: components["parameters"]["enterprise"]; + /** Unique identifier of the self-hosted runner group. */ + runner_group_id: components["parameters"]["runner-group-id"]; + }; + query: { + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": { + total_count: number; + organizations: components["schemas"]["organization-simple"][]; + }; + }; + }; + }; + }; + /** + * Replaces the list of organizations that have access to a self-hosted runner configured in an enterprise. + * + * You must authenticate using an access token with the `manage_runners:enterprise` scope to use this endpoint. + */ + "enterprise-admin/set-org-access-to-self-hosted-runner-group-in-enterprise": { + parameters: { + path: { + /** The slug version of the enterprise name. You can also substitute this value with the enterprise id. */ + enterprise: components["parameters"]["enterprise"]; + /** Unique identifier of the self-hosted runner group. */ + runner_group_id: components["parameters"]["runner-group-id"]; + }; + }; + responses: { + /** Response */ + 204: never; + }; + requestBody: { + content: { + "application/json": { + /** @description List of organization IDs that can access the runner group. */ + selected_organization_ids: number[]; + }; + }; + }; + }; + /** + * Adds an organization to the list of selected organizations that can access a self-hosted runner group. The runner group must have `visibility` set to `selected`. For more information, see "[Create a self-hosted runner group for an enterprise](#create-a-self-hosted-runner-group-for-an-enterprise)." + * + * You must authenticate using an access token with the `manage_runners:enterprise` scope to use this endpoint. + */ + "enterprise-admin/add-org-access-to-self-hosted-runner-group-in-enterprise": { + parameters: { + path: { + /** The slug version of the enterprise name. You can also substitute this value with the enterprise id. */ + enterprise: components["parameters"]["enterprise"]; + /** Unique identifier of the self-hosted runner group. */ + runner_group_id: components["parameters"]["runner-group-id"]; + /** The unique identifier of the organization. */ + org_id: components["parameters"]["org-id"]; + }; + }; + responses: { + /** Response */ + 204: never; + }; + }; + /** + * Removes an organization from the list of selected organizations that can access a self-hosted runner group. The runner group must have `visibility` set to `selected`. For more information, see "[Create a self-hosted runner group for an enterprise](#create-a-self-hosted-runner-group-for-an-enterprise)." + * + * You must authenticate using an access token with the `manage_runners:enterprise` scope to use this endpoint. + */ + "enterprise-admin/remove-org-access-to-self-hosted-runner-group-in-enterprise": { + parameters: { + path: { + /** The slug version of the enterprise name. You can also substitute this value with the enterprise id. */ + enterprise: components["parameters"]["enterprise"]; + /** Unique identifier of the self-hosted runner group. */ + runner_group_id: components["parameters"]["runner-group-id"]; + /** The unique identifier of the organization. */ + org_id: components["parameters"]["org-id"]; + }; + }; + responses: { + /** Response */ + 204: never; + }; + }; + /** + * Lists the self-hosted runners that are in a specific enterprise group. + * + * You must authenticate using an access token with the `manage_runners:enterprise` scope to use this endpoint. + */ + "enterprise-admin/list-self-hosted-runners-in-group-for-enterprise": { + parameters: { + path: { + /** The slug version of the enterprise name. You can also substitute this value with the enterprise id. */ + enterprise: components["parameters"]["enterprise"]; + /** Unique identifier of the self-hosted runner group. */ + runner_group_id: components["parameters"]["runner-group-id"]; + }; + query: { + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + }; + }; + responses: { + /** Response */ + 200: { + headers: {}; + content: { + "application/json": { + total_count: number; + runners: components["schemas"]["runner"][]; + }; + }; + }; + }; + }; + /** + * Replaces the list of self-hosted runners that are part of an enterprise runner group. + * + * You must authenticate using an access token with the `manage_runners:enterprise` scope to use this endpoint. + */ + "enterprise-admin/set-self-hosted-runners-in-group-for-enterprise": { + parameters: { + path: { + /** The slug version of the enterprise name. You can also substitute this value with the enterprise id. */ + enterprise: components["parameters"]["enterprise"]; + /** Unique identifier of the self-hosted runner group. */ + runner_group_id: components["parameters"]["runner-group-id"]; + }; + }; + responses: { + /** Response */ + 204: never; + }; + requestBody: { + content: { + "application/json": { + /** @description List of runner IDs to add to the runner group. */ + runners: number[]; + }; + }; + }; + }; + /** + * Adds a self-hosted runner to a runner group configured in an enterprise. + * + * You must authenticate using an access token with the `manage_runners:enterprise` + * scope to use this endpoint. + */ + "enterprise-admin/add-self-hosted-runner-to-group-for-enterprise": { + parameters: { + path: { + /** The slug version of the enterprise name. You can also substitute this value with the enterprise id. */ + enterprise: components["parameters"]["enterprise"]; + /** Unique identifier of the self-hosted runner group. */ + runner_group_id: components["parameters"]["runner-group-id"]; + /** Unique identifier of the self-hosted runner. */ + runner_id: components["parameters"]["runner-id"]; + }; + }; + responses: { + /** Response */ + 204: never; + }; + }; + /** + * Removes a self-hosted runner from a group configured in an enterprise. The runner is then returned to the default group. + * + * You must authenticate using an access token with the `manage_runners:enterprise` scope to use this endpoint. + */ + "enterprise-admin/remove-self-hosted-runner-from-group-for-enterprise": { + parameters: { + path: { + /** The slug version of the enterprise name. You can also substitute this value with the enterprise id. */ + enterprise: components["parameters"]["enterprise"]; + /** Unique identifier of the self-hosted runner group. */ + runner_group_id: components["parameters"]["runner-group-id"]; + /** Unique identifier of the self-hosted runner. */ + runner_id: components["parameters"]["runner-id"]; + }; + }; + responses: { + /** Response */ + 204: never; + }; + }; + /** + * Lists all self-hosted runners configured for an enterprise. + * + * You must authenticate using an access token with the `manage_runners:enterprise` scope to use this endpoint. + */ + "enterprise-admin/list-self-hosted-runners-for-enterprise": { + parameters: { + path: { + /** The slug version of the enterprise name. You can also substitute this value with the enterprise id. */ + enterprise: components["parameters"]["enterprise"]; + }; + query: { + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + }; + }; + responses: { + /** Response */ + 200: { + headers: {}; + content: { + "application/json": { + total_count?: number; + runners?: components["schemas"]["runner"][]; + }; + }; + }; + }; + }; + /** + * Lists binaries for the runner application that you can download and run. + * + * You must authenticate using an access token with the `manage_runners:enterprise` scope to use this endpoint. + */ + "enterprise-admin/list-runner-applications-for-enterprise": { + parameters: { + path: { + /** The slug version of the enterprise name. You can also substitute this value with the enterprise id. */ + enterprise: components["parameters"]["enterprise"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["runner-application"][]; + }; + }; + }; + }; + /** + * Returns a token that you can pass to the `config` script. The token expires after one hour. + * + * You must authenticate using an access token with the `manage_runners:enterprise` scope to use this endpoint. + * + * #### Example using registration token + * + * Configure your self-hosted runner, replacing `TOKEN` with the registration token provided by this endpoint. + * + * ``` + * ./config.sh --url https://github.com/enterprises/octo-enterprise --token TOKEN + * ``` + */ + "enterprise-admin/create-registration-token-for-enterprise": { + parameters: { + path: { + /** The slug version of the enterprise name. You can also substitute this value with the enterprise id. */ + enterprise: components["parameters"]["enterprise"]; + }; + }; + responses: { + /** Response */ + 201: { + content: { + "application/json": components["schemas"]["authentication-token"]; + }; + }; + }; + }; + /** + * Returns a token that you can pass to the `config` script to remove a self-hosted runner from an enterprise. The token expires after one hour. + * + * You must authenticate using an access token with the `manage_runners:enterprise` scope to use this endpoint. + * + * #### Example using remove token + * + * To remove your self-hosted runner from an enterprise, replace `TOKEN` with the remove token provided by this + * endpoint. + * + * ``` + * ./config.sh remove --token TOKEN + * ``` + */ + "enterprise-admin/create-remove-token-for-enterprise": { + parameters: { + path: { + /** The slug version of the enterprise name. You can also substitute this value with the enterprise id. */ + enterprise: components["parameters"]["enterprise"]; + }; + }; + responses: { + /** Response */ + 201: { + content: { + "application/json": components["schemas"]["authentication-token"]; + }; + }; + }; + }; + /** + * Gets a specific self-hosted runner configured in an enterprise. + * + * You must authenticate using an access token with the `manage_runners:enterprise` scope to use this endpoint. + */ + "enterprise-admin/get-self-hosted-runner-for-enterprise": { + parameters: { + path: { + /** The slug version of the enterprise name. You can also substitute this value with the enterprise id. */ + enterprise: components["parameters"]["enterprise"]; + /** Unique identifier of the self-hosted runner. */ + runner_id: components["parameters"]["runner-id"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["runner"]; + }; + }; + }; + }; + /** + * Forces the removal of a self-hosted runner from an enterprise. You can use this endpoint to completely remove the runner when the machine you were using no longer exists. + * + * You must authenticate using an access token with the `manage_runners:enterprise` scope to use this endpoint. + */ + "enterprise-admin/delete-self-hosted-runner-from-enterprise": { + parameters: { + path: { + /** The slug version of the enterprise name. You can also substitute this value with the enterprise id. */ + enterprise: components["parameters"]["enterprise"]; + /** Unique identifier of the self-hosted runner. */ + runner_id: components["parameters"]["runner-id"]; + }; + }; + responses: { + /** Response */ + 204: never; + }; + }; + /** + * Lists all labels for a self-hosted runner configured in an enterprise. + * + * You must authenticate using an access token with the `manage_runners:enterprise` scope to use this endpoint. + */ + "enterprise-admin/list-labels-for-self-hosted-runner-for-enterprise": { + parameters: { + path: { + /** The slug version of the enterprise name. You can also substitute this value with the enterprise id. */ + enterprise: components["parameters"]["enterprise"]; + /** Unique identifier of the self-hosted runner. */ + runner_id: components["parameters"]["runner-id"]; + }; + }; + responses: { + 200: components["responses"]["actions_runner_labels"]; + 404: components["responses"]["not_found"]; + }; + }; + /** + * Remove all previous custom labels and set the new custom labels for a specific + * self-hosted runner configured in an enterprise. + * + * You must authenticate using an access token with the `manage_runners:enterprise` scope to use this endpoint. + */ + "enterprise-admin/set-custom-labels-for-self-hosted-runner-for-enterprise": { + parameters: { + path: { + /** The slug version of the enterprise name. You can also substitute this value with the enterprise id. */ + enterprise: components["parameters"]["enterprise"]; + /** Unique identifier of the self-hosted runner. */ + runner_id: components["parameters"]["runner-id"]; + }; + }; + responses: { + 200: components["responses"]["actions_runner_labels"]; + 404: components["responses"]["not_found"]; + 422: components["responses"]["validation_failed_simple"]; + }; + requestBody: { + content: { + "application/json": { + /** @description The names of the custom labels to set for the runner. You can pass an empty array to remove all custom labels. */ + labels: string[]; + }; + }; + }; + }; + /** + * Add custom labels to a self-hosted runner configured in an enterprise. + * + * You must authenticate using an access token with the `manage_runners:enterprise` scope to use this endpoint. + */ + "enterprise-admin/add-custom-labels-to-self-hosted-runner-for-enterprise": { + parameters: { + path: { + /** The slug version of the enterprise name. You can also substitute this value with the enterprise id. */ + enterprise: components["parameters"]["enterprise"]; + /** Unique identifier of the self-hosted runner. */ + runner_id: components["parameters"]["runner-id"]; + }; + }; + responses: { + 200: components["responses"]["actions_runner_labels"]; + 404: components["responses"]["not_found"]; + 422: components["responses"]["validation_failed_simple"]; + }; + requestBody: { + content: { + "application/json": { + /** @description The names of the custom labels to add to the runner. */ + labels: string[]; + }; + }; + }; + }; + /** + * Remove all custom labels from a self-hosted runner configured in an + * enterprise. Returns the remaining read-only labels from the runner. + * + * You must authenticate using an access token with the `manage_runners:enterprise` scope to use this endpoint. + */ + "enterprise-admin/remove-all-custom-labels-from-self-hosted-runner-for-enterprise": { + parameters: { + path: { + /** The slug version of the enterprise name. You can also substitute this value with the enterprise id. */ + enterprise: components["parameters"]["enterprise"]; + /** Unique identifier of the self-hosted runner. */ + runner_id: components["parameters"]["runner-id"]; + }; + }; + responses: { + 200: components["responses"]["actions_runner_labels_readonly"]; + 404: components["responses"]["not_found"]; + 422: components["responses"]["validation_failed_simple"]; + }; + }; + /** + * Remove a custom label from a self-hosted runner configured + * in an enterprise. Returns the remaining labels from the runner. + * + * This endpoint returns a `404 Not Found` status if the custom label is not + * present on the runner. + * + * You must authenticate using an access token with the `manage_runners:enterprise` scope to use this endpoint. + */ + "enterprise-admin/remove-custom-label-from-self-hosted-runner-for-enterprise": { + parameters: { + path: { + /** The slug version of the enterprise name. You can also substitute this value with the enterprise id. */ + enterprise: components["parameters"]["enterprise"]; + /** Unique identifier of the self-hosted runner. */ + runner_id: components["parameters"]["runner-id"]; + /** The name of a self-hosted runner's custom label. */ + name: components["parameters"]["runner-label-name"]; + }; + }; + responses: { + 200: components["responses"]["actions_runner_labels"]; + 404: components["responses"]["not_found"]; + 422: components["responses"]["validation_failed_simple"]; + }; + }; + /** Gets the audit log for an enterprise. To use this endpoint, you must be an enterprise admin, and you must use an access token with the `admin:enterprise` scope. */ + "enterprise-admin/get-audit-log": { + parameters: { + path: { + /** The slug version of the enterprise name. You can also substitute this value with the enterprise id. */ + enterprise: components["parameters"]["enterprise"]; + }; + query: { + /** A search phrase. For more information, see [Searching the audit log](https://docs.github.com/github/setting-up-and-managing-organizations-and-teams/reviewing-the-audit-log-for-your-organization#searching-the-audit-log). */ + phrase?: components["parameters"]["audit-log-phrase"]; + /** + * The event types to include: + * + * - `web` - returns web (non-Git) events. + * - `git` - returns Git events. + * - `all` - returns both web and Git events. + * + * The default is `web`. + */ + include?: components["parameters"]["audit-log-include"]; + /** A cursor, as given in the [Link header](https://docs.github.com/rest/overview/resources-in-the-rest-api#link-header). If specified, the query only searches for events after this cursor. */ + after?: components["parameters"]["audit-log-after"]; + /** A cursor, as given in the [Link header](https://docs.github.com/rest/overview/resources-in-the-rest-api#link-header). If specified, the query only searches for events before this cursor. */ + before?: components["parameters"]["audit-log-before"]; + /** + * The order of audit log events. To list newest events first, specify `desc`. To list oldest events first, specify `asc`. + * + * The default is `desc`. + */ + order?: components["parameters"]["audit-log-order"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["audit-log-event"][]; + }; + }; + }; + }; + /** + * Lists code scanning alerts for the default branch for all eligible repositories in an enterprise. Eligible repositories are repositories that are owned by organizations that you own or for which you are a security manager. For more information, see "[Managing security managers in your organization](https://docs.github.com/organizations/managing-peoples-access-to-your-organization-with-roles/managing-security-managers-in-your-organization)." + * + * To use this endpoint, you must be a member of the enterprise, + * and you must use an access token with the `repo` scope or `security_events` scope. + */ + "code-scanning/list-alerts-for-enterprise": { + parameters: { + path: { + /** The slug version of the enterprise name. You can also substitute this value with the enterprise id. */ + enterprise: components["parameters"]["enterprise"]; + }; + query: { + /** The name of a code scanning tool. Only results by this tool will be listed. You can specify the tool by using either `tool_name` or `tool_guid`, but not both. */ + tool_name?: components["parameters"]["tool-name"]; + /** The GUID of a code scanning tool. Only results by this tool will be listed. Note that some code scanning tools may not include a GUID in their analysis data. You can specify the tool by using either `tool_guid` or `tool_name`, but not both. */ + tool_guid?: components["parameters"]["tool-guid"]; + /** A cursor, as given in the [Link header](https://docs.github.com/rest/overview/resources-in-the-rest-api#link-header). If specified, the query only searches for events before this cursor. */ + before?: components["parameters"]["pagination-before"]; + /** A cursor, as given in the [Link header](https://docs.github.com/rest/overview/resources-in-the-rest-api#link-header). If specified, the query only searches for events after this cursor. */ + after?: components["parameters"]["pagination-after"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** The direction to sort the results by. */ + direction?: components["parameters"]["direction"]; + /** If specified, only code scanning alerts with this state will be returned. */ + state?: components["schemas"]["code-scanning-alert-state"]; + /** The property by which to sort the results. */ + sort?: "created" | "updated"; + }; + }; + responses: { + /** Response */ + 200: { + headers: {}; + content: { + "application/json": components["schemas"]["code-scanning-organization-alert-items"][]; + }; + }; + 403: components["responses"]["code_scanning_forbidden_read"]; + 404: components["responses"]["not_found"]; + 503: components["responses"]["service_unavailable"]; + }; + }; + /** + * Lists secret scanning alerts for eligible repositories in an enterprise, from newest to oldest. + * To use this endpoint, you must be a member of the enterprise, and you must use an access token with the `repo` scope or `security_events` scope. Alerts are only returned for organizations in the enterprise for which you are an organization owner or a [security manager](https://docs.github.com/organizations/managing-peoples-access-to-your-organization-with-roles/managing-security-managers-in-your-organization). + */ + "secret-scanning/list-alerts-for-enterprise": { + parameters: { + path: { + /** The slug version of the enterprise name. You can also substitute this value with the enterprise id. */ + enterprise: components["parameters"]["enterprise"]; + }; + query: { + /** Set to `open` or `resolved` to only list secret scanning alerts in a specific state. */ + state?: components["parameters"]["secret-scanning-alert-state"]; + /** + * A comma-separated list of secret types to return. By default all secret types are returned. + * See "[Secret scanning patterns](https://docs.github.com/code-security/secret-scanning/secret-scanning-patterns#supported-secrets-for-advanced-security)" + * for a complete list of secret types. + */ + secret_type?: components["parameters"]["secret-scanning-alert-secret-type"]; + /** A comma-separated list of resolutions. Only secret scanning alerts with one of these resolutions are listed. Valid resolutions are `false_positive`, `wont_fix`, `revoked`, `pattern_edited`, `pattern_deleted` or `used_in_tests`. */ + resolution?: components["parameters"]["secret-scanning-alert-resolution"]; + /** The property to sort the results by. `created` means when the alert was created. `updated` means when the alert was updated or resolved. */ + sort?: components["parameters"]["secret-scanning-alert-sort"]; + /** The direction to sort the results by. */ + direction?: components["parameters"]["direction"]; + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** A cursor, as given in the [Link header](https://docs.github.com/rest/overview/resources-in-the-rest-api#link-header). If specified, the query only searches for events before this cursor. */ + before?: components["parameters"]["pagination-before"]; + /** A cursor, as given in the [Link header](https://docs.github.com/rest/overview/resources-in-the-rest-api#link-header). If specified, the query only searches for events after this cursor. */ + after?: components["parameters"]["pagination-after"]; + }; + }; + responses: { + /** Response */ + 200: { + headers: {}; + content: { + "application/json": components["schemas"]["organization-secret-scanning-alert"][]; + }; + }; + 404: components["responses"]["not_found"]; + 503: components["responses"]["service_unavailable"]; + }; + }; + /** + * Gets the summary of the free and paid GitHub Actions minutes used. + * + * Paid minutes only apply to workflows in private repositories that use GitHub-hosted runners. Minutes used is listed for each GitHub-hosted runner operating system. Any job re-runs are also included in the usage. The usage does not include the multiplier for macOS and Windows runners and is not rounded up to the nearest whole minute. For more information, see "[Managing billing for GitHub Actions](https://docs.github.com/github/setting-up-and-managing-billing-and-payments-on-github/managing-billing-for-github-actions)". + * + * The authenticated user must be an enterprise admin. + */ + "billing/get-github-actions-billing-ghe": { + parameters: { + path: { + /** The slug version of the enterprise name. You can also substitute this value with the enterprise id. */ + enterprise: components["parameters"]["enterprise"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["actions-billing-usage"]; + }; + }; + }; + }; + /** + * Gets the GitHub Advanced Security active committers for an enterprise per repository. + * + * Each distinct user login across all repositories is counted as a single Advanced Security seat, so the `total_advanced_security_committers` is not the sum of active_users for each repository. + * + * The total number of repositories with committer information is tracked by the `total_count` field. + */ + "billing/get-github-advanced-security-billing-ghe": { + parameters: { + path: { + /** The slug version of the enterprise name. You can also substitute this value with the enterprise id. */ + enterprise: components["parameters"]["enterprise"]; + }; + query: { + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + }; + }; + responses: { + /** Success */ + 200: { + content: { + "application/json": components["schemas"]["advanced-security-active-committers"]; + }; + }; + 403: components["responses"]["code_scanning_forbidden_read"]; + }; + }; + /** + * Gets the free and paid storage used for GitHub Packages in gigabytes. + * + * Paid minutes only apply to packages stored for private repositories. For more information, see "[Managing billing for GitHub Packages](https://docs.github.com/github/setting-up-and-managing-billing-and-payments-on-github/managing-billing-for-github-packages)." + * + * The authenticated user must be an enterprise admin. + */ + "billing/get-github-packages-billing-ghe": { + parameters: { + path: { + /** The slug version of the enterprise name. You can also substitute this value with the enterprise id. */ + enterprise: components["parameters"]["enterprise"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["packages-billing-usage"]; + }; + }; + }; + }; + /** + * Gets the estimated paid and estimated total storage used for GitHub Actions and GitHub Packages. + * + * Paid minutes only apply to packages stored for private repositories. For more information, see "[Managing billing for GitHub Packages](https://docs.github.com/github/setting-up-and-managing-billing-and-payments-on-github/managing-billing-for-github-packages)." + * + * The authenticated user must be an enterprise admin. + */ + "billing/get-shared-storage-billing-ghe": { + parameters: { + path: { + /** The slug version of the enterprise name. You can also substitute this value with the enterprise id. */ + enterprise: components["parameters"]["enterprise"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["combined-billing-usage"]; + }; + }; + }; + }; + /** We delay the public events feed by five minutes, which means the most recent event returned by the public events API actually occurred at least five minutes ago. */ + "activity/list-public-events": { + parameters: { + query: { + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["event"][]; + }; + }; + 304: components["responses"]["not_modified"]; + 403: components["responses"]["forbidden"]; + 503: components["responses"]["service_unavailable"]; + }; + }; + /** + * GitHub provides several timeline resources in [Atom](http://en.wikipedia.org/wiki/Atom_(standard)) format. The Feeds API lists all the feeds available to the authenticated user: + * + * * **Timeline**: The GitHub global public timeline + * * **User**: The public timeline for any user, using [URI template](https://docs.github.com/rest/overview/resources-in-the-rest-api#hypermedia) + * * **Current user public**: The public timeline for the authenticated user + * * **Current user**: The private timeline for the authenticated user + * * **Current user actor**: The private timeline for activity created by the authenticated user + * * **Current user organizations**: The private timeline for the organizations the authenticated user is a member of. + * * **Security advisories**: A collection of public announcements that provide information about security-related vulnerabilities in software on GitHub. + * + * **Note**: Private feeds are only returned when [authenticating via Basic Auth](https://docs.github.com/rest/overview/other-authentication-methods#basic-authentication) since current feed URIs use the older, non revocable auth tokens. + */ + "activity/get-feeds": { + parameters: {}; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["feed"]; + }; + }; + }; + }; + /** Lists the authenticated user's gists or if called anonymously, this endpoint returns all public gists: */ + "gists/list": { + parameters: { + query: { + /** Only show notifications updated after the given time. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`. */ + since?: components["parameters"]["since"]; + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + }; + }; + responses: { + /** Response */ + 200: { + headers: {}; + content: { + "application/json": components["schemas"]["base-gist"][]; + }; + }; + 304: components["responses"]["not_modified"]; + 403: components["responses"]["forbidden"]; + }; + }; + /** + * Allows you to add a new gist with one or more files. + * + * **Note:** Don't name your files "gistfile" with a numerical suffix. This is the format of the automatic naming scheme that Gist uses internally. + */ + "gists/create": { + parameters: {}; + responses: { + /** Response */ + 201: { + headers: { + Location?: string; + }; + content: { + "application/json": components["schemas"]["gist-simple"]; + }; + }; + 304: components["responses"]["not_modified"]; + 403: components["responses"]["forbidden"]; + 404: components["responses"]["not_found"]; + 422: components["responses"]["validation_failed"]; + }; + requestBody: { + content: { + "application/json": { + /** + * @description Description of the gist + * @example Example Ruby script + */ + description?: string; + /** + * @description Names and content for the files that make up the gist + * @example { + * "hello.rb": { + * "content": "puts \"Hello, World!\"" + * } + * } + */ + files: { + [key: string]: { + /** @description Content of the file */ + content: string; + }; + }; + public?: boolean | ("true" | "false"); + }; + }; + }; + }; + /** + * List public gists sorted by most recently updated to least recently updated. + * + * Note: With [pagination](https://docs.github.com/rest/overview/resources-in-the-rest-api#pagination), you can fetch up to 3000 gists. For example, you can fetch 100 pages with 30 gists per page or 30 pages with 100 gists per page. + */ + "gists/list-public": { + parameters: { + query: { + /** Only show notifications updated after the given time. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`. */ + since?: components["parameters"]["since"]; + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + }; + }; + responses: { + /** Response */ + 200: { + headers: {}; + content: { + "application/json": components["schemas"]["base-gist"][]; + }; + }; + 304: components["responses"]["not_modified"]; + 403: components["responses"]["forbidden"]; + 422: components["responses"]["validation_failed"]; + }; + }; + /** List the authenticated user's starred gists: */ + "gists/list-starred": { + parameters: { + query: { + /** Only show notifications updated after the given time. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`. */ + since?: components["parameters"]["since"]; + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + }; + }; + responses: { + /** Response */ + 200: { + headers: {}; + content: { + "application/json": components["schemas"]["base-gist"][]; + }; + }; + 304: components["responses"]["not_modified"]; + 401: components["responses"]["requires_authentication"]; + 403: components["responses"]["forbidden"]; + }; + }; + "gists/get": { + parameters: { + path: { + /** The unique identifier of the gist. */ + gist_id: components["parameters"]["gist-id"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["gist-simple"]; + }; + }; + 304: components["responses"]["not_modified"]; + 403: components["responses"]["forbidden_gist"]; + 404: components["responses"]["not_found"]; + }; + }; + "gists/delete": { + parameters: { + path: { + /** The unique identifier of the gist. */ + gist_id: components["parameters"]["gist-id"]; + }; + }; + responses: { + /** Response */ + 204: never; + 304: components["responses"]["not_modified"]; + 403: components["responses"]["forbidden"]; + 404: components["responses"]["not_found"]; + }; + }; + /** Allows you to update or delete a gist file and rename gist files. Files from the previous version of the gist that aren't explicitly changed during an edit are unchanged. */ + "gists/update": { + parameters: { + path: { + /** The unique identifier of the gist. */ + gist_id: components["parameters"]["gist-id"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["gist-simple"]; + }; + }; + 404: components["responses"]["not_found"]; + 422: components["responses"]["validation_failed"]; + }; + requestBody: { + content: { + "application/json": { + /** + * @description Description of the gist + * @example Example Ruby script + */ + description?: string; + /** + * @description Names of files to be updated + * @example { + * "hello.rb": { + * "content": "blah", + * "filename": "goodbye.rb" + * } + * } + */ + files?: { [key: string]: Partial<{ [key: string]: unknown }> }; + } | null; + }; + }; + }; + "gists/list-comments": { + parameters: { + path: { + /** The unique identifier of the gist. */ + gist_id: components["parameters"]["gist-id"]; + }; + query: { + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + }; + }; + responses: { + /** Response */ + 200: { + headers: {}; + content: { + "application/json": components["schemas"]["gist-comment"][]; + }; + }; + 304: components["responses"]["not_modified"]; + 403: components["responses"]["forbidden"]; + 404: components["responses"]["not_found"]; + }; + }; + "gists/create-comment": { + parameters: { + path: { + /** The unique identifier of the gist. */ + gist_id: components["parameters"]["gist-id"]; + }; + }; + responses: { + /** Response */ + 201: { + headers: { + Location?: string; + }; + content: { + "application/json": components["schemas"]["gist-comment"]; + }; + }; + 304: components["responses"]["not_modified"]; + 403: components["responses"]["forbidden"]; + 404: components["responses"]["not_found"]; + }; + requestBody: { + content: { + "application/json": { + /** + * @description The comment text. + * @example Body of the attachment + */ + body: string; + }; + }; + }; + }; + "gists/get-comment": { + parameters: { + path: { + /** The unique identifier of the gist. */ + gist_id: components["parameters"]["gist-id"]; + /** The unique identifier of the comment. */ + comment_id: components["parameters"]["comment-id"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["gist-comment"]; + }; + }; + 304: components["responses"]["not_modified"]; + 403: components["responses"]["forbidden_gist"]; + 404: components["responses"]["not_found"]; + }; + }; + "gists/delete-comment": { + parameters: { + path: { + /** The unique identifier of the gist. */ + gist_id: components["parameters"]["gist-id"]; + /** The unique identifier of the comment. */ + comment_id: components["parameters"]["comment-id"]; + }; + }; + responses: { + /** Response */ + 204: never; + 304: components["responses"]["not_modified"]; + 403: components["responses"]["forbidden"]; + 404: components["responses"]["not_found"]; + }; + }; + "gists/update-comment": { + parameters: { + path: { + /** The unique identifier of the gist. */ + gist_id: components["parameters"]["gist-id"]; + /** The unique identifier of the comment. */ + comment_id: components["parameters"]["comment-id"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["gist-comment"]; + }; + }; + 404: components["responses"]["not_found"]; + }; + requestBody: { + content: { + "application/json": { + /** + * @description The comment text. + * @example Body of the attachment + */ + body: string; + }; + }; + }; + }; + "gists/list-commits": { + parameters: { + path: { + /** The unique identifier of the gist. */ + gist_id: components["parameters"]["gist-id"]; + }; + query: { + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + }; + }; + responses: { + /** Response */ + 200: { + headers: { + Link?: string; + }; + content: { + "application/json": components["schemas"]["gist-commit"][]; + }; + }; + 304: components["responses"]["not_modified"]; + 403: components["responses"]["forbidden"]; + 404: components["responses"]["not_found"]; + }; + }; + "gists/list-forks": { + parameters: { + path: { + /** The unique identifier of the gist. */ + gist_id: components["parameters"]["gist-id"]; + }; + query: { + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + }; + }; + responses: { + /** Response */ + 200: { + headers: {}; + content: { + "application/json": components["schemas"]["gist-simple"][]; + }; + }; + 304: components["responses"]["not_modified"]; + 403: components["responses"]["forbidden"]; + 404: components["responses"]["not_found"]; + }; + }; + /** **Note**: This was previously `/gists/:gist_id/fork`. */ + "gists/fork": { + parameters: { + path: { + /** The unique identifier of the gist. */ + gist_id: components["parameters"]["gist-id"]; + }; + }; + responses: { + /** Response */ + 201: { + headers: { + Location?: string; + }; + content: { + "application/json": components["schemas"]["base-gist"]; + }; + }; + 304: components["responses"]["not_modified"]; + 403: components["responses"]["forbidden"]; + 404: components["responses"]["not_found"]; + 422: components["responses"]["validation_failed"]; + }; + }; + "gists/check-is-starred": { + parameters: { + path: { + /** The unique identifier of the gist. */ + gist_id: components["parameters"]["gist-id"]; + }; + }; + responses: { + /** Response if gist is starred */ + 204: never; + 304: components["responses"]["not_modified"]; + 403: components["responses"]["forbidden"]; + /** Not Found if gist is not starred */ + 404: { + content: { + "application/json": { [key: string]: unknown }; + }; + }; + }; + }; + /** Note that you'll need to set `Content-Length` to zero when calling out to this endpoint. For more information, see "[HTTP verbs](https://docs.github.com/rest/overview/resources-in-the-rest-api#http-verbs)." */ + "gists/star": { + parameters: { + path: { + /** The unique identifier of the gist. */ + gist_id: components["parameters"]["gist-id"]; + }; + }; + responses: { + /** Response */ + 204: never; + 304: components["responses"]["not_modified"]; + 403: components["responses"]["forbidden"]; + 404: components["responses"]["not_found"]; + }; + }; + "gists/unstar": { + parameters: { + path: { + /** The unique identifier of the gist. */ + gist_id: components["parameters"]["gist-id"]; + }; + }; + responses: { + /** Response */ + 204: never; + 304: components["responses"]["not_modified"]; + 403: components["responses"]["forbidden"]; + 404: components["responses"]["not_found"]; + }; + }; + "gists/get-revision": { + parameters: { + path: { + /** The unique identifier of the gist. */ + gist_id: components["parameters"]["gist-id"]; + sha: string; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["gist-simple"]; + }; + }; + 403: components["responses"]["forbidden"]; + 404: components["responses"]["not_found"]; + 422: components["responses"]["validation_failed"]; + }; + }; + /** List all templates available to pass as an option when [creating a repository](https://docs.github.com/rest/reference/repos#create-a-repository-for-the-authenticated-user). */ + "gitignore/get-all-templates": { + parameters: {}; + responses: { + /** Response */ + 200: { + content: { + "application/json": string[]; + }; + }; + 304: components["responses"]["not_modified"]; + }; + }; + /** + * The API also allows fetching the source of a single template. + * Use the raw [media type](https://docs.github.com/rest/overview/media-types/) to get the raw contents. + */ + "gitignore/get-template": { + parameters: { + path: { + name: string; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["gitignore-template"]; + }; + }; + 304: components["responses"]["not_modified"]; + }; + }; + /** + * List repositories that an app installation can access. + * + * You must use an [installation access token](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-an-installation) to access this endpoint. + */ + "apps/list-repos-accessible-to-installation": { + parameters: { + query: { + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + }; + }; + responses: { + /** Response */ + 200: { + headers: {}; + content: { + "application/json": { + total_count: number; + repositories: components["schemas"]["repository"][]; + /** @example selected */ + repository_selection?: string; + }; + }; + }; + 304: components["responses"]["not_modified"]; + 401: components["responses"]["requires_authentication"]; + 403: components["responses"]["forbidden"]; + }; + }; + /** + * Revokes the installation token you're using to authenticate as an installation and access this endpoint. + * + * Once an installation token is revoked, the token is invalidated and cannot be used. Other endpoints that require the revoked installation token must have a new installation token to work. You can create a new token using the "[Create an installation access token for an app](https://docs.github.com/rest/reference/apps#create-an-installation-access-token-for-an-app)" endpoint. + * + * You must use an [installation access token](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-an-installation) to access this endpoint. + */ + "apps/revoke-installation-access-token": { + parameters: {}; + responses: { + /** Response */ + 204: never; + }; + }; + /** + * List issues assigned to the authenticated user across all visible repositories including owned repositories, member + * repositories, and organization repositories. You can use the `filter` query parameter to fetch issues that are not + * necessarily assigned to you. + * + * + * **Note**: GitHub's REST API v3 considers every pull request an issue, but not every issue is a pull request. For this + * reason, "Issues" endpoints may return both issues and pull requests in the response. You can identify pull requests by + * the `pull_request` key. Be aware that the `id` of a pull request returned from "Issues" endpoints will be an _issue id_. To find out the pull + * request id, use the "[List pull requests](https://docs.github.com/rest/reference/pulls#list-pull-requests)" endpoint. + */ + "issues/list": { + parameters: { + query: { + /** Indicates which sorts of issues to return. `assigned` means issues assigned to you. `created` means issues created by you. `mentioned` means issues mentioning you. `subscribed` means issues you're subscribed to updates for. `all` or `repos` means all issues you can see, regardless of participation or creation. */ + filter?: + | "assigned" + | "created" + | "mentioned" + | "subscribed" + | "repos" + | "all"; + /** Indicates the state of the issues to return. Can be either `open`, `closed`, or `all`. */ + state?: "open" | "closed" | "all"; + /** A list of comma separated label names. Example: `bug,ui,@high` */ + labels?: components["parameters"]["labels"]; + /** What to sort results by. Can be either `created`, `updated`, `comments`. */ + sort?: "created" | "updated" | "comments"; + /** The direction to sort the results by. */ + direction?: components["parameters"]["direction"]; + /** Only show notifications updated after the given time. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`. */ + since?: components["parameters"]["since"]; + collab?: boolean; + orgs?: boolean; + owned?: boolean; + pulls?: boolean; + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + }; + }; + responses: { + /** Response */ + 200: { + headers: {}; + content: { + "application/json": components["schemas"]["issue"][]; + }; + }; + 304: components["responses"]["not_modified"]; + 404: components["responses"]["not_found"]; + 422: components["responses"]["validation_failed"]; + }; + }; + "licenses/get-all-commonly-used": { + parameters: { + query: { + featured?: boolean; + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["license-simple"][]; + }; + }; + 304: components["responses"]["not_modified"]; + }; + }; + "licenses/get": { + parameters: { + path: { + license: string; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["license"]; + }; + }; + 304: components["responses"]["not_modified"]; + 403: components["responses"]["forbidden"]; + 404: components["responses"]["not_found"]; + }; + }; + "markdown/render": { + parameters: {}; + responses: { + /** Response */ + 200: { + headers: { + "Content-Length"?: string; + }; + content: { + "text/html": string; + }; + }; + 304: components["responses"]["not_modified"]; + }; + requestBody: { + content: { + "application/json": { + /** @description The Markdown text to render in HTML. */ + text: string; + /** + * @description The rendering mode. Can be either `markdown` or `gfm`. + * @default markdown + * @example markdown + * @enum {string} + */ + mode?: "markdown" | "gfm"; + /** @description The repository context to use when creating references in `gfm` mode. For example, setting `context` to `octo-org/octo-repo` will change the text `#42` into an HTML link to issue 42 in the `octo-org/octo-repo` repository. */ + context?: string; + }; + }; + }; + }; + /** You must send Markdown as plain text (using a `Content-Type` header of `text/plain` or `text/x-markdown`) to this endpoint, rather than using JSON format. In raw mode, [GitHub Flavored Markdown](https://github.github.com/gfm/) is not supported and Markdown will be rendered in plain format like a README.md file. Markdown content must be 400 KB or less. */ + "markdown/render-raw": { + parameters: {}; + responses: { + /** Response */ + 200: { + headers: {}; + content: { + "text/html": string; + }; + }; + 304: components["responses"]["not_modified"]; + }; + requestBody: { + content: { + "text/plain": string; + "text/x-markdown": string; + }; + }; + }; + /** + * Shows whether the user or organization account actively subscribes to a plan listed by the authenticated GitHub App. When someone submits a plan change that won't be processed until the end of their billing cycle, you will also see the upcoming pending change. + * + * GitHub Apps must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. OAuth Apps must use [basic authentication](https://docs.github.com/rest/overview/other-authentication-methods#basic-authentication) with their client ID and client secret to access this endpoint. + */ + "apps/get-subscription-plan-for-account": { + parameters: { + path: { + /** account_id parameter */ + account_id: components["parameters"]["account-id"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["marketplace-purchase"]; + }; + }; + 401: components["responses"]["requires_authentication"]; + /** Not Found when the account has not purchased the listing */ + 404: { + content: { + "application/json": components["schemas"]["basic-error"]; + }; + }; + }; + }; + /** + * Lists all plans that are part of your GitHub Marketplace listing. + * + * GitHub Apps must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. OAuth Apps must use [basic authentication](https://docs.github.com/rest/overview/other-authentication-methods#basic-authentication) with their client ID and client secret to access this endpoint. + */ + "apps/list-plans": { + parameters: { + query: { + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + }; + }; + responses: { + /** Response */ + 200: { + headers: {}; + content: { + "application/json": components["schemas"]["marketplace-listing-plan"][]; + }; + }; + 401: components["responses"]["requires_authentication"]; + 404: components["responses"]["not_found"]; + }; + }; + /** + * Returns user and organization accounts associated with the specified plan, including free plans. For per-seat pricing, you see the list of accounts that have purchased the plan, including the number of seats purchased. When someone submits a plan change that won't be processed until the end of their billing cycle, you will also see the upcoming pending change. + * + * GitHub Apps must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. OAuth Apps must use [basic authentication](https://docs.github.com/rest/overview/other-authentication-methods#basic-authentication) with their client ID and client secret to access this endpoint. + */ + "apps/list-accounts-for-plan": { + parameters: { + path: { + /** The unique identifier of the plan. */ + plan_id: components["parameters"]["plan-id"]; + }; + query: { + /** The property to sort the results by. `created` means when the repository was starred. `updated` means when the repository was last pushed to. */ + sort?: components["parameters"]["sort"]; + /** To return the oldest accounts first, set to `asc`. Ignored without the `sort` parameter. */ + direction?: "asc" | "desc"; + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + }; + }; + responses: { + /** Response */ + 200: { + headers: {}; + content: { + "application/json": components["schemas"]["marketplace-purchase"][]; + }; + }; + 401: components["responses"]["requires_authentication"]; + 404: components["responses"]["not_found"]; + 422: components["responses"]["validation_failed"]; + }; + }; + /** + * Shows whether the user or organization account actively subscribes to a plan listed by the authenticated GitHub App. When someone submits a plan change that won't be processed until the end of their billing cycle, you will also see the upcoming pending change. + * + * GitHub Apps must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. OAuth Apps must use [basic authentication](https://docs.github.com/rest/overview/other-authentication-methods#basic-authentication) with their client ID and client secret to access this endpoint. + */ + "apps/get-subscription-plan-for-account-stubbed": { + parameters: { + path: { + /** account_id parameter */ + account_id: components["parameters"]["account-id"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["marketplace-purchase"]; + }; + }; + 401: components["responses"]["requires_authentication"]; + /** Not Found when the account has not purchased the listing */ + 404: unknown; + }; + }; + /** + * Lists all plans that are part of your GitHub Marketplace listing. + * + * GitHub Apps must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. OAuth Apps must use [basic authentication](https://docs.github.com/rest/overview/other-authentication-methods#basic-authentication) with their client ID and client secret to access this endpoint. + */ + "apps/list-plans-stubbed": { + parameters: { + query: { + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + }; + }; + responses: { + /** Response */ + 200: { + headers: {}; + content: { + "application/json": components["schemas"]["marketplace-listing-plan"][]; + }; + }; + 401: components["responses"]["requires_authentication"]; + }; + }; + /** + * Returns repository and organization accounts associated with the specified plan, including free plans. For per-seat pricing, you see the list of accounts that have purchased the plan, including the number of seats purchased. When someone submits a plan change that won't be processed until the end of their billing cycle, you will also see the upcoming pending change. + * + * GitHub Apps must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. OAuth Apps must use [basic authentication](https://docs.github.com/rest/overview/other-authentication-methods#basic-authentication) with their client ID and client secret to access this endpoint. + */ + "apps/list-accounts-for-plan-stubbed": { + parameters: { + path: { + /** The unique identifier of the plan. */ + plan_id: components["parameters"]["plan-id"]; + }; + query: { + /** The property to sort the results by. `created` means when the repository was starred. `updated` means when the repository was last pushed to. */ + sort?: components["parameters"]["sort"]; + /** To return the oldest accounts first, set to `asc`. Ignored without the `sort` parameter. */ + direction?: "asc" | "desc"; + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + }; + }; + responses: { + /** Response */ + 200: { + headers: {}; + content: { + "application/json": components["schemas"]["marketplace-purchase"][]; + }; + }; + 401: components["responses"]["requires_authentication"]; + }; + }; + /** + * Returns meta information about GitHub, including a list of GitHub's IP addresses. For more information, see "[About GitHub's IP addresses](https://docs.github.com/articles/about-github-s-ip-addresses/)." + * + * **Note:** The IP addresses shown in the documentation's response are only example values. You must always query the API directly to get the latest list of IP addresses. + */ + "meta/get": { + parameters: {}; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["api-overview"]; + }; + }; + 304: components["responses"]["not_modified"]; + }; + }; + "activity/list-public-events-for-repo-network": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + }; + query: { + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["event"][]; + }; + }; + 301: components["responses"]["moved_permanently"]; + 304: components["responses"]["not_modified"]; + 403: components["responses"]["forbidden"]; + 404: components["responses"]["not_found"]; + }; + }; + /** List all notifications for the current user, sorted by most recently updated. */ + "activity/list-notifications-for-authenticated-user": { + parameters: { + query: { + /** If `true`, show notifications marked as read. */ + all?: components["parameters"]["all"]; + /** If `true`, only shows notifications in which the user is directly participating or mentioned. */ + participating?: components["parameters"]["participating"]; + /** Only show notifications updated after the given time. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`. */ + since?: components["parameters"]["since"]; + /** Only show notifications updated before the given time. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`. */ + before?: components["parameters"]["before"]; + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + }; + }; + responses: { + /** Response */ + 200: { + headers: {}; + content: { + "application/json": components["schemas"]["thread"][]; + }; + }; + 304: components["responses"]["not_modified"]; + 401: components["responses"]["requires_authentication"]; + 403: components["responses"]["forbidden"]; + 422: components["responses"]["validation_failed"]; + }; + }; + /** Marks all notifications as "read" removes it from the [default view on GitHub](https://github.com/notifications). If the number of notifications is too large to complete in one request, you will receive a `202 Accepted` status and GitHub will run an asynchronous process to mark notifications as "read." To check whether any "unread" notifications remain, you can use the [List notifications for the authenticated user](https://docs.github.com/rest/reference/activity#list-notifications-for-the-authenticated-user) endpoint and pass the query parameter `all=false`. */ + "activity/mark-notifications-as-read": { + parameters: {}; + responses: { + /** Response */ + 202: { + content: { + "application/json": { + message?: string; + }; + }; + }; + /** Reset Content */ + 205: unknown; + 304: components["responses"]["not_modified"]; + 401: components["responses"]["requires_authentication"]; + 403: components["responses"]["forbidden"]; + }; + requestBody: { + content: { + "application/json": { + /** + * Format: date-time + * @description Describes the last point that notifications were checked. Anything updated since this time will not be marked as read. If you omit this parameter, all notifications are marked as read. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`. Default: The current timestamp. + */ + last_read_at?: string; + /** @description Whether the notification has been read. */ + read?: boolean; + }; + }; + }; + }; + "activity/get-thread": { + parameters: { + path: { + /** The unique identifier of the pull request thread. */ + thread_id: components["parameters"]["thread-id"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["thread"]; + }; + }; + 304: components["responses"]["not_modified"]; + 401: components["responses"]["requires_authentication"]; + 403: components["responses"]["forbidden"]; + }; + }; + "activity/mark-thread-as-read": { + parameters: { + path: { + /** The unique identifier of the pull request thread. */ + thread_id: components["parameters"]["thread-id"]; + }; + }; + responses: { + /** Reset Content */ + 205: unknown; + 304: components["responses"]["not_modified"]; + 403: components["responses"]["forbidden"]; + }; + }; + /** + * This checks to see if the current user is subscribed to a thread. You can also [get a repository subscription](https://docs.github.com/rest/reference/activity#get-a-repository-subscription). + * + * Note that subscriptions are only generated if a user is participating in a conversation--for example, they've replied to the thread, were **@mentioned**, or manually subscribe to a thread. + */ + "activity/get-thread-subscription-for-authenticated-user": { + parameters: { + path: { + /** The unique identifier of the pull request thread. */ + thread_id: components["parameters"]["thread-id"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["thread-subscription"]; + }; + }; + 304: components["responses"]["not_modified"]; + 401: components["responses"]["requires_authentication"]; + 403: components["responses"]["forbidden"]; + }; + }; + /** + * If you are watching a repository, you receive notifications for all threads by default. Use this endpoint to ignore future notifications for threads until you comment on the thread or get an **@mention**. + * + * You can also use this endpoint to subscribe to threads that you are currently not receiving notifications for or to subscribed to threads that you have previously ignored. + * + * Unsubscribing from a conversation in a repository that you are not watching is functionally equivalent to the [Delete a thread subscription](https://docs.github.com/rest/reference/activity#delete-a-thread-subscription) endpoint. + */ + "activity/set-thread-subscription": { + parameters: { + path: { + /** The unique identifier of the pull request thread. */ + thread_id: components["parameters"]["thread-id"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["thread-subscription"]; + }; + }; + 304: components["responses"]["not_modified"]; + 401: components["responses"]["requires_authentication"]; + 403: components["responses"]["forbidden"]; + }; + requestBody: { + content: { + "application/json": { + /** + * @description Whether to block all notifications from a thread. + * @default false + */ + ignored?: boolean; + }; + }; + }; + }; + /** Mutes all future notifications for a conversation until you comment on the thread or get an **@mention**. If you are watching the repository of the thread, you will still receive notifications. To ignore future notifications for a repository you are watching, use the [Set a thread subscription](https://docs.github.com/rest/reference/activity#set-a-thread-subscription) endpoint and set `ignore` to `true`. */ + "activity/delete-thread-subscription": { + parameters: { + path: { + /** The unique identifier of the pull request thread. */ + thread_id: components["parameters"]["thread-id"]; + }; + }; + responses: { + /** Response */ + 204: never; + 304: components["responses"]["not_modified"]; + 401: components["responses"]["requires_authentication"]; + 403: components["responses"]["forbidden"]; + }; + }; + /** Get the octocat as ASCII art */ + "meta/get-octocat": { + parameters: { + query: { + /** The words to show in Octocat's speech bubble */ + s?: string; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/octocat-stream": string; + }; + }; + }; + }; + /** + * Lists all organizations, in the order that they were created on GitHub. + * + * **Note:** Pagination is powered exclusively by the `since` parameter. Use the [Link header](https://docs.github.com/rest/overview/resources-in-the-rest-api#link-header) to get the URL for the next page of organizations. + */ + "orgs/list": { + parameters: { + query: { + /** An organization ID. Only return organizations with an ID greater than this ID. */ + since?: components["parameters"]["since-org"]; + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + }; + }; + responses: { + /** Response */ + 200: { + headers: { + Link?: string; + }; + content: { + "application/json": components["schemas"]["organization-simple"][]; + }; + }; + 304: components["responses"]["not_modified"]; + }; + }; + /** + * List the custom repository roles available in this organization. In order to see custom + * repository roles in an organization, the authenticated user must be an organization owner. + * + * For more information on custom repository roles, see "[Managing custom repository roles for an organization](https://docs.github.com/organizations/managing-peoples-access-to-your-organization-with-roles/managing-custom-repository-roles-for-an-organization)". + */ + "orgs/list-custom-roles": { + parameters: { + path: { + organization_id: string; + }; + }; + responses: { + /** Response - list of custom role names */ + 200: { + content: { + "application/json": { + /** + * @description The number of custom roles in this organization + * @example 3 + */ + total_count?: number; + custom_roles?: components["schemas"]["organization-custom-repository-role"][]; + }; + }; + }; + }; + }; + /** + * To see many of the organization response values, you need to be an authenticated organization owner with the `admin:org` scope. When the value of `two_factor_requirement_enabled` is `true`, the organization requires all members, billing managers, and outside collaborators to enable [two-factor authentication](https://docs.github.com/articles/securing-your-account-with-two-factor-authentication-2fa/). + * + * GitHub Apps with the `Organization plan` permission can use this endpoint to retrieve information about an organization's GitHub plan. See "[Authenticating with GitHub Apps](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/)" for details. For an example response, see 'Response with GitHub plan information' below." + */ + "orgs/get": { + parameters: { + path: { + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["organization-full"]; + }; + }; + 404: components["responses"]["not_found"]; + }; + }; + /** + * **Parameter Deprecation Notice:** GitHub will replace and discontinue `members_allowed_repository_creation_type` in favor of more granular permissions. The new input parameters are `members_can_create_public_repositories`, `members_can_create_private_repositories` for all organizations and `members_can_create_internal_repositories` for organizations associated with an enterprise account using GitHub Enterprise Cloud or GitHub Enterprise Server 2.20+. For more information, see the [blog post](https://developer.github.com/changes/2019-12-03-internal-visibility-changes). + * + * Enables an authenticated organization owner with the `admin:org` scope to update the organization's profile and member privileges. + */ + "orgs/update": { + parameters: { + path: { + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["organization-full"]; + }; + }; + 409: components["responses"]["conflict"]; + /** Validation failed */ + 422: { + content: { + "application/json": + | components["schemas"]["validation-error"] + | components["schemas"]["validation-error-simple"]; + }; + }; + }; + requestBody: { + content: { + "application/json": { + /** @description Billing email address. This address is not publicized. */ + billing_email?: string; + /** @description The company name. */ + company?: string; + /** @description The publicly visible email address. */ + email?: string; + /** @description The Twitter username of the company. */ + twitter_username?: string; + /** @description The location. */ + location?: string; + /** @description The shorthand name of the company. */ + name?: string; + /** @description The description of the company. */ + description?: string; + /** @description Whether an organization can use organization projects. */ + has_organization_projects?: boolean; + /** @description Whether repositories that belong to the organization can use repository projects. */ + has_repository_projects?: boolean; + /** + * @description Default permission level members have for organization repositories. + * @default read + * @enum {string} + */ + default_repository_permission?: "read" | "write" | "admin" | "none"; + /** + * @description Whether of non-admin organization members can create repositories. **Note:** A parameter can override this parameter. See `members_allowed_repository_creation_type` in this table for details. + * @default true + */ + members_can_create_repositories?: boolean; + /** @description Whether organization members can create internal repositories, which are visible to all enterprise members. You can only allow members to create internal repositories if your organization is associated with an enterprise account using GitHub Enterprise Cloud or GitHub Enterprise Server 2.20+. For more information, see "[Restricting repository creation in your organization](https://docs.github.com/github/setting-up-and-managing-organizations-and-teams/restricting-repository-creation-in-your-organization)" in the GitHub Help documentation. */ + members_can_create_internal_repositories?: boolean; + /** @description Whether organization members can create private repositories, which are visible to organization members with permission. For more information, see "[Restricting repository creation in your organization](https://docs.github.com/github/setting-up-and-managing-organizations-and-teams/restricting-repository-creation-in-your-organization)" in the GitHub Help documentation. */ + members_can_create_private_repositories?: boolean; + /** @description Whether organization members can create public repositories, which are visible to anyone. For more information, see "[Restricting repository creation in your organization](https://docs.github.com/github/setting-up-and-managing-organizations-and-teams/restricting-repository-creation-in-your-organization)" in the GitHub Help documentation. */ + members_can_create_public_repositories?: boolean; + /** + * @description Specifies which types of repositories non-admin organization members can create. `private` is only available to repositories that are part of an organization on GitHub Enterprise Cloud. + * **Note:** This parameter is deprecated and will be removed in the future. Its return value ignores internal repositories. Using this parameter overrides values set in `members_can_create_repositories`. See the parameter deprecation notice in the operation description for details. + * @enum {string} + */ + members_allowed_repository_creation_type?: "all" | "private" | "none"; + /** + * @description Whether organization members can create GitHub Pages sites. Existing published sites will not be impacted. + * @default true + */ + members_can_create_pages?: boolean; + /** + * @description Whether organization members can create public GitHub Pages sites. Existing published sites will not be impacted. + * @default true + */ + members_can_create_public_pages?: boolean; + /** + * @description Whether organization members can create private GitHub Pages sites. Existing published sites will not be impacted. + * @default true + */ + members_can_create_private_pages?: boolean; + /** + * @description Whether organization members can fork private organization repositories. + * @default false + */ + members_can_fork_private_repositories?: boolean; + /** @example "http://github.blog" */ + blog?: string; + }; + }; + }; + }; + /** + * Gets the total GitHub Actions cache usage for an organization. + * The data fetched using this API is refreshed approximately every 5 minutes, so values returned from this endpoint may take at least 5 minutes to get updated. + * You must authenticate using an access token with the `read:org` scope to use this endpoint. GitHub Apps must have the `organization_admistration:read` permission to use this endpoint. + */ + "actions/get-actions-cache-usage-for-org": { + parameters: { + path: { + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + }; + }; + responses: { + /** Response */ + 200: { + headers: {}; + content: { + "application/json": components["schemas"]["actions-cache-usage-org-enterprise"]; + }; + }; + }; + }; + /** + * Lists repositories and their GitHub Actions cache usage for an organization. + * The data fetched using this API is refreshed approximately every 5 minutes, so values returned from this endpoint may take at least 5 minutes to get updated. + * You must authenticate using an access token with the `read:org` scope to use this endpoint. GitHub Apps must have the `organization_admistration:read` permission to use this endpoint. + */ + "actions/get-actions-cache-usage-by-repo-for-org": { + parameters: { + path: { + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + }; + query: { + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + }; + }; + responses: { + /** Response */ + 200: { + headers: {}; + content: { + "application/json": { + total_count: number; + repository_cache_usages: components["schemas"]["actions-cache-usage-by-repository"][]; + }; + }; + }; + }; + }; + /** + * Gets the customization template for an OpenID Connect (OIDC) subject claim. + * You must authenticate using an access token with the `read:org` scope to use this endpoint. + * GitHub Apps must have the `organization_administration:write` permission to use this endpoint. + */ + "oidc/get-oidc-custom-sub-template-for-org": { + parameters: { + path: { + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + }; + }; + responses: { + /** A JSON serialized template for OIDC subject claim customization */ + 200: { + content: { + "application/json": components["schemas"]["oidc-custom-sub"]; + }; + }; + }; + }; + /** + * Creates or updates the customization template for an OpenID Connect (OIDC) subject claim. + * You must authenticate using an access token with the `write:org` scope to use this endpoint. + * GitHub Apps must have the `admin:org` permission to use this endpoint. + */ + "oidc/update-oidc-custom-sub-template-for-org": { + parameters: { + path: { + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + }; + }; + responses: { + /** Empty response */ + 201: { + content: { + "application/json": components["schemas"]["empty-object"]; + }; + }; + 403: components["responses"]["forbidden"]; + 404: components["responses"]["not_found"]; + }; + requestBody: { + content: { + "application/json": components["schemas"]["oidc-custom-sub"]; + }; + }; + }; + /** + * Gets the GitHub Actions permissions policy for repositories and allowed actions and reusable workflows in an organization. + * + * You must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `administration` organization permission to use this API. + */ + "actions/get-github-actions-permissions-organization": { + parameters: { + path: { + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["actions-organization-permissions"]; + }; + }; + }; + }; + /** + * Sets the GitHub Actions permissions policy for repositories and allowed actions and reusable workflows in an organization. + * + * If the organization belongs to an enterprise that has set restrictive permissions at the enterprise level, such as `allowed_actions` to `selected` actions and reusable workflows, then you cannot override them for the organization. + * + * You must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `administration` organization permission to use this API. + */ + "actions/set-github-actions-permissions-organization": { + parameters: { + path: { + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + }; + }; + responses: { + /** Response */ + 204: never; + }; + requestBody: { + content: { + "application/json": { + enabled_repositories: components["schemas"]["enabled-repositories"]; + allowed_actions?: components["schemas"]["allowed-actions"]; + }; + }; + }; + }; + /** + * Lists the selected repositories that are enabled for GitHub Actions in an organization. To use this endpoint, the organization permission policy for `enabled_repositories` must be configured to `selected`. For more information, see "[Set GitHub Actions permissions for an organization](#set-github-actions-permissions-for-an-organization)." + * + * You must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `administration` organization permission to use this API. + */ + "actions/list-selected-repositories-enabled-github-actions-organization": { + parameters: { + path: { + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + }; + query: { + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": { + total_count: number; + repositories: components["schemas"]["repository"][]; + }; + }; + }; + }; + }; + /** + * Replaces the list of selected repositories that are enabled for GitHub Actions in an organization. To use this endpoint, the organization permission policy for `enabled_repositories` must be configured to `selected`. For more information, see "[Set GitHub Actions permissions for an organization](#set-github-actions-permissions-for-an-organization)." + * + * You must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `administration` organization permission to use this API. + */ + "actions/set-selected-repositories-enabled-github-actions-organization": { + parameters: { + path: { + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + }; + }; + responses: { + /** Response */ + 204: never; + }; + requestBody: { + content: { + "application/json": { + /** @description List of repository IDs to enable for GitHub Actions. */ + selected_repository_ids: number[]; + }; + }; + }; + }; + /** + * Adds a repository to the list of selected repositories that are enabled for GitHub Actions in an organization. To use this endpoint, the organization permission policy for `enabled_repositories` must be must be configured to `selected`. For more information, see "[Set GitHub Actions permissions for an organization](#set-github-actions-permissions-for-an-organization)." + * + * You must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `administration` organization permission to use this API. + */ + "actions/enable-selected-repository-github-actions-organization": { + parameters: { + path: { + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + /** The unique identifier of the repository. */ + repository_id: components["parameters"]["repository-id"]; + }; + }; + responses: { + /** Response */ + 204: never; + }; + }; + /** + * Removes a repository from the list of selected repositories that are enabled for GitHub Actions in an organization. To use this endpoint, the organization permission policy for `enabled_repositories` must be configured to `selected`. For more information, see "[Set GitHub Actions permissions for an organization](#set-github-actions-permissions-for-an-organization)." + * + * You must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `administration` organization permission to use this API. + */ + "actions/disable-selected-repository-github-actions-organization": { + parameters: { + path: { + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + /** The unique identifier of the repository. */ + repository_id: components["parameters"]["repository-id"]; + }; + }; + responses: { + /** Response */ + 204: never; + }; + }; + /** + * Gets the selected actions and reusable workflows that are allowed in an organization. To use this endpoint, the organization permission policy for `allowed_actions` must be configured to `selected`. For more information, see "[Set GitHub Actions permissions for an organization](#set-github-actions-permissions-for-an-organization)."" + * + * You must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `administration` organization permission to use this API. + */ + "actions/get-allowed-actions-organization": { + parameters: { + path: { + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["selected-actions"]; + }; + }; + }; + }; + /** + * Sets the actions and reusable workflows that are allowed in an organization. To use this endpoint, the organization permission policy for `allowed_actions` must be configured to `selected`. For more information, see "[Set GitHub Actions permissions for an organization](#set-github-actions-permissions-for-an-organization)." + * + * If the organization belongs to an enterprise that has `selected` actions and reusable workflows set at the enterprise level, then you cannot override any of the enterprise's allowed actions and reusable workflows settings. + * + * To use the `patterns_allowed` setting for private repositories, the organization must belong to an enterprise. If the organization does not belong to an enterprise, then the `patterns_allowed` setting only applies to public repositories in the organization. + * + * You must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `administration` organization permission to use this API. + */ + "actions/set-allowed-actions-organization": { + parameters: { + path: { + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + }; + }; + responses: { + /** Response */ + 204: never; + }; + requestBody: { + content: { + "application/json": components["schemas"]["selected-actions"]; + }; + }; + }; + /** + * Gets the default workflow permissions granted to the `GITHUB_TOKEN` when running workflows in an organization, + * as well as whether GitHub Actions can submit approving pull request reviews. For more information, see + * "[Setting the permissions of the GITHUB_TOKEN for your organization](https://docs.github.com/organizations/managing-organization-settings/disabling-or-limiting-github-actions-for-your-organization#setting-the-permissions-of-the-github_token-for-your-organization)." + * + * You must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `administration` organization permission to use this API. + */ + "actions/get-github-actions-default-workflow-permissions-organization": { + parameters: { + path: { + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["actions-get-default-workflow-permissions"]; + }; + }; + }; + }; + /** + * Sets the default workflow permissions granted to the `GITHUB_TOKEN` when running workflows in an organization, and sets if GitHub Actions + * can submit approving pull request reviews. For more information, see + * "[Setting the permissions of the GITHUB_TOKEN for your organization](https://docs.github.com/organizations/managing-organization-settings/disabling-or-limiting-github-actions-for-your-organization#setting-the-permissions-of-the-github_token-for-your-organization)." + * + * You must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `administration` organization permission to use this API. + */ + "actions/set-github-actions-default-workflow-permissions-organization": { + parameters: { + path: { + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + }; + }; + responses: { + /** Success response */ + 204: never; + /** Conflict response when changing a setting is prevented by the owning enterprise */ + 409: unknown; + }; + requestBody: { + content: { + "application/json": components["schemas"]["actions-set-default-workflow-permissions"]; + }; + }; + }; + /** + * The self-hosted runner groups REST API is available with GitHub Enterprise Cloud. For more information, see "[GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products)." + * + * Lists all self-hosted runner groups configured in an organization and inherited from an enterprise. + * + * You must authenticate using an access token with the `admin:org` scope to use this endpoint. + */ + "actions/list-self-hosted-runner-groups-for-org": { + parameters: { + path: { + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + }; + query: { + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + /** Only return runner groups that are allowed to be used by this repository. */ + visible_to_repository?: components["parameters"]["visible-to-repository"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": { + total_count: number; + runner_groups: components["schemas"]["runner-groups-org"][]; + }; + }; + }; + }; + }; + /** + * The self-hosted runner groups REST API is available with GitHub Enterprise Cloud and GitHub Enterprise Server. For more information, see "[GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products)." + * + * Creates a new self-hosted runner group for an organization. + * + * You must authenticate using an access token with the `admin:org` scope to use this endpoint. + */ + "actions/create-self-hosted-runner-group-for-org": { + parameters: { + path: { + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + }; + }; + responses: { + /** Response */ + 201: { + content: { + "application/json": components["schemas"]["runner-groups-org"]; + }; + }; + }; + requestBody: { + content: { + "application/json": { + /** @description Name of the runner group. */ + name: string; + /** + * @description Visibility of a runner group. You can select all repositories, select individual repositories, or limit access to private repositories. + * @default all + * @enum {string} + */ + visibility?: "selected" | "all" | "private"; + /** @description List of repository IDs that can access the runner group. */ + selected_repository_ids?: number[]; + /** @description List of runner IDs to add to the runner group. */ + runners?: number[]; + /** + * @description Whether the runner group can be used by `public` repositories. + * @default false + */ + allows_public_repositories?: boolean; + /** + * @description If `true`, the runner group will be restricted to running only the workflows specified in the `selected_workflows` array. + * @default false + */ + restricted_to_workflows?: boolean; + /** @description List of workflows the runner group should be allowed to run. This setting will be ignored unless `restricted_to_workflows` is set to `true`. */ + selected_workflows?: string[]; + }; + }; + }; + }; + /** + * The self-hosted runner groups REST API is available with GitHub Enterprise Cloud. For more information, see "[GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products)." + * + * Gets a specific self-hosted runner group for an organization. + * + * You must authenticate using an access token with the `admin:org` scope to use this endpoint. + */ + "actions/get-self-hosted-runner-group-for-org": { + parameters: { + path: { + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + /** Unique identifier of the self-hosted runner group. */ + runner_group_id: components["parameters"]["runner-group-id"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["runner-groups-org"]; + }; + }; + }; + }; + /** + * The self-hosted runner groups REST API is available with GitHub Enterprise Cloud. For more information, see "[GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products)." + * + * Deletes a self-hosted runner group for an organization. + * + * You must authenticate using an access token with the `admin:org` scope to use this endpoint. + */ + "actions/delete-self-hosted-runner-group-from-org": { + parameters: { + path: { + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + /** Unique identifier of the self-hosted runner group. */ + runner_group_id: components["parameters"]["runner-group-id"]; + }; + }; + responses: { + /** Response */ + 204: never; + }; + }; + /** + * The self-hosted runner groups REST API is available with GitHub Enterprise Cloud. For more information, see "[GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products)." + * + * Updates the `name` and `visibility` of a self-hosted runner group in an organization. + * + * You must authenticate using an access token with the `admin:org` scope to use this endpoint. + */ + "actions/update-self-hosted-runner-group-for-org": { + parameters: { + path: { + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + /** Unique identifier of the self-hosted runner group. */ + runner_group_id: components["parameters"]["runner-group-id"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["runner-groups-org"]; + }; + }; + }; + requestBody: { + content: { + "application/json": { + /** @description Name of the runner group. */ + name: string; + /** + * @description Visibility of a runner group. You can select all repositories, select individual repositories, or all private repositories. + * @enum {string} + */ + visibility?: "selected" | "all" | "private"; + /** + * @description Whether the runner group can be used by `public` repositories. + * @default false + */ + allows_public_repositories?: boolean; + /** + * @description If `true`, the runner group will be restricted to running only the workflows specified in the `selected_workflows` array. + * @default false + */ + restricted_to_workflows?: boolean; + /** @description List of workflows the runner group should be allowed to run. This setting will be ignored unless `restricted_to_workflows` is set to `true`. */ + selected_workflows?: string[]; + }; + }; + }; + }; + /** + * The self-hosted runner groups REST API is available with GitHub Enterprise Cloud and GitHub Enterprise Server. For more information, see "[GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products)." + * + * Lists the repositories with access to a self-hosted runner group configured in an organization. + * + * You must authenticate using an access token with the `admin:org` scope to use this endpoint. + */ + "actions/list-repo-access-to-self-hosted-runner-group-in-org": { + parameters: { + path: { + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + /** Unique identifier of the self-hosted runner group. */ + runner_group_id: components["parameters"]["runner-group-id"]; + }; + query: { + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": { + total_count: number; + repositories: components["schemas"]["minimal-repository"][]; + }; + }; + }; + }; + }; + /** + * The self-hosted runner groups REST API is available with GitHub Enterprise Cloud. For more information, see "[GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products)." + * + * Replaces the list of repositories that have access to a self-hosted runner group configured in an organization. + * + * You must authenticate using an access token with the `admin:org` scope to use this endpoint. + */ + "actions/set-repo-access-to-self-hosted-runner-group-in-org": { + parameters: { + path: { + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + /** Unique identifier of the self-hosted runner group. */ + runner_group_id: components["parameters"]["runner-group-id"]; + }; + }; + responses: { + /** Response */ + 204: never; + }; + requestBody: { + content: { + "application/json": { + /** @description List of repository IDs that can access the runner group. */ + selected_repository_ids: number[]; + }; + }; + }; + }; + /** + * The self-hosted runner groups REST API is available with GitHub Enterprise Cloud. For more information, see "[GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products)." + * + * + * Adds a repository to the list of selected repositories that can access a self-hosted runner group. The runner group must have `visibility` set to `selected`. For more information, see "[Create a self-hosted runner group for an organization](#create-a-self-hosted-runner-group-for-an-organization)." + * + * You must authenticate using an access token with the `admin:org` + * scope to use this endpoint. + */ + "actions/add-repo-access-to-self-hosted-runner-group-in-org": { + parameters: { + path: { + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + /** Unique identifier of the self-hosted runner group. */ + runner_group_id: components["parameters"]["runner-group-id"]; + /** The unique identifier of the repository. */ + repository_id: components["parameters"]["repository-id"]; + }; + }; + responses: { + /** Response */ + 204: never; + }; + }; + /** + * The self-hosted runner groups REST API is available with GitHub Enterprise Cloud. For more information, see "[GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products)." + * + * + * Removes a repository from the list of selected repositories that can access a self-hosted runner group. The runner group must have `visibility` set to `selected`. For more information, see "[Create a self-hosted runner group for an organization](#create-a-self-hosted-runner-group-for-an-organization)." + * + * You must authenticate using an access token with the `admin:org` scope to use this endpoint. + */ + "actions/remove-repo-access-to-self-hosted-runner-group-in-org": { + parameters: { + path: { + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + /** Unique identifier of the self-hosted runner group. */ + runner_group_id: components["parameters"]["runner-group-id"]; + /** The unique identifier of the repository. */ + repository_id: components["parameters"]["repository-id"]; + }; + }; + responses: { + /** Response */ + 204: never; + }; + }; + /** + * The self-hosted runner groups REST API is available with GitHub Enterprise Cloud. For more information, see "[GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products)." + * + * Lists self-hosted runners that are in a specific organization group. + * + * You must authenticate using an access token with the `admin:org` scope to use this endpoint. + */ + "actions/list-self-hosted-runners-in-group-for-org": { + parameters: { + path: { + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + /** Unique identifier of the self-hosted runner group. */ + runner_group_id: components["parameters"]["runner-group-id"]; + }; + query: { + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + }; + }; + responses: { + /** Response */ + 200: { + headers: {}; + content: { + "application/json": { + total_count: number; + runners: components["schemas"]["runner"][]; + }; + }; + }; + }; + }; + /** + * The self-hosted runner groups REST API is available with GitHub Enterprise Cloud. For more information, see "[GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products)." + * + * Replaces the list of self-hosted runners that are part of an organization runner group. + * + * You must authenticate using an access token with the `admin:org` scope to use this endpoint. + */ + "actions/set-self-hosted-runners-in-group-for-org": { + parameters: { + path: { + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + /** Unique identifier of the self-hosted runner group. */ + runner_group_id: components["parameters"]["runner-group-id"]; + }; + }; + responses: { + /** Response */ + 204: never; + }; + requestBody: { + content: { + "application/json": { + /** @description List of runner IDs to add to the runner group. */ + runners: number[]; + }; + }; + }; + }; + /** + * The self-hosted runner groups REST API is available with GitHub Enterprise Cloud. For more information, see "[GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products)." + * + * + * Adds a self-hosted runner to a runner group configured in an organization. + * + * You must authenticate using an access token with the `admin:org` + * scope to use this endpoint. + */ + "actions/add-self-hosted-runner-to-group-for-org": { + parameters: { + path: { + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + /** Unique identifier of the self-hosted runner group. */ + runner_group_id: components["parameters"]["runner-group-id"]; + /** Unique identifier of the self-hosted runner. */ + runner_id: components["parameters"]["runner-id"]; + }; + }; + responses: { + /** Response */ + 204: never; + }; + }; + /** + * The self-hosted runner groups REST API is available with GitHub Enterprise Cloud. For more information, see "[GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products)." + * + * + * Removes a self-hosted runner from a group configured in an organization. The runner is then returned to the default group. + * + * You must authenticate using an access token with the `admin:org` scope to use this endpoint. + */ + "actions/remove-self-hosted-runner-from-group-for-org": { + parameters: { + path: { + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + /** Unique identifier of the self-hosted runner group. */ + runner_group_id: components["parameters"]["runner-group-id"]; + /** Unique identifier of the self-hosted runner. */ + runner_id: components["parameters"]["runner-id"]; + }; + }; + responses: { + /** Response */ + 204: never; + }; + }; + /** + * Lists all self-hosted runners configured in an organization. + * + * You must authenticate using an access token with the `admin:org` scope to use this endpoint. + */ + "actions/list-self-hosted-runners-for-org": { + parameters: { + path: { + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + }; + query: { + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + }; + }; + responses: { + /** Response */ + 200: { + headers: {}; + content: { + "application/json": { + total_count: number; + runners: components["schemas"]["runner"][]; + }; + }; + }; + }; + }; + /** + * Lists binaries for the runner application that you can download and run. + * + * You must authenticate using an access token with the `admin:org` scope to use this endpoint. + */ + "actions/list-runner-applications-for-org": { + parameters: { + path: { + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["runner-application"][]; + }; + }; + }; + }; + /** + * Returns a token that you can pass to the `config` script. The token expires after one hour. + * + * You must authenticate using an access token with the `admin:org` scope to use this endpoint. + * + * #### Example using registration token + * + * Configure your self-hosted runner, replacing `TOKEN` with the registration token provided by this endpoint. + * + * ``` + * ./config.sh --url https://github.com/octo-org --token TOKEN + * ``` + */ + "actions/create-registration-token-for-org": { + parameters: { + path: { + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + }; + }; + responses: { + /** Response */ + 201: { + content: { + "application/json": components["schemas"]["authentication-token"]; + }; + }; + }; + }; + /** + * Returns a token that you can pass to the `config` script to remove a self-hosted runner from an organization. The token expires after one hour. + * + * You must authenticate using an access token with the `admin:org` scope to use this endpoint. + * + * #### Example using remove token + * + * To remove your self-hosted runner from an organization, replace `TOKEN` with the remove token provided by this + * endpoint. + * + * ``` + * ./config.sh remove --token TOKEN + * ``` + */ + "actions/create-remove-token-for-org": { + parameters: { + path: { + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + }; + }; + responses: { + /** Response */ + 201: { + content: { + "application/json": components["schemas"]["authentication-token"]; + }; + }; + }; + }; + /** + * Gets a specific self-hosted runner configured in an organization. + * + * You must authenticate using an access token with the `admin:org` scope to use this endpoint. + */ + "actions/get-self-hosted-runner-for-org": { + parameters: { + path: { + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + /** Unique identifier of the self-hosted runner. */ + runner_id: components["parameters"]["runner-id"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["runner"]; + }; + }; + }; + }; + /** + * Forces the removal of a self-hosted runner from an organization. You can use this endpoint to completely remove the runner when the machine you were using no longer exists. + * + * You must authenticate using an access token with the `admin:org` scope to use this endpoint. + */ + "actions/delete-self-hosted-runner-from-org": { + parameters: { + path: { + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + /** Unique identifier of the self-hosted runner. */ + runner_id: components["parameters"]["runner-id"]; + }; + }; + responses: { + /** Response */ + 204: never; + }; + }; + /** + * Lists all labels for a self-hosted runner configured in an organization. + * + * You must authenticate using an access token with the `admin:org` scope to use this endpoint. + */ + "actions/list-labels-for-self-hosted-runner-for-org": { + parameters: { + path: { + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + /** Unique identifier of the self-hosted runner. */ + runner_id: components["parameters"]["runner-id"]; + }; + }; + responses: { + 200: components["responses"]["actions_runner_labels"]; + 404: components["responses"]["not_found"]; + }; + }; + /** + * Remove all previous custom labels and set the new custom labels for a specific + * self-hosted runner configured in an organization. + * + * You must authenticate using an access token with the `admin:org` scope to use this endpoint. + */ + "actions/set-custom-labels-for-self-hosted-runner-for-org": { + parameters: { + path: { + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + /** Unique identifier of the self-hosted runner. */ + runner_id: components["parameters"]["runner-id"]; + }; + }; + responses: { + 200: components["responses"]["actions_runner_labels"]; + 404: components["responses"]["not_found"]; + 422: components["responses"]["validation_failed_simple"]; + }; + requestBody: { + content: { + "application/json": { + /** @description The names of the custom labels to set for the runner. You can pass an empty array to remove all custom labels. */ + labels: string[]; + }; + }; + }; + }; + /** + * Add custom labels to a self-hosted runner configured in an organization. + * + * You must authenticate using an access token with the `admin:org` scope to use this endpoint. + */ + "actions/add-custom-labels-to-self-hosted-runner-for-org": { + parameters: { + path: { + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + /** Unique identifier of the self-hosted runner. */ + runner_id: components["parameters"]["runner-id"]; + }; + }; + responses: { + 200: components["responses"]["actions_runner_labels"]; + 404: components["responses"]["not_found"]; + 422: components["responses"]["validation_failed_simple"]; + }; + requestBody: { + content: { + "application/json": { + /** @description The names of the custom labels to add to the runner. */ + labels: string[]; + }; + }; + }; + }; + /** + * Remove all custom labels from a self-hosted runner configured in an + * organization. Returns the remaining read-only labels from the runner. + * + * You must authenticate using an access token with the `admin:org` scope to use this endpoint. + */ + "actions/remove-all-custom-labels-from-self-hosted-runner-for-org": { + parameters: { + path: { + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + /** Unique identifier of the self-hosted runner. */ + runner_id: components["parameters"]["runner-id"]; + }; + }; + responses: { + 200: components["responses"]["actions_runner_labels_readonly"]; + 404: components["responses"]["not_found"]; + }; + }; + /** + * Remove a custom label from a self-hosted runner configured + * in an organization. Returns the remaining labels from the runner. + * + * This endpoint returns a `404 Not Found` status if the custom label is not + * present on the runner. + * + * You must authenticate using an access token with the `admin:org` scope to use this endpoint. + */ + "actions/remove-custom-label-from-self-hosted-runner-for-org": { + parameters: { + path: { + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + /** Unique identifier of the self-hosted runner. */ + runner_id: components["parameters"]["runner-id"]; + /** The name of a self-hosted runner's custom label. */ + name: components["parameters"]["runner-label-name"]; + }; + }; + responses: { + 200: components["responses"]["actions_runner_labels"]; + 404: components["responses"]["not_found"]; + 422: components["responses"]["validation_failed_simple"]; + }; + }; + /** Lists all secrets available in an organization without revealing their encrypted values. You must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `secrets` organization permission to use this endpoint. */ + "actions/list-org-secrets": { + parameters: { + path: { + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + }; + query: { + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + }; + }; + responses: { + /** Response */ + 200: { + headers: {}; + content: { + "application/json": { + total_count: number; + secrets: components["schemas"]["organization-actions-secret"][]; + }; + }; + }; + }; + }; + /** Gets your public key, which you need to encrypt secrets. You need to encrypt a secret before you can create or update secrets. You must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `secrets` organization permission to use this endpoint. */ + "actions/get-org-public-key": { + parameters: { + path: { + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["actions-public-key"]; + }; + }; + }; + }; + /** Gets a single organization secret without revealing its encrypted value. You must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `secrets` organization permission to use this endpoint. */ + "actions/get-org-secret": { + parameters: { + path: { + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + /** The name of the secret. */ + secret_name: components["parameters"]["secret-name"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["organization-actions-secret"]; + }; + }; + }; + }; + /** + * Creates or updates an organization secret with an encrypted value. Encrypt your secret using + * [LibSodium](https://libsodium.gitbook.io/doc/bindings_for_other_languages). You must authenticate using an access + * token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `secrets` organization permission to + * use this endpoint. + * + * #### Example encrypting a secret using Node.js + * + * Encrypt your secret using the [tweetsodium](https://github.com/github/tweetsodium) library. + * + * ``` + * const sodium = require('tweetsodium'); + * + * const key = "base64-encoded-public-key"; + * const value = "plain-text-secret"; + * + * // Convert the message and key to Uint8Array's (Buffer implements that interface) + * const messageBytes = Buffer.from(value); + * const keyBytes = Buffer.from(key, 'base64'); + * + * // Encrypt using LibSodium. + * const encryptedBytes = sodium.seal(messageBytes, keyBytes); + * + * // Base64 the encrypted secret + * const encrypted = Buffer.from(encryptedBytes).toString('base64'); + * + * console.log(encrypted); + * ``` + * + * + * #### Example encrypting a secret using Python + * + * Encrypt your secret using [pynacl](https://pynacl.readthedocs.io/en/latest/public/#nacl-public-sealedbox) with Python 3. + * + * ``` + * from base64 import b64encode + * from nacl import encoding, public + * + * def encrypt(public_key: str, secret_value: str) -> str: + * """Encrypt a Unicode string using the public key.""" + * public_key = public.PublicKey(public_key.encode("utf-8"), encoding.Base64Encoder()) + * sealed_box = public.SealedBox(public_key) + * encrypted = sealed_box.encrypt(secret_value.encode("utf-8")) + * return b64encode(encrypted).decode("utf-8") + * ``` + * + * #### Example encrypting a secret using C# + * + * Encrypt your secret using the [Sodium.Core](https://www.nuget.org/packages/Sodium.Core/) package. + * + * ``` + * var secretValue = System.Text.Encoding.UTF8.GetBytes("mySecret"); + * var publicKey = Convert.FromBase64String("2Sg8iYjAxxmI2LvUXpJjkYrMxURPc8r+dB7TJyvvcCU="); + * + * var sealedPublicKeyBox = Sodium.SealedPublicKeyBox.Create(secretValue, publicKey); + * + * Console.WriteLine(Convert.ToBase64String(sealedPublicKeyBox)); + * ``` + * + * #### Example encrypting a secret using Ruby + * + * Encrypt your secret using the [rbnacl](https://github.com/RubyCrypto/rbnacl) gem. + * + * ```ruby + * require "rbnacl" + * require "base64" + * + * key = Base64.decode64("+ZYvJDZMHUfBkJdyq5Zm9SKqeuBQ4sj+6sfjlH4CgG0=") + * public_key = RbNaCl::PublicKey.new(key) + * + * box = RbNaCl::Boxes::Sealed.from_public_key(public_key) + * encrypted_secret = box.encrypt("my_secret") + * + * # Print the base64 encoded secret + * puts Base64.strict_encode64(encrypted_secret) + * ``` + */ + "actions/create-or-update-org-secret": { + parameters: { + path: { + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + /** The name of the secret. */ + secret_name: components["parameters"]["secret-name"]; + }; + }; + responses: { + /** Response when creating a secret */ + 201: { + content: { + "application/json": components["schemas"]["empty-object"]; + }; + }; + /** Response when updating a secret */ + 204: never; + }; + requestBody: { + content: { + "application/json": { + /** @description Value for your secret, encrypted with [LibSodium](https://libsodium.gitbook.io/doc/bindings_for_other_languages) using the public key retrieved from the [Get an organization public key](https://docs.github.com/rest/reference/actions#get-an-organization-public-key) endpoint. */ + encrypted_value?: string; + /** @description ID of the key you used to encrypt the secret. */ + key_id?: string; + /** + * @description Which type of organization repositories have access to the organization secret. `selected` means only the repositories specified by `selected_repository_ids` can access the secret. + * @enum {string} + */ + visibility: "all" | "private" | "selected"; + /** @description An array of repository ids that can access the organization secret. You can only provide a list of repository ids when the `visibility` is set to `selected`. You can manage the list of selected repositories using the [List selected repositories for an organization secret](https://docs.github.com/rest/reference/actions#list-selected-repositories-for-an-organization-secret), [Set selected repositories for an organization secret](https://docs.github.com/rest/reference/actions#set-selected-repositories-for-an-organization-secret), and [Remove selected repository from an organization secret](https://docs.github.com/rest/reference/actions#remove-selected-repository-from-an-organization-secret) endpoints. */ + selected_repository_ids?: (Partial & Partial)[]; + }; + }; + }; + }; + /** Deletes a secret in an organization using the secret name. You must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `secrets` organization permission to use this endpoint. */ + "actions/delete-org-secret": { + parameters: { + path: { + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + /** The name of the secret. */ + secret_name: components["parameters"]["secret-name"]; + }; + }; + responses: { + /** Response */ + 204: never; + }; + }; + /** Lists all repositories that have been selected when the `visibility` for repository access to a secret is set to `selected`. You must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `secrets` organization permission to use this endpoint. */ + "actions/list-selected-repos-for-org-secret": { + parameters: { + path: { + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + /** The name of the secret. */ + secret_name: components["parameters"]["secret-name"]; + }; + query: { + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": { + total_count: number; + repositories: components["schemas"]["minimal-repository"][]; + }; + }; + }; + }; + }; + /** Replaces all repositories for an organization secret when the `visibility` for repository access is set to `selected`. The visibility is set when you [Create or update an organization secret](https://docs.github.com/rest/reference/actions#create-or-update-an-organization-secret). You must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `secrets` organization permission to use this endpoint. */ + "actions/set-selected-repos-for-org-secret": { + parameters: { + path: { + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + /** The name of the secret. */ + secret_name: components["parameters"]["secret-name"]; + }; + }; + responses: { + /** Response */ + 204: never; + }; + requestBody: { + content: { + "application/json": { + /** @description An array of repository ids that can access the organization secret. You can only provide a list of repository ids when the `visibility` is set to `selected`. You can add and remove individual repositories using the [Set selected repositories for an organization secret](https://docs.github.com/rest/reference/actions#set-selected-repositories-for-an-organization-secret) and [Remove selected repository from an organization secret](https://docs.github.com/rest/reference/actions#remove-selected-repository-from-an-organization-secret) endpoints. */ + selected_repository_ids: number[]; + }; + }; + }; + }; + /** Adds a repository to an organization secret when the `visibility` for repository access is set to `selected`. The visibility is set when you [Create or update an organization secret](https://docs.github.com/rest/reference/actions#create-or-update-an-organization-secret). You must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `secrets` organization permission to use this endpoint. */ + "actions/add-selected-repo-to-org-secret": { + parameters: { + path: { + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + /** The name of the secret. */ + secret_name: components["parameters"]["secret-name"]; + repository_id: number; + }; + }; + responses: { + /** No Content when repository was added to the selected list */ + 204: never; + /** Conflict when visibility type is not set to selected */ + 409: unknown; + }; + }; + /** Removes a repository from an organization secret when the `visibility` for repository access is set to `selected`. The visibility is set when you [Create or update an organization secret](https://docs.github.com/rest/reference/actions#create-or-update-an-organization-secret). You must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `secrets` organization permission to use this endpoint. */ + "actions/remove-selected-repo-from-org-secret": { + parameters: { + path: { + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + /** The name of the secret. */ + secret_name: components["parameters"]["secret-name"]; + repository_id: number; + }; + }; + responses: { + /** Response when repository was removed from the selected list */ + 204: never; + /** Conflict when visibility type not set to selected */ + 409: unknown; + }; + }; + /** + * Gets the audit log for an organization. For more information, see "[Reviewing the audit log for your organization](https://docs.github.com/github/setting-up-and-managing-organizations-and-teams/reviewing-the-audit-log-for-your-organization)." + * + * This endpoint is available for organizations on GitHub Enterprise Cloud. To use this endpoint, you must be an organization owner, and you must use an access token with the `admin:org` scope. GitHub Apps must have the `organization_administration` read permission to use this endpoint. + * + * By default, the response includes up to 30 events from the past three months. Use the `phrase` parameter to filter results and retrieve older events. For example, use the `phrase` parameter with the `created` qualifier to filter events based on when the events occurred. For more information, see "[Reviewing the audit log for your organization](https://docs.github.com/organizations/keeping-your-organization-secure/managing-security-settings-for-your-organization/reviewing-the-audit-log-for-your-organization#searching-the-audit-log)." + * + * Use pagination to retrieve fewer or more than 30 events. For more information, see "[Resources in the REST API](https://docs.github.com/rest/overview/resources-in-the-rest-api#pagination)." + */ + "orgs/get-audit-log": { + parameters: { + path: { + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + }; + query: { + /** A search phrase. For more information, see [Searching the audit log](https://docs.github.com/github/setting-up-and-managing-organizations-and-teams/reviewing-the-audit-log-for-your-organization#searching-the-audit-log). */ + phrase?: components["parameters"]["audit-log-phrase"]; + /** + * The event types to include: + * + * - `web` - returns web (non-Git) events. + * - `git` - returns Git events. + * - `all` - returns both web and Git events. + * + * The default is `web`. + */ + include?: components["parameters"]["audit-log-include"]; + /** A cursor, as given in the [Link header](https://docs.github.com/rest/overview/resources-in-the-rest-api#link-header). If specified, the query only searches for events after this cursor. */ + after?: components["parameters"]["audit-log-after"]; + /** A cursor, as given in the [Link header](https://docs.github.com/rest/overview/resources-in-the-rest-api#link-header). If specified, the query only searches for events before this cursor. */ + before?: components["parameters"]["audit-log-before"]; + /** + * The order of audit log events. To list newest events first, specify `desc`. To list oldest events first, specify `asc`. + * + * The default is `desc`. + */ + order?: components["parameters"]["audit-log-order"]; + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["audit-log-event"][]; + }; + }; + }; + }; + /** List the users blocked by an organization. */ + "orgs/list-blocked-users": { + parameters: { + path: { + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["simple-user"][]; + }; + }; + }; + }; + "orgs/check-blocked-user": { + parameters: { + path: { + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + /** The handle for the GitHub user account. */ + username: components["parameters"]["username"]; + }; + }; + responses: { + /** If the user is blocked: */ + 204: never; + /** If the user is not blocked: */ + 404: { + content: { + "application/json": components["schemas"]["basic-error"]; + }; + }; + }; + }; + "orgs/block-user": { + parameters: { + path: { + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + /** The handle for the GitHub user account. */ + username: components["parameters"]["username"]; + }; + }; + responses: { + /** Response */ + 204: never; + 422: components["responses"]["validation_failed"]; + }; + }; + "orgs/unblock-user": { + parameters: { + path: { + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + /** The handle for the GitHub user account. */ + username: components["parameters"]["username"]; + }; + }; + responses: { + /** Response */ + 204: never; + }; + }; + /** + * Lists code scanning alerts for the default branch for all eligible repositories in an organization. Eligible repositories are repositories that are owned by organizations that you own or for which you are a security manager. For more information, see "[Managing security managers in your organization](https://docs.github.com/organizations/managing-peoples-access-to-your-organization-with-roles/managing-security-managers-in-your-organization)." + * + * To use this endpoint, you must be an owner or security manager for the organization, and you must use an access token with the `repo` scope or `security_events` scope. + * + * GitHub Apps must have the `security_events` read permission to use this endpoint. + */ + "code-scanning/list-alerts-for-org": { + parameters: { + path: { + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + }; + query: { + /** The name of a code scanning tool. Only results by this tool will be listed. You can specify the tool by using either `tool_name` or `tool_guid`, but not both. */ + tool_name?: components["parameters"]["tool-name"]; + /** The GUID of a code scanning tool. Only results by this tool will be listed. Note that some code scanning tools may not include a GUID in their analysis data. You can specify the tool by using either `tool_guid` or `tool_name`, but not both. */ + tool_guid?: components["parameters"]["tool-guid"]; + /** A cursor, as given in the [Link header](https://docs.github.com/rest/overview/resources-in-the-rest-api#link-header). If specified, the query only searches for events before this cursor. */ + before?: components["parameters"]["pagination-before"]; + /** A cursor, as given in the [Link header](https://docs.github.com/rest/overview/resources-in-the-rest-api#link-header). If specified, the query only searches for events after this cursor. */ + after?: components["parameters"]["pagination-after"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** The direction to sort the results by. */ + direction?: components["parameters"]["direction"]; + /** If specified, only code scanning alerts with this state will be returned. */ + state?: components["schemas"]["code-scanning-alert-state"]; + /** The property by which to sort the results. */ + sort?: "created" | "updated"; + }; + }; + responses: { + /** Response */ + 200: { + headers: {}; + content: { + "application/json": components["schemas"]["code-scanning-organization-alert-items"][]; + }; + }; + 403: components["responses"]["code_scanning_forbidden_read"]; + 404: components["responses"]["not_found"]; + 503: components["responses"]["service_unavailable"]; + }; + }; + /** + * Lists the codespaces associated to a specified organization. + * + * You must authenticate using an access token with the `admin:org` scope to use this endpoint. + */ + "codespaces/list-in-organization": { + parameters: { + query: { + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + }; + path: { + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": { + total_count: number; + codespaces: components["schemas"]["codespace"][]; + }; + }; + }; + 304: components["responses"]["not_modified"]; + 401: components["responses"]["requires_authentication"]; + 403: components["responses"]["forbidden"]; + 404: components["responses"]["not_found"]; + 500: components["responses"]["internal_error"]; + }; + }; + /** + * Listing and deleting credential authorizations is available to organizations with GitHub Enterprise Cloud. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products). + * + * An authenticated organization owner with the `read:org` scope can list all credential authorizations for an organization that uses SAML single sign-on (SSO). The credentials are either personal access tokens or SSH keys that organization members have authorized for the organization. For more information, see [About authentication with SAML single sign-on](https://docs.github.com/en/articles/about-authentication-with-saml-single-sign-on). + */ + "orgs/list-saml-sso-authorizations": { + parameters: { + path: { + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + }; + query: { + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page token */ + page?: number; + /** Limits the list of credentials authorizations for an organization to a specific login */ + login?: string; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["credential-authorization"][]; + }; + }; + }; + }; + /** + * Listing and deleting credential authorizations is available to organizations with GitHub Enterprise Cloud. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products). + * + * An authenticated organization owner with the `admin:org` scope can remove a credential authorization for an organization that uses SAML SSO. Once you remove someone's credential authorization, they will need to create a new personal access token or SSH key and authorize it for the organization they want to access. + */ + "orgs/remove-saml-sso-authorization": { + parameters: { + path: { + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + credential_id: number; + }; + }; + responses: { + /** Response */ + 204: never; + 404: components["responses"]["not_found"]; + }; + }; + /** Lists all secrets available in an organization without revealing their encrypted values. You must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `dependabot_secrets` organization permission to use this endpoint. */ + "dependabot/list-org-secrets": { + parameters: { + path: { + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + }; + query: { + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + }; + }; + responses: { + /** Response */ + 200: { + headers: {}; + content: { + "application/json": { + total_count: number; + secrets: components["schemas"]["organization-dependabot-secret"][]; + }; + }; + }; + }; + }; + /** Gets your public key, which you need to encrypt secrets. You need to encrypt a secret before you can create or update secrets. You must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `dependabot_secrets` organization permission to use this endpoint. */ + "dependabot/get-org-public-key": { + parameters: { + path: { + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["dependabot-public-key"]; + }; + }; + }; + }; + /** Gets a single organization secret without revealing its encrypted value. You must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `dependabot_secrets` organization permission to use this endpoint. */ + "dependabot/get-org-secret": { + parameters: { + path: { + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + /** The name of the secret. */ + secret_name: components["parameters"]["secret-name"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["organization-dependabot-secret"]; + }; + }; + }; + }; + /** + * Creates or updates an organization secret with an encrypted value. Encrypt your secret using + * [LibSodium](https://libsodium.gitbook.io/doc/bindings_for_other_languages). You must authenticate using an access + * token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `dependabot_secrets` organization + * permission to use this endpoint. + * + * #### Example encrypting a secret using Node.js + * + * Encrypt your secret using the [tweetsodium](https://github.com/github/tweetsodium) library. + * + * ``` + * const sodium = require('tweetsodium'); + * + * const key = "base64-encoded-public-key"; + * const value = "plain-text-secret"; + * + * // Convert the message and key to Uint8Array's (Buffer implements that interface) + * const messageBytes = Buffer.from(value); + * const keyBytes = Buffer.from(key, 'base64'); + * + * // Encrypt using LibSodium. + * const encryptedBytes = sodium.seal(messageBytes, keyBytes); + * + * // Base64 the encrypted secret + * const encrypted = Buffer.from(encryptedBytes).toString('base64'); + * + * console.log(encrypted); + * ``` + * + * + * #### Example encrypting a secret using Python + * + * Encrypt your secret using [pynacl](https://pynacl.readthedocs.io/en/latest/public/#nacl-public-sealedbox) with Python 3. + * + * ``` + * from base64 import b64encode + * from nacl import encoding, public + * + * def encrypt(public_key: str, secret_value: str) -> str: + * """Encrypt a Unicode string using the public key.""" + * public_key = public.PublicKey(public_key.encode("utf-8"), encoding.Base64Encoder()) + * sealed_box = public.SealedBox(public_key) + * encrypted = sealed_box.encrypt(secret_value.encode("utf-8")) + * return b64encode(encrypted).decode("utf-8") + * ``` + * + * #### Example encrypting a secret using C# + * + * Encrypt your secret using the [Sodium.Core](https://www.nuget.org/packages/Sodium.Core/) package. + * + * ``` + * var secretValue = System.Text.Encoding.UTF8.GetBytes("mySecret"); + * var publicKey = Convert.FromBase64String("2Sg8iYjAxxmI2LvUXpJjkYrMxURPc8r+dB7TJyvvcCU="); + * + * var sealedPublicKeyBox = Sodium.SealedPublicKeyBox.Create(secretValue, publicKey); + * + * Console.WriteLine(Convert.ToBase64String(sealedPublicKeyBox)); + * ``` + * + * #### Example encrypting a secret using Ruby + * + * Encrypt your secret using the [rbnacl](https://github.com/RubyCrypto/rbnacl) gem. + * + * ```ruby + * require "rbnacl" + * require "base64" + * + * key = Base64.decode64("+ZYvJDZMHUfBkJdyq5Zm9SKqeuBQ4sj+6sfjlH4CgG0=") + * public_key = RbNaCl::PublicKey.new(key) + * + * box = RbNaCl::Boxes::Sealed.from_public_key(public_key) + * encrypted_secret = box.encrypt("my_secret") + * + * # Print the base64 encoded secret + * puts Base64.strict_encode64(encrypted_secret) + * ``` + */ + "dependabot/create-or-update-org-secret": { + parameters: { + path: { + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + /** The name of the secret. */ + secret_name: components["parameters"]["secret-name"]; + }; + }; + responses: { + /** Response when creating a secret */ + 201: { + content: { + "application/json": components["schemas"]["empty-object"]; + }; + }; + /** Response when updating a secret */ + 204: never; + }; + requestBody: { + content: { + "application/json": { + /** @description Value for your secret, encrypted with [LibSodium](https://libsodium.gitbook.io/doc/bindings_for_other_languages) using the public key retrieved from the [Get an organization public key](https://docs.github.com/rest/reference/dependabot#get-an-organization-public-key) endpoint. */ + encrypted_value?: string; + /** @description ID of the key you used to encrypt the secret. */ + key_id?: string; + /** + * @description Which type of organization repositories have access to the organization secret. `selected` means only the repositories specified by `selected_repository_ids` can access the secret. + * @enum {string} + */ + visibility: "all" | "private" | "selected"; + /** @description An array of repository ids that can access the organization secret. You can only provide a list of repository ids when the `visibility` is set to `selected`. You can manage the list of selected repositories using the [List selected repositories for an organization secret](https://docs.github.com/rest/reference/dependabot#list-selected-repositories-for-an-organization-secret), [Set selected repositories for an organization secret](https://docs.github.com/rest/reference/dependabot#set-selected-repositories-for-an-organization-secret), and [Remove selected repository from an organization secret](https://docs.github.com/rest/reference/dependabot#remove-selected-repository-from-an-organization-secret) endpoints. */ + selected_repository_ids?: (Partial & Partial)[]; + }; + }; + }; + }; + /** Deletes a secret in an organization using the secret name. You must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `dependabot_secrets` organization permission to use this endpoint. */ + "dependabot/delete-org-secret": { + parameters: { + path: { + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + /** The name of the secret. */ + secret_name: components["parameters"]["secret-name"]; + }; + }; + responses: { + /** Response */ + 204: never; + }; + }; + /** Lists all repositories that have been selected when the `visibility` for repository access to a secret is set to `selected`. You must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `dependabot_secrets` organization permission to use this endpoint. */ + "dependabot/list-selected-repos-for-org-secret": { + parameters: { + path: { + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + /** The name of the secret. */ + secret_name: components["parameters"]["secret-name"]; + }; + query: { + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": { + total_count: number; + repositories: components["schemas"]["minimal-repository"][]; + }; + }; + }; + }; + }; + /** Replaces all repositories for an organization secret when the `visibility` for repository access is set to `selected`. The visibility is set when you [Create or update an organization secret](https://docs.github.com/rest/reference/dependabot#create-or-update-an-organization-secret). You must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `dependabot_secrets` organization permission to use this endpoint. */ + "dependabot/set-selected-repos-for-org-secret": { + parameters: { + path: { + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + /** The name of the secret. */ + secret_name: components["parameters"]["secret-name"]; + }; + }; + responses: { + /** Response */ + 204: never; + }; + requestBody: { + content: { + "application/json": { + /** @description An array of repository ids that can access the organization secret. You can only provide a list of repository ids when the `visibility` is set to `selected`. You can add and remove individual repositories using the [Set selected repositories for an organization secret](https://docs.github.com/rest/reference/dependabot#set-selected-repositories-for-an-organization-secret) and [Remove selected repository from an organization secret](https://docs.github.com/rest/reference/dependabot#remove-selected-repository-from-an-organization-secret) endpoints. */ + selected_repository_ids: number[]; + }; + }; + }; + }; + /** Adds a repository to an organization secret when the `visibility` for repository access is set to `selected`. The visibility is set when you [Create or update an organization secret](https://docs.github.com/rest/reference/dependabot#create-or-update-an-organization-secret). You must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `dependabot_secrets` organization permission to use this endpoint. */ + "dependabot/add-selected-repo-to-org-secret": { + parameters: { + path: { + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + /** The name of the secret. */ + secret_name: components["parameters"]["secret-name"]; + repository_id: number; + }; + }; + responses: { + /** No Content when repository was added to the selected list */ + 204: never; + /** Conflict when visibility type is not set to selected */ + 409: unknown; + }; + }; + /** Removes a repository from an organization secret when the `visibility` for repository access is set to `selected`. The visibility is set when you [Create or update an organization secret](https://docs.github.com/rest/reference/dependabot#create-or-update-an-organization-secret). You must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `dependabot_secrets` organization permission to use this endpoint. */ + "dependabot/remove-selected-repo-from-org-secret": { + parameters: { + path: { + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + /** The name of the secret. */ + secret_name: components["parameters"]["secret-name"]; + repository_id: number; + }; + }; + responses: { + /** Response when repository was removed from the selected list */ + 204: never; + /** Conflict when visibility type not set to selected */ + 409: unknown; + }; + }; + "activity/list-public-org-events": { + parameters: { + path: { + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + }; + query: { + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["event"][]; + }; + }; + }; + }; + /** + * Displays information about the specific group's usage. Provides a list of the group's external members as well as a list of teams that this group is connected to. + * + * You can manage team membership with your identity provider using Enterprise Managed Users for GitHub Enterprise Cloud. For more information, see "[GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products)" in the GitHub Help documentation. + */ + "teams/external-idp-group-info-for-org": { + parameters: { + path: { + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + /** The unique identifier of the group. */ + group_id: components["parameters"]["group-id"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["external-group"]; + }; + }; + }; + }; + /** + * Lists external groups available in an organization. You can query the groups using the `display_name` parameter, only groups with a `group_name` containing the text provided in the `display_name` parameter will be returned. You can also limit your page results using the `per_page` parameter. GitHub generates a url-encoded `page` token using a cursor value for where the next page begins. For more information on cursor pagination, see "[Offset and Cursor Pagination explained](https://dev.to/jackmarchant/offset-and-cursor-pagination-explained-b89)." + * + * You can manage team membership with your identity provider using Enterprise Managed Users for GitHub Enterprise Cloud. For more information, see "[GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products)" in the GitHub Help documentation. + */ + "teams/list-external-idp-groups-for-org": { + parameters: { + path: { + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + }; + query: { + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page token */ + page?: number; + /** Limits the list to groups containing the text in the group name */ + display_name?: string; + }; + }; + responses: { + /** Response */ + 200: { + headers: { + Link?: string; + }; + content: { + "application/json": components["schemas"]["external-groups"]; + }; + }; + }; + }; + /** The return hash contains `failed_at` and `failed_reason` fields which represent the time at which the invitation failed and the reason for the failure. */ + "orgs/list-failed-invitations": { + parameters: { + path: { + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + }; + query: { + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + }; + }; + responses: { + /** Response */ + 200: { + headers: {}; + content: { + "application/json": components["schemas"]["organization-invitation"][]; + }; + }; + 404: components["responses"]["not_found"]; + }; + }; + "orgs/list-webhooks": { + parameters: { + path: { + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + }; + query: { + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + }; + }; + responses: { + /** Response */ + 200: { + headers: {}; + content: { + "application/json": components["schemas"]["org-hook"][]; + }; + }; + 404: components["responses"]["not_found"]; + }; + }; + /** Here's how you can create a hook that posts payloads in JSON format: */ + "orgs/create-webhook": { + parameters: { + path: { + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + }; + }; + responses: { + /** Response */ + 201: { + headers: { + Location?: string; + }; + content: { + "application/json": components["schemas"]["org-hook"]; + }; + }; + 404: components["responses"]["not_found"]; + 422: components["responses"]["validation_failed"]; + }; + requestBody: { + content: { + "application/json": { + /** @description Must be passed as "web". */ + name: string; + /** @description Key/value pairs to provide settings for this webhook. [These are defined below](https://docs.github.com/rest/reference/orgs#create-hook-config-params). */ + config: { + url: components["schemas"]["webhook-config-url"]; + content_type?: components["schemas"]["webhook-config-content-type"]; + secret?: components["schemas"]["webhook-config-secret"]; + insecure_ssl?: components["schemas"]["webhook-config-insecure-ssl"]; + /** @example "kdaigle" */ + username?: string; + /** @example "password" */ + password?: string; + }; + /** + * @description Determines what [events](https://docs.github.com/webhooks/event-payloads) the hook is triggered for. + * @default [ + * "push" + * ] + */ + events?: string[]; + /** + * @description Determines if notifications are sent when the webhook is triggered. Set to `true` to send notifications. + * @default true + */ + active?: boolean; + }; + }; + }; + }; + /** Returns a webhook configured in an organization. To get only the webhook `config` properties, see "[Get a webhook configuration for an organization](/rest/reference/orgs#get-a-webhook-configuration-for-an-organization)." */ + "orgs/get-webhook": { + parameters: { + path: { + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + /** The unique identifier of the hook. */ + hook_id: components["parameters"]["hook-id"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["org-hook"]; + }; + }; + 404: components["responses"]["not_found"]; + }; + }; + "orgs/delete-webhook": { + parameters: { + path: { + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + /** The unique identifier of the hook. */ + hook_id: components["parameters"]["hook-id"]; + }; + }; + responses: { + /** Response */ + 204: never; + 404: components["responses"]["not_found"]; + }; + }; + /** Updates a webhook configured in an organization. When you update a webhook, the `secret` will be overwritten. If you previously had a `secret` set, you must provide the same `secret` or set a new `secret` or the secret will be removed. If you are only updating individual webhook `config` properties, use "[Update a webhook configuration for an organization](/rest/reference/orgs#update-a-webhook-configuration-for-an-organization)." */ + "orgs/update-webhook": { + parameters: { + path: { + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + /** The unique identifier of the hook. */ + hook_id: components["parameters"]["hook-id"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["org-hook"]; + }; + }; + 404: components["responses"]["not_found"]; + 422: components["responses"]["validation_failed"]; + }; + requestBody: { + content: { + "application/json": { + /** @description Key/value pairs to provide settings for this webhook. [These are defined below](https://docs.github.com/rest/reference/orgs#update-hook-config-params). */ + config?: { + url: components["schemas"]["webhook-config-url"]; + content_type?: components["schemas"]["webhook-config-content-type"]; + secret?: components["schemas"]["webhook-config-secret"]; + insecure_ssl?: components["schemas"]["webhook-config-insecure-ssl"]; + }; + /** + * @description Determines what [events](https://docs.github.com/webhooks/event-payloads) the hook is triggered for. + * @default [ + * "push" + * ] + */ + events?: string[]; + /** + * @description Determines if notifications are sent when the webhook is triggered. Set to `true` to send notifications. + * @default true + */ + active?: boolean; + /** @example "web" */ + name?: string; + }; + }; + }; + }; + /** + * Returns the webhook configuration for an organization. To get more information about the webhook, including the `active` state and `events`, use "[Get an organization webhook ](/rest/reference/orgs#get-an-organization-webhook)." + * + * Access tokens must have the `admin:org_hook` scope, and GitHub Apps must have the `organization_hooks:read` permission. + */ + "orgs/get-webhook-config-for-org": { + parameters: { + path: { + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + /** The unique identifier of the hook. */ + hook_id: components["parameters"]["hook-id"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["webhook-config"]; + }; + }; + }; + }; + /** + * Updates the webhook configuration for an organization. To update more information about the webhook, including the `active` state and `events`, use "[Update an organization webhook ](/rest/reference/orgs#update-an-organization-webhook)." + * + * Access tokens must have the `admin:org_hook` scope, and GitHub Apps must have the `organization_hooks:write` permission. + */ + "orgs/update-webhook-config-for-org": { + parameters: { + path: { + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + /** The unique identifier of the hook. */ + hook_id: components["parameters"]["hook-id"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["webhook-config"]; + }; + }; + }; + requestBody: { + content: { + "application/json": { + url?: components["schemas"]["webhook-config-url"]; + content_type?: components["schemas"]["webhook-config-content-type"]; + secret?: components["schemas"]["webhook-config-secret"]; + insecure_ssl?: components["schemas"]["webhook-config-insecure-ssl"]; + }; + }; + }; + }; + /** Returns a list of webhook deliveries for a webhook configured in an organization. */ + "orgs/list-webhook-deliveries": { + parameters: { + path: { + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + /** The unique identifier of the hook. */ + hook_id: components["parameters"]["hook-id"]; + }; + query: { + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Used for pagination: the starting delivery from which the page of deliveries is fetched. Refer to the `link` header for the next and previous page cursors. */ + cursor?: components["parameters"]["cursor"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["hook-delivery-item"][]; + }; + }; + 400: components["responses"]["bad_request"]; + 422: components["responses"]["validation_failed"]; + }; + }; + /** Returns a delivery for a webhook configured in an organization. */ + "orgs/get-webhook-delivery": { + parameters: { + path: { + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + /** The unique identifier of the hook. */ + hook_id: components["parameters"]["hook-id"]; + delivery_id: components["parameters"]["delivery-id"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["hook-delivery"]; + }; + }; + 400: components["responses"]["bad_request"]; + 422: components["responses"]["validation_failed"]; + }; + }; + /** Redeliver a delivery for a webhook configured in an organization. */ + "orgs/redeliver-webhook-delivery": { + parameters: { + path: { + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + /** The unique identifier of the hook. */ + hook_id: components["parameters"]["hook-id"]; + delivery_id: components["parameters"]["delivery-id"]; + }; + }; + responses: { + 202: components["responses"]["accepted"]; + 400: components["responses"]["bad_request"]; + 422: components["responses"]["validation_failed"]; + }; + }; + /** This will trigger a [ping event](https://docs.github.com/webhooks/#ping-event) to be sent to the hook. */ + "orgs/ping-webhook": { + parameters: { + path: { + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + /** The unique identifier of the hook. */ + hook_id: components["parameters"]["hook-id"]; + }; + }; + responses: { + /** Response */ + 204: never; + 404: components["responses"]["not_found"]; + }; + }; + /** + * Enables an authenticated GitHub App to find the organization's installation information. + * + * You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. + */ + "apps/get-org-installation": { + parameters: { + path: { + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["installation"]; + }; + }; + }; + }; + /** Lists all GitHub Apps in an organization. The installation count includes all GitHub Apps installed on repositories in the organization. You must be an organization owner with `admin:read` scope to use this endpoint. */ + "orgs/list-app-installations": { + parameters: { + path: { + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + }; + query: { + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + }; + }; + responses: { + /** Response */ + 200: { + headers: {}; + content: { + "application/json": { + total_count: number; + installations: components["schemas"]["installation"][]; + }; + }; + }; + }; + }; + /** Shows which type of GitHub user can interact with this organization and when the restriction expires. If there is no restrictions, you will see an empty response. */ + "interactions/get-restrictions-for-org": { + parameters: { + path: { + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": Partial< + components["schemas"]["interaction-limit-response"] + > & + Partial<{ [key: string]: unknown }>; + }; + }; + }; + }; + /** Temporarily restricts interactions to a certain type of GitHub user in any public repository in the given organization. You must be an organization owner to set these restrictions. Setting the interaction limit at the organization level will overwrite any interaction limits that are set for individual repositories owned by the organization. */ + "interactions/set-restrictions-for-org": { + parameters: { + path: { + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["interaction-limit-response"]; + }; + }; + 422: components["responses"]["validation_failed"]; + }; + requestBody: { + content: { + "application/json": components["schemas"]["interaction-limit"]; + }; + }; + }; + /** Removes all interaction restrictions from public repositories in the given organization. You must be an organization owner to remove restrictions. */ + "interactions/remove-restrictions-for-org": { + parameters: { + path: { + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + }; + }; + responses: { + /** Response */ + 204: never; + }; + }; + /** The return hash contains a `role` field which refers to the Organization Invitation role and will be one of the following values: `direct_member`, `admin`, `billing_manager`, `hiring_manager`, or `reinstate`. If the invitee is not a GitHub member, the `login` field in the return hash will be `null`. */ + "orgs/list-pending-invitations": { + parameters: { + path: { + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + }; + query: { + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + }; + }; + responses: { + /** Response */ + 200: { + headers: {}; + content: { + "application/json": components["schemas"]["organization-invitation"][]; + }; + }; + 404: components["responses"]["not_found"]; + }; + }; + /** + * Invite people to an organization by using their GitHub user ID or their email address. In order to create invitations in an organization, the authenticated user must be an organization owner. + * + * This endpoint triggers [notifications](https://docs.github.com/en/github/managing-subscriptions-and-notifications-on-github/about-notifications). Creating content too quickly using this endpoint may result in secondary rate limiting. See "[Secondary rate limits](https://docs.github.com/rest/overview/resources-in-the-rest-api#secondary-rate-limits)" and "[Dealing with secondary rate limits](https://docs.github.com/rest/guides/best-practices-for-integrators#dealing-with-secondary-rate-limits)" for details. + */ + "orgs/create-invitation": { + parameters: { + path: { + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + }; + }; + responses: { + /** Response */ + 201: { + content: { + "application/json": components["schemas"]["organization-invitation"]; + }; + }; + 404: components["responses"]["not_found"]; + 422: components["responses"]["validation_failed"]; + }; + requestBody: { + content: { + "application/json": { + /** @description **Required unless you provide `email`**. GitHub user ID for the person you are inviting. */ + invitee_id?: number; + /** @description **Required unless you provide `invitee_id`**. Email address of the person you are inviting, which can be an existing GitHub user. */ + email?: string; + /** + * @description The role for the new member. + * \* `admin` - Organization owners with full administrative rights to the organization and complete access to all repositories and teams. + * \* `direct_member` - Non-owner organization members with ability to see other members and join teams by invitation. + * \* `billing_manager` - Non-owner organization members with ability to manage the billing settings of your organization. + * @default direct_member + * @enum {string} + */ + role?: "admin" | "direct_member" | "billing_manager"; + /** @description Specify IDs for the teams you want to invite new members to. */ + team_ids?: number[]; + }; + }; + }; + }; + /** + * Cancel an organization invitation. In order to cancel an organization invitation, the authenticated user must be an organization owner. + * + * This endpoint triggers [notifications](https://docs.github.com/en/github/managing-subscriptions-and-notifications-on-github/about-notifications). + */ + "orgs/cancel-invitation": { + parameters: { + path: { + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + /** The unique identifier of the invitation. */ + invitation_id: components["parameters"]["invitation-id"]; + }; + }; + responses: { + /** Response */ + 204: never; + 404: components["responses"]["not_found"]; + 422: components["responses"]["validation_failed"]; + }; + }; + /** List all teams associated with an invitation. In order to see invitations in an organization, the authenticated user must be an organization owner. */ + "orgs/list-invitation-teams": { + parameters: { + path: { + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + /** The unique identifier of the invitation. */ + invitation_id: components["parameters"]["invitation-id"]; + }; + query: { + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + }; + }; + responses: { + /** Response */ + 200: { + headers: {}; + content: { + "application/json": components["schemas"]["team"][]; + }; + }; + 404: components["responses"]["not_found"]; + }; + }; + /** + * List issues in an organization assigned to the authenticated user. + * + * **Note**: GitHub's REST API v3 considers every pull request an issue, but not every issue is a pull request. For this + * reason, "Issues" endpoints may return both issues and pull requests in the response. You can identify pull requests by + * the `pull_request` key. Be aware that the `id` of a pull request returned from "Issues" endpoints will be an _issue id_. To find out the pull + * request id, use the "[List pull requests](https://docs.github.com/rest/reference/pulls#list-pull-requests)" endpoint. + */ + "issues/list-for-org": { + parameters: { + path: { + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + }; + query: { + /** Indicates which sorts of issues to return. `assigned` means issues assigned to you. `created` means issues created by you. `mentioned` means issues mentioning you. `subscribed` means issues you're subscribed to updates for. `all` or `repos` means all issues you can see, regardless of participation or creation. */ + filter?: + | "assigned" + | "created" + | "mentioned" + | "subscribed" + | "repos" + | "all"; + /** Indicates the state of the issues to return. Can be either `open`, `closed`, or `all`. */ + state?: "open" | "closed" | "all"; + /** A list of comma separated label names. Example: `bug,ui,@high` */ + labels?: components["parameters"]["labels"]; + /** What to sort results by. Can be either `created`, `updated`, `comments`. */ + sort?: "created" | "updated" | "comments"; + /** The direction to sort the results by. */ + direction?: components["parameters"]["direction"]; + /** Only show notifications updated after the given time. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`. */ + since?: components["parameters"]["since"]; + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + }; + }; + responses: { + /** Response */ + 200: { + headers: {}; + content: { + "application/json": components["schemas"]["issue"][]; + }; + }; + 404: components["responses"]["not_found"]; + }; + }; + /** List all users who are members of an organization. If the authenticated user is also a member of this organization then both concealed and public members will be returned. */ + "orgs/list-members": { + parameters: { + path: { + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + }; + query: { + /** Filter members returned in the list. `2fa_disabled` means that only members without [two-factor authentication](https://github.com/blog/1614-two-factor-authentication) enabled will be returned. This options is only available for organization owners. */ + filter?: "2fa_disabled" | "all"; + /** Filter members returned by their role. */ + role?: "all" | "admin" | "member"; + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + }; + }; + responses: { + /** Response */ + 200: { + headers: {}; + content: { + "application/json": components["schemas"]["simple-user"][]; + }; + }; + /** Response if requester is not an organization member */ + 302: never; + 422: components["responses"]["validation_failed"]; + }; + }; + /** Check if a user is, publicly or privately, a member of the organization. */ + "orgs/check-membership-for-user": { + parameters: { + path: { + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + /** The handle for the GitHub user account. */ + username: components["parameters"]["username"]; + }; + }; + responses: { + /** Response if requester is an organization member and user is a member */ + 204: never; + /** Response if requester is not an organization member */ + 302: never; + /** Not Found if requester is an organization member and user is not a member */ + 404: unknown; + }; + }; + /** Removing a user from this list will remove them from all teams and they will no longer have any access to the organization's repositories. */ + "orgs/remove-member": { + parameters: { + path: { + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + /** The handle for the GitHub user account. */ + username: components["parameters"]["username"]; + }; + }; + responses: { + /** Response */ + 204: never; + 403: components["responses"]["forbidden"]; + }; + }; + /** + * Deletes a user's codespace. + * + * You must authenticate using an access token with the `admin:org` scope to use this endpoint. + */ + "codespaces/delete-from-organization": { + parameters: { + path: { + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + /** The handle for the GitHub user account. */ + username: components["parameters"]["username"]; + /** The name of the codespace. */ + codespace_name: components["parameters"]["codespace-name"]; + }; + }; + responses: { + 202: components["responses"]["accepted"]; + 304: components["responses"]["not_modified"]; + 401: components["responses"]["requires_authentication"]; + 403: components["responses"]["forbidden"]; + 404: components["responses"]["not_found"]; + 500: components["responses"]["internal_error"]; + }; + }; + /** + * Stops a user's codespace. + * + * You must authenticate using an access token with the `admin:org` scope to use this endpoint. + */ + "codespaces/stop-in-organization": { + parameters: { + path: { + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + /** The handle for the GitHub user account. */ + username: components["parameters"]["username"]; + /** The name of the codespace. */ + codespace_name: components["parameters"]["codespace-name"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["codespace"]; + }; + }; + 304: components["responses"]["not_modified"]; + 401: components["responses"]["requires_authentication"]; + 403: components["responses"]["forbidden"]; + 404: components["responses"]["not_found"]; + 500: components["responses"]["internal_error"]; + }; + }; + /** In order to get a user's membership with an organization, the authenticated user must be an organization member. The `state` parameter in the response can be used to identify the user's membership status. */ + "orgs/get-membership-for-user": { + parameters: { + path: { + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + /** The handle for the GitHub user account. */ + username: components["parameters"]["username"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["org-membership"]; + }; + }; + 403: components["responses"]["forbidden"]; + 404: components["responses"]["not_found"]; + }; + }; + /** + * Only authenticated organization owners can add a member to the organization or update the member's role. + * + * * If the authenticated user is _adding_ a member to the organization, the invited user will receive an email inviting them to the organization. The user's [membership status](https://docs.github.com/rest/reference/orgs#get-organization-membership-for-a-user) will be `pending` until they accept the invitation. + * + * * Authenticated users can _update_ a user's membership by passing the `role` parameter. If the authenticated user changes a member's role to `admin`, the affected user will receive an email notifying them that they've been made an organization owner. If the authenticated user changes an owner's role to `member`, no email will be sent. + * + * **Rate limits** + * + * To prevent abuse, the authenticated user is limited to 50 organization invitations per 24 hour period. If the organization is more than one month old or on a paid plan, the limit is 500 invitations per 24 hour period. + */ + "orgs/set-membership-for-user": { + parameters: { + path: { + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + /** The handle for the GitHub user account. */ + username: components["parameters"]["username"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["org-membership"]; + }; + }; + 403: components["responses"]["forbidden"]; + 422: components["responses"]["validation_failed"]; + }; + requestBody: { + content: { + "application/json": { + /** + * @description The role to give the user in the organization. Can be one of: + * \* `admin` - The user will become an owner of the organization. + * \* `member` - The user will become a non-owner member of the organization. + * @default member + * @enum {string} + */ + role?: "admin" | "member"; + }; + }; + }; + }; + /** + * In order to remove a user's membership with an organization, the authenticated user must be an organization owner. + * + * If the specified user is an active member of the organization, this will remove them from the organization. If the specified user has been invited to the organization, this will cancel their invitation. The specified user will receive an email notification in both cases. + */ + "orgs/remove-membership-for-user": { + parameters: { + path: { + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + /** The handle for the GitHub user account. */ + username: components["parameters"]["username"]; + }; + }; + responses: { + /** Response */ + 204: never; + 403: components["responses"]["forbidden"]; + 404: components["responses"]["not_found"]; + }; + }; + /** Lists the most recent migrations. */ + "migrations/list-for-org": { + parameters: { + path: { + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + }; + query: { + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + /** Exclude attributes from the API response to improve performance */ + exclude?: "repositories"[]; + }; + }; + responses: { + /** Response */ + 200: { + headers: {}; + content: { + "application/json": components["schemas"]["migration"][]; + }; + }; + }; + }; + /** Initiates the generation of a migration archive. */ + "migrations/start-for-org": { + parameters: { + path: { + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + }; + }; + responses: { + /** Response */ + 201: { + content: { + "application/json": components["schemas"]["migration"]; + }; + }; + 404: components["responses"]["not_found"]; + 422: components["responses"]["validation_failed"]; + }; + requestBody: { + content: { + "application/json": { + /** @description A list of arrays indicating which repositories should be migrated. */ + repositories: string[]; + /** + * @description Indicates whether repositories should be locked (to prevent manipulation) while migrating data. + * @default false + * @example true + */ + lock_repositories?: boolean; + /** + * @description Indicates whether metadata should be excluded and only git source should be included for the migration. + * @default false + */ + exclude_metadata?: boolean; + /** + * @description Indicates whether the repository git data should be excluded from the migration. + * @default false + */ + exclude_git_data?: boolean; + /** + * @description Indicates whether attachments should be excluded from the migration (to reduce migration archive file size). + * @default false + * @example true + */ + exclude_attachments?: boolean; + /** + * @description Indicates whether releases should be excluded from the migration (to reduce migration archive file size). + * @default false + * @example true + */ + exclude_releases?: boolean; + /** + * @description Indicates whether projects owned by the organization or users should be excluded. from the migration. + * @default false + * @example true + */ + exclude_owner_projects?: boolean; + /** + * @description Indicates whether this should only include organization metadata (repositories array should be empty and will ignore other flags). + * @default false + * @example true + */ + org_metadata_only?: boolean; + /** @description Exclude related items from being returned in the response in order to improve performance of the request. The array can include any of: `"repositories"`. */ + exclude?: "repositories"[]; + }; + }; + }; + }; + /** + * Fetches the status of a migration. + * + * The `state` of a migration can be one of the following values: + * + * * `pending`, which means the migration hasn't started yet. + * * `exporting`, which means the migration is in progress. + * * `exported`, which means the migration finished successfully. + * * `failed`, which means the migration failed. + */ + "migrations/get-status-for-org": { + parameters: { + path: { + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + /** The unique identifier of the migration. */ + migration_id: components["parameters"]["migration-id"]; + }; + query: { + /** Exclude attributes from the API response to improve performance */ + exclude?: "repositories"[]; + }; + }; + responses: { + /** + * * `pending`, which means the migration hasn't started yet. + * * `exporting`, which means the migration is in progress. + * * `exported`, which means the migration finished successfully. + * * `failed`, which means the migration failed. + */ + 200: { + content: { + "application/json": components["schemas"]["migration"]; + }; + }; + 404: components["responses"]["not_found"]; + }; + }; + /** Fetches the URL to a migration archive. */ + "migrations/download-archive-for-org": { + parameters: { + path: { + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + /** The unique identifier of the migration. */ + migration_id: components["parameters"]["migration-id"]; + }; + }; + responses: { + /** Response */ + 302: never; + 404: components["responses"]["not_found"]; + }; + }; + /** Deletes a previous migration archive. Migration archives are automatically deleted after seven days. */ + "migrations/delete-archive-for-org": { + parameters: { + path: { + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + /** The unique identifier of the migration. */ + migration_id: components["parameters"]["migration-id"]; + }; + }; + responses: { + /** Response */ + 204: never; + 404: components["responses"]["not_found"]; + }; + }; + /** Unlocks a repository that was locked for migration. You should unlock each migrated repository and [delete them](https://docs.github.com/rest/reference/repos#delete-a-repository) when the migration is complete and you no longer need the source data. */ + "migrations/unlock-repo-for-org": { + parameters: { + path: { + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + /** The unique identifier of the migration. */ + migration_id: components["parameters"]["migration-id"]; + /** repo_name parameter */ + repo_name: components["parameters"]["repo-name"]; + }; + }; + responses: { + /** Response */ + 204: never; + 404: components["responses"]["not_found"]; + }; + }; + /** List all the repositories for this organization migration. */ + "migrations/list-repos-for-org": { + parameters: { + path: { + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + /** The unique identifier of the migration. */ + migration_id: components["parameters"]["migration-id"]; + }; + query: { + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + }; + }; + responses: { + /** Response */ + 200: { + headers: {}; + content: { + "application/json": components["schemas"]["minimal-repository"][]; + }; + }; + 404: components["responses"]["not_found"]; + }; + }; + /** List all users who are outside collaborators of an organization. */ + "orgs/list-outside-collaborators": { + parameters: { + path: { + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + }; + query: { + /** Filter the list of outside collaborators. `2fa_disabled` means that only outside collaborators without [two-factor authentication](https://github.com/blog/1614-two-factor-authentication) enabled will be returned. */ + filter?: "2fa_disabled" | "all"; + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + }; + }; + responses: { + /** Response */ + 200: { + headers: {}; + content: { + "application/json": components["schemas"]["simple-user"][]; + }; + }; + }; + }; + /** When an organization member is converted to an outside collaborator, they'll only have access to the repositories that their current team membership allows. The user will no longer be a member of the organization. For more information, see "[Converting an organization member to an outside collaborator](https://docs.github.com/articles/converting-an-organization-member-to-an-outside-collaborator/)". Converting an organization member to an outside collaborator may be restricted by enterprise administrators. For more information, see "[Enforcing repository management policies in your enterprise](https://docs.github.com/enterprise-cloud@latest/admin/policies/enforcing-policies-for-your-enterprise/enforcing-repository-management-policies-in-your-enterprise#enforcing-a-policy-for-inviting-outside-collaborators-to-repositories)." */ + "orgs/convert-member-to-outside-collaborator": { + parameters: { + path: { + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + /** The handle for the GitHub user account. */ + username: components["parameters"]["username"]; + }; + }; + responses: { + /** User is getting converted asynchronously */ + 202: { + content: { + "application/json": { [key: string]: unknown }; + }; + }; + /** User was converted */ + 204: never; + /** Forbidden if user is the last owner of the organization, not a member of the organization, or if the enterprise enforces a policy for inviting outside collaborators. For more information, see "[Enforcing repository management policies in your enterprise](https://docs.github.com/en/enterprise-cloud@latest/admin/policies/enforcing-policies-for-your-enterprise/enforcing-repository-management-policies-in-your-enterprise#enforcing-a-policy-for-inviting-outside-collaborators-to-repositories)." */ + 403: unknown; + 404: components["responses"]["not_found"]; + }; + requestBody: { + content: { + "application/json": { + /** + * @description When set to `true`, the request will be performed asynchronously. Returns a 202 status code when the job is successfully queued. + * @default false + */ + async?: boolean; + }; + }; + }; + }; + /** Removing a user from this list will remove them from all the organization's repositories. */ + "orgs/remove-outside-collaborator": { + parameters: { + path: { + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + /** The handle for the GitHub user account. */ + username: components["parameters"]["username"]; + }; + }; + responses: { + /** Response */ + 204: never; + /** Unprocessable Entity if user is a member of the organization */ + 422: { + content: { + "application/json": { + message?: string; + documentation_url?: string; + }; + }; + }; + }; + }; + /** + * Lists all packages in an organization readable by the user. + * + * To use this endpoint, you must authenticate using an access token with the `packages:read` scope. + * If `package_type` is not `container`, your token must also include the `repo` scope. + */ + "packages/list-packages-for-organization": { + parameters: { + query: { + /** The type of supported package. Packages in GitHub's Gradle registry have the type `maven`. Docker images pushed to GitHub's Container registry (`ghcr.io`) have the type `container`. You can use the type `docker` to find images that were pushed to GitHub's Docker registry (`docker.pkg.github.com`), even if these have now been migrated to the Container registry. */ + package_type: + | "npm" + | "maven" + | "rubygems" + | "docker" + | "nuget" + | "container"; + /** The selected visibility of the packages. Only `container` package_types currently support `internal` visibility properly. For other ecosystems `internal` is synonymous with `private`. This parameter is optional and only filters an existing result set. */ + visibility?: components["parameters"]["package-visibility"]; + }; + path: { + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["package"][]; + }; + }; + 401: components["responses"]["requires_authentication"]; + 403: components["responses"]["forbidden"]; + }; + }; + /** + * Gets a specific package in an organization. + * + * To use this endpoint, you must authenticate using an access token with the `packages:read` scope. + * If `package_type` is not `container`, your token must also include the `repo` scope. + */ + "packages/get-package-for-organization": { + parameters: { + path: { + /** The type of supported package. Packages in GitHub's Gradle registry have the type `maven`. Docker images pushed to GitHub's Container registry (`ghcr.io`) have the type `container`. You can use the type `docker` to find images that were pushed to GitHub's Docker registry (`docker.pkg.github.com`), even if these have now been migrated to the Container registry. */ + package_type: components["parameters"]["package-type"]; + /** The name of the package. */ + package_name: components["parameters"]["package-name"]; + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["package"]; + }; + }; + }; + }; + /** + * Deletes an entire package in an organization. You cannot delete a public package if any version of the package has more than 5,000 downloads. In this scenario, contact GitHub support for further assistance. + * + * To use this endpoint, you must have admin permissions in the organization and authenticate using an access token with the `packages:read` and `packages:delete` scopes. In addition: + * - If `package_type` is not `container`, your token must also include the `repo` scope. + * - If `package_type` is `container`, you must also have admin permissions to the container you want to delete. + */ + "packages/delete-package-for-org": { + parameters: { + path: { + /** The type of supported package. Packages in GitHub's Gradle registry have the type `maven`. Docker images pushed to GitHub's Container registry (`ghcr.io`) have the type `container`. You can use the type `docker` to find images that were pushed to GitHub's Docker registry (`docker.pkg.github.com`), even if these have now been migrated to the Container registry. */ + package_type: components["parameters"]["package-type"]; + /** The name of the package. */ + package_name: components["parameters"]["package-name"]; + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + }; + }; + responses: { + /** Response */ + 204: never; + 401: components["responses"]["requires_authentication"]; + 403: components["responses"]["forbidden"]; + 404: components["responses"]["not_found"]; + }; + }; + /** + * Restores an entire package in an organization. + * + * You can restore a deleted package under the following conditions: + * - The package was deleted within the last 30 days. + * - The same package namespace and version is still available and not reused for a new package. If the same package namespace is not available, you will not be able to restore your package. In this scenario, to restore the deleted package, you must delete the new package that uses the deleted package's namespace first. + * + * To use this endpoint, you must have admin permissions in the organization and authenticate using an access token with the `packages:read` and `packages:write` scopes. In addition: + * - If `package_type` is not `container`, your token must also include the `repo` scope. + * - If `package_type` is `container`, you must also have admin permissions to the container that you want to restore. + */ + "packages/restore-package-for-org": { + parameters: { + path: { + /** The type of supported package. Packages in GitHub's Gradle registry have the type `maven`. Docker images pushed to GitHub's Container registry (`ghcr.io`) have the type `container`. You can use the type `docker` to find images that were pushed to GitHub's Docker registry (`docker.pkg.github.com`), even if these have now been migrated to the Container registry. */ + package_type: components["parameters"]["package-type"]; + /** The name of the package. */ + package_name: components["parameters"]["package-name"]; + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + }; + query: { + /** package token */ + token?: string; + }; + }; + responses: { + /** Response */ + 204: never; + 401: components["responses"]["requires_authentication"]; + 403: components["responses"]["forbidden"]; + 404: components["responses"]["not_found"]; + }; + }; + /** + * Returns all package versions for a package owned by an organization. + * + * To use this endpoint, you must authenticate using an access token with the `packages:read` scope. + * If `package_type` is not `container`, your token must also include the `repo` scope. + */ + "packages/get-all-package-versions-for-package-owned-by-org": { + parameters: { + path: { + /** The type of supported package. Packages in GitHub's Gradle registry have the type `maven`. Docker images pushed to GitHub's Container registry (`ghcr.io`) have the type `container`. You can use the type `docker` to find images that were pushed to GitHub's Docker registry (`docker.pkg.github.com`), even if these have now been migrated to the Container registry. */ + package_type: components["parameters"]["package-type"]; + /** The name of the package. */ + package_name: components["parameters"]["package-name"]; + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + }; + query: { + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** The state of the package, either active or deleted. */ + state?: "active" | "deleted"; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["package-version"][]; + }; + }; + 401: components["responses"]["requires_authentication"]; + 403: components["responses"]["forbidden"]; + 404: components["responses"]["not_found"]; + }; + }; + /** + * Gets a specific package version in an organization. + * + * You must authenticate using an access token with the `packages:read` scope. + * If `package_type` is not `container`, your token must also include the `repo` scope. + */ + "packages/get-package-version-for-organization": { + parameters: { + path: { + /** The type of supported package. Packages in GitHub's Gradle registry have the type `maven`. Docker images pushed to GitHub's Container registry (`ghcr.io`) have the type `container`. You can use the type `docker` to find images that were pushed to GitHub's Docker registry (`docker.pkg.github.com`), even if these have now been migrated to the Container registry. */ + package_type: components["parameters"]["package-type"]; + /** The name of the package. */ + package_name: components["parameters"]["package-name"]; + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + /** Unique identifier of the package version. */ + package_version_id: components["parameters"]["package-version-id"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["package-version"]; + }; + }; + }; + }; + /** + * Deletes a specific package version in an organization. If the package is public and the package version has more than 5,000 downloads, you cannot delete the package version. In this scenario, contact GitHub support for further assistance. + * + * To use this endpoint, you must have admin permissions in the organization and authenticate using an access token with the `packages:read` and `packages:delete` scopes. In addition: + * - If `package_type` is not `container`, your token must also include the `repo` scope. + * - If `package_type` is `container`, you must also have admin permissions to the container you want to delete. + */ + "packages/delete-package-version-for-org": { + parameters: { + path: { + /** The type of supported package. Packages in GitHub's Gradle registry have the type `maven`. Docker images pushed to GitHub's Container registry (`ghcr.io`) have the type `container`. You can use the type `docker` to find images that were pushed to GitHub's Docker registry (`docker.pkg.github.com`), even if these have now been migrated to the Container registry. */ + package_type: components["parameters"]["package-type"]; + /** The name of the package. */ + package_name: components["parameters"]["package-name"]; + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + /** Unique identifier of the package version. */ + package_version_id: components["parameters"]["package-version-id"]; + }; + }; + responses: { + /** Response */ + 204: never; + 401: components["responses"]["requires_authentication"]; + 403: components["responses"]["forbidden"]; + 404: components["responses"]["not_found"]; + }; + }; + /** + * Restores a specific package version in an organization. + * + * You can restore a deleted package under the following conditions: + * - The package was deleted within the last 30 days. + * - The same package namespace and version is still available and not reused for a new package. If the same package namespace is not available, you will not be able to restore your package. In this scenario, to restore the deleted package, you must delete the new package that uses the deleted package's namespace first. + * + * To use this endpoint, you must have admin permissions in the organization and authenticate using an access token with the `packages:read` and `packages:write` scopes. In addition: + * - If `package_type` is not `container`, your token must also include the `repo` scope. + * - If `package_type` is `container`, you must also have admin permissions to the container that you want to restore. + */ + "packages/restore-package-version-for-org": { + parameters: { + path: { + /** The type of supported package. Packages in GitHub's Gradle registry have the type `maven`. Docker images pushed to GitHub's Container registry (`ghcr.io`) have the type `container`. You can use the type `docker` to find images that were pushed to GitHub's Docker registry (`docker.pkg.github.com`), even if these have now been migrated to the Container registry. */ + package_type: components["parameters"]["package-type"]; + /** The name of the package. */ + package_name: components["parameters"]["package-name"]; + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + /** Unique identifier of the package version. */ + package_version_id: components["parameters"]["package-version-id"]; + }; + }; + responses: { + /** Response */ + 204: never; + 401: components["responses"]["requires_authentication"]; + 403: components["responses"]["forbidden"]; + 404: components["responses"]["not_found"]; + }; + }; + /** Lists the projects in an organization. Returns a `404 Not Found` status if projects are disabled in the organization. If you do not have sufficient privileges to perform this action, a `401 Unauthorized` or `410 Gone` status is returned. */ + "projects/list-for-org": { + parameters: { + path: { + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + }; + query: { + /** Indicates the state of the projects to return. Can be either `open`, `closed`, or `all`. */ + state?: "open" | "closed" | "all"; + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + }; + }; + responses: { + /** Response */ + 200: { + headers: {}; + content: { + "application/json": components["schemas"]["project"][]; + }; + }; + 422: components["responses"]["validation_failed_simple"]; + }; + }; + /** Creates an organization project board. Returns a `410 Gone` status if projects are disabled in the organization or if the organization does not have existing classic projects. If you do not have sufficient privileges to perform this action, a `401 Unauthorized` or `410 Gone` status is returned. */ + "projects/create-for-org": { + parameters: { + path: { + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + }; + }; + responses: { + /** Response */ + 201: { + content: { + "application/json": components["schemas"]["project"]; + }; + }; + 401: components["responses"]["requires_authentication"]; + 403: components["responses"]["forbidden"]; + 404: components["responses"]["not_found"]; + 410: components["responses"]["gone"]; + 422: components["responses"]["validation_failed_simple"]; + }; + requestBody: { + content: { + "application/json": { + /** @description The name of the project. */ + name: string; + /** @description The description of the project. */ + body?: string; + }; + }; + }; + }; + /** Members of an organization can choose to have their membership publicized or not. */ + "orgs/list-public-members": { + parameters: { + path: { + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + }; + query: { + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + }; + }; + responses: { + /** Response */ + 200: { + headers: {}; + content: { + "application/json": components["schemas"]["simple-user"][]; + }; + }; + }; + }; + "orgs/check-public-membership-for-user": { + parameters: { + path: { + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + /** The handle for the GitHub user account. */ + username: components["parameters"]["username"]; + }; + }; + responses: { + /** Response if user is a public member */ + 204: never; + /** Not Found if user is not a public member */ + 404: unknown; + }; + }; + /** + * The user can publicize their own membership. (A user cannot publicize the membership for another user.) + * + * Note that you'll need to set `Content-Length` to zero when calling out to this endpoint. For more information, see "[HTTP verbs](https://docs.github.com/rest/overview/resources-in-the-rest-api#http-verbs)." + */ + "orgs/set-public-membership-for-authenticated-user": { + parameters: { + path: { + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + /** The handle for the GitHub user account. */ + username: components["parameters"]["username"]; + }; + }; + responses: { + /** Response */ + 204: never; + 403: components["responses"]["forbidden"]; + }; + }; + "orgs/remove-public-membership-for-authenticated-user": { + parameters: { + path: { + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + /** The handle for the GitHub user account. */ + username: components["parameters"]["username"]; + }; + }; + responses: { + /** Response */ + 204: never; + }; + }; + /** Lists repositories for the specified organization. */ + "repos/list-for-org": { + parameters: { + path: { + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + }; + query: { + /** Specifies the types of repositories you want returned. If your organization is associated with an enterprise account using GitHub Enterprise Cloud or GitHub Enterprise Server 2.20+, `type` can also be `internal`. However, the `internal` value is not yet supported when a GitHub App calls this API with an installation access token. */ + type?: + | "all" + | "public" + | "private" + | "forks" + | "sources" + | "member" + | "internal"; + /** The property to sort the results by. */ + sort?: "created" | "updated" | "pushed" | "full_name"; + /** The order to sort by. Default: `asc` when using `full_name`, otherwise `desc`. */ + direction?: "asc" | "desc"; + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + }; + }; + responses: { + /** Response */ + 200: { + headers: {}; + content: { + "application/json": components["schemas"]["minimal-repository"][]; + }; + }; + }; + }; + /** + * Creates a new repository in the specified organization. The authenticated user must be a member of the organization. + * + * **OAuth scope requirements** + * + * When using [OAuth](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/), authorizations must include: + * + * * `public_repo` scope or `repo` scope to create a public repository. Note: For GitHub AE, use `repo` scope to create an internal repository. + * * `repo` scope to create a private repository + */ + "repos/create-in-org": { + parameters: { + path: { + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + }; + }; + responses: { + /** Response */ + 201: { + headers: { + Location?: string; + }; + content: { + "application/json": components["schemas"]["repository"]; + }; + }; + 403: components["responses"]["forbidden"]; + 422: components["responses"]["validation_failed"]; + }; + requestBody: { + content: { + "application/json": { + /** @description The name of the repository. */ + name: string; + /** @description A short description of the repository. */ + description?: string; + /** @description A URL with more information about the repository. */ + homepage?: string; + /** + * @description Whether the repository is private. + * @default false + */ + private?: boolean; + /** + * @description Can be `public` or `private`. If your organization is associated with an enterprise account using GitHub Enterprise Cloud or GitHub Enterprise Server 2.20+, `visibility` can also be `internal`. Note: For GitHub Enterprise Server and GitHub AE, this endpoint will only list repositories available to all users on the enterprise. For more information, see "[Creating an internal repository](https://docs.github.com/en/github/creating-cloning-and-archiving-repositories/about-repository-visibility#about-internal-repositories)" in the GitHub Help documentation. + * @enum {string} + */ + visibility?: "public" | "private" | "internal"; + /** + * @description Either `true` to enable issues for this repository or `false` to disable them. + * @default true + */ + has_issues?: boolean; + /** + * @description Either `true` to enable projects for this repository or `false` to disable them. **Note:** If you're creating a repository in an organization that has disabled repository projects, the default is `false`, and if you pass `true`, the API returns an error. + * @default true + */ + has_projects?: boolean; + /** + * @description Either `true` to enable the wiki for this repository or `false` to disable it. + * @default true + */ + has_wiki?: boolean; + /** + * @description Either `true` to make this repo available as a template repository or `false` to prevent it. + * @default false + */ + is_template?: boolean; + /** @description The id of the team that will be granted access to this repository. This is only valid when creating a repository in an organization. */ + team_id?: number; + /** + * @description Pass `true` to create an initial commit with empty README. + * @default false + */ + auto_init?: boolean; + /** @description Desired language or platform [.gitignore template](https://github.com/github/gitignore) to apply. Use the name of the template without the extension. For example, "Haskell". */ + gitignore_template?: string; + /** @description Choose an [open source license template](https://choosealicense.com/) that best suits your needs, and then use the [license keyword](https://docs.github.com/articles/licensing-a-repository/#searching-github-by-license-type) as the `license_template` string. For example, "mit" or "mpl-2.0". */ + license_template?: string; + /** + * @description Either `true` to allow squash-merging pull requests, or `false` to prevent squash-merging. + * @default true + */ + allow_squash_merge?: boolean; + /** + * @description Either `true` to allow merging pull requests with a merge commit, or `false` to prevent merging pull requests with merge commits. + * @default true + */ + allow_merge_commit?: boolean; + /** + * @description Either `true` to allow rebase-merging pull requests, or `false` to prevent rebase-merging. + * @default true + */ + allow_rebase_merge?: boolean; + /** + * @description Either `true` to allow auto-merge on pull requests, or `false` to disallow auto-merge. + * @default false + */ + allow_auto_merge?: boolean; + /** + * @description Either `true` to allow automatically deleting head branches when pull requests are merged, or `false` to prevent automatic deletion. + * @default false + */ + delete_branch_on_merge?: boolean; + /** + * @description Either `true` to allow squash-merge commits to use pull request title, or `false` to use commit message. + * @default false + */ + use_squash_pr_title_as_default?: boolean; + }; + }; + }; + }; + /** + * Lists secret scanning alerts for eligible repositories in an organization, from newest to oldest. + * To use this endpoint, you must be an administrator or security manager for the organization, and you must use an access token with the `repo` scope or `security_events` scope. + * For public repositories, you may instead use the `public_repo` scope. + * + * GitHub Apps must have the `secret_scanning_alerts` read permission to use this endpoint. + */ + "secret-scanning/list-alerts-for-org": { + parameters: { + path: { + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + }; + query: { + /** Set to `open` or `resolved` to only list secret scanning alerts in a specific state. */ + state?: components["parameters"]["secret-scanning-alert-state"]; + /** + * A comma-separated list of secret types to return. By default all secret types are returned. + * See "[Secret scanning patterns](https://docs.github.com/code-security/secret-scanning/secret-scanning-patterns#supported-secrets-for-advanced-security)" + * for a complete list of secret types. + */ + secret_type?: components["parameters"]["secret-scanning-alert-secret-type"]; + /** A comma-separated list of resolutions. Only secret scanning alerts with one of these resolutions are listed. Valid resolutions are `false_positive`, `wont_fix`, `revoked`, `pattern_edited`, `pattern_deleted` or `used_in_tests`. */ + resolution?: components["parameters"]["secret-scanning-alert-resolution"]; + /** The property to sort the results by. `created` means when the alert was created. `updated` means when the alert was updated or resolved. */ + sort?: components["parameters"]["secret-scanning-alert-sort"]; + /** The direction to sort the results by. */ + direction?: components["parameters"]["direction"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** A cursor, as given in the [Link header](https://docs.github.com/rest/overview/resources-in-the-rest-api#link-header). If specified, the query only searches for events before this cursor. To receive an initial cursor on your first request, include an empty "before" query string. */ + before?: components["parameters"]["secret-scanning-pagination-before-org-repo"]; + /** A cursor, as given in the [Link header](https://docs.github.com/rest/overview/resources-in-the-rest-api#link-header). If specified, the query only searches for events after this cursor. To receive an initial cursor on your first request, include an empty "after" query string. */ + after?: components["parameters"]["secret-scanning-pagination-after-org-repo"]; + }; + }; + responses: { + /** Response */ + 200: { + headers: {}; + content: { + "application/json": components["schemas"]["organization-secret-scanning-alert"][]; + }; + }; + 404: components["responses"]["not_found"]; + 503: components["responses"]["service_unavailable"]; + }; + }; + /** + * Gets the summary of the free and paid GitHub Actions minutes used. + * + * Paid minutes only apply to workflows in private repositories that use GitHub-hosted runners. Minutes used is listed for each GitHub-hosted runner operating system. Any job re-runs are also included in the usage. The usage returned includes any minute multipliers for macOS and Windows runners, and is rounded up to the nearest whole minute. For more information, see "[Managing billing for GitHub Actions](https://docs.github.com/github/setting-up-and-managing-billing-and-payments-on-github/managing-billing-for-github-actions)". + * + * Access tokens must have the `repo` or `admin:org` scope. + */ + "billing/get-github-actions-billing-org": { + parameters: { + path: { + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["actions-billing-usage"]; + }; + }; + }; + }; + /** + * Gets the GitHub Advanced Security active committers for an organization per repository. + * + * Each distinct user login across all repositories is counted as a single Advanced Security seat, so the `total_advanced_security_committers` is not the sum of advanced_security_committers for each repository. + * + * If this organization defers to an enterprise for billing, the `total_advanced_security_committers` returned from the organization API may include some users that are in more than one organization, so they will only consume a single Advanced Security seat at the enterprise level. + * + * The total number of repositories with committer information is tracked by the `total_count` field. + */ + "billing/get-github-advanced-security-billing-org": { + parameters: { + path: { + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + }; + query: { + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + }; + }; + responses: { + /** Success */ + 200: { + content: { + "application/json": components["schemas"]["advanced-security-active-committers"]; + }; + }; + 403: components["responses"]["code_scanning_forbidden_read"]; + }; + }; + /** + * Gets the free and paid storage used for GitHub Packages in gigabytes. + * + * Paid minutes only apply to packages stored for private repositories. For more information, see "[Managing billing for GitHub Packages](https://docs.github.com/github/setting-up-and-managing-billing-and-payments-on-github/managing-billing-for-github-packages)." + * + * Access tokens must have the `repo` or `admin:org` scope. + */ + "billing/get-github-packages-billing-org": { + parameters: { + path: { + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["packages-billing-usage"]; + }; + }; + }; + }; + /** + * Gets the estimated paid and estimated total storage used for GitHub Actions and GitHub Packages. + * + * Paid minutes only apply to packages stored for private repositories. For more information, see "[Managing billing for GitHub Packages](https://docs.github.com/github/setting-up-and-managing-billing-and-payments-on-github/managing-billing-for-github-packages)." + * + * Access tokens must have the `repo` or `admin:org` scope. + */ + "billing/get-shared-storage-billing-org": { + parameters: { + path: { + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["combined-billing-usage"]; + }; + }; + }; + }; + /** + * Team synchronization is available for organizations using GitHub Enterprise Cloud. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. + * + * List IdP groups available in an organization. You can limit your page results using the `per_page` parameter. GitHub generates a url-encoded `page` token using a cursor value for where the next page begins. For more information on cursor pagination, see "[Offset and Cursor Pagination explained](https://dev.to/jackmarchant/offset-and-cursor-pagination-explained-b89)." + */ + "teams/list-idp-groups-for-org": { + parameters: { + path: { + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + }; + query: { + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page token */ + page?: string; + }; + }; + responses: { + /** Response */ + 200: { + headers: { + Link?: string; + }; + content: { + "application/json": components["schemas"]["group-mapping"]; + }; + }; + }; + }; + /** Lists all teams in an organization that are visible to the authenticated user. */ + "teams/list": { + parameters: { + path: { + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + }; + query: { + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + }; + }; + responses: { + /** Response */ + 200: { + headers: {}; + content: { + "application/json": components["schemas"]["team"][]; + }; + }; + 403: components["responses"]["forbidden"]; + }; + }; + /** + * To create a team, the authenticated user must be a member or owner of `{org}`. By default, organization members can create teams. Organization owners can limit team creation to organization owners. For more information, see "[Setting team creation permissions](https://docs.github.com/en/articles/setting-team-creation-permissions-in-your-organization)." + * + * When you create a new team, you automatically become a team maintainer without explicitly adding yourself to the optional array of `maintainers`. For more information, see "[About teams](https://docs.github.com/en/github/setting-up-and-managing-organizations-and-teams/about-teams)". + */ + "teams/create": { + parameters: { + path: { + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + }; + }; + responses: { + /** Response */ + 201: { + content: { + "application/json": components["schemas"]["team-full"]; + }; + }; + 403: components["responses"]["forbidden"]; + 422: components["responses"]["validation_failed"]; + }; + requestBody: { + content: { + "application/json": { + /** @description The name of the team. */ + name: string; + /** @description The description of the team. */ + description?: string; + /** @description List GitHub IDs for organization members who will become team maintainers. */ + maintainers?: string[]; + /** @description The full name (e.g., "organization-name/repository-name") of repositories to add the team to. */ + repo_names?: string[]; + /** + * @description The level of privacy this team should have. The options are: + * **For a non-nested team:** + * \* `secret` - only visible to organization owners and members of this team. + * \* `closed` - visible to all members of this organization. + * Default: `secret` + * **For a parent or child team:** + * \* `closed` - visible to all members of this organization. + * Default for child team: `closed` + * @enum {string} + */ + privacy?: "secret" | "closed"; + /** + * @description **Deprecated**. The permission that new repositories will be added to the team with when none is specified. + * @default pull + * @enum {string} + */ + permission?: "pull" | "push"; + /** @description The ID of a team to set as the parent team. */ + parent_team_id?: number; + }; + }; + }; + }; + /** + * Gets a team using the team's `slug`. GitHub generates the `slug` from the team `name`. + * + * **Note:** You can also specify a team by `org_id` and `team_id` using the route `GET /organizations/{org_id}/team/{team_id}`. + */ + "teams/get-by-name": { + parameters: { + path: { + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + /** The slug of the team name. */ + team_slug: components["parameters"]["team-slug"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["team-full"]; + }; + }; + 404: components["responses"]["not_found"]; + }; + }; + /** + * To delete a team, the authenticated user must be an organization owner or team maintainer. + * + * If you are an organization owner, deleting a parent team will delete all of its child teams as well. + * + * **Note:** You can also specify a team by `org_id` and `team_id` using the route `DELETE /organizations/{org_id}/team/{team_id}`. + */ + "teams/delete-in-org": { + parameters: { + path: { + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + /** The slug of the team name. */ + team_slug: components["parameters"]["team-slug"]; + }; + }; + responses: { + /** Response */ + 204: never; + }; + }; + /** + * To edit a team, the authenticated user must either be an organization owner or a team maintainer. + * + * **Note:** You can also specify a team by `org_id` and `team_id` using the route `PATCH /organizations/{org_id}/team/{team_id}`. + */ + "teams/update-in-org": { + parameters: { + path: { + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + /** The slug of the team name. */ + team_slug: components["parameters"]["team-slug"]; + }; + }; + responses: { + /** Response */ + 201: { + content: { + "application/json": components["schemas"]["team-full"]; + }; + }; + }; + requestBody: { + content: { + "application/json": { + /** @description The name of the team. */ + name?: string; + /** @description The description of the team. */ + description?: string; + /** + * @description The level of privacy this team should have. Editing teams without specifying this parameter leaves `privacy` intact. When a team is nested, the `privacy` for parent teams cannot be `secret`. The options are: + * **For a non-nested team:** + * \* `secret` - only visible to organization owners and members of this team. + * \* `closed` - visible to all members of this organization. + * **For a parent or child team:** + * \* `closed` - visible to all members of this organization. + * @enum {string} + */ + privacy?: "secret" | "closed"; + /** + * @description **Deprecated**. The permission that new repositories will be added to the team with when none is specified. + * @default pull + * @enum {string} + */ + permission?: "pull" | "push" | "admin"; + /** @description The ID of a team to set as the parent team. */ + parent_team_id?: number | null; + }; + }; + }; + }; + /** + * List all discussions on a team's page. OAuth access tokens require the `read:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). + * + * **Note:** You can also specify a team by `org_id` and `team_id` using the route `GET /organizations/{org_id}/team/{team_id}/discussions`. + */ + "teams/list-discussions-in-org": { + parameters: { + path: { + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + /** The slug of the team name. */ + team_slug: components["parameters"]["team-slug"]; + }; + query: { + /** The direction to sort the results by. */ + direction?: components["parameters"]["direction"]; + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + /** Pinned discussions only filter */ + pinned?: string; + }; + }; + responses: { + /** Response */ + 200: { + headers: {}; + content: { + "application/json": components["schemas"]["team-discussion"][]; + }; + }; + }; + }; + /** + * Creates a new discussion post on a team's page. OAuth access tokens require the `write:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). + * + * This endpoint triggers [notifications](https://docs.github.com/en/github/managing-subscriptions-and-notifications-on-github/about-notifications). Creating content too quickly using this endpoint may result in secondary rate limiting. See "[Secondary rate limits](https://docs.github.com/rest/overview/resources-in-the-rest-api#secondary-rate-limits)" and "[Dealing with secondary rate limits](https://docs.github.com/rest/guides/best-practices-for-integrators#dealing-with-secondary-rate-limits)" for details. + * + * **Note:** You can also specify a team by `org_id` and `team_id` using the route `POST /organizations/{org_id}/team/{team_id}/discussions`. + */ + "teams/create-discussion-in-org": { + parameters: { + path: { + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + /** The slug of the team name. */ + team_slug: components["parameters"]["team-slug"]; + }; + }; + responses: { + /** Response */ + 201: { + content: { + "application/json": components["schemas"]["team-discussion"]; + }; + }; + }; + requestBody: { + content: { + "application/json": { + /** @description The discussion post's title. */ + title: string; + /** @description The discussion post's body text. */ + body: string; + /** + * @description Private posts are only visible to team members, organization owners, and team maintainers. Public posts are visible to all members of the organization. Set to `true` to create a private post. + * @default false + */ + private?: boolean; + }; + }; + }; + }; + /** + * Get a specific discussion on a team's page. OAuth access tokens require the `read:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). + * + * **Note:** You can also specify a team by `org_id` and `team_id` using the route `GET /organizations/{org_id}/team/{team_id}/discussions/{discussion_number}`. + */ + "teams/get-discussion-in-org": { + parameters: { + path: { + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + /** The slug of the team name. */ + team_slug: components["parameters"]["team-slug"]; + /** The number that identifies the discussion. */ + discussion_number: components["parameters"]["discussion-number"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["team-discussion"]; + }; + }; + }; + }; + /** + * Delete a discussion from a team's page. OAuth access tokens require the `write:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). + * + * **Note:** You can also specify a team by `org_id` and `team_id` using the route `DELETE /organizations/{org_id}/team/{team_id}/discussions/{discussion_number}`. + */ + "teams/delete-discussion-in-org": { + parameters: { + path: { + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + /** The slug of the team name. */ + team_slug: components["parameters"]["team-slug"]; + /** The number that identifies the discussion. */ + discussion_number: components["parameters"]["discussion-number"]; + }; + }; + responses: { + /** Response */ + 204: never; + }; + }; + /** + * Edits the title and body text of a discussion post. Only the parameters you provide are updated. OAuth access tokens require the `write:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). + * + * **Note:** You can also specify a team by `org_id` and `team_id` using the route `PATCH /organizations/{org_id}/team/{team_id}/discussions/{discussion_number}`. + */ + "teams/update-discussion-in-org": { + parameters: { + path: { + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + /** The slug of the team name. */ + team_slug: components["parameters"]["team-slug"]; + /** The number that identifies the discussion. */ + discussion_number: components["parameters"]["discussion-number"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["team-discussion"]; + }; + }; + }; + requestBody: { + content: { + "application/json": { + /** @description The discussion post's title. */ + title?: string; + /** @description The discussion post's body text. */ + body?: string; + }; + }; + }; + }; + /** + * List all comments on a team discussion. OAuth access tokens require the `read:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). + * + * **Note:** You can also specify a team by `org_id` and `team_id` using the route `GET /organizations/{org_id}/team/{team_id}/discussions/{discussion_number}/comments`. + */ + "teams/list-discussion-comments-in-org": { + parameters: { + path: { + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + /** The slug of the team name. */ + team_slug: components["parameters"]["team-slug"]; + /** The number that identifies the discussion. */ + discussion_number: components["parameters"]["discussion-number"]; + }; + query: { + /** The direction to sort the results by. */ + direction?: components["parameters"]["direction"]; + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + }; + }; + responses: { + /** Response */ + 200: { + headers: {}; + content: { + "application/json": components["schemas"]["team-discussion-comment"][]; + }; + }; + }; + }; + /** + * Creates a new comment on a team discussion. OAuth access tokens require the `write:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). + * + * This endpoint triggers [notifications](https://docs.github.com/en/github/managing-subscriptions-and-notifications-on-github/about-notifications). Creating content too quickly using this endpoint may result in secondary rate limiting. See "[Secondary rate limits](https://docs.github.com/rest/overview/resources-in-the-rest-api#secondary-rate-limits)" and "[Dealing with secondary rate limits](https://docs.github.com/rest/guides/best-practices-for-integrators#dealing-with-secondary-rate-limits)" for details. + * + * **Note:** You can also specify a team by `org_id` and `team_id` using the route `POST /organizations/{org_id}/team/{team_id}/discussions/{discussion_number}/comments`. + */ + "teams/create-discussion-comment-in-org": { + parameters: { + path: { + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + /** The slug of the team name. */ + team_slug: components["parameters"]["team-slug"]; + /** The number that identifies the discussion. */ + discussion_number: components["parameters"]["discussion-number"]; + }; + }; + responses: { + /** Response */ + 201: { + content: { + "application/json": components["schemas"]["team-discussion-comment"]; + }; + }; + }; + requestBody: { + content: { + "application/json": { + /** @description The discussion comment's body text. */ + body: string; + }; + }; + }; + }; + /** + * Get a specific comment on a team discussion. OAuth access tokens require the `read:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). + * + * **Note:** You can also specify a team by `org_id` and `team_id` using the route `GET /organizations/{org_id}/team/{team_id}/discussions/{discussion_number}/comments/{comment_number}`. + */ + "teams/get-discussion-comment-in-org": { + parameters: { + path: { + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + /** The slug of the team name. */ + team_slug: components["parameters"]["team-slug"]; + /** The number that identifies the discussion. */ + discussion_number: components["parameters"]["discussion-number"]; + /** The number that identifies the comment. */ + comment_number: components["parameters"]["comment-number"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["team-discussion-comment"]; + }; + }; + }; + }; + /** + * Deletes a comment on a team discussion. OAuth access tokens require the `write:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). + * + * **Note:** You can also specify a team by `org_id` and `team_id` using the route `DELETE /organizations/{org_id}/team/{team_id}/discussions/{discussion_number}/comments/{comment_number}`. + */ + "teams/delete-discussion-comment-in-org": { + parameters: { + path: { + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + /** The slug of the team name. */ + team_slug: components["parameters"]["team-slug"]; + /** The number that identifies the discussion. */ + discussion_number: components["parameters"]["discussion-number"]; + /** The number that identifies the comment. */ + comment_number: components["parameters"]["comment-number"]; + }; + }; + responses: { + /** Response */ + 204: never; + }; + }; + /** + * Edits the body text of a discussion comment. OAuth access tokens require the `write:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). + * + * **Note:** You can also specify a team by `org_id` and `team_id` using the route `PATCH /organizations/{org_id}/team/{team_id}/discussions/{discussion_number}/comments/{comment_number}`. + */ + "teams/update-discussion-comment-in-org": { + parameters: { + path: { + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + /** The slug of the team name. */ + team_slug: components["parameters"]["team-slug"]; + /** The number that identifies the discussion. */ + discussion_number: components["parameters"]["discussion-number"]; + /** The number that identifies the comment. */ + comment_number: components["parameters"]["comment-number"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["team-discussion-comment"]; + }; + }; + }; + requestBody: { + content: { + "application/json": { + /** @description The discussion comment's body text. */ + body: string; + }; + }; + }; + }; + /** + * List the reactions to a [team discussion comment](https://docs.github.com/rest/reference/teams#discussion-comments/). OAuth access tokens require the `read:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). + * + * **Note:** You can also specify a team by `org_id` and `team_id` using the route `GET /organizations/:org_id/team/:team_id/discussions/:discussion_number/comments/:comment_number/reactions`. + */ + "reactions/list-for-team-discussion-comment-in-org": { + parameters: { + path: { + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + /** The slug of the team name. */ + team_slug: components["parameters"]["team-slug"]; + /** The number that identifies the discussion. */ + discussion_number: components["parameters"]["discussion-number"]; + /** The number that identifies the comment. */ + comment_number: components["parameters"]["comment-number"]; + }; + query: { + /** Returns a single [reaction type](https://docs.github.com/rest/reference/reactions#reaction-types). Omit this parameter to list all reactions to a team discussion comment. */ + content?: + | "+1" + | "-1" + | "laugh" + | "confused" + | "heart" + | "hooray" + | "rocket" + | "eyes"; + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + }; + }; + responses: { + /** Response */ + 200: { + headers: {}; + content: { + "application/json": components["schemas"]["reaction"][]; + }; + }; + }; + }; + /** + * Create a reaction to a [team discussion comment](https://docs.github.com/rest/reference/teams#discussion-comments). OAuth access tokens require the `write:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). A response with an HTTP `200` status means that you already added the reaction type to this team discussion comment. + * + * **Note:** You can also specify a team by `org_id` and `team_id` using the route `POST /organizations/:org_id/team/:team_id/discussions/:discussion_number/comments/:comment_number/reactions`. + */ + "reactions/create-for-team-discussion-comment-in-org": { + parameters: { + path: { + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + /** The slug of the team name. */ + team_slug: components["parameters"]["team-slug"]; + /** The number that identifies the discussion. */ + discussion_number: components["parameters"]["discussion-number"]; + /** The number that identifies the comment. */ + comment_number: components["parameters"]["comment-number"]; + }; + }; + responses: { + /** Response when the reaction type has already been added to this team discussion comment */ + 200: { + content: { + "application/json": components["schemas"]["reaction"]; + }; + }; + /** Response */ + 201: { + content: { + "application/json": components["schemas"]["reaction"]; + }; + }; + }; + requestBody: { + content: { + "application/json": { + /** + * @description The [reaction type](https://docs.github.com/rest/reference/reactions#reaction-types) to add to the team discussion comment. + * @enum {string} + */ + content: + | "+1" + | "-1" + | "laugh" + | "confused" + | "heart" + | "hooray" + | "rocket" + | "eyes"; + }; + }; + }; + }; + /** + * **Note:** You can also specify a team or organization with `team_id` and `org_id` using the route `DELETE /organizations/:org_id/team/:team_id/discussions/:discussion_number/comments/:comment_number/reactions/:reaction_id`. + * + * Delete a reaction to a [team discussion comment](https://docs.github.com/rest/reference/teams#discussion-comments). OAuth access tokens require the `write:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). + */ + "reactions/delete-for-team-discussion-comment": { + parameters: { + path: { + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + /** The slug of the team name. */ + team_slug: components["parameters"]["team-slug"]; + /** The number that identifies the discussion. */ + discussion_number: components["parameters"]["discussion-number"]; + /** The number that identifies the comment. */ + comment_number: components["parameters"]["comment-number"]; + /** The unique identifier of the reaction. */ + reaction_id: components["parameters"]["reaction-id"]; + }; + }; + responses: { + /** Response */ + 204: never; + }; + }; + /** + * List the reactions to a [team discussion](https://docs.github.com/rest/reference/teams#discussions). OAuth access tokens require the `read:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). + * + * **Note:** You can also specify a team by `org_id` and `team_id` using the route `GET /organizations/:org_id/team/:team_id/discussions/:discussion_number/reactions`. + */ + "reactions/list-for-team-discussion-in-org": { + parameters: { + path: { + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + /** The slug of the team name. */ + team_slug: components["parameters"]["team-slug"]; + /** The number that identifies the discussion. */ + discussion_number: components["parameters"]["discussion-number"]; + }; + query: { + /** Returns a single [reaction type](https://docs.github.com/rest/reference/reactions#reaction-types). Omit this parameter to list all reactions to a team discussion. */ + content?: + | "+1" + | "-1" + | "laugh" + | "confused" + | "heart" + | "hooray" + | "rocket" + | "eyes"; + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + }; + }; + responses: { + /** Response */ + 200: { + headers: {}; + content: { + "application/json": components["schemas"]["reaction"][]; + }; + }; + }; + }; + /** + * Create a reaction to a [team discussion](https://docs.github.com/rest/reference/teams#discussions). OAuth access tokens require the `write:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). A response with an HTTP `200` status means that you already added the reaction type to this team discussion. + * + * **Note:** You can also specify a team by `org_id` and `team_id` using the route `POST /organizations/:org_id/team/:team_id/discussions/:discussion_number/reactions`. + */ + "reactions/create-for-team-discussion-in-org": { + parameters: { + path: { + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + /** The slug of the team name. */ + team_slug: components["parameters"]["team-slug"]; + /** The number that identifies the discussion. */ + discussion_number: components["parameters"]["discussion-number"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["reaction"]; + }; + }; + /** Response */ + 201: { + content: { + "application/json": components["schemas"]["reaction"]; + }; + }; + }; + requestBody: { + content: { + "application/json": { + /** + * @description The [reaction type](https://docs.github.com/rest/reference/reactions#reaction-types) to add to the team discussion. + * @enum {string} + */ + content: + | "+1" + | "-1" + | "laugh" + | "confused" + | "heart" + | "hooray" + | "rocket" + | "eyes"; + }; + }; + }; + }; + /** + * **Note:** You can also specify a team or organization with `team_id` and `org_id` using the route `DELETE /organizations/:org_id/team/:team_id/discussions/:discussion_number/reactions/:reaction_id`. + * + * Delete a reaction to a [team discussion](https://docs.github.com/rest/reference/teams#discussions). OAuth access tokens require the `write:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). + */ + "reactions/delete-for-team-discussion": { + parameters: { + path: { + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + /** The slug of the team name. */ + team_slug: components["parameters"]["team-slug"]; + /** The number that identifies the discussion. */ + discussion_number: components["parameters"]["discussion-number"]; + /** The unique identifier of the reaction. */ + reaction_id: components["parameters"]["reaction-id"]; + }; + }; + responses: { + /** Response */ + 204: never; + }; + }; + /** + * Lists a connection between a team and an external group. + * + * You can manage team membership with your identity provider using Enterprise Managed Users for GitHub Enterprise Cloud. For more information, see "[GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products)" in the GitHub Help documentation. + */ + "teams/list-linked-external-idp-groups-to-team-for-org": { + parameters: { + path: { + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + /** The slug of the team name. */ + team_slug: components["parameters"]["team-slug"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["external-groups"]; + }; + }; + }; + }; + /** + * Deletes a connection between a team and an external group. + * + * You can manage team membership with your IdP using Enterprise Managed Users for GitHub Enterprise Cloud. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. + */ + "teams/unlink-external-idp-group-from-team-for-org": { + parameters: { + path: { + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + /** The slug of the team name. */ + team_slug: components["parameters"]["team-slug"]; + }; + }; + responses: { + /** Response */ + 204: never; + }; + }; + /** + * Creates a connection between a team and an external group. Only one external group can be linked to a team. + * + * You can manage team membership with your identity provider using Enterprise Managed Users for GitHub Enterprise Cloud. For more information, see "[GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products)" in the GitHub Help documentation. + */ + "teams/link-external-idp-group-to-team-for-org": { + parameters: { + path: { + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + /** The slug of the team name. */ + team_slug: components["parameters"]["team-slug"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["external-group"]; + }; + }; + }; + requestBody: { + content: { + "application/json": { + /** + * @description External Group Id + * @example 1 + */ + group_id: number; + }; + }; + }; + }; + /** + * The return hash contains a `role` field which refers to the Organization Invitation role and will be one of the following values: `direct_member`, `admin`, `billing_manager`, `hiring_manager`, or `reinstate`. If the invitee is not a GitHub member, the `login` field in the return hash will be `null`. + * + * **Note:** You can also specify a team by `org_id` and `team_id` using the route `GET /organizations/{org_id}/team/{team_id}/invitations`. + */ + "teams/list-pending-invitations-in-org": { + parameters: { + path: { + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + /** The slug of the team name. */ + team_slug: components["parameters"]["team-slug"]; + }; + query: { + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + }; + }; + responses: { + /** Response */ + 200: { + headers: {}; + content: { + "application/json": components["schemas"]["organization-invitation"][]; + }; + }; + }; + }; + /** + * Team members will include the members of child teams. + * + * To list members in a team, the team must be visible to the authenticated user. + */ + "teams/list-members-in-org": { + parameters: { + path: { + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + /** The slug of the team name. */ + team_slug: components["parameters"]["team-slug"]; + }; + query: { + /** Filters members returned by their role in the team. */ + role?: "member" | "maintainer" | "all"; + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + }; + }; + responses: { + /** Response */ + 200: { + headers: {}; + content: { + "application/json": components["schemas"]["simple-user"][]; + }; + }; + }; + }; + /** + * Team members will include the members of child teams. + * + * To get a user's membership with a team, the team must be visible to the authenticated user. + * + * **Note:** You can also specify a team by `org_id` and `team_id` using the route `GET /organizations/{org_id}/team/{team_id}/memberships/{username}`. + * + * **Note:** + * The response contains the `state` of the membership and the member's `role`. + * + * The `role` for organization owners is set to `maintainer`. For more information about `maintainer` roles, see see [Create a team](https://docs.github.com/rest/reference/teams#create-a-team). + */ + "teams/get-membership-for-user-in-org": { + parameters: { + path: { + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + /** The slug of the team name. */ + team_slug: components["parameters"]["team-slug"]; + /** The handle for the GitHub user account. */ + username: components["parameters"]["username"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["team-membership"]; + }; + }; + /** if user has no team membership */ + 404: unknown; + }; + }; + /** + * Team synchronization is available for organizations using GitHub Enterprise Cloud. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. + * + * Adds an organization member to a team. An authenticated organization owner or team maintainer can add organization members to a team. + * + * **Note:** When you have team synchronization set up for a team with your organization's identity provider (IdP), you will see an error if you attempt to use the API for making changes to the team's membership. If you have access to manage group membership in your IdP, you can manage GitHub team membership through your identity provider, which automatically adds and removes team members in an organization. For more information, see "[Synchronizing teams between your identity provider and GitHub](https://docs.github.com/articles/synchronizing-teams-between-your-identity-provider-and-github/)." + * + * An organization owner can add someone who is not part of the team's organization to a team. When an organization owner adds someone to a team who is not an organization member, this endpoint will send an invitation to the person via email. This newly-created membership will be in the "pending" state until the person accepts the invitation, at which point the membership will transition to the "active" state and the user will be added as a member of the team. + * + * If the user is already a member of the team, this endpoint will update the role of the team member's role. To update the membership of a team member, the authenticated user must be an organization owner or a team maintainer. + * + * **Note:** You can also specify a team by `org_id` and `team_id` using the route `PUT /organizations/{org_id}/team/{team_id}/memberships/{username}`. + */ + "teams/add-or-update-membership-for-user-in-org": { + parameters: { + path: { + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + /** The slug of the team name. */ + team_slug: components["parameters"]["team-slug"]; + /** The handle for the GitHub user account. */ + username: components["parameters"]["username"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["team-membership"]; + }; + }; + /** Forbidden if team synchronization is set up */ + 403: unknown; + /** Unprocessable Entity if you attempt to add an organization to a team */ + 422: unknown; + }; + requestBody: { + content: { + "application/json": { + /** + * @description The role that this user should have in the team. + * @default member + * @enum {string} + */ + role?: "member" | "maintainer"; + }; + }; + }; + }; + /** + * Team synchronization is available for organizations using GitHub Enterprise Cloud. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. + * + * To remove a membership between a user and a team, the authenticated user must have 'admin' permissions to the team or be an owner of the organization that the team is associated with. Removing team membership does not delete the user, it just removes their membership from the team. + * + * **Note:** When you have team synchronization set up for a team with your organization's identity provider (IdP), you will see an error if you attempt to use the API for making changes to the team's membership. If you have access to manage group membership in your IdP, you can manage GitHub team membership through your identity provider, which automatically adds and removes team members in an organization. For more information, see "[Synchronizing teams between your identity provider and GitHub](https://docs.github.com/articles/synchronizing-teams-between-your-identity-provider-and-github/)." + * + * **Note:** You can also specify a team by `org_id` and `team_id` using the route `DELETE /organizations/{org_id}/team/{team_id}/memberships/{username}`. + */ + "teams/remove-membership-for-user-in-org": { + parameters: { + path: { + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + /** The slug of the team name. */ + team_slug: components["parameters"]["team-slug"]; + /** The handle for the GitHub user account. */ + username: components["parameters"]["username"]; + }; + }; + responses: { + /** Response */ + 204: never; + /** Forbidden if team synchronization is set up */ + 403: unknown; + }; + }; + /** + * Lists the organization projects for a team. + * + * **Note:** You can also specify a team by `org_id` and `team_id` using the route `GET /organizations/{org_id}/team/{team_id}/projects`. + */ + "teams/list-projects-in-org": { + parameters: { + path: { + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + /** The slug of the team name. */ + team_slug: components["parameters"]["team-slug"]; + }; + query: { + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + }; + }; + responses: { + /** Response */ + 200: { + headers: {}; + content: { + "application/json": components["schemas"]["team-project"][]; + }; + }; + }; + }; + /** + * Checks whether a team has `read`, `write`, or `admin` permissions for an organization project. The response includes projects inherited from a parent team. + * + * **Note:** You can also specify a team by `org_id` and `team_id` using the route `GET /organizations/{org_id}/team/{team_id}/projects/{project_id}`. + */ + "teams/check-permissions-for-project-in-org": { + parameters: { + path: { + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + /** The slug of the team name. */ + team_slug: components["parameters"]["team-slug"]; + /** The unique identifier of the project. */ + project_id: components["parameters"]["project-id"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["team-project"]; + }; + }; + /** Not Found if project is not managed by this team */ + 404: unknown; + }; + }; + /** + * Adds an organization project to a team. To add a project to a team or update the team's permission on a project, the authenticated user must have `admin` permissions for the project. The project and team must be part of the same organization. + * + * **Note:** You can also specify a team by `org_id` and `team_id` using the route `PUT /organizations/{org_id}/team/{team_id}/projects/{project_id}`. + */ + "teams/add-or-update-project-permissions-in-org": { + parameters: { + path: { + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + /** The slug of the team name. */ + team_slug: components["parameters"]["team-slug"]; + /** The unique identifier of the project. */ + project_id: components["parameters"]["project-id"]; + }; + }; + responses: { + /** Response */ + 204: never; + /** Forbidden if the project is not owned by the organization */ + 403: { + content: { + "application/json": { + message?: string; + documentation_url?: string; + }; + }; + }; + }; + requestBody: { + content: { + "application/json": { + /** + * @description The permission to grant to the team for this project. Default: the team's `permission` attribute will be used to determine what permission to grant the team on this project. Note that, if you choose not to pass any parameters, you'll need to set `Content-Length` to zero when calling this endpoint. For more information, see "[HTTP verbs](https://docs.github.com/rest/overview/resources-in-the-rest-api#http-verbs)." + * @enum {string} + */ + permission?: "read" | "write" | "admin"; + } | null; + }; + }; + }; + /** + * Removes an organization project from a team. An organization owner or a team maintainer can remove any project from the team. To remove a project from a team as an organization member, the authenticated user must have `read` access to both the team and project, or `admin` access to the team or project. This endpoint removes the project from the team, but does not delete the project. + * + * **Note:** You can also specify a team by `org_id` and `team_id` using the route `DELETE /organizations/{org_id}/team/{team_id}/projects/{project_id}`. + */ + "teams/remove-project-in-org": { + parameters: { + path: { + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + /** The slug of the team name. */ + team_slug: components["parameters"]["team-slug"]; + /** The unique identifier of the project. */ + project_id: components["parameters"]["project-id"]; + }; + }; + responses: { + /** Response */ + 204: never; + }; + }; + /** + * Lists a team's repositories visible to the authenticated user. + * + * **Note:** You can also specify a team by `org_id` and `team_id` using the route `GET /organizations/{org_id}/team/{team_id}/repos`. + */ + "teams/list-repos-in-org": { + parameters: { + path: { + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + /** The slug of the team name. */ + team_slug: components["parameters"]["team-slug"]; + }; + query: { + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + }; + }; + responses: { + /** Response */ + 200: { + headers: {}; + content: { + "application/json": components["schemas"]["minimal-repository"][]; + }; + }; + }; + }; + /** + * Checks whether a team has `admin`, `push`, `maintain`, `triage`, or `pull` permission for a repository. Repositories inherited through a parent team will also be checked. + * + * You can also get information about the specified repository, including what permissions the team grants on it, by passing the following custom [media type](https://docs.github.com/rest/overview/media-types/) via the `application/vnd.github.v3.repository+json` accept header. + * + * If a team doesn't have permission for the repository, you will receive a `404 Not Found` response status. + * + * **Note:** You can also specify a team by `org_id` and `team_id` using the route `GET /organizations/{org_id}/team/{team_id}/repos/{owner}/{repo}`. + */ + "teams/check-permissions-for-repo-in-org": { + parameters: { + path: { + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + /** The slug of the team name. */ + team_slug: components["parameters"]["team-slug"]; + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + }; + }; + responses: { + /** Alternative response with repository permissions */ + 200: { + content: { + "application/json": components["schemas"]["team-repository"]; + }; + }; + /** Response if team has permission for the repository. This is the response when the repository media type hasn't been provded in the Accept header. */ + 204: never; + /** Not Found if team does not have permission for the repository */ + 404: unknown; + }; + }; + /** + * To add a repository to a team or update the team's permission on a repository, the authenticated user must have admin access to the repository, and must be able to see the team. The repository must be owned by the organization, or a direct fork of a repository owned by the organization. You will get a `422 Unprocessable Entity` status if you attempt to add a repository to a team that is not owned by the organization. Note that, if you choose not to pass any parameters, you'll need to set `Content-Length` to zero when calling out to this endpoint. For more information, see "[HTTP verbs](https://docs.github.com/rest/overview/resources-in-the-rest-api#http-verbs)." + * + * **Note:** You can also specify a team by `org_id` and `team_id` using the route `PUT /organizations/{org_id}/team/{team_id}/repos/{owner}/{repo}`. + * + * For more information about the permission levels, see "[Repository permission levels for an organization](https://docs.github.com/en/github/setting-up-and-managing-organizations-and-teams/repository-permission-levels-for-an-organization#permission-levels-for-repositories-owned-by-an-organization)". + */ + "teams/add-or-update-repo-permissions-in-org": { + parameters: { + path: { + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + /** The slug of the team name. */ + team_slug: components["parameters"]["team-slug"]; + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + }; + }; + responses: { + /** Response */ + 204: never; + }; + requestBody: { + content: { + "application/json": { + /** + * @description The permission to grant the team on this repository. In addition to the enumerated values, you can also specify a custom repository role name, if the owning organization has defined any. If no permission is specified, the team's `permission` attribute will be used to determine what permission to grant the team on this repository. + * @default push + * @enum {string} + */ + permission?: "pull" | "push" | "admin" | "maintain" | "triage"; + }; + }; + }; + }; + /** + * If the authenticated user is an organization owner or a team maintainer, they can remove any repositories from the team. To remove a repository from a team as an organization member, the authenticated user must have admin access to the repository and must be able to see the team. This does not delete the repository, it just removes it from the team. + * + * **Note:** You can also specify a team by `org_id` and `team_id` using the route `DELETE /organizations/{org_id}/team/{team_id}/repos/{owner}/{repo}`. + */ + "teams/remove-repo-in-org": { + parameters: { + path: { + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + /** The slug of the team name. */ + team_slug: components["parameters"]["team-slug"]; + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + }; + }; + responses: { + /** Response */ + 204: never; + }; + }; + /** + * Team synchronization is available for organizations using GitHub Enterprise Cloud. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. + * + * List IdP groups connected to a team on GitHub. + * + * **Note:** You can also specify a team by `org_id` and `team_id` using the route `GET /organizations/{org_id}/team/{team_id}/team-sync/group-mappings`. + */ + "teams/list-idp-groups-in-org": { + parameters: { + path: { + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + /** The slug of the team name. */ + team_slug: components["parameters"]["team-slug"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["group-mapping"]; + }; + }; + }; + }; + /** + * Team synchronization is available for organizations using GitHub Enterprise Cloud. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. + * + * Creates, updates, or removes a connection between a team and an IdP group. When adding groups to a team, you must include all new and existing groups to avoid replacing existing groups with the new ones. Specifying an empty `groups` array will remove all connections for a team. + * + * **Note:** You can also specify a team by `org_id` and `team_id` using the route `PATCH /organizations/{org_id}/team/{team_id}/team-sync/group-mappings`. + */ + "teams/create-or-update-idp-group-connections-in-org": { + parameters: { + path: { + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + /** The slug of the team name. */ + team_slug: components["parameters"]["team-slug"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["group-mapping"]; + }; + }; + }; + requestBody: { + content: { + "application/json": { + /** @description The IdP groups you want to connect to a GitHub team. When updating, the new `groups` object will replace the original one. You must include any existing groups that you don't want to remove. */ + groups?: { + /** @description ID of the IdP group. */ + group_id: string; + /** @description Name of the IdP group. */ + group_name: string; + /** @description Description of the IdP group. */ + group_description: string; + }[]; + }; + }; + }; + }; + /** + * Lists the child teams of the team specified by `{team_slug}`. + * + * **Note:** You can also specify a team by `org_id` and `team_id` using the route `GET /organizations/{org_id}/team/{team_id}/teams`. + */ + "teams/list-child-in-org": { + parameters: { + path: { + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + /** The slug of the team name. */ + team_slug: components["parameters"]["team-slug"]; + }; + query: { + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + }; + }; + responses: { + /** if child teams exist */ + 200: { + headers: {}; + content: { + "application/json": components["schemas"]["team"][]; + }; + }; + }; + }; + "projects/get-card": { + parameters: { + path: { + /** The unique identifier of the card. */ + card_id: components["parameters"]["card-id"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["project-card"]; + }; + }; + 304: components["responses"]["not_modified"]; + 401: components["responses"]["requires_authentication"]; + 403: components["responses"]["forbidden"]; + 404: components["responses"]["not_found"]; + }; + }; + "projects/delete-card": { + parameters: { + path: { + /** The unique identifier of the card. */ + card_id: components["parameters"]["card-id"]; + }; + }; + responses: { + /** Response */ + 204: never; + 304: components["responses"]["not_modified"]; + 401: components["responses"]["requires_authentication"]; + /** Forbidden */ + 403: { + content: { + "application/json": { + message?: string; + documentation_url?: string; + errors?: string[]; + }; + }; + }; + 404: components["responses"]["not_found"]; + }; + }; + "projects/update-card": { + parameters: { + path: { + /** The unique identifier of the card. */ + card_id: components["parameters"]["card-id"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["project-card"]; + }; + }; + 304: components["responses"]["not_modified"]; + 401: components["responses"]["requires_authentication"]; + 403: components["responses"]["forbidden"]; + 404: components["responses"]["not_found"]; + 422: components["responses"]["validation_failed_simple"]; + }; + requestBody: { + content: { + "application/json": { + /** + * @description The project card's note + * @example Update all gems + */ + note?: string | null; + /** + * @description Whether or not the card is archived + * @example false + */ + archived?: boolean; + }; + }; + }; + }; + "projects/move-card": { + parameters: { + path: { + /** The unique identifier of the card. */ + card_id: components["parameters"]["card-id"]; + }; + }; + responses: { + /** Response */ + 201: { + content: { + "application/json": { [key: string]: unknown }; + }; + }; + 304: components["responses"]["not_modified"]; + 401: components["responses"]["requires_authentication"]; + /** Forbidden */ + 403: { + content: { + "application/json": { + message?: string; + documentation_url?: string; + errors?: { + code?: string; + message?: string; + resource?: string; + field?: string; + }[]; + }; + }; + }; + 422: components["responses"]["validation_failed"]; + /** Response */ + 503: { + content: { + "application/json": { + code?: string; + message?: string; + documentation_url?: string; + errors?: { + code?: string; + message?: string; + }[]; + }; + }; + }; + }; + requestBody: { + content: { + "application/json": { + /** + * @description The position of the card in a column. Can be one of: `top`, `bottom`, or `after:` to place after the specified card. + * @example bottom + */ + position: string; + /** + * @description The unique identifier of the column the card should be moved to + * @example 42 + */ + column_id?: number; + }; + }; + }; + }; + "projects/get-column": { + parameters: { + path: { + /** The unique identifier of the column. */ + column_id: components["parameters"]["column-id"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["project-column"]; + }; + }; + 304: components["responses"]["not_modified"]; + 401: components["responses"]["requires_authentication"]; + 403: components["responses"]["forbidden"]; + 404: components["responses"]["not_found"]; + }; + }; + "projects/delete-column": { + parameters: { + path: { + /** The unique identifier of the column. */ + column_id: components["parameters"]["column-id"]; + }; + }; + responses: { + /** Response */ + 204: never; + 304: components["responses"]["not_modified"]; + 401: components["responses"]["requires_authentication"]; + 403: components["responses"]["forbidden"]; + }; + }; + "projects/update-column": { + parameters: { + path: { + /** The unique identifier of the column. */ + column_id: components["parameters"]["column-id"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["project-column"]; + }; + }; + 304: components["responses"]["not_modified"]; + 401: components["responses"]["requires_authentication"]; + 403: components["responses"]["forbidden"]; + }; + requestBody: { + content: { + "application/json": { + /** + * @description Name of the project column + * @example Remaining tasks + */ + name: string; + }; + }; + }; + }; + "projects/list-cards": { + parameters: { + path: { + /** The unique identifier of the column. */ + column_id: components["parameters"]["column-id"]; + }; + query: { + /** Filters the project cards that are returned by the card's state. */ + archived_state?: "all" | "archived" | "not_archived"; + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + }; + }; + responses: { + /** Response */ + 200: { + headers: {}; + content: { + "application/json": components["schemas"]["project-card"][]; + }; + }; + 304: components["responses"]["not_modified"]; + 401: components["responses"]["requires_authentication"]; + 403: components["responses"]["forbidden"]; + }; + }; + "projects/create-card": { + parameters: { + path: { + /** The unique identifier of the column. */ + column_id: components["parameters"]["column-id"]; + }; + }; + responses: { + /** Response */ + 201: { + content: { + "application/json": components["schemas"]["project-card"]; + }; + }; + 304: components["responses"]["not_modified"]; + 401: components["responses"]["requires_authentication"]; + 403: components["responses"]["forbidden"]; + /** Validation failed */ + 422: { + content: { + "application/json": + | components["schemas"]["validation-error"] + | components["schemas"]["validation-error-simple"]; + }; + }; + /** Response */ + 503: { + content: { + "application/json": { + code?: string; + message?: string; + documentation_url?: string; + errors?: { + code?: string; + message?: string; + }[]; + }; + }; + }; + }; + requestBody: { + content: { + "application/json": + | { + /** + * @description The project card's note + * @example Update all gems + */ + note: string | null; + } + | { + /** + * @description The unique identifier of the content associated with the card + * @example 42 + */ + content_id: number; + /** + * @description The piece of content associated with the card + * @example PullRequest + */ + content_type: string; + }; + }; + }; + }; + "projects/move-column": { + parameters: { + path: { + /** The unique identifier of the column. */ + column_id: components["parameters"]["column-id"]; + }; + }; + responses: { + /** Response */ + 201: { + content: { + "application/json": { [key: string]: unknown }; + }; + }; + 304: components["responses"]["not_modified"]; + 401: components["responses"]["requires_authentication"]; + 403: components["responses"]["forbidden"]; + 422: components["responses"]["validation_failed_simple"]; + }; + requestBody: { + content: { + "application/json": { + /** + * @description The position of the column in a project. Can be one of: `first`, `last`, or `after:` to place after the specified column. + * @example last + */ + position: string; + }; + }; + }; + }; + /** Gets a project by its `id`. Returns a `404 Not Found` status if projects are disabled. If you do not have sufficient privileges to perform this action, a `401 Unauthorized` or `410 Gone` status is returned. */ + "projects/get": { + parameters: { + path: { + /** The unique identifier of the project. */ + project_id: components["parameters"]["project-id"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["project"]; + }; + }; + 304: components["responses"]["not_modified"]; + 401: components["responses"]["requires_authentication"]; + 403: components["responses"]["forbidden"]; + }; + }; + /** Deletes a project board. Returns a `404 Not Found` status if projects are disabled. */ + "projects/delete": { + parameters: { + path: { + /** The unique identifier of the project. */ + project_id: components["parameters"]["project-id"]; + }; + }; + responses: { + /** Delete Success */ + 204: never; + 304: components["responses"]["not_modified"]; + 401: components["responses"]["requires_authentication"]; + /** Forbidden */ + 403: { + content: { + "application/json": { + message?: string; + documentation_url?: string; + errors?: string[]; + }; + }; + }; + 404: components["responses"]["not_found"]; + 410: components["responses"]["gone"]; + }; + }; + /** Updates a project board's information. Returns a `404 Not Found` status if projects are disabled. If you do not have sufficient privileges to perform this action, a `401 Unauthorized` or `410 Gone` status is returned. */ + "projects/update": { + parameters: { + path: { + /** The unique identifier of the project. */ + project_id: components["parameters"]["project-id"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["project"]; + }; + }; + 304: components["responses"]["not_modified"]; + 401: components["responses"]["requires_authentication"]; + /** Forbidden */ + 403: { + content: { + "application/json": { + message?: string; + documentation_url?: string; + errors?: string[]; + }; + }; + }; + /** Not Found if the authenticated user does not have access to the project */ + 404: unknown; + 410: components["responses"]["gone"]; + 422: components["responses"]["validation_failed_simple"]; + }; + requestBody: { + content: { + "application/json": { + /** + * @description Name of the project + * @example Week One Sprint + */ + name?: string; + /** + * @description Body of the project + * @example This project represents the sprint of the first week in January + */ + body?: string | null; + /** + * @description State of the project; either 'open' or 'closed' + * @example open + */ + state?: string; + /** + * @description The baseline permission that all organization members have on this project + * @enum {string} + */ + organization_permission?: "read" | "write" | "admin" | "none"; + /** @description Whether or not this project can be seen by everyone. */ + private?: boolean; + }; + }; + }; + }; + /** Lists the collaborators for an organization project. For a project, the list of collaborators includes outside collaborators, organization members that are direct collaborators, organization members with access through team memberships, organization members with access through default organization permissions, and organization owners. You must be an organization owner or a project `admin` to list collaborators. */ + "projects/list-collaborators": { + parameters: { + path: { + /** The unique identifier of the project. */ + project_id: components["parameters"]["project-id"]; + }; + query: { + /** Filters the collaborators by their affiliation. `outside` means outside collaborators of a project that are not a member of the project's organization. `direct` means collaborators with permissions to a project, regardless of organization membership status. `all` means all collaborators the authenticated user can see. */ + affiliation?: "outside" | "direct" | "all"; + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + }; + }; + responses: { + /** Response */ + 200: { + headers: {}; + content: { + "application/json": components["schemas"]["simple-user"][]; + }; + }; + 304: components["responses"]["not_modified"]; + 401: components["responses"]["requires_authentication"]; + 403: components["responses"]["forbidden"]; + 404: components["responses"]["not_found"]; + 422: components["responses"]["validation_failed"]; + }; + }; + /** Adds a collaborator to an organization project and sets their permission level. You must be an organization owner or a project `admin` to add a collaborator. */ + "projects/add-collaborator": { + parameters: { + path: { + /** The unique identifier of the project. */ + project_id: components["parameters"]["project-id"]; + /** The handle for the GitHub user account. */ + username: components["parameters"]["username"]; + }; + }; + responses: { + /** Response */ + 204: never; + 304: components["responses"]["not_modified"]; + 401: components["responses"]["requires_authentication"]; + 403: components["responses"]["forbidden"]; + 404: components["responses"]["not_found"]; + 422: components["responses"]["validation_failed"]; + }; + requestBody: { + content: { + "application/json": { + /** + * @description The permission to grant the collaborator. + * @default write + * @example write + * @enum {string} + */ + permission?: "read" | "write" | "admin"; + } | null; + }; + }; + }; + /** Removes a collaborator from an organization project. You must be an organization owner or a project `admin` to remove a collaborator. */ + "projects/remove-collaborator": { + parameters: { + path: { + /** The unique identifier of the project. */ + project_id: components["parameters"]["project-id"]; + /** The handle for the GitHub user account. */ + username: components["parameters"]["username"]; + }; + }; + responses: { + /** Response */ + 204: never; + 304: components["responses"]["not_modified"]; + 401: components["responses"]["requires_authentication"]; + 403: components["responses"]["forbidden"]; + 404: components["responses"]["not_found"]; + 422: components["responses"]["validation_failed"]; + }; + }; + /** Returns the collaborator's permission level for an organization project. Possible values for the `permission` key: `admin`, `write`, `read`, `none`. You must be an organization owner or a project `admin` to review a user's permission level. */ + "projects/get-permission-for-user": { + parameters: { + path: { + /** The unique identifier of the project. */ + project_id: components["parameters"]["project-id"]; + /** The handle for the GitHub user account. */ + username: components["parameters"]["username"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["project-collaborator-permission"]; + }; + }; + 304: components["responses"]["not_modified"]; + 401: components["responses"]["requires_authentication"]; + 403: components["responses"]["forbidden"]; + 404: components["responses"]["not_found"]; + 422: components["responses"]["validation_failed"]; + }; + }; + "projects/list-columns": { + parameters: { + path: { + /** The unique identifier of the project. */ + project_id: components["parameters"]["project-id"]; + }; + query: { + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + }; + }; + responses: { + /** Response */ + 200: { + headers: {}; + content: { + "application/json": components["schemas"]["project-column"][]; + }; + }; + 304: components["responses"]["not_modified"]; + 401: components["responses"]["requires_authentication"]; + 403: components["responses"]["forbidden"]; + }; + }; + "projects/create-column": { + parameters: { + path: { + /** The unique identifier of the project. */ + project_id: components["parameters"]["project-id"]; + }; + }; + responses: { + /** Response */ + 201: { + content: { + "application/json": components["schemas"]["project-column"]; + }; + }; + 304: components["responses"]["not_modified"]; + 401: components["responses"]["requires_authentication"]; + 403: components["responses"]["forbidden"]; + 422: components["responses"]["validation_failed_simple"]; + }; + requestBody: { + content: { + "application/json": { + /** + * @description Name of the project column + * @example Remaining tasks + */ + name: string; + }; + }; + }; + }; + /** + * **Note:** Accessing this endpoint does not count against your REST API rate limit. + * + * **Note:** The `rate` object is deprecated. If you're writing new API client code or updating existing code, you should use the `core` object instead of the `rate` object. The `core` object contains the same information that is present in the `rate` object. + */ + "rate-limit/get": { + parameters: {}; + responses: { + /** Response */ + 200: { + headers: {}; + content: { + "application/json": components["schemas"]["rate-limit-overview"]; + }; + }; + 304: components["responses"]["not_modified"]; + 404: components["responses"]["not_found"]; + }; + }; + /** The `parent` and `source` objects are present when the repository is a fork. `parent` is the repository this repository was forked from, `source` is the ultimate source for the network. */ + "repos/get": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["full-repository"]; + }; + }; + 301: components["responses"]["moved_permanently"]; + 403: components["responses"]["forbidden"]; + 404: components["responses"]["not_found"]; + }; + }; + /** + * Deleting a repository requires admin access. If OAuth is used, the `delete_repo` scope is required. + * + * If an organization owner has configured the organization to prevent members from deleting organization-owned + * repositories, you will get a `403 Forbidden` response. + */ + "repos/delete": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + }; + }; + responses: { + /** Response */ + 204: never; + 307: components["responses"]["temporary_redirect"]; + /** If an organization owner has configured the organization to prevent members from deleting organization-owned repositories, a member will get this response: */ + 403: { + content: { + "application/json": { + message?: string; + documentation_url?: string; + }; + }; + }; + 404: components["responses"]["not_found"]; + }; + }; + /** **Note**: To edit a repository's topics, use the [Replace all repository topics](https://docs.github.com/rest/reference/repos#replace-all-repository-topics) endpoint. */ + "repos/update": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["full-repository"]; + }; + }; + 307: components["responses"]["temporary_redirect"]; + 403: components["responses"]["forbidden"]; + 404: components["responses"]["not_found"]; + 422: components["responses"]["validation_failed"]; + }; + requestBody: { + content: { + "application/json": { + /** @description The name of the repository. */ + name?: string; + /** @description A short description of the repository. */ + description?: string; + /** @description A URL with more information about the repository. */ + homepage?: string; + /** + * @description Either `true` to make the repository private or `false` to make it public. Default: `false`. + * **Note**: You will get a `422` error if the organization restricts [changing repository visibility](https://docs.github.com/articles/repository-permission-levels-for-an-organization#changing-the-visibility-of-repositories) to organization owners and a non-owner tries to change the value of private. **Note**: You will get a `422` error if the organization restricts [changing repository visibility](https://docs.github.com/articles/repository-permission-levels-for-an-organization#changing-the-visibility-of-repositories) to organization owners and a non-owner tries to change the value of private. + * @default false + */ + private?: boolean; + /** + * @description Can be `public` or `private`. If your organization is associated with an enterprise account using GitHub Enterprise Cloud or GitHub Enterprise Server 2.20+, `visibility` can also be `internal`." + * @enum {string} + */ + visibility?: "public" | "private" | "internal"; + /** @description Specify which security and analysis features to enable or disable. For example, to enable GitHub Advanced Security, use this data in the body of the PATCH request: `{"security_and_analysis": {"advanced_security": {"status": "enabled"}}}`. If you have admin permissions for a private repository covered by an Advanced Security license, you can check which security and analysis features are currently enabled by using a `GET /repos/{owner}/{repo}` request. */ + security_and_analysis?: { + /** @description Use the `status` property to enable or disable GitHub Advanced Security for this repository. For more information, see "[About GitHub Advanced Security](/github/getting-started-with-github/learning-about-github/about-github-advanced-security)." */ + advanced_security?: { + /** @description Can be `enabled` or `disabled`. */ + status?: string; + }; + /** @description Use the `status` property to enable or disable secret scanning for this repository. For more information, see "[About secret scanning](/code-security/secret-security/about-secret-scanning)." */ + secret_scanning?: { + /** @description Can be `enabled` or `disabled`. */ + status?: string; + }; + /** @description Use the `status` property to enable or disable secret scanning push protection for this repository. For more information, see "[Protecting pushes with secret scanning](/code-security/secret-scanning/protecting-pushes-with-secret-scanning)." */ + secret_scanning_push_protection?: { + /** @description Can be `enabled` or `disabled`. */ + status?: string; + }; + } | null; + /** + * @description Either `true` to enable issues for this repository or `false` to disable them. + * @default true + */ + has_issues?: boolean; + /** + * @description Either `true` to enable projects for this repository or `false` to disable them. **Note:** If you're creating a repository in an organization that has disabled repository projects, the default is `false`, and if you pass `true`, the API returns an error. + * @default true + */ + has_projects?: boolean; + /** + * @description Either `true` to enable the wiki for this repository or `false` to disable it. + * @default true + */ + has_wiki?: boolean; + /** + * @description Either `true` to make this repo available as a template repository or `false` to prevent it. + * @default false + */ + is_template?: boolean; + /** @description Updates the default branch for this repository. */ + default_branch?: string; + /** + * @description Either `true` to allow squash-merging pull requests, or `false` to prevent squash-merging. + * @default true + */ + allow_squash_merge?: boolean; + /** + * @description Either `true` to allow merging pull requests with a merge commit, or `false` to prevent merging pull requests with merge commits. + * @default true + */ + allow_merge_commit?: boolean; + /** + * @description Either `true` to allow rebase-merging pull requests, or `false` to prevent rebase-merging. + * @default true + */ + allow_rebase_merge?: boolean; + /** + * @description Either `true` to allow auto-merge on pull requests, or `false` to disallow auto-merge. + * @default false + */ + allow_auto_merge?: boolean; + /** + * @description Either `true` to allow automatically deleting head branches when pull requests are merged, or `false` to prevent automatic deletion. + * @default false + */ + delete_branch_on_merge?: boolean; + /** + * @description Either `true` to always allow a pull request head branch that is behind its base branch to be updated even if it is not required to be up to date before merging, or false otherwise. + * @default false + */ + allow_update_branch?: boolean; + /** + * @description Either `true` to allow squash-merge commits to use pull request title, or `false` to use commit message. + * @default false + */ + use_squash_pr_title_as_default?: boolean; + /** + * @description `true` to archive this repository. **Note**: You cannot unarchive repositories through the API. + * @default false + */ + archived?: boolean; + /** + * @description Either `true` to allow private forks, or `false` to prevent private forks. + * @default false + */ + allow_forking?: boolean; + }; + }; + }; + }; + /** Lists all artifacts for a repository. Anyone with read access to the repository can use this endpoint. If the repository is private you must use an access token with the `repo` scope. GitHub Apps must have the `actions:read` permission to use this endpoint. */ + "actions/list-artifacts-for-repo": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + }; + query: { + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + }; + }; + responses: { + /** Response */ + 200: { + headers: {}; + content: { + "application/json": { + total_count: number; + artifacts: components["schemas"]["artifact"][]; + }; + }; + }; + }; + }; + /** Gets a specific artifact for a workflow run. Anyone with read access to the repository can use this endpoint. If the repository is private you must use an access token with the `repo` scope. GitHub Apps must have the `actions:read` permission to use this endpoint. */ + "actions/get-artifact": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The unique identifier of the artifact. */ + artifact_id: components["parameters"]["artifact-id"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["artifact"]; + }; + }; + }; + }; + /** Deletes an artifact for a workflow run. You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the `actions:write` permission to use this endpoint. */ + "actions/delete-artifact": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The unique identifier of the artifact. */ + artifact_id: components["parameters"]["artifact-id"]; + }; + }; + responses: { + /** Response */ + 204: never; + }; + }; + /** + * Gets a redirect URL to download an archive for a repository. This URL expires after 1 minute. Look for `Location:` in + * the response header to find the URL for the download. The `:archive_format` must be `zip`. Anyone with read access to + * the repository can use this endpoint. If the repository is private you must use an access token with the `repo` scope. + * GitHub Apps must have the `actions:read` permission to use this endpoint. + */ + "actions/download-artifact": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The unique identifier of the artifact. */ + artifact_id: components["parameters"]["artifact-id"]; + archive_format: string; + }; + }; + responses: { + /** Response */ + 302: never; + 410: components["responses"]["gone"]; + }; + }; + /** + * Gets GitHub Actions cache usage for a repository. + * The data fetched using this API is refreshed approximately every 5 minutes, so values returned from this endpoint may take at least 5 minutes to get updated. + * Anyone with read access to the repository can use this endpoint. If the repository is private, you must use an access token with the `repo` scope. GitHub Apps must have the `actions:read` permission to use this endpoint. + */ + "actions/get-actions-cache-usage": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["actions-cache-usage-by-repository"]; + }; + }; + }; + }; + /** + * Lists the GitHub Actions caches for a repository. + * You must authenticate using an access token with the `repo` scope to use this endpoint. + * GitHub Apps must have the `actions:read` permission to use this endpoint. + */ + "actions/get-actions-cache-list": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + }; + query: { + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + /** The Git reference for the results you want to list. The `ref` for a branch can be formatted either as `refs/heads/` or simply ``. To reference a pull request use `refs/pull//merge`. */ + ref?: components["parameters"]["git-ref"]; + /** An explicit key or prefix for identifying the cache */ + key?: components["parameters"]["actions-cache-key"]; + /** The property to sort the results by. `created_at` means when the cache was created. `last_accessed_at` means when the cache was last accessed. `size_in_bytes` is the size of the cache in bytes. */ + sort?: components["parameters"]["actions-cache-list-sort"]; + /** The direction to sort the results by. */ + direction?: components["parameters"]["direction"]; + }; + }; + responses: { + /** Response */ + 200: { + headers: {}; + content: { + "application/json": components["schemas"]["actions-cache-list"]; + }; + }; + }; + }; + /** + * Deletes one or more GitHub Actions caches for a repository, using a complete cache key. By default, all caches that match the provided key are deleted, but you can optionally provide a Git ref to restrict deletions to caches that match both the provided key and the Git ref. + * + * You must authenticate using an access token with the `repo` scope to use this endpoint. + * + * GitHub Apps must have the `actions:write` permission to use this endpoint. + */ + "actions/delete-actions-cache-by-key": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + }; + query: { + /** A key for identifying the cache. */ + key: components["parameters"]["actions-cache-key-required"]; + /** The Git reference for the results you want to list. The `ref` for a branch can be formatted either as `refs/heads/` or simply ``. To reference a pull request use `refs/pull//merge`. */ + ref?: components["parameters"]["git-ref"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["actions-cache-list"]; + }; + }; + }; + }; + /** + * Deletes a GitHub Actions cache for a repository, using a cache ID. + * + * You must authenticate using an access token with the `repo` scope to use this endpoint. + * + * GitHub Apps must have the `actions:write` permission to use this endpoint. + */ + "actions/delete-actions-cache-by-id": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The unique identifier of the GitHub Actions cache. */ + cache_id: components["parameters"]["cache-id"]; + }; + }; + responses: { + /** Response */ + 204: never; + }; + }; + /** Gets a specific job in a workflow run. Anyone with read access to the repository can use this endpoint. If the repository is private you must use an access token with the `repo` scope. GitHub Apps must have the `actions:read` permission to use this endpoint. */ + "actions/get-job-for-workflow-run": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The unique identifier of the job. */ + job_id: components["parameters"]["job-id"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["job"]; + }; + }; + }; + }; + /** + * Gets a redirect URL to download a plain text file of logs for a workflow job. This link expires after 1 minute. Look + * for `Location:` in the response header to find the URL for the download. Anyone with read access to the repository can + * use this endpoint. If the repository is private you must use an access token with the `repo` scope. GitHub Apps must + * have the `actions:read` permission to use this endpoint. + */ + "actions/download-job-logs-for-workflow-run": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The unique identifier of the job. */ + job_id: components["parameters"]["job-id"]; + }; + }; + responses: { + /** Response */ + 302: never; + }; + }; + /** Re-run a job and its dependent jobs in a workflow run. You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the `actions:write` permission to use this endpoint. */ + "actions/re-run-job-for-workflow-run": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The unique identifier of the job. */ + job_id: components["parameters"]["job-id"]; + }; + }; + responses: { + /** Response */ + 201: { + content: { + "application/json": components["schemas"]["empty-object"]; + }; + }; + 403: components["responses"]["forbidden"]; + }; + requestBody: { + content: { + "application/json": { + /** + * @description Whether to enable debug logging for the re-run. + * @default false + */ + enable_debug_logging?: boolean; + } | null; + }; + }; + }; + /** + * Gets the `opt-out` flag of a GitHub Actions OpenID Connect (OIDC) subject claim customization for a repository. + * You must authenticate using an access token with the `repo` scope to use this + * endpoint. GitHub Apps must have the `organization_administration:read` permission to use this endpoint. + */ + "actions/get-custom-oidc-sub-claim-for-repo": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + }; + }; + responses: { + /** Status response */ + 200: { + content: { + "application/json": components["schemas"]["opt-out-oidc-custom-sub"]; + }; + }; + 400: components["responses"]["bad_request"]; + 404: components["responses"]["not_found"]; + }; + }; + /** + * Sets the `opt-out` flag of a GitHub Actions OpenID Connect (OIDC) subject claim customization for a repository. + * You must authenticate using an access token with the `repo` scope to use this + * endpoint. GitHub Apps must have the `actions:write` permission to use this endpoint. + */ + "actions/set-custom-oidc-sub-claim-for-repo": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + }; + }; + responses: { + /** Empty response */ + 201: { + content: { + "application/json": components["schemas"]["empty-object"]; + }; + }; + 400: components["responses"]["bad_request"]; + 404: components["responses"]["not_found"]; + 422: components["responses"]["validation_failed_simple"]; + }; + requestBody: { + content: { + "application/json": components["schemas"]["opt-out-oidc-custom-sub"]; + }; + }; + }; + /** + * Gets the GitHub Actions permissions policy for a repository, including whether GitHub Actions is enabled and the actions and reusable workflows allowed to run in the repository. + * + * You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the `administration` repository permission to use this API. + */ + "actions/get-github-actions-permissions-repository": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["actions-repository-permissions"]; + }; + }; + }; + }; + /** + * Sets the GitHub Actions permissions policy for enabling GitHub Actions and allowed actions and reusable workflows in the repository. + * + * If the repository belongs to an organization or enterprise that has set restrictive permissions at the organization or enterprise levels, such as `allowed_actions` to `selected` actions and reusable workflows, then you cannot override them for the repository. + * + * You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the `administration` repository permission to use this API. + */ + "actions/set-github-actions-permissions-repository": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + }; + }; + responses: { + /** Response */ + 204: never; + }; + requestBody: { + content: { + "application/json": { + enabled: components["schemas"]["actions-enabled"]; + allowed_actions?: components["schemas"]["allowed-actions"]; + }; + }; + }; + }; + /** + * Gets the level of access that workflows outside of the repository have to actions and reusable workflows in the repository. + * This endpoint only applies to internal repositories. For more information, see "[Managing GitHub Actions settings for a repository](https://docs.github.com/repositories/managing-your-repositorys-settings-and-features/enabling-features-for-your-repository/managing-github-actions-settings-for-a-repository#allowing-access-to-components-in-an-internal-repository)." + * + * You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the + * repository `administration` permission to use this endpoint. + */ + "actions/get-workflow-access-to-repository": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["actions-workflow-access-to-repository"]; + }; + }; + }; + }; + /** + * Sets the level of access that workflows outside of the repository have to actions and reusable workflows in the repository. + * This endpoint only applies to internal repositories. For more information, see "[Managing GitHub Actions settings for a repository](https://docs.github.com/repositories/managing-your-repositorys-settings-and-features/enabling-features-for-your-repository/managing-github-actions-settings-for-a-repository#allowing-access-to-components-in-an-internal-repository)." + * + * You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the + * repository `administration` permission to use this endpoint. + */ + "actions/set-workflow-access-to-repository": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + }; + }; + responses: { + /** Response */ + 204: never; + }; + requestBody: { + content: { + "application/json": components["schemas"]["actions-workflow-access-to-repository"]; + }; + }; + }; + /** + * Gets the settings for selected actions and reusable workflows that are allowed in a repository. To use this endpoint, the repository policy for `allowed_actions` must be configured to `selected`. For more information, see "[Set GitHub Actions permissions for a repository](#set-github-actions-permissions-for-a-repository)." + * + * You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the `administration` repository permission to use this API. + */ + "actions/get-allowed-actions-repository": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["selected-actions"]; + }; + }; + }; + }; + /** + * Sets the actions and reusable workflows that are allowed in a repository. To use this endpoint, the repository permission policy for `allowed_actions` must be configured to `selected`. For more information, see "[Set GitHub Actions permissions for a repository](#set-github-actions-permissions-for-a-repository)." + * + * If the repository belongs to an organization or enterprise that has `selected` actions and reusable workflows set at the organization or enterprise levels, then you cannot override any of the allowed actions and reusable workflows settings. + * + * To use the `patterns_allowed` setting for private repositories, the repository must belong to an enterprise. If the repository does not belong to an enterprise, then the `patterns_allowed` setting only applies to public repositories. + * + * You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the `administration` repository permission to use this API. + */ + "actions/set-allowed-actions-repository": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + }; + }; + responses: { + /** Response */ + 204: never; + }; + requestBody: { + content: { + "application/json": components["schemas"]["selected-actions"]; + }; + }; + }; + /** + * Gets the default workflow permissions granted to the `GITHUB_TOKEN` when running workflows in a repository, + * as well as if GitHub Actions can submit approving pull request reviews. + * For more information, see "[Setting the permissions of the GITHUB_TOKEN for your repository](https://docs.github.com/repositories/managing-your-repositorys-settings-and-features/enabling-features-for-your-repository/managing-github-actions-settings-for-a-repository#setting-the-permissions-of-the-github_token-for-your-repository)." + * + * You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the repository `administration` permission to use this API. + */ + "actions/get-github-actions-default-workflow-permissions-repository": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["actions-get-default-workflow-permissions"]; + }; + }; + }; + }; + /** + * Sets the default workflow permissions granted to the `GITHUB_TOKEN` when running workflows in a repository, and sets if GitHub Actions + * can submit approving pull request reviews. + * For more information, see "[Setting the permissions of the GITHUB_TOKEN for your repository](https://docs.github.com/repositories/managing-your-repositorys-settings-and-features/enabling-features-for-your-repository/managing-github-actions-settings-for-a-repository#setting-the-permissions-of-the-github_token-for-your-repository)." + * + * You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the repository `administration` permission to use this API. + */ + "actions/set-github-actions-default-workflow-permissions-repository": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + }; + }; + responses: { + /** Success response */ + 204: never; + /** Conflict response when changing a setting is prevented by the owning organization or enterprise */ + 409: unknown; + }; + requestBody: { + content: { + "application/json": components["schemas"]["actions-set-default-workflow-permissions"]; + }; + }; + }; + /** Lists all self-hosted runners configured in a repository. You must authenticate using an access token with the `repo` scope to use this endpoint. */ + "actions/list-self-hosted-runners-for-repo": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + }; + query: { + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + }; + }; + responses: { + /** Response */ + 200: { + headers: {}; + content: { + "application/json": { + total_count: number; + runners: components["schemas"]["runner"][]; + }; + }; + }; + }; + }; + /** + * Lists binaries for the runner application that you can download and run. + * + * You must authenticate using an access token with the `repo` scope to use this endpoint. + */ + "actions/list-runner-applications-for-repo": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["runner-application"][]; + }; + }; + }; + }; + /** + * Returns a token that you can pass to the `config` script. The token expires after one hour. You must authenticate + * using an access token with the `repo` scope to use this endpoint. + * + * #### Example using registration token + * + * Configure your self-hosted runner, replacing `TOKEN` with the registration token provided by this endpoint. + * + * ``` + * ./config.sh --url https://github.com/octo-org/octo-repo-artifacts --token TOKEN + * ``` + */ + "actions/create-registration-token-for-repo": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + }; + }; + responses: { + /** Response */ + 201: { + content: { + "application/json": components["schemas"]["authentication-token"]; + }; + }; + }; + }; + /** + * Returns a token that you can pass to remove a self-hosted runner from a repository. The token expires after one hour. + * You must authenticate using an access token with the `repo` scope to use this endpoint. + * + * #### Example using remove token + * + * To remove your self-hosted runner from a repository, replace TOKEN with the remove token provided by this endpoint. + * + * ``` + * ./config.sh remove --token TOKEN + * ``` + */ + "actions/create-remove-token-for-repo": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + }; + }; + responses: { + /** Response */ + 201: { + content: { + "application/json": components["schemas"]["authentication-token"]; + }; + }; + }; + }; + /** + * Gets a specific self-hosted runner configured in a repository. + * + * You must authenticate using an access token with the `repo` scope to use this + * endpoint. + */ + "actions/get-self-hosted-runner-for-repo": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** Unique identifier of the self-hosted runner. */ + runner_id: components["parameters"]["runner-id"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["runner"]; + }; + }; + }; + }; + /** + * Forces the removal of a self-hosted runner from a repository. You can use this endpoint to completely remove the runner when the machine you were using no longer exists. + * + * You must authenticate using an access token with the `repo` + * scope to use this endpoint. + */ + "actions/delete-self-hosted-runner-from-repo": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** Unique identifier of the self-hosted runner. */ + runner_id: components["parameters"]["runner-id"]; + }; + }; + responses: { + /** Response */ + 204: never; + }; + }; + /** + * Lists all labels for a self-hosted runner configured in a repository. + * + * You must authenticate using an access token with the `repo` scope to use this + * endpoint. + */ + "actions/list-labels-for-self-hosted-runner-for-repo": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** Unique identifier of the self-hosted runner. */ + runner_id: components["parameters"]["runner-id"]; + }; + }; + responses: { + 200: components["responses"]["actions_runner_labels"]; + 404: components["responses"]["not_found"]; + }; + }; + /** + * Remove all previous custom labels and set the new custom labels for a specific + * self-hosted runner configured in a repository. + * + * You must authenticate using an access token with the `repo` scope to use this + * endpoint. + */ + "actions/set-custom-labels-for-self-hosted-runner-for-repo": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** Unique identifier of the self-hosted runner. */ + runner_id: components["parameters"]["runner-id"]; + }; + }; + responses: { + 200: components["responses"]["actions_runner_labels"]; + 404: components["responses"]["not_found"]; + 422: components["responses"]["validation_failed_simple"]; + }; + requestBody: { + content: { + "application/json": { + /** @description The names of the custom labels to set for the runner. You can pass an empty array to remove all custom labels. */ + labels: string[]; + }; + }; + }; + }; + /** + * Add custom labels to a self-hosted runner configured in a repository. + * + * You must authenticate using an access token with the `repo` scope to use this + * endpoint. + */ + "actions/add-custom-labels-to-self-hosted-runner-for-repo": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** Unique identifier of the self-hosted runner. */ + runner_id: components["parameters"]["runner-id"]; + }; + }; + responses: { + 200: components["responses"]["actions_runner_labels"]; + 404: components["responses"]["not_found"]; + 422: components["responses"]["validation_failed_simple"]; + }; + requestBody: { + content: { + "application/json": { + /** @description The names of the custom labels to add to the runner. */ + labels: string[]; + }; + }; + }; + }; + /** + * Remove all custom labels from a self-hosted runner configured in a + * repository. Returns the remaining read-only labels from the runner. + * + * You must authenticate using an access token with the `repo` scope to use this + * endpoint. + */ + "actions/remove-all-custom-labels-from-self-hosted-runner-for-repo": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** Unique identifier of the self-hosted runner. */ + runner_id: components["parameters"]["runner-id"]; + }; + }; + responses: { + 200: components["responses"]["actions_runner_labels_readonly"]; + 404: components["responses"]["not_found"]; + }; + }; + /** + * Remove a custom label from a self-hosted runner configured + * in a repository. Returns the remaining labels from the runner. + * + * This endpoint returns a `404 Not Found` status if the custom label is not + * present on the runner. + * + * You must authenticate using an access token with the `repo` scope to use this + * endpoint. + */ + "actions/remove-custom-label-from-self-hosted-runner-for-repo": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** Unique identifier of the self-hosted runner. */ + runner_id: components["parameters"]["runner-id"]; + /** The name of a self-hosted runner's custom label. */ + name: components["parameters"]["runner-label-name"]; + }; + }; + responses: { + 200: components["responses"]["actions_runner_labels"]; + 404: components["responses"]["not_found"]; + 422: components["responses"]["validation_failed_simple"]; + }; + }; + /** + * Lists all workflow runs for a repository. You can use parameters to narrow the list of results. For more information about using parameters, see [Parameters](https://docs.github.com/rest/overview/resources-in-the-rest-api#parameters). + * + * Anyone with read access to the repository can use this endpoint. If the repository is private you must use an access token with the `repo` scope. GitHub Apps must have the `actions:read` permission to use this endpoint. + */ + "actions/list-workflow-runs-for-repo": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + }; + query: { + /** Returns someone's workflow runs. Use the login for the user who created the `push` associated with the check suite or workflow run. */ + actor?: components["parameters"]["actor"]; + /** Returns workflow runs associated with a branch. Use the name of the branch of the `push`. */ + branch?: components["parameters"]["workflow-run-branch"]; + /** Returns workflow run triggered by the event you specify. For example, `push`, `pull_request` or `issue`. For more information, see "[Events that trigger workflows](https://docs.github.com/en/actions/automating-your-workflow-with-github-actions/events-that-trigger-workflows)." */ + event?: components["parameters"]["event"]; + /** Returns workflow runs with the check run `status` or `conclusion` that you specify. For example, a conclusion can be `success` or a status can be `in_progress`. Only GitHub can set a status of `waiting` or `requested`. For a list of the possible `status` and `conclusion` options, see "[Create a check run](https://docs.github.com/rest/reference/checks#create-a-check-run)." */ + status?: components["parameters"]["workflow-run-status"]; + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + /** Returns workflow runs created within the given date-time range. For more information on the syntax, see "[Understanding the search syntax](https://docs.github.com/search-github/getting-started-with-searching-on-github/understanding-the-search-syntax#query-for-dates)." */ + created?: components["parameters"]["created"]; + /** If `true` pull requests are omitted from the response (empty array). */ + exclude_pull_requests?: components["parameters"]["exclude-pull-requests"]; + /** Returns workflow runs with the `check_suite_id` that you specify. */ + check_suite_id?: components["parameters"]["workflow-run-check-suite-id"]; + }; + }; + responses: { + /** Response */ + 200: { + headers: {}; + content: { + "application/json": { + total_count: number; + workflow_runs: components["schemas"]["workflow-run"][]; + }; + }; + }; + }; + }; + /** Gets a specific workflow run. Anyone with read access to the repository can use this endpoint. If the repository is private you must use an access token with the `repo` scope. GitHub Apps must have the `actions:read` permission to use this endpoint. */ + "actions/get-workflow-run": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The unique identifier of the workflow run. */ + run_id: components["parameters"]["run-id"]; + }; + query: { + /** If `true` pull requests are omitted from the response (empty array). */ + exclude_pull_requests?: components["parameters"]["exclude-pull-requests"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["workflow-run"]; + }; + }; + }; + }; + /** + * Delete a specific workflow run. Anyone with write access to the repository can use this endpoint. If the repository is + * private you must use an access token with the `repo` scope. GitHub Apps must have the `actions:write` permission to use + * this endpoint. + */ + "actions/delete-workflow-run": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The unique identifier of the workflow run. */ + run_id: components["parameters"]["run-id"]; + }; + }; + responses: { + /** Response */ + 204: never; + }; + }; + /** Anyone with read access to the repository can use this endpoint. If the repository is private, you must use an access token with the `repo` scope. GitHub Apps must have the `actions:read` permission to use this endpoint. */ + "actions/get-reviews-for-run": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The unique identifier of the workflow run. */ + run_id: components["parameters"]["run-id"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["environment-approvals"][]; + }; + }; + }; + }; + /** + * Approves a workflow run for a pull request from a public fork of a first time contributor. For more information, see ["Approving workflow runs from public forks](https://docs.github.com/actions/managing-workflow-runs/approving-workflow-runs-from-public-forks)." + * + * You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the `actions:write` permission to use this endpoint. + */ + "actions/approve-workflow-run": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The unique identifier of the workflow run. */ + run_id: components["parameters"]["run-id"]; + }; + }; + responses: { + /** Response */ + 201: { + content: { + "application/json": components["schemas"]["empty-object"]; + }; + }; + 403: components["responses"]["forbidden"]; + 404: components["responses"]["not_found"]; + }; + }; + /** Lists artifacts for a workflow run. Anyone with read access to the repository can use this endpoint. If the repository is private you must use an access token with the `repo` scope. GitHub Apps must have the `actions:read` permission to use this endpoint. */ + "actions/list-workflow-run-artifacts": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The unique identifier of the workflow run. */ + run_id: components["parameters"]["run-id"]; + }; + query: { + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + }; + }; + responses: { + /** Response */ + 200: { + headers: {}; + content: { + "application/json": { + total_count: number; + artifacts: components["schemas"]["artifact"][]; + }; + }; + }; + }; + }; + /** + * Gets a specific workflow run attempt. Anyone with read access to the repository + * can use this endpoint. If the repository is private you must use an access token + * with the `repo` scope. GitHub Apps must have the `actions:read` permission to + * use this endpoint. + */ + "actions/get-workflow-run-attempt": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The unique identifier of the workflow run. */ + run_id: components["parameters"]["run-id"]; + /** The attempt number of the workflow run. */ + attempt_number: components["parameters"]["attempt-number"]; + }; + query: { + /** If `true` pull requests are omitted from the response (empty array). */ + exclude_pull_requests?: components["parameters"]["exclude-pull-requests"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["workflow-run"]; + }; + }; + }; + }; + /** Lists jobs for a specific workflow run attempt. Anyone with read access to the repository can use this endpoint. If the repository is private you must use an access token with the `repo` scope. GitHub Apps must have the `actions:read` permission to use this endpoint. You can use parameters to narrow the list of results. For more information about using parameters, see [Parameters](https://docs.github.com/rest/overview/resources-in-the-rest-api#parameters). */ + "actions/list-jobs-for-workflow-run-attempt": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The unique identifier of the workflow run. */ + run_id: components["parameters"]["run-id"]; + /** The attempt number of the workflow run. */ + attempt_number: components["parameters"]["attempt-number"]; + }; + query: { + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + }; + }; + responses: { + /** Response */ + 200: { + headers: {}; + content: { + "application/json": { + total_count: number; + jobs: components["schemas"]["job"][]; + }; + }; + }; + 404: components["responses"]["not_found"]; + }; + }; + /** + * Gets a redirect URL to download an archive of log files for a specific workflow run attempt. This link expires after + * 1 minute. Look for `Location:` in the response header to find the URL for the download. Anyone with read access to + * the repository can use this endpoint. If the repository is private you must use an access token with the `repo` scope. + * GitHub Apps must have the `actions:read` permission to use this endpoint. + */ + "actions/download-workflow-run-attempt-logs": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The unique identifier of the workflow run. */ + run_id: components["parameters"]["run-id"]; + /** The attempt number of the workflow run. */ + attempt_number: components["parameters"]["attempt-number"]; + }; + }; + responses: { + /** Response */ + 302: never; + }; + }; + /** Cancels a workflow run using its `id`. You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the `actions:write` permission to use this endpoint. */ + "actions/cancel-workflow-run": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The unique identifier of the workflow run. */ + run_id: components["parameters"]["run-id"]; + }; + }; + responses: { + /** Response */ + 202: { + content: { + "application/json": { [key: string]: unknown }; + }; + }; + 409: components["responses"]["conflict"]; + }; + }; + /** Lists jobs for a workflow run. Anyone with read access to the repository can use this endpoint. If the repository is private you must use an access token with the `repo` scope. GitHub Apps must have the `actions:read` permission to use this endpoint. You can use parameters to narrow the list of results. For more information about using parameters, see [Parameters](https://docs.github.com/rest/overview/resources-in-the-rest-api#parameters). */ + "actions/list-jobs-for-workflow-run": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The unique identifier of the workflow run. */ + run_id: components["parameters"]["run-id"]; + }; + query: { + /** Filters jobs by their `completed_at` timestamp. `latest` returns jobs from the most recent execution of the workflow run. `all` returns all jobs for a workflow run, including from old executions of the workflow run. */ + filter?: "latest" | "all"; + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + }; + }; + responses: { + /** Response */ + 200: { + headers: {}; + content: { + "application/json": { + total_count: number; + jobs: components["schemas"]["job"][]; + }; + }; + }; + }; + }; + /** + * Gets a redirect URL to download an archive of log files for a workflow run. This link expires after 1 minute. Look for + * `Location:` in the response header to find the URL for the download. Anyone with read access to the repository can use + * this endpoint. If the repository is private you must use an access token with the `repo` scope. GitHub Apps must have + * the `actions:read` permission to use this endpoint. + */ + "actions/download-workflow-run-logs": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The unique identifier of the workflow run. */ + run_id: components["parameters"]["run-id"]; + }; + }; + responses: { + /** Response */ + 302: never; + }; + }; + /** Deletes all logs for a workflow run. You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the `actions:write` permission to use this endpoint. */ + "actions/delete-workflow-run-logs": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The unique identifier of the workflow run. */ + run_id: components["parameters"]["run-id"]; + }; + }; + responses: { + /** Response */ + 204: never; + 403: components["responses"]["forbidden"]; + 500: components["responses"]["internal_error"]; + }; + }; + /** + * Get all deployment environments for a workflow run that are waiting for protection rules to pass. + * + * Anyone with read access to the repository can use this endpoint. If the repository is private, you must use an access token with the `repo` scope. GitHub Apps must have the `actions:read` permission to use this endpoint. + */ + "actions/get-pending-deployments-for-run": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The unique identifier of the workflow run. */ + run_id: components["parameters"]["run-id"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["pending-deployment"][]; + }; + }; + }; + }; + /** + * Approve or reject pending deployments that are waiting on approval by a required reviewer. + * + * Required reviewers with read access to the repository contents and deployments can use this endpoint. Required reviewers must authenticate using an access token with the `repo` scope to use this endpoint. + */ + "actions/review-pending-deployments-for-run": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The unique identifier of the workflow run. */ + run_id: components["parameters"]["run-id"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["deployment"][]; + }; + }; + }; + requestBody: { + content: { + "application/json": { + /** + * @description The list of environment ids to approve or reject + * @example [ + * 161171787, + * 161171795 + * ] + */ + environment_ids: number[]; + /** + * @description Whether to approve or reject deployment to the specified environments. + * @example approved + * @enum {string} + */ + state: "approved" | "rejected"; + /** + * @description A comment to accompany the deployment review + * @example Ship it! + */ + comment: string; + }; + }; + }; + }; + /** Re-runs your workflow run using its `id`. You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the `actions:write` permission to use this endpoint. */ + "actions/re-run-workflow": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The unique identifier of the workflow run. */ + run_id: components["parameters"]["run-id"]; + }; + }; + responses: { + /** Response */ + 201: { + content: { + "application/json": { [key: string]: unknown }; + }; + }; + }; + requestBody: { + content: { + "application/json": { + /** + * @description Whether to enable debug logging for the re-run. + * @default false + */ + enable_debug_logging?: boolean; + } | null; + }; + }; + }; + /** Re-run all of the failed jobs and their dependent jobs in a workflow run using the `id` of the workflow run. You must authenticate using an access token with the `repo` scope to use this endpoint. */ + "actions/re-run-workflow-failed-jobs": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The unique identifier of the workflow run. */ + run_id: components["parameters"]["run-id"]; + }; + }; + responses: { + /** Response */ + 201: { + content: { + "application/json": components["schemas"]["empty-object"]; + }; + }; + }; + requestBody: { + content: { + "application/json": { + /** + * @description Whether to enable debug logging for the re-run. + * @default false + */ + enable_debug_logging?: boolean; + } | null; + }; + }; + }; + /** + * Gets the number of billable minutes and total run time for a specific workflow run. Billable minutes only apply to workflows in private repositories that use GitHub-hosted runners. Usage is listed for each GitHub-hosted runner operating system in milliseconds. Any job re-runs are also included in the usage. The usage does not include the multiplier for macOS and Windows runners and is not rounded up to the nearest whole minute. For more information, see "[Managing billing for GitHub Actions](https://docs.github.com/github/setting-up-and-managing-billing-and-payments-on-github/managing-billing-for-github-actions)". + * + * Anyone with read access to the repository can use this endpoint. If the repository is private you must use an access token with the `repo` scope. GitHub Apps must have the `actions:read` permission to use this endpoint. + */ + "actions/get-workflow-run-usage": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The unique identifier of the workflow run. */ + run_id: components["parameters"]["run-id"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["workflow-run-usage"]; + }; + }; + }; + }; + /** Lists all secrets available in a repository without revealing their encrypted values. You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the `secrets` repository permission to use this endpoint. */ + "actions/list-repo-secrets": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + }; + query: { + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + }; + }; + responses: { + /** Response */ + 200: { + headers: {}; + content: { + "application/json": { + total_count: number; + secrets: components["schemas"]["actions-secret"][]; + }; + }; + }; + }; + }; + /** Gets your public key, which you need to encrypt secrets. You need to encrypt a secret before you can create or update secrets. Anyone with read access to the repository can use this endpoint. If the repository is private you must use an access token with the `repo` scope. GitHub Apps must have the `secrets` repository permission to use this endpoint. */ + "actions/get-repo-public-key": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["actions-public-key"]; + }; + }; + }; + }; + /** Gets a single repository secret without revealing its encrypted value. You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the `secrets` repository permission to use this endpoint. */ + "actions/get-repo-secret": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The name of the secret. */ + secret_name: components["parameters"]["secret-name"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["actions-secret"]; + }; + }; + }; + }; + /** + * Creates or updates a repository secret with an encrypted value. Encrypt your secret using + * [LibSodium](https://libsodium.gitbook.io/doc/bindings_for_other_languages). You must authenticate using an access + * token with the `repo` scope to use this endpoint. GitHub Apps must have the `secrets` repository permission to use + * this endpoint. + * + * #### Example encrypting a secret using Node.js + * + * Encrypt your secret using the [tweetsodium](https://github.com/github/tweetsodium) library. + * + * ``` + * const sodium = require('tweetsodium'); + * + * const key = "base64-encoded-public-key"; + * const value = "plain-text-secret"; + * + * // Convert the message and key to Uint8Array's (Buffer implements that interface) + * const messageBytes = Buffer.from(value); + * const keyBytes = Buffer.from(key, 'base64'); + * + * // Encrypt using LibSodium. + * const encryptedBytes = sodium.seal(messageBytes, keyBytes); + * + * // Base64 the encrypted secret + * const encrypted = Buffer.from(encryptedBytes).toString('base64'); + * + * console.log(encrypted); + * ``` + * + * + * #### Example encrypting a secret using Python + * + * Encrypt your secret using [pynacl](https://pynacl.readthedocs.io/en/latest/public/#nacl-public-sealedbox) with Python 3. + * + * ``` + * from base64 import b64encode + * from nacl import encoding, public + * + * def encrypt(public_key: str, secret_value: str) -> str: + * """Encrypt a Unicode string using the public key.""" + * public_key = public.PublicKey(public_key.encode("utf-8"), encoding.Base64Encoder()) + * sealed_box = public.SealedBox(public_key) + * encrypted = sealed_box.encrypt(secret_value.encode("utf-8")) + * return b64encode(encrypted).decode("utf-8") + * ``` + * + * #### Example encrypting a secret using C# + * + * Encrypt your secret using the [Sodium.Core](https://www.nuget.org/packages/Sodium.Core/) package. + * + * ``` + * var secretValue = System.Text.Encoding.UTF8.GetBytes("mySecret"); + * var publicKey = Convert.FromBase64String("2Sg8iYjAxxmI2LvUXpJjkYrMxURPc8r+dB7TJyvvcCU="); + * + * var sealedPublicKeyBox = Sodium.SealedPublicKeyBox.Create(secretValue, publicKey); + * + * Console.WriteLine(Convert.ToBase64String(sealedPublicKeyBox)); + * ``` + * + * #### Example encrypting a secret using Ruby + * + * Encrypt your secret using the [rbnacl](https://github.com/RubyCrypto/rbnacl) gem. + * + * ```ruby + * require "rbnacl" + * require "base64" + * + * key = Base64.decode64("+ZYvJDZMHUfBkJdyq5Zm9SKqeuBQ4sj+6sfjlH4CgG0=") + * public_key = RbNaCl::PublicKey.new(key) + * + * box = RbNaCl::Boxes::Sealed.from_public_key(public_key) + * encrypted_secret = box.encrypt("my_secret") + * + * # Print the base64 encoded secret + * puts Base64.strict_encode64(encrypted_secret) + * ``` + */ + "actions/create-or-update-repo-secret": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The name of the secret. */ + secret_name: components["parameters"]["secret-name"]; + }; + }; + responses: { + /** Response when creating a secret */ + 201: { + content: { + "application/json": { [key: string]: unknown }; + }; + }; + /** Response when updating a secret */ + 204: never; + }; + requestBody: { + content: { + "application/json": { + /** @description Value for your secret, encrypted with [LibSodium](https://libsodium.gitbook.io/doc/bindings_for_other_languages) using the public key retrieved from the [Get a repository public key](https://docs.github.com/rest/reference/actions#get-a-repository-public-key) endpoint. */ + encrypted_value?: string; + /** @description ID of the key you used to encrypt the secret. */ + key_id?: string; + }; + }; + }; + }; + /** Deletes a secret in a repository using the secret name. You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the `secrets` repository permission to use this endpoint. */ + "actions/delete-repo-secret": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The name of the secret. */ + secret_name: components["parameters"]["secret-name"]; + }; + }; + responses: { + /** Response */ + 204: never; + }; + }; + /** Lists the workflows in a repository. Anyone with read access to the repository can use this endpoint. If the repository is private you must use an access token with the `repo` scope. GitHub Apps must have the `actions:read` permission to use this endpoint. */ + "actions/list-repo-workflows": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + }; + query: { + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + }; + }; + responses: { + /** Response */ + 200: { + headers: {}; + content: { + "application/json": { + total_count: number; + workflows: components["schemas"]["workflow"][]; + }; + }; + }; + }; + }; + /** Gets a specific workflow. You can replace `workflow_id` with the workflow file name. For example, you could use `main.yaml`. Anyone with read access to the repository can use this endpoint. If the repository is private you must use an access token with the `repo` scope. GitHub Apps must have the `actions:read` permission to use this endpoint. */ + "actions/get-workflow": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The ID of the workflow. You can also pass the workflow file name as a string. */ + workflow_id: components["parameters"]["workflow-id"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["workflow"]; + }; + }; + }; + }; + /** + * Disables a workflow and sets the `state` of the workflow to `disabled_manually`. You can replace `workflow_id` with the workflow file name. For example, you could use `main.yaml`. + * + * You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the `actions:write` permission to use this endpoint. + */ + "actions/disable-workflow": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The ID of the workflow. You can also pass the workflow file name as a string. */ + workflow_id: components["parameters"]["workflow-id"]; + }; + }; + responses: { + /** Response */ + 204: never; + }; + }; + /** + * You can use this endpoint to manually trigger a GitHub Actions workflow run. You can replace `workflow_id` with the workflow file name. For example, you could use `main.yaml`. + * + * You must configure your GitHub Actions workflow to run when the [`workflow_dispatch` webhook](/developers/webhooks-and-events/webhook-events-and-payloads#workflow_dispatch) event occurs. The `inputs` are configured in the workflow file. For more information about how to configure the `workflow_dispatch` event in the workflow file, see "[Events that trigger workflows](/actions/reference/events-that-trigger-workflows#workflow_dispatch)." + * + * You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the `actions:write` permission to use this endpoint. For more information, see "[Creating a personal access token for the command line](https://docs.github.com/articles/creating-a-personal-access-token-for-the-command-line)." + */ + "actions/create-workflow-dispatch": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The ID of the workflow. You can also pass the workflow file name as a string. */ + workflow_id: components["parameters"]["workflow-id"]; + }; + }; + responses: { + /** Response */ + 204: never; + }; + requestBody: { + content: { + "application/json": { + /** @description The git reference for the workflow. The reference can be a branch or tag name. */ + ref: string; + /** @description Input keys and values configured in the workflow file. The maximum number of properties is 10. Any default properties configured in the workflow file will be used when `inputs` are omitted. */ + inputs?: { [key: string]: string }; + }; + }; + }; + }; + /** + * Enables a workflow and sets the `state` of the workflow to `active`. You can replace `workflow_id` with the workflow file name. For example, you could use `main.yaml`. + * + * You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the `actions:write` permission to use this endpoint. + */ + "actions/enable-workflow": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The ID of the workflow. You can also pass the workflow file name as a string. */ + workflow_id: components["parameters"]["workflow-id"]; + }; + }; + responses: { + /** Response */ + 204: never; + }; + }; + /** + * List all workflow runs for a workflow. You can replace `workflow_id` with the workflow file name. For example, you could use `main.yaml`. You can use parameters to narrow the list of results. For more information about using parameters, see [Parameters](https://docs.github.com/rest/overview/resources-in-the-rest-api#parameters). + * + * Anyone with read access to the repository can use this endpoint. If the repository is private you must use an access token with the `repo` scope. + */ + "actions/list-workflow-runs": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The ID of the workflow. You can also pass the workflow file name as a string. */ + workflow_id: components["parameters"]["workflow-id"]; + }; + query: { + /** Returns someone's workflow runs. Use the login for the user who created the `push` associated with the check suite or workflow run. */ + actor?: components["parameters"]["actor"]; + /** Returns workflow runs associated with a branch. Use the name of the branch of the `push`. */ + branch?: components["parameters"]["workflow-run-branch"]; + /** Returns workflow run triggered by the event you specify. For example, `push`, `pull_request` or `issue`. For more information, see "[Events that trigger workflows](https://docs.github.com/en/actions/automating-your-workflow-with-github-actions/events-that-trigger-workflows)." */ + event?: components["parameters"]["event"]; + /** Returns workflow runs with the check run `status` or `conclusion` that you specify. For example, a conclusion can be `success` or a status can be `in_progress`. Only GitHub can set a status of `waiting` or `requested`. For a list of the possible `status` and `conclusion` options, see "[Create a check run](https://docs.github.com/rest/reference/checks#create-a-check-run)." */ + status?: components["parameters"]["workflow-run-status"]; + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + /** Returns workflow runs created within the given date-time range. For more information on the syntax, see "[Understanding the search syntax](https://docs.github.com/search-github/getting-started-with-searching-on-github/understanding-the-search-syntax#query-for-dates)." */ + created?: components["parameters"]["created"]; + /** If `true` pull requests are omitted from the response (empty array). */ + exclude_pull_requests?: components["parameters"]["exclude-pull-requests"]; + /** Returns workflow runs with the `check_suite_id` that you specify. */ + check_suite_id?: components["parameters"]["workflow-run-check-suite-id"]; + }; + }; + responses: { + /** Response */ + 200: { + headers: {}; + content: { + "application/json": { + total_count: number; + workflow_runs: components["schemas"]["workflow-run"][]; + }; + }; + }; + }; + }; + /** + * Gets the number of billable minutes used by a specific workflow during the current billing cycle. Billable minutes only apply to workflows in private repositories that use GitHub-hosted runners. Usage is listed for each GitHub-hosted runner operating system in milliseconds. Any job re-runs are also included in the usage. The usage does not include the multiplier for macOS and Windows runners and is not rounded up to the nearest whole minute. For more information, see "[Managing billing for GitHub Actions](https://docs.github.com/github/setting-up-and-managing-billing-and-payments-on-github/managing-billing-for-github-actions)". + * + * You can replace `workflow_id` with the workflow file name. For example, you could use `main.yaml`. Anyone with read access to the repository can use this endpoint. If the repository is private you must use an access token with the `repo` scope. GitHub Apps must have the `actions:read` permission to use this endpoint. + */ + "actions/get-workflow-usage": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The ID of the workflow. You can also pass the workflow file name as a string. */ + workflow_id: components["parameters"]["workflow-id"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["workflow-usage"]; + }; + }; + }; + }; + /** Lists the [available assignees](https://docs.github.com/articles/assigning-issues-and-pull-requests-to-other-github-users/) for issues in a repository. */ + "issues/list-assignees": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + }; + query: { + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + }; + }; + responses: { + /** Response */ + 200: { + headers: {}; + content: { + "application/json": components["schemas"]["simple-user"][]; + }; + }; + 404: components["responses"]["not_found"]; + }; + }; + /** + * Checks if a user has permission to be assigned to an issue in this repository. + * + * If the `assignee` can be assigned to issues in the repository, a `204` header with no content is returned. + * + * Otherwise a `404` status code is returned. + */ + "issues/check-user-can-be-assigned": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + assignee: string; + }; + }; + responses: { + /** If the `assignee` can be assigned to issues in the repository, a `204` header with no content is returned. */ + 204: never; + /** Otherwise a `404` status code is returned. */ + 404: { + content: { + "application/json": components["schemas"]["basic-error"]; + }; + }; + }; + }; + /** + * This returns a list of autolinks configured for the given repository. + * + * Information about autolinks are only available to repository administrators. + */ + "repos/list-autolinks": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + }; + query: { + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["autolink"][]; + }; + }; + }; + }; + /** Users with admin access to the repository can create an autolink. */ + "repos/create-autolink": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + }; + }; + responses: { + /** response */ + 201: { + headers: { + Location?: string; + }; + content: { + "application/json": components["schemas"]["autolink"]; + }; + }; + 422: components["responses"]["validation_failed"]; + }; + requestBody: { + content: { + "application/json": { + /** @description The prefix appended by alphanumeric characters will generate a link any time it is found in an issue, pull request, or commit. */ + key_prefix: string; + /** @description The URL must contain `` for the reference number. `` matches alphanumeric characters `A-Z` (case insensitive), `0-9`, and `-`. */ + url_template: string; + }; + }; + }; + }; + /** + * This returns a single autolink reference by ID that was configured for the given repository. + * + * Information about autolinks are only available to repository administrators. + */ + "repos/get-autolink": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The unique identifier of the autolink. */ + autolink_id: components["parameters"]["autolink-id"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["autolink"]; + }; + }; + 404: components["responses"]["not_found"]; + }; + }; + /** + * This deletes a single autolink reference by ID that was configured for the given repository. + * + * Information about autolinks are only available to repository administrators. + */ + "repos/delete-autolink": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The unique identifier of the autolink. */ + autolink_id: components["parameters"]["autolink-id"]; + }; + }; + responses: { + /** Response */ + 204: never; + 404: components["responses"]["not_found"]; + }; + }; + /** Enables automated security fixes for a repository. The authenticated user must have admin access to the repository. For more information, see "[Configuring automated security fixes](https://docs.github.com/en/articles/configuring-automated-security-fixes)". */ + "repos/enable-automated-security-fixes": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + }; + }; + responses: { + /** Response */ + 204: never; + }; + }; + /** Disables automated security fixes for a repository. The authenticated user must have admin access to the repository. For more information, see "[Configuring automated security fixes](https://docs.github.com/en/articles/configuring-automated-security-fixes)". */ + "repos/disable-automated-security-fixes": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + }; + }; + responses: { + /** Response */ + 204: never; + }; + }; + "repos/list-branches": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + }; + query: { + /** Setting to `true` returns only protected branches. When set to `false`, only unprotected branches are returned. Omitting this parameter returns all branches. */ + protected?: boolean; + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + }; + }; + responses: { + /** Response */ + 200: { + headers: {}; + content: { + "application/json": components["schemas"]["short-branch"][]; + }; + }; + 404: components["responses"]["not_found"]; + }; + }; + "repos/get-branch": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The name of the branch. */ + branch: components["parameters"]["branch"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["branch-with-protection"]; + }; + }; + 301: components["responses"]["moved_permanently"]; + 404: components["responses"]["not_found"]; + }; + }; + /** Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. */ + "repos/get-branch-protection": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The name of the branch. */ + branch: components["parameters"]["branch"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["branch-protection"]; + }; + }; + 404: components["responses"]["not_found"]; + }; + }; + /** + * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. + * + * Protecting a branch requires admin or owner permissions to the repository. + * + * **Note**: Passing new arrays of `users` and `teams` replaces their previous values. + * + * **Note**: The list of users, apps, and teams in total is limited to 100 items. + */ + "repos/update-branch-protection": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The name of the branch. */ + branch: components["parameters"]["branch"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["protected-branch"]; + }; + }; + 403: components["responses"]["forbidden"]; + 404: components["responses"]["not_found"]; + 422: components["responses"]["validation_failed_simple"]; + }; + requestBody: { + content: { + "application/json": { + /** @description Require status checks to pass before merging. Set to `null` to disable. */ + required_status_checks: { + /** @description Require branches to be up to date before merging. */ + strict: boolean; + /** + * @deprecated + * @description **Deprecated**: The list of status checks to require in order to merge into this branch. If any of these checks have recently been set by a particular GitHub App, they will be required to come from that app in future for the branch to merge. Use `checks` instead of `contexts` for more fine-grained control. + */ + contexts: string[]; + /** @description The list of status checks to require in order to merge into this branch. */ + checks?: { + /** @description The name of the required check */ + context: string; + /** @description The ID of the GitHub App that must provide this check. Omit this field to automatically select the GitHub App that has recently provided this check, or any app if it was not set by a GitHub App. Pass -1 to explicitly allow any app to set the status. */ + app_id?: number; + }[]; + } | null; + /** @description Enforce all configured restrictions for administrators. Set to `true` to enforce required status checks for repository administrators. Set to `null` to disable. */ + enforce_admins: boolean | null; + /** @description Require at least one approving review on a pull request, before merging. Set to `null` to disable. */ + required_pull_request_reviews: { + /** @description Specify which users, teams, and apps can dismiss pull request reviews. Pass an empty `dismissal_restrictions` object to disable. User and team `dismissal_restrictions` are only available for organization-owned repositories. Omit this parameter for personal repositories. */ + dismissal_restrictions?: { + /** @description The list of user `login`s with dismissal access */ + users?: string[]; + /** @description The list of team `slug`s with dismissal access */ + teams?: string[]; + /** @description The list of app `slug`s with dismissal access */ + apps?: string[]; + }; + /** @description Set to `true` if you want to automatically dismiss approving reviews when someone pushes a new commit. */ + dismiss_stale_reviews?: boolean; + /** @description Blocks merging pull requests until [code owners](https://docs.github.com/articles/about-code-owners/) review them. */ + require_code_owner_reviews?: boolean; + /** @description Specify the number of reviewers required to approve pull requests. Use a number between 1 and 6 or 0 to not require reviewers. */ + required_approving_review_count?: number; + /** @description Allow specific users, teams, or apps to bypass pull request requirements. */ + bypass_pull_request_allowances?: { + /** @description The list of user `login`s allowed to bypass pull request requirements. */ + users?: string[]; + /** @description The list of team `slug`s allowed to bypass pull request requirements. */ + teams?: string[]; + /** @description The list of app `slug`s allowed to bypass pull request requirements. */ + apps?: string[]; + }; + } | null; + /** @description Restrict who can push to the protected branch. User, app, and team `restrictions` are only available for organization-owned repositories. Set to `null` to disable. */ + restrictions: { + /** @description The list of user `login`s with push access */ + users: string[]; + /** @description The list of team `slug`s with push access */ + teams: string[]; + /** @description The list of app `slug`s with push access */ + apps?: string[]; + } | null; + /** @description Enforces a linear commit Git history, which prevents anyone from pushing merge commits to a branch. Set to `true` to enforce a linear commit history. Set to `false` to disable a linear commit Git history. Your repository must allow squash merging or rebase merging before you can enable a linear commit history. Default: `false`. For more information, see "[Requiring a linear commit history](https://docs.github.com/github/administering-a-repository/requiring-a-linear-commit-history)" in the GitHub Help documentation. */ + required_linear_history?: boolean; + /** @description Permits force pushes to the protected branch by anyone with write access to the repository. Set to `true` to allow force pushes. Set to `false` or `null` to block force pushes. Default: `false`. For more information, see "[Enabling force pushes to a protected branch](https://docs.github.com/en/github/administering-a-repository/enabling-force-pushes-to-a-protected-branch)" in the GitHub Help documentation." */ + allow_force_pushes?: boolean | null; + /** @description Allows deletion of the protected branch by anyone with write access to the repository. Set to `false` to prevent deletion of the protected branch. Default: `false`. For more information, see "[Enabling force pushes to a protected branch](https://docs.github.com/en/github/administering-a-repository/enabling-force-pushes-to-a-protected-branch)" in the GitHub Help documentation. */ + allow_deletions?: boolean; + /** @description If set to `true`, the `restrictions` branch protection settings which limits who can push will also block pushes which create new branches, unless the push is initiated by a user, team, or app which has the ability to push. Set to `true` to restrict new branch creation. Default: `false`. */ + block_creations?: boolean; + /** @description Requires all conversations on code to be resolved before a pull request can be merged into a branch that matches this rule. Set to `false` to disable. Default: `false`. */ + required_conversation_resolution?: boolean; + }; + }; + }; + }; + /** Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. */ + "repos/delete-branch-protection": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The name of the branch. */ + branch: components["parameters"]["branch"]; + }; + }; + responses: { + /** Response */ + 204: never; + 403: components["responses"]["forbidden"]; + }; + }; + /** Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. */ + "repos/get-admin-branch-protection": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The name of the branch. */ + branch: components["parameters"]["branch"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["protected-branch-admin-enforced"]; + }; + }; + }; + }; + /** + * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. + * + * Adding admin enforcement requires admin or owner permissions to the repository and branch protection to be enabled. + */ + "repos/set-admin-branch-protection": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The name of the branch. */ + branch: components["parameters"]["branch"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["protected-branch-admin-enforced"]; + }; + }; + }; + }; + /** + * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. + * + * Removing admin enforcement requires admin or owner permissions to the repository and branch protection to be enabled. + */ + "repos/delete-admin-branch-protection": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The name of the branch. */ + branch: components["parameters"]["branch"]; + }; + }; + responses: { + /** Response */ + 204: never; + 404: components["responses"]["not_found"]; + }; + }; + /** Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. */ + "repos/get-pull-request-review-protection": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The name of the branch. */ + branch: components["parameters"]["branch"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["protected-branch-pull-request-review"]; + }; + }; + }; + }; + /** Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. */ + "repos/delete-pull-request-review-protection": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The name of the branch. */ + branch: components["parameters"]["branch"]; + }; + }; + responses: { + /** Response */ + 204: never; + 404: components["responses"]["not_found"]; + }; + }; + /** + * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. + * + * Updating pull request review enforcement requires admin or owner permissions to the repository and branch protection to be enabled. + * + * **Note**: Passing new arrays of `users` and `teams` replaces their previous values. + */ + "repos/update-pull-request-review-protection": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The name of the branch. */ + branch: components["parameters"]["branch"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["protected-branch-pull-request-review"]; + }; + }; + 422: components["responses"]["validation_failed"]; + }; + requestBody: { + content: { + "application/json": { + /** @description Specify which users, teams, and apps can dismiss pull request reviews. Pass an empty `dismissal_restrictions` object to disable. User and team `dismissal_restrictions` are only available for organization-owned repositories. Omit this parameter for personal repositories. */ + dismissal_restrictions?: { + /** @description The list of user `login`s with dismissal access */ + users?: string[]; + /** @description The list of team `slug`s with dismissal access */ + teams?: string[]; + /** @description The list of app `slug`s with dismissal access */ + apps?: string[]; + }; + /** @description Set to `true` if you want to automatically dismiss approving reviews when someone pushes a new commit. */ + dismiss_stale_reviews?: boolean; + /** @description Blocks merging pull requests until [code owners](https://docs.github.com/articles/about-code-owners/) have reviewed. */ + require_code_owner_reviews?: boolean; + /** @description Specifies the number of reviewers required to approve pull requests. Use a number between 1 and 6 or 0 to not require reviewers. */ + required_approving_review_count?: number; + /** @description Allow specific users, teams, or apps to bypass pull request requirements. */ + bypass_pull_request_allowances?: { + /** @description The list of user `login`s allowed to bypass pull request requirements. */ + users?: string[]; + /** @description The list of team `slug`s allowed to bypass pull request requirements. */ + teams?: string[]; + /** @description The list of app `slug`s allowed to bypass pull request requirements. */ + apps?: string[]; + }; + }; + }; + }; + }; + /** + * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. + * + * When authenticated with admin or owner permissions to the repository, you can use this endpoint to check whether a branch requires signed commits. An enabled status of `true` indicates you must sign commits on this branch. For more information, see [Signing commits with GPG](https://docs.github.com/articles/signing-commits-with-gpg) in GitHub Help. + * + * **Note**: You must enable branch protection to require signed commits. + */ + "repos/get-commit-signature-protection": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The name of the branch. */ + branch: components["parameters"]["branch"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["protected-branch-admin-enforced"]; + }; + }; + 404: components["responses"]["not_found"]; + }; + }; + /** + * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. + * + * When authenticated with admin or owner permissions to the repository, you can use this endpoint to require signed commits on a branch. You must enable branch protection to require signed commits. + */ + "repos/create-commit-signature-protection": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The name of the branch. */ + branch: components["parameters"]["branch"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["protected-branch-admin-enforced"]; + }; + }; + 404: components["responses"]["not_found"]; + }; + }; + /** + * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. + * + * When authenticated with admin or owner permissions to the repository, you can use this endpoint to disable required signed commits on a branch. You must enable branch protection to require signed commits. + */ + "repos/delete-commit-signature-protection": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The name of the branch. */ + branch: components["parameters"]["branch"]; + }; + }; + responses: { + /** Response */ + 204: never; + 404: components["responses"]["not_found"]; + }; + }; + /** Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. */ + "repos/get-status-checks-protection": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The name of the branch. */ + branch: components["parameters"]["branch"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["status-check-policy"]; + }; + }; + 404: components["responses"]["not_found"]; + }; + }; + /** Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. */ + "repos/remove-status-check-protection": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The name of the branch. */ + branch: components["parameters"]["branch"]; + }; + }; + responses: { + /** Response */ + 204: never; + }; + }; + /** + * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. + * + * Updating required status checks requires admin or owner permissions to the repository and branch protection to be enabled. + */ + "repos/update-status-check-protection": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The name of the branch. */ + branch: components["parameters"]["branch"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["status-check-policy"]; + }; + }; + 404: components["responses"]["not_found"]; + 422: components["responses"]["validation_failed"]; + }; + requestBody: { + content: { + "application/json": { + /** @description Require branches to be up to date before merging. */ + strict?: boolean; + /** + * @deprecated + * @description **Deprecated**: The list of status checks to require in order to merge into this branch. If any of these checks have recently been set by a particular GitHub App, they will be required to come from that app in future for the branch to merge. Use `checks` instead of `contexts` for more fine-grained control. + */ + contexts?: string[]; + /** @description The list of status checks to require in order to merge into this branch. */ + checks?: { + /** @description The name of the required check */ + context: string; + /** @description The ID of the GitHub App that must provide this check. Omit this field to automatically select the GitHub App that has recently provided this check, or any app if it was not set by a GitHub App. Pass -1 to explicitly allow any app to set the status. */ + app_id?: number; + }[]; + }; + }; + }; + }; + /** Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. */ + "repos/get-all-status-check-contexts": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The name of the branch. */ + branch: components["parameters"]["branch"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": string[]; + }; + }; + 404: components["responses"]["not_found"]; + }; + }; + /** Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. */ + "repos/set-status-check-contexts": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The name of the branch. */ + branch: components["parameters"]["branch"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": string[]; + }; + }; + 404: components["responses"]["not_found"]; + 422: components["responses"]["validation_failed"]; + }; + requestBody: { + content: { + "application/json": { + /** @description contexts parameter */ + contexts: string[]; + }; + }; + }; + }; + /** Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. */ + "repos/add-status-check-contexts": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The name of the branch. */ + branch: components["parameters"]["branch"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": string[]; + }; + }; + 403: components["responses"]["forbidden"]; + 404: components["responses"]["not_found"]; + 422: components["responses"]["validation_failed"]; + }; + requestBody: { + content: { + "application/json": { + /** @description contexts parameter */ + contexts: string[]; + }; + }; + }; + }; + /** Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. */ + "repos/remove-status-check-contexts": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The name of the branch. */ + branch: components["parameters"]["branch"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": string[]; + }; + }; + 404: components["responses"]["not_found"]; + 422: components["responses"]["validation_failed"]; + }; + requestBody: { + content: { + "application/json": { + /** @description contexts parameter */ + contexts: string[]; + }; + }; + }; + }; + /** + * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. + * + * Lists who has access to this protected branch. + * + * **Note**: Users, apps, and teams `restrictions` are only available for organization-owned repositories. + */ + "repos/get-access-restrictions": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The name of the branch. */ + branch: components["parameters"]["branch"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["branch-restriction-policy"]; + }; + }; + 404: components["responses"]["not_found"]; + }; + }; + /** + * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. + * + * Disables the ability to restrict who can push to this branch. + */ + "repos/delete-access-restrictions": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The name of the branch. */ + branch: components["parameters"]["branch"]; + }; + }; + responses: { + /** Response */ + 204: never; + }; + }; + /** + * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. + * + * Lists the GitHub Apps that have push access to this branch. Only installed GitHub Apps with `write` access to the `contents` permission can be added as authorized actors on a protected branch. + */ + "repos/get-apps-with-access-to-protected-branch": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The name of the branch. */ + branch: components["parameters"]["branch"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["integration"][]; + }; + }; + 404: components["responses"]["not_found"]; + }; + }; + /** + * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. + * + * Replaces the list of apps that have push access to this branch. This removes all apps that previously had push access and grants push access to the new list of apps. Only installed GitHub Apps with `write` access to the `contents` permission can be added as authorized actors on a protected branch. + * + * | Type | Description | + * | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | + * | `array` | The GitHub Apps that have push access to this branch. Use the app's `slug`. **Note**: The list of users, apps, and teams in total is limited to 100 items. | + */ + "repos/set-app-access-restrictions": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The name of the branch. */ + branch: components["parameters"]["branch"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["integration"][]; + }; + }; + 422: components["responses"]["validation_failed"]; + }; + requestBody: { + content: { + "application/json": { + /** @description apps parameter */ + apps: string[]; + }; + }; + }; + }; + /** + * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. + * + * Grants the specified apps push access for this branch. Only installed GitHub Apps with `write` access to the `contents` permission can be added as authorized actors on a protected branch. + * + * | Type | Description | + * | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | + * | `array` | The GitHub Apps that have push access to this branch. Use the app's `slug`. **Note**: The list of users, apps, and teams in total is limited to 100 items. | + */ + "repos/add-app-access-restrictions": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The name of the branch. */ + branch: components["parameters"]["branch"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["integration"][]; + }; + }; + 422: components["responses"]["validation_failed"]; + }; + requestBody: { + content: { + "application/json": { + /** @description apps parameter */ + apps: string[]; + }; + }; + }; + }; + /** + * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. + * + * Removes the ability of an app to push to this branch. Only installed GitHub Apps with `write` access to the `contents` permission can be added as authorized actors on a protected branch. + * + * | Type | Description | + * | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | + * | `array` | The GitHub Apps that have push access to this branch. Use the app's `slug`. **Note**: The list of users, apps, and teams in total is limited to 100 items. | + */ + "repos/remove-app-access-restrictions": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The name of the branch. */ + branch: components["parameters"]["branch"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["integration"][]; + }; + }; + 422: components["responses"]["validation_failed"]; + }; + requestBody: { + content: { + "application/json": { + /** @description apps parameter */ + apps: string[]; + }; + }; + }; + }; + /** + * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. + * + * Lists the teams who have push access to this branch. The list includes child teams. + */ + "repos/get-teams-with-access-to-protected-branch": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The name of the branch. */ + branch: components["parameters"]["branch"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["team"][]; + }; + }; + 404: components["responses"]["not_found"]; + }; + }; + /** + * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. + * + * Replaces the list of teams that have push access to this branch. This removes all teams that previously had push access and grants push access to the new list of teams. Team restrictions include child teams. + * + * | Type | Description | + * | ------- | ------------------------------------------------------------------------------------------------------------------------------------------ | + * | `array` | The teams that can have push access. Use the team's `slug`. **Note**: The list of users, apps, and teams in total is limited to 100 items. | + */ + "repos/set-team-access-restrictions": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The name of the branch. */ + branch: components["parameters"]["branch"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["team"][]; + }; + }; + 422: components["responses"]["validation_failed"]; + }; + requestBody: { + content: { + "application/json": { + /** @description teams parameter */ + teams: string[]; + }; + }; + }; + }; + /** + * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. + * + * Grants the specified teams push access for this branch. You can also give push access to child teams. + * + * | Type | Description | + * | ------- | ------------------------------------------------------------------------------------------------------------------------------------------ | + * | `array` | The teams that can have push access. Use the team's `slug`. **Note**: The list of users, apps, and teams in total is limited to 100 items. | + */ + "repos/add-team-access-restrictions": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The name of the branch. */ + branch: components["parameters"]["branch"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["team"][]; + }; + }; + 422: components["responses"]["validation_failed"]; + }; + requestBody: { + content: { + "application/json": { + /** @description teams parameter */ + teams: string[]; + }; + }; + }; + }; + /** + * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. + * + * Removes the ability of a team to push to this branch. You can also remove push access for child teams. + * + * | Type | Description | + * | ------- | --------------------------------------------------------------------------------------------------------------------------------------------------- | + * | `array` | Teams that should no longer have push access. Use the team's `slug`. **Note**: The list of users, apps, and teams in total is limited to 100 items. | + */ + "repos/remove-team-access-restrictions": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The name of the branch. */ + branch: components["parameters"]["branch"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["team"][]; + }; + }; + 422: components["responses"]["validation_failed"]; + }; + requestBody: { + content: { + "application/json": { + /** @description teams parameter */ + teams: string[]; + }; + }; + }; + }; + /** + * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. + * + * Lists the people who have push access to this branch. + */ + "repos/get-users-with-access-to-protected-branch": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The name of the branch. */ + branch: components["parameters"]["branch"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["simple-user"][]; + }; + }; + 404: components["responses"]["not_found"]; + }; + }; + /** + * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. + * + * Replaces the list of people that have push access to this branch. This removes all people that previously had push access and grants push access to the new list of people. + * + * | Type | Description | + * | ------- | ----------------------------------------------------------------------------------------------------------------------------- | + * | `array` | Usernames for people who can have push access. **Note**: The list of users, apps, and teams in total is limited to 100 items. | + */ + "repos/set-user-access-restrictions": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The name of the branch. */ + branch: components["parameters"]["branch"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["simple-user"][]; + }; + }; + 422: components["responses"]["validation_failed"]; + }; + requestBody: { + content: { + "application/json": { + /** @description users parameter */ + users: string[]; + }; + }; + }; + }; + /** + * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. + * + * Grants the specified people push access for this branch. + * + * | Type | Description | + * | ------- | ----------------------------------------------------------------------------------------------------------------------------- | + * | `array` | Usernames for people who can have push access. **Note**: The list of users, apps, and teams in total is limited to 100 items. | + */ + "repos/add-user-access-restrictions": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The name of the branch. */ + branch: components["parameters"]["branch"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["simple-user"][]; + }; + }; + 422: components["responses"]["validation_failed"]; + }; + requestBody: { + content: { + "application/json": { + /** @description users parameter */ + users: string[]; + }; + }; + }; + }; + /** + * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. + * + * Removes the ability of a user to push to this branch. + * + * | Type | Description | + * | ------- | --------------------------------------------------------------------------------------------------------------------------------------------- | + * | `array` | Usernames of the people who should no longer have push access. **Note**: The list of users, apps, and teams in total is limited to 100 items. | + */ + "repos/remove-user-access-restrictions": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The name of the branch. */ + branch: components["parameters"]["branch"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["simple-user"][]; + }; + }; + 422: components["responses"]["validation_failed"]; + }; + requestBody: { + content: { + "application/json": { + /** @description users parameter */ + users: string[]; + }; + }; + }; + }; + /** + * Renames a branch in a repository. + * + * **Note:** Although the API responds immediately, the branch rename process might take some extra time to complete in the background. You won't be able to push to the old branch name while the rename process is in progress. For more information, see "[Renaming a branch](https://docs.github.com/github/administering-a-repository/renaming-a-branch)". + * + * The permissions required to use this endpoint depends on whether you are renaming the default branch. + * + * To rename a non-default branch: + * + * * Users must have push access. + * * GitHub Apps must have the `contents:write` repository permission. + * + * To rename the default branch: + * + * * Users must have admin or owner permissions. + * * GitHub Apps must have the `administration:write` repository permission. + */ + "repos/rename-branch": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The name of the branch. */ + branch: components["parameters"]["branch"]; + }; + }; + responses: { + /** Response */ + 201: { + content: { + "application/json": components["schemas"]["branch-with-protection"]; + }; + }; + 403: components["responses"]["forbidden"]; + 404: components["responses"]["not_found"]; + 422: components["responses"]["validation_failed"]; + }; + requestBody: { + content: { + "application/json": { + /** @description The new name of the branch. */ + new_name: string; + }; + }; + }; + }; + /** + * **Note:** The Checks API only looks for pushes in the repository where the check suite or check run were created. Pushes to a branch in a forked repository are not detected and return an empty `pull_requests` array. + * + * Creates a new check run for a specific commit in a repository. Your GitHub App must have the `checks:write` permission to create check runs. + * + * In a check suite, GitHub limits the number of check runs with the same name to 1000. Once these check runs exceed 1000, GitHub will start to automatically delete older check runs. + */ + "checks/create": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + }; + }; + responses: { + /** Response */ + 201: { + content: { + "application/json": components["schemas"]["check-run"]; + }; + }; + }; + requestBody: { + content: { + "application/json": ( + | ({ + /** @enum {undefined} */ + status: "completed"; + } & { + conclusion: unknown; + } & { [key: string]: unknown }) + | ({ + /** @enum {undefined} */ + status?: "queued" | "in_progress"; + } & { [key: string]: unknown }) + ) & { + /** @description The name of the check. For example, "code-coverage". */ + name: string; + /** @description The SHA of the commit. */ + head_sha: string; + /** @description The URL of the integrator's site that has the full details of the check. If the integrator does not provide this, then the homepage of the GitHub app is used. */ + details_url?: string; + /** @description A reference for the run on the integrator's system. */ + external_id?: string; + /** + * @description The current status. + * @default queued + * @enum {string} + */ + status?: "queued" | "in_progress" | "completed"; + /** + * Format: date-time + * @description The time that the check run began. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`. + */ + started_at?: string; + /** + * @description **Required if you provide `completed_at` or a `status` of `completed`**. The final conclusion of the check. + * **Note:** Providing `conclusion` will automatically set the `status` parameter to `completed`. You cannot change a check run conclusion to `stale`, only GitHub can set this. + * @enum {string} + */ + conclusion?: + | "action_required" + | "cancelled" + | "failure" + | "neutral" + | "success" + | "skipped" + | "stale" + | "timed_out"; + /** + * Format: date-time + * @description The time the check completed. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`. + */ + completed_at?: string; + /** @description Check runs can accept a variety of data in the `output` object, including a `title` and `summary` and can optionally provide descriptive details about the run. See the [`output` object](https://docs.github.com/rest/reference/checks#output-object) description. */ + output?: { + /** @description The title of the check run. */ + title: string; + /** @description The summary of the check run. This parameter supports Markdown. */ + summary: string; + /** @description The details of the check run. This parameter supports Markdown. */ + text?: string; + /** @description Adds information from your analysis to specific lines of code. Annotations are visible on GitHub in the **Checks** and **Files changed** tab of the pull request. The Checks API limits the number of annotations to a maximum of 50 per API request. To create more than 50 annotations, you have to make multiple requests to the [Update a check run](https://docs.github.com/rest/reference/checks#update-a-check-run) endpoint. Each time you update the check run, annotations are appended to the list of annotations that already exist for the check run. For details about how you can view annotations on GitHub, see "[About status checks](https://docs.github.com/articles/about-status-checks#checks)". See the [`annotations` object](https://docs.github.com/rest/reference/checks#annotations-object) description for details about how to use this parameter. */ + annotations?: { + /** @description The path of the file to add an annotation to. For example, `assets/css/main.css`. */ + path: string; + /** @description The start line of the annotation. */ + start_line: number; + /** @description The end line of the annotation. */ + end_line: number; + /** @description The start column of the annotation. Annotations only support `start_column` and `end_column` on the same line. Omit this parameter if `start_line` and `end_line` have different values. */ + start_column?: number; + /** @description The end column of the annotation. Annotations only support `start_column` and `end_column` on the same line. Omit this parameter if `start_line` and `end_line` have different values. */ + end_column?: number; + /** + * @description The level of the annotation. + * @enum {string} + */ + annotation_level: "notice" | "warning" | "failure"; + /** @description A short description of the feedback for these lines of code. The maximum size is 64 KB. */ + message: string; + /** @description The title that represents the annotation. The maximum size is 255 characters. */ + title?: string; + /** @description Details about this annotation. The maximum size is 64 KB. */ + raw_details?: string; + }[]; + /** @description Adds images to the output displayed in the GitHub pull request UI. See the [`images` object](https://docs.github.com/rest/reference/checks#images-object) description for details. */ + images?: { + /** @description The alternative text for the image. */ + alt: string; + /** @description The full URL of the image. */ + image_url: string; + /** @description A short image description. */ + caption?: string; + }[]; + }; + /** @description Displays a button on GitHub that can be clicked to alert your app to do additional tasks. For example, a code linting app can display a button that automatically fixes detected errors. The button created in this object is displayed after the check run completes. When a user clicks the button, GitHub sends the [`check_run.requested_action` webhook](https://docs.github.com/webhooks/event-payloads/#check_run) to your app. Each action includes a `label`, `identifier` and `description`. A maximum of three actions are accepted. See the [`actions` object](https://docs.github.com/rest/reference/checks#actions-object) description. To learn more about check runs and requested actions, see "[Check runs and requested actions](https://docs.github.com/rest/reference/checks#check-runs-and-requested-actions)." */ + actions?: { + /** @description The text to be displayed on a button in the web UI. The maximum size is 20 characters. */ + label: string; + /** @description A short explanation of what this action would do. The maximum size is 40 characters. */ + description: string; + /** @description A reference for the action on the integrator's system. The maximum size is 20 characters. */ + identifier: string; + }[]; + }; + }; + }; + }; + /** + * **Note:** The Checks API only looks for pushes in the repository where the check suite or check run were created. Pushes to a branch in a forked repository are not detected and return an empty `pull_requests` array. + * + * Gets a single check run using its `id`. GitHub Apps must have the `checks:read` permission on a private repository or pull access to a public repository to get check runs. OAuth Apps and authenticated users must have the `repo` scope to get check runs in a private repository. + */ + "checks/get": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The unique identifier of the check run. */ + check_run_id: components["parameters"]["check-run-id"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["check-run"]; + }; + }; + }; + }; + /** + * **Note:** The Checks API only looks for pushes in the repository where the check suite or check run were created. Pushes to a branch in a forked repository are not detected and return an empty `pull_requests` array. + * + * Updates a check run for a specific commit in a repository. Your GitHub App must have the `checks:write` permission to edit check runs. + */ + "checks/update": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The unique identifier of the check run. */ + check_run_id: components["parameters"]["check-run-id"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["check-run"]; + }; + }; + }; + requestBody: { + content: { + "application/json": (Partial< + { + /** @enum {undefined} */ + status?: "completed"; + } & { + conclusion: unknown; + } & { [key: string]: unknown } + > & + Partial< + { + /** @enum {undefined} */ + status?: "queued" | "in_progress"; + } & { [key: string]: unknown } + >) & { + /** @description The name of the check. For example, "code-coverage". */ + name?: string; + /** @description The URL of the integrator's site that has the full details of the check. */ + details_url?: string; + /** @description A reference for the run on the integrator's system. */ + external_id?: string; + /** + * Format: date-time + * @description This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`. + */ + started_at?: string; + /** + * @description The current status. + * @enum {string} + */ + status?: "queued" | "in_progress" | "completed"; + /** + * @description **Required if you provide `completed_at` or a `status` of `completed`**. The final conclusion of the check. + * **Note:** Providing `conclusion` will automatically set the `status` parameter to `completed`. You cannot change a check run conclusion to `stale`, only GitHub can set this. + * @enum {string} + */ + conclusion?: + | "action_required" + | "cancelled" + | "failure" + | "neutral" + | "success" + | "skipped" + | "stale" + | "timed_out"; + /** + * Format: date-time + * @description The time the check completed. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`. + */ + completed_at?: string; + /** @description Check runs can accept a variety of data in the `output` object, including a `title` and `summary` and can optionally provide descriptive details about the run. See the [`output` object](https://docs.github.com/rest/reference/checks#output-object-1) description. */ + output?: { + /** @description **Required**. */ + title?: string; + /** @description Can contain Markdown. */ + summary: string; + /** @description Can contain Markdown. */ + text?: string; + /** @description Adds information from your analysis to specific lines of code. Annotations are visible in GitHub's pull request UI. Annotations are visible in GitHub's pull request UI. The Checks API limits the number of annotations to a maximum of 50 per API request. To create more than 50 annotations, you have to make multiple requests to the [Update a check run](https://docs.github.com/rest/reference/checks#update-a-check-run) endpoint. Each time you update the check run, annotations are appended to the list of annotations that already exist for the check run. For details about annotations in the UI, see "[About status checks](https://docs.github.com/articles/about-status-checks#checks)". See the [`annotations` object](https://docs.github.com/rest/reference/checks#annotations-object-1) description for details. */ + annotations?: { + /** @description The path of the file to add an annotation to. For example, `assets/css/main.css`. */ + path: string; + /** @description The start line of the annotation. */ + start_line: number; + /** @description The end line of the annotation. */ + end_line: number; + /** @description The start column of the annotation. Annotations only support `start_column` and `end_column` on the same line. Omit this parameter if `start_line` and `end_line` have different values. */ + start_column?: number; + /** @description The end column of the annotation. Annotations only support `start_column` and `end_column` on the same line. Omit this parameter if `start_line` and `end_line` have different values. */ + end_column?: number; + /** + * @description The level of the annotation. + * @enum {string} + */ + annotation_level: "notice" | "warning" | "failure"; + /** @description A short description of the feedback for these lines of code. The maximum size is 64 KB. */ + message: string; + /** @description The title that represents the annotation. The maximum size is 255 characters. */ + title?: string; + /** @description Details about this annotation. The maximum size is 64 KB. */ + raw_details?: string; + }[]; + /** @description Adds images to the output displayed in the GitHub pull request UI. See the [`images` object](https://docs.github.com/rest/reference/checks#annotations-object-1) description for details. */ + images?: { + /** @description The alternative text for the image. */ + alt: string; + /** @description The full URL of the image. */ + image_url: string; + /** @description A short image description. */ + caption?: string; + }[]; + }; + /** @description Possible further actions the integrator can perform, which a user may trigger. Each action includes a `label`, `identifier` and `description`. A maximum of three actions are accepted. See the [`actions` object](https://docs.github.com/rest/reference/checks#actions-object) description. To learn more about check runs and requested actions, see "[Check runs and requested actions](https://docs.github.com/rest/reference/checks#check-runs-and-requested-actions)." */ + actions?: { + /** @description The text to be displayed on a button in the web UI. The maximum size is 20 characters. */ + label: string; + /** @description A short explanation of what this action would do. The maximum size is 40 characters. */ + description: string; + /** @description A reference for the action on the integrator's system. The maximum size is 20 characters. */ + identifier: string; + }[]; + }; + }; + }; + }; + /** Lists annotations for a check run using the annotation `id`. GitHub Apps must have the `checks:read` permission on a private repository or pull access to a public repository to get annotations for a check run. OAuth Apps and authenticated users must have the `repo` scope to get annotations for a check run in a private repository. */ + "checks/list-annotations": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The unique identifier of the check run. */ + check_run_id: components["parameters"]["check-run-id"]; + }; + query: { + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + }; + }; + responses: { + /** Response */ + 200: { + headers: {}; + content: { + "application/json": components["schemas"]["check-annotation"][]; + }; + }; + }; + }; + /** + * Triggers GitHub to rerequest an existing check run, without pushing new code to a repository. This endpoint will trigger the [`check_run` webhook](https://docs.github.com/webhooks/event-payloads/#check_run) event with the action `rerequested`. When a check run is `rerequested`, its `status` is reset to `queued` and the `conclusion` is cleared. + * + * To rerequest a check run, your GitHub App must have the `checks:read` permission on a private repository or pull access to a public repository. + */ + "checks/rerequest-run": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The unique identifier of the check run. */ + check_run_id: components["parameters"]["check-run-id"]; + }; + }; + responses: { + /** Response */ + 201: { + content: { + "application/json": { [key: string]: unknown }; + }; + }; + /** Forbidden if the check run is not rerequestable or doesn't belong to the authenticated GitHub App */ + 403: { + content: { + "application/json": components["schemas"]["basic-error"]; + }; + }; + 404: components["responses"]["not_found"]; + /** Validation error if the check run is not rerequestable */ + 422: { + content: { + "application/json": components["schemas"]["basic-error"]; + }; + }; + }; + }; + /** + * **Note:** The Checks API only looks for pushes in the repository where the check suite or check run were created. Pushes to a branch in a forked repository are not detected and return an empty `pull_requests` array and a `null` value for `head_branch`. + * + * By default, check suites are automatically created when you create a [check run](https://docs.github.com/rest/reference/checks#check-runs). You only need to use this endpoint for manually creating check suites when you've disabled automatic creation using "[Update repository preferences for check suites](https://docs.github.com/rest/reference/checks#update-repository-preferences-for-check-suites)". Your GitHub App must have the `checks:write` permission to create check suites. + */ + "checks/create-suite": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + }; + }; + responses: { + /** Response when the suite already exists */ + 200: { + content: { + "application/json": components["schemas"]["check-suite"]; + }; + }; + /** Response when the suite was created */ + 201: { + content: { + "application/json": components["schemas"]["check-suite"]; + }; + }; + }; + requestBody: { + content: { + "application/json": { + /** @description The sha of the head commit. */ + head_sha: string; + }; + }; + }; + }; + /** Changes the default automatic flow when creating check suites. By default, a check suite is automatically created each time code is pushed to a repository. When you disable the automatic creation of check suites, you can manually [Create a check suite](https://docs.github.com/rest/reference/checks#create-a-check-suite). You must have admin permissions in the repository to set preferences for check suites. */ + "checks/set-suites-preferences": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["check-suite-preference"]; + }; + }; + }; + requestBody: { + content: { + "application/json": { + /** @description Enables or disables automatic creation of CheckSuite events upon pushes to the repository. Enabled by default. See the [`auto_trigger_checks` object](https://docs.github.com/rest/reference/checks#auto_trigger_checks-object) description for details. */ + auto_trigger_checks?: { + /** @description The `id` of the GitHub App. */ + app_id: number; + /** + * @description Set to `true` to enable automatic creation of CheckSuite events upon pushes to the repository, or `false` to disable them. + * @default true + */ + setting: boolean; + }[]; + }; + }; + }; + }; + /** + * **Note:** The Checks API only looks for pushes in the repository where the check suite or check run were created. Pushes to a branch in a forked repository are not detected and return an empty `pull_requests` array and a `null` value for `head_branch`. + * + * Gets a single check suite using its `id`. GitHub Apps must have the `checks:read` permission on a private repository or pull access to a public repository to get check suites. OAuth Apps and authenticated users must have the `repo` scope to get check suites in a private repository. + */ + "checks/get-suite": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The unique identifier of the check suite. */ + check_suite_id: components["parameters"]["check-suite-id"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["check-suite"]; + }; + }; + }; + }; + /** + * **Note:** The Checks API only looks for pushes in the repository where the check suite or check run were created. Pushes to a branch in a forked repository are not detected and return an empty `pull_requests` array. + * + * Lists check runs for a check suite using its `id`. GitHub Apps must have the `checks:read` permission on a private repository or pull access to a public repository to get check runs. OAuth Apps and authenticated users must have the `repo` scope to get check runs in a private repository. + */ + "checks/list-for-suite": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The unique identifier of the check suite. */ + check_suite_id: components["parameters"]["check-suite-id"]; + }; + query: { + /** Returns check runs with the specified `name`. */ + check_name?: components["parameters"]["check-name"]; + /** Returns check runs with the specified `status`. */ + status?: components["parameters"]["status"]; + /** Filters check runs by their `completed_at` timestamp. `latest` returns the most recent check runs. */ + filter?: "latest" | "all"; + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + }; + }; + responses: { + /** Response */ + 200: { + headers: {}; + content: { + "application/json": { + total_count: number; + check_runs: components["schemas"]["check-run"][]; + }; + }; + }; + }; + }; + /** + * Triggers GitHub to rerequest an existing check suite, without pushing new code to a repository. This endpoint will trigger the [`check_suite` webhook](https://docs.github.com/webhooks/event-payloads/#check_suite) event with the action `rerequested`. When a check suite is `rerequested`, its `status` is reset to `queued` and the `conclusion` is cleared. + * + * To rerequest a check suite, your GitHub App must have the `checks:read` permission on a private repository or pull access to a public repository. + */ + "checks/rerequest-suite": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The unique identifier of the check suite. */ + check_suite_id: components["parameters"]["check-suite-id"]; + }; + }; + responses: { + /** Response */ + 201: { + content: { + "application/json": { [key: string]: unknown }; + }; + }; + }; + }; + /** + * Lists all open code scanning alerts for the default branch (usually `main` + * or `master`). You must use an access token with the `security_events` scope to use + * this endpoint with private repos, the `public_repo` scope also grants permission to read + * security events on public repos only. GitHub Apps must have the `security_events` read + * permission to use this endpoint. + * + * The response includes a `most_recent_instance` object. + * This provides details of the most recent instance of this alert + * for the default branch or for the specified Git reference + * (if you used `ref` in the request). + */ + "code-scanning/list-alerts-for-repo": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + }; + query: { + /** The name of a code scanning tool. Only results by this tool will be listed. You can specify the tool by using either `tool_name` or `tool_guid`, but not both. */ + tool_name?: components["parameters"]["tool-name"]; + /** The GUID of a code scanning tool. Only results by this tool will be listed. Note that some code scanning tools may not include a GUID in their analysis data. You can specify the tool by using either `tool_guid` or `tool_name`, but not both. */ + tool_guid?: components["parameters"]["tool-guid"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** The Git reference for the results you want to list. The `ref` for a branch can be formatted either as `refs/heads/` or simply ``. To reference a pull request use `refs/pull//merge`. */ + ref?: components["parameters"]["git-ref"]; + /** The direction to sort the results by. */ + direction?: components["parameters"]["direction"]; + /** The property by which to sort the results. . `number` is deprecated - we recommend that you use `created` instead. */ + sort?: "created" | "number" | "updated"; + /** Set to `open`, `closed, `fixed`, or `dismissed` to list code scanning alerts in a specific state. */ + state?: components["schemas"]["code-scanning-alert-state"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["code-scanning-alert-items"][]; + }; + }; + 304: components["responses"]["not_modified"]; + 403: components["responses"]["code_scanning_forbidden_read"]; + 404: components["responses"]["not_found"]; + 503: components["responses"]["service_unavailable"]; + }; + }; + /** + * Gets a single code scanning alert. You must use an access token with the `security_events` scope to use this endpoint with private repos, the `public_repo` scope also grants permission to read security events on public repos only. GitHub Apps must have the `security_events` read permission to use this endpoint. + * + * **Deprecation notice**: + * The instances field is deprecated and will, in future, not be included in the response for this endpoint. The example response reflects this change. The same information can now be retrieved via a GET request to the URL specified by `instances_url`. + */ + "code-scanning/get-alert": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The number that identifies an alert. You can find this at the end of the URL for a code scanning alert within GitHub, and in the `number` field in the response from the `GET /repos/{owner}/{repo}/code-scanning/alerts` operation. */ + alert_number: components["parameters"]["alert-number"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["code-scanning-alert"]; + }; + }; + 304: components["responses"]["not_modified"]; + 403: components["responses"]["code_scanning_forbidden_read"]; + 404: components["responses"]["not_found"]; + 503: components["responses"]["service_unavailable"]; + }; + }; + /** Updates the status of a single code scanning alert. You must use an access token with the `security_events` scope to use this endpoint with private repositories. You can also use tokens with the `public_repo` scope for public repositories only. GitHub Apps must have the `security_events` write permission to use this endpoint. */ + "code-scanning/update-alert": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The number that identifies an alert. You can find this at the end of the URL for a code scanning alert within GitHub, and in the `number` field in the response from the `GET /repos/{owner}/{repo}/code-scanning/alerts` operation. */ + alert_number: components["parameters"]["alert-number"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["code-scanning-alert"]; + }; + }; + 403: components["responses"]["code_scanning_forbidden_write"]; + 404: components["responses"]["not_found"]; + 503: components["responses"]["service_unavailable"]; + }; + requestBody: { + content: { + "application/json": { + state: components["schemas"]["code-scanning-alert-set-state"]; + dismissed_reason?: components["schemas"]["code-scanning-alert-dismissed-reason"]; + dismissed_comment?: components["schemas"]["code-scanning-alert-dismissed-comment"]; + }; + }; + }; + }; + /** + * Lists all instances of the specified code scanning alert. + * You must use an access token with the `security_events` scope to use this endpoint with private repos, + * the `public_repo` scope also grants permission to read security events on public repos only. + * GitHub Apps must have the `security_events` read permission to use this endpoint. + */ + "code-scanning/list-alert-instances": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The number that identifies an alert. You can find this at the end of the URL for a code scanning alert within GitHub, and in the `number` field in the response from the `GET /repos/{owner}/{repo}/code-scanning/alerts` operation. */ + alert_number: components["parameters"]["alert-number"]; + }; + query: { + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** The Git reference for the results you want to list. The `ref` for a branch can be formatted either as `refs/heads/` or simply ``. To reference a pull request use `refs/pull//merge`. */ + ref?: components["parameters"]["git-ref"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["code-scanning-alert-instance"][]; + }; + }; + 403: components["responses"]["code_scanning_forbidden_read"]; + 404: components["responses"]["not_found"]; + 503: components["responses"]["service_unavailable"]; + }; + }; + /** + * Lists the details of all code scanning analyses for a repository, + * starting with the most recent. + * The response is paginated and you can use the `page` and `per_page` parameters + * to list the analyses you're interested in. + * By default 30 analyses are listed per page. + * + * The `rules_count` field in the response give the number of rules + * that were run in the analysis. + * For very old analyses this data is not available, + * and `0` is returned in this field. + * + * You must use an access token with the `security_events` scope to use this endpoint with private repos, + * the `public_repo` scope also grants permission to read security events on public repos only. + * GitHub Apps must have the `security_events` read permission to use this endpoint. + * + * **Deprecation notice**: + * The `tool_name` field is deprecated and will, in future, not be included in the response for this endpoint. The example response reflects this change. The tool name can now be found inside the `tool` field. + */ + "code-scanning/list-recent-analyses": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + }; + query: { + /** The name of a code scanning tool. Only results by this tool will be listed. You can specify the tool by using either `tool_name` or `tool_guid`, but not both. */ + tool_name?: components["parameters"]["tool-name"]; + /** The GUID of a code scanning tool. Only results by this tool will be listed. Note that some code scanning tools may not include a GUID in their analysis data. You can specify the tool by using either `tool_guid` or `tool_name`, but not both. */ + tool_guid?: components["parameters"]["tool-guid"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** The Git reference for the analyses you want to list. The `ref` for a branch can be formatted either as `refs/heads/` or simply ``. To reference a pull request use `refs/pull//merge`. */ + ref?: components["schemas"]["code-scanning-ref"]; + /** Filter analyses belonging to the same SARIF upload. */ + sarif_id?: components["schemas"]["code-scanning-analysis-sarif-id"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["code-scanning-analysis"][]; + }; + }; + 403: components["responses"]["code_scanning_forbidden_read"]; + 404: components["responses"]["not_found"]; + 503: components["responses"]["service_unavailable"]; + }; + }; + /** + * Gets a specified code scanning analysis for a repository. + * You must use an access token with the `security_events` scope to use this endpoint with private repos, + * the `public_repo` scope also grants permission to read security events on public repos only. + * GitHub Apps must have the `security_events` read permission to use this endpoint. + * + * The default JSON response contains fields that describe the analysis. + * This includes the Git reference and commit SHA to which the analysis relates, + * the datetime of the analysis, the name of the code scanning tool, + * and the number of alerts. + * + * The `rules_count` field in the default response give the number of rules + * that were run in the analysis. + * For very old analyses this data is not available, + * and `0` is returned in this field. + * + * If you use the Accept header `application/sarif+json`, + * the response contains the analysis data that was uploaded. + * This is formatted as + * [SARIF version 2.1.0](https://docs.oasis-open.org/sarif/sarif/v2.1.0/cs01/sarif-v2.1.0-cs01.html). + */ + "code-scanning/get-analysis": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The ID of the analysis, as returned from the `GET /repos/{owner}/{repo}/code-scanning/analyses` operation. */ + analysis_id: number; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["code-scanning-analysis"]; + "application/json+sarif": { [key: string]: unknown }; + }; + }; + 403: components["responses"]["code_scanning_forbidden_read"]; + 404: components["responses"]["not_found"]; + 503: components["responses"]["service_unavailable"]; + }; + }; + /** + * Deletes a specified code scanning analysis from a repository. For + * private repositories, you must use an access token with the `repo` scope. For public repositories, + * you must use an access token with `public_repo` scope. + * GitHub Apps must have the `security_events` write permission to use this endpoint. + * + * You can delete one analysis at a time. + * To delete a series of analyses, start with the most recent analysis and work backwards. + * Conceptually, the process is similar to the undo function in a text editor. + * + * When you list the analyses for a repository, + * one or more will be identified as deletable in the response: + * + * ``` + * "deletable": true + * ``` + * + * An analysis is deletable when it's the most recent in a set of analyses. + * Typically, a repository will have multiple sets of analyses + * for each enabled code scanning tool, + * where a set is determined by a unique combination of analysis values: + * + * * `ref` + * * `tool` + * * `analysis_key` + * * `environment` + * + * If you attempt to delete an analysis that is not the most recent in a set, + * you'll get a 400 response with the message: + * + * ``` + * Analysis specified is not deletable. + * ``` + * + * The response from a successful `DELETE` operation provides you with + * two alternative URLs for deleting the next analysis in the set: + * `next_analysis_url` and `confirm_delete_url`. + * Use the `next_analysis_url` URL if you want to avoid accidentally deleting the final analysis + * in a set. This is a useful option if you want to preserve at least one analysis + * for the specified tool in your repository. + * Use the `confirm_delete_url` URL if you are content to remove all analyses for a tool. + * When you delete the last analysis in a set, the value of `next_analysis_url` and `confirm_delete_url` + * in the 200 response is `null`. + * + * As an example of the deletion process, + * let's imagine that you added a workflow that configured a particular code scanning tool + * to analyze the code in a repository. This tool has added 15 analyses: + * 10 on the default branch, and another 5 on a topic branch. + * You therefore have two separate sets of analyses for this tool. + * You've now decided that you want to remove all of the analyses for the tool. + * To do this you must make 15 separate deletion requests. + * To start, you must find an analysis that's identified as deletable. + * Each set of analyses always has one that's identified as deletable. + * Having found the deletable analysis for one of the two sets, + * delete this analysis and then continue deleting the next analysis in the set until they're all deleted. + * Then repeat the process for the second set. + * The procedure therefore consists of a nested loop: + * + * **Outer loop**: + * * List the analyses for the repository, filtered by tool. + * * Parse this list to find a deletable analysis. If found: + * + * **Inner loop**: + * * Delete the identified analysis. + * * Parse the response for the value of `confirm_delete_url` and, if found, use this in the next iteration. + * + * The above process assumes that you want to remove all trace of the tool's analyses from the GitHub user interface, for the specified repository, and it therefore uses the `confirm_delete_url` value. Alternatively, you could use the `next_analysis_url` value, which would leave the last analysis in each set undeleted to avoid removing a tool's analysis entirely. + */ + "code-scanning/delete-analysis": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The ID of the analysis, as returned from the `GET /repos/{owner}/{repo}/code-scanning/analyses` operation. */ + analysis_id: number; + }; + query: { + /** Allow deletion if the specified analysis is the last in a set. If you attempt to delete the final analysis in a set without setting this parameter to `true`, you'll get a 400 response with the message: `Analysis is last of its type and deletion may result in the loss of historical alert data. Please specify confirm_delete.` */ + confirm_delete?: string | null; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["code-scanning-analysis-deletion"]; + }; + }; + 400: components["responses"]["bad_request"]; + 403: components["responses"]["code_scanning_forbidden_write"]; + 404: components["responses"]["not_found"]; + 503: components["responses"]["service_unavailable"]; + }; + }; + /** + * Uploads SARIF data containing the results of a code scanning analysis to make the results available in a repository. You must use an access token with the `security_events` scope to use this endpoint for private repositories. You can also use tokens with the `public_repo` scope for public repositories only. GitHub Apps must have the `security_events` write permission to use this endpoint. + * + * There are two places where you can upload code scanning results. + * - If you upload to a pull request, for example `--ref refs/pull/42/merge` or `--ref refs/pull/42/head`, then the results appear as alerts in a pull request check. For more information, see "[Triaging code scanning alerts in pull requests](/code-security/secure-coding/triaging-code-scanning-alerts-in-pull-requests)." + * - If you upload to a branch, for example `--ref refs/heads/my-branch`, then the results appear in the **Security** tab for your repository. For more information, see "[Managing code scanning alerts for your repository](/code-security/secure-coding/managing-code-scanning-alerts-for-your-repository#viewing-the-alerts-for-a-repository)." + * + * You must compress the SARIF-formatted analysis data that you want to upload, using `gzip`, and then encode it as a Base64 format string. For example: + * + * ``` + * gzip -c analysis-data.sarif | base64 -w0 + * ``` + * + * SARIF upload supports a maximum of 5000 results per analysis run. Any results over this limit are ignored and any SARIF uploads with more than 25,000 results are rejected. Typically, but not necessarily, a SARIF file contains a single run of a single tool. If a code scanning tool generates too many results, you should update the analysis configuration to run only the most important rules or queries. + * + * The `202 Accepted`, response includes an `id` value. + * You can use this ID to check the status of the upload by using this for the `/sarifs/{sarif_id}` endpoint. + * For more information, see "[Get information about a SARIF upload](/rest/reference/code-scanning#get-information-about-a-sarif-upload)." + */ + "code-scanning/upload-sarif": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + }; + }; + responses: { + /** Response */ + 202: { + content: { + "application/json": components["schemas"]["code-scanning-sarifs-receipt"]; + }; + }; + /** Bad Request if the sarif field is invalid */ + 400: unknown; + 403: components["responses"]["code_scanning_forbidden_write"]; + 404: components["responses"]["not_found"]; + /** Payload Too Large if the sarif field is too large */ + 413: unknown; + 503: components["responses"]["service_unavailable"]; + }; + requestBody: { + content: { + "application/json": { + commit_sha: components["schemas"]["code-scanning-analysis-commit-sha"]; + ref: components["schemas"]["code-scanning-ref"]; + sarif: components["schemas"]["code-scanning-analysis-sarif-file"]; + /** + * Format: uri + * @description The base directory used in the analysis, as it appears in the SARIF file. + * This property is used to convert file paths from absolute to relative, so that alerts can be mapped to their correct location in the repository. + * @example file:///github/workspace/ + */ + checkout_uri?: string; + /** + * Format: date-time + * @description The time that the analysis run began. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`. + */ + started_at?: string; + /** @description The name of the tool used to generate the code scanning analysis. If this parameter is not used, the tool name defaults to "API". If the uploaded SARIF contains a tool GUID, this will be available for filtering using the `tool_guid` parameter of operations such as `GET /repos/{owner}/{repo}/code-scanning/alerts`. */ + tool_name?: string; + }; + }; + }; + }; + /** Gets information about a SARIF upload, including the status and the URL of the analysis that was uploaded so that you can retrieve details of the analysis. For more information, see "[Get a code scanning analysis for a repository](/rest/reference/code-scanning#get-a-code-scanning-analysis-for-a-repository)." You must use an access token with the `security_events` scope to use this endpoint with private repos, the `public_repo` scope also grants permission to read security events on public repos only. GitHub Apps must have the `security_events` read permission to use this endpoint. */ + "code-scanning/get-sarif": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The SARIF ID obtained after uploading. */ + sarif_id: string; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["code-scanning-sarifs-status"]; + }; + }; + 403: components["responses"]["code_scanning_forbidden_read"]; + /** Not Found if the sarif id does not match any upload */ + 404: unknown; + 503: components["responses"]["service_unavailable"]; + }; + }; + /** + * List any syntax errors that are detected in the CODEOWNERS + * file. + * + * For more information about the correct CODEOWNERS syntax, + * see "[About code owners](https://docs.github.com/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/about-code-owners)." + */ + "repos/codeowners-errors": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + }; + query: { + /** A branch, tag or commit name used to determine which version of the CODEOWNERS file to use. Default: the repository's default branch (e.g. `main`) */ + ref?: string; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["codeowners-errors"]; + }; + }; + /** Resource not found */ + 404: unknown; + }; + }; + /** + * Lists the codespaces associated to a specified repository and the authenticated user. + * + * You must authenticate using an access token with the `codespace` scope to use this endpoint. + * + * GitHub Apps must have read access to the `codespaces` repository permission to use this endpoint. + */ + "codespaces/list-in-repository-for-authenticated-user": { + parameters: { + query: { + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + }; + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": { + total_count: number; + codespaces: components["schemas"]["codespace"][]; + }; + }; + }; + 401: components["responses"]["requires_authentication"]; + 403: components["responses"]["forbidden"]; + 404: components["responses"]["not_found"]; + 500: components["responses"]["internal_error"]; + }; + }; + /** + * Creates a codespace owned by the authenticated user in the specified repository. + * + * You must authenticate using an access token with the `codespace` scope to use this endpoint. + * + * GitHub Apps must have write access to the `codespaces` repository permission to use this endpoint. + */ + "codespaces/create-with-repo-for-authenticated-user": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + }; + }; + responses: { + /** Response when the codespace was successfully created */ + 201: { + content: { + "application/json": components["schemas"]["codespace"]; + }; + }; + /** Response when the codespace creation partially failed but is being retried in the background */ + 202: { + content: { + "application/json": components["schemas"]["codespace"]; + }; + }; + 401: components["responses"]["requires_authentication"]; + 403: components["responses"]["forbidden"]; + 404: components["responses"]["not_found"]; + }; + requestBody: { + content: { + "application/json": { + /** @description Git ref (typically a branch name) for this codespace */ + ref?: string; + /** @description Location for this codespace. Assigned by IP if not provided */ + location?: string; + /** @description IP for location auto-detection when proxying a request */ + client_ip?: string; + /** @description Machine type to use for this codespace */ + machine?: string; + /** @description Path to devcontainer.json config to use for this codespace */ + devcontainer_path?: string; + /** @description Whether to authorize requested permissions from devcontainer.json */ + multi_repo_permissions_opt_out?: boolean; + /** @description Working directory for this codespace */ + working_directory?: string; + /** @description Time in minutes before codespace stops from inactivity */ + idle_timeout_minutes?: number; + /** @description Display name for this codespace */ + display_name?: string; + /** @description Duration in minutes after codespace has gone idle in which it will be deleted. Must be integer minutes between 0 and 43200 (30 days). */ + retention_period_minutes?: number; + } | null; + }; + }; + }; + /** + * Lists the devcontainer.json files associated with a specified repository and the authenticated user. These files + * specify launchpoint configurations for codespaces created within the repository. + * + * You must authenticate using an access token with the `codespace` scope to use this endpoint. + * + * GitHub Apps must have read access to the `codespaces_metadata` repository permission to use this endpoint. + */ + "codespaces/list-devcontainers-in-repository-for-authenticated-user": { + parameters: { + query: { + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + }; + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": { + total_count: number; + devcontainers: { + path: string; + name?: string; + }[]; + }; + }; + }; + 400: components["responses"]["bad_request"]; + 401: components["responses"]["requires_authentication"]; + 403: components["responses"]["forbidden"]; + 404: components["responses"]["not_found"]; + 500: components["responses"]["internal_error"]; + }; + }; + /** + * List the machine types available for a given repository based on its configuration. + * + * You must authenticate using an access token with the `codespace` scope to use this endpoint. + * + * GitHub Apps must have write access to the `codespaces_metadata` repository permission to use this endpoint. + */ + "codespaces/repo-machines-for-authenticated-user": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + }; + query: { + /** The location to check for available machines. Assigned by IP if not provided. */ + location?: string; + /** IP for location auto-detection when proxying a request */ + client_ip?: string; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": { + total_count: number; + machines: components["schemas"]["codespace-machine"][]; + }; + }; + }; + 304: components["responses"]["not_modified"]; + 401: components["responses"]["requires_authentication"]; + 403: components["responses"]["forbidden"]; + 404: components["responses"]["not_found"]; + 500: components["responses"]["internal_error"]; + }; + }; + /** + * Gets the default attributes for codespaces created by the user with the repository. + * + * You must authenticate using an access token with the `codespace` scope to use this endpoint. + * + * GitHub Apps must have write access to the `codespaces` repository permission to use this endpoint. + */ + "codespaces/pre-flight-with-repo-for-authenticated-user": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + }; + query: { + /** The branch or commit to check for a default devcontainer path. If not specified, the default branch will be checked. */ + ref?: string; + /** An alternative IP for default location auto-detection, such as when proxying a request. */ + client_ip?: string; + }; + }; + responses: { + /** Response when a user is able to create codespaces from the repository. */ + 200: { + content: { + "application/json": { + billable_owner?: components["schemas"]["simple-user"]; + defaults?: { + location: string; + devcontainer_path: string | null; + }; + }; + }; + }; + 401: components["responses"]["requires_authentication"]; + 403: components["responses"]["forbidden"]; + 404: components["responses"]["not_found"]; + }; + }; + /** Lists all secrets available in a repository without revealing their encrypted values. You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the `codespaces_secrets` repository permission to use this endpoint. */ + "codespaces/list-repo-secrets": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + }; + query: { + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + }; + }; + responses: { + /** Response */ + 200: { + headers: {}; + content: { + "application/json": { + total_count: number; + secrets: components["schemas"]["repo-codespaces-secret"][]; + }; + }; + }; + }; + }; + /** Gets your public key, which you need to encrypt secrets. You need to encrypt a secret before you can create or update secrets. Anyone with read access to the repository can use this endpoint. If the repository is private you must use an access token with the `repo` scope. GitHub Apps must have the `codespaces_secrets` repository permission to use this endpoint. */ + "codespaces/get-repo-public-key": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["codespaces-public-key"]; + }; + }; + }; + }; + /** Gets a single repository secret without revealing its encrypted value. You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the `codespaces_secrets` repository permission to use this endpoint. */ + "codespaces/get-repo-secret": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The name of the secret. */ + secret_name: components["parameters"]["secret-name"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["repo-codespaces-secret"]; + }; + }; + }; + }; + /** + * Creates or updates a repository secret with an encrypted value. Encrypt your secret using + * [LibSodium](https://libsodium.gitbook.io/doc/bindings_for_other_languages). You must authenticate using an access + * token with the `repo` scope to use this endpoint. GitHub Apps must have the `codespaces_secrets` repository + * permission to use this endpoint. + * + * #### Example of encrypting a secret using Node.js + * + * Encrypt your secret using the [tweetsodium](https://github.com/github/tweetsodium) library. + * + * ``` + * const sodium = require('tweetsodium'); + * + * const key = "base64-encoded-public-key"; + * const value = "plain-text-secret"; + * + * // Convert the message and key to Uint8Array's (Buffer implements that interface) + * const messageBytes = Buffer.from(value); + * const keyBytes = Buffer.from(key, 'base64'); + * + * // Encrypt using LibSodium. + * const encryptedBytes = sodium.seal(messageBytes, keyBytes); + * + * // Base64 the encrypted secret + * const encrypted = Buffer.from(encryptedBytes).toString('base64'); + * + * console.log(encrypted); + * ``` + * + * + * #### Example of encrypting a secret using Python + * + * Encrypt your secret using [pynacl](https://pynacl.readthedocs.io/en/latest/public/#nacl-public-sealedbox) with Python 3. + * + * ``` + * from base64 import b64encode + * from nacl import encoding, public + * + * def encrypt(public_key: str, secret_value: str) -> str: + * """Encrypt a Unicode string using the public key.""" + * public_key = public.PublicKey(public_key.encode("utf-8"), encoding.Base64Encoder()) + * sealed_box = public.SealedBox(public_key) + * encrypted = sealed_box.encrypt(secret_value.encode("utf-8")) + * return b64encode(encrypted).decode("utf-8") + * ``` + * + * #### Example of encrypting a secret using C# + * + * Encrypt your secret using the [Sodium.Core](https://www.nuget.org/packages/Sodium.Core/) package. + * + * ``` + * var secretValue = System.Text.Encoding.UTF8.GetBytes("mySecret"); + * var publicKey = Convert.FromBase64String("2Sg8iYjAxxmI2LvUXpJjkYrMxURPc8r+dB7TJyvvcCU="); + * + * var sealedPublicKeyBox = Sodium.SealedPublicKeyBox.Create(secretValue, publicKey); + * + * Console.WriteLine(Convert.ToBase64String(sealedPublicKeyBox)); + * ``` + * + * #### Example of encrypting a secret using Ruby + * + * Encrypt your secret using the [rbnacl](https://github.com/RubyCrypto/rbnacl) gem. + * + * ```ruby + * require "rbnacl" + * require "base64" + * + * key = Base64.decode64("+ZYvJDZMHUfBkJdyq5Zm9SKqeuBQ4sj+6sfjlH4CgG0=") + * public_key = RbNaCl::PublicKey.new(key) + * + * box = RbNaCl::Boxes::Sealed.from_public_key(public_key) + * encrypted_secret = box.encrypt("my_secret") + * + * # Print the base64 encoded secret + * puts Base64.strict_encode64(encrypted_secret) + * ``` + */ + "codespaces/create-or-update-repo-secret": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The name of the secret. */ + secret_name: components["parameters"]["secret-name"]; + }; + }; + responses: { + /** Response when creating a secret */ + 201: { + content: { + "application/json": { [key: string]: unknown }; + }; + }; + /** Response when updating a secret */ + 204: never; + }; + requestBody: { + content: { + "application/json": { + /** @description Value for your secret, encrypted with [LibSodium](https://libsodium.gitbook.io/doc/bindings_for_other_languages) using the public key retrieved from the [Get a repository public key](https://docs.github.com/rest/reference/codespaces#get-a-repository-public-key) endpoint. */ + encrypted_value?: string; + /** @description ID of the key you used to encrypt the secret. */ + key_id?: string; + }; + }; + }; + }; + /** Deletes a secret in a repository using the secret name. You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the `codespaces_secrets` repository permission to use this endpoint. */ + "codespaces/delete-repo-secret": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The name of the secret. */ + secret_name: components["parameters"]["secret-name"]; + }; + }; + responses: { + /** Response */ + 204: never; + }; + }; + /** + * For organization-owned repositories, the list of collaborators includes outside collaborators, organization members that are direct collaborators, organization members with access through team memberships, organization members with access through default organization permissions, and organization owners. + * Organization members with write, maintain, or admin privileges on the organization-owned repository can use this endpoint. + * + * Team members will include the members of child teams. + * + * You must authenticate using an access token with the `read:org` and `repo` scopes with push access to use this + * endpoint. GitHub Apps must have the `members` organization permission and `metadata` repository permission to use this + * endpoint. + */ + "repos/list-collaborators": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + }; + query: { + /** Filter collaborators returned by their affiliation. `outside` means all outside collaborators of an organization-owned repository. `direct` means all collaborators with permissions to an organization-owned repository, regardless of organization membership status. `all` means all collaborators the authenticated user can see. */ + affiliation?: "outside" | "direct" | "all"; + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + }; + }; + responses: { + /** Response */ + 200: { + headers: {}; + content: { + "application/json": components["schemas"]["collaborator"][]; + }; + }; + 404: components["responses"]["not_found"]; + }; + }; + /** + * For organization-owned repositories, the list of collaborators includes outside collaborators, organization members that are direct collaborators, organization members with access through team memberships, organization members with access through default organization permissions, and organization owners. + * + * Team members will include the members of child teams. + * + * You must authenticate using an access token with the `read:org` and `repo` scopes with push access to use this + * endpoint. GitHub Apps must have the `members` organization permission and `metadata` repository permission to use this + * endpoint. + */ + "repos/check-collaborator": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The handle for the GitHub user account. */ + username: components["parameters"]["username"]; + }; + }; + responses: { + /** Response if user is a collaborator */ + 204: never; + /** Not Found if user is not a collaborator */ + 404: unknown; + }; + }; + /** + * This endpoint triggers [notifications](https://docs.github.com/github/managing-subscriptions-and-notifications-on-github/about-notifications). Creating content too quickly using this endpoint may result in secondary rate limiting. See "[Secondary rate limits](https://docs.github.com/rest/overview/resources-in-the-rest-api#secondary-rate-limits)" and "[Dealing with secondary rate limits](https://docs.github.com/rest/guides/best-practices-for-integrators#dealing-with-secondary-rate-limits)" for details. + * + * Adding an outside collaborator may be restricted by enterprise administrators. For more information, see "[Enforcing repository management policies in your enterprise](https://docs.github.com/enterprise-cloud@latest/admin/policies/enforcing-policies-for-your-enterprise/enforcing-repository-management-policies-in-your-enterprise#enforcing-a-policy-for-inviting-outside-collaborators-to-repositories)." + * + * For more information on permission levels, see "[Repository permission levels for an organization](https://docs.github.com/github/setting-up-and-managing-organizations-and-teams/repository-permission-levels-for-an-organization#permission-levels-for-repositories-owned-by-an-organization)". There are restrictions on which permissions can be granted to organization members when an organization base role is in place. In this case, the permission being given must be equal to or higher than the org base permission. Otherwise, the request will fail with: + * + * ``` + * Cannot assign {member} permission of {role name} + * ``` + * + * Note that, if you choose not to pass any parameters, you'll need to set `Content-Length` to zero when calling out to this endpoint. For more information, see "[HTTP verbs](https://docs.github.com/rest/overview/resources-in-the-rest-api#http-verbs)." + * + * The invitee will receive a notification that they have been invited to the repository, which they must accept or decline. They may do this via the notifications page, the email they receive, or by using the [repository invitations API endpoints](https://docs.github.com/rest/reference/repos#invitations). + * + * **Updating an existing collaborator's permission level** + * + * The endpoint can also be used to change the permissions of an existing collaborator without first removing and re-adding the collaborator. To change the permissions, use the same endpoint and pass a different `permission` parameter. The response will be a `204`, with no other indication that the permission level changed. + * + * **Rate limits** + * + * You are limited to sending 50 invitations to a repository per 24 hour period. Note there is no limit if you are inviting organization members to an organization repository. + */ + "repos/add-collaborator": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The handle for the GitHub user account. */ + username: components["parameters"]["username"]; + }; + }; + responses: { + /** Response when a new invitation is created */ + 201: { + content: { + "application/json": components["schemas"]["repository-invitation"]; + }; + }; + /** + * Response when: + * - an existing collaborator is added as a collaborator + * - an organization member is added as an individual collaborator + * - an existing team member (whose team is also a repository collaborator) is added as an individual collaborator + */ + 204: never; + 403: components["responses"]["forbidden"]; + 422: components["responses"]["validation_failed"]; + }; + requestBody: { + content: { + "application/json": { + /** + * @description The permission to grant the collaborator. **Only valid on organization-owned repositories.** In addition to the enumerated values, you can also specify a custom repository role name, if the owning organization has defined any. + * @default push + * @enum {string} + */ + permission?: "pull" | "push" | "admin" | "maintain" | "triage"; + }; + }; + }; + }; + "repos/remove-collaborator": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The handle for the GitHub user account. */ + username: components["parameters"]["username"]; + }; + }; + responses: { + /** Response */ + 204: never; + }; + }; + /** Checks the repository permission of a collaborator. The possible repository permissions are `admin`, `write`, `read`, and `none`. */ + "repos/get-collaborator-permission-level": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The handle for the GitHub user account. */ + username: components["parameters"]["username"]; + }; + }; + responses: { + /** if user has admin permissions */ + 200: { + content: { + "application/json": components["schemas"]["repository-collaborator-permission"]; + }; + }; + 404: components["responses"]["not_found"]; + }; + }; + /** + * Commit Comments use [these custom media types](https://docs.github.com/rest/reference/repos#custom-media-types). You can read more about the use of media types in the API [here](https://docs.github.com/rest/overview/media-types/). + * + * Comments are ordered by ascending ID. + */ + "repos/list-commit-comments-for-repo": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + }; + query: { + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + }; + }; + responses: { + /** Response */ + 200: { + headers: {}; + content: { + "application/json": components["schemas"]["commit-comment"][]; + }; + }; + }; + }; + "repos/get-commit-comment": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The unique identifier of the comment. */ + comment_id: components["parameters"]["comment-id"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["commit-comment"]; + }; + }; + 404: components["responses"]["not_found"]; + }; + }; + "repos/delete-commit-comment": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The unique identifier of the comment. */ + comment_id: components["parameters"]["comment-id"]; + }; + }; + responses: { + /** Response */ + 204: never; + 404: components["responses"]["not_found"]; + }; + }; + "repos/update-commit-comment": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The unique identifier of the comment. */ + comment_id: components["parameters"]["comment-id"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["commit-comment"]; + }; + }; + 404: components["responses"]["not_found"]; + }; + requestBody: { + content: { + "application/json": { + /** @description The contents of the comment */ + body: string; + }; + }; + }; + }; + /** List the reactions to a [commit comment](https://docs.github.com/rest/reference/repos#comments). */ + "reactions/list-for-commit-comment": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The unique identifier of the comment. */ + comment_id: components["parameters"]["comment-id"]; + }; + query: { + /** Returns a single [reaction type](https://docs.github.com/rest/reference/reactions#reaction-types). Omit this parameter to list all reactions to a commit comment. */ + content?: + | "+1" + | "-1" + | "laugh" + | "confused" + | "heart" + | "hooray" + | "rocket" + | "eyes"; + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + }; + }; + responses: { + /** Response */ + 200: { + headers: {}; + content: { + "application/json": components["schemas"]["reaction"][]; + }; + }; + 404: components["responses"]["not_found"]; + }; + }; + /** Create a reaction to a [commit comment](https://docs.github.com/rest/reference/repos#comments). A response with an HTTP `200` status means that you already added the reaction type to this commit comment. */ + "reactions/create-for-commit-comment": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The unique identifier of the comment. */ + comment_id: components["parameters"]["comment-id"]; + }; + }; + responses: { + /** Reaction exists */ + 200: { + content: { + "application/json": components["schemas"]["reaction"]; + }; + }; + /** Reaction created */ + 201: { + content: { + "application/json": components["schemas"]["reaction"]; + }; + }; + 422: components["responses"]["validation_failed"]; + }; + requestBody: { + content: { + "application/json": { + /** + * @description The [reaction type](https://docs.github.com/rest/reference/reactions#reaction-types) to add to the commit comment. + * @enum {string} + */ + content: + | "+1" + | "-1" + | "laugh" + | "confused" + | "heart" + | "hooray" + | "rocket" + | "eyes"; + }; + }; + }; + }; + /** + * **Note:** You can also specify a repository by `repository_id` using the route `DELETE /repositories/:repository_id/comments/:comment_id/reactions/:reaction_id`. + * + * Delete a reaction to a [commit comment](https://docs.github.com/rest/reference/repos#comments). + */ + "reactions/delete-for-commit-comment": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The unique identifier of the comment. */ + comment_id: components["parameters"]["comment-id"]; + /** The unique identifier of the reaction. */ + reaction_id: components["parameters"]["reaction-id"]; + }; + }; + responses: { + /** Response */ + 204: never; + }; + }; + /** + * **Signature verification object** + * + * The response will include a `verification` object that describes the result of verifying the commit's signature. The following fields are included in the `verification` object: + * + * | Name | Type | Description | + * | ---- | ---- | ----------- | + * | `verified` | `boolean` | Indicates whether GitHub considers the signature in this commit to be verified. | + * | `reason` | `string` | The reason for verified value. Possible values and their meanings are enumerated in table below. | + * | `signature` | `string` | The signature that was extracted from the commit. | + * | `payload` | `string` | The value that was signed. | + * + * These are the possible values for `reason` in the `verification` object: + * + * | Value | Description | + * | ----- | ----------- | + * | `expired_key` | The key that made the signature is expired. | + * | `not_signing_key` | The "signing" flag is not among the usage flags in the GPG key that made the signature. | + * | `gpgverify_error` | There was an error communicating with the signature verification service. | + * | `gpgverify_unavailable` | The signature verification service is currently unavailable. | + * | `unsigned` | The object does not include a signature. | + * | `unknown_signature_type` | A non-PGP signature was found in the commit. | + * | `no_user` | No user was associated with the `committer` email address in the commit. | + * | `unverified_email` | The `committer` email address in the commit was associated with a user, but the email address is not verified on her/his account. | + * | `bad_email` | The `committer` email address in the commit is not included in the identities of the PGP key that made the signature. | + * | `unknown_key` | The key that made the signature has not been registered with any user's account. | + * | `malformed_signature` | There was an error parsing the signature. | + * | `invalid` | The signature could not be cryptographically verified using the key whose key-id was found in the signature. | + * | `valid` | None of the above errors applied, so the signature is considered to be verified. | + */ + "repos/list-commits": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + }; + query: { + /** SHA or branch to start listing commits from. Default: the repository’s default branch (usually `master`). */ + sha?: string; + /** Only commits containing this file path will be returned. */ + path?: string; + /** GitHub login or email address by which to filter by commit author. */ + author?: string; + /** Only show notifications updated after the given time. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`. */ + since?: components["parameters"]["since"]; + /** Only commits before this date will be returned. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`. */ + until?: string; + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + }; + }; + responses: { + /** Response */ + 200: { + headers: {}; + content: { + "application/json": components["schemas"]["commit"][]; + }; + }; + 400: components["responses"]["bad_request"]; + 404: components["responses"]["not_found"]; + 409: components["responses"]["conflict"]; + 500: components["responses"]["internal_error"]; + }; + }; + /** + * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. + * + * Returns all branches where the given commit SHA is the HEAD, or latest commit for the branch. + */ + "repos/list-branches-for-head-commit": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The SHA of the commit. */ + commit_sha: components["parameters"]["commit-sha"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["branch-short"][]; + }; + }; + 422: components["responses"]["validation_failed"]; + }; + }; + /** Use the `:commit_sha` to specify the commit that will have its comments listed. */ + "repos/list-comments-for-commit": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The SHA of the commit. */ + commit_sha: components["parameters"]["commit-sha"]; + }; + query: { + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + }; + }; + responses: { + /** Response */ + 200: { + headers: {}; + content: { + "application/json": components["schemas"]["commit-comment"][]; + }; + }; + }; + }; + /** + * Create a comment for a commit using its `:commit_sha`. + * + * This endpoint triggers [notifications](https://docs.github.com/en/github/managing-subscriptions-and-notifications-on-github/about-notifications). Creating content too quickly using this endpoint may result in secondary rate limiting. See "[Secondary rate limits](https://docs.github.com/rest/overview/resources-in-the-rest-api#secondary-rate-limits)" and "[Dealing with secondary rate limits](https://docs.github.com/rest/guides/best-practices-for-integrators#dealing-with-secondary-rate-limits)" for details. + */ + "repos/create-commit-comment": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The SHA of the commit. */ + commit_sha: components["parameters"]["commit-sha"]; + }; + }; + responses: { + /** Response */ + 201: { + headers: { + Location?: string; + }; + content: { + "application/json": components["schemas"]["commit-comment"]; + }; + }; + 403: components["responses"]["forbidden"]; + 422: components["responses"]["validation_failed"]; + }; + requestBody: { + content: { + "application/json": { + /** @description The contents of the comment. */ + body: string; + /** @description Relative path of the file to comment on. */ + path?: string; + /** @description Line index in the diff to comment on. */ + position?: number; + /** @description **Deprecated**. Use **position** parameter instead. Line number in the file to comment on. */ + line?: number; + }; + }; + }; + }; + /** Lists the merged pull request that introduced the commit to the repository. If the commit is not present in the default branch, additionally returns open pull requests associated with the commit. The results may include open and closed pull requests. */ + "repos/list-pull-requests-associated-with-commit": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The SHA of the commit. */ + commit_sha: components["parameters"]["commit-sha"]; + }; + query: { + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + }; + }; + responses: { + /** Response */ + 200: { + headers: {}; + content: { + "application/json": components["schemas"]["pull-request-simple"][]; + }; + }; + }; + }; + /** + * Returns the contents of a single commit reference. You must have `read` access for the repository to use this endpoint. + * + * **Note:** If there are more than 300 files in the commit diff, the response will include pagination link headers for the remaining files, up to a limit of 3000 files. Each page contains the static commit information, and the only changes are to the file listing. + * + * You can pass the appropriate [media type](https://docs.github.com/rest/overview/media-types/#commits-commit-comparison-and-pull-requests) to fetch `diff` and `patch` formats. Diffs with binary data will have no `patch` property. + * + * To return only the SHA-1 hash of the commit reference, you can provide the `sha` custom [media type](https://docs.github.com/rest/overview/media-types/#commits-commit-comparison-and-pull-requests) in the `Accept` header. You can use this endpoint to check if a remote reference's SHA-1 hash is the same as your local reference's SHA-1 hash by providing the local SHA-1 reference as the ETag. + * + * **Signature verification object** + * + * The response will include a `verification` object that describes the result of verifying the commit's signature. The following fields are included in the `verification` object: + * + * | Name | Type | Description | + * | ---- | ---- | ----------- | + * | `verified` | `boolean` | Indicates whether GitHub considers the signature in this commit to be verified. | + * | `reason` | `string` | The reason for verified value. Possible values and their meanings are enumerated in table below. | + * | `signature` | `string` | The signature that was extracted from the commit. | + * | `payload` | `string` | The value that was signed. | + * + * These are the possible values for `reason` in the `verification` object: + * + * | Value | Description | + * | ----- | ----------- | + * | `expired_key` | The key that made the signature is expired. | + * | `not_signing_key` | The "signing" flag is not among the usage flags in the GPG key that made the signature. | + * | `gpgverify_error` | There was an error communicating with the signature verification service. | + * | `gpgverify_unavailable` | The signature verification service is currently unavailable. | + * | `unsigned` | The object does not include a signature. | + * | `unknown_signature_type` | A non-PGP signature was found in the commit. | + * | `no_user` | No user was associated with the `committer` email address in the commit. | + * | `unverified_email` | The `committer` email address in the commit was associated with a user, but the email address is not verified on her/his account. | + * | `bad_email` | The `committer` email address in the commit is not included in the identities of the PGP key that made the signature. | + * | `unknown_key` | The key that made the signature has not been registered with any user's account. | + * | `malformed_signature` | There was an error parsing the signature. | + * | `invalid` | The signature could not be cryptographically verified using the key whose key-id was found in the signature. | + * | `valid` | None of the above errors applied, so the signature is considered to be verified. | + */ + "repos/get-commit": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** ref parameter */ + ref: string; + }; + query: { + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["commit"]; + }; + }; + 404: components["responses"]["not_found"]; + 422: components["responses"]["validation_failed"]; + 500: components["responses"]["internal_error"]; + }; + }; + /** + * **Note:** The Checks API only looks for pushes in the repository where the check suite or check run were created. Pushes to a branch in a forked repository are not detected and return an empty `pull_requests` array. + * + * Lists check runs for a commit ref. The `ref` can be a SHA, branch name, or a tag name. GitHub Apps must have the `checks:read` permission on a private repository or pull access to a public repository to get check runs. OAuth Apps and authenticated users must have the `repo` scope to get check runs in a private repository. + */ + "checks/list-for-ref": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** ref parameter */ + ref: string; + }; + query: { + /** Returns check runs with the specified `name`. */ + check_name?: components["parameters"]["check-name"]; + /** Returns check runs with the specified `status`. */ + status?: components["parameters"]["status"]; + /** Filters check runs by their `completed_at` timestamp. `latest` returns the most recent check runs. */ + filter?: "latest" | "all"; + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + app_id?: number; + }; + }; + responses: { + /** Response */ + 200: { + headers: {}; + content: { + "application/json": { + total_count: number; + check_runs: components["schemas"]["check-run"][]; + }; + }; + }; + }; + }; + /** + * **Note:** The Checks API only looks for pushes in the repository where the check suite or check run were created. Pushes to a branch in a forked repository are not detected and return an empty `pull_requests` array and a `null` value for `head_branch`. + * + * Lists check suites for a commit `ref`. The `ref` can be a SHA, branch name, or a tag name. GitHub Apps must have the `checks:read` permission on a private repository or pull access to a public repository to list check suites. OAuth Apps and authenticated users must have the `repo` scope to get check suites in a private repository. + */ + "checks/list-suites-for-ref": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** ref parameter */ + ref: string; + }; + query: { + /** Filters check suites by GitHub App `id`. */ + app_id?: number; + /** Returns check runs with the specified `name`. */ + check_name?: components["parameters"]["check-name"]; + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + }; + }; + responses: { + /** Response */ + 200: { + headers: {}; + content: { + "application/json": { + total_count: number; + check_suites: components["schemas"]["check-suite"][]; + }; + }; + }; + }; + }; + /** + * Users with pull access in a repository can access a combined view of commit statuses for a given ref. The ref can be a SHA, a branch name, or a tag name. + * + * + * Additionally, a combined `state` is returned. The `state` is one of: + * + * * **failure** if any of the contexts report as `error` or `failure` + * * **pending** if there are no statuses or a context is `pending` + * * **success** if the latest status for all contexts is `success` + */ + "repos/get-combined-status-for-ref": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** ref parameter */ + ref: string; + }; + query: { + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["combined-commit-status"]; + }; + }; + 404: components["responses"]["not_found"]; + }; + }; + /** + * Users with pull access in a repository can view commit statuses for a given ref. The ref can be a SHA, a branch name, or a tag name. Statuses are returned in reverse chronological order. The first status in the list will be the latest one. + * + * This resource is also available via a legacy route: `GET /repos/:owner/:repo/statuses/:ref`. + */ + "repos/list-commit-statuses-for-ref": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** ref parameter */ + ref: string; + }; + query: { + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + }; + }; + responses: { + /** Response */ + 200: { + headers: {}; + content: { + "application/json": components["schemas"]["status"][]; + }; + }; + 301: components["responses"]["moved_permanently"]; + }; + }; + /** + * This endpoint will return all community profile metrics, including an + * overall health score, repository description, the presence of documentation, detected + * code of conduct, detected license, and the presence of ISSUE\_TEMPLATE, PULL\_REQUEST\_TEMPLATE, + * README, and CONTRIBUTING files. + * + * The `health_percentage` score is defined as a percentage of how many of + * these four documents are present: README, CONTRIBUTING, LICENSE, and + * CODE_OF_CONDUCT. For example, if all four documents are present, then + * the `health_percentage` is `100`. If only one is present, then the + * `health_percentage` is `25`. + * + * `content_reports_enabled` is only returned for organization-owned repositories. + */ + "repos/get-community-profile-metrics": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["community-profile"]; + }; + }; + }; + }; + /** + * The `basehead` param is comprised of two parts: `base` and `head`. Both must be branch names in `repo`. To compare branches across other repositories in the same network as `repo`, use the format `:branch`. + * + * The response from the API is equivalent to running the `git log base..head` command; however, commits are returned in chronological order. Pass the appropriate [media type](https://docs.github.com/rest/overview/media-types/#commits-commit-comparison-and-pull-requests) to fetch diff and patch formats. + * + * The response also includes details on the files that were changed between the two commits. This includes the status of the change (for example, if a file was added, removed, modified, or renamed), and details of the change itself. For example, files with a `renamed` status have a `previous_filename` field showing the previous filename of the file, and files with a `modified` status have a `patch` field showing the changes made to the file. + * + * **Working with large comparisons** + * + * To process a response with a large number of commits, you can use (`per_page` or `page`) to paginate the results. When using paging, the list of changed files is only returned with page 1, but includes all changed files for the entire comparison. For more information on working with pagination, see "[Traversing with pagination](/rest/guides/traversing-with-pagination)." + * + * When calling this API without any paging parameters (`per_page` or `page`), the returned list is limited to 250 commits and the last commit in the list is the most recent of the entire comparison. When a paging parameter is specified, the first commit in the returned list of each page is the earliest. + * + * **Signature verification object** + * + * The response will include a `verification` object that describes the result of verifying the commit's signature. The following fields are included in the `verification` object: + * + * | Name | Type | Description | + * | ---- | ---- | ----------- | + * | `verified` | `boolean` | Indicates whether GitHub considers the signature in this commit to be verified. | + * | `reason` | `string` | The reason for verified value. Possible values and their meanings are enumerated in table below. | + * | `signature` | `string` | The signature that was extracted from the commit. | + * | `payload` | `string` | The value that was signed. | + * + * These are the possible values for `reason` in the `verification` object: + * + * | Value | Description | + * | ----- | ----------- | + * | `expired_key` | The key that made the signature is expired. | + * | `not_signing_key` | The "signing" flag is not among the usage flags in the GPG key that made the signature. | + * | `gpgverify_error` | There was an error communicating with the signature verification service. | + * | `gpgverify_unavailable` | The signature verification service is currently unavailable. | + * | `unsigned` | The object does not include a signature. | + * | `unknown_signature_type` | A non-PGP signature was found in the commit. | + * | `no_user` | No user was associated with the `committer` email address in the commit. | + * | `unverified_email` | The `committer` email address in the commit was associated with a user, but the email address is not verified on her/his account. | + * | `bad_email` | The `committer` email address in the commit is not included in the identities of the PGP key that made the signature. | + * | `unknown_key` | The key that made the signature has not been registered with any user's account. | + * | `malformed_signature` | There was an error parsing the signature. | + * | `invalid` | The signature could not be cryptographically verified using the key whose key-id was found in the signature. | + * | `valid` | None of the above errors applied, so the signature is considered to be verified. | + */ + "repos/compare-commits-with-basehead": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The base branch and head branch to compare. This parameter expects the format `{base}...{head}`. */ + basehead: string; + }; + query: { + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["commit-comparison"]; + }; + }; + 404: components["responses"]["not_found"]; + 500: components["responses"]["internal_error"]; + }; + }; + /** + * Gets the contents of a file or directory in a repository. Specify the file path or directory in `:path`. If you omit + * `:path`, you will receive the contents of the repository's root directory. See the description below regarding what the API response includes for directories. + * + * Files and symlinks support [a custom media type](https://docs.github.com/rest/reference/repos#custom-media-types) for + * retrieving the raw content or rendered HTML (when supported). All content types support [a custom media + * type](https://docs.github.com/rest/reference/repos#custom-media-types) to ensure the content is returned in a consistent + * object format. + * + * **Note**: + * * To get a repository's contents recursively, you can [recursively get the tree](https://docs.github.com/rest/reference/git#trees). + * * This API has an upper limit of 1,000 files for a directory. If you need to retrieve more files, use the [Git Trees + * API](https://docs.github.com/rest/reference/git#get-a-tree). + * + * #### Size limits + * If the requested file's size is: + * * 1 MB or smaller: All features of this endpoint are supported. + * * Between 1-100 MB: Only the `raw` or `object` [custom media types](https://docs.github.com/rest/repos/contents#custom-media-types-for-repository-contents) are supported. Both will work as normal, except that when using the `object` media type, the `content` field will be an empty string and the `encoding` field will be `"none"`. To get the contents of these larger files, use the `raw` media type. + * * Greater than 100 MB: This endpoint is not supported. + * + * #### If the content is a directory + * The response will be an array of objects, one object for each item in the directory. + * When listing the contents of a directory, submodules have their "type" specified as "file". Logically, the value + * _should_ be "submodule". This behavior exists in API v3 [for backwards compatibility purposes](https://git.io/v1YCW). + * In the next major version of the API, the type will be returned as "submodule". + * + * #### If the content is a symlink + * If the requested `:path` points to a symlink, and the symlink's target is a normal file in the repository, then the + * API responds with the content of the file (in the format shown in the example. Otherwise, the API responds with an object + * describing the symlink itself. + * + * #### If the content is a submodule + * The `submodule_git_url` identifies the location of the submodule repository, and the `sha` identifies a specific + * commit within the submodule repository. Git uses the given URL when cloning the submodule repository, and checks out + * the submodule at that specific commit. + * + * If the submodule repository is not hosted on github.com, the Git URLs (`git_url` and `_links["git"]`) and the + * github.com URLs (`html_url` and `_links["html"]`) will have null values. + */ + "repos/get-content": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** path parameter */ + path: string; + }; + query: { + /** The name of the commit/branch/tag. Default: the repository’s default branch (usually `master`) */ + ref?: string; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/vnd.github.v3.object": components["schemas"]["content-tree"]; + "application/json": + | components["schemas"]["content-directory"] + | components["schemas"]["content-file"] + | components["schemas"]["content-symlink"] + | components["schemas"]["content-submodule"]; + }; + }; + 302: components["responses"]["found"]; + 403: components["responses"]["forbidden"]; + 404: components["responses"]["not_found"]; + }; + }; + /** Creates a new file or replaces an existing file in a repository. */ + "repos/create-or-update-file-contents": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** path parameter */ + path: string; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["file-commit"]; + }; + }; + /** Response */ + 201: { + content: { + "application/json": components["schemas"]["file-commit"]; + }; + }; + 404: components["responses"]["not_found"]; + 409: components["responses"]["conflict"]; + 422: components["responses"]["validation_failed"]; + }; + requestBody: { + content: { + "application/json": { + /** @description The commit message. */ + message: string; + /** @description The new file content, using Base64 encoding. */ + content: string; + /** @description **Required if you are updating a file**. The blob SHA of the file being replaced. */ + sha?: string; + /** @description The branch name. Default: the repository’s default branch (usually `master`) */ + branch?: string; + /** @description The person that committed the file. Default: the authenticated user. */ + committer?: { + /** @description The name of the author or committer of the commit. You'll receive a `422` status code if `name` is omitted. */ + name: string; + /** @description The email of the author or committer of the commit. You'll receive a `422` status code if `email` is omitted. */ + email: string; + /** @example "2013-01-05T13:13:22+05:00" */ + date?: string; + }; + /** @description The author of the file. Default: The `committer` or the authenticated user if you omit `committer`. */ + author?: { + /** @description The name of the author or committer of the commit. You'll receive a `422` status code if `name` is omitted. */ + name: string; + /** @description The email of the author or committer of the commit. You'll receive a `422` status code if `email` is omitted. */ + email: string; + /** @example "2013-01-15T17:13:22+05:00" */ + date?: string; + }; + }; + }; + }; + }; + /** + * Deletes a file in a repository. + * + * You can provide an additional `committer` parameter, which is an object containing information about the committer. Or, you can provide an `author` parameter, which is an object containing information about the author. + * + * The `author` section is optional and is filled in with the `committer` information if omitted. If the `committer` information is omitted, the authenticated user's information is used. + * + * You must provide values for both `name` and `email`, whether you choose to use `author` or `committer`. Otherwise, you'll receive a `422` status code. + */ + "repos/delete-file": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** path parameter */ + path: string; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["file-commit"]; + }; + }; + 404: components["responses"]["not_found"]; + 409: components["responses"]["conflict"]; + 422: components["responses"]["validation_failed"]; + 503: components["responses"]["service_unavailable"]; + }; + requestBody: { + content: { + "application/json": { + /** @description The commit message. */ + message: string; + /** @description The blob SHA of the file being replaced. */ + sha: string; + /** @description The branch name. Default: the repository’s default branch (usually `master`) */ + branch?: string; + /** @description object containing information about the committer. */ + committer?: { + /** @description The name of the author (or committer) of the commit */ + name?: string; + /** @description The email of the author (or committer) of the commit */ + email?: string; + }; + /** @description object containing information about the author. */ + author?: { + /** @description The name of the author (or committer) of the commit */ + name?: string; + /** @description The email of the author (or committer) of the commit */ + email?: string; + }; + }; + }; + }; + }; + /** + * Lists contributors to the specified repository and sorts them by the number of commits per contributor in descending order. This endpoint may return information that is a few hours old because the GitHub REST API v3 caches contributor data to improve performance. + * + * GitHub identifies contributors by author email address. This endpoint groups contribution counts by GitHub user, which includes all associated email addresses. To improve performance, only the first 500 author email addresses in the repository link to GitHub users. The rest will appear as anonymous contributors without associated GitHub user information. + */ + "repos/list-contributors": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + }; + query: { + /** Set to `1` or `true` to include anonymous contributors in results. */ + anon?: string; + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + }; + }; + responses: { + /** if repository contains content */ + 200: { + headers: {}; + content: { + "application/json": components["schemas"]["contributor"][]; + }; + }; + /** Response if repository is empty */ + 204: never; + 403: components["responses"]["forbidden"]; + 404: components["responses"]["not_found"]; + }; + }; + /** Lists all secrets available in a repository without revealing their encrypted values. You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the `dependabot_secrets` repository permission to use this endpoint. */ + "dependabot/list-repo-secrets": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + }; + query: { + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + }; + }; + responses: { + /** Response */ + 200: { + headers: {}; + content: { + "application/json": { + total_count: number; + secrets: components["schemas"]["dependabot-secret"][]; + }; + }; + }; + }; + }; + /** Gets your public key, which you need to encrypt secrets. You need to encrypt a secret before you can create or update secrets. Anyone with read access to the repository can use this endpoint. If the repository is private you must use an access token with the `repo` scope. GitHub Apps must have the `dependabot_secrets` repository permission to use this endpoint. */ + "dependabot/get-repo-public-key": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["dependabot-public-key"]; + }; + }; + }; + }; + /** Gets a single repository secret without revealing its encrypted value. You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the `dependabot_secrets` repository permission to use this endpoint. */ + "dependabot/get-repo-secret": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The name of the secret. */ + secret_name: components["parameters"]["secret-name"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["dependabot-secret"]; + }; + }; + }; + }; + /** + * Creates or updates a repository secret with an encrypted value. Encrypt your secret using + * [LibSodium](https://libsodium.gitbook.io/doc/bindings_for_other_languages). You must authenticate using an access + * token with the `repo` scope to use this endpoint. GitHub Apps must have the `dependabot_secrets` repository + * permission to use this endpoint. + * + * #### Example encrypting a secret using Node.js + * + * Encrypt your secret using the [tweetsodium](https://github.com/github/tweetsodium) library. + * + * ``` + * const sodium = require('tweetsodium'); + * + * const key = "base64-encoded-public-key"; + * const value = "plain-text-secret"; + * + * // Convert the message and key to Uint8Array's (Buffer implements that interface) + * const messageBytes = Buffer.from(value); + * const keyBytes = Buffer.from(key, 'base64'); + * + * // Encrypt using LibSodium. + * const encryptedBytes = sodium.seal(messageBytes, keyBytes); + * + * // Base64 the encrypted secret + * const encrypted = Buffer.from(encryptedBytes).toString('base64'); + * + * console.log(encrypted); + * ``` + * + * + * #### Example encrypting a secret using Python + * + * Encrypt your secret using [pynacl](https://pynacl.readthedocs.io/en/latest/public/#nacl-public-sealedbox) with Python 3. + * + * ``` + * from base64 import b64encode + * from nacl import encoding, public + * + * def encrypt(public_key: str, secret_value: str) -> str: + * """Encrypt a Unicode string using the public key.""" + * public_key = public.PublicKey(public_key.encode("utf-8"), encoding.Base64Encoder()) + * sealed_box = public.SealedBox(public_key) + * encrypted = sealed_box.encrypt(secret_value.encode("utf-8")) + * return b64encode(encrypted).decode("utf-8") + * ``` + * + * #### Example encrypting a secret using C# + * + * Encrypt your secret using the [Sodium.Core](https://www.nuget.org/packages/Sodium.Core/) package. + * + * ``` + * var secretValue = System.Text.Encoding.UTF8.GetBytes("mySecret"); + * var publicKey = Convert.FromBase64String("2Sg8iYjAxxmI2LvUXpJjkYrMxURPc8r+dB7TJyvvcCU="); + * + * var sealedPublicKeyBox = Sodium.SealedPublicKeyBox.Create(secretValue, publicKey); + * + * Console.WriteLine(Convert.ToBase64String(sealedPublicKeyBox)); + * ``` + * + * #### Example encrypting a secret using Ruby + * + * Encrypt your secret using the [rbnacl](https://github.com/RubyCrypto/rbnacl) gem. + * + * ```ruby + * require "rbnacl" + * require "base64" + * + * key = Base64.decode64("+ZYvJDZMHUfBkJdyq5Zm9SKqeuBQ4sj+6sfjlH4CgG0=") + * public_key = RbNaCl::PublicKey.new(key) + * + * box = RbNaCl::Boxes::Sealed.from_public_key(public_key) + * encrypted_secret = box.encrypt("my_secret") + * + * # Print the base64 encoded secret + * puts Base64.strict_encode64(encrypted_secret) + * ``` + */ + "dependabot/create-or-update-repo-secret": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The name of the secret. */ + secret_name: components["parameters"]["secret-name"]; + }; + }; + responses: { + /** Response when creating a secret */ + 201: { + content: { + "application/json": components["schemas"]["empty-object"]; + }; + }; + /** Response when updating a secret */ + 204: never; + }; + requestBody: { + content: { + "application/json": { + /** @description Value for your secret, encrypted with [LibSodium](https://libsodium.gitbook.io/doc/bindings_for_other_languages) using the public key retrieved from the [Get a repository public key](https://docs.github.com/rest/reference/dependabot#get-a-repository-public-key) endpoint. */ + encrypted_value?: string; + /** @description ID of the key you used to encrypt the secret. */ + key_id?: string; + }; + }; + }; + }; + /** Deletes a secret in a repository using the secret name. You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the `dependabot_secrets` repository permission to use this endpoint. */ + "dependabot/delete-repo-secret": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The name of the secret. */ + secret_name: components["parameters"]["secret-name"]; + }; + }; + responses: { + /** Response */ + 204: never; + }; + }; + /** Gets the diff of the dependency changes between two commits of a repository, based on the changes to the dependency manifests made in those commits. */ + "dependency-graph/diff-range": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The base and head Git revisions to compare. The Git revisions will be resolved to commit SHAs. Named revisions will be resolved to their corresponding HEAD commits, and an appropriate merge base will be determined. This parameter expects the format `{base}...{head}`. */ + basehead: string; + }; + query: { + /** The full path, relative to the repository root, of the dependency manifest file. */ + name?: components["parameters"]["manifest-path"]; + }; + }; + responses: { + /** Response */ + 200: { + headers: {}; + content: { + "application/json": components["schemas"]["dependency-graph-diff"]; + }; + }; + 403: components["responses"]["forbidden"]; + 404: components["responses"]["not_found"]; + }; + }; + /** Create a new snapshot of a repository's dependencies. You must authenticate using an access token with the `repo` scope to use this endpoint for a repository that the requesting user has access to. */ + "dependency-graph/create-repository-snapshot": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + }; + }; + responses: { + /** Response */ + 201: { + content: { + "application/json": { + /** @description ID of the created snapshot. */ + id: number; + /** @description The time at which the snapshot was created. */ + created_at: string; + /** @description Either "SUCCESS", "ACCEPTED", or "INVALID". "SUCCESS" indicates that the snapshot was successfully created and the repository's dependencies were updated. "ACCEPTED" indicates that the snapshot was successfully created, but the repository's dependencies were not updated. "INVALID" indicates that the snapshot was malformed. */ + result: string; + /** @description A message providing further details about the result, such as why the dependencies were not updated. */ + message: string; + }; + }; + }; + }; + requestBody: { + content: { + "application/json": components["schemas"]["snapshot"]; + }; + }; + }; + /** Simple filtering of deployments is available via query parameters: */ + "repos/list-deployments": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + }; + query: { + /** The SHA recorded at creation time. */ + sha?: string; + /** The name of the ref. This can be a branch, tag, or SHA. */ + ref?: string; + /** The name of the task for the deployment (e.g., `deploy` or `deploy:migrations`). */ + task?: string; + /** The name of the environment that was deployed to (e.g., `staging` or `production`). */ + environment?: string | null; + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + }; + }; + responses: { + /** Response */ + 200: { + headers: {}; + content: { + "application/json": components["schemas"]["deployment"][]; + }; + }; + }; + }; + /** + * Deployments offer a few configurable parameters with certain defaults. + * + * The `ref` parameter can be any named branch, tag, or SHA. At GitHub we often deploy branches and verify them + * before we merge a pull request. + * + * The `environment` parameter allows deployments to be issued to different runtime environments. Teams often have + * multiple environments for verifying their applications, such as `production`, `staging`, and `qa`. This parameter + * makes it easier to track which environments have requested deployments. The default environment is `production`. + * + * The `auto_merge` parameter is used to ensure that the requested ref is not behind the repository's default branch. If + * the ref _is_ behind the default branch for the repository, we will attempt to merge it for you. If the merge succeeds, + * the API will return a successful merge commit. If merge conflicts prevent the merge from succeeding, the API will + * return a failure response. + * + * By default, [commit statuses](https://docs.github.com/rest/commits/statuses) for every submitted context must be in a `success` + * state. The `required_contexts` parameter allows you to specify a subset of contexts that must be `success`, or to + * specify contexts that have not yet been submitted. You are not required to use commit statuses to deploy. If you do + * not require any contexts or create any commit statuses, the deployment will always succeed. + * + * The `payload` parameter is available for any extra information that a deployment system might need. It is a JSON text + * field that will be passed on when a deployment event is dispatched. + * + * The `task` parameter is used by the deployment system to allow different execution paths. In the web world this might + * be `deploy:migrations` to run schema changes on the system. In the compiled world this could be a flag to compile an + * application with debugging enabled. + * + * Users with `repo` or `repo_deployment` scopes can create a deployment for a given ref. + * + * #### Merged branch response + * You will see this response when GitHub automatically merges the base branch into the topic branch instead of creating + * a deployment. This auto-merge happens when: + * * Auto-merge option is enabled in the repository + * * Topic branch does not include the latest changes on the base branch, which is `master` in the response example + * * There are no merge conflicts + * + * If there are no new commits in the base branch, a new request to create a deployment should give a successful + * response. + * + * #### Merge conflict response + * This error happens when the `auto_merge` option is enabled and when the default branch (in this case `master`), can't + * be merged into the branch that's being deployed (in this case `topic-branch`), due to merge conflicts. + * + * #### Failed commit status checks + * This error happens when the `required_contexts` parameter indicates that one or more contexts need to have a `success` + * status for the commit to be deployed, but one or more of the required contexts do not have a state of `success`. + */ + "repos/create-deployment": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + }; + }; + responses: { + /** Response */ + 201: { + content: { + "application/json": components["schemas"]["deployment"]; + }; + }; + /** Merged branch response */ + 202: { + content: { + "application/json": { + message?: string; + }; + }; + }; + /** Conflict when there is a merge conflict or the commit's status checks failed */ + 409: unknown; + 422: components["responses"]["validation_failed"]; + }; + requestBody: { + content: { + "application/json": { + /** @description The ref to deploy. This can be a branch, tag, or SHA. */ + ref: string; + /** + * @description Specifies a task to execute (e.g., `deploy` or `deploy:migrations`). + * @default deploy + */ + task?: string; + /** + * @description Attempts to automatically merge the default branch into the requested ref, if it's behind the default branch. + * @default true + */ + auto_merge?: boolean; + /** @description The [status](https://docs.github.com/rest/commits/statuses) contexts to verify against commit status checks. If you omit this parameter, GitHub verifies all unique contexts before creating a deployment. To bypass checking entirely, pass an empty array. Defaults to all unique contexts. */ + required_contexts?: string[]; + payload?: { [key: string]: unknown } | string; + /** + * @description Name for the target deployment environment (e.g., `production`, `staging`, `qa`). + * @default production + */ + environment?: string; + /** + * @description Short description of the deployment. + * @default + */ + description?: string | null; + /** + * @description Specifies if the given environment is specific to the deployment and will no longer exist at some point in the future. Default: `false` + * @default false + */ + transient_environment?: boolean; + /** @description Specifies if the given environment is one that end-users directly interact with. Default: `true` when `environment` is `production` and `false` otherwise. */ + production_environment?: boolean; + }; + }; + }; + }; + "repos/get-deployment": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** deployment_id parameter */ + deployment_id: components["parameters"]["deployment-id"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["deployment"]; + }; + }; + 404: components["responses"]["not_found"]; + }; + }; + /** + * If the repository only has one deployment, you can delete the deployment regardless of its status. If the repository has more than one deployment, you can only delete inactive deployments. This ensures that repositories with multiple deployments will always have an active deployment. Anyone with `repo` or `repo_deployment` scopes can delete a deployment. + * + * To set a deployment as inactive, you must: + * + * * Create a new deployment that is active so that the system has a record of the current state, then delete the previously active deployment. + * * Mark the active deployment as inactive by adding any non-successful deployment status. + * + * For more information, see "[Create a deployment](https://docs.github.com/rest/reference/repos/#create-a-deployment)" and "[Create a deployment status](https://docs.github.com/rest/reference/repos#create-a-deployment-status)." + */ + "repos/delete-deployment": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** deployment_id parameter */ + deployment_id: components["parameters"]["deployment-id"]; + }; + }; + responses: { + /** Response */ + 204: never; + 404: components["responses"]["not_found"]; + 422: components["responses"]["validation_failed_simple"]; + }; + }; + /** Users with pull access can view deployment statuses for a deployment: */ + "repos/list-deployment-statuses": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** deployment_id parameter */ + deployment_id: components["parameters"]["deployment-id"]; + }; + query: { + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + }; + }; + responses: { + /** Response */ + 200: { + headers: {}; + content: { + "application/json": components["schemas"]["deployment-status"][]; + }; + }; + 404: components["responses"]["not_found"]; + }; + }; + /** + * Users with `push` access can create deployment statuses for a given deployment. + * + * GitHub Apps require `read & write` access to "Deployments" and `read-only` access to "Repo contents" (for private repos). OAuth Apps require the `repo_deployment` scope. + */ + "repos/create-deployment-status": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** deployment_id parameter */ + deployment_id: components["parameters"]["deployment-id"]; + }; + }; + responses: { + /** Response */ + 201: { + headers: { + Location?: string; + }; + content: { + "application/json": components["schemas"]["deployment-status"]; + }; + }; + 422: components["responses"]["validation_failed"]; + }; + requestBody: { + content: { + "application/json": { + /** + * @description The state of the status. When you set a transient deployment to `inactive`, the deployment will be shown as `destroyed` in GitHub. + * @enum {string} + */ + state: + | "error" + | "failure" + | "inactive" + | "in_progress" + | "queued" + | "pending" + | "success"; + /** + * @description The target URL to associate with this status. This URL should contain output to keep the user updated while the task is running or serve as historical information for what happened in the deployment. **Note:** It's recommended to use the `log_url` parameter, which replaces `target_url`. + * @default + */ + target_url?: string; + /** + * @description The full URL of the deployment's output. This parameter replaces `target_url`. We will continue to accept `target_url` to support legacy uses, but we recommend replacing `target_url` with `log_url`. Setting `log_url` will automatically set `target_url` to the same value. Default: `""` + * @default + */ + log_url?: string; + /** + * @description A short description of the status. The maximum description length is 140 characters. + * @default + */ + description?: string; + /** + * @description Name for the target deployment environment, which can be changed when setting a deploy status. For example, `production`, `staging`, or `qa`. + * @enum {string} + */ + environment?: "production" | "staging" | "qa"; + /** + * @description Sets the URL for accessing your environment. Default: `""` + * @default + */ + environment_url?: string; + /** @description Adds a new `inactive` status to all prior non-transient, non-production environment deployments with the same repository and `environment` name as the created status's deployment. An `inactive` status is only added to deployments that had a `success` state. Default: `true` */ + auto_inactive?: boolean; + }; + }; + }; + }; + /** Users with pull access can view a deployment status for a deployment: */ + "repos/get-deployment-status": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** deployment_id parameter */ + deployment_id: components["parameters"]["deployment-id"]; + status_id: number; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["deployment-status"]; + }; + }; + 404: components["responses"]["not_found"]; + }; + }; + /** + * You can use this endpoint to trigger a webhook event called `repository_dispatch` when you want activity that happens outside of GitHub to trigger a GitHub Actions workflow or GitHub App webhook. You must configure your GitHub Actions workflow or GitHub App to run when the `repository_dispatch` event occurs. For an example `repository_dispatch` webhook payload, see "[RepositoryDispatchEvent](https://docs.github.com/webhooks/event-payloads/#repository_dispatch)." + * + * The `client_payload` parameter is available for any extra information that your workflow might need. This parameter is a JSON payload that will be passed on when the webhook event is dispatched. For example, the `client_payload` can include a message that a user would like to send using a GitHub Actions workflow. Or the `client_payload` can be used as a test to debug your workflow. + * + * This endpoint requires write access to the repository by providing either: + * + * - Personal access tokens with `repo` scope. For more information, see "[Creating a personal access token for the command line](https://docs.github.com/articles/creating-a-personal-access-token-for-the-command-line)" in the GitHub Help documentation. + * - GitHub Apps with both `metadata:read` and `contents:read&write` permissions. + * + * This input example shows how you can use the `client_payload` as a test to debug your workflow. + */ + "repos/create-dispatch-event": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + }; + }; + responses: { + /** Response */ + 204: never; + 422: components["responses"]["validation_failed"]; + }; + requestBody: { + content: { + "application/json": { + /** @description A custom webhook event name. Must be 100 characters or fewer. */ + event_type: string; + /** @description JSON payload with extra information about the webhook event that your action or workflow may use. */ + client_payload?: { [key: string]: unknown }; + }; + }; + }; + }; + /** + * Get all environments for a repository. + * + * Anyone with read access to the repository can use this endpoint. If the repository is private, you must use an access token with the `repo` scope. GitHub Apps must have the `actions:read` permission to use this endpoint. + */ + "repos/get-all-environments": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + }; + query: { + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": { + /** + * @description The number of environments in this repository + * @example 5 + */ + total_count?: number; + environments?: components["schemas"]["environment"][]; + }; + }; + }; + }; + }; + /** Anyone with read access to the repository can use this endpoint. If the repository is private, you must use an access token with the `repo` scope. GitHub Apps must have the `actions:read` permission to use this endpoint. */ + "repos/get-environment": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The name of the environment */ + environment_name: components["parameters"]["environment-name"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["environment"]; + }; + }; + }; + }; + /** + * Create or update an environment with protection rules, such as required reviewers. For more information about environment protection rules, see "[Environments](/actions/reference/environments#environment-protection-rules)." + * + * **Note:** Although you can use this operation to specify that only branches that match specified name patterns can deploy to this environment, you must use the UI to set the name patterns. For more information, see "[Environments](/actions/reference/environments#deployment-branches)." + * + * **Note:** To create or update secrets for an environment, see "[Secrets](/rest/reference/actions#secrets)." + * + * You must authenticate using an access token with the repo scope to use this endpoint. + */ + "repos/create-or-update-environment": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The name of the environment */ + environment_name: components["parameters"]["environment-name"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["environment"]; + }; + }; + /** Validation error when the environment name is invalid or when `protected_branches` and `custom_branch_policies` in `deployment_branch_policy` are set to the same value */ + 422: { + content: { + "application/json": components["schemas"]["basic-error"]; + }; + }; + }; + requestBody: { + content: { + "application/json": { + wait_timer?: components["schemas"]["wait-timer"]; + /** @description The people or teams that may review jobs that reference the environment. You can list up to six users or teams as reviewers. The reviewers must have at least read access to the repository. Only one of the required reviewers needs to approve the job for it to proceed. */ + reviewers?: + | { + type?: components["schemas"]["deployment-reviewer-type"]; + /** + * @description The id of the user or team who can review the deployment + * @example 4532992 + */ + id?: number; + }[] + | null; + deployment_branch_policy?: components["schemas"]["deployment-branch-policy"]; + } | null; + }; + }; + }; + /** You must authenticate using an access token with the repo scope to use this endpoint. */ + "repos/delete-an-environment": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The name of the environment */ + environment_name: components["parameters"]["environment-name"]; + }; + }; + responses: { + /** Default response */ + 204: never; + }; + }; + "activity/list-repo-events": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + }; + query: { + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["event"][]; + }; + }; + }; + }; + "repos/list-forks": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + }; + query: { + /** The sort order. Can be either `newest`, `oldest`, or `stargazers`. */ + sort?: "newest" | "oldest" | "stargazers" | "watchers"; + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + }; + }; + responses: { + /** Response */ + 200: { + headers: {}; + content: { + "application/json": components["schemas"]["minimal-repository"][]; + }; + }; + 400: components["responses"]["bad_request"]; + }; + }; + /** + * Create a fork for the authenticated user. + * + * **Note**: Forking a Repository happens asynchronously. You may have to wait a short period of time before you can access the git objects. If this takes longer than 5 minutes, be sure to contact [GitHub Support](https://support.github.com/contact?tags=dotcom-rest-api). + */ + "repos/create-fork": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + }; + }; + responses: { + /** Response */ + 202: { + content: { + "application/json": components["schemas"]["full-repository"]; + }; + }; + 400: components["responses"]["bad_request"]; + 403: components["responses"]["forbidden"]; + 404: components["responses"]["not_found"]; + 422: components["responses"]["validation_failed"]; + }; + requestBody: { + content: { + "application/json": { + /** @description Optional parameter to specify the organization name if forking into an organization. */ + organization?: string; + /** @description When forking from an existing repository, a new name for the fork. */ + name?: string; + } | null; + }; + }; + }; + "git/create-blob": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + }; + }; + responses: { + /** Response */ + 201: { + headers: { + Location?: string; + }; + content: { + "application/json": components["schemas"]["short-blob"]; + }; + }; + 403: components["responses"]["forbidden"]; + 404: components["responses"]["not_found"]; + 409: components["responses"]["conflict"]; + 422: components["responses"]["validation_failed"]; + }; + requestBody: { + content: { + "application/json": { + /** @description The new blob's content. */ + content: string; + /** + * @description The encoding used for `content`. Currently, `"utf-8"` and `"base64"` are supported. + * @default utf-8 + */ + encoding?: string; + }; + }; + }; + }; + /** + * The `content` in the response will always be Base64 encoded. + * + * _Note_: This API supports blobs up to 100 megabytes in size. + */ + "git/get-blob": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + file_sha: string; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["blob"]; + }; + }; + 403: components["responses"]["forbidden"]; + 404: components["responses"]["not_found"]; + 422: components["responses"]["validation_failed"]; + }; + }; + /** + * Creates a new Git [commit object](https://git-scm.com/book/en/v1/Git-Internals-Git-Objects#Commit-Objects). + * + * **Signature verification object** + * + * The response will include a `verification` object that describes the result of verifying the commit's signature. The following fields are included in the `verification` object: + * + * | Name | Type | Description | + * | ---- | ---- | ----------- | + * | `verified` | `boolean` | Indicates whether GitHub considers the signature in this commit to be verified. | + * | `reason` | `string` | The reason for verified value. Possible values and their meanings are enumerated in the table below. | + * | `signature` | `string` | The signature that was extracted from the commit. | + * | `payload` | `string` | The value that was signed. | + * + * These are the possible values for `reason` in the `verification` object: + * + * | Value | Description | + * | ----- | ----------- | + * | `expired_key` | The key that made the signature is expired. | + * | `not_signing_key` | The "signing" flag is not among the usage flags in the GPG key that made the signature. | + * | `gpgverify_error` | There was an error communicating with the signature verification service. | + * | `gpgverify_unavailable` | The signature verification service is currently unavailable. | + * | `unsigned` | The object does not include a signature. | + * | `unknown_signature_type` | A non-PGP signature was found in the commit. | + * | `no_user` | No user was associated with the `committer` email address in the commit. | + * | `unverified_email` | The `committer` email address in the commit was associated with a user, but the email address is not verified on her/his account. | + * | `bad_email` | The `committer` email address in the commit is not included in the identities of the PGP key that made the signature. | + * | `unknown_key` | The key that made the signature has not been registered with any user's account. | + * | `malformed_signature` | There was an error parsing the signature. | + * | `invalid` | The signature could not be cryptographically verified using the key whose key-id was found in the signature. | + * | `valid` | None of the above errors applied, so the signature is considered to be verified. | + */ + "git/create-commit": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + }; + }; + responses: { + /** Response */ + 201: { + headers: { + Location?: string; + }; + content: { + "application/json": components["schemas"]["git-commit"]; + }; + }; + 404: components["responses"]["not_found"]; + 422: components["responses"]["validation_failed"]; + }; + requestBody: { + content: { + "application/json": { + /** @description The commit message */ + message: string; + /** @description The SHA of the tree object this commit points to */ + tree: string; + /** @description The SHAs of the commits that were the parents of this commit. If omitted or empty, the commit will be written as a root commit. For a single parent, an array of one SHA should be provided; for a merge commit, an array of more than one should be provided. */ + parents?: string[]; + /** @description Information about the author of the commit. By default, the `author` will be the authenticated user and the current date. See the `author` and `committer` object below for details. */ + author?: { + /** @description The name of the author (or committer) of the commit */ + name: string; + /** @description The email of the author (or committer) of the commit */ + email: string; + /** + * Format: date-time + * @description Indicates when this commit was authored (or committed). This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`. + */ + date?: string; + }; + /** @description Information about the person who is making the commit. By default, `committer` will use the information set in `author`. See the `author` and `committer` object below for details. */ + committer?: { + /** @description The name of the author (or committer) of the commit */ + name?: string; + /** @description The email of the author (or committer) of the commit */ + email?: string; + /** + * Format: date-time + * @description Indicates when this commit was authored (or committed). This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`. + */ + date?: string; + }; + /** @description The [PGP signature](https://en.wikipedia.org/wiki/Pretty_Good_Privacy) of the commit. GitHub adds the signature to the `gpgsig` header of the created commit. For a commit signature to be verifiable by Git or GitHub, it must be an ASCII-armored detached PGP signature over the string commit as it would be written to the object database. To pass a `signature` parameter, you need to first manually create a valid PGP signature, which can be complicated. You may find it easier to [use the command line](https://git-scm.com/book/id/v2/Git-Tools-Signing-Your-Work) to create signed commits. */ + signature?: string; + }; + }; + }; + }; + /** + * Gets a Git [commit object](https://git-scm.com/book/en/v1/Git-Internals-Git-Objects#Commit-Objects). + * + * **Signature verification object** + * + * The response will include a `verification` object that describes the result of verifying the commit's signature. The following fields are included in the `verification` object: + * + * | Name | Type | Description | + * | ---- | ---- | ----------- | + * | `verified` | `boolean` | Indicates whether GitHub considers the signature in this commit to be verified. | + * | `reason` | `string` | The reason for verified value. Possible values and their meanings are enumerated in the table below. | + * | `signature` | `string` | The signature that was extracted from the commit. | + * | `payload` | `string` | The value that was signed. | + * + * These are the possible values for `reason` in the `verification` object: + * + * | Value | Description | + * | ----- | ----------- | + * | `expired_key` | The key that made the signature is expired. | + * | `not_signing_key` | The "signing" flag is not among the usage flags in the GPG key that made the signature. | + * | `gpgverify_error` | There was an error communicating with the signature verification service. | + * | `gpgverify_unavailable` | The signature verification service is currently unavailable. | + * | `unsigned` | The object does not include a signature. | + * | `unknown_signature_type` | A non-PGP signature was found in the commit. | + * | `no_user` | No user was associated with the `committer` email address in the commit. | + * | `unverified_email` | The `committer` email address in the commit was associated with a user, but the email address is not verified on her/his account. | + * | `bad_email` | The `committer` email address in the commit is not included in the identities of the PGP key that made the signature. | + * | `unknown_key` | The key that made the signature has not been registered with any user's account. | + * | `malformed_signature` | There was an error parsing the signature. | + * | `invalid` | The signature could not be cryptographically verified using the key whose key-id was found in the signature. | + * | `valid` | None of the above errors applied, so the signature is considered to be verified. | + */ + "git/get-commit": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The SHA of the commit. */ + commit_sha: components["parameters"]["commit-sha"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["git-commit"]; + }; + }; + 404: components["responses"]["not_found"]; + }; + }; + /** + * Returns an array of references from your Git database that match the supplied name. The `:ref` in the URL must be formatted as `heads/` for branches and `tags/` for tags. If the `:ref` doesn't exist in the repository, but existing refs start with `:ref`, they will be returned as an array. + * + * When you use this endpoint without providing a `:ref`, it will return an array of all the references from your Git database, including notes and stashes if they exist on the server. Anything in the namespace is returned, not just `heads` and `tags`. + * + * **Note:** You need to explicitly [request a pull request](https://docs.github.com/rest/reference/pulls#get-a-pull-request) to trigger a test merge commit, which checks the mergeability of pull requests. For more information, see "[Checking mergeability of pull requests](https://docs.github.com/rest/guides/getting-started-with-the-git-database-api#checking-mergeability-of-pull-requests)". + * + * If you request matching references for a branch named `feature` but the branch `feature` doesn't exist, the response can still include other matching head refs that start with the word `feature`, such as `featureA` and `featureB`. + */ + "git/list-matching-refs": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** ref parameter */ + ref: string; + }; + query: { + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + }; + }; + responses: { + /** Response */ + 200: { + headers: {}; + content: { + "application/json": components["schemas"]["git-ref"][]; + }; + }; + }; + }; + /** + * Returns a single reference from your Git database. The `:ref` in the URL must be formatted as `heads/` for branches and `tags/` for tags. If the `:ref` doesn't match an existing ref, a `404` is returned. + * + * **Note:** You need to explicitly [request a pull request](https://docs.github.com/rest/reference/pulls#get-a-pull-request) to trigger a test merge commit, which checks the mergeability of pull requests. For more information, see "[Checking mergeability of pull requests](https://docs.github.com/rest/guides/getting-started-with-the-git-database-api#checking-mergeability-of-pull-requests)". + */ + "git/get-ref": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** ref parameter */ + ref: string; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["git-ref"]; + }; + }; + 404: components["responses"]["not_found"]; + }; + }; + /** Creates a reference for your repository. You are unable to create new references for empty repositories, even if the commit SHA-1 hash used exists. Empty repositories are repositories without branches. */ + "git/create-ref": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + }; + }; + responses: { + /** Response */ + 201: { + headers: { + Location?: string; + }; + content: { + "application/json": components["schemas"]["git-ref"]; + }; + }; + 422: components["responses"]["validation_failed"]; + }; + requestBody: { + content: { + "application/json": { + /** @description The name of the fully qualified reference (ie: `refs/heads/master`). If it doesn't start with 'refs' and have at least two slashes, it will be rejected. */ + ref: string; + /** @description The SHA1 value for this reference. */ + sha: string; + /** @example "refs/heads/newbranch" */ + key?: string; + }; + }; + }; + }; + "git/delete-ref": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** ref parameter */ + ref: string; + }; + }; + responses: { + /** Response */ + 204: never; + 422: components["responses"]["validation_failed"]; + }; + }; + "git/update-ref": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** ref parameter */ + ref: string; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["git-ref"]; + }; + }; + 422: components["responses"]["validation_failed"]; + }; + requestBody: { + content: { + "application/json": { + /** @description The SHA1 value to set this reference to */ + sha: string; + /** + * @description Indicates whether to force the update or to make sure the update is a fast-forward update. Leaving this out or setting it to `false` will make sure you're not overwriting work. + * @default false + */ + force?: boolean; + }; + }; + }; + }; + /** + * Note that creating a tag object does not create the reference that makes a tag in Git. If you want to create an annotated tag in Git, you have to do this call to create the tag object, and then [create](https://docs.github.com/rest/reference/git#create-a-reference) the `refs/tags/[tag]` reference. If you want to create a lightweight tag, you only have to [create](https://docs.github.com/rest/reference/git#create-a-reference) the tag reference - this call would be unnecessary. + * + * **Signature verification object** + * + * The response will include a `verification` object that describes the result of verifying the commit's signature. The following fields are included in the `verification` object: + * + * | Name | Type | Description | + * | ---- | ---- | ----------- | + * | `verified` | `boolean` | Indicates whether GitHub considers the signature in this commit to be verified. | + * | `reason` | `string` | The reason for verified value. Possible values and their meanings are enumerated in table below. | + * | `signature` | `string` | The signature that was extracted from the commit. | + * | `payload` | `string` | The value that was signed. | + * + * These are the possible values for `reason` in the `verification` object: + * + * | Value | Description | + * | ----- | ----------- | + * | `expired_key` | The key that made the signature is expired. | + * | `not_signing_key` | The "signing" flag is not among the usage flags in the GPG key that made the signature. | + * | `gpgverify_error` | There was an error communicating with the signature verification service. | + * | `gpgverify_unavailable` | The signature verification service is currently unavailable. | + * | `unsigned` | The object does not include a signature. | + * | `unknown_signature_type` | A non-PGP signature was found in the commit. | + * | `no_user` | No user was associated with the `committer` email address in the commit. | + * | `unverified_email` | The `committer` email address in the commit was associated with a user, but the email address is not verified on her/his account. | + * | `bad_email` | The `committer` email address in the commit is not included in the identities of the PGP key that made the signature. | + * | `unknown_key` | The key that made the signature has not been registered with any user's account. | + * | `malformed_signature` | There was an error parsing the signature. | + * | `invalid` | The signature could not be cryptographically verified using the key whose key-id was found in the signature. | + * | `valid` | None of the above errors applied, so the signature is considered to be verified. | + */ + "git/create-tag": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + }; + }; + responses: { + /** Response */ + 201: { + headers: { + Location?: string; + }; + content: { + "application/json": components["schemas"]["git-tag"]; + }; + }; + 422: components["responses"]["validation_failed"]; + }; + requestBody: { + content: { + "application/json": { + /** @description The tag's name. This is typically a version (e.g., "v0.0.1"). */ + tag: string; + /** @description The tag message. */ + message: string; + /** @description The SHA of the git object this is tagging. */ + object: string; + /** + * @description The type of the object we're tagging. Normally this is a `commit` but it can also be a `tree` or a `blob`. + * @enum {string} + */ + type: "commit" | "tree" | "blob"; + /** @description An object with information about the individual creating the tag. */ + tagger?: { + /** @description The name of the author of the tag */ + name: string; + /** @description The email of the author of the tag */ + email: string; + /** + * Format: date-time + * @description When this object was tagged. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`. + */ + date?: string; + }; + }; + }; + }; + }; + /** + * **Signature verification object** + * + * The response will include a `verification` object that describes the result of verifying the commit's signature. The following fields are included in the `verification` object: + * + * | Name | Type | Description | + * | ---- | ---- | ----------- | + * | `verified` | `boolean` | Indicates whether GitHub considers the signature in this commit to be verified. | + * | `reason` | `string` | The reason for verified value. Possible values and their meanings are enumerated in table below. | + * | `signature` | `string` | The signature that was extracted from the commit. | + * | `payload` | `string` | The value that was signed. | + * + * These are the possible values for `reason` in the `verification` object: + * + * | Value | Description | + * | ----- | ----------- | + * | `expired_key` | The key that made the signature is expired. | + * | `not_signing_key` | The "signing" flag is not among the usage flags in the GPG key that made the signature. | + * | `gpgverify_error` | There was an error communicating with the signature verification service. | + * | `gpgverify_unavailable` | The signature verification service is currently unavailable. | + * | `unsigned` | The object does not include a signature. | + * | `unknown_signature_type` | A non-PGP signature was found in the commit. | + * | `no_user` | No user was associated with the `committer` email address in the commit. | + * | `unverified_email` | The `committer` email address in the commit was associated with a user, but the email address is not verified on her/his account. | + * | `bad_email` | The `committer` email address in the commit is not included in the identities of the PGP key that made the signature. | + * | `unknown_key` | The key that made the signature has not been registered with any user's account. | + * | `malformed_signature` | There was an error parsing the signature. | + * | `invalid` | The signature could not be cryptographically verified using the key whose key-id was found in the signature. | + * | `valid` | None of the above errors applied, so the signature is considered to be verified. | + */ + "git/get-tag": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + tag_sha: string; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["git-tag"]; + }; + }; + 404: components["responses"]["not_found"]; + }; + }; + /** + * The tree creation API accepts nested entries. If you specify both a tree and a nested path modifying that tree, this endpoint will overwrite the contents of the tree with the new path contents, and create a new tree structure. + * + * If you use this endpoint to add, delete, or modify the file contents in a tree, you will need to commit the tree and then update a branch to point to the commit. For more information see "[Create a commit](https://docs.github.com/rest/reference/git#create-a-commit)" and "[Update a reference](https://docs.github.com/rest/reference/git#update-a-reference)." + */ + "git/create-tree": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + }; + }; + responses: { + /** Response */ + 201: { + headers: { + Location?: string; + }; + content: { + "application/json": components["schemas"]["git-tree"]; + }; + }; + 403: components["responses"]["forbidden"]; + 404: components["responses"]["not_found"]; + 422: components["responses"]["validation_failed"]; + }; + requestBody: { + content: { + "application/json": { + /** @description Objects (of `path`, `mode`, `type`, and `sha`) specifying a tree structure. */ + tree: { + /** @description The file referenced in the tree. */ + path?: string; + /** + * @description The file mode; one of `100644` for file (blob), `100755` for executable (blob), `040000` for subdirectory (tree), `160000` for submodule (commit), or `120000` for a blob that specifies the path of a symlink. + * @enum {string} + */ + mode?: "100644" | "100755" | "040000" | "160000" | "120000"; + /** + * @description Either `blob`, `tree`, or `commit`. + * @enum {string} + */ + type?: "blob" | "tree" | "commit"; + /** + * @description The SHA1 checksum ID of the object in the tree. Also called `tree.sha`. If the value is `null` then the file will be deleted. + * + * **Note:** Use either `tree.sha` or `content` to specify the contents of the entry. Using both `tree.sha` and `content` will return an error. + */ + sha?: string | null; + /** + * @description The content you want this file to have. GitHub will write this blob out and use that SHA for this entry. Use either this, or `tree.sha`. + * + * **Note:** Use either `tree.sha` or `content` to specify the contents of the entry. Using both `tree.sha` and `content` will return an error. + */ + content?: string; + }[]; + /** + * @description The SHA1 of an existing Git tree object which will be used as the base for the new tree. If provided, a new Git tree object will be created from entries in the Git tree object pointed to by `base_tree` and entries defined in the `tree` parameter. Entries defined in the `tree` parameter will overwrite items from `base_tree` with the same `path`. If you're creating new changes on a branch, then normally you'd set `base_tree` to the SHA1 of the Git tree object of the current latest commit on the branch you're working on. + * If not provided, GitHub will create a new Git tree object from only the entries defined in the `tree` parameter. If you create a new commit pointing to such a tree, then all files which were a part of the parent commit's tree and were not defined in the `tree` parameter will be listed as deleted by the new commit. + */ + base_tree?: string; + }; + }; + }; + }; + /** + * Returns a single tree using the SHA1 value for that tree. + * + * If `truncated` is `true` in the response then the number of items in the `tree` array exceeded our maximum limit. If you need to fetch more items, use the non-recursive method of fetching trees, and fetch one sub-tree at a time. + */ + "git/get-tree": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + tree_sha: string; + }; + query: { + /** Setting this parameter to any value returns the objects or subtrees referenced by the tree specified in `:tree_sha`. For example, setting `recursive` to any of the following will enable returning objects or subtrees: `0`, `1`, `"true"`, and `"false"`. Omit this parameter to prevent recursively returning objects or subtrees. */ + recursive?: string; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["git-tree"]; + }; + }; + 404: components["responses"]["not_found"]; + 422: components["responses"]["validation_failed"]; + }; + }; + "repos/list-webhooks": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + }; + query: { + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + }; + }; + responses: { + /** Response */ + 200: { + headers: {}; + content: { + "application/json": components["schemas"]["hook"][]; + }; + }; + 404: components["responses"]["not_found"]; + }; + }; + /** + * Repositories can have multiple webhooks installed. Each webhook should have a unique `config`. Multiple webhooks can + * share the same `config` as long as those webhooks do not have any `events` that overlap. + */ + "repos/create-webhook": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + }; + }; + responses: { + /** Response */ + 201: { + headers: { + Location?: string; + }; + content: { + "application/json": components["schemas"]["hook"]; + }; + }; + 403: components["responses"]["forbidden"]; + 404: components["responses"]["not_found"]; + 422: components["responses"]["validation_failed"]; + }; + requestBody: { + content: { + "application/json": { + /** @description Use `web` to create a webhook. Default: `web`. This parameter only accepts the value `web`. */ + name?: string; + /** @description Key/value pairs to provide settings for this webhook. [These are defined below](https://docs.github.com/rest/reference/repos#create-hook-config-params). */ + config?: { + url?: components["schemas"]["webhook-config-url"]; + content_type?: components["schemas"]["webhook-config-content-type"]; + secret?: components["schemas"]["webhook-config-secret"]; + insecure_ssl?: components["schemas"]["webhook-config-insecure-ssl"]; + /** @example "abc" */ + token?: string; + /** @example "sha256" */ + digest?: string; + }; + /** + * @description Determines what [events](https://docs.github.com/webhooks/event-payloads) the hook is triggered for. + * @default [ + * "push" + * ] + */ + events?: string[]; + /** + * @description Determines if notifications are sent when the webhook is triggered. Set to `true` to send notifications. + * @default true + */ + active?: boolean; + } | null; + }; + }; + }; + /** Returns a webhook configured in a repository. To get only the webhook `config` properties, see "[Get a webhook configuration for a repository](/rest/reference/repos#get-a-webhook-configuration-for-a-repository)." */ + "repos/get-webhook": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The unique identifier of the hook. */ + hook_id: components["parameters"]["hook-id"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["hook"]; + }; + }; + 404: components["responses"]["not_found"]; + }; + }; + "repos/delete-webhook": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The unique identifier of the hook. */ + hook_id: components["parameters"]["hook-id"]; + }; + }; + responses: { + /** Response */ + 204: never; + 404: components["responses"]["not_found"]; + }; + }; + /** Updates a webhook configured in a repository. If you previously had a `secret` set, you must provide the same `secret` or set a new `secret` or the secret will be removed. If you are only updating individual webhook `config` properties, use "[Update a webhook configuration for a repository](/rest/reference/repos#update-a-webhook-configuration-for-a-repository)." */ + "repos/update-webhook": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The unique identifier of the hook. */ + hook_id: components["parameters"]["hook-id"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["hook"]; + }; + }; + 404: components["responses"]["not_found"]; + 422: components["responses"]["validation_failed"]; + }; + requestBody: { + content: { + "application/json": { + /** @description Key/value pairs to provide settings for this webhook. [These are defined below](https://docs.github.com/rest/reference/repos#create-hook-config-params). */ + config?: { + url: components["schemas"]["webhook-config-url"]; + content_type?: components["schemas"]["webhook-config-content-type"]; + secret?: components["schemas"]["webhook-config-secret"]; + insecure_ssl?: components["schemas"]["webhook-config-insecure-ssl"]; + /** @example "bar@example.com" */ + address?: string; + /** @example "The Serious Room" */ + room?: string; + }; + /** + * @description Determines what [events](https://docs.github.com/webhooks/event-payloads) the hook is triggered for. This replaces the entire array of events. + * @default [ + * "push" + * ] + */ + events?: string[]; + /** @description Determines a list of events to be added to the list of events that the Hook triggers for. */ + add_events?: string[]; + /** @description Determines a list of events to be removed from the list of events that the Hook triggers for. */ + remove_events?: string[]; + /** + * @description Determines if notifications are sent when the webhook is triggered. Set to `true` to send notifications. + * @default true + */ + active?: boolean; + }; + }; + }; + }; + /** + * Returns the webhook configuration for a repository. To get more information about the webhook, including the `active` state and `events`, use "[Get a repository webhook](/rest/reference/orgs#get-a-repository-webhook)." + * + * Access tokens must have the `read:repo_hook` or `repo` scope, and GitHub Apps must have the `repository_hooks:read` permission. + */ + "repos/get-webhook-config-for-repo": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The unique identifier of the hook. */ + hook_id: components["parameters"]["hook-id"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["webhook-config"]; + }; + }; + }; + }; + /** + * Updates the webhook configuration for a repository. To update more information about the webhook, including the `active` state and `events`, use "[Update a repository webhook](/rest/reference/orgs#update-a-repository-webhook)." + * + * Access tokens must have the `write:repo_hook` or `repo` scope, and GitHub Apps must have the `repository_hooks:write` permission. + */ + "repos/update-webhook-config-for-repo": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The unique identifier of the hook. */ + hook_id: components["parameters"]["hook-id"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["webhook-config"]; + }; + }; + }; + requestBody: { + content: { + "application/json": { + url?: components["schemas"]["webhook-config-url"]; + content_type?: components["schemas"]["webhook-config-content-type"]; + secret?: components["schemas"]["webhook-config-secret"]; + insecure_ssl?: components["schemas"]["webhook-config-insecure-ssl"]; + }; + }; + }; + }; + /** Returns a list of webhook deliveries for a webhook configured in a repository. */ + "repos/list-webhook-deliveries": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The unique identifier of the hook. */ + hook_id: components["parameters"]["hook-id"]; + }; + query: { + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Used for pagination: the starting delivery from which the page of deliveries is fetched. Refer to the `link` header for the next and previous page cursors. */ + cursor?: components["parameters"]["cursor"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["hook-delivery-item"][]; + }; + }; + 400: components["responses"]["bad_request"]; + 422: components["responses"]["validation_failed"]; + }; + }; + /** Returns a delivery for a webhook configured in a repository. */ + "repos/get-webhook-delivery": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The unique identifier of the hook. */ + hook_id: components["parameters"]["hook-id"]; + delivery_id: components["parameters"]["delivery-id"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["hook-delivery"]; + }; + }; + 400: components["responses"]["bad_request"]; + 422: components["responses"]["validation_failed"]; + }; + }; + /** Redeliver a webhook delivery for a webhook configured in a repository. */ + "repos/redeliver-webhook-delivery": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The unique identifier of the hook. */ + hook_id: components["parameters"]["hook-id"]; + delivery_id: components["parameters"]["delivery-id"]; + }; + }; + responses: { + 202: components["responses"]["accepted"]; + 400: components["responses"]["bad_request"]; + 422: components["responses"]["validation_failed"]; + }; + }; + /** This will trigger a [ping event](https://docs.github.com/webhooks/#ping-event) to be sent to the hook. */ + "repos/ping-webhook": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The unique identifier of the hook. */ + hook_id: components["parameters"]["hook-id"]; + }; + }; + responses: { + /** Response */ + 204: never; + 404: components["responses"]["not_found"]; + }; + }; + /** + * This will trigger the hook with the latest push to the current repository if the hook is subscribed to `push` events. If the hook is not subscribed to `push` events, the server will respond with 204 but no test POST will be generated. + * + * **Note**: Previously `/repos/:owner/:repo/hooks/:hook_id/test` + */ + "repos/test-push-webhook": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The unique identifier of the hook. */ + hook_id: components["parameters"]["hook-id"]; + }; + }; + responses: { + /** Response */ + 204: never; + 404: components["responses"]["not_found"]; + }; + }; + /** + * View the progress of an import. + * + * **Import status** + * + * This section includes details about the possible values of the `status` field of the Import Progress response. + * + * An import that does not have errors will progress through these steps: + * + * * `detecting` - the "detection" step of the import is in progress because the request did not include a `vcs` parameter. The import is identifying the type of source control present at the URL. + * * `importing` - the "raw" step of the import is in progress. This is where commit data is fetched from the original repository. The import progress response will include `commit_count` (the total number of raw commits that will be imported) and `percent` (0 - 100, the current progress through the import). + * * `mapping` - the "rewrite" step of the import is in progress. This is where SVN branches are converted to Git branches, and where author updates are applied. The import progress response does not include progress information. + * * `pushing` - the "push" step of the import is in progress. This is where the importer updates the repository on GitHub. The import progress response will include `push_percent`, which is the percent value reported by `git push` when it is "Writing objects". + * * `complete` - the import is complete, and the repository is ready on GitHub. + * + * If there are problems, you will see one of these in the `status` field: + * + * * `auth_failed` - the import requires authentication in order to connect to the original repository. To update authentication for the import, please see the [Update an import](https://docs.github.com/rest/reference/migrations#update-an-import) section. + * * `error` - the import encountered an error. The import progress response will include the `failed_step` and an error message. Contact [GitHub Support](https://support.github.com/contact?tags=dotcom-rest-api) for more information. + * * `detection_needs_auth` - the importer requires authentication for the originating repository to continue detection. To update authentication for the import, please see the [Update an import](https://docs.github.com/rest/reference/migrations#update-an-import) section. + * * `detection_found_nothing` - the importer didn't recognize any source control at the URL. To resolve, [Cancel the import](https://docs.github.com/rest/reference/migrations#cancel-an-import) and [retry](https://docs.github.com/rest/reference/migrations#start-an-import) with the correct URL. + * * `detection_found_multiple` - the importer found several projects or repositories at the provided URL. When this is the case, the Import Progress response will also include a `project_choices` field with the possible project choices as values. To update project choice, please see the [Update an import](https://docs.github.com/rest/reference/migrations#update-an-import) section. + * + * **The project_choices field** + * + * When multiple projects are found at the provided URL, the response hash will include a `project_choices` field, the value of which is an array of hashes each representing a project choice. The exact key/value pairs of the project hashes will differ depending on the version control type. + * + * **Git LFS related fields** + * + * This section includes details about Git LFS related fields that may be present in the Import Progress response. + * + * * `use_lfs` - describes whether the import has been opted in or out of using Git LFS. The value can be `opt_in`, `opt_out`, or `undecided` if no action has been taken. + * * `has_large_files` - the boolean value describing whether files larger than 100MB were found during the `importing` step. + * * `large_files_size` - the total size in gigabytes of files larger than 100MB found in the originating repository. + * * `large_files_count` - the total number of files larger than 100MB found in the originating repository. To see a list of these files, make a "Get Large Files" request. + */ + "migrations/get-import-status": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["import"]; + }; + }; + 404: components["responses"]["not_found"]; + }; + }; + /** Start a source import to a GitHub repository using GitHub Importer. */ + "migrations/start-import": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + }; + }; + responses: { + /** Response */ + 201: { + headers: { + Location?: string; + }; + content: { + "application/json": components["schemas"]["import"]; + }; + }; + 404: components["responses"]["not_found"]; + 422: components["responses"]["validation_failed"]; + }; + requestBody: { + content: { + "application/json": { + /** @description The URL of the originating repository. */ + vcs_url: string; + /** + * @description The originating VCS type. Without this parameter, the import job will take additional time to detect the VCS type before beginning the import. This detection step will be reflected in the response. + * @enum {string} + */ + vcs?: "subversion" | "git" | "mercurial" | "tfvc"; + /** @description If authentication is required, the username to provide to `vcs_url`. */ + vcs_username?: string; + /** @description If authentication is required, the password to provide to `vcs_url`. */ + vcs_password?: string; + /** @description For a tfvc import, the name of the project that is being imported. */ + tfvc_project?: string; + }; + }; + }; + }; + /** Stop an import for a repository. */ + "migrations/cancel-import": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + }; + }; + responses: { + /** Response */ + 204: never; + }; + }; + /** + * An import can be updated with credentials or a project choice by passing in the appropriate parameters in this API + * request. If no parameters are provided, the import will be restarted. + * + * Some servers (e.g. TFS servers) can have several projects at a single URL. In those cases the import progress will + * have the status `detection_found_multiple` and the Import Progress response will include a `project_choices` array. + * You can select the project to import by providing one of the objects in the `project_choices` array in the update request. + */ + "migrations/update-import": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["import"]; + }; + }; + }; + requestBody: { + content: { + "application/json": { + /** @description The username to provide to the originating repository. */ + vcs_username?: string; + /** @description The password to provide to the originating repository. */ + vcs_password?: string; + /** + * @description The type of version control system you are migrating from. + * @example "git" + * @enum {string} + */ + vcs?: "subversion" | "tfvc" | "git" | "mercurial"; + /** + * @description For a tfvc import, the name of the project that is being imported. + * @example "project1" + */ + tfvc_project?: string; + } | null; + }; + }; + }; + /** + * Each type of source control system represents authors in a different way. For example, a Git commit author has a display name and an email address, but a Subversion commit author just has a username. The GitHub Importer will make the author information valid, but the author might not be correct. For example, it will change the bare Subversion username `hubot` into something like `hubot `. + * + * This endpoint and the [Map a commit author](https://docs.github.com/rest/reference/migrations#map-a-commit-author) endpoint allow you to provide correct Git author information. + */ + "migrations/get-commit-authors": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + }; + query: { + /** A user ID. Only return users with an ID greater than this ID. */ + since?: components["parameters"]["since-user"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["porter-author"][]; + }; + }; + 404: components["responses"]["not_found"]; + }; + }; + /** Update an author's identity for the import. Your application can continue updating authors any time before you push new commits to the repository. */ + "migrations/map-commit-author": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + author_id: number; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["porter-author"]; + }; + }; + 404: components["responses"]["not_found"]; + 422: components["responses"]["validation_failed"]; + }; + requestBody: { + content: { + "application/json": { + /** @description The new Git author email. */ + email?: string; + /** @description The new Git author name. */ + name?: string; + }; + }; + }; + }; + /** List files larger than 100MB found during the import */ + "migrations/get-large-files": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["porter-large-file"][]; + }; + }; + }; + }; + /** You can import repositories from Subversion, Mercurial, and TFS that include files larger than 100MB. This ability is powered by [Git LFS](https://git-lfs.github.com). You can learn more about our LFS feature and working with large files [on our help site](https://docs.github.com/articles/versioning-large-files/). */ + "migrations/set-lfs-preference": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["import"]; + }; + }; + 422: components["responses"]["validation_failed"]; + }; + requestBody: { + content: { + "application/json": { + /** + * @description Whether to store large files during the import. `opt_in` means large files will be stored using Git LFS. `opt_out` means large files will be removed during the import. + * @enum {string} + */ + use_lfs: "opt_in" | "opt_out"; + }; + }; + }; + }; + /** + * Enables an authenticated GitHub App to find the repository's installation information. The installation's account type will be either an organization or a user account, depending which account the repository belongs to. + * + * You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. + */ + "apps/get-repo-installation": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["installation"]; + }; + }; + 301: components["responses"]["moved_permanently"]; + 404: components["responses"]["not_found"]; + }; + }; + /** Shows which type of GitHub user can interact with this repository and when the restriction expires. If there are no restrictions, you will see an empty response. */ + "interactions/get-restrictions-for-repo": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": Partial< + components["schemas"]["interaction-limit-response"] + > & + Partial<{ [key: string]: unknown }>; + }; + }; + }; + }; + /** Temporarily restricts interactions to a certain type of GitHub user within the given repository. You must have owner or admin access to set these restrictions. If an interaction limit is set for the user or organization that owns this repository, you will receive a `409 Conflict` response and will not be able to use this endpoint to change the interaction limit for a single repository. */ + "interactions/set-restrictions-for-repo": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["interaction-limit-response"]; + }; + }; + /** Response */ + 409: unknown; + }; + requestBody: { + content: { + "application/json": components["schemas"]["interaction-limit"]; + }; + }; + }; + /** Removes all interaction restrictions from the given repository. You must have owner or admin access to remove restrictions. If the interaction limit is set for the user or organization that owns this repository, you will receive a `409 Conflict` response and will not be able to use this endpoint to change the interaction limit for a single repository. */ + "interactions/remove-restrictions-for-repo": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + }; + }; + responses: { + /** Response */ + 204: never; + /** Response */ + 409: unknown; + }; + }; + /** When authenticating as a user with admin rights to a repository, this endpoint will list all currently open repository invitations. */ + "repos/list-invitations": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + }; + query: { + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + }; + }; + responses: { + /** Response */ + 200: { + headers: {}; + content: { + "application/json": components["schemas"]["repository-invitation"][]; + }; + }; + }; + }; + "repos/delete-invitation": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The unique identifier of the invitation. */ + invitation_id: components["parameters"]["invitation-id"]; + }; + }; + responses: { + /** Response */ + 204: never; + }; + }; + "repos/update-invitation": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The unique identifier of the invitation. */ + invitation_id: components["parameters"]["invitation-id"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["repository-invitation"]; + }; + }; + }; + requestBody: { + content: { + "application/json": { + /** + * @description The permissions that the associated user will have on the repository. Valid values are `read`, `write`, `maintain`, `triage`, and `admin`. + * @enum {string} + */ + permissions?: "read" | "write" | "maintain" | "triage" | "admin"; + }; + }; + }; + }; + /** + * List issues in a repository. + * + * **Note**: GitHub's REST API v3 considers every pull request an issue, but not every issue is a pull request. For this + * reason, "Issues" endpoints may return both issues and pull requests in the response. You can identify pull requests by + * the `pull_request` key. Be aware that the `id` of a pull request returned from "Issues" endpoints will be an _issue id_. To find out the pull + * request id, use the "[List pull requests](https://docs.github.com/rest/reference/pulls#list-pull-requests)" endpoint. + */ + "issues/list-for-repo": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + }; + query: { + /** If an `integer` is passed, it should refer to a milestone by its `number` field. If the string `*` is passed, issues with any milestone are accepted. If the string `none` is passed, issues without milestones are returned. */ + milestone?: string; + /** Indicates the state of the issues to return. Can be either `open`, `closed`, or `all`. */ + state?: "open" | "closed" | "all"; + /** Can be the name of a user. Pass in `none` for issues with no assigned user, and `*` for issues assigned to any user. */ + assignee?: string; + /** The user that created the issue. */ + creator?: string; + /** A user that's mentioned in the issue. */ + mentioned?: string; + /** A list of comma separated label names. Example: `bug,ui,@high` */ + labels?: components["parameters"]["labels"]; + /** What to sort results by. Can be either `created`, `updated`, `comments`. */ + sort?: "created" | "updated" | "comments"; + /** The direction to sort the results by. */ + direction?: components["parameters"]["direction"]; + /** Only show notifications updated after the given time. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`. */ + since?: components["parameters"]["since"]; + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + }; + }; + responses: { + /** Response */ + 200: { + headers: {}; + content: { + "application/json": components["schemas"]["issue"][]; + }; + }; + 301: components["responses"]["moved_permanently"]; + 404: components["responses"]["not_found"]; + 422: components["responses"]["validation_failed"]; + }; + }; + /** + * Any user with pull access to a repository can create an issue. If [issues are disabled in the repository](https://docs.github.com/articles/disabling-issues/), the API returns a `410 Gone` status. + * + * This endpoint triggers [notifications](https://docs.github.com/github/managing-subscriptions-and-notifications-on-github/about-notifications). Creating content too quickly using this endpoint may result in secondary rate limiting. See "[Secondary rate limits](https://docs.github.com/rest/overview/resources-in-the-rest-api#secondary-rate-limits)" and "[Dealing with secondary rate limits](https://docs.github.com/rest/guides/best-practices-for-integrators#dealing-with-secondary-rate-limits)" for details. + */ + "issues/create": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + }; + }; + responses: { + /** Response */ + 201: { + headers: { + Location?: string; + }; + content: { + "application/json": components["schemas"]["issue"]; + }; + }; + 403: components["responses"]["forbidden"]; + 404: components["responses"]["not_found"]; + 410: components["responses"]["gone"]; + 422: components["responses"]["validation_failed"]; + 503: components["responses"]["service_unavailable"]; + }; + requestBody: { + content: { + "application/json": { + /** @description The title of the issue. */ + title: string | number; + /** @description The contents of the issue. */ + body?: string; + /** @description Login for the user that this issue should be assigned to. _NOTE: Only users with push access can set the assignee for new issues. The assignee is silently dropped otherwise. **This field is deprecated.**_ */ + assignee?: string | null; + milestone?: (string | number) | null; + /** @description Labels to associate with this issue. _NOTE: Only users with push access can set labels for new issues. Labels are silently dropped otherwise._ */ + labels?: ( + | string + | { + id?: number; + name?: string; + description?: string | null; + color?: string | null; + } + )[]; + /** @description Logins for Users to assign to this issue. _NOTE: Only users with push access can set assignees for new issues. Assignees are silently dropped otherwise._ */ + assignees?: string[]; + }; + }; + }; + }; + /** By default, Issue Comments are ordered by ascending ID. */ + "issues/list-comments-for-repo": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + }; + query: { + /** The property to sort the results by. `created` means when the repository was starred. `updated` means when the repository was last pushed to. */ + sort?: components["parameters"]["sort"]; + /** Either `asc` or `desc`. Ignored without the `sort` parameter. */ + direction?: "asc" | "desc"; + /** Only show notifications updated after the given time. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`. */ + since?: components["parameters"]["since"]; + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + }; + }; + responses: { + /** Response */ + 200: { + headers: {}; + content: { + "application/json": components["schemas"]["issue-comment"][]; + }; + }; + 404: components["responses"]["not_found"]; + 422: components["responses"]["validation_failed"]; + }; + }; + "issues/get-comment": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The unique identifier of the comment. */ + comment_id: components["parameters"]["comment-id"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["issue-comment"]; + }; + }; + 404: components["responses"]["not_found"]; + }; + }; + "issues/delete-comment": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The unique identifier of the comment. */ + comment_id: components["parameters"]["comment-id"]; + }; + }; + responses: { + /** Response */ + 204: never; + }; + }; + "issues/update-comment": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The unique identifier of the comment. */ + comment_id: components["parameters"]["comment-id"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["issue-comment"]; + }; + }; + 422: components["responses"]["validation_failed"]; + }; + requestBody: { + content: { + "application/json": { + /** @description The contents of the comment. */ + body: string; + }; + }; + }; + }; + /** List the reactions to an [issue comment](https://docs.github.com/rest/reference/issues#comments). */ + "reactions/list-for-issue-comment": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The unique identifier of the comment. */ + comment_id: components["parameters"]["comment-id"]; + }; + query: { + /** Returns a single [reaction type](https://docs.github.com/rest/reference/reactions#reaction-types). Omit this parameter to list all reactions to an issue comment. */ + content?: + | "+1" + | "-1" + | "laugh" + | "confused" + | "heart" + | "hooray" + | "rocket" + | "eyes"; + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + }; + }; + responses: { + /** Response */ + 200: { + headers: {}; + content: { + "application/json": components["schemas"]["reaction"][]; + }; + }; + 404: components["responses"]["not_found"]; + }; + }; + /** Create a reaction to an [issue comment](https://docs.github.com/rest/reference/issues#comments). A response with an HTTP `200` status means that you already added the reaction type to this issue comment. */ + "reactions/create-for-issue-comment": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The unique identifier of the comment. */ + comment_id: components["parameters"]["comment-id"]; + }; + }; + responses: { + /** Reaction exists */ + 200: { + content: { + "application/json": components["schemas"]["reaction"]; + }; + }; + /** Reaction created */ + 201: { + content: { + "application/json": components["schemas"]["reaction"]; + }; + }; + 422: components["responses"]["validation_failed"]; + }; + requestBody: { + content: { + "application/json": { + /** + * @description The [reaction type](https://docs.github.com/rest/reference/reactions#reaction-types) to add to the issue comment. + * @enum {string} + */ + content: + | "+1" + | "-1" + | "laugh" + | "confused" + | "heart" + | "hooray" + | "rocket" + | "eyes"; + }; + }; + }; + }; + /** + * **Note:** You can also specify a repository by `repository_id` using the route `DELETE delete /repositories/:repository_id/issues/comments/:comment_id/reactions/:reaction_id`. + * + * Delete a reaction to an [issue comment](https://docs.github.com/rest/reference/issues#comments). + */ + "reactions/delete-for-issue-comment": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The unique identifier of the comment. */ + comment_id: components["parameters"]["comment-id"]; + /** The unique identifier of the reaction. */ + reaction_id: components["parameters"]["reaction-id"]; + }; + }; + responses: { + /** Response */ + 204: never; + }; + }; + "issues/list-events-for-repo": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + }; + query: { + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + }; + }; + responses: { + /** Response */ + 200: { + headers: {}; + content: { + "application/json": components["schemas"]["issue-event"][]; + }; + }; + 422: components["responses"]["validation_failed"]; + }; + }; + "issues/get-event": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + event_id: number; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["issue-event"]; + }; + }; + 403: components["responses"]["forbidden"]; + 404: components["responses"]["not_found"]; + 410: components["responses"]["gone"]; + }; + }; + /** + * The API returns a [`301 Moved Permanently` status](https://docs.github.com/rest/overview/resources-in-the-rest-api#http-redirects-redirects) if the issue was + * [transferred](https://docs.github.com/articles/transferring-an-issue-to-another-repository/) to another repository. If + * the issue was transferred to or deleted from a repository where the authenticated user lacks read access, the API + * returns a `404 Not Found` status. If the issue was deleted from a repository where the authenticated user has read + * access, the API returns a `410 Gone` status. To receive webhook events for transferred and deleted issues, subscribe + * to the [`issues`](https://docs.github.com/webhooks/event-payloads/#issues) webhook. + * + * **Note**: GitHub's REST API v3 considers every pull request an issue, but not every issue is a pull request. For this + * reason, "Issues" endpoints may return both issues and pull requests in the response. You can identify pull requests by + * the `pull_request` key. Be aware that the `id` of a pull request returned from "Issues" endpoints will be an _issue id_. To find out the pull + * request id, use the "[List pull requests](https://docs.github.com/rest/reference/pulls#list-pull-requests)" endpoint. + */ + "issues/get": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The number that identifies the issue. */ + issue_number: components["parameters"]["issue-number"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["issue"]; + }; + }; + 301: components["responses"]["moved_permanently"]; + 304: components["responses"]["not_modified"]; + 404: components["responses"]["not_found"]; + 410: components["responses"]["gone"]; + }; + }; + /** Issue owners and users with push access can edit an issue. */ + "issues/update": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The number that identifies the issue. */ + issue_number: components["parameters"]["issue-number"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["issue"]; + }; + }; + 301: components["responses"]["moved_permanently"]; + 403: components["responses"]["forbidden"]; + 404: components["responses"]["not_found"]; + 410: components["responses"]["gone"]; + 422: components["responses"]["validation_failed"]; + 503: components["responses"]["service_unavailable"]; + }; + requestBody: { + content: { + "application/json": { + /** @description The title of the issue. */ + title?: (string | number) | null; + /** @description The contents of the issue. */ + body?: string | null; + /** @description Login for the user that this issue should be assigned to. **This field is deprecated.** */ + assignee?: string | null; + /** + * @description State of the issue. Either `open` or `closed`. + * @enum {string} + */ + state?: "open" | "closed"; + milestone?: (string | number) | null; + /** @description Labels to associate with this issue. Pass one or more Labels to _replace_ the set of Labels on this Issue. Send an empty array (`[]`) to clear all Labels from the Issue. _NOTE: Only users with push access can set labels for issues. Labels are silently dropped otherwise._ */ + labels?: ( + | string + | { + id?: number; + name?: string; + description?: string | null; + color?: string | null; + } + )[]; + /** @description Logins for Users to assign to this issue. Pass one or more user logins to _replace_ the set of assignees on this Issue. Send an empty array (`[]`) to clear all assignees from the Issue. _NOTE: Only users with push access can set assignees for new issues. Assignees are silently dropped otherwise._ */ + assignees?: string[]; + }; + }; + }; + }; + /** Adds up to 10 assignees to an issue. Users already assigned to an issue are not replaced. */ + "issues/add-assignees": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The number that identifies the issue. */ + issue_number: components["parameters"]["issue-number"]; + }; + }; + responses: { + /** Response */ + 201: { + content: { + "application/json": components["schemas"]["issue"]; + }; + }; + }; + requestBody: { + content: { + "application/json": { + /** @description Usernames of people to assign this issue to. _NOTE: Only users with push access can add assignees to an issue. Assignees are silently ignored otherwise._ */ + assignees?: string[]; + }; + }; + }; + }; + /** Removes one or more assignees from an issue. */ + "issues/remove-assignees": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The number that identifies the issue. */ + issue_number: components["parameters"]["issue-number"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["issue"]; + }; + }; + }; + requestBody: { + content: { + "application/json": { + /** @description Usernames of assignees to remove from an issue. _NOTE: Only users with push access can remove assignees from an issue. Assignees are silently ignored otherwise._ */ + assignees: string[]; + }; + }; + }; + }; + /** Issue Comments are ordered by ascending ID. */ + "issues/list-comments": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The number that identifies the issue. */ + issue_number: components["parameters"]["issue-number"]; + }; + query: { + /** Only show notifications updated after the given time. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`. */ + since?: components["parameters"]["since"]; + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + }; + }; + responses: { + /** Response */ + 200: { + headers: {}; + content: { + "application/json": components["schemas"]["issue-comment"][]; + }; + }; + 404: components["responses"]["not_found"]; + 410: components["responses"]["gone"]; + }; + }; + /** This endpoint triggers [notifications](https://docs.github.com/github/managing-subscriptions-and-notifications-on-github/about-notifications). Creating content too quickly using this endpoint may result in secondary rate limiting. See "[Secondary rate limits](https://docs.github.com/rest/overview/resources-in-the-rest-api#secondary-rate-limits)" and "[Dealing with secondary rate limits](https://docs.github.com/rest/guides/best-practices-for-integrators#dealing-with-secondary-rate-limits)" for details. */ + "issues/create-comment": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The number that identifies the issue. */ + issue_number: components["parameters"]["issue-number"]; + }; + }; + responses: { + /** Response */ + 201: { + headers: { + Location?: string; + }; + content: { + "application/json": components["schemas"]["issue-comment"]; + }; + }; + 403: components["responses"]["forbidden"]; + 404: components["responses"]["not_found"]; + 410: components["responses"]["gone"]; + 422: components["responses"]["validation_failed"]; + }; + requestBody: { + content: { + "application/json": { + /** @description The contents of the comment. */ + body: string; + }; + }; + }; + }; + "issues/list-events": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The number that identifies the issue. */ + issue_number: components["parameters"]["issue-number"]; + }; + query: { + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + }; + }; + responses: { + /** Response */ + 200: { + headers: {}; + content: { + "application/json": components["schemas"]["issue-event-for-issue"][]; + }; + }; + 410: components["responses"]["gone"]; + }; + }; + "issues/list-labels-on-issue": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The number that identifies the issue. */ + issue_number: components["parameters"]["issue-number"]; + }; + query: { + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + }; + }; + responses: { + /** Response */ + 200: { + headers: {}; + content: { + "application/json": components["schemas"]["label"][]; + }; + }; + 410: components["responses"]["gone"]; + }; + }; + /** Removes any previous labels and sets the new labels for an issue. */ + "issues/set-labels": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The number that identifies the issue. */ + issue_number: components["parameters"]["issue-number"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["label"][]; + }; + }; + 410: components["responses"]["gone"]; + 422: components["responses"]["validation_failed"]; + }; + requestBody: { + content: { + "application/json": + | { + /** @description The names of the labels to set for the issue. The labels you set replace any existing labels. You can pass an empty array to remove all labels. Alternatively, you can pass a single label as a `string` or an `array` of labels directly, but GitHub recommends passing an object with the `labels` key. You can also add labels to the existing labels for an issue. For more information, see "[Add labels to an issue](https://docs.github.com/rest/reference/issues#add-labels-to-an-issue)." */ + labels?: string[]; + } + | { + labels?: { + name: string; + }[]; + }; + }; + }; + }; + "issues/add-labels": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The number that identifies the issue. */ + issue_number: components["parameters"]["issue-number"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["label"][]; + }; + }; + 410: components["responses"]["gone"]; + 422: components["responses"]["validation_failed"]; + }; + requestBody: { + content: { + "application/json": + | { + /** @description The names of the labels to add to the issue's existing labels. You can pass an empty array to remove all labels. Alternatively, you can pass a single label as a `string` or an `array` of labels directly, but GitHub recommends passing an object with the `labels` key. You can also replace all of the labels for an issue. For more information, see "[Set labels for an issue](https://docs.github.com/rest/reference/issues#set-labels-for-an-issue)." */ + labels?: string[]; + } + | { + labels?: { + name: string; + }[]; + }; + }; + }; + }; + "issues/remove-all-labels": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The number that identifies the issue. */ + issue_number: components["parameters"]["issue-number"]; + }; + }; + responses: { + /** Response */ + 204: never; + 410: components["responses"]["gone"]; + }; + }; + /** Removes the specified label from the issue, and returns the remaining labels on the issue. This endpoint returns a `404 Not Found` status if the label does not exist. */ + "issues/remove-label": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The number that identifies the issue. */ + issue_number: components["parameters"]["issue-number"]; + name: string; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["label"][]; + }; + }; + 404: components["responses"]["not_found"]; + 410: components["responses"]["gone"]; + }; + }; + /** + * Users with push access can lock an issue or pull request's conversation. + * + * Note that, if you choose not to pass any parameters, you'll need to set `Content-Length` to zero when calling out to this endpoint. For more information, see "[HTTP verbs](https://docs.github.com/rest/overview/resources-in-the-rest-api#http-verbs)." + */ + "issues/lock": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The number that identifies the issue. */ + issue_number: components["parameters"]["issue-number"]; + }; + }; + responses: { + /** Response */ + 204: never; + 403: components["responses"]["forbidden"]; + 404: components["responses"]["not_found"]; + 410: components["responses"]["gone"]; + 422: components["responses"]["validation_failed"]; + }; + requestBody: { + content: { + "application/json": { + /** + * @description The reason for locking the issue or pull request conversation. Lock will fail if you don't use one of these reasons: + * \* `off-topic` + * \* `too heated` + * \* `resolved` + * \* `spam` + * @enum {string} + */ + lock_reason?: "off-topic" | "too heated" | "resolved" | "spam"; + } | null; + }; + }; + }; + /** Users with push access can unlock an issue's conversation. */ + "issues/unlock": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The number that identifies the issue. */ + issue_number: components["parameters"]["issue-number"]; + }; + }; + responses: { + /** Response */ + 204: never; + 403: components["responses"]["forbidden"]; + 404: components["responses"]["not_found"]; + }; + }; + /** List the reactions to an [issue](https://docs.github.com/rest/reference/issues). */ + "reactions/list-for-issue": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The number that identifies the issue. */ + issue_number: components["parameters"]["issue-number"]; + }; + query: { + /** Returns a single [reaction type](https://docs.github.com/rest/reference/reactions#reaction-types). Omit this parameter to list all reactions to an issue. */ + content?: + | "+1" + | "-1" + | "laugh" + | "confused" + | "heart" + | "hooray" + | "rocket" + | "eyes"; + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + }; + }; + responses: { + /** Response */ + 200: { + headers: {}; + content: { + "application/json": components["schemas"]["reaction"][]; + }; + }; + 404: components["responses"]["not_found"]; + 410: components["responses"]["gone"]; + }; + }; + /** Create a reaction to an [issue](https://docs.github.com/rest/reference/issues/). A response with an HTTP `200` status means that you already added the reaction type to this issue. */ + "reactions/create-for-issue": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The number that identifies the issue. */ + issue_number: components["parameters"]["issue-number"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["reaction"]; + }; + }; + /** Response */ + 201: { + content: { + "application/json": components["schemas"]["reaction"]; + }; + }; + 422: components["responses"]["validation_failed"]; + }; + requestBody: { + content: { + "application/json": { + /** + * @description The [reaction type](https://docs.github.com/rest/reference/reactions#reaction-types) to add to the issue. + * @enum {string} + */ + content: + | "+1" + | "-1" + | "laugh" + | "confused" + | "heart" + | "hooray" + | "rocket" + | "eyes"; + }; + }; + }; + }; + /** + * **Note:** You can also specify a repository by `repository_id` using the route `DELETE /repositories/:repository_id/issues/:issue_number/reactions/:reaction_id`. + * + * Delete a reaction to an [issue](https://docs.github.com/rest/reference/issues/). + */ + "reactions/delete-for-issue": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The number that identifies the issue. */ + issue_number: components["parameters"]["issue-number"]; + /** The unique identifier of the reaction. */ + reaction_id: components["parameters"]["reaction-id"]; + }; + }; + responses: { + /** Response */ + 204: never; + }; + }; + "issues/list-events-for-timeline": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The number that identifies the issue. */ + issue_number: components["parameters"]["issue-number"]; + }; + query: { + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + }; + }; + responses: { + /** Response */ + 200: { + headers: {}; + content: { + "application/json": components["schemas"]["timeline-issue-events"][]; + }; + }; + 404: components["responses"]["not_found"]; + 410: components["responses"]["gone"]; + }; + }; + "repos/list-deploy-keys": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + }; + query: { + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + }; + }; + responses: { + /** Response */ + 200: { + headers: {}; + content: { + "application/json": components["schemas"]["deploy-key"][]; + }; + }; + }; + }; + /** You can create a read-only deploy key. */ + "repos/create-deploy-key": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + }; + }; + responses: { + /** Response */ + 201: { + headers: { + Location?: string; + }; + content: { + "application/json": components["schemas"]["deploy-key"]; + }; + }; + 422: components["responses"]["validation_failed"]; + }; + requestBody: { + content: { + "application/json": { + /** @description A name for the key. */ + title?: string; + /** @description The contents of the key. */ + key: string; + /** + * @description If `true`, the key will only be able to read repository contents. Otherwise, the key will be able to read and write. + * + * Deploy keys with write access can perform the same actions as an organization member with admin access, or a collaborator on a personal repository. For more information, see "[Repository permission levels for an organization](https://docs.github.com/articles/repository-permission-levels-for-an-organization/)" and "[Permission levels for a user account repository](https://docs.github.com/articles/permission-levels-for-a-user-account-repository/)." + */ + read_only?: boolean; + }; + }; + }; + }; + "repos/get-deploy-key": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The unique identifier of the key. */ + key_id: components["parameters"]["key-id"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["deploy-key"]; + }; + }; + 404: components["responses"]["not_found"]; + }; + }; + /** Deploy keys are immutable. If you need to update a key, remove the key and create a new one instead. */ + "repos/delete-deploy-key": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The unique identifier of the key. */ + key_id: components["parameters"]["key-id"]; + }; + }; + responses: { + /** Response */ + 204: never; + }; + }; + "issues/list-labels-for-repo": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + }; + query: { + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + }; + }; + responses: { + /** Response */ + 200: { + headers: {}; + content: { + "application/json": components["schemas"]["label"][]; + }; + }; + 404: components["responses"]["not_found"]; + }; + }; + "issues/create-label": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + }; + }; + responses: { + /** Response */ + 201: { + headers: { + Location?: string; + }; + content: { + "application/json": components["schemas"]["label"]; + }; + }; + 404: components["responses"]["not_found"]; + 422: components["responses"]["validation_failed"]; + }; + requestBody: { + content: { + "application/json": { + /** @description The name of the label. Emoji can be added to label names, using either native emoji or colon-style markup. For example, typing `:strawberry:` will render the emoji ![:strawberry:](https://github.githubassets.com/images/icons/emoji/unicode/1f353.png ":strawberry:"). For a full list of available emoji and codes, see "[Emoji cheat sheet](https://github.com/ikatyang/emoji-cheat-sheet)." */ + name: string; + /** @description The [hexadecimal color code](http://www.color-hex.com/) for the label, without the leading `#`. */ + color?: string; + /** @description A short description of the label. Must be 100 characters or fewer. */ + description?: string; + }; + }; + }; + }; + "issues/get-label": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + name: string; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["label"]; + }; + }; + 404: components["responses"]["not_found"]; + }; + }; + "issues/delete-label": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + name: string; + }; + }; + responses: { + /** Response */ + 204: never; + }; + }; + "issues/update-label": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + name: string; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["label"]; + }; + }; + }; + requestBody: { + content: { + "application/json": { + /** @description The new name of the label. Emoji can be added to label names, using either native emoji or colon-style markup. For example, typing `:strawberry:` will render the emoji ![:strawberry:](https://github.githubassets.com/images/icons/emoji/unicode/1f353.png ":strawberry:"). For a full list of available emoji and codes, see "[Emoji cheat sheet](https://github.com/ikatyang/emoji-cheat-sheet)." */ + new_name?: string; + /** @description The [hexadecimal color code](http://www.color-hex.com/) for the label, without the leading `#`. */ + color?: string; + /** @description A short description of the label. Must be 100 characters or fewer. */ + description?: string; + }; + }; + }; + }; + /** Lists languages for the specified repository. The value shown for each language is the number of bytes of code written in that language. */ + "repos/list-languages": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["language"]; + }; + }; + }; + }; + "repos/enable-lfs-for-repo": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + }; + }; + responses: { + 202: components["responses"]["accepted"]; + /** + * We will return a 403 with one of the following messages: + * + * - Git LFS support not enabled because Git LFS is globally disabled. + * - Git LFS support not enabled because Git LFS is disabled for the root repository in the network. + * - Git LFS support not enabled because Git LFS is disabled for . + */ + 403: unknown; + }; + }; + "repos/disable-lfs-for-repo": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + }; + }; + responses: { + /** Response */ + 204: never; + }; + }; + /** + * This method returns the contents of the repository's license file, if one is detected. + * + * Similar to [Get repository content](https://docs.github.com/rest/reference/repos#get-repository-content), this method also supports [custom media types](https://docs.github.com/rest/overview/media-types) for retrieving the raw license content or rendered license HTML. + */ + "licenses/get-for-repo": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["license-content"]; + }; + }; + }; + }; + /** Sync a branch of a forked repository to keep it up-to-date with the upstream repository. */ + "repos/merge-upstream": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + }; + }; + responses: { + /** The branch has been successfully synced with the upstream repository */ + 200: { + content: { + "application/json": components["schemas"]["merged-upstream"]; + }; + }; + /** The branch could not be synced because of a merge conflict */ + 409: unknown; + /** The branch could not be synced for some other reason */ + 422: unknown; + }; + requestBody: { + content: { + "application/json": { + /** @description The name of the branch which should be updated to match upstream. */ + branch: string; + }; + }; + }; + }; + "repos/merge": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + }; + }; + responses: { + /** Successful Response (The resulting merge commit) */ + 201: { + content: { + "application/json": components["schemas"]["commit"]; + }; + }; + /** Response when already merged */ + 204: never; + 403: components["responses"]["forbidden"]; + /** Not Found when the base or head does not exist */ + 404: unknown; + /** Conflict when there is a merge conflict */ + 409: unknown; + 422: components["responses"]["validation_failed"]; + }; + requestBody: { + content: { + "application/json": { + /** @description The name of the base branch that the head will be merged into. */ + base: string; + /** @description The head to merge. This can be a branch name or a commit SHA1. */ + head: string; + /** @description Commit message to use for the merge commit. If omitted, a default message will be used. */ + commit_message?: string; + }; + }; + }; + }; + "issues/list-milestones": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + }; + query: { + /** The state of the milestone. Either `open`, `closed`, or `all`. */ + state?: "open" | "closed" | "all"; + /** What to sort results by. Either `due_on` or `completeness`. */ + sort?: "due_on" | "completeness"; + /** The direction of the sort. Either `asc` or `desc`. */ + direction?: "asc" | "desc"; + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + }; + }; + responses: { + /** Response */ + 200: { + headers: {}; + content: { + "application/json": components["schemas"]["milestone"][]; + }; + }; + 404: components["responses"]["not_found"]; + }; + }; + "issues/create-milestone": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + }; + }; + responses: { + /** Response */ + 201: { + headers: { + Location?: string; + }; + content: { + "application/json": components["schemas"]["milestone"]; + }; + }; + 404: components["responses"]["not_found"]; + 422: components["responses"]["validation_failed"]; + }; + requestBody: { + content: { + "application/json": { + /** @description The title of the milestone. */ + title: string; + /** + * @description The state of the milestone. Either `open` or `closed`. + * @default open + * @enum {string} + */ + state?: "open" | "closed"; + /** @description A description of the milestone. */ + description?: string; + /** + * Format: date-time + * @description The milestone due date. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`. + */ + due_on?: string; + }; + }; + }; + }; + "issues/get-milestone": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The number that identifies the milestone. */ + milestone_number: components["parameters"]["milestone-number"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["milestone"]; + }; + }; + 404: components["responses"]["not_found"]; + }; + }; + "issues/delete-milestone": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The number that identifies the milestone. */ + milestone_number: components["parameters"]["milestone-number"]; + }; + }; + responses: { + /** Response */ + 204: never; + 404: components["responses"]["not_found"]; + }; + }; + "issues/update-milestone": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The number that identifies the milestone. */ + milestone_number: components["parameters"]["milestone-number"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["milestone"]; + }; + }; + }; + requestBody: { + content: { + "application/json": { + /** @description The title of the milestone. */ + title?: string; + /** + * @description The state of the milestone. Either `open` or `closed`. + * @default open + * @enum {string} + */ + state?: "open" | "closed"; + /** @description A description of the milestone. */ + description?: string; + /** + * Format: date-time + * @description The milestone due date. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`. + */ + due_on?: string; + }; + }; + }; + }; + "issues/list-labels-for-milestone": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The number that identifies the milestone. */ + milestone_number: components["parameters"]["milestone-number"]; + }; + query: { + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + }; + }; + responses: { + /** Response */ + 200: { + headers: {}; + content: { + "application/json": components["schemas"]["label"][]; + }; + }; + }; + }; + /** List all notifications for the current user. */ + "activity/list-repo-notifications-for-authenticated-user": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + }; + query: { + /** If `true`, show notifications marked as read. */ + all?: components["parameters"]["all"]; + /** If `true`, only shows notifications in which the user is directly participating or mentioned. */ + participating?: components["parameters"]["participating"]; + /** Only show notifications updated after the given time. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`. */ + since?: components["parameters"]["since"]; + /** Only show notifications updated before the given time. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`. */ + before?: components["parameters"]["before"]; + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + }; + }; + responses: { + /** Response */ + 200: { + headers: {}; + content: { + "application/json": components["schemas"]["thread"][]; + }; + }; + }; + }; + /** Marks all notifications in a repository as "read" removes them from the [default view on GitHub](https://github.com/notifications). If the number of notifications is too large to complete in one request, you will receive a `202 Accepted` status and GitHub will run an asynchronous process to mark notifications as "read." To check whether any "unread" notifications remain, you can use the [List repository notifications for the authenticated user](https://docs.github.com/rest/reference/activity#list-repository-notifications-for-the-authenticated-user) endpoint and pass the query parameter `all=false`. */ + "activity/mark-repo-notifications-as-read": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + }; + }; + responses: { + /** Response */ + 202: { + content: { + "application/json": { + message?: string; + url?: string; + }; + }; + }; + /** Reset Content */ + 205: unknown; + }; + requestBody: { + content: { + "application/json": { + /** + * Format: date-time + * @description Describes the last point that notifications were checked. Anything updated since this time will not be marked as read. If you omit this parameter, all notifications are marked as read. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`. Default: The current timestamp. + */ + last_read_at?: string; + }; + }; + }; + }; + "repos/get-pages": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["page"]; + }; + }; + 404: components["responses"]["not_found"]; + }; + }; + /** Updates information for a GitHub Pages site. For more information, see "[About GitHub Pages](/github/working-with-github-pages/about-github-pages). */ + "repos/update-information-about-pages-site": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + }; + }; + responses: { + /** Response */ + 204: never; + 400: components["responses"]["bad_request"]; + 422: components["responses"]["validation_failed"]; + }; + requestBody: { + content: { + "application/json": { + /** @description Specify a custom domain for the repository. Sending a `null` value will remove the custom domain. For more about custom domains, see "[Using a custom domain with GitHub Pages](https://docs.github.com/articles/using-a-custom-domain-with-github-pages/)." */ + cname?: string | null; + /** @description Specify whether HTTPS should be enforced for the repository. */ + https_enforced?: boolean; + /** @description Configures access controls for the GitHub Pages site. If public is set to `true`, the site is accessible to anyone on the internet. If set to `false`, the site will only be accessible to users who have at least `read` access to the repository that published the site. This includes anyone in your Enterprise if the repository is set to `internal` visibility. This feature is only available to repositories in an organization on an Enterprise plan. */ + public?: boolean; + source?: Partial<"gh-pages" | "master" | "master /docs"> & + Partial<{ + /** @description The repository branch used to publish your site's source files. */ + branch: string; + /** + * @description The repository directory that includes the source files for the Pages site. Allowed paths are `/` or `/docs`. + * @enum {string} + */ + path: "/" | "/docs"; + }>; + }; + }; + }; + }; + /** Configures a GitHub Pages site. For more information, see "[About GitHub Pages](/github/working-with-github-pages/about-github-pages)." */ + "repos/create-pages-site": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + }; + }; + responses: { + /** Response */ + 201: { + content: { + "application/json": components["schemas"]["page"]; + }; + }; + 409: components["responses"]["conflict"]; + 422: components["responses"]["validation_failed"]; + }; + requestBody: { + content: { + "application/json": { + /** @description The source branch and directory used to publish your Pages site. */ + source?: { + /** @description The repository branch used to publish your site's source files. */ + branch: string; + /** + * @description The repository directory that includes the source files for the Pages site. Allowed paths are `/` or `/docs`. Default: `/` + * @default / + * @enum {string} + */ + path?: "/" | "/docs"; + }; + } | null; + }; + }; + }; + "repos/delete-pages-site": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + }; + }; + responses: { + /** Response */ + 204: never; + 404: components["responses"]["not_found"]; + 422: components["responses"]["validation_failed"]; + }; + }; + "repos/list-pages-builds": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + }; + query: { + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + }; + }; + responses: { + /** Response */ + 200: { + headers: {}; + content: { + "application/json": components["schemas"]["page-build"][]; + }; + }; + }; + }; + /** + * You can request that your site be built from the latest revision on the default branch. This has the same effect as pushing a commit to your default branch, but does not require an additional commit. Manually triggering page builds can be helpful when diagnosing build warnings and failures. + * + * Build requests are limited to one concurrent build per repository and one concurrent build per requester. If you request a build while another is still in progress, the second request will be queued until the first completes. + */ + "repos/request-pages-build": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + }; + }; + responses: { + /** Response */ + 201: { + content: { + "application/json": components["schemas"]["page-build-status"]; + }; + }; + }; + }; + "repos/get-latest-pages-build": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["page-build"]; + }; + }; + }; + }; + "repos/get-pages-build": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + build_id: number; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["page-build"]; + }; + }; + }; + }; + /** + * Gets a health check of the DNS settings for the `CNAME` record configured for a repository's GitHub Pages. + * + * The first request to this endpoint returns a `202 Accepted` status and starts an asynchronous background task to get the results for the domain. After the background task completes, subsequent requests to this endpoint return a `200 OK` status with the health check results in the response. + * + * Users must have admin or owner permissions. GitHub Apps must have the `pages:write` and `administration:write` permission to use this endpoint. + */ + "repos/get-pages-health-check": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["pages-health-check"]; + }; + }; + /** Empty response */ + 202: { + content: { + "application/json": components["schemas"]["empty-object"]; + }; + }; + /** Custom domains are not available for GitHub Pages */ + 400: unknown; + 404: components["responses"]["not_found"]; + /** There isn't a CNAME for this page */ + 422: unknown; + }; + }; + /** Lists the projects in a repository. Returns a `404 Not Found` status if projects are disabled in the repository. If you do not have sufficient privileges to perform this action, a `401 Unauthorized` or `410 Gone` status is returned. */ + "projects/list-for-repo": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + }; + query: { + /** Indicates the state of the projects to return. Can be either `open`, `closed`, or `all`. */ + state?: "open" | "closed" | "all"; + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + }; + }; + responses: { + /** Response */ + 200: { + headers: {}; + content: { + "application/json": components["schemas"]["project"][]; + }; + }; + 401: components["responses"]["requires_authentication"]; + 403: components["responses"]["forbidden"]; + 404: components["responses"]["not_found"]; + 410: components["responses"]["gone"]; + 422: components["responses"]["validation_failed_simple"]; + }; + }; + /** Creates a repository project board. Returns a `410 Gone` status if projects are disabled in the repository or if the repository does not have existing classic projects. If you do not have sufficient privileges to perform this action, a `401 Unauthorized` or `410 Gone` status is returned. */ + "projects/create-for-repo": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + }; + }; + responses: { + /** Response */ + 201: { + content: { + "application/json": components["schemas"]["project"]; + }; + }; + 401: components["responses"]["requires_authentication"]; + 403: components["responses"]["forbidden"]; + 404: components["responses"]["not_found"]; + 410: components["responses"]["gone"]; + 422: components["responses"]["validation_failed_simple"]; + }; + requestBody: { + content: { + "application/json": { + /** @description The name of the project. */ + name: string; + /** @description The description of the project. */ + body?: string; + }; + }; + }; + }; + /** Draft pull requests are available in public repositories with GitHub Free and GitHub Free for organizations, GitHub Pro, and legacy per-repository billing plans, and in public and private repositories with GitHub Team and GitHub Enterprise Cloud. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. */ + "pulls/list": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + }; + query: { + /** Either `open`, `closed`, or `all` to filter by state. */ + state?: "open" | "closed" | "all"; + /** Filter pulls by head user or head organization and branch name in the format of `user:ref-name` or `organization:ref-name`. For example: `github:new-script-format` or `octocat:test-branch`. */ + head?: string; + /** Filter pulls by base branch name. Example: `gh-pages`. */ + base?: string; + /** What to sort results by. Can be either `created`, `updated`, `popularity` (comment count) or `long-running` (age, filtering by pulls updated in the last month). */ + sort?: "created" | "updated" | "popularity" | "long-running"; + /** The direction of the sort. Can be either `asc` or `desc`. Default: `desc` when sort is `created` or sort is not specified, otherwise `asc`. */ + direction?: "asc" | "desc"; + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + }; + }; + responses: { + /** Response */ + 200: { + headers: {}; + content: { + "application/json": components["schemas"]["pull-request-simple"][]; + }; + }; + 304: components["responses"]["not_modified"]; + 422: components["responses"]["validation_failed"]; + }; + }; + /** + * Draft pull requests are available in public repositories with GitHub Free and GitHub Free for organizations, GitHub Pro, and legacy per-repository billing plans, and in public and private repositories with GitHub Team and GitHub Enterprise Cloud. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. + * + * To open or update a pull request in a public repository, you must have write access to the head or the source branch. For organization-owned repositories, you must be a member of the organization that owns the repository to open or update a pull request. + * + * You can create a new pull request. + * + * This endpoint triggers [notifications](https://docs.github.com/en/github/managing-subscriptions-and-notifications-on-github/about-notifications). Creating content too quickly using this endpoint may result in secondary rate limiting. See "[Secondary rate limits](https://docs.github.com/rest/overview/resources-in-the-rest-api#secondary-rate-limits)" and "[Dealing with secondary rate limits](https://docs.github.com/rest/guides/best-practices-for-integrators#dealing-with-rate-limits)" for details. + */ + "pulls/create": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + }; + }; + responses: { + /** Response */ + 201: { + headers: { + Location?: string; + }; + content: { + "application/json": components["schemas"]["pull-request"]; + }; + }; + 403: components["responses"]["forbidden"]; + 422: components["responses"]["validation_failed"]; + }; + requestBody: { + content: { + "application/json": { + /** @description The title of the new pull request. */ + title?: string; + /** @description The name of the branch where your changes are implemented. For cross-repository pull requests in the same network, namespace `head` with a user like this: `username:branch`. */ + head: string; + /** @description The name of the branch you want the changes pulled into. This should be an existing branch on the current repository. You cannot submit a pull request to one repository that requests a merge to a base of another repository. */ + base: string; + /** @description The contents of the pull request. */ + body?: string; + /** @description Indicates whether [maintainers can modify](https://docs.github.com/articles/allowing-changes-to-a-pull-request-branch-created-from-a-fork/) the pull request. */ + maintainer_can_modify?: boolean; + /** @description Indicates whether the pull request is a draft. See "[Draft Pull Requests](https://docs.github.com/en/articles/about-pull-requests#draft-pull-requests)" in the GitHub Help documentation to learn more. */ + draft?: boolean; + /** @example 1 */ + issue?: number; + }; + }; + }; + }; + /** Lists review comments for all pull requests in a repository. By default, review comments are in ascending order by ID. */ + "pulls/list-review-comments-for-repo": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + }; + query: { + sort?: "created" | "updated" | "created_at"; + /** Can be either `asc` or `desc`. Ignored without `sort` parameter. */ + direction?: "asc" | "desc"; + /** Only show notifications updated after the given time. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`. */ + since?: components["parameters"]["since"]; + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + }; + }; + responses: { + /** Response */ + 200: { + headers: {}; + content: { + "application/json": components["schemas"]["pull-request-review-comment"][]; + }; + }; + }; + }; + /** Provides details for a review comment. */ + "pulls/get-review-comment": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The unique identifier of the comment. */ + comment_id: components["parameters"]["comment-id"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["pull-request-review-comment"]; + }; + }; + 404: components["responses"]["not_found"]; + }; + }; + /** Deletes a review comment. */ + "pulls/delete-review-comment": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The unique identifier of the comment. */ + comment_id: components["parameters"]["comment-id"]; + }; + }; + responses: { + /** Response */ + 204: never; + 404: components["responses"]["not_found"]; + }; + }; + /** Enables you to edit a review comment. */ + "pulls/update-review-comment": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The unique identifier of the comment. */ + comment_id: components["parameters"]["comment-id"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["pull-request-review-comment"]; + }; + }; + }; + requestBody: { + content: { + "application/json": { + /** @description The text of the reply to the review comment. */ + body: string; + }; + }; + }; + }; + /** List the reactions to a [pull request review comment](https://docs.github.com/rest/reference/pulls#review-comments). */ + "reactions/list-for-pull-request-review-comment": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The unique identifier of the comment. */ + comment_id: components["parameters"]["comment-id"]; + }; + query: { + /** Returns a single [reaction type](https://docs.github.com/rest/reference/reactions#reaction-types). Omit this parameter to list all reactions to a pull request review comment. */ + content?: + | "+1" + | "-1" + | "laugh" + | "confused" + | "heart" + | "hooray" + | "rocket" + | "eyes"; + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + }; + }; + responses: { + /** Response */ + 200: { + headers: {}; + content: { + "application/json": components["schemas"]["reaction"][]; + }; + }; + 404: components["responses"]["not_found"]; + }; + }; + /** Create a reaction to a [pull request review comment](https://docs.github.com/rest/reference/pulls#comments). A response with an HTTP `200` status means that you already added the reaction type to this pull request review comment. */ + "reactions/create-for-pull-request-review-comment": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The unique identifier of the comment. */ + comment_id: components["parameters"]["comment-id"]; + }; + }; + responses: { + /** Reaction exists */ + 200: { + content: { + "application/json": components["schemas"]["reaction"]; + }; + }; + /** Reaction created */ + 201: { + content: { + "application/json": components["schemas"]["reaction"]; + }; + }; + 422: components["responses"]["validation_failed"]; + }; + requestBody: { + content: { + "application/json": { + /** + * @description The [reaction type](https://docs.github.com/rest/reference/reactions#reaction-types) to add to the pull request review comment. + * @enum {string} + */ + content: + | "+1" + | "-1" + | "laugh" + | "confused" + | "heart" + | "hooray" + | "rocket" + | "eyes"; + }; + }; + }; + }; + /** + * **Note:** You can also specify a repository by `repository_id` using the route `DELETE /repositories/:repository_id/pulls/comments/:comment_id/reactions/:reaction_id.` + * + * Delete a reaction to a [pull request review comment](https://docs.github.com/rest/reference/pulls#review-comments). + */ + "reactions/delete-for-pull-request-comment": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The unique identifier of the comment. */ + comment_id: components["parameters"]["comment-id"]; + /** The unique identifier of the reaction. */ + reaction_id: components["parameters"]["reaction-id"]; + }; + }; + responses: { + /** Response */ + 204: never; + }; + }; + /** + * Draft pull requests are available in public repositories with GitHub Free and GitHub Free for organizations, GitHub Pro, and legacy per-repository billing plans, and in public and private repositories with GitHub Team and GitHub Enterprise Cloud. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. + * + * Lists details of a pull request by providing its number. + * + * When you get, [create](https://docs.github.com/rest/reference/pulls/#create-a-pull-request), or [edit](https://docs.github.com/rest/reference/pulls#update-a-pull-request) a pull request, GitHub creates a merge commit to test whether the pull request can be automatically merged into the base branch. This test commit is not added to the base branch or the head branch. You can review the status of the test commit using the `mergeable` key. For more information, see "[Checking mergeability of pull requests](https://docs.github.com/rest/guides/getting-started-with-the-git-database-api#checking-mergeability-of-pull-requests)". + * + * The value of the `mergeable` attribute can be `true`, `false`, or `null`. If the value is `null`, then GitHub has started a background job to compute the mergeability. After giving the job time to complete, resubmit the request. When the job finishes, you will see a non-`null` value for the `mergeable` attribute in the response. If `mergeable` is `true`, then `merge_commit_sha` will be the SHA of the _test_ merge commit. + * + * The value of the `merge_commit_sha` attribute changes depending on the state of the pull request. Before merging a pull request, the `merge_commit_sha` attribute holds the SHA of the _test_ merge commit. After merging a pull request, the `merge_commit_sha` attribute changes depending on how you merged the pull request: + * + * * If merged as a [merge commit](https://docs.github.com/articles/about-merge-methods-on-github/), `merge_commit_sha` represents the SHA of the merge commit. + * * If merged via a [squash](https://docs.github.com/articles/about-merge-methods-on-github/#squashing-your-merge-commits), `merge_commit_sha` represents the SHA of the squashed commit on the base branch. + * * If [rebased](https://docs.github.com/articles/about-merge-methods-on-github/#rebasing-and-merging-your-commits), `merge_commit_sha` represents the commit that the base branch was updated to. + * + * Pass the appropriate [media type](https://docs.github.com/rest/overview/media-types/#commits-commit-comparison-and-pull-requests) to fetch diff and patch formats. + */ + "pulls/get": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The number that identifies the pull request. */ + pull_number: components["parameters"]["pull-number"]; + }; + }; + responses: { + /** Pass the appropriate [media type](https://docs.github.com/rest/overview/media-types/#commits-commit-comparison-and-pull-requests) to fetch diff and patch formats. */ + 200: { + content: { + "application/json": components["schemas"]["pull-request"]; + }; + }; + 304: components["responses"]["not_modified"]; + 404: components["responses"]["not_found"]; + 500: components["responses"]["internal_error"]; + }; + }; + /** + * Draft pull requests are available in public repositories with GitHub Free and GitHub Free for organizations, GitHub Pro, and legacy per-repository billing plans, and in public and private repositories with GitHub Team and GitHub Enterprise Cloud. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. + * + * To open or update a pull request in a public repository, you must have write access to the head or the source branch. For organization-owned repositories, you must be a member of the organization that owns the repository to open or update a pull request. + */ + "pulls/update": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The number that identifies the pull request. */ + pull_number: components["parameters"]["pull-number"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["pull-request"]; + }; + }; + 403: components["responses"]["forbidden"]; + 422: components["responses"]["validation_failed"]; + }; + requestBody: { + content: { + "application/json": { + /** @description The title of the pull request. */ + title?: string; + /** @description The contents of the pull request. */ + body?: string; + /** + * @description State of this Pull Request. Either `open` or `closed`. + * @enum {string} + */ + state?: "open" | "closed"; + /** @description The name of the branch you want your changes pulled into. This should be an existing branch on the current repository. You cannot update the base branch on a pull request to point to another repository. */ + base?: string; + /** @description Indicates whether [maintainers can modify](https://docs.github.com/articles/allowing-changes-to-a-pull-request-branch-created-from-a-fork/) the pull request. */ + maintainer_can_modify?: boolean; + }; + }; + }; + }; + /** + * Creates a codespace owned by the authenticated user for the specified pull request. + * + * You must authenticate using an access token with the `codespace` scope to use this endpoint. + * + * GitHub Apps must have write access to the `codespaces` repository permission to use this endpoint. + */ + "codespaces/create-with-pr-for-authenticated-user": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The number that identifies the pull request. */ + pull_number: components["parameters"]["pull-number"]; + }; + }; + responses: { + /** Response when the codespace was successfully created */ + 201: { + content: { + "application/json": components["schemas"]["codespace"]; + }; + }; + /** Response when the codespace creation partially failed but is being retried in the background */ + 202: { + content: { + "application/json": components["schemas"]["codespace"]; + }; + }; + 401: components["responses"]["requires_authentication"]; + 403: components["responses"]["forbidden"]; + 404: components["responses"]["not_found"]; + }; + requestBody: { + content: { + "application/json": { + /** @description Location for this codespace. Assigned by IP if not provided */ + location?: string; + /** @description IP for location auto-detection when proxying a request */ + client_ip?: string; + /** @description Machine type to use for this codespace */ + machine?: string; + /** @description Path to devcontainer.json config to use for this codespace */ + devcontainer_path?: string; + /** @description Whether to authorize requested permissions from devcontainer.json */ + multi_repo_permissions_opt_out?: boolean; + /** @description Working directory for this codespace */ + working_directory?: string; + /** @description Time in minutes before codespace stops from inactivity */ + idle_timeout_minutes?: number; + /** @description Display name for this codespace */ + display_name?: string; + /** @description Duration in minutes after codespace has gone idle in which it will be deleted. Must be integer minutes between 0 and 43200 (30 days). */ + retention_period_minutes?: number; + } | null; + }; + }; + }; + /** Lists all review comments for a pull request. By default, review comments are in ascending order by ID. */ + "pulls/list-review-comments": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The number that identifies the pull request. */ + pull_number: components["parameters"]["pull-number"]; + }; + query: { + /** The property to sort the results by. `created` means when the repository was starred. `updated` means when the repository was last pushed to. */ + sort?: components["parameters"]["sort"]; + /** Can be either `asc` or `desc`. Ignored without `sort` parameter. */ + direction?: "asc" | "desc"; + /** Only show notifications updated after the given time. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`. */ + since?: components["parameters"]["since"]; + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + }; + }; + responses: { + /** Response */ + 200: { + headers: {}; + content: { + "application/json": components["schemas"]["pull-request-review-comment"][]; + }; + }; + }; + }; + /** + * Creates a review comment in the pull request diff. To add a regular comment to a pull request timeline, see "[Create an issue comment](https://docs.github.com/rest/reference/issues#create-an-issue-comment)." We recommend creating a review comment using `line`, `side`, and optionally `start_line` and `start_side` if your comment applies to more than one line in the pull request diff. + * + * The `position` parameter is deprecated. If you use `position`, the `line`, `side`, `start_line`, and `start_side` parameters are not required. + * + * **Note:** The position value equals the number of lines down from the first "@@" hunk header in the file you want to add a comment. The line just below the "@@" line is position 1, the next line is position 2, and so on. The position in the diff continues to increase through lines of whitespace and additional hunks until the beginning of a new file. + * + * This endpoint triggers [notifications](https://docs.github.com/en/github/managing-subscriptions-and-notifications-on-github/about-notifications). Creating content too quickly using this endpoint may result in secondary rate limiting. See "[Secondary rate limits](https://docs.github.com/rest/overview/resources-in-the-rest-api#secondary-rate-limits)" and "[Dealing with secondary rate limits](https://docs.github.com/rest/guides/best-practices-for-integrators#dealing-with-secondary-rate-limits)" for details. + */ + "pulls/create-review-comment": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The number that identifies the pull request. */ + pull_number: components["parameters"]["pull-number"]; + }; + }; + responses: { + /** Response */ + 201: { + headers: { + Location?: string; + }; + content: { + "application/json": components["schemas"]["pull-request-review-comment"]; + }; + }; + 403: components["responses"]["forbidden"]; + 422: components["responses"]["validation_failed"]; + }; + requestBody: { + content: { + "application/json": { + /** @description The text of the review comment. */ + body: string; + /** @description The SHA of the commit needing a comment. Not using the latest commit SHA may render your comment outdated if a subsequent commit modifies the line you specify as the `position`. */ + commit_id?: string; + /** @description The relative path to the file that necessitates a comment. */ + path?: string; + /** + * @deprecated + * @description **This parameter is deprecated. Use `line` instead**. The position in the diff where you want to add a review comment. Note this value is not the same as the line number in the file. For help finding the position value, read the note above. + */ + position?: number; + /** + * @description In a split diff view, the side of the diff that the pull request's changes appear on. Can be `LEFT` or `RIGHT`. Use `LEFT` for deletions that appear in red. Use `RIGHT` for additions that appear in green or unchanged lines that appear in white and are shown for context. For a multi-line comment, side represents whether the last line of the comment range is a deletion or addition. For more information, see "[Diff view options](https://docs.github.com/en/articles/about-comparing-branches-in-pull-requests#diff-view-options)" in the GitHub Help documentation. + * @enum {string} + */ + side?: "LEFT" | "RIGHT"; + /** @description The line of the blob in the pull request diff that the comment applies to. For a multi-line comment, the last line of the range that your comment applies to. */ + line?: number; + /** @description **Required when using multi-line comments unless using `in_reply_to`**. The `start_line` is the first line in the pull request diff that your multi-line comment applies to. To learn more about multi-line comments, see "[Commenting on a pull request](https://docs.github.com/en/articles/commenting-on-a-pull-request#adding-line-comments-to-a-pull-request)" in the GitHub Help documentation. */ + start_line?: number; + /** + * @description **Required when using multi-line comments unless using `in_reply_to`**. The `start_side` is the starting side of the diff that the comment applies to. Can be `LEFT` or `RIGHT`. To learn more about multi-line comments, see "[Commenting on a pull request](https://docs.github.com/en/articles/commenting-on-a-pull-request#adding-line-comments-to-a-pull-request)" in the GitHub Help documentation. See `side` in this table for additional context. + * @enum {string} + */ + start_side?: "LEFT" | "RIGHT" | "side"; + /** + * @description The ID of the review comment to reply to. To find the ID of a review comment with ["List review comments on a pull request"](#list-review-comments-on-a-pull-request). When specified, all parameters other than `body` in the request body are ignored. + * @example 2 + */ + in_reply_to?: number; + }; + }; + }; + }; + /** + * Creates a reply to a review comment for a pull request. For the `comment_id`, provide the ID of the review comment you are replying to. This must be the ID of a _top-level review comment_, not a reply to that comment. Replies to replies are not supported. + * + * This endpoint triggers [notifications](https://docs.github.com/en/github/managing-subscriptions-and-notifications-on-github/about-notifications). Creating content too quickly using this endpoint may result in secondary rate limiting. See "[Secondary rate limits](https://docs.github.com/rest/overview/resources-in-the-rest-api#secondary-rate-limits)" and "[Dealing with secondary rate limits](https://docs.github.com/rest/guides/best-practices-for-integrators#dealing-with-secondary-rate-limits)" for details. + */ + "pulls/create-reply-for-review-comment": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The number that identifies the pull request. */ + pull_number: components["parameters"]["pull-number"]; + /** The unique identifier of the comment. */ + comment_id: components["parameters"]["comment-id"]; + }; + }; + responses: { + /** Response */ + 201: { + headers: { + Location?: string; + }; + content: { + "application/json": components["schemas"]["pull-request-review-comment"]; + }; + }; + 404: components["responses"]["not_found"]; + }; + requestBody: { + content: { + "application/json": { + /** @description The text of the review comment. */ + body: string; + }; + }; + }; + }; + /** Lists a maximum of 250 commits for a pull request. To receive a complete commit list for pull requests with more than 250 commits, use the [List commits](https://docs.github.com/rest/reference/repos#list-commits) endpoint. */ + "pulls/list-commits": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The number that identifies the pull request. */ + pull_number: components["parameters"]["pull-number"]; + }; + query: { + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + }; + }; + responses: { + /** Response */ + 200: { + headers: {}; + content: { + "application/json": components["schemas"]["commit"][]; + }; + }; + }; + }; + /** **Note:** Responses include a maximum of 3000 files. The paginated response returns 30 files per page by default. */ + "pulls/list-files": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The number that identifies the pull request. */ + pull_number: components["parameters"]["pull-number"]; + }; + query: { + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + }; + }; + responses: { + /** Response */ + 200: { + headers: {}; + content: { + "application/json": components["schemas"]["diff-entry"][]; + }; + }; + 422: components["responses"]["validation_failed"]; + 500: components["responses"]["internal_error"]; + }; + }; + "pulls/check-if-merged": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The number that identifies the pull request. */ + pull_number: components["parameters"]["pull-number"]; + }; + }; + responses: { + /** Response if pull request has been merged */ + 204: never; + /** Not Found if pull request has not been merged */ + 404: unknown; + }; + }; + /** This endpoint triggers [notifications](https://docs.github.com/github/managing-subscriptions-and-notifications-on-github/about-notifications). Creating content too quickly using this endpoint may result in secondary rate limiting. See "[Secondary rate limits](https://docs.github.com/rest/overview/resources-in-the-rest-api#secondary-rate-limits)" and "[Dealing with secondary rate limits](https://docs.github.com/rest/guides/best-practices-for-integrators#dealing-with-secondary-rate-limits)" for details. */ + "pulls/merge": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The number that identifies the pull request. */ + pull_number: components["parameters"]["pull-number"]; + }; + }; + responses: { + /** if merge was successful */ + 200: { + content: { + "application/json": components["schemas"]["pull-request-merge-result"]; + }; + }; + 403: components["responses"]["forbidden"]; + 404: components["responses"]["not_found"]; + /** Method Not Allowed if merge cannot be performed */ + 405: { + content: { + "application/json": { + message?: string; + documentation_url?: string; + }; + }; + }; + /** Conflict if sha was provided and pull request head did not match */ + 409: { + content: { + "application/json": { + message?: string; + documentation_url?: string; + }; + }; + }; + 422: components["responses"]["validation_failed"]; + }; + requestBody: { + content: { + "application/json": { + /** @description Title for the automatic commit message. */ + commit_title?: string; + /** @description Extra detail to append to automatic commit message. */ + commit_message?: string; + /** @description SHA that pull request head must match to allow merge. */ + sha?: string; + /** + * @description Merge method to use. Possible values are `merge`, `squash` or `rebase`. Default is `merge`. + * @enum {string} + */ + merge_method?: "merge" | "squash" | "rebase"; + } | null; + }; + }; + }; + /** Lists the users or teams whose review is requested for a pull request. Once a requested reviewer submits a review, they are no longer considered a requested reviewer. Their review will instead be returned by the [List reviews for a pull request](https://docs.github.com/rest/pulls/reviews#list-reviews-for-a-pull-request) operation. */ + "pulls/list-requested-reviewers": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The number that identifies the pull request. */ + pull_number: components["parameters"]["pull-number"]; + }; + query: { + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + }; + }; + responses: { + /** Response */ + 200: { + headers: {}; + content: { + "application/json": components["schemas"]["pull-request-review-request"]; + }; + }; + }; + }; + /** This endpoint triggers [notifications](https://docs.github.com/github/managing-subscriptions-and-notifications-on-github/about-notifications). Creating content too quickly using this endpoint may result in secondary rate limiting. See "[Secondary rate limits](https://docs.github.com/rest/overview/resources-in-the-rest-api#secondary-rate-limits)" and "[Dealing with secondary rate limits](https://docs.github.com/rest/guides/best-practices-for-integrators#dealing-with-secondary-rate-limits)" for details. */ + "pulls/request-reviewers": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The number that identifies the pull request. */ + pull_number: components["parameters"]["pull-number"]; + }; + }; + responses: { + /** Response */ + 201: { + content: { + "application/json": components["schemas"]["pull-request-simple"]; + }; + }; + 403: components["responses"]["forbidden"]; + /** Unprocessable Entity if user is not a collaborator */ + 422: unknown; + }; + requestBody: { + content: { + "application/json": { + /** @description An array of user `login`s that will be requested. */ + reviewers?: string[]; + /** @description An array of team `slug`s that will be requested. */ + team_reviewers?: string[]; + }; + }; + }; + }; + "pulls/remove-requested-reviewers": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The number that identifies the pull request. */ + pull_number: components["parameters"]["pull-number"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["pull-request-simple"]; + }; + }; + 422: components["responses"]["validation_failed"]; + }; + requestBody: { + content: { + "application/json": { + /** @description An array of user `login`s that will be removed. */ + reviewers: string[]; + /** @description An array of team `slug`s that will be removed. */ + team_reviewers?: string[]; + }; + }; + }; + }; + /** The list of reviews returns in chronological order. */ + "pulls/list-reviews": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The number that identifies the pull request. */ + pull_number: components["parameters"]["pull-number"]; + }; + query: { + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + }; + }; + responses: { + /** The list of reviews returns in chronological order. */ + 200: { + headers: {}; + content: { + "application/json": components["schemas"]["pull-request-review"][]; + }; + }; + }; + }; + /** + * This endpoint triggers [notifications](https://docs.github.com/en/github/managing-subscriptions-and-notifications-on-github/about-notifications). Creating content too quickly using this endpoint may result in secondary rate limiting. See "[Secondary rate limits](https://docs.github.com/rest/overview/resources-in-the-rest-api#secondary-rate-limits)" and "[Dealing with secondary rate limits](https://docs.github.com/rest/guides/best-practices-for-integrators#dealing-with-secondary-rate-limits)" for details. + * + * Pull request reviews created in the `PENDING` state do not include the `submitted_at` property in the response. + * + * **Note:** To comment on a specific line in a file, you need to first determine the _position_ of that line in the diff. The GitHub REST API v3 offers the `application/vnd.github.v3.diff` [media type](https://docs.github.com/rest/overview/media-types#commits-commit-comparison-and-pull-requests). To see a pull request diff, add this media type to the `Accept` header of a call to the [single pull request](https://docs.github.com/rest/reference/pulls#get-a-pull-request) endpoint. + * + * The `position` value equals the number of lines down from the first "@@" hunk header in the file you want to add a comment. The line just below the "@@" line is position 1, the next line is position 2, and so on. The position in the diff continues to increase through lines of whitespace and additional hunks until the beginning of a new file. + */ + "pulls/create-review": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The number that identifies the pull request. */ + pull_number: components["parameters"]["pull-number"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["pull-request-review"]; + }; + }; + 403: components["responses"]["forbidden"]; + 422: components["responses"]["validation_failed_simple"]; + }; + requestBody: { + content: { + "application/json": { + /** @description The SHA of the commit that needs a review. Not using the latest commit SHA may render your review comment outdated if a subsequent commit modifies the line you specify as the `position`. Defaults to the most recent commit in the pull request when you do not specify a value. */ + commit_id?: string; + /** @description **Required** when using `REQUEST_CHANGES` or `COMMENT` for the `event` parameter. The body text of the pull request review. */ + body?: string; + /** + * @description The review action you want to perform. The review actions include: `APPROVE`, `REQUEST_CHANGES`, or `COMMENT`. By leaving this blank, you set the review action state to `PENDING`, which means you will need to [submit the pull request review](https://docs.github.com/rest/reference/pulls#submit-a-review-for-a-pull-request) when you are ready. + * @enum {string} + */ + event?: "APPROVE" | "REQUEST_CHANGES" | "COMMENT"; + /** @description Use the following table to specify the location, destination, and contents of the draft review comment. */ + comments?: { + /** @description The relative path to the file that necessitates a review comment. */ + path: string; + /** @description The position in the diff where you want to add a review comment. Note this value is not the same as the line number in the file. For help finding the position value, read the note below. */ + position?: number; + /** @description Text of the review comment. */ + body: string; + /** @example 28 */ + line?: number; + /** @example RIGHT */ + side?: string; + /** @example 26 */ + start_line?: number; + /** @example LEFT */ + start_side?: string; + }[]; + }; + }; + }; + }; + "pulls/get-review": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The number that identifies the pull request. */ + pull_number: components["parameters"]["pull-number"]; + /** The unique identifier of the review. */ + review_id: components["parameters"]["review-id"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["pull-request-review"]; + }; + }; + 404: components["responses"]["not_found"]; + }; + }; + /** Update the review summary comment with new text. */ + "pulls/update-review": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The number that identifies the pull request. */ + pull_number: components["parameters"]["pull-number"]; + /** The unique identifier of the review. */ + review_id: components["parameters"]["review-id"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["pull-request-review"]; + }; + }; + 422: components["responses"]["validation_failed_simple"]; + }; + requestBody: { + content: { + "application/json": { + /** @description The body text of the pull request review. */ + body: string; + }; + }; + }; + }; + "pulls/delete-pending-review": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The number that identifies the pull request. */ + pull_number: components["parameters"]["pull-number"]; + /** The unique identifier of the review. */ + review_id: components["parameters"]["review-id"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["pull-request-review"]; + }; + }; + 404: components["responses"]["not_found"]; + 422: components["responses"]["validation_failed_simple"]; + }; + }; + /** List comments for a specific pull request review. */ + "pulls/list-comments-for-review": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The number that identifies the pull request. */ + pull_number: components["parameters"]["pull-number"]; + /** The unique identifier of the review. */ + review_id: components["parameters"]["review-id"]; + }; + query: { + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + }; + }; + responses: { + /** Response */ + 200: { + headers: {}; + content: { + "application/json": components["schemas"]["review-comment"][]; + }; + }; + 404: components["responses"]["not_found"]; + }; + }; + /** **Note:** To dismiss a pull request review on a [protected branch](https://docs.github.com/rest/reference/repos#branches), you must be a repository administrator or be included in the list of people or teams who can dismiss pull request reviews. */ + "pulls/dismiss-review": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The number that identifies the pull request. */ + pull_number: components["parameters"]["pull-number"]; + /** The unique identifier of the review. */ + review_id: components["parameters"]["review-id"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["pull-request-review"]; + }; + }; + 404: components["responses"]["not_found"]; + 422: components["responses"]["validation_failed_simple"]; + }; + requestBody: { + content: { + "application/json": { + /** @description The message for the pull request review dismissal */ + message: string; + /** @example "APPROVE" */ + event?: string; + }; + }; + }; + }; + "pulls/submit-review": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The number that identifies the pull request. */ + pull_number: components["parameters"]["pull-number"]; + /** The unique identifier of the review. */ + review_id: components["parameters"]["review-id"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["pull-request-review"]; + }; + }; + 403: components["responses"]["forbidden"]; + 404: components["responses"]["not_found"]; + 422: components["responses"]["validation_failed_simple"]; + }; + requestBody: { + content: { + "application/json": { + /** @description The body text of the pull request review */ + body?: string; + /** + * @description The review action you want to perform. The review actions include: `APPROVE`, `REQUEST_CHANGES`, or `COMMENT`. When you leave this blank, the API returns _HTTP 422 (Unrecognizable entity)_ and sets the review action state to `PENDING`, which means you will need to re-submit the pull request review using a review action. + * @enum {string} + */ + event: "APPROVE" | "REQUEST_CHANGES" | "COMMENT"; + }; + }; + }; + }; + /** Updates the pull request branch with the latest upstream changes by merging HEAD from the base branch into the pull request branch. */ + "pulls/update-branch": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The number that identifies the pull request. */ + pull_number: components["parameters"]["pull-number"]; + }; + }; + responses: { + /** Response */ + 202: { + content: { + "application/json": { + message?: string; + url?: string; + }; + }; + }; + 403: components["responses"]["forbidden"]; + 422: components["responses"]["validation_failed"]; + }; + requestBody: { + content: { + "application/json": { + /** @description The expected SHA of the pull request's HEAD ref. This is the most recent commit on the pull request's branch. If the expected SHA does not match the pull request's HEAD, you will receive a `422 Unprocessable Entity` status. You can use the "[List commits](https://docs.github.com/rest/reference/repos#list-commits)" endpoint to find the most recent commit SHA. Default: SHA of the pull request's current HEAD ref. */ + expected_head_sha?: string; + } | null; + }; + }; + }; + /** + * Gets the preferred README for a repository. + * + * READMEs support [custom media types](https://docs.github.com/rest/reference/repos#custom-media-types) for retrieving the raw content or rendered HTML. + */ + "repos/get-readme": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + }; + query: { + /** The name of the commit/branch/tag. Default: the repository’s default branch (usually `master`) */ + ref?: string; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["content-file"]; + }; + }; + 404: components["responses"]["not_found"]; + 422: components["responses"]["validation_failed"]; + }; + }; + /** + * Gets the README from a repository directory. + * + * READMEs support [custom media types](https://docs.github.com/rest/reference/repos#custom-media-types) for retrieving the raw content or rendered HTML. + */ + "repos/get-readme-in-directory": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The alternate path to look for a README file */ + dir: string; + }; + query: { + /** The name of the commit/branch/tag. Default: the repository’s default branch (usually `master`) */ + ref?: string; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["content-file"]; + }; + }; + 404: components["responses"]["not_found"]; + 422: components["responses"]["validation_failed"]; + }; + }; + /** + * This returns a list of releases, which does not include regular Git tags that have not been associated with a release. To get a list of Git tags, use the [Repository Tags API](https://docs.github.com/rest/reference/repos#list-repository-tags). + * + * Information about published releases are available to everyone. Only users with push access will receive listings for draft releases. + */ + "repos/list-releases": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + }; + query: { + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + }; + }; + responses: { + /** Response */ + 200: { + headers: {}; + content: { + "application/json": components["schemas"]["release"][]; + }; + }; + 404: components["responses"]["not_found"]; + }; + }; + /** + * Users with push access to the repository can create a release. + * + * This endpoint triggers [notifications](https://docs.github.com/en/github/managing-subscriptions-and-notifications-on-github/about-notifications). Creating content too quickly using this endpoint may result in secondary rate limiting. See "[Secondary rate limits](https://docs.github.com/rest/overview/resources-in-the-rest-api#secondary-rate-limits)" and "[Dealing with secondary rate limits](https://docs.github.com/rest/guides/best-practices-for-integrators#dealing-with-secondary-rate-limits)" for details. + */ + "repos/create-release": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + }; + }; + responses: { + /** Response */ + 201: { + headers: { + Location?: string; + }; + content: { + "application/json": components["schemas"]["release"]; + }; + }; + /** Not Found if the discussion category name is invalid */ + 404: { + content: { + "application/json": components["schemas"]["basic-error"]; + }; + }; + 422: components["responses"]["validation_failed"]; + }; + requestBody: { + content: { + "application/json": { + /** @description The name of the tag. */ + tag_name: string; + /** @description Specifies the commitish value that determines where the Git tag is created from. Can be any branch or commit SHA. Unused if the Git tag already exists. Default: the repository's default branch (usually `master`). */ + target_commitish?: string; + /** @description The name of the release. */ + name?: string; + /** @description Text describing the contents of the tag. */ + body?: string; + /** + * @description `true` to create a draft (unpublished) release, `false` to create a published one. + * @default false + */ + draft?: boolean; + /** + * @description `true` to identify the release as a prerelease. `false` to identify the release as a full release. + * @default false + */ + prerelease?: boolean; + /** @description If specified, a discussion of the specified category is created and linked to the release. The value must be a category that already exists in the repository. For more information, see "[Managing categories for discussions in your repository](https://docs.github.com/discussions/managing-discussions-for-your-community/managing-categories-for-discussions-in-your-repository)." */ + discussion_category_name?: string; + /** + * @description Whether to automatically generate the name and body for this release. If `name` is specified, the specified name will be used; otherwise, a name will be automatically generated. If `body` is specified, the body will be pre-pended to the automatically generated notes. + * @default false + */ + generate_release_notes?: boolean; + }; + }; + }; + }; + /** To download the asset's binary content, set the `Accept` header of the request to [`application/octet-stream`](https://docs.github.com/rest/overview/media-types). The API will either redirect the client to the location, or stream it directly if possible. API clients should handle both a `200` or `302` response. */ + "repos/get-release-asset": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The unique identifier of the asset. */ + asset_id: components["parameters"]["asset-id"]; + }; + }; + responses: { + /** To download the asset's binary content, set the `Accept` header of the request to [`application/octet-stream`](https://docs.github.com/rest/overview/media-types). The API will either redirect the client to the location, or stream it directly if possible. API clients should handle both a `200` or `302` response. */ + 200: { + content: { + "application/json": components["schemas"]["release-asset"]; + }; + }; + 302: components["responses"]["found"]; + 404: components["responses"]["not_found"]; + }; + }; + "repos/delete-release-asset": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The unique identifier of the asset. */ + asset_id: components["parameters"]["asset-id"]; + }; + }; + responses: { + /** Response */ + 204: never; + }; + }; + /** Users with push access to the repository can edit a release asset. */ + "repos/update-release-asset": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The unique identifier of the asset. */ + asset_id: components["parameters"]["asset-id"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["release-asset"]; + }; + }; + }; + requestBody: { + content: { + "application/json": { + /** @description The file name of the asset. */ + name?: string; + /** @description An alternate short description of the asset. Used in place of the filename. */ + label?: string; + /** @example "uploaded" */ + state?: string; + }; + }; + }; + }; + /** Generate a name and body describing a [release](https://docs.github.com/rest/reference/repos#releases). The body content will be markdown formatted and contain information like the changes since last release and users who contributed. The generated release notes are not saved anywhere. They are intended to be generated and used when creating a new release. */ + "repos/generate-release-notes": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + }; + }; + responses: { + /** Name and body of generated release notes */ + 200: { + content: { + "application/json": components["schemas"]["release-notes-content"]; + }; + }; + 404: components["responses"]["not_found"]; + }; + requestBody: { + content: { + "application/json": { + /** @description The tag name for the release. This can be an existing tag or a new one. */ + tag_name: string; + /** @description Specifies the commitish value that will be the target for the release's tag. Required if the supplied tag_name does not reference an existing tag. Ignored if the tag_name already exists. */ + target_commitish?: string; + /** @description The name of the previous tag to use as the starting point for the release notes. Use to manually specify the range for the set of changes considered as part this release. */ + previous_tag_name?: string; + /** @description Specifies a path to a file in the repository containing configuration settings used for generating the release notes. If unspecified, the configuration file located in the repository at '.github/release.yml' or '.github/release.yaml' will be used. If that is not present, the default configuration will be used. */ + configuration_file_path?: string; + }; + }; + }; + }; + /** + * View the latest published full release for the repository. + * + * The latest release is the most recent non-prerelease, non-draft release, sorted by the `created_at` attribute. The `created_at` attribute is the date of the commit used for the release, and not the date when the release was drafted or published. + */ + "repos/get-latest-release": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["release"]; + }; + }; + }; + }; + /** Get a published release with the specified tag. */ + "repos/get-release-by-tag": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** tag parameter */ + tag: string; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["release"]; + }; + }; + 404: components["responses"]["not_found"]; + }; + }; + /** **Note:** This returns an `upload_url` key corresponding to the endpoint for uploading release assets. This key is a [hypermedia resource](https://docs.github.com/rest/overview/resources-in-the-rest-api#hypermedia). */ + "repos/get-release": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The unique identifier of the release. */ + release_id: components["parameters"]["release-id"]; + }; + }; + responses: { + /** **Note:** This returns an `upload_url` key corresponding to the endpoint for uploading release assets. This key is a [hypermedia resource](https://docs.github.com/rest/overview/resources-in-the-rest-api#hypermedia). */ + 200: { + content: { + "application/json": components["schemas"]["release"]; + }; + }; + 404: components["responses"]["not_found"]; + }; + }; + /** Users with push access to the repository can delete a release. */ + "repos/delete-release": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The unique identifier of the release. */ + release_id: components["parameters"]["release-id"]; + }; + }; + responses: { + /** Response */ + 204: never; + }; + }; + /** Users with push access to the repository can edit a release. */ + "repos/update-release": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The unique identifier of the release. */ + release_id: components["parameters"]["release-id"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["release"]; + }; + }; + /** Not Found if the discussion category name is invalid */ + 404: { + content: { + "application/json": components["schemas"]["basic-error"]; + }; + }; + }; + requestBody: { + content: { + "application/json": { + /** @description The name of the tag. */ + tag_name?: string; + /** @description Specifies the commitish value that determines where the Git tag is created from. Can be any branch or commit SHA. Unused if the Git tag already exists. Default: the repository's default branch (usually `master`). */ + target_commitish?: string; + /** @description The name of the release. */ + name?: string; + /** @description Text describing the contents of the tag. */ + body?: string; + /** @description `true` makes the release a draft, and `false` publishes the release. */ + draft?: boolean; + /** @description `true` to identify the release as a prerelease, `false` to identify the release as a full release. */ + prerelease?: boolean; + /** @description If specified, a discussion of the specified category is created and linked to the release. The value must be a category that already exists in the repository. If there is already a discussion linked to the release, this parameter is ignored. For more information, see "[Managing categories for discussions in your repository](https://docs.github.com/discussions/managing-discussions-for-your-community/managing-categories-for-discussions-in-your-repository)." */ + discussion_category_name?: string; + }; + }; + }; + }; + "repos/list-release-assets": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The unique identifier of the release. */ + release_id: components["parameters"]["release-id"]; + }; + query: { + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + }; + }; + responses: { + /** Response */ + 200: { + headers: {}; + content: { + "application/json": components["schemas"]["release-asset"][]; + }; + }; + }; + }; + /** + * This endpoint makes use of [a Hypermedia relation](https://docs.github.com/rest/overview/resources-in-the-rest-api#hypermedia) to determine which URL to access. The endpoint you call to upload release assets is specific to your release. Use the `upload_url` returned in + * the response of the [Create a release endpoint](https://docs.github.com/rest/reference/repos#create-a-release) to upload a release asset. + * + * You need to use an HTTP client which supports [SNI](http://en.wikipedia.org/wiki/Server_Name_Indication) to make calls to this endpoint. + * + * Most libraries will set the required `Content-Length` header automatically. Use the required `Content-Type` header to provide the media type of the asset. For a list of media types, see [Media Types](https://www.iana.org/assignments/media-types/media-types.xhtml). For example: + * + * `application/zip` + * + * GitHub expects the asset data in its raw binary form, rather than JSON. You will send the raw binary content of the asset as the request body. Everything else about the endpoint is the same as the rest of the API. For example, + * you'll still need to pass your authentication to be able to upload an asset. + * + * When an upstream failure occurs, you will receive a `502 Bad Gateway` status. This may leave an empty asset with a state of `starter`. It can be safely deleted. + * + * **Notes:** + * * GitHub renames asset filenames that have special characters, non-alphanumeric characters, and leading or trailing periods. The "[List assets for a release](https://docs.github.com/rest/reference/repos#list-assets-for-a-release)" + * endpoint lists the renamed filenames. For more information and help, contact [GitHub Support](https://support.github.com/contact?tags=dotcom-rest-api). + * * If you upload an asset with the same filename as another uploaded asset, you'll receive an error and must delete the old file before you can re-upload the new asset. + */ + "repos/upload-release-asset": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The unique identifier of the release. */ + release_id: components["parameters"]["release-id"]; + }; + query: { + name: string; + label?: string; + }; + }; + responses: { + /** Response for successful upload */ + 201: { + content: { + "application/json": components["schemas"]["release-asset"]; + }; + }; + /** Response if you upload an asset with the same filename as another uploaded asset */ + 422: unknown; + }; + requestBody: { + content: { + "*/*": string; + }; + }; + }; + /** List the reactions to a [release](https://docs.github.com/rest/reference/repos#releases). */ + "reactions/list-for-release": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The unique identifier of the release. */ + release_id: components["parameters"]["release-id"]; + }; + query: { + /** Returns a single [reaction type](https://docs.github.com/rest/reference/reactions#reaction-types). Omit this parameter to list all reactions to a release. */ + content?: "+1" | "laugh" | "heart" | "hooray" | "rocket" | "eyes"; + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + }; + }; + responses: { + /** Response */ + 200: { + headers: {}; + content: { + "application/json": components["schemas"]["reaction"][]; + }; + }; + 404: components["responses"]["not_found"]; + }; + }; + /** Create a reaction to a [release](https://docs.github.com/rest/reference/repos#releases). A response with a `Status: 200 OK` means that you already added the reaction type to this release. */ + "reactions/create-for-release": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The unique identifier of the release. */ + release_id: components["parameters"]["release-id"]; + }; + }; + responses: { + /** Reaction exists */ + 200: { + content: { + "application/json": components["schemas"]["reaction"]; + }; + }; + /** Reaction created */ + 201: { + content: { + "application/json": components["schemas"]["reaction"]; + }; + }; + 422: components["responses"]["validation_failed"]; + }; + requestBody: { + content: { + "application/json": { + /** + * @description The [reaction type](https://docs.github.com/rest/reference/reactions#reaction-types) to add to the release. + * @enum {string} + */ + content: "+1" | "laugh" | "heart" | "hooray" | "rocket" | "eyes"; + }; + }; + }; + }; + /** + * **Note:** You can also specify a repository by `repository_id` using the route `DELETE delete /repositories/:repository_id/releases/:release_id/reactions/:reaction_id`. + * + * Delete a reaction to a [release](https://docs.github.com/rest/reference/repos#releases). + */ + "reactions/delete-for-release": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The unique identifier of the release. */ + release_id: components["parameters"]["release-id"]; + /** The unique identifier of the reaction. */ + reaction_id: components["parameters"]["reaction-id"]; + }; + }; + responses: { + /** Response */ + 204: never; + }; + }; + /** + * Lists secret scanning alerts for an eligible repository, from newest to oldest. + * To use this endpoint, you must be an administrator for the repository or for the organization that owns the repository, and you must use a personal access token with the `repo` scope or `security_events` scope. + * For public repositories, you may instead use the `public_repo` scope. + * + * GitHub Apps must have the `secret_scanning_alerts` read permission to use this endpoint. + */ + "secret-scanning/list-alerts-for-repo": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + }; + query: { + /** Set to `open` or `resolved` to only list secret scanning alerts in a specific state. */ + state?: components["parameters"]["secret-scanning-alert-state"]; + /** + * A comma-separated list of secret types to return. By default all secret types are returned. + * See "[Secret scanning patterns](https://docs.github.com/code-security/secret-scanning/secret-scanning-patterns#supported-secrets-for-advanced-security)" + * for a complete list of secret types. + */ + secret_type?: components["parameters"]["secret-scanning-alert-secret-type"]; + /** A comma-separated list of resolutions. Only secret scanning alerts with one of these resolutions are listed. Valid resolutions are `false_positive`, `wont_fix`, `revoked`, `pattern_edited`, `pattern_deleted` or `used_in_tests`. */ + resolution?: components["parameters"]["secret-scanning-alert-resolution"]; + /** The property to sort the results by. `created` means when the alert was created. `updated` means when the alert was updated or resolved. */ + sort?: components["parameters"]["secret-scanning-alert-sort"]; + /** The direction to sort the results by. */ + direction?: components["parameters"]["direction"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** A cursor, as given in the [Link header](https://docs.github.com/rest/overview/resources-in-the-rest-api#link-header). If specified, the query only searches for events before this cursor. To receive an initial cursor on your first request, include an empty "before" query string. */ + before?: components["parameters"]["secret-scanning-pagination-before-org-repo"]; + /** A cursor, as given in the [Link header](https://docs.github.com/rest/overview/resources-in-the-rest-api#link-header). If specified, the query only searches for events after this cursor. To receive an initial cursor on your first request, include an empty "after" query string. */ + after?: components["parameters"]["secret-scanning-pagination-after-org-repo"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["secret-scanning-alert"][]; + }; + }; + /** Repository is public or secret scanning is disabled for the repository */ + 404: unknown; + 503: components["responses"]["service_unavailable"]; + }; + }; + /** + * Gets a single secret scanning alert detected in an eligible repository. + * To use this endpoint, you must be an administrator for the repository or for the organization that owns the repository, and you must use a personal access token with the `repo` scope or `security_events` scope. + * For public repositories, you may instead use the `public_repo` scope. + * + * GitHub Apps must have the `secret_scanning_alerts` read permission to use this endpoint. + */ + "secret-scanning/get-alert": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The number that identifies an alert. You can find this at the end of the URL for a code scanning alert within GitHub, and in the `number` field in the response from the `GET /repos/{owner}/{repo}/code-scanning/alerts` operation. */ + alert_number: components["parameters"]["alert-number"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["secret-scanning-alert"]; + }; + }; + 304: components["responses"]["not_modified"]; + /** Repository is public, or secret scanning is disabled for the repository, or the resource is not found */ + 404: unknown; + 503: components["responses"]["service_unavailable"]; + }; + }; + /** + * Updates the status of a secret scanning alert in an eligible repository. + * To use this endpoint, you must be an administrator for the repository or for the organization that owns the repository, and you must use a personal access token with the `repo` scope or `security_events` scope. + * For public repositories, you may instead use the `public_repo` scope. + * + * GitHub Apps must have the `secret_scanning_alerts` write permission to use this endpoint. + */ + "secret-scanning/update-alert": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The number that identifies an alert. You can find this at the end of the URL for a code scanning alert within GitHub, and in the `number` field in the response from the `GET /repos/{owner}/{repo}/code-scanning/alerts` operation. */ + alert_number: components["parameters"]["alert-number"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["secret-scanning-alert"]; + }; + }; + /** Repository is public, or secret scanning is disabled for the repository, or the resource is not found */ + 404: unknown; + /** State does not match the resolution */ + 422: unknown; + 503: components["responses"]["service_unavailable"]; + }; + requestBody: { + content: { + "application/json": { + state: components["schemas"]["secret-scanning-alert-state"]; + resolution?: components["schemas"]["secret-scanning-alert-resolution"]; + }; + }; + }; + }; + /** + * Lists all locations for a given secret scanning alert for an eligible repository. + * To use this endpoint, you must be an administrator for the repository or for the organization that owns the repository, and you must use a personal access token with the `repo` scope or `security_events` scope. + * For public repositories, you may instead use the `public_repo` scope. + * + * GitHub Apps must have the `secret_scanning_alerts` read permission to use this endpoint. + */ + "secret-scanning/list-locations-for-alert": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The number that identifies an alert. You can find this at the end of the URL for a code scanning alert within GitHub, and in the `number` field in the response from the `GET /repos/{owner}/{repo}/code-scanning/alerts` operation. */ + alert_number: components["parameters"]["alert-number"]; + }; + query: { + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + }; + }; + responses: { + /** Response */ + 200: { + headers: {}; + content: { + "application/json": components["schemas"]["secret-scanning-location"][]; + }; + }; + /** Repository is public, or secret scanning is disabled for the repository, or the resource is not found */ + 404: unknown; + 503: components["responses"]["service_unavailable"]; + }; + }; + /** + * Lists the people that have starred the repository. + * + * You can also find out _when_ stars were created by passing the following custom [media type](https://docs.github.com/rest/overview/media-types/) via the `Accept` header: + */ + "activity/list-stargazers-for-repo": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + }; + query: { + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + }; + }; + responses: { + /** Response */ + 200: { + headers: {}; + content: { + "application/json": Partial & + Partial; + }; + }; + 422: components["responses"]["validation_failed"]; + }; + }; + /** Returns a weekly aggregate of the number of additions and deletions pushed to a repository. */ + "repos/get-code-frequency-stats": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + }; + }; + responses: { + /** Returns a weekly aggregate of the number of additions and deletions pushed to a repository. */ + 200: { + content: { + "application/json": components["schemas"]["code-frequency-stat"][]; + }; + }; + 202: components["responses"]["accepted"]; + 204: components["responses"]["no_content"]; + }; + }; + /** Returns the last year of commit activity grouped by week. The `days` array is a group of commits per day, starting on `Sunday`. */ + "repos/get-commit-activity-stats": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["commit-activity"][]; + }; + }; + 202: components["responses"]["accepted"]; + 204: components["responses"]["no_content"]; + }; + }; + /** + * Returns the `total` number of commits authored by the contributor. In addition, the response includes a Weekly Hash (`weeks` array) with the following information: + * + * * `w` - Start of the week, given as a [Unix timestamp](http://en.wikipedia.org/wiki/Unix_time). + * * `a` - Number of additions + * * `d` - Number of deletions + * * `c` - Number of commits + */ + "repos/get-contributors-stats": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + }; + }; + responses: { + /** + * * `w` - Start of the week, given as a [Unix timestamp](http://en.wikipedia.org/wiki/Unix_time). + * * `a` - Number of additions + * * `d` - Number of deletions + * * `c` - Number of commits + */ + 200: { + content: { + "application/json": components["schemas"]["contributor-activity"][]; + }; + }; + 202: components["responses"]["accepted"]; + 204: components["responses"]["no_content"]; + }; + }; + /** + * Returns the total commit counts for the `owner` and total commit counts in `all`. `all` is everyone combined, including the `owner` in the last 52 weeks. If you'd like to get the commit counts for non-owners, you can subtract `owner` from `all`. + * + * The array order is oldest week (index 0) to most recent week. + */ + "repos/get-participation-stats": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + }; + }; + responses: { + /** The array order is oldest week (index 0) to most recent week. */ + 200: { + content: { + "application/json": components["schemas"]["participation-stats"]; + }; + }; + 404: components["responses"]["not_found"]; + }; + }; + /** + * Each array contains the day number, hour number, and number of commits: + * + * * `0-6`: Sunday - Saturday + * * `0-23`: Hour of day + * * Number of commits + * + * For example, `[2, 14, 25]` indicates that there were 25 total commits, during the 2:00pm hour on Tuesdays. All times are based on the time zone of individual commits. + */ + "repos/get-punch-card-stats": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + }; + }; + responses: { + /** For example, `[2, 14, 25]` indicates that there were 25 total commits, during the 2:00pm hour on Tuesdays. All times are based on the time zone of individual commits. */ + 200: { + content: { + "application/json": components["schemas"]["code-frequency-stat"][]; + }; + }; + 204: components["responses"]["no_content"]; + }; + }; + /** + * Users with push access in a repository can create commit statuses for a given SHA. + * + * Note: there is a limit of 1000 statuses per `sha` and `context` within a repository. Attempts to create more than 1000 statuses will result in a validation error. + */ + "repos/create-commit-status": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + sha: string; + }; + }; + responses: { + /** Response */ + 201: { + headers: { + Location?: string; + }; + content: { + "application/json": components["schemas"]["status"]; + }; + }; + }; + requestBody: { + content: { + "application/json": { + /** + * @description The state of the status. + * @enum {string} + */ + state: "error" | "failure" | "pending" | "success"; + /** + * @description The target URL to associate with this status. This URL will be linked from the GitHub UI to allow users to easily see the source of the status. + * For example, if your continuous integration system is posting build status, you would want to provide the deep link for the build output for this specific SHA: + * `http://ci.example.com/user/repo/build/sha` + */ + target_url?: string; + /** @description A short description of the status. */ + description?: string; + /** + * @description A string label to differentiate this status from the status of other systems. This field is case-insensitive. + * @default default + */ + context?: string; + }; + }; + }; + }; + /** Lists the people watching the specified repository. */ + "activity/list-watchers-for-repo": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + }; + query: { + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + }; + }; + responses: { + /** Response */ + 200: { + headers: {}; + content: { + "application/json": components["schemas"]["simple-user"][]; + }; + }; + }; + }; + "activity/get-repo-subscription": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + }; + }; + responses: { + /** if you subscribe to the repository */ + 200: { + content: { + "application/json": components["schemas"]["repository-subscription"]; + }; + }; + 403: components["responses"]["forbidden"]; + /** Not Found if you don't subscribe to the repository */ + 404: unknown; + }; + }; + /** If you would like to watch a repository, set `subscribed` to `true`. If you would like to ignore notifications made within a repository, set `ignored` to `true`. If you would like to stop watching a repository, [delete the repository's subscription](https://docs.github.com/rest/reference/activity#delete-a-repository-subscription) completely. */ + "activity/set-repo-subscription": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["repository-subscription"]; + }; + }; + }; + requestBody: { + content: { + "application/json": { + /** @description Determines if notifications should be received from this repository. */ + subscribed?: boolean; + /** @description Determines if all notifications should be blocked from this repository. */ + ignored?: boolean; + }; + }; + }; + }; + /** This endpoint should only be used to stop watching a repository. To control whether or not you wish to receive notifications from a repository, [set the repository's subscription manually](https://docs.github.com/rest/reference/activity#set-a-repository-subscription). */ + "activity/delete-repo-subscription": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + }; + }; + responses: { + /** Response */ + 204: never; + }; + }; + "repos/list-tags": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + }; + query: { + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + }; + }; + responses: { + /** Response */ + 200: { + headers: {}; + content: { + "application/json": components["schemas"]["tag"][]; + }; + }; + }; + }; + /** + * This returns the tag protection states of a repository. + * + * This information is only available to repository administrators. + */ + "repos/list-tag-protection": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["tag-protection"][]; + }; + }; + 403: components["responses"]["forbidden"]; + 404: components["responses"]["not_found"]; + }; + }; + /** + * This creates a tag protection state for a repository. + * This endpoint is only available to repository administrators. + */ + "repos/create-tag-protection": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + }; + }; + responses: { + /** Response */ + 201: { + content: { + "application/json": components["schemas"]["tag-protection"]; + }; + }; + 403: components["responses"]["forbidden"]; + 404: components["responses"]["not_found"]; + }; + requestBody: { + content: { + "application/json": { + /** @description An optional glob pattern to match against when enforcing tag protection. */ + pattern: string; + }; + }; + }; + }; + /** + * This deletes a tag protection state for a repository. + * This endpoint is only available to repository administrators. + */ + "repos/delete-tag-protection": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + /** The unique identifier of the tag protection. */ + tag_protection_id: components["parameters"]["tag-protection-id"]; + }; + }; + responses: { + /** Response */ + 204: never; + 403: components["responses"]["forbidden"]; + 404: components["responses"]["not_found"]; + }; + }; + /** + * Gets a redirect URL to download a tar archive for a repository. If you omit `:ref`, the repository’s default branch (usually + * `master`) will be used. Please make sure your HTTP framework is configured to follow redirects or you will need to use + * the `Location` header to make a second `GET` request. + * **Note**: For private repositories, these links are temporary and expire after five minutes. + */ + "repos/download-tarball-archive": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + ref: string; + }; + }; + responses: { + /** Response */ + 302: never; + }; + }; + "repos/list-teams": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + }; + query: { + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + }; + }; + responses: { + /** Response */ + 200: { + headers: {}; + content: { + "application/json": components["schemas"]["team"][]; + }; + }; + }; + }; + "repos/get-all-topics": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + }; + query: { + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["topic"]; + }; + }; + 404: components["responses"]["not_found"]; + }; + }; + "repos/replace-all-topics": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["topic"]; + }; + }; + 404: components["responses"]["not_found"]; + 422: components["responses"]["validation_failed_simple"]; + }; + requestBody: { + content: { + "application/json": { + /** @description An array of topics to add to the repository. Pass one or more topics to _replace_ the set of existing topics. Send an empty array (`[]`) to clear all topics from the repository. **Note:** Topic `names` cannot contain uppercase letters. */ + names: string[]; + }; + }; + }; + }; + /** Get the total number of clones and breakdown per day or week for the last 14 days. Timestamps are aligned to UTC midnight of the beginning of the day or week. Week begins on Monday. */ + "repos/get-clones": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + }; + query: { + /** The time frame to display results for. */ + per?: components["parameters"]["per"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["clone-traffic"]; + }; + }; + 403: components["responses"]["forbidden"]; + }; + }; + /** Get the top 10 popular contents over the last 14 days. */ + "repos/get-top-paths": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["content-traffic"][]; + }; + }; + 403: components["responses"]["forbidden"]; + }; + }; + /** Get the top 10 referrers over the last 14 days. */ + "repos/get-top-referrers": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["referrer-traffic"][]; + }; + }; + 403: components["responses"]["forbidden"]; + }; + }; + /** Get the total number of views and breakdown per day or week for the last 14 days. Timestamps are aligned to UTC midnight of the beginning of the day or week. Week begins on Monday. */ + "repos/get-views": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + }; + query: { + /** The time frame to display results for. */ + per?: components["parameters"]["per"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["view-traffic"]; + }; + }; + 403: components["responses"]["forbidden"]; + }; + }; + /** A transfer request will need to be accepted by the new owner when transferring a personal repository to another user. The response will contain the original `owner`, and the transfer will continue asynchronously. For more details on the requirements to transfer personal and organization-owned repositories, see [about repository transfers](https://docs.github.com/articles/about-repository-transfers/). */ + "repos/transfer": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + }; + }; + responses: { + /** Response */ + 202: { + content: { + "application/json": components["schemas"]["minimal-repository"]; + }; + }; + }; + requestBody: { + content: { + "application/json": { + /** @description The username or organization name the repository will be transferred to. */ + new_owner: string; + /** @description ID of the team or teams to add to the repository. Teams can only be added to organization-owned repositories. */ + team_ids?: number[]; + }; + }; + }; + }; + /** Shows whether dependency alerts are enabled or disabled for a repository. The authenticated user must have admin read access to the repository. For more information, see "[About security alerts for vulnerable dependencies](https://docs.github.com/en/articles/about-security-alerts-for-vulnerable-dependencies)". */ + "repos/check-vulnerability-alerts": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + }; + }; + responses: { + /** Response if repository is enabled with vulnerability alerts */ + 204: never; + /** Not Found if repository is not enabled with vulnerability alerts */ + 404: unknown; + }; + }; + /** Enables dependency alerts and the dependency graph for a repository. The authenticated user must have admin access to the repository. For more information, see "[About security alerts for vulnerable dependencies](https://docs.github.com/en/articles/about-security-alerts-for-vulnerable-dependencies)". */ + "repos/enable-vulnerability-alerts": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + }; + }; + responses: { + /** Response */ + 204: never; + }; + }; + /** Disables dependency alerts and the dependency graph for a repository. The authenticated user must have admin access to the repository. For more information, see "[About security alerts for vulnerable dependencies](https://docs.github.com/en/articles/about-security-alerts-for-vulnerable-dependencies)". */ + "repos/disable-vulnerability-alerts": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + }; + }; + responses: { + /** Response */ + 204: never; + }; + }; + /** + * Gets a redirect URL to download a zip archive for a repository. If you omit `:ref`, the repository’s default branch (usually + * `master`) will be used. Please make sure your HTTP framework is configured to follow redirects or you will need to use + * the `Location` header to make a second `GET` request. + * **Note**: For private repositories, these links are temporary and expire after five minutes. + */ + "repos/download-zipball-archive": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + ref: string; + }; + }; + responses: { + /** Response */ + 302: never; + }; + }; + /** + * Creates a new repository using a repository template. Use the `template_owner` and `template_repo` route parameters to specify the repository to use as the template. The authenticated user must own or be a member of an organization that owns the repository. To check if a repository is available to use as a template, get the repository's information using the [Get a repository](https://docs.github.com/rest/reference/repos#get-a-repository) endpoint and check that the `is_template` key is `true`. + * + * **OAuth scope requirements** + * + * When using [OAuth](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/), authorizations must include: + * + * * `public_repo` scope or `repo` scope to create a public repository. Note: For GitHub AE, use `repo` scope to create an internal repository. + * * `repo` scope to create a private repository + */ + "repos/create-using-template": { + parameters: { + path: { + template_owner: string; + template_repo: string; + }; + }; + responses: { + /** Response */ + 201: { + headers: { + Location?: string; + }; + content: { + "application/json": components["schemas"]["repository"]; + }; + }; + }; + requestBody: { + content: { + "application/json": { + /** @description The organization or person who will own the new repository. To create a new repository in an organization, the authenticated user must be a member of the specified organization. */ + owner?: string; + /** @description The name of the new repository. */ + name: string; + /** @description A short description of the new repository. */ + description?: string; + /** + * @description Set to `true` to include the directory structure and files from all branches in the template repository, and not just the default branch. Default: `false`. + * @default false + */ + include_all_branches?: boolean; + /** + * @description Either `true` to create a new private repository or `false` to create a new public one. + * @default false + */ + private?: boolean; + }; + }; + }; + }; + /** + * Lists all public repositories in the order that they were created. + * + * Note: + * - For GitHub Enterprise Server, this endpoint will only list repositories available to all users on the enterprise. + * - Pagination is powered exclusively by the `since` parameter. Use the [Link header](https://docs.github.com/rest/overview/resources-in-the-rest-api#link-header) to get the URL for the next page of repositories. + */ + "repos/list-public": { + parameters: { + query: { + /** A repository ID. Only return repositories with an ID greater than this ID. */ + since?: components["parameters"]["since-repo"]; + }; + }; + responses: { + /** Response */ + 200: { + headers: { + Link?: string; + }; + content: { + "application/json": components["schemas"]["minimal-repository"][]; + }; + }; + 304: components["responses"]["not_modified"]; + 422: components["responses"]["validation_failed"]; + }; + }; + /** Lists all secrets available in an environment without revealing their encrypted values. You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the `secrets` repository permission to use this endpoint. */ + "actions/list-environment-secrets": { + parameters: { + path: { + /** The unique identifier of the repository. */ + repository_id: components["parameters"]["repository-id"]; + /** The name of the environment */ + environment_name: components["parameters"]["environment-name"]; + }; + query: { + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + }; + }; + responses: { + /** Response */ + 200: { + headers: {}; + content: { + "application/json": { + total_count: number; + secrets: components["schemas"]["actions-secret"][]; + }; + }; + }; + }; + }; + /** Get the public key for an environment, which you need to encrypt environment secrets. You need to encrypt a secret before you can create or update secrets. Anyone with read access to the repository can use this endpoint. If the repository is private you must use an access token with the `repo` scope. GitHub Apps must have the `secrets` repository permission to use this endpoint. */ + "actions/get-environment-public-key": { + parameters: { + path: { + /** The unique identifier of the repository. */ + repository_id: components["parameters"]["repository-id"]; + /** The name of the environment */ + environment_name: components["parameters"]["environment-name"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["actions-public-key"]; + }; + }; + }; + }; + /** Gets a single environment secret without revealing its encrypted value. You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the `secrets` repository permission to use this endpoint. */ + "actions/get-environment-secret": { + parameters: { + path: { + /** The unique identifier of the repository. */ + repository_id: components["parameters"]["repository-id"]; + /** The name of the environment */ + environment_name: components["parameters"]["environment-name"]; + /** The name of the secret. */ + secret_name: components["parameters"]["secret-name"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["actions-secret"]; + }; + }; + }; + }; + /** + * Creates or updates an environment secret with an encrypted value. Encrypt your secret using + * [LibSodium](https://libsodium.gitbook.io/doc/bindings_for_other_languages). You must authenticate using an access + * token with the `repo` scope to use this endpoint. GitHub Apps must have the `secrets` repository permission to use + * this endpoint. + * + * #### Example encrypting a secret using Node.js + * + * Encrypt your secret using the [tweetsodium](https://github.com/github/tweetsodium) library. + * + * ``` + * const sodium = require('tweetsodium'); + * + * const key = "base64-encoded-public-key"; + * const value = "plain-text-secret"; + * + * // Convert the message and key to Uint8Array's (Buffer implements that interface) + * const messageBytes = Buffer.from(value); + * const keyBytes = Buffer.from(key, 'base64'); + * + * // Encrypt using LibSodium. + * const encryptedBytes = sodium.seal(messageBytes, keyBytes); + * + * // Base64 the encrypted secret + * const encrypted = Buffer.from(encryptedBytes).toString('base64'); + * + * console.log(encrypted); + * ``` + * + * + * #### Example encrypting a secret using Python + * + * Encrypt your secret using [pynacl](https://pynacl.readthedocs.io/en/latest/public/#nacl-public-sealedbox) with Python 3. + * + * ``` + * from base64 import b64encode + * from nacl import encoding, public + * + * def encrypt(public_key: str, secret_value: str) -> str: + * """Encrypt a Unicode string using the public key.""" + * public_key = public.PublicKey(public_key.encode("utf-8"), encoding.Base64Encoder()) + * sealed_box = public.SealedBox(public_key) + * encrypted = sealed_box.encrypt(secret_value.encode("utf-8")) + * return b64encode(encrypted).decode("utf-8") + * ``` + * + * #### Example encrypting a secret using C# + * + * Encrypt your secret using the [Sodium.Core](https://www.nuget.org/packages/Sodium.Core/) package. + * + * ``` + * var secretValue = System.Text.Encoding.UTF8.GetBytes("mySecret"); + * var publicKey = Convert.FromBase64String("2Sg8iYjAxxmI2LvUXpJjkYrMxURPc8r+dB7TJyvvcCU="); + * + * var sealedPublicKeyBox = Sodium.SealedPublicKeyBox.Create(secretValue, publicKey); + * + * Console.WriteLine(Convert.ToBase64String(sealedPublicKeyBox)); + * ``` + * + * #### Example encrypting a secret using Ruby + * + * Encrypt your secret using the [rbnacl](https://github.com/RubyCrypto/rbnacl) gem. + * + * ```ruby + * require "rbnacl" + * require "base64" + * + * key = Base64.decode64("+ZYvJDZMHUfBkJdyq5Zm9SKqeuBQ4sj+6sfjlH4CgG0=") + * public_key = RbNaCl::PublicKey.new(key) + * + * box = RbNaCl::Boxes::Sealed.from_public_key(public_key) + * encrypted_secret = box.encrypt("my_secret") + * + * # Print the base64 encoded secret + * puts Base64.strict_encode64(encrypted_secret) + * ``` + */ + "actions/create-or-update-environment-secret": { + parameters: { + path: { + /** The unique identifier of the repository. */ + repository_id: components["parameters"]["repository-id"]; + /** The name of the environment */ + environment_name: components["parameters"]["environment-name"]; + /** The name of the secret. */ + secret_name: components["parameters"]["secret-name"]; + }; + }; + responses: { + /** Response when creating a secret */ + 201: { + content: { + "application/json": components["schemas"]["empty-object"]; + }; + }; + /** Response when updating a secret */ + 204: never; + }; + requestBody: { + content: { + "application/json": { + /** @description Value for your secret, encrypted with [LibSodium](https://libsodium.gitbook.io/doc/bindings_for_other_languages) using the public key retrieved from the [Get an environment public key](https://docs.github.com/rest/reference/actions#get-an-environment-public-key) endpoint. */ + encrypted_value: string; + /** @description ID of the key you used to encrypt the secret. */ + key_id: string; + }; + }; + }; + }; + /** Deletes a secret in an environment using the secret name. You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the `secrets` repository permission to use this endpoint. */ + "actions/delete-environment-secret": { + parameters: { + path: { + /** The unique identifier of the repository. */ + repository_id: components["parameters"]["repository-id"]; + /** The name of the environment */ + environment_name: components["parameters"]["environment-name"]; + /** The name of the secret. */ + secret_name: components["parameters"]["secret-name"]; + }; + }; + responses: { + /** Default response */ + 204: never; + }; + }; + /** **Note:** The SCIM API endpoints for enterprise accounts are currently in beta and are subject to change. */ + "enterprise-admin/list-provisioned-groups-enterprise": { + parameters: { + path: { + /** The slug version of the enterprise name. You can also substitute this value with the enterprise id. */ + enterprise: components["parameters"]["enterprise"]; + }; + query: { + /** Used for pagination: the index of the first result to return. */ + startIndex?: components["parameters"]["start-index"]; + /** Used for pagination: the number of results to return. */ + count?: components["parameters"]["count"]; + /** filter results */ + filter?: string; + /** attributes to exclude */ + excludedAttributes?: string; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["scim-group-list-enterprise"]; + }; + }; + }; + }; + /** + * **Note:** The SCIM API endpoints for enterprise accounts are currently in beta and are subject to change. + * + * Provision an enterprise group, and invite users to the group. This sends invitation emails to the email address of the invited users to join the GitHub organization that the SCIM group corresponds to. + */ + "enterprise-admin/provision-and-invite-enterprise-group": { + parameters: { + path: { + /** The slug version of the enterprise name. You can also substitute this value with the enterprise id. */ + enterprise: components["parameters"]["enterprise"]; + }; + }; + responses: { + /** Response */ + 201: { + content: { + "application/json": components["schemas"]["scim-enterprise-group"]; + }; + }; + }; + requestBody: { + content: { + "application/json": { + /** @description The SCIM schema URIs. */ + schemas: string[]; + /** @description The name of the SCIM group. This must match the GitHub organization that the group maps to. */ + displayName: string; + members?: { + /** @description The SCIM user ID for a user. */ + value: string; + }[]; + }; + }; + }; + }; + /** **Note:** The SCIM API endpoints for enterprise accounts are currently in beta and are subject to change. */ + "enterprise-admin/get-provisioning-information-for-enterprise-group": { + parameters: { + path: { + /** The slug version of the enterprise name. You can also substitute this value with the enterprise id. */ + enterprise: components["parameters"]["enterprise"]; + /** Identifier generated by the GitHub SCIM endpoint. */ + scim_group_id: components["parameters"]["scim-group-id"]; + }; + query: { + /** Attributes to exclude. */ + excludedAttributes?: string; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["scim-enterprise-group"]; + }; + }; + }; + }; + /** + * **Note:** The SCIM API endpoints for enterprise accounts are currently in beta and are subject to change. + * + * Replaces an existing provisioned group’s information. You must provide all the information required for the group as if you were provisioning it for the first time. Any existing group information that you don't provide will be removed, including group membership. If you want to only update a specific attribute, use the [Update an attribute for a SCIM enterprise group](#update-an-attribute-for-a-scim-enterprise-group) endpoint instead. + */ + "enterprise-admin/set-information-for-provisioned-enterprise-group": { + parameters: { + path: { + /** The slug version of the enterprise name. You can also substitute this value with the enterprise id. */ + enterprise: components["parameters"]["enterprise"]; + /** Identifier generated by the GitHub SCIM endpoint. */ + scim_group_id: components["parameters"]["scim-group-id"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["scim-enterprise-group"]; + }; + }; + }; + requestBody: { + content: { + "application/json": { + /** @description The SCIM schema URIs. */ + schemas: string[]; + /** @description The name of the SCIM group. This must match the GitHub organization that the group maps to. */ + displayName: string; + members?: { + /** @description The SCIM user ID for a user. */ + value: string; + }[]; + }; + }; + }; + }; + /** **Note:** The SCIM API endpoints for enterprise accounts are currently in beta and are subject to change. */ + "enterprise-admin/delete-scim-group-from-enterprise": { + parameters: { + path: { + /** The slug version of the enterprise name. You can also substitute this value with the enterprise id. */ + enterprise: components["parameters"]["enterprise"]; + /** Identifier generated by the GitHub SCIM endpoint. */ + scim_group_id: components["parameters"]["scim-group-id"]; + }; + }; + responses: { + /** Response */ + 204: never; + }; + }; + /** + * **Note:** The SCIM API endpoints for enterprise accounts are currently in beta and are subject to change. + * + * Allows you to change a provisioned group’s individual attributes. To change a group’s values, you must provide a specific Operations JSON format that contains at least one of the add, remove, or replace operations. For examples and more information on the SCIM operations format, see the [SCIM specification](https://tools.ietf.org/html/rfc7644#section-3.5.2). + */ + "enterprise-admin/update-attribute-for-enterprise-group": { + parameters: { + path: { + /** The slug version of the enterprise name. You can also substitute this value with the enterprise id. */ + enterprise: components["parameters"]["enterprise"]; + /** Identifier generated by the GitHub SCIM endpoint. */ + scim_group_id: components["parameters"]["scim-group-id"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["scim-enterprise-group"]; + }; + }; + }; + requestBody: { + content: { + "application/json": { + /** @description The SCIM schema URIs. */ + schemas: string[]; + /** @description Array of [SCIM operations](https://tools.ietf.org/html/rfc7644#section-3.5.2). */ + Operations: { + /** @enum {string} */ + op: "add" | "Add" | "remove" | "Remove" | "replace" | "Replace"; + path?: string; + /** @description Can be any value - string, number, array or object. */ + value?: unknown; + }[]; + }; + }; + }; + }; + /** + * **Note:** The SCIM API endpoints for enterprise accounts are currently in beta and are subject to change. + * + * Retrieves a paginated list of all provisioned enterprise members, including pending invitations. + * + * When a user with a SAML-provisioned external identity leaves (or is removed from) an enterprise, the account's metadata is immediately removed. However, the returned list of user accounts might not always match the organization or enterprise member list you see on GitHub. This can happen in certain cases where an external identity associated with an organization will not match an organization member: + * - When a user with a SCIM-provisioned external identity is removed from an enterprise, the account's metadata is preserved to allow the user to re-join the organization in the future. + * - When inviting a user to join an organization, you can expect to see their external identity in the results before they accept the invitation, or if the invitation is cancelled (or never accepted). + * - When a user is invited over SCIM, an external identity is created that matches with the invitee's email address. However, this identity is only linked to a user account when the user accepts the invitation by going through SAML SSO. + * + * The returned list of external identities can include an entry for a `null` user. These are unlinked SAML identities that are created when a user goes through the following Single Sign-On (SSO) process but does not sign in to their GitHub account after completing SSO: + * + * 1. The user is granted access by the IdP and is not a member of the GitHub enterprise. + * + * 1. The user attempts to access the GitHub enterprise and initiates the SAML SSO process, and is not currently signed in to their GitHub account. + * + * 1. After successfully authenticating with the SAML SSO IdP, the `null` external identity entry is created and the user is prompted to sign in to their GitHub account: + * - If the user signs in, their GitHub account is linked to this entry. + * - If the user does not sign in (or does not create a new account when prompted), they are not added to the GitHub enterprise, and the external identity `null` entry remains in place. + */ + "enterprise-admin/list-provisioned-identities-enterprise": { + parameters: { + path: { + /** The slug version of the enterprise name. You can also substitute this value with the enterprise id. */ + enterprise: components["parameters"]["enterprise"]; + }; + query: { + /** Used for pagination: the index of the first result to return. */ + startIndex?: components["parameters"]["start-index"]; + /** Used for pagination: the number of results to return. */ + count?: components["parameters"]["count"]; + /** filter results */ + filter?: string; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["scim-user-list-enterprise"]; + }; + }; + }; + }; + /** + * **Note:** The SCIM API endpoints for enterprise accounts are currently in beta and are subject to change. + * + * Provision enterprise membership for a user, and send organization invitation emails to the email address. + * + * You can optionally include the groups a user will be invited to join. If you do not provide a list of `groups`, the user is provisioned for the enterprise, but no organization invitation emails will be sent. + */ + "enterprise-admin/provision-and-invite-enterprise-user": { + parameters: { + path: { + /** The slug version of the enterprise name. You can also substitute this value with the enterprise id. */ + enterprise: components["parameters"]["enterprise"]; + }; + }; + responses: { + /** Response */ + 201: { + content: { + "application/json": components["schemas"]["scim-enterprise-user"]; + }; + }; + }; + requestBody: { + content: { + "application/json": { + /** @description The SCIM schema URIs. */ + schemas: string[]; + /** @description The username for the user. */ + userName: string; + name: { + /** @description The first name of the user. */ + givenName: string; + /** @description The last name of the user. */ + familyName: string; + }; + /** @description List of user emails. */ + emails: { + /** @description The email address. */ + value: string; + /** @description The type of email address. */ + type: string; + /** @description Whether this email address is the primary address. */ + primary: boolean; + }[]; + /** @description List of SCIM group IDs the user is a member of. */ + groups?: { + value?: string; + }[]; + }; + }; + }; + }; + /** **Note:** The SCIM API endpoints for enterprise accounts are currently in beta and are subject to change. */ + "enterprise-admin/get-provisioning-information-for-enterprise-user": { + parameters: { + path: { + /** The slug version of the enterprise name. You can also substitute this value with the enterprise id. */ + enterprise: components["parameters"]["enterprise"]; + /** The unique identifier of the SCIM user. */ + scim_user_id: components["parameters"]["scim-user-id"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["scim-enterprise-user"]; + }; + }; + }; + }; + /** + * **Note:** The SCIM API endpoints for enterprise accounts are currently in beta and are subject to change. + * + * Replaces an existing provisioned user's information. You must provide all the information required for the user as if you were provisioning them for the first time. Any existing user information that you don't provide will be removed. If you want to only update a specific attribute, use the [Update an attribute for a SCIM user](#update-an-attribute-for-an-enterprise-scim-user) endpoint instead. + * + * You must at least provide the required values for the user: `userName`, `name`, and `emails`. + * + * **Warning:** Setting `active: false` removes the user from the enterprise, deletes the external identity, and deletes the associated `{scim_user_id}`. + */ + "enterprise-admin/set-information-for-provisioned-enterprise-user": { + parameters: { + path: { + /** The slug version of the enterprise name. You can also substitute this value with the enterprise id. */ + enterprise: components["parameters"]["enterprise"]; + /** The unique identifier of the SCIM user. */ + scim_user_id: components["parameters"]["scim-user-id"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["scim-enterprise-user"]; + }; + }; + }; + requestBody: { + content: { + "application/json": { + /** @description The SCIM schema URIs. */ + schemas: string[]; + /** @description The username for the user. */ + userName: string; + name: { + /** @description The first name of the user. */ + givenName: string; + /** @description The last name of the user. */ + familyName: string; + }; + /** @description List of user emails. */ + emails: { + /** @description The email address. */ + value: string; + /** @description The type of email address. */ + type: string; + /** @description Whether this email address is the primary address. */ + primary: boolean; + }[]; + /** @description List of SCIM group IDs the user is a member of. */ + groups?: { + value?: string; + }[]; + }; + }; + }; + }; + /** **Note:** The SCIM API endpoints for enterprise accounts are currently in beta and are subject to change. */ + "enterprise-admin/delete-user-from-enterprise": { + parameters: { + path: { + /** The slug version of the enterprise name. You can also substitute this value with the enterprise id. */ + enterprise: components["parameters"]["enterprise"]; + /** The unique identifier of the SCIM user. */ + scim_user_id: components["parameters"]["scim-user-id"]; + }; + }; + responses: { + /** Response */ + 204: never; + }; + }; + /** + * **Note:** The SCIM API endpoints for enterprise accounts are currently in beta and are subject to change. + * + * Allows you to change a provisioned user's individual attributes. To change a user's values, you must provide a specific `Operations` JSON format that contains at least one of the `add`, `remove`, or `replace` operations. For examples and more information on the SCIM operations format, see the [SCIM specification](https://tools.ietf.org/html/rfc7644#section-3.5.2). + * + * **Note:** Complicated SCIM `path` selectors that include filters are not supported. For example, a `path` selector defined as `"path": "emails[type eq \"work\"]"` will not work. + * + * **Warning:** If you set `active:false` using the `replace` operation (as shown in the JSON example below), it removes the user from the enterprise, deletes the external identity, and deletes the associated `:scim_user_id`. + * + * ``` + * { + * "Operations":[{ + * "op":"replace", + * "value":{ + * "active":false + * } + * }] + * } + * ``` + */ + "enterprise-admin/update-attribute-for-enterprise-user": { + parameters: { + path: { + /** The slug version of the enterprise name. You can also substitute this value with the enterprise id. */ + enterprise: components["parameters"]["enterprise"]; + /** The unique identifier of the SCIM user. */ + scim_user_id: components["parameters"]["scim-user-id"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["scim-enterprise-user"]; + }; + }; + }; + requestBody: { + content: { + "application/json": { + /** @description The SCIM schema URIs. */ + schemas: string[]; + /** @description Array of [SCIM operations](https://tools.ietf.org/html/rfc7644#section-3.5.2). */ + Operations: { [key: string]: unknown }[]; + }; + }; + }; + }; + /** + * Retrieves a paginated list of all provisioned organization members, including pending invitations. If you provide the `filter` parameter, the resources for all matching provisions members are returned. + * + * When a user with a SAML-provisioned external identity leaves (or is removed from) an organization, the account's metadata is immediately removed. However, the returned list of user accounts might not always match the organization or enterprise member list you see on GitHub. This can happen in certain cases where an external identity associated with an organization will not match an organization member: + * - When a user with a SCIM-provisioned external identity is removed from an organization, the account's metadata is preserved to allow the user to re-join the organization in the future. + * - When inviting a user to join an organization, you can expect to see their external identity in the results before they accept the invitation, or if the invitation is cancelled (or never accepted). + * - When a user is invited over SCIM, an external identity is created that matches with the invitee's email address. However, this identity is only linked to a user account when the user accepts the invitation by going through SAML SSO. + * + * The returned list of external identities can include an entry for a `null` user. These are unlinked SAML identities that are created when a user goes through the following Single Sign-On (SSO) process but does not sign in to their GitHub account after completing SSO: + * + * 1. The user is granted access by the IdP and is not a member of the GitHub organization. + * + * 1. The user attempts to access the GitHub organization and initiates the SAML SSO process, and is not currently signed in to their GitHub account. + * + * 1. After successfully authenticating with the SAML SSO IdP, the `null` external identity entry is created and the user is prompted to sign in to their GitHub account: + * - If the user signs in, their GitHub account is linked to this entry. + * - If the user does not sign in (or does not create a new account when prompted), they are not added to the GitHub organization, and the external identity `null` entry remains in place. + */ + "scim/list-provisioned-identities": { + parameters: { + path: { + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + }; + query: { + /** Used for pagination: the index of the first result to return. */ + startIndex?: number; + /** Used for pagination: the number of results to return. */ + count?: number; + /** + * Filters results using the equals query parameter operator (`eq`). You can filter results that are equal to `id`, `userName`, `emails`, and `external_id`. For example, to search for an identity with the `userName` Octocat, you would use this query: + * + * `?filter=userName%20eq%20\"Octocat\"`. + * + * To filter results for the identity with the email `octocat@github.com`, you would use this query: + * + * `?filter=emails%20eq%20\"octocat@github.com\"`. + */ + filter?: string; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/scim+json": components["schemas"]["scim-user-list"]; + }; + }; + 304: components["responses"]["not_modified"]; + 400: components["responses"]["scim_bad_request"]; + 403: components["responses"]["scim_forbidden"]; + 404: components["responses"]["scim_not_found"]; + 429: components["responses"]["scim_too_many_requests"]; + }; + }; + /** Provision organization membership for a user, and send an activation email to the email address. */ + "scim/provision-and-invite-user": { + parameters: { + path: { + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + }; + }; + responses: { + /** Response */ + 201: { + content: { + "application/scim+json": components["schemas"]["scim-user"]; + }; + }; + 304: components["responses"]["not_modified"]; + 400: components["responses"]["scim_bad_request"]; + 403: components["responses"]["scim_forbidden"]; + 404: components["responses"]["scim_not_found"]; + 409: components["responses"]["scim_conflict"]; + 500: components["responses"]["scim_internal_error"]; + }; + requestBody: { + content: { + "application/json": { + /** + * @description Configured by the admin. Could be an email, login, or username + * @example someone@example.com + */ + userName: string; + /** + * @description The name of the user, suitable for display to end-users + * @example Jon Doe + */ + displayName?: string; + /** + * @example { + * "givenName": "Jane", + * "familyName": "User" + * } + */ + name: { + givenName: string; + familyName: string; + formatted?: string; + }; + /** + * @description user emails + * @example [ + * { + * "value": "someone@example.com", + * "primary": true + * }, + * { + * "value": "another@example.com", + * "primary": false + * } + * ] + */ + emails: { + value: string; + primary?: boolean; + type?: string; + }[]; + schemas?: string[]; + externalId?: string; + groups?: string[]; + active?: boolean; + }; + }; + }; + }; + "scim/get-provisioning-information-for-user": { + parameters: { + path: { + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + /** The unique identifier of the SCIM user. */ + scim_user_id: components["parameters"]["scim-user-id"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/scim+json": components["schemas"]["scim-user"]; + }; + }; + 304: components["responses"]["not_modified"]; + 403: components["responses"]["scim_forbidden"]; + 404: components["responses"]["scim_not_found"]; + }; + }; + /** + * Replaces an existing provisioned user's information. You must provide all the information required for the user as if you were provisioning them for the first time. Any existing user information that you don't provide will be removed. If you want to only update a specific attribute, use the [Update an attribute for a SCIM user](https://docs.github.com/rest/reference/scim#update-an-attribute-for-a-scim-user) endpoint instead. + * + * You must at least provide the required values for the user: `userName`, `name`, and `emails`. + * + * **Warning:** Setting `active: false` removes the user from the organization, deletes the external identity, and deletes the associated `{scim_user_id}`. + */ + "scim/set-information-for-provisioned-user": { + parameters: { + path: { + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + /** The unique identifier of the SCIM user. */ + scim_user_id: components["parameters"]["scim-user-id"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/scim+json": components["schemas"]["scim-user"]; + }; + }; + 304: components["responses"]["not_modified"]; + 403: components["responses"]["scim_forbidden"]; + 404: components["responses"]["scim_not_found"]; + }; + requestBody: { + content: { + "application/json": { + schemas?: string[]; + /** + * @description The name of the user, suitable for display to end-users + * @example Jon Doe + */ + displayName?: string; + externalId?: string; + groups?: string[]; + active?: boolean; + /** + * @description Configured by the admin. Could be an email, login, or username + * @example someone@example.com + */ + userName: string; + /** + * @example { + * "givenName": "Jane", + * "familyName": "User" + * } + */ + name: { + givenName: string; + familyName: string; + formatted?: string; + }; + /** + * @description user emails + * @example [ + * { + * "value": "someone@example.com", + * "primary": true + * }, + * { + * "value": "another@example.com", + * "primary": false + * } + * ] + */ + emails: { + type?: string; + value: string; + primary?: boolean; + }[]; + }; + }; + }; + }; + "scim/delete-user-from-org": { + parameters: { + path: { + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + /** The unique identifier of the SCIM user. */ + scim_user_id: components["parameters"]["scim-user-id"]; + }; + }; + responses: { + /** Response */ + 204: never; + 304: components["responses"]["not_modified"]; + 403: components["responses"]["scim_forbidden"]; + 404: components["responses"]["scim_not_found"]; + }; + }; + /** + * Allows you to change a provisioned user's individual attributes. To change a user's values, you must provide a specific `Operations` JSON format that contains at least one of the `add`, `remove`, or `replace` operations. For examples and more information on the SCIM operations format, see the [SCIM specification](https://tools.ietf.org/html/rfc7644#section-3.5.2). + * + * **Note:** Complicated SCIM `path` selectors that include filters are not supported. For example, a `path` selector defined as `"path": "emails[type eq \"work\"]"` will not work. + * + * **Warning:** If you set `active:false` using the `replace` operation (as shown in the JSON example below), it removes the user from the organization, deletes the external identity, and deletes the associated `:scim_user_id`. + * + * ``` + * { + * "Operations":[{ + * "op":"replace", + * "value":{ + * "active":false + * } + * }] + * } + * ``` + */ + "scim/update-attribute-for-user": { + parameters: { + path: { + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + /** The unique identifier of the SCIM user. */ + scim_user_id: components["parameters"]["scim-user-id"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/scim+json": components["schemas"]["scim-user"]; + }; + }; + 304: components["responses"]["not_modified"]; + 400: components["responses"]["scim_bad_request"]; + 403: components["responses"]["scim_forbidden"]; + 404: components["responses"]["scim_not_found"]; + /** Response */ + 429: { + content: { + "application/json": components["schemas"]["basic-error"]; + }; + }; + }; + requestBody: { + content: { + "application/json": { + schemas?: string[]; + /** + * @description Set of operations to be performed + * @example [ + * { + * "op": "replace", + * "value": { + * "active": false + * } + * } + * ] + */ + Operations: { + /** @enum {string} */ + op: "add" | "remove" | "replace"; + path?: string; + value?: + | { + active?: boolean | null; + userName?: string | null; + externalId?: string | null; + givenName?: string | null; + familyName?: string | null; + } + | { + value?: string; + primary?: boolean; + }[] + | string; + }[]; + }; + }; + }; + }; + /** + * Searches for query terms inside of a file. This method returns up to 100 results [per page](https://docs.github.com/rest/overview/resources-in-the-rest-api#pagination). + * + * When searching for code, you can get text match metadata for the file **content** and file **path** fields when you pass the `text-match` media type. For more details about how to receive highlighted search results, see [Text match metadata](https://docs.github.com/rest/reference/search#text-match-metadata). + * + * For example, if you want to find the definition of the `addClass` function inside [jQuery](https://github.com/jquery/jquery) repository, your query would look something like this: + * + * `q=addClass+in:file+language:js+repo:jquery/jquery` + * + * This query searches for the keyword `addClass` within a file's contents. The query limits the search to files where the language is JavaScript in the `jquery/jquery` repository. + * + * #### Considerations for code search + * + * Due to the complexity of searching code, there are a few restrictions on how searches are performed: + * + * * Only the _default branch_ is considered. In most cases, this will be the `master` branch. + * * Only files smaller than 384 KB are searchable. + * * You must always include at least one search term when searching source code. For example, searching for [`language:go`](https://github.com/search?utf8=%E2%9C%93&q=language%3Ago&type=Code) is not valid, while [`amazing + * language:go`](https://github.com/search?utf8=%E2%9C%93&q=amazing+language%3Ago&type=Code) is. + */ + "search/code": { + parameters: { + query: { + /** The query contains one or more search keywords and qualifiers. Qualifiers allow you to limit your search to specific areas of GitHub. The REST API supports the same qualifiers as the web interface for GitHub. To learn more about the format of the query, see [Constructing a search query](https://docs.github.com/rest/reference/search#constructing-a-search-query). See "[Searching code](https://docs.github.com/search-github/searching-on-github/searching-code)" for a detailed list of qualifiers. */ + q: string; + /** Sorts the results of your query. Can only be `indexed`, which indicates how recently a file has been indexed by the GitHub search infrastructure. Default: [best match](https://docs.github.com/rest/reference/search#ranking-search-results) */ + sort?: "indexed"; + /** Determines whether the first search result returned is the highest number of matches (`desc`) or lowest number of matches (`asc`). This parameter is ignored unless you provide `sort`. */ + order?: components["parameters"]["order"]; + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": { + total_count: number; + incomplete_results: boolean; + items: components["schemas"]["code-search-result-item"][]; + }; + }; + }; + 304: components["responses"]["not_modified"]; + 403: components["responses"]["forbidden"]; + 422: components["responses"]["validation_failed"]; + 503: components["responses"]["service_unavailable"]; + }; + }; + /** + * Find commits via various criteria on the default branch (usually `master`). This method returns up to 100 results [per page](https://docs.github.com/rest/overview/resources-in-the-rest-api#pagination). + * + * When searching for commits, you can get text match metadata for the **message** field when you provide the `text-match` media type. For more details about how to receive highlighted search results, see [Text match + * metadata](https://docs.github.com/rest/reference/search#text-match-metadata). + * + * For example, if you want to find commits related to CSS in the [octocat/Spoon-Knife](https://github.com/octocat/Spoon-Knife) repository. Your query would look something like this: + * + * `q=repo:octocat/Spoon-Knife+css` + */ + "search/commits": { + parameters: { + query: { + /** The query contains one or more search keywords and qualifiers. Qualifiers allow you to limit your search to specific areas of GitHub. The REST API supports the same qualifiers as the web interface for GitHub. To learn more about the format of the query, see [Constructing a search query](https://docs.github.com/rest/reference/search#constructing-a-search-query). See "[Searching commits](https://docs.github.com/search-github/searching-on-github/searching-commits)" for a detailed list of qualifiers. */ + q: string; + /** Sorts the results of your query by `author-date` or `committer-date`. Default: [best match](https://docs.github.com/rest/reference/search#ranking-search-results) */ + sort?: "author-date" | "committer-date"; + /** Determines whether the first search result returned is the highest number of matches (`desc`) or lowest number of matches (`asc`). This parameter is ignored unless you provide `sort`. */ + order?: components["parameters"]["order"]; + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": { + total_count: number; + incomplete_results: boolean; + items: components["schemas"]["commit-search-result-item"][]; + }; + }; + }; + 304: components["responses"]["not_modified"]; + }; + }; + /** + * Find issues by state and keyword. This method returns up to 100 results [per page](https://docs.github.com/rest/overview/resources-in-the-rest-api#pagination). + * + * When searching for issues, you can get text match metadata for the issue **title**, issue **body**, and issue **comment body** fields when you pass the `text-match` media type. For more details about how to receive highlighted + * search results, see [Text match metadata](https://docs.github.com/rest/reference/search#text-match-metadata). + * + * For example, if you want to find the oldest unresolved Python bugs on Windows. Your query might look something like this. + * + * `q=windows+label:bug+language:python+state:open&sort=created&order=asc` + * + * This query searches for the keyword `windows`, within any open issue that is labeled as `bug`. The search runs across repositories whose primary language is Python. The results are sorted by creation date in ascending order, which means the oldest issues appear first in the search results. + * + * **Note:** For [user-to-server](https://docs.github.com/developers/apps/identifying-and-authorizing-users-for-github-apps#user-to-server-requests) GitHub App requests, you can't retrieve a combination of issues and pull requests in a single query. Requests that don't include the `is:issue` or `is:pull-request` qualifier will receive an HTTP `422 Unprocessable Entity` response. To get results for both issues and pull requests, you must send separate queries for issues and pull requests. For more information about the `is` qualifier, see "[Searching only issues or pull requests](https://docs.github.com/github/searching-for-information-on-github/searching-issues-and-pull-requests#search-only-issues-or-pull-requests)." + */ + "search/issues-and-pull-requests": { + parameters: { + query: { + /** The query contains one or more search keywords and qualifiers. Qualifiers allow you to limit your search to specific areas of GitHub. The REST API supports the same qualifiers as the web interface for GitHub. To learn more about the format of the query, see [Constructing a search query](https://docs.github.com/rest/reference/search#constructing-a-search-query). See "[Searching issues and pull requests](https://docs.github.com/search-github/searching-on-github/searching-issues-and-pull-requests)" for a detailed list of qualifiers. */ + q: string; + /** Sorts the results of your query by the number of `comments`, `reactions`, `reactions-+1`, `reactions--1`, `reactions-smile`, `reactions-thinking_face`, `reactions-heart`, `reactions-tada`, or `interactions`. You can also sort results by how recently the items were `created` or `updated`, Default: [best match](https://docs.github.com/rest/reference/search#ranking-search-results) */ + sort?: + | "comments" + | "reactions" + | "reactions-+1" + | "reactions--1" + | "reactions-smile" + | "reactions-thinking_face" + | "reactions-heart" + | "reactions-tada" + | "interactions" + | "created" + | "updated"; + /** Determines whether the first search result returned is the highest number of matches (`desc`) or lowest number of matches (`asc`). This parameter is ignored unless you provide `sort`. */ + order?: components["parameters"]["order"]; + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": { + total_count: number; + incomplete_results: boolean; + items: components["schemas"]["issue-search-result-item"][]; + }; + }; + }; + 304: components["responses"]["not_modified"]; + 403: components["responses"]["forbidden"]; + 422: components["responses"]["validation_failed"]; + 503: components["responses"]["service_unavailable"]; + }; + }; + /** + * Find labels in a repository with names or descriptions that match search keywords. Returns up to 100 results [per page](https://docs.github.com/rest/overview/resources-in-the-rest-api#pagination). + * + * When searching for labels, you can get text match metadata for the label **name** and **description** fields when you pass the `text-match` media type. For more details about how to receive highlighted search results, see [Text match metadata](https://docs.github.com/rest/reference/search#text-match-metadata). + * + * For example, if you want to find labels in the `linguist` repository that match `bug`, `defect`, or `enhancement`. Your query might look like this: + * + * `q=bug+defect+enhancement&repository_id=64778136` + * + * The labels that best match the query appear first in the search results. + */ + "search/labels": { + parameters: { + query: { + /** The id of the repository. */ + repository_id: number; + /** The search keywords. This endpoint does not accept qualifiers in the query. To learn more about the format of the query, see [Constructing a search query](https://docs.github.com/rest/reference/search#constructing-a-search-query). */ + q: string; + /** Sorts the results of your query by when the label was `created` or `updated`. Default: [best match](https://docs.github.com/rest/reference/search#ranking-search-results) */ + sort?: "created" | "updated"; + /** Determines whether the first search result returned is the highest number of matches (`desc`) or lowest number of matches (`asc`). This parameter is ignored unless you provide `sort`. */ + order?: components["parameters"]["order"]; + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": { + total_count: number; + incomplete_results: boolean; + items: components["schemas"]["label-search-result-item"][]; + }; + }; + }; + 304: components["responses"]["not_modified"]; + 403: components["responses"]["forbidden"]; + 404: components["responses"]["not_found"]; + 422: components["responses"]["validation_failed"]; + }; + }; + /** + * Find repositories via various criteria. This method returns up to 100 results [per page](https://docs.github.com/rest/overview/resources-in-the-rest-api#pagination). + * + * When searching for repositories, you can get text match metadata for the **name** and **description** fields when you pass the `text-match` media type. For more details about how to receive highlighted search results, see [Text match metadata](https://docs.github.com/rest/reference/search#text-match-metadata). + * + * For example, if you want to search for popular Tetris repositories written in assembly code, your query might look like this: + * + * `q=tetris+language:assembly&sort=stars&order=desc` + * + * This query searches for repositories with the word `tetris` in the name, the description, or the README. The results are limited to repositories where the primary language is assembly. The results are sorted by stars in descending order, so that the most popular repositories appear first in the search results. + */ + "search/repos": { + parameters: { + query: { + /** The query contains one or more search keywords and qualifiers. Qualifiers allow you to limit your search to specific areas of GitHub. The REST API supports the same qualifiers as the web interface for GitHub. To learn more about the format of the query, see [Constructing a search query](https://docs.github.com/rest/reference/search#constructing-a-search-query). See "[Searching for repositories](https://docs.github.com/articles/searching-for-repositories/)" for a detailed list of qualifiers. */ + q: string; + /** Sorts the results of your query by number of `stars`, `forks`, or `help-wanted-issues` or how recently the items were `updated`. Default: [best match](https://docs.github.com/rest/reference/search#ranking-search-results) */ + sort?: "stars" | "forks" | "help-wanted-issues" | "updated"; + /** Determines whether the first search result returned is the highest number of matches (`desc`) or lowest number of matches (`asc`). This parameter is ignored unless you provide `sort`. */ + order?: components["parameters"]["order"]; + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": { + total_count: number; + incomplete_results: boolean; + items: components["schemas"]["repo-search-result-item"][]; + }; + }; + }; + 304: components["responses"]["not_modified"]; + 422: components["responses"]["validation_failed"]; + 503: components["responses"]["service_unavailable"]; + }; + }; + /** + * Find topics via various criteria. Results are sorted by best match. This method returns up to 100 results [per page](https://docs.github.com/rest/overview/resources-in-the-rest-api#pagination). See "[Searching topics](https://docs.github.com/articles/searching-topics/)" for a detailed list of qualifiers. + * + * When searching for topics, you can get text match metadata for the topic's **short\_description**, **description**, **name**, or **display\_name** field when you pass the `text-match` media type. For more details about how to receive highlighted search results, see [Text match metadata](https://docs.github.com/rest/reference/search#text-match-metadata). + * + * For example, if you want to search for topics related to Ruby that are featured on https://github.com/topics. Your query might look like this: + * + * `q=ruby+is:featured` + * + * This query searches for topics with the keyword `ruby` and limits the results to find only topics that are featured. The topics that are the best match for the query appear first in the search results. + */ + "search/topics": { + parameters: { + query: { + /** The query contains one or more search keywords and qualifiers. Qualifiers allow you to limit your search to specific areas of GitHub. The REST API supports the same qualifiers as the web interface for GitHub. To learn more about the format of the query, see [Constructing a search query](https://docs.github.com/rest/reference/search#constructing-a-search-query). */ + q: string; + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": { + total_count: number; + incomplete_results: boolean; + items: components["schemas"]["topic-search-result-item"][]; + }; + }; + }; + 304: components["responses"]["not_modified"]; + }; + }; + /** + * Find users via various criteria. This method returns up to 100 results [per page](https://docs.github.com/rest/overview/resources-in-the-rest-api#pagination). + * + * When searching for users, you can get text match metadata for the issue **login**, **email**, and **name** fields when you pass the `text-match` media type. For more details about highlighting search results, see [Text match metadata](https://docs.github.com/rest/reference/search#text-match-metadata). For more details about how to receive highlighted search results, see [Text match metadata](https://docs.github.com/rest/reference/search#text-match-metadata). + * + * For example, if you're looking for a list of popular users, you might try this query: + * + * `q=tom+repos:%3E42+followers:%3E1000` + * + * This query searches for users with the name `tom`. The results are restricted to users with more than 42 repositories and over 1,000 followers. + */ + "search/users": { + parameters: { + query: { + /** The query contains one or more search keywords and qualifiers. Qualifiers allow you to limit your search to specific areas of GitHub. The REST API supports the same qualifiers as the web interface for GitHub. To learn more about the format of the query, see [Constructing a search query](https://docs.github.com/rest/reference/search#constructing-a-search-query). See "[Searching users](https://docs.github.com/search-github/searching-on-github/searching-users)" for a detailed list of qualifiers. */ + q: string; + /** Sorts the results of your query by number of `followers` or `repositories`, or when the person `joined` GitHub. Default: [best match](https://docs.github.com/rest/reference/search#ranking-search-results) */ + sort?: "followers" | "repositories" | "joined"; + /** Determines whether the first search result returned is the highest number of matches (`desc`) or lowest number of matches (`asc`). This parameter is ignored unless you provide `sort`. */ + order?: components["parameters"]["order"]; + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": { + total_count: number; + incomplete_results: boolean; + items: components["schemas"]["user-search-result-item"][]; + }; + }; + }; + 304: components["responses"]["not_modified"]; + 422: components["responses"]["validation_failed"]; + 503: components["responses"]["service_unavailable"]; + }; + }; + /** **Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the [Get a team by name](https://docs.github.com/rest/reference/teams#get-a-team-by-name) endpoint. */ + "teams/get-legacy": { + parameters: { + path: { + /** The unique identifier of the team. */ + team_id: components["parameters"]["team-id"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["team-full"]; + }; + }; + 404: components["responses"]["not_found"]; + }; + }; + /** + * **Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [Delete a team](https://docs.github.com/rest/reference/teams#delete-a-team) endpoint. + * + * To delete a team, the authenticated user must be an organization owner or team maintainer. + * + * If you are an organization owner, deleting a parent team will delete all of its child teams as well. + */ + "teams/delete-legacy": { + parameters: { + path: { + /** The unique identifier of the team. */ + team_id: components["parameters"]["team-id"]; + }; + }; + responses: { + /** Response */ + 204: never; + 404: components["responses"]["not_found"]; + 422: components["responses"]["validation_failed"]; + }; + }; + /** + * **Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [Update a team](https://docs.github.com/rest/reference/teams#update-a-team) endpoint. + * + * To edit a team, the authenticated user must either be an organization owner or a team maintainer. + * + * **Note:** With nested teams, the `privacy` for parent teams cannot be `secret`. + */ + "teams/update-legacy": { + parameters: { + path: { + /** The unique identifier of the team. */ + team_id: components["parameters"]["team-id"]; + }; + }; + responses: { + /** Response when the updated information already exists */ + 200: { + content: { + "application/json": components["schemas"]["team-full"]; + }; + }; + /** Response */ + 201: { + content: { + "application/json": components["schemas"]["team-full"]; + }; + }; + 403: components["responses"]["forbidden"]; + 404: components["responses"]["not_found"]; + 422: components["responses"]["validation_failed"]; + }; + requestBody: { + content: { + "application/json": { + /** @description The name of the team. */ + name: string; + /** @description The description of the team. */ + description?: string; + /** + * @description The level of privacy this team should have. Editing teams without specifying this parameter leaves `privacy` intact. The options are: + * **For a non-nested team:** + * \* `secret` - only visible to organization owners and members of this team. + * \* `closed` - visible to all members of this organization. + * **For a parent or child team:** + * \* `closed` - visible to all members of this organization. + * @enum {string} + */ + privacy?: "secret" | "closed"; + /** + * @description **Deprecated**. The permission that new repositories will be added to the team with when none is specified. + * @default pull + * @enum {string} + */ + permission?: "pull" | "push" | "admin"; + /** @description The ID of a team to set as the parent team. */ + parent_team_id?: number | null; + }; + }; + }; + }; + /** + * **Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [`List discussions`](https://docs.github.com/rest/reference/teams#list-discussions) endpoint. + * + * List all discussions on a team's page. OAuth access tokens require the `read:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). + */ + "teams/list-discussions-legacy": { + parameters: { + path: { + /** The unique identifier of the team. */ + team_id: components["parameters"]["team-id"]; + }; + query: { + /** The direction to sort the results by. */ + direction?: components["parameters"]["direction"]; + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + }; + }; + responses: { + /** Response */ + 200: { + headers: {}; + content: { + "application/json": components["schemas"]["team-discussion"][]; + }; + }; + }; + }; + /** + * **Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [`Create a discussion`](https://docs.github.com/rest/reference/teams#create-a-discussion) endpoint. + * + * Creates a new discussion post on a team's page. OAuth access tokens require the `write:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). + * + * This endpoint triggers [notifications](https://docs.github.com/en/github/managing-subscriptions-and-notifications-on-github/about-notifications). Creating content too quickly using this endpoint may result in secondary rate limiting. See "[Secondary rate limits](https://docs.github.com/rest/overview/resources-in-the-rest-api#secondary-rate-limits)" and "[Dealing with secondary rate limits](https://docs.github.com/rest/guides/best-practices-for-integrators#dealing-with-secondary-rate-limits)" for details. + */ + "teams/create-discussion-legacy": { + parameters: { + path: { + /** The unique identifier of the team. */ + team_id: components["parameters"]["team-id"]; + }; + }; + responses: { + /** Response */ + 201: { + content: { + "application/json": components["schemas"]["team-discussion"]; + }; + }; + }; + requestBody: { + content: { + "application/json": { + /** @description The discussion post's title. */ + title: string; + /** @description The discussion post's body text. */ + body: string; + /** + * @description Private posts are only visible to team members, organization owners, and team maintainers. Public posts are visible to all members of the organization. Set to `true` to create a private post. + * @default false + */ + private?: boolean; + }; + }; + }; + }; + /** + * **Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [Get a discussion](https://docs.github.com/rest/reference/teams#get-a-discussion) endpoint. + * + * Get a specific discussion on a team's page. OAuth access tokens require the `read:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). + */ + "teams/get-discussion-legacy": { + parameters: { + path: { + /** The unique identifier of the team. */ + team_id: components["parameters"]["team-id"]; + /** The number that identifies the discussion. */ + discussion_number: components["parameters"]["discussion-number"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["team-discussion"]; + }; + }; + }; + }; + /** + * **Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [`Delete a discussion`](https://docs.github.com/rest/reference/teams#delete-a-discussion) endpoint. + * + * Delete a discussion from a team's page. OAuth access tokens require the `write:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). + */ + "teams/delete-discussion-legacy": { + parameters: { + path: { + /** The unique identifier of the team. */ + team_id: components["parameters"]["team-id"]; + /** The number that identifies the discussion. */ + discussion_number: components["parameters"]["discussion-number"]; + }; + }; + responses: { + /** Response */ + 204: never; + }; + }; + /** + * **Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [Update a discussion](https://docs.github.com/rest/reference/teams#update-a-discussion) endpoint. + * + * Edits the title and body text of a discussion post. Only the parameters you provide are updated. OAuth access tokens require the `write:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). + */ + "teams/update-discussion-legacy": { + parameters: { + path: { + /** The unique identifier of the team. */ + team_id: components["parameters"]["team-id"]; + /** The number that identifies the discussion. */ + discussion_number: components["parameters"]["discussion-number"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["team-discussion"]; + }; + }; + }; + requestBody: { + content: { + "application/json": { + /** @description The discussion post's title. */ + title?: string; + /** @description The discussion post's body text. */ + body?: string; + }; + }; + }; + }; + /** + * **Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [List discussion comments](https://docs.github.com/rest/reference/teams#list-discussion-comments) endpoint. + * + * List all comments on a team discussion. OAuth access tokens require the `read:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). + */ + "teams/list-discussion-comments-legacy": { + parameters: { + path: { + /** The unique identifier of the team. */ + team_id: components["parameters"]["team-id"]; + /** The number that identifies the discussion. */ + discussion_number: components["parameters"]["discussion-number"]; + }; + query: { + /** The direction to sort the results by. */ + direction?: components["parameters"]["direction"]; + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + }; + }; + responses: { + /** Response */ + 200: { + headers: {}; + content: { + "application/json": components["schemas"]["team-discussion-comment"][]; + }; + }; + }; + }; + /** + * **Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [Create a discussion comment](https://docs.github.com/rest/reference/teams#create-a-discussion-comment) endpoint. + * + * Creates a new comment on a team discussion. OAuth access tokens require the `write:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). + * + * This endpoint triggers [notifications](https://docs.github.com/en/github/managing-subscriptions-and-notifications-on-github/about-notifications). Creating content too quickly using this endpoint may result in secondary rate limiting. See "[Secondary rate limits](https://docs.github.com/rest/overview/resources-in-the-rest-api#secondary-rate-limits)" and "[Dealing with secondary rate limits](https://docs.github.com/rest/guides/best-practices-for-integrators#dealing-with-secondary-rate-limits)" for details. + */ + "teams/create-discussion-comment-legacy": { + parameters: { + path: { + /** The unique identifier of the team. */ + team_id: components["parameters"]["team-id"]; + /** The number that identifies the discussion. */ + discussion_number: components["parameters"]["discussion-number"]; + }; + }; + responses: { + /** Response */ + 201: { + content: { + "application/json": components["schemas"]["team-discussion-comment"]; + }; + }; + }; + requestBody: { + content: { + "application/json": { + /** @description The discussion comment's body text. */ + body: string; + }; + }; + }; + }; + /** + * **Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [Get a discussion comment](https://docs.github.com/rest/reference/teams#get-a-discussion-comment) endpoint. + * + * Get a specific comment on a team discussion. OAuth access tokens require the `read:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). + */ + "teams/get-discussion-comment-legacy": { + parameters: { + path: { + /** The unique identifier of the team. */ + team_id: components["parameters"]["team-id"]; + /** The number that identifies the discussion. */ + discussion_number: components["parameters"]["discussion-number"]; + /** The number that identifies the comment. */ + comment_number: components["parameters"]["comment-number"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["team-discussion-comment"]; + }; + }; + }; + }; + /** + * **Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [Delete a discussion comment](https://docs.github.com/rest/reference/teams#delete-a-discussion-comment) endpoint. + * + * Deletes a comment on a team discussion. OAuth access tokens require the `write:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). + */ + "teams/delete-discussion-comment-legacy": { + parameters: { + path: { + /** The unique identifier of the team. */ + team_id: components["parameters"]["team-id"]; + /** The number that identifies the discussion. */ + discussion_number: components["parameters"]["discussion-number"]; + /** The number that identifies the comment. */ + comment_number: components["parameters"]["comment-number"]; + }; + }; + responses: { + /** Response */ + 204: never; + }; + }; + /** + * **Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [Update a discussion comment](https://docs.github.com/rest/reference/teams#update-a-discussion-comment) endpoint. + * + * Edits the body text of a discussion comment. OAuth access tokens require the `write:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). + */ + "teams/update-discussion-comment-legacy": { + parameters: { + path: { + /** The unique identifier of the team. */ + team_id: components["parameters"]["team-id"]; + /** The number that identifies the discussion. */ + discussion_number: components["parameters"]["discussion-number"]; + /** The number that identifies the comment. */ + comment_number: components["parameters"]["comment-number"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["team-discussion-comment"]; + }; + }; + }; + requestBody: { + content: { + "application/json": { + /** @description The discussion comment's body text. */ + body: string; + }; + }; + }; + }; + /** + * **Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [`List reactions for a team discussion comment`](https://docs.github.com/rest/reference/reactions#list-reactions-for-a-team-discussion-comment) endpoint. + * + * List the reactions to a [team discussion comment](https://docs.github.com/rest/reference/teams#discussion-comments). OAuth access tokens require the `read:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). + */ + "reactions/list-for-team-discussion-comment-legacy": { + parameters: { + path: { + /** The unique identifier of the team. */ + team_id: components["parameters"]["team-id"]; + /** The number that identifies the discussion. */ + discussion_number: components["parameters"]["discussion-number"]; + /** The number that identifies the comment. */ + comment_number: components["parameters"]["comment-number"]; + }; + query: { + /** Returns a single [reaction type](https://docs.github.com/rest/reference/reactions#reaction-types). Omit this parameter to list all reactions to a team discussion comment. */ + content?: + | "+1" + | "-1" + | "laugh" + | "confused" + | "heart" + | "hooray" + | "rocket" + | "eyes"; + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + }; + }; + responses: { + /** Response */ + 200: { + headers: {}; + content: { + "application/json": components["schemas"]["reaction"][]; + }; + }; + }; + }; + /** + * **Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new "[Create reaction for a team discussion comment](https://docs.github.com/rest/reference/reactions#create-reaction-for-a-team-discussion-comment)" endpoint. + * + * Create a reaction to a [team discussion comment](https://docs.github.com/rest/reference/teams#discussion-comments). OAuth access tokens require the `write:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). A response with an HTTP `200` status means that you already added the reaction type to this team discussion comment. + */ + "reactions/create-for-team-discussion-comment-legacy": { + parameters: { + path: { + /** The unique identifier of the team. */ + team_id: components["parameters"]["team-id"]; + /** The number that identifies the discussion. */ + discussion_number: components["parameters"]["discussion-number"]; + /** The number that identifies the comment. */ + comment_number: components["parameters"]["comment-number"]; + }; + }; + responses: { + /** Response */ + 201: { + content: { + "application/json": components["schemas"]["reaction"]; + }; + }; + }; + requestBody: { + content: { + "application/json": { + /** + * @description The [reaction type](https://docs.github.com/rest/reference/reactions#reaction-types) to add to the team discussion comment. + * @enum {string} + */ + content: + | "+1" + | "-1" + | "laugh" + | "confused" + | "heart" + | "hooray" + | "rocket" + | "eyes"; + }; + }; + }; + }; + /** + * **Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [`List reactions for a team discussion`](https://docs.github.com/rest/reference/reactions#list-reactions-for-a-team-discussion) endpoint. + * + * List the reactions to a [team discussion](https://docs.github.com/rest/reference/teams#discussions). OAuth access tokens require the `read:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). + */ + "reactions/list-for-team-discussion-legacy": { + parameters: { + path: { + /** The unique identifier of the team. */ + team_id: components["parameters"]["team-id"]; + /** The number that identifies the discussion. */ + discussion_number: components["parameters"]["discussion-number"]; + }; + query: { + /** Returns a single [reaction type](https://docs.github.com/rest/reference/reactions#reaction-types). Omit this parameter to list all reactions to a team discussion. */ + content?: + | "+1" + | "-1" + | "laugh" + | "confused" + | "heart" + | "hooray" + | "rocket" + | "eyes"; + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + }; + }; + responses: { + /** Response */ + 200: { + headers: {}; + content: { + "application/json": components["schemas"]["reaction"][]; + }; + }; + }; + }; + /** + * **Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [`Create reaction for a team discussion`](https://docs.github.com/rest/reference/reactions#create-reaction-for-a-team-discussion) endpoint. + * + * Create a reaction to a [team discussion](https://docs.github.com/rest/reference/teams#discussions). OAuth access tokens require the `write:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). A response with an HTTP `200` status means that you already added the reaction type to this team discussion. + */ + "reactions/create-for-team-discussion-legacy": { + parameters: { + path: { + /** The unique identifier of the team. */ + team_id: components["parameters"]["team-id"]; + /** The number that identifies the discussion. */ + discussion_number: components["parameters"]["discussion-number"]; + }; + }; + responses: { + /** Response */ + 201: { + content: { + "application/json": components["schemas"]["reaction"]; + }; + }; + }; + requestBody: { + content: { + "application/json": { + /** + * @description The [reaction type](https://docs.github.com/rest/reference/reactions#reaction-types) to add to the team discussion. + * @enum {string} + */ + content: + | "+1" + | "-1" + | "laugh" + | "confused" + | "heart" + | "hooray" + | "rocket" + | "eyes"; + }; + }; + }; + }; + /** + * **Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [`List pending team invitations`](https://docs.github.com/rest/reference/teams#list-pending-team-invitations) endpoint. + * + * The return hash contains a `role` field which refers to the Organization Invitation role and will be one of the following values: `direct_member`, `admin`, `billing_manager`, `hiring_manager`, or `reinstate`. If the invitee is not a GitHub member, the `login` field in the return hash will be `null`. + */ + "teams/list-pending-invitations-legacy": { + parameters: { + path: { + /** The unique identifier of the team. */ + team_id: components["parameters"]["team-id"]; + }; + query: { + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + }; + }; + responses: { + /** Response */ + 200: { + headers: {}; + content: { + "application/json": components["schemas"]["organization-invitation"][]; + }; + }; + }; + }; + /** + * **Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [`List team members`](https://docs.github.com/rest/reference/teams#list-team-members) endpoint. + * + * Team members will include the members of child teams. + */ + "teams/list-members-legacy": { + parameters: { + path: { + /** The unique identifier of the team. */ + team_id: components["parameters"]["team-id"]; + }; + query: { + /** Filters members returned by their role in the team. */ + role?: "member" | "maintainer" | "all"; + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + }; + }; + responses: { + /** Response */ + 200: { + headers: {}; + content: { + "application/json": components["schemas"]["simple-user"][]; + }; + }; + 404: components["responses"]["not_found"]; + }; + }; + /** + * The "Get team member" endpoint (described below) is deprecated. + * + * We recommend using the [Get team membership for a user](https://docs.github.com/rest/reference/teams#get-team-membership-for-a-user) endpoint instead. It allows you to get both active and pending memberships. + * + * To list members in a team, the team must be visible to the authenticated user. + */ + "teams/get-member-legacy": { + parameters: { + path: { + /** The unique identifier of the team. */ + team_id: components["parameters"]["team-id"]; + /** The handle for the GitHub user account. */ + username: components["parameters"]["username"]; + }; + }; + responses: { + /** if user is a member */ + 204: never; + /** if user is not a member */ + 404: unknown; + }; + }; + /** + * The "Add team member" endpoint (described below) is deprecated. + * + * We recommend using the [Add or update team membership for a user](https://docs.github.com/rest/reference/teams#add-or-update-team-membership-for-a-user) endpoint instead. It allows you to invite new organization members to your teams. + * + * Team synchronization is available for organizations using GitHub Enterprise Cloud. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. + * + * To add someone to a team, the authenticated user must be an organization owner or a team maintainer in the team they're changing. The person being added to the team must be a member of the team's organization. + * + * **Note:** When you have team synchronization set up for a team with your organization's identity provider (IdP), you will see an error if you attempt to use the API for making changes to the team's membership. If you have access to manage group membership in your IdP, you can manage GitHub team membership through your identity provider, which automatically adds and removes team members in an organization. For more information, see "[Synchronizing teams between your identity provider and GitHub](https://docs.github.com/articles/synchronizing-teams-between-your-identity-provider-and-github/)." + * + * Note that you'll need to set `Content-Length` to zero when calling out to this endpoint. For more information, see "[HTTP verbs](https://docs.github.com/rest/overview/resources-in-the-rest-api#http-verbs)." + */ + "teams/add-member-legacy": { + parameters: { + path: { + /** The unique identifier of the team. */ + team_id: components["parameters"]["team-id"]; + /** The handle for the GitHub user account. */ + username: components["parameters"]["username"]; + }; + }; + responses: { + /** Response */ + 204: never; + 403: components["responses"]["forbidden"]; + /** Not Found if team synchronization is set up */ + 404: unknown; + /** Unprocessable Entity if you attempt to add an organization to a team or you attempt to add a user to a team when they are not a member of at least one other team in the same organization */ + 422: unknown; + }; + }; + /** + * The "Remove team member" endpoint (described below) is deprecated. + * + * We recommend using the [Remove team membership for a user](https://docs.github.com/rest/reference/teams#remove-team-membership-for-a-user) endpoint instead. It allows you to remove both active and pending memberships. + * + * Team synchronization is available for organizations using GitHub Enterprise Cloud. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. + * + * To remove a team member, the authenticated user must have 'admin' permissions to the team or be an owner of the org that the team is associated with. Removing a team member does not delete the user, it just removes them from the team. + * + * **Note:** When you have team synchronization set up for a team with your organization's identity provider (IdP), you will see an error if you attempt to use the API for making changes to the team's membership. If you have access to manage group membership in your IdP, you can manage GitHub team membership through your identity provider, which automatically adds and removes team members in an organization. For more information, see "[Synchronizing teams between your identity provider and GitHub](https://docs.github.com/articles/synchronizing-teams-between-your-identity-provider-and-github/)." + */ + "teams/remove-member-legacy": { + parameters: { + path: { + /** The unique identifier of the team. */ + team_id: components["parameters"]["team-id"]; + /** The handle for the GitHub user account. */ + username: components["parameters"]["username"]; + }; + }; + responses: { + /** Response */ + 204: never; + /** Not Found if team synchronization is setup */ + 404: unknown; + }; + }; + /** + * **Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [Get team membership for a user](https://docs.github.com/rest/reference/teams#get-team-membership-for-a-user) endpoint. + * + * Team members will include the members of child teams. + * + * To get a user's membership with a team, the team must be visible to the authenticated user. + * + * **Note:** + * The response contains the `state` of the membership and the member's `role`. + * + * The `role` for organization owners is set to `maintainer`. For more information about `maintainer` roles, see [Create a team](https://docs.github.com/rest/reference/teams#create-a-team). + */ + "teams/get-membership-for-user-legacy": { + parameters: { + path: { + /** The unique identifier of the team. */ + team_id: components["parameters"]["team-id"]; + /** The handle for the GitHub user account. */ + username: components["parameters"]["username"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["team-membership"]; + }; + }; + 404: components["responses"]["not_found"]; + }; + }; + /** + * **Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [Add or update team membership for a user](https://docs.github.com/rest/reference/teams#add-or-update-team-membership-for-a-user) endpoint. + * + * Team synchronization is available for organizations using GitHub Enterprise Cloud. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. + * + * If the user is already a member of the team's organization, this endpoint will add the user to the team. To add a membership between an organization member and a team, the authenticated user must be an organization owner or a team maintainer. + * + * **Note:** When you have team synchronization set up for a team with your organization's identity provider (IdP), you will see an error if you attempt to use the API for making changes to the team's membership. If you have access to manage group membership in your IdP, you can manage GitHub team membership through your identity provider, which automatically adds and removes team members in an organization. For more information, see "[Synchronizing teams between your identity provider and GitHub](https://docs.github.com/articles/synchronizing-teams-between-your-identity-provider-and-github/)." + * + * If the user is unaffiliated with the team's organization, this endpoint will send an invitation to the user via email. This newly-created membership will be in the "pending" state until the user accepts the invitation, at which point the membership will transition to the "active" state and the user will be added as a member of the team. To add a membership between an unaffiliated user and a team, the authenticated user must be an organization owner. + * + * If the user is already a member of the team, this endpoint will update the role of the team member's role. To update the membership of a team member, the authenticated user must be an organization owner or a team maintainer. + */ + "teams/add-or-update-membership-for-user-legacy": { + parameters: { + path: { + /** The unique identifier of the team. */ + team_id: components["parameters"]["team-id"]; + /** The handle for the GitHub user account. */ + username: components["parameters"]["username"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["team-membership"]; + }; + }; + /** Forbidden if team synchronization is set up */ + 403: unknown; + 404: components["responses"]["not_found"]; + /** Unprocessable Entity if you attempt to add an organization to a team */ + 422: unknown; + }; + requestBody: { + content: { + "application/json": { + /** + * @description The role that this user should have in the team. + * @default member + * @enum {string} + */ + role?: "member" | "maintainer"; + }; + }; + }; + }; + /** + * **Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [Remove team membership for a user](https://docs.github.com/rest/reference/teams#remove-team-membership-for-a-user) endpoint. + * + * Team synchronization is available for organizations using GitHub Enterprise Cloud. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. + * + * To remove a membership between a user and a team, the authenticated user must have 'admin' permissions to the team or be an owner of the organization that the team is associated with. Removing team membership does not delete the user, it just removes their membership from the team. + * + * **Note:** When you have team synchronization set up for a team with your organization's identity provider (IdP), you will see an error if you attempt to use the API for making changes to the team's membership. If you have access to manage group membership in your IdP, you can manage GitHub team membership through your identity provider, which automatically adds and removes team members in an organization. For more information, see "[Synchronizing teams between your identity provider and GitHub](https://docs.github.com/articles/synchronizing-teams-between-your-identity-provider-and-github/)." + */ + "teams/remove-membership-for-user-legacy": { + parameters: { + path: { + /** The unique identifier of the team. */ + team_id: components["parameters"]["team-id"]; + /** The handle for the GitHub user account. */ + username: components["parameters"]["username"]; + }; + }; + responses: { + /** Response */ + 204: never; + /** if team synchronization is set up */ + 403: unknown; + }; + }; + /** + * **Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [`List team projects`](https://docs.github.com/rest/reference/teams#list-team-projects) endpoint. + * + * Lists the organization projects for a team. + */ + "teams/list-projects-legacy": { + parameters: { + path: { + /** The unique identifier of the team. */ + team_id: components["parameters"]["team-id"]; + }; + query: { + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + }; + }; + responses: { + /** Response */ + 200: { + headers: {}; + content: { + "application/json": components["schemas"]["team-project"][]; + }; + }; + 404: components["responses"]["not_found"]; + }; + }; + /** + * **Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [Check team permissions for a project](https://docs.github.com/rest/reference/teams#check-team-permissions-for-a-project) endpoint. + * + * Checks whether a team has `read`, `write`, or `admin` permissions for an organization project. The response includes projects inherited from a parent team. + */ + "teams/check-permissions-for-project-legacy": { + parameters: { + path: { + /** The unique identifier of the team. */ + team_id: components["parameters"]["team-id"]; + /** The unique identifier of the project. */ + project_id: components["parameters"]["project-id"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["team-project"]; + }; + }; + /** Not Found if project is not managed by this team */ + 404: unknown; + }; + }; + /** + * **Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [Add or update team project permissions](https://docs.github.com/rest/reference/teams#add-or-update-team-project-permissions) endpoint. + * + * Adds an organization project to a team. To add a project to a team or update the team's permission on a project, the authenticated user must have `admin` permissions for the project. The project and team must be part of the same organization. + */ + "teams/add-or-update-project-permissions-legacy": { + parameters: { + path: { + /** The unique identifier of the team. */ + team_id: components["parameters"]["team-id"]; + /** The unique identifier of the project. */ + project_id: components["parameters"]["project-id"]; + }; + }; + responses: { + /** Response */ + 204: never; + /** Forbidden if the project is not owned by the organization */ + 403: { + content: { + "application/json": { + message?: string; + documentation_url?: string; + }; + }; + }; + 404: components["responses"]["not_found"]; + 422: components["responses"]["validation_failed"]; + }; + requestBody: { + content: { + "application/json": { + /** + * @description The permission to grant to the team for this project. Default: the team's `permission` attribute will be used to determine what permission to grant the team on this project. Note that, if you choose not to pass any parameters, you'll need to set `Content-Length` to zero when calling this endpoint. For more information, see "[HTTP verbs](https://docs.github.com/rest/overview/resources-in-the-rest-api#http-verbs)." + * @enum {string} + */ + permission?: "read" | "write" | "admin"; + }; + }; + }; + }; + /** + * **Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [Remove a project from a team](https://docs.github.com/rest/reference/teams#remove-a-project-from-a-team) endpoint. + * + * Removes an organization project from a team. An organization owner or a team maintainer can remove any project from the team. To remove a project from a team as an organization member, the authenticated user must have `read` access to both the team and project, or `admin` access to the team or project. **Note:** This endpoint removes the project from the team, but does not delete it. + */ + "teams/remove-project-legacy": { + parameters: { + path: { + /** The unique identifier of the team. */ + team_id: components["parameters"]["team-id"]; + /** The unique identifier of the project. */ + project_id: components["parameters"]["project-id"]; + }; + }; + responses: { + /** Response */ + 204: never; + 404: components["responses"]["not_found"]; + 422: components["responses"]["validation_failed"]; + }; + }; + /** **Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [List team repositories](https://docs.github.com/rest/reference/teams#list-team-repositories) endpoint. */ + "teams/list-repos-legacy": { + parameters: { + path: { + /** The unique identifier of the team. */ + team_id: components["parameters"]["team-id"]; + }; + query: { + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + }; + }; + responses: { + /** Response */ + 200: { + headers: {}; + content: { + "application/json": components["schemas"]["minimal-repository"][]; + }; + }; + 404: components["responses"]["not_found"]; + }; + }; + /** + * **Note**: Repositories inherited through a parent team will also be checked. + * + * **Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [Check team permissions for a repository](https://docs.github.com/rest/reference/teams#check-team-permissions-for-a-repository) endpoint. + * + * You can also get information about the specified repository, including what permissions the team grants on it, by passing the following custom [media type](https://docs.github.com/rest/overview/media-types/) via the `Accept` header: + */ + "teams/check-permissions-for-repo-legacy": { + parameters: { + path: { + /** The unique identifier of the team. */ + team_id: components["parameters"]["team-id"]; + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + }; + }; + responses: { + /** Alternative response with extra repository information */ + 200: { + content: { + "application/json": components["schemas"]["team-repository"]; + }; + }; + /** Response if repository is managed by this team */ + 204: never; + /** Not Found if repository is not managed by this team */ + 404: unknown; + }; + }; + /** + * **Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new "[Add or update team repository permissions](https://docs.github.com/rest/reference/teams#add-or-update-team-repository-permissions)" endpoint. + * + * To add a repository to a team or update the team's permission on a repository, the authenticated user must have admin access to the repository, and must be able to see the team. The repository must be owned by the organization, or a direct fork of a repository owned by the organization. You will get a `422 Unprocessable Entity` status if you attempt to add a repository to a team that is not owned by the organization. + * + * Note that, if you choose not to pass any parameters, you'll need to set `Content-Length` to zero when calling out to this endpoint. For more information, see "[HTTP verbs](https://docs.github.com/rest/overview/resources-in-the-rest-api#http-verbs)." + */ + "teams/add-or-update-repo-permissions-legacy": { + parameters: { + path: { + /** The unique identifier of the team. */ + team_id: components["parameters"]["team-id"]; + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + }; + }; + responses: { + /** Response */ + 204: never; + 403: components["responses"]["forbidden"]; + 422: components["responses"]["validation_failed"]; + }; + requestBody: { + content: { + "application/json": { + /** + * @description The permission to grant the team on this repository. If no permission is specified, the team's `permission` attribute will be used to determine what permission to grant the team on this repository. + * @enum {string} + */ + permission?: "pull" | "push" | "admin"; + }; + }; + }; + }; + /** + * **Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [Remove a repository from a team](https://docs.github.com/rest/reference/teams#remove-a-repository-from-a-team) endpoint. + * + * If the authenticated user is an organization owner or a team maintainer, they can remove any repositories from the team. To remove a repository from a team as an organization member, the authenticated user must have admin access to the repository and must be able to see the team. NOTE: This does not delete the repository, it just removes it from the team. + */ + "teams/remove-repo-legacy": { + parameters: { + path: { + /** The unique identifier of the team. */ + team_id: components["parameters"]["team-id"]; + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + }; + }; + responses: { + /** Response */ + 204: never; + }; + }; + /** + * **Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [`List IdP groups for a team`](https://docs.github.com/rest/reference/teams#list-idp-groups-for-a-team) endpoint. + * + * Team synchronization is available for organizations using GitHub Enterprise Cloud. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. + * + * List IdP groups connected to a team on GitHub. + */ + "teams/list-idp-groups-for-legacy": { + parameters: { + path: { + /** The unique identifier of the team. */ + team_id: components["parameters"]["team-id"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["group-mapping"]; + }; + }; + 403: components["responses"]["forbidden"]; + 404: components["responses"]["not_found"]; + }; + }; + /** + * **Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [`Create or update IdP group connections`](https://docs.github.com/rest/reference/teams#create-or-update-idp-group-connections) endpoint. + * + * Team synchronization is available for organizations using GitHub Enterprise Cloud. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. + * + * Creates, updates, or removes a connection between a team and an IdP group. When adding groups to a team, you must include all new and existing groups to avoid replacing existing groups with the new ones. Specifying an empty `groups` array will remove all connections for a team. + */ + "teams/create-or-update-idp-group-connections-legacy": { + parameters: { + path: { + /** The unique identifier of the team. */ + team_id: components["parameters"]["team-id"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["group-mapping"]; + }; + }; + 403: components["responses"]["forbidden"]; + 422: components["responses"]["validation_failed"]; + }; + requestBody: { + content: { + "application/json": { + /** @description The IdP groups you want to connect to a GitHub team. When updating, the new `groups` object will replace the original one. You must include any existing groups that you don't want to remove. */ + groups: { + /** @description ID of the IdP group. */ + group_id: string; + /** @description Name of the IdP group. */ + group_name: string; + /** @description Description of the IdP group. */ + group_description: string; + /** @example "caceab43fc9ffa20081c" */ + id?: string; + /** @example "external-team-6c13e7288ef7" */ + name?: string; + /** @example "moar cheese pleese" */ + description?: string; + }[]; + /** @example "I am not a timestamp" */ + synced_at?: string; + }; + }; + }; + }; + /** **Deprecation Notice:** This endpoint route is deprecated and will be removed from the Teams API. We recommend migrating your existing code to use the new [`List child teams`](https://docs.github.com/rest/reference/teams#list-child-teams) endpoint. */ + "teams/list-child-legacy": { + parameters: { + path: { + /** The unique identifier of the team. */ + team_id: components["parameters"]["team-id"]; + }; + query: { + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + }; + }; + responses: { + /** if child teams exist */ + 200: { + headers: {}; + content: { + "application/json": components["schemas"]["team"][]; + }; + }; + 403: components["responses"]["forbidden"]; + 404: components["responses"]["not_found"]; + 422: components["responses"]["validation_failed"]; + }; + }; + /** + * If the authenticated user is authenticated through basic authentication or OAuth with the `user` scope, then the response lists public and private profile information. + * + * If the authenticated user is authenticated through OAuth without the `user` scope, then the response lists only public profile information. + */ + "users/get-authenticated": { + parameters: {}; + responses: { + /** Response */ + 200: { + content: { + "application/json": + | components["schemas"]["private-user"] + | components["schemas"]["public-user"]; + }; + }; + 304: components["responses"]["not_modified"]; + 401: components["responses"]["requires_authentication"]; + 403: components["responses"]["forbidden"]; + }; + }; + /** **Note:** If your email is set to private and you send an `email` parameter as part of this request to update your profile, your privacy settings are still enforced: the email address will not be displayed on your public profile or via the API. */ + "users/update-authenticated": { + parameters: {}; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["private-user"]; + }; + }; + 304: components["responses"]["not_modified"]; + 401: components["responses"]["requires_authentication"]; + 403: components["responses"]["forbidden"]; + 404: components["responses"]["not_found"]; + 422: components["responses"]["validation_failed"]; + }; + requestBody: { + content: { + "application/json": { + /** + * @description The new name of the user. + * @example Omar Jahandar + */ + name?: string; + /** + * @description The publicly visible email address of the user. + * @example omar@example.com + */ + email?: string; + /** + * @description The new blog URL of the user. + * @example blog.example.com + */ + blog?: string; + /** + * @description The new Twitter username of the user. + * @example therealomarj + */ + twitter_username?: string | null; + /** + * @description The new company of the user. + * @example Acme corporation + */ + company?: string; + /** + * @description The new location of the user. + * @example Berlin, Germany + */ + location?: string; + /** @description The new hiring availability of the user. */ + hireable?: boolean; + /** @description The new short biography of the user. */ + bio?: string; + }; + }; + }; + }; + /** List the users you've blocked on your personal account. */ + "users/list-blocked-by-authenticated-user": { + parameters: {}; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["simple-user"][]; + }; + }; + 304: components["responses"]["not_modified"]; + 401: components["responses"]["requires_authentication"]; + 403: components["responses"]["forbidden"]; + 404: components["responses"]["not_found"]; + }; + }; + "users/check-blocked": { + parameters: { + path: { + /** The handle for the GitHub user account. */ + username: components["parameters"]["username"]; + }; + }; + responses: { + /** If the user is blocked: */ + 204: never; + 304: components["responses"]["not_modified"]; + 401: components["responses"]["requires_authentication"]; + 403: components["responses"]["forbidden"]; + /** If the user is not blocked: */ + 404: { + content: { + "application/json": components["schemas"]["basic-error"]; + }; + }; + }; + }; + "users/block": { + parameters: { + path: { + /** The handle for the GitHub user account. */ + username: components["parameters"]["username"]; + }; + }; + responses: { + /** Response */ + 204: never; + 304: components["responses"]["not_modified"]; + 401: components["responses"]["requires_authentication"]; + 403: components["responses"]["forbidden"]; + 404: components["responses"]["not_found"]; + 422: components["responses"]["validation_failed"]; + }; + }; + "users/unblock": { + parameters: { + path: { + /** The handle for the GitHub user account. */ + username: components["parameters"]["username"]; + }; + }; + responses: { + /** Response */ + 204: never; + 304: components["responses"]["not_modified"]; + 401: components["responses"]["requires_authentication"]; + 403: components["responses"]["forbidden"]; + 404: components["responses"]["not_found"]; + }; + }; + /** + * Lists the authenticated user's codespaces. + * + * You must authenticate using an access token with the `codespace` scope to use this endpoint. + * + * GitHub Apps must have read access to the `codespaces` repository permission to use this endpoint. + */ + "codespaces/list-for-authenticated-user": { + parameters: { + query: { + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + /** ID of the Repository to filter on */ + repository_id?: components["parameters"]["repository-id-in-query"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": { + total_count: number; + codespaces: components["schemas"]["codespace"][]; + }; + }; + }; + 304: components["responses"]["not_modified"]; + 401: components["responses"]["requires_authentication"]; + 403: components["responses"]["forbidden"]; + 404: components["responses"]["not_found"]; + 500: components["responses"]["internal_error"]; + }; + }; + /** + * Creates a new codespace, owned by the authenticated user. + * + * This endpoint requires either a `repository_id` OR a `pull_request` but not both. + * + * You must authenticate using an access token with the `codespace` scope to use this endpoint. + * + * GitHub Apps must have write access to the `codespaces` repository permission to use this endpoint. + */ + "codespaces/create-for-authenticated-user": { + responses: { + /** Response when the codespace was successfully created */ + 201: { + content: { + "application/json": components["schemas"]["codespace"]; + }; + }; + /** Response when the codespace creation partially failed but is being retried in the background */ + 202: { + content: { + "application/json": components["schemas"]["codespace"]; + }; + }; + 401: components["responses"]["requires_authentication"]; + 403: components["responses"]["forbidden"]; + 404: components["responses"]["not_found"]; + }; + requestBody: { + content: { + "application/json": + | { + /** @description Repository id for this codespace */ + repository_id: number; + /** @description Git ref (typically a branch name) for this codespace */ + ref?: string; + /** @description Location for this codespace. Assigned by IP if not provided */ + location?: string; + /** @description IP for location auto-detection when proxying a request */ + client_ip?: string; + /** @description Machine type to use for this codespace */ + machine?: string; + /** @description Path to devcontainer.json config to use for this codespace */ + devcontainer_path?: string; + /** @description Whether to authorize requested permissions from devcontainer.json */ + multi_repo_permissions_opt_out?: boolean; + /** @description Working directory for this codespace */ + working_directory?: string; + /** @description Time in minutes before codespace stops from inactivity */ + idle_timeout_minutes?: number; + /** @description Display name for this codespace */ + display_name?: string; + /** @description Duration in minutes after codespace has gone idle in which it will be deleted. Must be integer minutes between 0 and 43200 (30 days). */ + retention_period_minutes?: number; + } + | { + /** @description Pull request number for this codespace */ + pull_request: { + /** @description Pull request number */ + pull_request_number: number; + /** @description Repository id for this codespace */ + repository_id: number; + }; + /** @description Location for this codespace. Assigned by IP if not provided */ + location?: string; + /** @description Machine type to use for this codespace */ + machine?: string; + /** @description Path to devcontainer.json config to use for this codespace */ + devcontainer_path?: string; + /** @description Working directory for this codespace */ + working_directory?: string; + /** @description Time in minutes before codespace stops from inactivity */ + idle_timeout_minutes?: number; + }; + }; + }; + }; + /** + * Lists all secrets available for a user's Codespaces without revealing their + * encrypted values. + * + * You must authenticate using an access token with the `codespace` or `codespace:secrets` scope to use this endpoint. User must have Codespaces access to use this endpoint. + * + * GitHub Apps must have read access to the `codespaces_user_secrets` user permission to use this endpoint. + */ + "codespaces/list-secrets-for-authenticated-user": { + parameters: { + query: { + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + }; + }; + responses: { + /** Response */ + 200: { + headers: {}; + content: { + "application/json": { + total_count: number; + secrets: components["schemas"]["codespaces-secret"][]; + }; + }; + }; + }; + }; + /** + * Gets your public key, which you need to encrypt secrets. You need to encrypt a secret before you can create or update secrets. + * + * You must authenticate using an access token with the `codespace` or `codespace:secrets` scope to use this endpoint. User must have Codespaces access to use this endpoint. + * + * GitHub Apps must have read access to the `codespaces_user_secrets` user permission to use this endpoint. + */ + "codespaces/get-public-key-for-authenticated-user": { + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["codespaces-user-public-key"]; + }; + }; + }; + }; + /** + * Gets a secret available to a user's codespaces without revealing its encrypted value. + * + * You must authenticate using an access token with the `codespace` or `codespace:secrets` scope to use this endpoint. User must have Codespaces access to use this endpoint. + * + * GitHub Apps must have read access to the `codespaces_user_secrets` user permission to use this endpoint. + */ + "codespaces/get-secret-for-authenticated-user": { + parameters: { + path: { + /** The name of the secret. */ + secret_name: components["parameters"]["secret-name"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["codespaces-secret"]; + }; + }; + }; + }; + /** + * Creates or updates a secret for a user's codespace with an encrypted value. Encrypt your secret using + * [LibSodium](https://libsodium.gitbook.io/doc/bindings_for_other_languages). + * + * You must authenticate using an access token with the `codespace` or `codespace:secrets` scope to use this endpoint. User must also have Codespaces access to use this endpoint. + * + * GitHub Apps must have read access to the `codespaces_user_secrets` user permission and `codespaces_secrets` repository permission on all referenced repositories to use this endpoint. + * + * #### Example encrypting a secret using Node.js + * + * Encrypt your secret using the [tweetsodium](https://github.com/github/tweetsodium) library. + * + * ``` + * const sodium = require('tweetsodium'); + * + * const key = "base64-encoded-public-key"; + * const value = "plain-text-secret"; + * + * // Convert the message and key to Uint8Array's (Buffer implements that interface) + * const messageBytes = Buffer.from(value); + * const keyBytes = Buffer.from(key, 'base64'); + * + * // Encrypt using LibSodium. + * const encryptedBytes = sodium.seal(messageBytes, keyBytes); + * + * // Base64 the encrypted secret + * const encrypted = Buffer.from(encryptedBytes).toString('base64'); + * + * console.log(encrypted); + * ``` + * + * + * #### Example encrypting a secret using Python + * + * Encrypt your secret using [pynacl](https://pynacl.readthedocs.io/en/latest/public/#nacl-public-sealedbox) with Python 3. + * + * ``` + * from base64 import b64encode + * from nacl import encoding, public + * + * def encrypt(public_key: str, secret_value: str) -> str: + * """Encrypt a Unicode string using the public key.""" + * public_key = public.PublicKey(public_key.encode("utf-8"), encoding.Base64Encoder()) + * sealed_box = public.SealedBox(public_key) + * encrypted = sealed_box.encrypt(secret_value.encode("utf-8")) + * return b64encode(encrypted).decode("utf-8") + * ``` + * + * #### Example encrypting a secret using C# + * + * Encrypt your secret using the [Sodium.Core](https://www.nuget.org/packages/Sodium.Core/) package. + * + * ``` + * var secretValue = System.Text.Encoding.UTF8.GetBytes("mySecret"); + * var publicKey = Convert.FromBase64String("2Sg8iYjAxxmI2LvUXpJjkYrMxURPc8r+dB7TJyvvcCU="); + * + * var sealedPublicKeyBox = Sodium.SealedPublicKeyBox.Create(secretValue, publicKey); + * + * Console.WriteLine(Convert.ToBase64String(sealedPublicKeyBox)); + * ``` + * + * #### Example encrypting a secret using Ruby + * + * Encrypt your secret using the [rbnacl](https://github.com/RubyCrypto/rbnacl) gem. + * + * ```ruby + * require "rbnacl" + * require "base64" + * + * key = Base64.decode64("+ZYvJDZMHUfBkJdyq5Zm9SKqeuBQ4sj+6sfjlH4CgG0=") + * public_key = RbNaCl::PublicKey.new(key) + * + * box = RbNaCl::Boxes::Sealed.from_public_key(public_key) + * encrypted_secret = box.encrypt("my_secret") + * + * # Print the base64 encoded secret + * puts Base64.strict_encode64(encrypted_secret) + * ``` + */ + "codespaces/create-or-update-secret-for-authenticated-user": { + parameters: { + path: { + /** The name of the secret. */ + secret_name: components["parameters"]["secret-name"]; + }; + }; + responses: { + /** Response after successfully creaing a secret */ + 201: { + content: { + "application/json": { [key: string]: unknown }; + }; + }; + /** Response after successfully updating a secret */ + 204: never; + 404: components["responses"]["not_found"]; + 422: components["responses"]["validation_failed"]; + }; + requestBody: { + content: { + "application/json": { + /** @description Value for your secret, encrypted with [LibSodium](https://libsodium.gitbook.io/doc/bindings_for_other_languages) using the public key retrieved from the [Get the public key for the authenticated user](https://docs.github.com/rest/reference/codespaces#get-the-public-key-for-the-authenticated-user) endpoint. */ + encrypted_value?: string; + /** @description ID of the key you used to encrypt the secret. */ + key_id: string; + /** @description An array of repository ids that can access the user secret. You can manage the list of selected repositories using the [List selected repositories for a user secret](https://docs.github.com/rest/reference/codespaces#list-selected-repositories-for-a-user-secret), [Set selected repositories for a user secret](https://docs.github.com/rest/reference/codespaces#set-selected-repositories-for-a-user-secret), and [Remove a selected repository from a user secret](https://docs.github.com/rest/reference/codespaces#remove-a-selected-repository-from-a-user-secret) endpoints. */ + selected_repository_ids?: string[]; + }; + }; + }; + }; + /** + * Deletes a secret from a user's codespaces using the secret name. Deleting the secret will remove access from all codespaces that were allowed to access the secret. + * + * You must authenticate using an access token with the `codespace` or `codespace:secrets` scope to use this endpoint. User must have Codespaces access to use this endpoint. + * + * GitHub Apps must have write access to the `codespaces_user_secrets` user permission to use this endpoint. + */ + "codespaces/delete-secret-for-authenticated-user": { + parameters: { + path: { + /** The name of the secret. */ + secret_name: components["parameters"]["secret-name"]; + }; + }; + responses: { + /** Response */ + 204: never; + }; + }; + /** + * List the repositories that have been granted the ability to use a user's codespace secret. + * + * You must authenticate using an access token with the `codespace` or `codespace:secrets` scope to use this endpoint. User must have Codespaces access to use this endpoint. + * + * GitHub Apps must have read access to the `codespaces_user_secrets` user permission and write access to the `codespaces_secrets` repository permission on all referenced repositories to use this endpoint. + */ + "codespaces/list-repositories-for-secret-for-authenticated-user": { + parameters: { + path: { + /** The name of the secret. */ + secret_name: components["parameters"]["secret-name"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": { + total_count: number; + repositories: components["schemas"]["minimal-repository"][]; + }; + }; + }; + 401: components["responses"]["requires_authentication"]; + 403: components["responses"]["forbidden"]; + 404: components["responses"]["not_found"]; + 500: components["responses"]["internal_error"]; + }; + }; + /** + * Select the repositories that will use a user's codespace secret. + * + * You must authenticate using an access token with the `codespace` or `codespace:secrets` scope to use this endpoint. User must have Codespaces access to use this endpoint. + * + * GitHub Apps must have write access to the `codespaces_user_secrets` user permission and write access to the `codespaces_secrets` repository permission on all referenced repositories to use this endpoint. + */ + "codespaces/set-repositories-for-secret-for-authenticated-user": { + parameters: { + path: { + /** The name of the secret. */ + secret_name: components["parameters"]["secret-name"]; + }; + }; + responses: { + /** No Content when repositories were added to the selected list */ + 204: never; + 401: components["responses"]["requires_authentication"]; + 403: components["responses"]["forbidden"]; + 404: components["responses"]["not_found"]; + 500: components["responses"]["internal_error"]; + }; + requestBody: { + content: { + "application/json": { + /** @description An array of repository ids for which a codespace can access the secret. You can manage the list of selected repositories using the [List selected repositories for a user secret](https://docs.github.com/rest/reference/codespaces#list-selected-repositories-for-a-user-secret), [Add a selected repository to a user secret](https://docs.github.com/rest/reference/codespaces#add-a-selected-repository-to-a-user-secret), and [Remove a selected repository from a user secret](https://docs.github.com/rest/reference/codespaces#remove-a-selected-repository-from-a-user-secret) endpoints. */ + selected_repository_ids: number[]; + }; + }; + }; + }; + /** + * Adds a repository to the selected repositories for a user's codespace secret. + * You must authenticate using an access token with the `codespace` or `codespace:secrets` scope to use this endpoint. User must have Codespaces access to use this endpoint. + * GitHub Apps must have write access to the `codespaces_user_secrets` user permission and write access to the `codespaces_secrets` repository permission on the referenced repository to use this endpoint. + */ + "codespaces/add-repository-for-secret-for-authenticated-user": { + parameters: { + path: { + /** The name of the secret. */ + secret_name: components["parameters"]["secret-name"]; + repository_id: number; + }; + }; + responses: { + /** No Content when repository was added to the selected list */ + 204: never; + 401: components["responses"]["requires_authentication"]; + 403: components["responses"]["forbidden"]; + 404: components["responses"]["not_found"]; + 500: components["responses"]["internal_error"]; + }; + }; + /** + * Removes a repository from the selected repositories for a user's codespace secret. + * You must authenticate using an access token with the `codespace` or `codespace:secrets` scope to use this endpoint. User must have Codespaces access to use this endpoint. + * GitHub Apps must have write access to the `codespaces_user_secrets` user permission to use this endpoint. + */ + "codespaces/remove-repository-for-secret-for-authenticated-user": { + parameters: { + path: { + /** The name of the secret. */ + secret_name: components["parameters"]["secret-name"]; + repository_id: number; + }; + }; + responses: { + /** No Content when repository was removed from the selected list */ + 204: never; + 401: components["responses"]["requires_authentication"]; + 403: components["responses"]["forbidden"]; + 404: components["responses"]["not_found"]; + 500: components["responses"]["internal_error"]; + }; + }; + /** + * Gets information about a user's codespace. + * + * You must authenticate using an access token with the `codespace` scope to use this endpoint. + * + * GitHub Apps must have read access to the `codespaces` repository permission to use this endpoint. + */ + "codespaces/get-for-authenticated-user": { + parameters: { + path: { + /** The name of the codespace. */ + codespace_name: components["parameters"]["codespace-name"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["codespace"]; + }; + }; + 304: components["responses"]["not_modified"]; + 401: components["responses"]["requires_authentication"]; + 403: components["responses"]["forbidden"]; + 404: components["responses"]["not_found"]; + 500: components["responses"]["internal_error"]; + }; + }; + /** + * Deletes a user's codespace. + * + * You must authenticate using an access token with the `codespace` scope to use this endpoint. + * + * GitHub Apps must have write access to the `codespaces` repository permission to use this endpoint. + */ + "codespaces/delete-for-authenticated-user": { + parameters: { + path: { + /** The name of the codespace. */ + codespace_name: components["parameters"]["codespace-name"]; + }; + }; + responses: { + 202: components["responses"]["accepted"]; + 304: components["responses"]["not_modified"]; + 401: components["responses"]["requires_authentication"]; + 403: components["responses"]["forbidden"]; + 404: components["responses"]["not_found"]; + 500: components["responses"]["internal_error"]; + }; + }; + /** + * Updates a codespace owned by the authenticated user. Currently only the codespace's machine type and recent folders can be modified using this endpoint. + * + * If you specify a new machine type it will be applied the next time your codespace is started. + * + * You must authenticate using an access token with the `codespace` scope to use this endpoint. + * + * GitHub Apps must have write access to the `codespaces` repository permission to use this endpoint. + */ + "codespaces/update-for-authenticated-user": { + parameters: { + path: { + /** The name of the codespace. */ + codespace_name: components["parameters"]["codespace-name"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["codespace"]; + }; + }; + 401: components["responses"]["requires_authentication"]; + 403: components["responses"]["forbidden"]; + 404: components["responses"]["not_found"]; + }; + requestBody: { + content: { + "application/json": { + /** @description A valid machine to transition this codespace to. */ + machine?: string; + /** @description Display name for this codespace */ + display_name?: string; + /** @description Recently opened folders inside the codespace. It is currently used by the clients to determine the folder path to load the codespace in. */ + recent_folders?: string[]; + }; + }; + }; + }; + /** + * Triggers an export of the specified codespace and returns a URL and ID where the status of the export can be monitored. + * + * You must authenticate using a personal access token with the `codespace` scope to use this endpoint. + * + * GitHub Apps must have write access to the `codespaces_lifecycle_admin` repository permission to use this endpoint. + */ + "codespaces/export-for-authenticated-user": { + parameters: { + path: { + /** The name of the codespace. */ + codespace_name: components["parameters"]["codespace-name"]; + }; + }; + responses: { + /** Response */ + 202: { + content: { + "application/json": components["schemas"]["codespace-export-details"]; + }; + }; + 401: components["responses"]["requires_authentication"]; + 403: components["responses"]["forbidden"]; + 404: components["responses"]["not_found"]; + 422: components["responses"]["validation_failed"]; + 500: components["responses"]["internal_error"]; + }; + }; + /** + * Gets information about an export of a codespace. + * + * You must authenticate using a personal access token with the `codespace` scope to use this endpoint. + * + * GitHub Apps must have read access to the `codespaces_lifecycle_admin` repository permission to use this endpoint. + */ + "codespaces/get-export-details-for-authenticated-user": { + parameters: { + path: { + /** The name of the codespace. */ + codespace_name: components["parameters"]["codespace-name"]; + /** The ID of the export operation, or `latest`. Currently only `latest` is currently supported. */ + export_id: components["parameters"]["export-id"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["codespace-export-details"]; + }; + }; + 404: components["responses"]["not_found"]; + }; + }; + /** + * List the machine types a codespace can transition to use. + * + * You must authenticate using an access token with the `codespace` scope to use this endpoint. + * + * GitHub Apps must have read access to the `codespaces_metadata` repository permission to use this endpoint. + */ + "codespaces/codespace-machines-for-authenticated-user": { + parameters: { + path: { + /** The name of the codespace. */ + codespace_name: components["parameters"]["codespace-name"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": { + total_count: number; + machines: components["schemas"]["codespace-machine"][]; + }; + }; + }; + 304: components["responses"]["not_modified"]; + 401: components["responses"]["requires_authentication"]; + 403: components["responses"]["forbidden"]; + 404: components["responses"]["not_found"]; + 500: components["responses"]["internal_error"]; + }; + }; + /** + * Starts a user's codespace. + * + * You must authenticate using an access token with the `codespace` scope to use this endpoint. + * + * GitHub Apps must have write access to the `codespaces_lifecycle_admin` repository permission to use this endpoint. + */ + "codespaces/start-for-authenticated-user": { + parameters: { + path: { + /** The name of the codespace. */ + codespace_name: components["parameters"]["codespace-name"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["codespace"]; + }; + }; + 304: components["responses"]["not_modified"]; + 400: components["responses"]["bad_request"]; + 401: components["responses"]["requires_authentication"]; + /** Payment required */ + 402: { + content: { + "application/json": components["schemas"]["basic-error"]; + }; + }; + 403: components["responses"]["forbidden"]; + 404: components["responses"]["not_found"]; + 409: components["responses"]["conflict"]; + 500: components["responses"]["internal_error"]; + }; + }; + /** + * Stops a user's codespace. + * + * You must authenticate using an access token with the `codespace` scope to use this endpoint. + * + * GitHub Apps must have write access to the `codespaces_lifecycle_admin` repository permission to use this endpoint. + */ + "codespaces/stop-for-authenticated-user": { + parameters: { + path: { + /** The name of the codespace. */ + codespace_name: components["parameters"]["codespace-name"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["codespace"]; + }; + }; + 401: components["responses"]["requires_authentication"]; + 403: components["responses"]["forbidden"]; + 404: components["responses"]["not_found"]; + 500: components["responses"]["internal_error"]; + }; + }; + /** Sets the visibility for your primary email addresses. */ + "users/set-primary-email-visibility-for-authenticated-user": { + parameters: {}; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["email"][]; + }; + }; + 304: components["responses"]["not_modified"]; + 401: components["responses"]["requires_authentication"]; + 403: components["responses"]["forbidden"]; + 404: components["responses"]["not_found"]; + 422: components["responses"]["validation_failed"]; + }; + requestBody: { + content: { + "application/json": { + /** + * @description Denotes whether an email is publicly visible. + * @enum {string} + */ + visibility: "public" | "private"; + }; + }; + }; + }; + /** Lists all of your email addresses, and specifies which one is visible to the public. This endpoint is accessible with the `user:email` scope. */ + "users/list-emails-for-authenticated-user": { + parameters: { + query: { + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + }; + }; + responses: { + /** Response */ + 200: { + headers: {}; + content: { + "application/json": components["schemas"]["email"][]; + }; + }; + 304: components["responses"]["not_modified"]; + 401: components["responses"]["requires_authentication"]; + 403: components["responses"]["forbidden"]; + 404: components["responses"]["not_found"]; + }; + }; + /** This endpoint is accessible with the `user` scope. */ + "users/add-email-for-authenticated-user": { + parameters: {}; + responses: { + /** Response */ + 201: { + content: { + "application/json": components["schemas"]["email"][]; + }; + }; + 304: components["responses"]["not_modified"]; + 401: components["responses"]["requires_authentication"]; + 403: components["responses"]["forbidden"]; + 404: components["responses"]["not_found"]; + 422: components["responses"]["validation_failed"]; + }; + requestBody: { + content: { + "application/json": { + /** + * @description Adds one or more email addresses to your GitHub account. Must contain at least one email address. **Note:** Alternatively, you can pass a single email address or an `array` of emails addresses directly, but we recommend that you pass an object using the `emails` key. + * @example [] + */ + emails: string[]; + }; + }; + }; + }; + /** This endpoint is accessible with the `user` scope. */ + "users/delete-email-for-authenticated-user": { + parameters: {}; + responses: { + /** Response */ + 204: never; + 304: components["responses"]["not_modified"]; + 401: components["responses"]["requires_authentication"]; + 403: components["responses"]["forbidden"]; + 404: components["responses"]["not_found"]; + 422: components["responses"]["validation_failed"]; + }; + requestBody: { + content: { + "application/json": { + /** @description Email addresses associated with the GitHub user account. */ + emails: string[]; + }; + }; + }; + }; + /** Lists the people following the authenticated user. */ + "users/list-followers-for-authenticated-user": { + parameters: { + query: { + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + }; + }; + responses: { + /** Response */ + 200: { + headers: {}; + content: { + "application/json": components["schemas"]["simple-user"][]; + }; + }; + 304: components["responses"]["not_modified"]; + 401: components["responses"]["requires_authentication"]; + 403: components["responses"]["forbidden"]; + }; + }; + /** Lists the people who the authenticated user follows. */ + "users/list-followed-by-authenticated-user": { + parameters: { + query: { + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + }; + }; + responses: { + /** Response */ + 200: { + headers: {}; + content: { + "application/json": components["schemas"]["simple-user"][]; + }; + }; + 304: components["responses"]["not_modified"]; + 401: components["responses"]["requires_authentication"]; + 403: components["responses"]["forbidden"]; + }; + }; + "users/check-person-is-followed-by-authenticated": { + parameters: { + path: { + /** The handle for the GitHub user account. */ + username: components["parameters"]["username"]; + }; + }; + responses: { + /** if the person is followed by the authenticated user */ + 204: never; + 304: components["responses"]["not_modified"]; + 401: components["responses"]["requires_authentication"]; + 403: components["responses"]["forbidden"]; + /** if the person is not followed by the authenticated user */ + 404: { + content: { + "application/json": components["schemas"]["basic-error"]; + }; + }; + }; + }; + /** + * Note that you'll need to set `Content-Length` to zero when calling out to this endpoint. For more information, see "[HTTP verbs](https://docs.github.com/rest/overview/resources-in-the-rest-api#http-verbs)." + * + * Following a user requires the user to be logged in and authenticated with basic auth or OAuth with the `user:follow` scope. + */ + "users/follow": { + parameters: { + path: { + /** The handle for the GitHub user account. */ + username: components["parameters"]["username"]; + }; + }; + responses: { + /** Response */ + 204: never; + 304: components["responses"]["not_modified"]; + 401: components["responses"]["requires_authentication"]; + 403: components["responses"]["forbidden"]; + 404: components["responses"]["not_found"]; + }; + }; + /** Unfollowing a user requires the user to be logged in and authenticated with basic auth or OAuth with the `user:follow` scope. */ + "users/unfollow": { + parameters: { + path: { + /** The handle for the GitHub user account. */ + username: components["parameters"]["username"]; + }; + }; + responses: { + /** Response */ + 204: never; + 304: components["responses"]["not_modified"]; + 401: components["responses"]["requires_authentication"]; + 403: components["responses"]["forbidden"]; + 404: components["responses"]["not_found"]; + }; + }; + /** Lists the current user's GPG keys. Requires that you are authenticated via Basic Auth or via OAuth with at least `read:gpg_key` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). */ + "users/list-gpg-keys-for-authenticated-user": { + parameters: { + query: { + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + }; + }; + responses: { + /** Response */ + 200: { + headers: {}; + content: { + "application/json": components["schemas"]["gpg-key"][]; + }; + }; + 304: components["responses"]["not_modified"]; + 401: components["responses"]["requires_authentication"]; + 403: components["responses"]["forbidden"]; + 404: components["responses"]["not_found"]; + }; + }; + /** Adds a GPG key to the authenticated user's GitHub account. Requires that you are authenticated via Basic Auth, or OAuth with at least `write:gpg_key` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). */ + "users/create-gpg-key-for-authenticated-user": { + parameters: {}; + responses: { + /** Response */ + 201: { + content: { + "application/json": components["schemas"]["gpg-key"]; + }; + }; + 304: components["responses"]["not_modified"]; + 401: components["responses"]["requires_authentication"]; + 403: components["responses"]["forbidden"]; + 404: components["responses"]["not_found"]; + 422: components["responses"]["validation_failed"]; + }; + requestBody: { + content: { + "application/json": { + /** @description A descriptive name for the new key. */ + name?: string; + /** @description A GPG key in ASCII-armored format. */ + armored_public_key: string; + }; + }; + }; + }; + /** View extended details for a single GPG key. Requires that you are authenticated via Basic Auth or via OAuth with at least `read:gpg_key` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). */ + "users/get-gpg-key-for-authenticated-user": { + parameters: { + path: { + /** The unique identifier of the GPG key. */ + gpg_key_id: components["parameters"]["gpg-key-id"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["gpg-key"]; + }; + }; + 304: components["responses"]["not_modified"]; + 401: components["responses"]["requires_authentication"]; + 403: components["responses"]["forbidden"]; + 404: components["responses"]["not_found"]; + }; + }; + /** Removes a GPG key from the authenticated user's GitHub account. Requires that you are authenticated via Basic Auth or via OAuth with at least `admin:gpg_key` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). */ + "users/delete-gpg-key-for-authenticated-user": { + parameters: { + path: { + /** The unique identifier of the GPG key. */ + gpg_key_id: components["parameters"]["gpg-key-id"]; + }; + }; + responses: { + /** Response */ + 204: never; + 304: components["responses"]["not_modified"]; + 401: components["responses"]["requires_authentication"]; + 403: components["responses"]["forbidden"]; + 404: components["responses"]["not_found"]; + 422: components["responses"]["validation_failed"]; + }; + }; + /** + * Lists installations of your GitHub App that the authenticated user has explicit permission (`:read`, `:write`, or `:admin`) to access. + * + * You must use a [user-to-server OAuth access token](https://docs.github.com/apps/building-github-apps/identifying-and-authorizing-users-for-github-apps/#identifying-users-on-your-site), created for a user who has authorized your GitHub App, to access this endpoint. + * + * The authenticated user has explicit permission to access repositories they own, repositories where they are a collaborator, and repositories that they can access through an organization membership. + * + * You can find the permissions for the installation under the `permissions` key. + */ + "apps/list-installations-for-authenticated-user": { + parameters: { + query: { + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + }; + }; + responses: { + /** You can find the permissions for the installation under the `permissions` key. */ + 200: { + headers: {}; + content: { + "application/json": { + total_count: number; + installations: components["schemas"]["installation"][]; + }; + }; + }; + 304: components["responses"]["not_modified"]; + 401: components["responses"]["requires_authentication"]; + 403: components["responses"]["forbidden"]; + }; + }; + /** + * List repositories that the authenticated user has explicit permission (`:read`, `:write`, or `:admin`) to access for an installation. + * + * The authenticated user has explicit permission to access repositories they own, repositories where they are a collaborator, and repositories that they can access through an organization membership. + * + * You must use a [user-to-server OAuth access token](https://docs.github.com/apps/building-github-apps/identifying-and-authorizing-users-for-github-apps/#identifying-users-on-your-site), created for a user who has authorized your GitHub App, to access this endpoint. + * + * The access the user has to each repository is included in the hash under the `permissions` key. + */ + "apps/list-installation-repos-for-authenticated-user": { + parameters: { + path: { + /** The unique identifier of the installation. */ + installation_id: components["parameters"]["installation-id"]; + }; + query: { + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + }; + }; + responses: { + /** The access the user has to each repository is included in the hash under the `permissions` key. */ + 200: { + headers: {}; + content: { + "application/json": { + total_count: number; + repository_selection?: string; + repositories: components["schemas"]["repository"][]; + }; + }; + }; + 304: components["responses"]["not_modified"]; + 403: components["responses"]["forbidden"]; + 404: components["responses"]["not_found"]; + }; + }; + /** + * Add a single repository to an installation. The authenticated user must have admin access to the repository. + * + * You must use a personal access token (which you can create via the [command line](https://docs.github.com/github/authenticating-to-github/creating-a-personal-access-token) or [Basic Authentication](https://docs.github.com/rest/overview/other-authentication-methods#basic-authentication)) to access this endpoint. + */ + "apps/add-repo-to-installation-for-authenticated-user": { + parameters: { + path: { + /** The unique identifier of the installation. */ + installation_id: components["parameters"]["installation-id"]; + /** The unique identifier of the repository. */ + repository_id: components["parameters"]["repository-id"]; + }; + }; + responses: { + /** Response */ + 204: never; + 304: components["responses"]["not_modified"]; + 403: components["responses"]["forbidden"]; + 404: components["responses"]["not_found"]; + }; + }; + /** + * Remove a single repository from an installation. The authenticated user must have admin access to the repository. + * + * You must use a personal access token (which you can create via the [command line](https://docs.github.com/github/authenticating-to-github/creating-a-personal-access-token) or [Basic Authentication](https://docs.github.com/rest/overview/other-authentication-methods#basic-authentication)) to access this endpoint. + */ + "apps/remove-repo-from-installation-for-authenticated-user": { + parameters: { + path: { + /** The unique identifier of the installation. */ + installation_id: components["parameters"]["installation-id"]; + /** The unique identifier of the repository. */ + repository_id: components["parameters"]["repository-id"]; + }; + }; + responses: { + /** Response */ + 204: never; + 304: components["responses"]["not_modified"]; + 403: components["responses"]["forbidden"]; + 404: components["responses"]["not_found"]; + }; + }; + /** Shows which type of GitHub user can interact with your public repositories and when the restriction expires. */ + "interactions/get-restrictions-for-authenticated-user": { + responses: { + /** Default response */ + 200: { + content: { + "application/json": Partial< + components["schemas"]["interaction-limit-response"] + > & + Partial<{ [key: string]: unknown }>; + }; + }; + /** Response when there are no restrictions */ + 204: never; + }; + }; + /** Temporarily restricts which type of GitHub user can interact with your public repositories. Setting the interaction limit at the user level will overwrite any interaction limits that are set for individual repositories owned by the user. */ + "interactions/set-restrictions-for-authenticated-user": { + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["interaction-limit-response"]; + }; + }; + 422: components["responses"]["validation_failed"]; + }; + requestBody: { + content: { + "application/json": components["schemas"]["interaction-limit"]; + }; + }; + }; + /** Removes any interaction restrictions from your public repositories. */ + "interactions/remove-restrictions-for-authenticated-user": { + responses: { + /** Response */ + 204: never; + }; + }; + /** + * List issues across owned and member repositories assigned to the authenticated user. + * + * **Note**: GitHub's REST API v3 considers every pull request an issue, but not every issue is a pull request. For this + * reason, "Issues" endpoints may return both issues and pull requests in the response. You can identify pull requests by + * the `pull_request` key. Be aware that the `id` of a pull request returned from "Issues" endpoints will be an _issue id_. To find out the pull + * request id, use the "[List pull requests](https://docs.github.com/rest/reference/pulls#list-pull-requests)" endpoint. + */ + "issues/list-for-authenticated-user": { + parameters: { + query: { + /** Indicates which sorts of issues to return. `assigned` means issues assigned to you. `created` means issues created by you. `mentioned` means issues mentioning you. `subscribed` means issues you're subscribed to updates for. `all` or `repos` means all issues you can see, regardless of participation or creation. */ + filter?: + | "assigned" + | "created" + | "mentioned" + | "subscribed" + | "repos" + | "all"; + /** Indicates the state of the issues to return. Can be either `open`, `closed`, or `all`. */ + state?: "open" | "closed" | "all"; + /** A list of comma separated label names. Example: `bug,ui,@high` */ + labels?: components["parameters"]["labels"]; + /** What to sort results by. Can be either `created`, `updated`, `comments`. */ + sort?: "created" | "updated" | "comments"; + /** The direction to sort the results by. */ + direction?: components["parameters"]["direction"]; + /** Only show notifications updated after the given time. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`. */ + since?: components["parameters"]["since"]; + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + }; + }; + responses: { + /** Response */ + 200: { + headers: {}; + content: { + "application/json": components["schemas"]["issue"][]; + }; + }; + 304: components["responses"]["not_modified"]; + 404: components["responses"]["not_found"]; + }; + }; + /** Lists the public SSH keys for the authenticated user's GitHub account. Requires that you are authenticated via Basic Auth or via OAuth with at least `read:public_key` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). */ + "users/list-public-ssh-keys-for-authenticated-user": { + parameters: { + query: { + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + }; + }; + responses: { + /** Response */ + 200: { + headers: {}; + content: { + "application/json": components["schemas"]["key"][]; + }; + }; + 304: components["responses"]["not_modified"]; + 401: components["responses"]["requires_authentication"]; + 403: components["responses"]["forbidden"]; + 404: components["responses"]["not_found"]; + }; + }; + /** Adds a public SSH key to the authenticated user's GitHub account. Requires that you are authenticated via Basic Auth, or OAuth with at least `write:public_key` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). */ + "users/create-public-ssh-key-for-authenticated-user": { + parameters: {}; + responses: { + /** Response */ + 201: { + content: { + "application/json": components["schemas"]["key"]; + }; + }; + 304: components["responses"]["not_modified"]; + 401: components["responses"]["requires_authentication"]; + 403: components["responses"]["forbidden"]; + 404: components["responses"]["not_found"]; + 422: components["responses"]["validation_failed"]; + }; + requestBody: { + content: { + "application/json": { + /** + * @description A descriptive name for the new key. + * @example Personal MacBook Air + */ + title?: string; + /** @description The public SSH key to add to your GitHub account. */ + key: string; + }; + }; + }; + }; + /** View extended details for a single public SSH key. Requires that you are authenticated via Basic Auth or via OAuth with at least `read:public_key` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). */ + "users/get-public-ssh-key-for-authenticated-user": { + parameters: { + path: { + /** The unique identifier of the key. */ + key_id: components["parameters"]["key-id"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["key"]; + }; + }; + 304: components["responses"]["not_modified"]; + 401: components["responses"]["requires_authentication"]; + 403: components["responses"]["forbidden"]; + 404: components["responses"]["not_found"]; + }; + }; + /** Removes a public SSH key from the authenticated user's GitHub account. Requires that you are authenticated via Basic Auth or via OAuth with at least `admin:public_key` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). */ + "users/delete-public-ssh-key-for-authenticated-user": { + parameters: { + path: { + /** The unique identifier of the key. */ + key_id: components["parameters"]["key-id"]; + }; + }; + responses: { + /** Response */ + 204: never; + 304: components["responses"]["not_modified"]; + 401: components["responses"]["requires_authentication"]; + 403: components["responses"]["forbidden"]; + 404: components["responses"]["not_found"]; + }; + }; + /** Lists the active subscriptions for the authenticated user. You must use a [user-to-server OAuth access token](https://docs.github.com/apps/building-github-apps/identifying-and-authorizing-users-for-github-apps/#identifying-users-on-your-site), created for a user who has authorized your GitHub App, to access this endpoint. . OAuth Apps must authenticate using an [OAuth token](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/). */ + "apps/list-subscriptions-for-authenticated-user": { + parameters: { + query: { + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + }; + }; + responses: { + /** Response */ + 200: { + headers: {}; + content: { + "application/json": components["schemas"]["user-marketplace-purchase"][]; + }; + }; + 304: components["responses"]["not_modified"]; + 401: components["responses"]["requires_authentication"]; + 404: components["responses"]["not_found"]; + }; + }; + /** Lists the active subscriptions for the authenticated user. You must use a [user-to-server OAuth access token](https://docs.github.com/apps/building-github-apps/identifying-and-authorizing-users-for-github-apps/#identifying-users-on-your-site), created for a user who has authorized your GitHub App, to access this endpoint. . OAuth Apps must authenticate using an [OAuth token](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/). */ + "apps/list-subscriptions-for-authenticated-user-stubbed": { + parameters: { + query: { + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + }; + }; + responses: { + /** Response */ + 200: { + headers: {}; + content: { + "application/json": components["schemas"]["user-marketplace-purchase"][]; + }; + }; + 304: components["responses"]["not_modified"]; + 401: components["responses"]["requires_authentication"]; + }; + }; + "orgs/list-memberships-for-authenticated-user": { + parameters: { + query: { + /** Indicates the state of the memberships to return. Can be either `active` or `pending`. If not specified, the API returns both active and pending memberships. */ + state?: "active" | "pending"; + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + }; + }; + responses: { + /** Response */ + 200: { + headers: {}; + content: { + "application/json": components["schemas"]["org-membership"][]; + }; + }; + 304: components["responses"]["not_modified"]; + 401: components["responses"]["requires_authentication"]; + 403: components["responses"]["forbidden"]; + 422: components["responses"]["validation_failed"]; + }; + }; + "orgs/get-membership-for-authenticated-user": { + parameters: { + path: { + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["org-membership"]; + }; + }; + 403: components["responses"]["forbidden"]; + 404: components["responses"]["not_found"]; + }; + }; + "orgs/update-membership-for-authenticated-user": { + parameters: { + path: { + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["org-membership"]; + }; + }; + 403: components["responses"]["forbidden"]; + 404: components["responses"]["not_found"]; + 422: components["responses"]["validation_failed"]; + }; + requestBody: { + content: { + "application/json": { + /** + * @description The state that the membership should be in. Only `"active"` will be accepted. + * @enum {string} + */ + state: "active"; + }; + }; + }; + }; + /** Lists all migrations a user has started. */ + "migrations/list-for-authenticated-user": { + parameters: { + query: { + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + }; + }; + responses: { + /** Response */ + 200: { + headers: {}; + content: { + "application/json": components["schemas"]["migration"][]; + }; + }; + 304: components["responses"]["not_modified"]; + 401: components["responses"]["requires_authentication"]; + 403: components["responses"]["forbidden"]; + }; + }; + /** Initiates the generation of a user migration archive. */ + "migrations/start-for-authenticated-user": { + parameters: {}; + responses: { + /** Response */ + 201: { + content: { + "application/json": components["schemas"]["migration"]; + }; + }; + 304: components["responses"]["not_modified"]; + 401: components["responses"]["requires_authentication"]; + 403: components["responses"]["forbidden"]; + 422: components["responses"]["validation_failed"]; + }; + requestBody: { + content: { + "application/json": { + /** + * @description Lock the repositories being migrated at the start of the migration + * @example true + */ + lock_repositories?: boolean; + /** + * @description Indicates whether metadata should be excluded and only git source should be included for the migration. + * @example true + */ + exclude_metadata?: boolean; + /** + * @description Indicates whether the repository git data should be excluded from the migration. + * @example true + */ + exclude_git_data?: boolean; + /** + * @description Do not include attachments in the migration + * @example true + */ + exclude_attachments?: boolean; + /** + * @description Do not include releases in the migration + * @example true + */ + exclude_releases?: boolean; + /** + * @description Indicates whether projects owned by the organization or users should be excluded. + * @example true + */ + exclude_owner_projects?: boolean; + /** + * @description Indicates whether this should only include organization metadata (repositories array should be empty and will ignore other flags). + * @default false + * @example true + */ + org_metadata_only?: boolean; + /** + * @description Exclude attributes from the API response to improve performance + * @example [ + * "repositories" + * ] + */ + exclude?: "repositories"[]; + repositories: string[]; + }; + }; + }; + }; + /** + * Fetches a single user migration. The response includes the `state` of the migration, which can be one of the following values: + * + * * `pending` - the migration hasn't started yet. + * * `exporting` - the migration is in progress. + * * `exported` - the migration finished successfully. + * * `failed` - the migration failed. + * + * Once the migration has been `exported` you can [download the migration archive](https://docs.github.com/rest/reference/migrations#download-a-user-migration-archive). + */ + "migrations/get-status-for-authenticated-user": { + parameters: { + path: { + /** The unique identifier of the migration. */ + migration_id: components["parameters"]["migration-id"]; + }; + query: { + exclude?: string[]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["migration"]; + }; + }; + 304: components["responses"]["not_modified"]; + 401: components["responses"]["requires_authentication"]; + 403: components["responses"]["forbidden"]; + 404: components["responses"]["not_found"]; + }; + }; + /** + * Fetches the URL to download the migration archive as a `tar.gz` file. Depending on the resources your repository uses, the migration archive can contain JSON files with data for these objects: + * + * * attachments + * * bases + * * commit\_comments + * * issue\_comments + * * issue\_events + * * issues + * * milestones + * * organizations + * * projects + * * protected\_branches + * * pull\_request\_reviews + * * pull\_requests + * * releases + * * repositories + * * review\_comments + * * schema + * * users + * + * The archive will also contain an `attachments` directory that includes all attachment files uploaded to GitHub.com and a `repositories` directory that contains the repository's Git data. + */ + "migrations/get-archive-for-authenticated-user": { + parameters: { + path: { + /** The unique identifier of the migration. */ + migration_id: components["parameters"]["migration-id"]; + }; + }; + responses: { + /** Response */ + 302: never; + 304: components["responses"]["not_modified"]; + 401: components["responses"]["requires_authentication"]; + 403: components["responses"]["forbidden"]; + }; + }; + /** Deletes a previous migration archive. Downloadable migration archives are automatically deleted after seven days. Migration metadata, which is returned in the [List user migrations](https://docs.github.com/rest/reference/migrations#list-user-migrations) and [Get a user migration status](https://docs.github.com/rest/reference/migrations#get-a-user-migration-status) endpoints, will continue to be available even after an archive is deleted. */ + "migrations/delete-archive-for-authenticated-user": { + parameters: { + path: { + /** The unique identifier of the migration. */ + migration_id: components["parameters"]["migration-id"]; + }; + }; + responses: { + /** Response */ + 204: never; + 304: components["responses"]["not_modified"]; + 401: components["responses"]["requires_authentication"]; + 403: components["responses"]["forbidden"]; + 404: components["responses"]["not_found"]; + }; + }; + /** Unlocks a repository. You can lock repositories when you [start a user migration](https://docs.github.com/rest/reference/migrations#start-a-user-migration). Once the migration is complete you can unlock each repository to begin using it again or [delete the repository](https://docs.github.com/rest/reference/repos#delete-a-repository) if you no longer need the source data. Returns a status of `404 Not Found` if the repository is not locked. */ + "migrations/unlock-repo-for-authenticated-user": { + parameters: { + path: { + /** The unique identifier of the migration. */ + migration_id: components["parameters"]["migration-id"]; + /** repo_name parameter */ + repo_name: components["parameters"]["repo-name"]; + }; + }; + responses: { + /** Response */ + 204: never; + 304: components["responses"]["not_modified"]; + 401: components["responses"]["requires_authentication"]; + 403: components["responses"]["forbidden"]; + 404: components["responses"]["not_found"]; + }; + }; + /** Lists all the repositories for this user migration. */ + "migrations/list-repos-for-authenticated-user": { + parameters: { + path: { + /** The unique identifier of the migration. */ + migration_id: components["parameters"]["migration-id"]; + }; + query: { + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + }; + }; + responses: { + /** Response */ + 200: { + headers: {}; + content: { + "application/json": components["schemas"]["minimal-repository"][]; + }; + }; + 404: components["responses"]["not_found"]; + }; + }; + /** + * List organizations for the authenticated user. + * + * **OAuth scope requirements** + * + * This only lists organizations that your authorization allows you to operate on in some way (e.g., you can list teams with `read:org` scope, you can publicize your organization membership with `user` scope, etc.). Therefore, this API requires at least `user` or `read:org` scope. OAuth requests with insufficient scope receive a `403 Forbidden` response. + */ + "orgs/list-for-authenticated-user": { + parameters: { + query: { + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + }; + }; + responses: { + /** Response */ + 200: { + headers: {}; + content: { + "application/json": components["schemas"]["organization-simple"][]; + }; + }; + 304: components["responses"]["not_modified"]; + 401: components["responses"]["requires_authentication"]; + 403: components["responses"]["forbidden"]; + }; + }; + /** + * Lists packages owned by the authenticated user within the user's namespace. + * + * To use this endpoint, you must authenticate using an access token with the `packages:read` scope. + * If `package_type` is not `container`, your token must also include the `repo` scope. + */ + "packages/list-packages-for-authenticated-user": { + parameters: { + query: { + /** The type of supported package. Packages in GitHub's Gradle registry have the type `maven`. Docker images pushed to GitHub's Container registry (`ghcr.io`) have the type `container`. You can use the type `docker` to find images that were pushed to GitHub's Docker registry (`docker.pkg.github.com`), even if these have now been migrated to the Container registry. */ + package_type: + | "npm" + | "maven" + | "rubygems" + | "docker" + | "nuget" + | "container"; + /** The selected visibility of the packages. Only `container` package_types currently support `internal` visibility properly. For other ecosystems `internal` is synonymous with `private`. This parameter is optional and only filters an existing result set. */ + visibility?: components["parameters"]["package-visibility"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["package"][]; + }; + }; + }; + }; + /** + * Gets a specific package for a package owned by the authenticated user. + * + * To use this endpoint, you must authenticate using an access token with the `packages:read` scope. + * If `package_type` is not `container`, your token must also include the `repo` scope. + */ + "packages/get-package-for-authenticated-user": { + parameters: { + path: { + /** The type of supported package. Packages in GitHub's Gradle registry have the type `maven`. Docker images pushed to GitHub's Container registry (`ghcr.io`) have the type `container`. You can use the type `docker` to find images that were pushed to GitHub's Docker registry (`docker.pkg.github.com`), even if these have now been migrated to the Container registry. */ + package_type: components["parameters"]["package-type"]; + /** The name of the package. */ + package_name: components["parameters"]["package-name"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["package"]; + }; + }; + }; + }; + /** + * Deletes a package owned by the authenticated user. You cannot delete a public package if any version of the package has more than 5,000 downloads. In this scenario, contact GitHub support for further assistance. + * + * To use this endpoint, you must authenticate using an access token with the `packages:read` and `packages:delete` scopes. + * If `package_type` is not `container`, your token must also include the `repo` scope. + */ + "packages/delete-package-for-authenticated-user": { + parameters: { + path: { + /** The type of supported package. Packages in GitHub's Gradle registry have the type `maven`. Docker images pushed to GitHub's Container registry (`ghcr.io`) have the type `container`. You can use the type `docker` to find images that were pushed to GitHub's Docker registry (`docker.pkg.github.com`), even if these have now been migrated to the Container registry. */ + package_type: components["parameters"]["package-type"]; + /** The name of the package. */ + package_name: components["parameters"]["package-name"]; + }; + }; + responses: { + /** Response */ + 204: never; + 401: components["responses"]["requires_authentication"]; + 403: components["responses"]["forbidden"]; + 404: components["responses"]["not_found"]; + }; + }; + /** + * Restores a package owned by the authenticated user. + * + * You can restore a deleted package under the following conditions: + * - The package was deleted within the last 30 days. + * - The same package namespace and version is still available and not reused for a new package. If the same package namespace is not available, you will not be able to restore your package. In this scenario, to restore the deleted package, you must delete the new package that uses the deleted package's namespace first. + * + * To use this endpoint, you must authenticate using an access token with the `packages:read` and `packages:write` scopes. If `package_type` is not `container`, your token must also include the `repo` scope. + */ + "packages/restore-package-for-authenticated-user": { + parameters: { + path: { + /** The type of supported package. Packages in GitHub's Gradle registry have the type `maven`. Docker images pushed to GitHub's Container registry (`ghcr.io`) have the type `container`. You can use the type `docker` to find images that were pushed to GitHub's Docker registry (`docker.pkg.github.com`), even if these have now been migrated to the Container registry. */ + package_type: components["parameters"]["package-type"]; + /** The name of the package. */ + package_name: components["parameters"]["package-name"]; + }; + query: { + /** package token */ + token?: string; + }; + }; + responses: { + /** Response */ + 204: never; + 401: components["responses"]["requires_authentication"]; + 403: components["responses"]["forbidden"]; + 404: components["responses"]["not_found"]; + }; + }; + /** + * Returns all package versions for a package owned by the authenticated user. + * + * To use this endpoint, you must authenticate using an access token with the `packages:read` scope. + * If `package_type` is not `container`, your token must also include the `repo` scope. + */ + "packages/get-all-package-versions-for-package-owned-by-authenticated-user": { + parameters: { + path: { + /** The type of supported package. Packages in GitHub's Gradle registry have the type `maven`. Docker images pushed to GitHub's Container registry (`ghcr.io`) have the type `container`. You can use the type `docker` to find images that were pushed to GitHub's Docker registry (`docker.pkg.github.com`), even if these have now been migrated to the Container registry. */ + package_type: components["parameters"]["package-type"]; + /** The name of the package. */ + package_name: components["parameters"]["package-name"]; + }; + query: { + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** The state of the package, either active or deleted. */ + state?: "active" | "deleted"; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["package-version"][]; + }; + }; + 401: components["responses"]["requires_authentication"]; + 403: components["responses"]["forbidden"]; + 404: components["responses"]["not_found"]; + }; + }; + /** + * Gets a specific package version for a package owned by the authenticated user. + * + * To use this endpoint, you must authenticate using an access token with the `packages:read` scope. + * If `package_type` is not `container`, your token must also include the `repo` scope. + */ + "packages/get-package-version-for-authenticated-user": { + parameters: { + path: { + /** The type of supported package. Packages in GitHub's Gradle registry have the type `maven`. Docker images pushed to GitHub's Container registry (`ghcr.io`) have the type `container`. You can use the type `docker` to find images that were pushed to GitHub's Docker registry (`docker.pkg.github.com`), even if these have now been migrated to the Container registry. */ + package_type: components["parameters"]["package-type"]; + /** The name of the package. */ + package_name: components["parameters"]["package-name"]; + /** Unique identifier of the package version. */ + package_version_id: components["parameters"]["package-version-id"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["package-version"]; + }; + }; + }; + }; + /** + * Deletes a specific package version for a package owned by the authenticated user. If the package is public and the package version has more than 5,000 downloads, you cannot delete the package version. In this scenario, contact GitHub support for further assistance. + * + * To use this endpoint, you must have admin permissions in the organization and authenticate using an access token with the `packages:read` and `packages:delete` scopes. + * If `package_type` is not `container`, your token must also include the `repo` scope. + */ + "packages/delete-package-version-for-authenticated-user": { + parameters: { + path: { + /** The type of supported package. Packages in GitHub's Gradle registry have the type `maven`. Docker images pushed to GitHub's Container registry (`ghcr.io`) have the type `container`. You can use the type `docker` to find images that were pushed to GitHub's Docker registry (`docker.pkg.github.com`), even if these have now been migrated to the Container registry. */ + package_type: components["parameters"]["package-type"]; + /** The name of the package. */ + package_name: components["parameters"]["package-name"]; + /** Unique identifier of the package version. */ + package_version_id: components["parameters"]["package-version-id"]; + }; + }; + responses: { + /** Response */ + 204: never; + 401: components["responses"]["requires_authentication"]; + 403: components["responses"]["forbidden"]; + 404: components["responses"]["not_found"]; + }; + }; + /** + * Restores a package version owned by the authenticated user. + * + * You can restore a deleted package version under the following conditions: + * - The package was deleted within the last 30 days. + * - The same package namespace and version is still available and not reused for a new package. If the same package namespace is not available, you will not be able to restore your package. In this scenario, to restore the deleted package, you must delete the new package that uses the deleted package's namespace first. + * + * To use this endpoint, you must authenticate using an access token with the `packages:read` and `packages:write` scopes. If `package_type` is not `container`, your token must also include the `repo` scope. + */ + "packages/restore-package-version-for-authenticated-user": { + parameters: { + path: { + /** The type of supported package. Packages in GitHub's Gradle registry have the type `maven`. Docker images pushed to GitHub's Container registry (`ghcr.io`) have the type `container`. You can use the type `docker` to find images that were pushed to GitHub's Docker registry (`docker.pkg.github.com`), even if these have now been migrated to the Container registry. */ + package_type: components["parameters"]["package-type"]; + /** The name of the package. */ + package_name: components["parameters"]["package-name"]; + /** Unique identifier of the package version. */ + package_version_id: components["parameters"]["package-version-id"]; + }; + }; + responses: { + /** Response */ + 204: never; + 401: components["responses"]["requires_authentication"]; + 403: components["responses"]["forbidden"]; + 404: components["responses"]["not_found"]; + }; + }; + /** Creates a user project board. Returns a `410 Gone` status if the user does not have existing classic projects. If you do not have sufficient privileges to perform this action, a `401 Unauthorized` or `410 Gone` status is returned. */ + "projects/create-for-authenticated-user": { + parameters: {}; + responses: { + /** Response */ + 201: { + content: { + "application/json": components["schemas"]["project"]; + }; + }; + 304: components["responses"]["not_modified"]; + 401: components["responses"]["requires_authentication"]; + 403: components["responses"]["forbidden"]; + 422: components["responses"]["validation_failed_simple"]; + }; + requestBody: { + content: { + "application/json": { + /** + * @description Name of the project + * @example Week One Sprint + */ + name: string; + /** + * @description Body of the project + * @example This project represents the sprint of the first week in January + */ + body?: string | null; + }; + }; + }; + }; + /** Lists your publicly visible email address, which you can set with the [Set primary email visibility for the authenticated user](https://docs.github.com/rest/reference/users#set-primary-email-visibility-for-the-authenticated-user) endpoint. This endpoint is accessible with the `user:email` scope. */ + "users/list-public-emails-for-authenticated-user": { + parameters: { + query: { + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + }; + }; + responses: { + /** Response */ + 200: { + headers: {}; + content: { + "application/json": components["schemas"]["email"][]; + }; + }; + 304: components["responses"]["not_modified"]; + 401: components["responses"]["requires_authentication"]; + 403: components["responses"]["forbidden"]; + 404: components["responses"]["not_found"]; + }; + }; + /** + * Lists repositories that the authenticated user has explicit permission (`:read`, `:write`, or `:admin`) to access. + * + * The authenticated user has explicit permission to access repositories they own, repositories where they are a collaborator, and repositories that they can access through an organization membership. + */ + "repos/list-for-authenticated-user": { + parameters: { + query: { + /** Limit results to repositories with the specified visibility. */ + visibility?: "all" | "public" | "private"; + /** + * Comma-separated list of values. Can include: + * \* `owner`: Repositories that are owned by the authenticated user. + * \* `collaborator`: Repositories that the user has been added to as a collaborator. + * \* `organization_member`: Repositories that the user has access to through being a member of an organization. This includes every repository on every team that the user is on. + */ + affiliation?: string; + /** Limit results to repositories of the specified type. Will cause a `422` error if used in the same request as **visibility** or **affiliation**. */ + type?: "all" | "owner" | "public" | "private" | "member"; + /** The property to sort the results by. */ + sort?: "created" | "updated" | "pushed" | "full_name"; + /** The order to sort by. Default: `asc` when using `full_name`, otherwise `desc`. */ + direction?: "asc" | "desc"; + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + /** Only show notifications updated after the given time. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`. */ + since?: components["parameters"]["since"]; + /** Only show notifications updated before the given time. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`. */ + before?: components["parameters"]["before"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["repository"][]; + }; + }; + 304: components["responses"]["not_modified"]; + 401: components["responses"]["requires_authentication"]; + 403: components["responses"]["forbidden"]; + 422: components["responses"]["validation_failed"]; + }; + }; + /** + * Creates a new repository for the authenticated user. + * + * **OAuth scope requirements** + * + * When using [OAuth](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/), authorizations must include: + * + * * `public_repo` scope or `repo` scope to create a public repository. Note: For GitHub AE, use `repo` scope to create an internal repository. + * * `repo` scope to create a private repository. + */ + "repos/create-for-authenticated-user": { + parameters: {}; + responses: { + /** Response */ + 201: { + headers: { + Location?: string; + }; + content: { + "application/json": components["schemas"]["repository"]; + }; + }; + 304: components["responses"]["not_modified"]; + 400: components["responses"]["bad_request"]; + 401: components["responses"]["requires_authentication"]; + 403: components["responses"]["forbidden"]; + 404: components["responses"]["not_found"]; + 422: components["responses"]["validation_failed"]; + }; + requestBody: { + content: { + "application/json": { + /** + * @description The name of the repository. + * @example Team Environment + */ + name: string; + /** @description A short description of the repository. */ + description?: string; + /** @description A URL with more information about the repository. */ + homepage?: string; + /** + * @description Whether the repository is private. + * @default false + */ + private?: boolean; + /** + * @description Whether issues are enabled. + * @default true + * @example true + */ + has_issues?: boolean; + /** + * @description Whether projects are enabled. + * @default true + * @example true + */ + has_projects?: boolean; + /** + * @description Whether the wiki is enabled. + * @default true + * @example true + */ + has_wiki?: boolean; + /** @description The id of the team that will be granted access to this repository. This is only valid when creating a repository in an organization. */ + team_id?: number; + /** + * @description Whether the repository is initialized with a minimal README. + * @default false + */ + auto_init?: boolean; + /** + * @description The desired language or platform to apply to the .gitignore. + * @example Haskell + */ + gitignore_template?: string; + /** + * @description The license keyword of the open source license for this repository. + * @example mit + */ + license_template?: string; + /** + * @description Whether to allow squash merges for pull requests. + * @default true + * @example true + */ + allow_squash_merge?: boolean; + /** + * @description Whether to allow merge commits for pull requests. + * @default true + * @example true + */ + allow_merge_commit?: boolean; + /** + * @description Whether to allow rebase merges for pull requests. + * @default true + * @example true + */ + allow_rebase_merge?: boolean; + /** + * @description Whether to allow Auto-merge to be used on pull requests. + * @default false + * @example false + */ + allow_auto_merge?: boolean; + /** + * @description Whether to delete head branches when pull requests are merged + * @default false + * @example false + */ + delete_branch_on_merge?: boolean; + /** + * @description Whether downloads are enabled. + * @default true + * @example true + */ + has_downloads?: boolean; + /** + * @description Whether this repository acts as a template that can be used to generate new repositories. + * @default false + * @example true + */ + is_template?: boolean; + }; + }; + }; + }; + /** When authenticating as a user, this endpoint will list all currently open repository invitations for that user. */ + "repos/list-invitations-for-authenticated-user": { + parameters: { + query: { + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + }; + }; + responses: { + /** Response */ + 200: { + headers: {}; + content: { + "application/json": components["schemas"]["repository-invitation"][]; + }; + }; + 304: components["responses"]["not_modified"]; + 401: components["responses"]["requires_authentication"]; + 403: components["responses"]["forbidden"]; + 404: components["responses"]["not_found"]; + }; + }; + "repos/decline-invitation-for-authenticated-user": { + parameters: { + path: { + /** The unique identifier of the invitation. */ + invitation_id: components["parameters"]["invitation-id"]; + }; + }; + responses: { + /** Response */ + 204: never; + 304: components["responses"]["not_modified"]; + 403: components["responses"]["forbidden"]; + 404: components["responses"]["not_found"]; + 409: components["responses"]["conflict"]; + }; + }; + "repos/accept-invitation-for-authenticated-user": { + parameters: { + path: { + /** The unique identifier of the invitation. */ + invitation_id: components["parameters"]["invitation-id"]; + }; + }; + responses: { + /** Response */ + 204: never; + 304: components["responses"]["not_modified"]; + 403: components["responses"]["forbidden"]; + 404: components["responses"]["not_found"]; + 409: components["responses"]["conflict"]; + }; + }; + /** + * Lists repositories the authenticated user has starred. + * + * You can also find out _when_ stars were created by passing the following custom [media type](https://docs.github.com/rest/overview/media-types/) via the `Accept` header: + */ + "activity/list-repos-starred-by-authenticated-user": { + parameters: { + query: { + /** The property to sort the results by. `created` means when the repository was starred. `updated` means when the repository was last pushed to. */ + sort?: components["parameters"]["sort"]; + /** The direction to sort the results by. */ + direction?: components["parameters"]["direction"]; + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + }; + }; + responses: { + /** Response */ + 200: { + headers: {}; + content: { + "application/json": components["schemas"]["repository"][]; + "application/vnd.github.v3.star+json": components["schemas"]["starred-repository"][]; + }; + }; + 304: components["responses"]["not_modified"]; + 401: components["responses"]["requires_authentication"]; + 403: components["responses"]["forbidden"]; + }; + }; + "activity/check-repo-is-starred-by-authenticated-user": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + }; + }; + responses: { + /** Response if this repository is starred by you */ + 204: never; + 304: components["responses"]["not_modified"]; + 401: components["responses"]["requires_authentication"]; + 403: components["responses"]["forbidden"]; + /** Not Found if this repository is not starred by you */ + 404: { + content: { + "application/json": components["schemas"]["basic-error"]; + }; + }; + }; + }; + /** Note that you'll need to set `Content-Length` to zero when calling out to this endpoint. For more information, see "[HTTP verbs](https://docs.github.com/rest/overview/resources-in-the-rest-api#http-verbs)." */ + "activity/star-repo-for-authenticated-user": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + }; + }; + responses: { + /** Response */ + 204: never; + 304: components["responses"]["not_modified"]; + 401: components["responses"]["requires_authentication"]; + 403: components["responses"]["forbidden"]; + 404: components["responses"]["not_found"]; + }; + }; + "activity/unstar-repo-for-authenticated-user": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + }; + }; + responses: { + /** Response */ + 204: never; + 304: components["responses"]["not_modified"]; + 401: components["responses"]["requires_authentication"]; + 403: components["responses"]["forbidden"]; + 404: components["responses"]["not_found"]; + }; + }; + /** Lists repositories the authenticated user is watching. */ + "activity/list-watched-repos-for-authenticated-user": { + parameters: { + query: { + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + }; + }; + responses: { + /** Response */ + 200: { + headers: {}; + content: { + "application/json": components["schemas"]["minimal-repository"][]; + }; + }; + 304: components["responses"]["not_modified"]; + 401: components["responses"]["requires_authentication"]; + 403: components["responses"]["forbidden"]; + }; + }; + /** List all of the teams across all of the organizations to which the authenticated user belongs. This method requires `user`, `repo`, or `read:org` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/) when authenticating via [OAuth](https://docs.github.com/apps/building-oauth-apps/). */ + "teams/list-for-authenticated-user": { + parameters: { + query: { + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + }; + }; + responses: { + /** Response */ + 200: { + headers: {}; + content: { + "application/json": components["schemas"]["team-full"][]; + }; + }; + 304: components["responses"]["not_modified"]; + 403: components["responses"]["forbidden"]; + 404: components["responses"]["not_found"]; + }; + }; + /** + * Lists all users, in the order that they signed up on GitHub. This list includes personal user accounts and organization accounts. + * + * Note: Pagination is powered exclusively by the `since` parameter. Use the [Link header](https://docs.github.com/rest/overview/resources-in-the-rest-api#link-header) to get the URL for the next page of users. + */ + "users/list": { + parameters: { + query: { + /** A user ID. Only return users with an ID greater than this ID. */ + since?: components["parameters"]["since-user"]; + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + }; + }; + responses: { + /** Response */ + 200: { + headers: { + Link?: string; + }; + content: { + "application/json": components["schemas"]["simple-user"][]; + }; + }; + 304: components["responses"]["not_modified"]; + }; + }; + /** + * Provides publicly available information about someone with a GitHub account. + * + * GitHub Apps with the `Plan` user permission can use this endpoint to retrieve information about a user's GitHub plan. The GitHub App must be authenticated as a user. See "[Identifying and authorizing users for GitHub Apps](https://docs.github.com/apps/building-github-apps/identifying-and-authorizing-users-for-github-apps/)" for details about authentication. For an example response, see 'Response with GitHub plan information' below" + * + * The `email` key in the following response is the publicly visible email address from your GitHub [profile page](https://github.com/settings/profile). When setting up your profile, you can select a primary email address to be “public” which provides an email entry for this endpoint. If you do not set a public email address for `email`, then it will have a value of `null`. You only see publicly visible email addresses when authenticated with GitHub. For more information, see [Authentication](https://docs.github.com/rest/overview/resources-in-the-rest-api#authentication). + * + * The Emails API enables you to list all of your email addresses, and toggle a primary email to be visible publicly. For more information, see "[Emails API](https://docs.github.com/rest/reference/users#emails)". + */ + "users/get-by-username": { + parameters: { + path: { + /** The handle for the GitHub user account. */ + username: components["parameters"]["username"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": + | components["schemas"]["private-user"] + | components["schemas"]["public-user"]; + }; + }; + 404: components["responses"]["not_found"]; + }; + }; + /** If you are authenticated as the given user, you will see your private events. Otherwise, you'll only see public events. */ + "activity/list-events-for-authenticated-user": { + parameters: { + path: { + /** The handle for the GitHub user account. */ + username: components["parameters"]["username"]; + }; + query: { + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["event"][]; + }; + }; + }; + }; + /** This is the user's organization dashboard. You must be authenticated as the user to view this. */ + "activity/list-org-events-for-authenticated-user": { + parameters: { + path: { + /** The handle for the GitHub user account. */ + username: components["parameters"]["username"]; + /** The organization name. The name is not case sensitive. */ + org: components["parameters"]["org"]; + }; + query: { + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["event"][]; + }; + }; + }; + }; + "activity/list-public-events-for-user": { + parameters: { + path: { + /** The handle for the GitHub user account. */ + username: components["parameters"]["username"]; + }; + query: { + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["event"][]; + }; + }; + }; + }; + /** Lists the people following the specified user. */ + "users/list-followers-for-user": { + parameters: { + path: { + /** The handle for the GitHub user account. */ + username: components["parameters"]["username"]; + }; + query: { + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + }; + }; + responses: { + /** Response */ + 200: { + headers: {}; + content: { + "application/json": components["schemas"]["simple-user"][]; + }; + }; + }; + }; + /** Lists the people who the specified user follows. */ + "users/list-following-for-user": { + parameters: { + path: { + /** The handle for the GitHub user account. */ + username: components["parameters"]["username"]; + }; + query: { + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + }; + }; + responses: { + /** Response */ + 200: { + headers: {}; + content: { + "application/json": components["schemas"]["simple-user"][]; + }; + }; + }; + }; + "users/check-following-for-user": { + parameters: { + path: { + /** The handle for the GitHub user account. */ + username: components["parameters"]["username"]; + target_user: string; + }; + }; + responses: { + /** if the user follows the target user */ + 204: never; + /** if the user does not follow the target user */ + 404: unknown; + }; + }; + /** Lists public gists for the specified user: */ + "gists/list-for-user": { + parameters: { + path: { + /** The handle for the GitHub user account. */ + username: components["parameters"]["username"]; + }; + query: { + /** Only show notifications updated after the given time. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`. */ + since?: components["parameters"]["since"]; + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + }; + }; + responses: { + /** Response */ + 200: { + headers: {}; + content: { + "application/json": components["schemas"]["base-gist"][]; + }; + }; + 422: components["responses"]["validation_failed"]; + }; + }; + /** Lists the GPG keys for a user. This information is accessible by anyone. */ + "users/list-gpg-keys-for-user": { + parameters: { + path: { + /** The handle for the GitHub user account. */ + username: components["parameters"]["username"]; + }; + query: { + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + }; + }; + responses: { + /** Response */ + 200: { + headers: {}; + content: { + "application/json": components["schemas"]["gpg-key"][]; + }; + }; + }; + }; + /** + * Provides hovercard information when authenticated through basic auth or OAuth with the `repo` scope. You can find out more about someone in relation to their pull requests, issues, repositories, and organizations. + * + * The `subject_type` and `subject_id` parameters provide context for the person's hovercard, which returns more information than without the parameters. For example, if you wanted to find out more about `octocat` who owns the `Spoon-Knife` repository via cURL, it would look like this: + * + * ```shell + * curl -u username:token + * https://api.github.com/users/octocat/hovercard?subject_type=repository&subject_id=1300192 + * ``` + */ + "users/get-context-for-user": { + parameters: { + path: { + /** The handle for the GitHub user account. */ + username: components["parameters"]["username"]; + }; + query: { + /** Identifies which additional information you'd like to receive about the person's hovercard. Can be `organization`, `repository`, `issue`, `pull_request`. **Required** when using `subject_id`. */ + subject_type?: "organization" | "repository" | "issue" | "pull_request"; + /** Uses the ID for the `subject_type` you specified. **Required** when using `subject_type`. */ + subject_id?: string; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["hovercard"]; + }; + }; + 404: components["responses"]["not_found"]; + 422: components["responses"]["validation_failed"]; + }; + }; + /** + * Enables an authenticated GitHub App to find the user’s installation information. + * + * You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. + */ + "apps/get-user-installation": { + parameters: { + path: { + /** The handle for the GitHub user account. */ + username: components["parameters"]["username"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["installation"]; + }; + }; + }; + }; + /** Lists the _verified_ public SSH keys for a user. This is accessible by anyone. */ + "users/list-public-keys-for-user": { + parameters: { + path: { + /** The handle for the GitHub user account. */ + username: components["parameters"]["username"]; + }; + query: { + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + }; + }; + responses: { + /** Response */ + 200: { + headers: {}; + content: { + "application/json": components["schemas"]["key-simple"][]; + }; + }; + }; + }; + /** + * List [public organization memberships](https://docs.github.com/articles/publicizing-or-concealing-organization-membership) for the specified user. + * + * This method only lists _public_ memberships, regardless of authentication. If you need to fetch all of the organization memberships (public and private) for the authenticated user, use the [List organizations for the authenticated user](https://docs.github.com/rest/reference/orgs#list-organizations-for-the-authenticated-user) API instead. + */ + "orgs/list-for-user": { + parameters: { + path: { + /** The handle for the GitHub user account. */ + username: components["parameters"]["username"]; + }; + query: { + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + }; + }; + responses: { + /** Response */ + 200: { + headers: {}; + content: { + "application/json": components["schemas"]["organization-simple"][]; + }; + }; + }; + }; + /** + * Lists all packages in a user's namespace for which the requesting user has access. + * + * To use this endpoint, you must authenticate using an access token with the `packages:read` scope. + * If `package_type` is not `container`, your token must also include the `repo` scope. + */ + "packages/list-packages-for-user": { + parameters: { + query: { + /** The type of supported package. Packages in GitHub's Gradle registry have the type `maven`. Docker images pushed to GitHub's Container registry (`ghcr.io`) have the type `container`. You can use the type `docker` to find images that were pushed to GitHub's Docker registry (`docker.pkg.github.com`), even if these have now been migrated to the Container registry. */ + package_type: + | "npm" + | "maven" + | "rubygems" + | "docker" + | "nuget" + | "container"; + /** The selected visibility of the packages. Only `container` package_types currently support `internal` visibility properly. For other ecosystems `internal` is synonymous with `private`. This parameter is optional and only filters an existing result set. */ + visibility?: components["parameters"]["package-visibility"]; + }; + path: { + /** The handle for the GitHub user account. */ + username: components["parameters"]["username"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["package"][]; + }; + }; + 401: components["responses"]["requires_authentication"]; + 403: components["responses"]["forbidden"]; + }; + }; + /** + * Gets a specific package metadata for a public package owned by a user. + * + * To use this endpoint, you must authenticate using an access token with the `packages:read` scope. + * If `package_type` is not `container`, your token must also include the `repo` scope. + */ + "packages/get-package-for-user": { + parameters: { + path: { + /** The type of supported package. Packages in GitHub's Gradle registry have the type `maven`. Docker images pushed to GitHub's Container registry (`ghcr.io`) have the type `container`. You can use the type `docker` to find images that were pushed to GitHub's Docker registry (`docker.pkg.github.com`), even if these have now been migrated to the Container registry. */ + package_type: components["parameters"]["package-type"]; + /** The name of the package. */ + package_name: components["parameters"]["package-name"]; + /** The handle for the GitHub user account. */ + username: components["parameters"]["username"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["package"]; + }; + }; + }; + }; + /** + * Deletes an entire package for a user. You cannot delete a public package if any version of the package has more than 5,000 downloads. In this scenario, contact GitHub support for further assistance. + * + * To use this endpoint, you must authenticate using an access token with the `packages:read` and `packages:delete` scopes. In addition: + * - If `package_type` is not `container`, your token must also include the `repo` scope. + * - If `package_type` is `container`, you must also have admin permissions to the container you want to delete. + */ + "packages/delete-package-for-user": { + parameters: { + path: { + /** The type of supported package. Packages in GitHub's Gradle registry have the type `maven`. Docker images pushed to GitHub's Container registry (`ghcr.io`) have the type `container`. You can use the type `docker` to find images that were pushed to GitHub's Docker registry (`docker.pkg.github.com`), even if these have now been migrated to the Container registry. */ + package_type: components["parameters"]["package-type"]; + /** The name of the package. */ + package_name: components["parameters"]["package-name"]; + /** The handle for the GitHub user account. */ + username: components["parameters"]["username"]; + }; + }; + responses: { + /** Response */ + 204: never; + 401: components["responses"]["requires_authentication"]; + 403: components["responses"]["forbidden"]; + 404: components["responses"]["not_found"]; + }; + }; + /** + * Restores an entire package for a user. + * + * You can restore a deleted package under the following conditions: + * - The package was deleted within the last 30 days. + * - The same package namespace and version is still available and not reused for a new package. If the same package namespace is not available, you will not be able to restore your package. In this scenario, to restore the deleted package, you must delete the new package that uses the deleted package's namespace first. + * + * To use this endpoint, you must authenticate using an access token with the `packages:read` and `packages:write` scopes. In addition: + * - If `package_type` is not `container`, your token must also include the `repo` scope. + * - If `package_type` is `container`, you must also have admin permissions to the container that you want to restore. + */ + "packages/restore-package-for-user": { + parameters: { + path: { + /** The type of supported package. Packages in GitHub's Gradle registry have the type `maven`. Docker images pushed to GitHub's Container registry (`ghcr.io`) have the type `container`. You can use the type `docker` to find images that were pushed to GitHub's Docker registry (`docker.pkg.github.com`), even if these have now been migrated to the Container registry. */ + package_type: components["parameters"]["package-type"]; + /** The name of the package. */ + package_name: components["parameters"]["package-name"]; + /** The handle for the GitHub user account. */ + username: components["parameters"]["username"]; + }; + query: { + /** package token */ + token?: string; + }; + }; + responses: { + /** Response */ + 204: never; + 401: components["responses"]["requires_authentication"]; + 403: components["responses"]["forbidden"]; + 404: components["responses"]["not_found"]; + }; + }; + /** + * Returns all package versions for a public package owned by a specified user. + * + * To use this endpoint, you must authenticate using an access token with the `packages:read` scope. + * If `package_type` is not `container`, your token must also include the `repo` scope. + */ + "packages/get-all-package-versions-for-package-owned-by-user": { + parameters: { + path: { + /** The type of supported package. Packages in GitHub's Gradle registry have the type `maven`. Docker images pushed to GitHub's Container registry (`ghcr.io`) have the type `container`. You can use the type `docker` to find images that were pushed to GitHub's Docker registry (`docker.pkg.github.com`), even if these have now been migrated to the Container registry. */ + package_type: components["parameters"]["package-type"]; + /** The name of the package. */ + package_name: components["parameters"]["package-name"]; + /** The handle for the GitHub user account. */ + username: components["parameters"]["username"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["package-version"][]; + }; + }; + 401: components["responses"]["requires_authentication"]; + 403: components["responses"]["forbidden"]; + 404: components["responses"]["not_found"]; + }; + }; + /** + * Gets a specific package version for a public package owned by a specified user. + * + * At this time, to use this endpoint, you must authenticate using an access token with the `packages:read` scope. + * If `package_type` is not `container`, your token must also include the `repo` scope. + */ + "packages/get-package-version-for-user": { + parameters: { + path: { + /** The type of supported package. Packages in GitHub's Gradle registry have the type `maven`. Docker images pushed to GitHub's Container registry (`ghcr.io`) have the type `container`. You can use the type `docker` to find images that were pushed to GitHub's Docker registry (`docker.pkg.github.com`), even if these have now been migrated to the Container registry. */ + package_type: components["parameters"]["package-type"]; + /** The name of the package. */ + package_name: components["parameters"]["package-name"]; + /** Unique identifier of the package version. */ + package_version_id: components["parameters"]["package-version-id"]; + /** The handle for the GitHub user account. */ + username: components["parameters"]["username"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["package-version"]; + }; + }; + }; + }; + /** + * Deletes a specific package version for a user. If the package is public and the package version has more than 5,000 downloads, you cannot delete the package version. In this scenario, contact GitHub support for further assistance. + * + * To use this endpoint, you must authenticate using an access token with the `packages:read` and `packages:delete` scopes. In addition: + * - If `package_type` is not `container`, your token must also include the `repo` scope. + * - If `package_type` is `container`, you must also have admin permissions to the container you want to delete. + */ + "packages/delete-package-version-for-user": { + parameters: { + path: { + /** The type of supported package. Packages in GitHub's Gradle registry have the type `maven`. Docker images pushed to GitHub's Container registry (`ghcr.io`) have the type `container`. You can use the type `docker` to find images that were pushed to GitHub's Docker registry (`docker.pkg.github.com`), even if these have now been migrated to the Container registry. */ + package_type: components["parameters"]["package-type"]; + /** The name of the package. */ + package_name: components["parameters"]["package-name"]; + /** The handle for the GitHub user account. */ + username: components["parameters"]["username"]; + /** Unique identifier of the package version. */ + package_version_id: components["parameters"]["package-version-id"]; + }; + }; + responses: { + /** Response */ + 204: never; + 401: components["responses"]["requires_authentication"]; + 403: components["responses"]["forbidden"]; + 404: components["responses"]["not_found"]; + }; + }; + /** + * Restores a specific package version for a user. + * + * You can restore a deleted package under the following conditions: + * - The package was deleted within the last 30 days. + * - The same package namespace and version is still available and not reused for a new package. If the same package namespace is not available, you will not be able to restore your package. In this scenario, to restore the deleted package, you must delete the new package that uses the deleted package's namespace first. + * + * To use this endpoint, you must authenticate using an access token with the `packages:read` and `packages:write` scopes. In addition: + * - If `package_type` is not `container`, your token must also include the `repo` scope. + * - If `package_type` is `container`, you must also have admin permissions to the container that you want to restore. + */ + "packages/restore-package-version-for-user": { + parameters: { + path: { + /** The type of supported package. Packages in GitHub's Gradle registry have the type `maven`. Docker images pushed to GitHub's Container registry (`ghcr.io`) have the type `container`. You can use the type `docker` to find images that were pushed to GitHub's Docker registry (`docker.pkg.github.com`), even if these have now been migrated to the Container registry. */ + package_type: components["parameters"]["package-type"]; + /** The name of the package. */ + package_name: components["parameters"]["package-name"]; + /** The handle for the GitHub user account. */ + username: components["parameters"]["username"]; + /** Unique identifier of the package version. */ + package_version_id: components["parameters"]["package-version-id"]; + }; + }; + responses: { + /** Response */ + 204: never; + 401: components["responses"]["requires_authentication"]; + 403: components["responses"]["forbidden"]; + 404: components["responses"]["not_found"]; + }; + }; + "projects/list-for-user": { + parameters: { + path: { + /** The handle for the GitHub user account. */ + username: components["parameters"]["username"]; + }; + query: { + /** Indicates the state of the projects to return. Can be either `open`, `closed`, or `all`. */ + state?: "open" | "closed" | "all"; + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + }; + }; + responses: { + /** Response */ + 200: { + headers: {}; + content: { + "application/json": components["schemas"]["project"][]; + }; + }; + 422: components["responses"]["validation_failed"]; + }; + }; + /** These are events that you've received by watching repos and following users. If you are authenticated as the given user, you will see private events. Otherwise, you'll only see public events. */ + "activity/list-received-events-for-user": { + parameters: { + path: { + /** The handle for the GitHub user account. */ + username: components["parameters"]["username"]; + }; + query: { + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["event"][]; + }; + }; + }; + }; + "activity/list-received-public-events-for-user": { + parameters: { + path: { + /** The handle for the GitHub user account. */ + username: components["parameters"]["username"]; + }; + query: { + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["event"][]; + }; + }; + }; + }; + /** Lists public repositories for the specified user. Note: For GitHub AE, this endpoint will list internal repositories for the specified user. */ + "repos/list-for-user": { + parameters: { + path: { + /** The handle for the GitHub user account. */ + username: components["parameters"]["username"]; + }; + query: { + /** Limit results to repositories of the specified type. */ + type?: "all" | "owner" | "member"; + /** The property to sort the results by. */ + sort?: "created" | "updated" | "pushed" | "full_name"; + /** The order to sort by. Default: `asc` when using `full_name`, otherwise `desc`. */ + direction?: "asc" | "desc"; + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + }; + }; + responses: { + /** Response */ + 200: { + headers: {}; + content: { + "application/json": components["schemas"]["minimal-repository"][]; + }; + }; + }; + }; + /** + * Gets the summary of the free and paid GitHub Actions minutes used. + * + * Paid minutes only apply to workflows in private repositories that use GitHub-hosted runners. Minutes used is listed for each GitHub-hosted runner operating system. Any job re-runs are also included in the usage. The usage returned includes any minute multipliers for macOS and Windows runners, and is rounded up to the nearest whole minute. For more information, see "[Managing billing for GitHub Actions](https://docs.github.com/github/setting-up-and-managing-billing-and-payments-on-github/managing-billing-for-github-actions)". + * + * Access tokens must have the `user` scope. + */ + "billing/get-github-actions-billing-user": { + parameters: { + path: { + /** The handle for the GitHub user account. */ + username: components["parameters"]["username"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["actions-billing-usage"]; + }; + }; + }; + }; + /** + * Gets the free and paid storage used for GitHub Packages in gigabytes. + * + * Paid minutes only apply to packages stored for private repositories. For more information, see "[Managing billing for GitHub Packages](https://docs.github.com/github/setting-up-and-managing-billing-and-payments-on-github/managing-billing-for-github-packages)." + * + * Access tokens must have the `user` scope. + */ + "billing/get-github-packages-billing-user": { + parameters: { + path: { + /** The handle for the GitHub user account. */ + username: components["parameters"]["username"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["packages-billing-usage"]; + }; + }; + }; + }; + /** + * Gets the estimated paid and estimated total storage used for GitHub Actions and GitHub Packages. + * + * Paid minutes only apply to packages stored for private repositories. For more information, see "[Managing billing for GitHub Packages](https://docs.github.com/github/setting-up-and-managing-billing-and-payments-on-github/managing-billing-for-github-packages)." + * + * Access tokens must have the `user` scope. + */ + "billing/get-shared-storage-billing-user": { + parameters: { + path: { + /** The handle for the GitHub user account. */ + username: components["parameters"]["username"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["combined-billing-usage"]; + }; + }; + }; + }; + /** + * Lists repositories a user has starred. + * + * You can also find out _when_ stars were created by passing the following custom [media type](https://docs.github.com/rest/overview/media-types/) via the `Accept` header: + */ + "activity/list-repos-starred-by-user": { + parameters: { + path: { + /** The handle for the GitHub user account. */ + username: components["parameters"]["username"]; + }; + query: { + /** The property to sort the results by. `created` means when the repository was starred. `updated` means when the repository was last pushed to. */ + sort?: components["parameters"]["sort"]; + /** The direction to sort the results by. */ + direction?: components["parameters"]["direction"]; + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + }; + }; + responses: { + /** Response */ + 200: { + headers: {}; + content: { + "application/json": Partial< + components["schemas"]["starred-repository"][] + > & + Partial; + }; + }; + }; + }; + /** Lists repositories a user is watching. */ + "activity/list-repos-watched-by-user": { + parameters: { + path: { + /** The handle for the GitHub user account. */ + username: components["parameters"]["username"]; + }; + query: { + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + }; + }; + responses: { + /** Response */ + 200: { + headers: {}; + content: { + "application/json": components["schemas"]["minimal-repository"][]; + }; + }; + }; + }; + /** Get a random sentence from the Zen of GitHub */ + "meta/get-zen": { + responses: { + /** Response */ + 200: { + content: { + "text/plain": string; + }; + }; + }; + }; + /** + * **Deprecated**: Use `repos.compareCommitsWithBasehead()` (`GET /repos/{owner}/{repo}/compare/{basehead}`) instead. Both `:base` and `:head` must be branch names in `:repo`. To compare branches across other repositories in the same network as `:repo`, use the format `:branch`. + * + * The response from the API is equivalent to running the `git log base..head` command; however, commits are returned in chronological order. Pass the appropriate [media type](https://docs.github.com/rest/overview/media-types/#commits-commit-comparison-and-pull-requests) to fetch diff and patch formats. + * + * The response also includes details on the files that were changed between the two commits. This includes the status of the change (for example, if a file was added, removed, modified, or renamed), and details of the change itself. For example, files with a `renamed` status have a `previous_filename` field showing the previous filename of the file, and files with a `modified` status have a `patch` field showing the changes made to the file. + * + * **Working with large comparisons** + * + * To process a response with a large number of commits, you can use (`per_page` or `page`) to paginate the results. When using paging, the list of changed files is only returned with page 1, but includes all changed files for the entire comparison. For more information on working with pagination, see "[Traversing with pagination](/rest/guides/traversing-with-pagination)." + * + * When calling this API without any paging parameters (`per_page` or `page`), the returned list is limited to 250 commits and the last commit in the list is the most recent of the entire comparison. When a paging parameter is specified, the first commit in the returned list of each page is the earliest. + * + * **Signature verification object** + * + * The response will include a `verification` object that describes the result of verifying the commit's signature. The following fields are included in the `verification` object: + * + * | Name | Type | Description | + * | ---- | ---- | ----------- | + * | `verified` | `boolean` | Indicates whether GitHub considers the signature in this commit to be verified. | + * | `reason` | `string` | The reason for verified value. Possible values and their meanings are enumerated in table below. | + * | `signature` | `string` | The signature that was extracted from the commit. | + * | `payload` | `string` | The value that was signed. | + * + * These are the possible values for `reason` in the `verification` object: + * + * | Value | Description | + * | ----- | ----------- | + * | `expired_key` | The key that made the signature is expired. | + * | `not_signing_key` | The "signing" flag is not among the usage flags in the GPG key that made the signature. | + * | `gpgverify_error` | There was an error communicating with the signature verification service. | + * | `gpgverify_unavailable` | The signature verification service is currently unavailable. | + * | `unsigned` | The object does not include a signature. | + * | `unknown_signature_type` | A non-PGP signature was found in the commit. | + * | `no_user` | No user was associated with the `committer` email address in the commit. | + * | `unverified_email` | The `committer` email address in the commit was associated with a user, but the email address is not verified on her/his account. | + * | `bad_email` | The `committer` email address in the commit is not included in the identities of the PGP key that made the signature. | + * | `unknown_key` | The key that made the signature has not been registered with any user's account. | + * | `malformed_signature` | There was an error parsing the signature. | + * | `invalid` | The signature could not be cryptographically verified using the key whose key-id was found in the signature. | + * | `valid` | None of the above errors applied, so the signature is considered to be verified. | + */ + "repos/compare-commits": { + parameters: { + path: { + /** The account owner of the repository. The name is not case sensitive. */ + owner: components["parameters"]["owner"]; + /** The name of the repository. The name is not case sensitive. */ + repo: components["parameters"]["repo"]; + base: string; + head: string; + }; + query: { + /** The number of results per page (max 100). */ + per_page?: components["parameters"]["per-page"]; + /** Page number of the results to fetch. */ + page?: components["parameters"]["page"]; + }; + }; + responses: { + /** Response */ + 200: { + content: { + "application/json": components["schemas"]["commit-comparison"]; + }; + }; + 404: components["responses"]["not_found"]; + 500: components["responses"]["internal_error"]; + }; + }; +} + +export interface external {} diff --git a/node_modules/@octokit/plugin-paginate-rest/LICENSE b/node_modules/@octokit/plugin-paginate-rest/LICENSE new file mode 100644 index 0000000..57bee5f --- /dev/null +++ b/node_modules/@octokit/plugin-paginate-rest/LICENSE @@ -0,0 +1,7 @@ +MIT License Copyright (c) 2019 Octokit contributors + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice (including the next paragraph) shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/@octokit/plugin-paginate-rest/README.md b/node_modules/@octokit/plugin-paginate-rest/README.md new file mode 100644 index 0000000..1e3c0ba --- /dev/null +++ b/node_modules/@octokit/plugin-paginate-rest/README.md @@ -0,0 +1,269 @@ +# plugin-paginate-rest.js + +> Octokit plugin to paginate REST API endpoint responses + +[![@latest](https://img.shields.io/npm/v/@octokit/plugin-paginate-rest.svg)](https://www.npmjs.com/package/@octokit/plugin-paginate-rest) +[![Build Status](https://github.com/octokit/plugin-paginate-rest.js/workflows/Test/badge.svg)](https://github.com/octokit/plugin-paginate-rest.js/actions?workflow=Test) + +## Usage + + + + + + +
        +Browsers + + +Load `@octokit/plugin-paginate-rest` and [`@octokit/core`](https://github.com/octokit/core.js) (or core-compatible module) directly from [cdn.skypack.dev](https://cdn.skypack.dev) + +```html + +``` + +
        +Node + + +Install with `npm install @octokit/core @octokit/plugin-paginate-rest`. Optionally replace `@octokit/core` with a core-compatible module + +```js +const { Octokit } = require("@octokit/core"); +const { + paginateRest, + composePaginateRest, +} = require("@octokit/plugin-paginate-rest"); +``` + +
        + +```js +const MyOctokit = Octokit.plugin(paginateRest); +const octokit = new MyOctokit({ auth: "secret123" }); + +// See https://developer.github.com/v3/issues/#list-issues-for-a-repository +const issues = await octokit.paginate("GET /repos/{owner}/{repo}/issues", { + owner: "octocat", + repo: "hello-world", + since: "2010-10-01", + per_page: 100, +}); +``` + +If you want to utilize the pagination methods in another plugin, use `composePaginateRest`. + +```js +function myPlugin(octokit, options) { + return { + allStars({owner, repo}) => { + return composePaginateRest( + octokit, + "GET /repos/{owner}/{repo}/stargazers", + {owner, repo } + ) + } + } +} +``` + +## `octokit.paginate()` + +The `paginateRest` plugin adds a new `octokit.paginate()` method which accepts the same parameters as [`octokit.request`](https://github.com/octokit/request.js#request). Only "List ..." endpoints such as [List issues for a repository](https://developer.github.com/v3/issues/#list-issues-for-a-repository) are supporting pagination. Their [response includes a Link header](https://developer.github.com/v3/issues/#response-1). For other endpoints, `octokit.paginate()` behaves the same as `octokit.request()`. + +The `per_page` parameter is usually defaulting to `30`, and can be set to up to `100`, which helps retrieving a big amount of data without hitting the rate limits too soon. + +An optional `mapFunction` can be passed to map each page response to a new value, usually an array with only the data you need. This can help to reduce memory usage, as only the relevant data has to be kept in memory until the pagination is complete. + +```js +const issueTitles = await octokit.paginate( + "GET /repos/{owner}/{repo}/issues", + { + owner: "octocat", + repo: "hello-world", + since: "2010-10-01", + per_page: 100, + }, + (response) => response.data.map((issue) => issue.title) +); +``` + +The `mapFunction` gets a 2nd argument `done` which can be called to end the pagination early. + +```js +const issues = await octokit.paginate( + "GET /repos/{owner}/{repo}/issues", + { + owner: "octocat", + repo: "hello-world", + since: "2010-10-01", + per_page: 100, + }, + (response, done) => { + if (response.data.find((issue) => issue.title.includes("something"))) { + done(); + } + return response.data; + } +); +``` + +Alternatively you can pass a `request` method as first argument. This is great when using in combination with [`@octokit/plugin-rest-endpoint-methods`](https://github.com/octokit/plugin-rest-endpoint-methods.js/): + +```js +const issues = await octokit.paginate(octokit.rest.issues.listForRepo, { + owner: "octocat", + repo: "hello-world", + since: "2010-10-01", + per_page: 100, +}); +``` + +## `octokit.paginate.iterator()` + +If your target runtime environments supports async iterators (such as most modern browsers and Node 10+), you can iterate through each response + +```js +const parameters = { + owner: "octocat", + repo: "hello-world", + since: "2010-10-01", + per_page: 100, +}; +for await (const response of octokit.paginate.iterator( + "GET /repos/{owner}/{repo}/issues", + parameters +)) { + // do whatever you want with each response, break out of the loop, etc. + const issues = response.data; + console.log("%d issues found", issues.length); +} +``` + +Alternatively you can pass a `request` method as first argument. This is great when using in combination with [`@octokit/plugin-rest-endpoint-methods`](https://github.com/octokit/plugin-rest-endpoint-methods.js/): + +```js +const parameters = { + owner: "octocat", + repo: "hello-world", + since: "2010-10-01", + per_page: 100, +}; +for await (const response of octokit.paginate.iterator( + octokit.rest.issues.listForRepo, + parameters +)) { + // do whatever you want with each response, break out of the loop, etc. + const issues = response.data; + console.log("%d issues found", issues.length); +} +``` + +## `composePaginateRest` and `composePaginateRest.iterator` + +The `compose*` methods work just like their `octokit.*` counterparts described above, with the differenct that both methods require an `octokit` instance to be passed as first argument + +## How it works + +`octokit.paginate()` wraps `octokit.request()`. As long as a `rel="next"` link value is present in the response's `Link` header, it sends another request for that URL, and so on. + +Most of GitHub's paginating REST API endpoints return an array, but there are a few exceptions which return an object with a key that includes the items array. For example: + +- [Search repositories](https://developer.github.com/v3/search/#example) (key `items`) +- [List check runs for a specific ref](https://developer.github.com/v3/checks/runs/#response-3) (key: `check_runs`) +- [List check suites for a specific ref](https://developer.github.com/v3/checks/suites/#response-1) (key: `check_suites`) +- [List repositories](https://developer.github.com/v3/apps/installations/#list-repositories) for an installation (key: `repositories`) +- [List installations for a user](https://developer.github.com/v3/apps/installations/#response-1) (key `installations`) + +`octokit.paginate()` is working around these inconsistencies so you don't have to worry about it. + +If a response is lacking the `Link` header, `octokit.paginate()` still resolves with an array, even if the response returns a single object. + +## Types + +The plugin also exposes some types and runtime type guards for TypeScript projects. + + + + + + +
        +Types + + +```typescript +import { + PaginateInterface, + PaginatingEndpoints, +} from "@octokit/plugin-paginate-rest"; +``` + +
        +Guards + + +```typescript +import { isPaginatingEndpoint } from "@octokit/plugin-paginate-rest"; +``` + +
        + +### PaginateInterface + +An `interface` that declares all the overloads of the `.paginate` method. + +### PaginatingEndpoints + +An `interface` which describes all API endpoints supported by the plugin. Some overloads of `.paginate()` method and `composePaginateRest()` function depend on `PaginatingEndpoints`, using the `keyof PaginatingEndpoints` as a type for one of its arguments. + +```typescript +import { Octokit } from "@octokit/core"; +import { + PaginatingEndpoints, + composePaginateRest, +} from "@octokit/plugin-paginate-rest"; + +type DataType = "data" extends keyof T ? T["data"] : unknown; + +async function myPaginatePlugin( + octokit: Octokit, + endpoint: E, + parameters?: PaginatingEndpoints[E]["parameters"] +): Promise> { + return await composePaginateRest(octokit, endpoint, parameters); +} +``` + +### isPaginatingEndpoint + +A type guard, `isPaginatingEndpoint(arg)` returns `true` if `arg` is one of the keys in `PaginatingEndpoints` (is `keyof PaginatingEndpoints`). + +```typescript +import { Octokit } from "@octokit/core"; +import { + isPaginatingEndpoint, + composePaginateRest, +} from "@octokit/plugin-paginate-rest"; + +async function myPlugin(octokit: Octokit, arg: unknown) { + if (isPaginatingEndpoint(arg)) { + return await composePaginateRest(octokit, arg); + } + // ... +} +``` + +## Contributing + +See [CONTRIBUTING.md](CONTRIBUTING.md) + +## License + +[MIT](LICENSE) diff --git a/node_modules/@octokit/plugin-paginate-rest/dist-node/index.js b/node_modules/@octokit/plugin-paginate-rest/dist-node/index.js new file mode 100644 index 0000000..d5fc599 --- /dev/null +++ b/node_modules/@octokit/plugin-paginate-rest/dist-node/index.js @@ -0,0 +1,205 @@ +'use strict'; + +Object.defineProperty(exports, '__esModule', { value: true }); + +const 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 = null != arguments[i] ? arguments[i] : {}; + i % 2 ? ownKeys(Object(source), !0).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; +} + +function _defineProperty(obj, key, value) { + if (key in obj) { + Object.defineProperty(obj, key, { + value: value, + enumerable: true, + configurable: true, + writable: true + }); + } else { + obj[key] = value; + } + + return obj; +} + +/** + * Some “list” response that can be paginated have a different response structure + * + * They have a `total_count` key in the response (search also has `incomplete_results`, + * /installation/repositories also has `repository_selection`), as well as a key with + * the list of the items which name varies from endpoint to endpoint. + * + * Octokit normalizes these responses so that paginated results are always returned following + * the same structure. One challenge is that if the list response has only one page, no Link + * header is provided, so this header alone is not sufficient to check wether a response is + * paginated or not. + * + * We check if a "total_count" key is present in the response data, but also make sure that + * a "url" property is not, as the "Get the combined status for a specific ref" endpoint would + * otherwise match: https://developer.github.com/v3/repos/statuses/#get-the-combined-status-for-a-specific-ref + */ +function normalizePaginatedListResponse(response) { + // endpoints can respond with 204 if repository is empty + if (!response.data) { + return _objectSpread2(_objectSpread2({}, response), {}, { + data: [] + }); + } + + const responseNeedsNormalization = "total_count" in response.data && !("url" in response.data); + if (!responseNeedsNormalization) return response; // keep the additional properties intact as there is currently no other way + // to retrieve the same information. + + 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; +} + +function iterator(octokit, route, parameters) { + const options = typeof route === "function" ? route.endpoint(parameters) : octokit.request.endpoint(route, parameters); + const requestMethod = typeof route === "function" ? route : octokit.request; + const method = options.method; + const headers = options.headers; + let url = options.url; + return { + [Symbol.asyncIterator]: () => ({ + async next() { + if (!url) return { + done: true + }; + + try { + const response = await requestMethod({ + method, + url, + headers + }); + const normalizedResponse = normalizePaginatedListResponse(response); // `response.headers.link` format: + // '; rel="next", ; rel="last"' + // sets `url` to undefined if "next" URL is not present or `link` header is not set + + 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: [] + } + }; + } + } + + }) + }; +} + +function paginate(octokit, route, parameters, mapFn) { + if (typeof parameters === "function") { + mapFn = parameters; + parameters = undefined; + } + + return gather(octokit, [], iterator(octokit, route, parameters)[Symbol.asyncIterator](), mapFn); +} + +function gather(octokit, results, iterator, mapFn) { + return iterator.next().then(result => { + if (result.done) { + return results; + } + + let earlyExit = false; + + function done() { + earlyExit = true; + } + + results = results.concat(mapFn ? mapFn(result.value, done) : result.value.data); + + if (earlyExit) { + return results; + } + + return gather(octokit, results, iterator, mapFn); + }); +} + +const composePaginateRest = Object.assign(paginate, { + iterator +}); + +const 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", "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", "GET /user/migrations/{migration_id}/repositories", "GET /user/orgs", "GET /user/packages", "GET /user/packages/{package_type}/{package_name}/versions", "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; + } +} + +/** + * @param octokit Octokit instance + * @param options Options passed to Octokit constructor + */ + +function paginateRest(octokit) { + return { + paginate: Object.assign(paginate.bind(null, octokit), { + iterator: iterator.bind(null, octokit) + }) + }; +} +paginateRest.VERSION = VERSION; + +exports.composePaginateRest = composePaginateRest; +exports.isPaginatingEndpoint = isPaginatingEndpoint; +exports.paginateRest = paginateRest; +exports.paginatingEndpoints = paginatingEndpoints; +//# sourceMappingURL=index.js.map diff --git a/node_modules/@octokit/plugin-paginate-rest/dist-node/index.js.map b/node_modules/@octokit/plugin-paginate-rest/dist-node/index.js.map new file mode 100644 index 0000000..fb04fff --- /dev/null +++ b/node_modules/@octokit/plugin-paginate-rest/dist-node/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sources":["../dist-src/version.js","../dist-src/normalize-paginated-list-response.js","../dist-src/iterator.js","../dist-src/paginate.js","../dist-src/compose-paginate.js","../dist-src/generated/paginating-endpoints.js","../dist-src/paginating-endpoints.js","../dist-src/index.js"],"sourcesContent":["export const VERSION = \"2.21.3\";\n","/**\n * Some “list” response that can be paginated have a different response structure\n *\n * They have a `total_count` key in the response (search also has `incomplete_results`,\n * /installation/repositories also has `repository_selection`), as well as a key with\n * the list of the items which name varies from endpoint to endpoint.\n *\n * Octokit normalizes these responses so that paginated results are always returned following\n * the same structure. One challenge is that if the list response has only one page, no Link\n * header is provided, so this header alone is not sufficient to check wether a response is\n * paginated or not.\n *\n * We check if a \"total_count\" key is present in the response data, but also make sure that\n * a \"url\" property is not, as the \"Get the combined status for a specific ref\" endpoint would\n * otherwise match: https://developer.github.com/v3/repos/statuses/#get-the-combined-status-for-a-specific-ref\n */\nexport function normalizePaginatedListResponse(response) {\n // endpoints can respond with 204 if repository is empty\n if (!response.data) {\n return {\n ...response,\n data: [],\n };\n }\n const responseNeedsNormalization = \"total_count\" in response.data && !(\"url\" in response.data);\n if (!responseNeedsNormalization)\n return response;\n // keep the additional properties intact as there is currently no other way\n // to retrieve the same information.\n const incompleteResults = response.data.incomplete_results;\n const repositorySelection = response.data.repository_selection;\n const totalCount = response.data.total_count;\n delete response.data.incomplete_results;\n delete response.data.repository_selection;\n delete response.data.total_count;\n const namespaceKey = Object.keys(response.data)[0];\n const data = response.data[namespaceKey];\n response.data = data;\n if (typeof incompleteResults !== \"undefined\") {\n response.data.incomplete_results = incompleteResults;\n }\n if (typeof repositorySelection !== \"undefined\") {\n response.data.repository_selection = repositorySelection;\n }\n response.data.total_count = totalCount;\n return response;\n}\n","import { normalizePaginatedListResponse } from \"./normalize-paginated-list-response\";\nexport function iterator(octokit, route, parameters) {\n const options = typeof route === \"function\"\n ? route.endpoint(parameters)\n : octokit.request.endpoint(route, parameters);\n const requestMethod = typeof route === \"function\" ? route : octokit.request;\n const method = options.method;\n const headers = options.headers;\n let url = options.url;\n return {\n [Symbol.asyncIterator]: () => ({\n async next() {\n if (!url)\n return { done: true };\n try {\n const response = await requestMethod({ method, url, headers });\n const normalizedResponse = normalizePaginatedListResponse(response);\n // `response.headers.link` format:\n // '; rel=\"next\", ; rel=\"last\"'\n // sets `url` to undefined if \"next\" URL is not present or `link` header is not set\n url = ((normalizedResponse.headers.link || \"\").match(/<([^>]+)>;\\s*rel=\"next\"/) || [])[1];\n return { value: normalizedResponse };\n }\n catch (error) {\n if (error.status !== 409)\n throw error;\n url = \"\";\n return {\n value: {\n status: 200,\n headers: {},\n data: [],\n },\n };\n }\n },\n }),\n };\n}\n","import { iterator } from \"./iterator\";\nexport function paginate(octokit, route, parameters, mapFn) {\n if (typeof parameters === \"function\") {\n mapFn = parameters;\n parameters = undefined;\n }\n return gather(octokit, [], iterator(octokit, route, parameters)[Symbol.asyncIterator](), mapFn);\n}\nfunction gather(octokit, results, iterator, mapFn) {\n return iterator.next().then((result) => {\n if (result.done) {\n return results;\n }\n let earlyExit = false;\n function done() {\n earlyExit = true;\n }\n results = results.concat(mapFn ? mapFn(result.value, done) : result.value.data);\n if (earlyExit) {\n return results;\n }\n return gather(octokit, results, iterator, mapFn);\n });\n}\n","import { paginate } from \"./paginate\";\nimport { iterator } from \"./iterator\";\nexport const composePaginateRest = Object.assign(paginate, {\n iterator,\n});\n","export const paginatingEndpoints = [\n \"GET /app/hook/deliveries\",\n \"GET /app/installations\",\n \"GET /applications/grants\",\n \"GET /authorizations\",\n \"GET /enterprises/{enterprise}/actions/permissions/organizations\",\n \"GET /enterprises/{enterprise}/actions/runner-groups\",\n \"GET /enterprises/{enterprise}/actions/runner-groups/{runner_group_id}/organizations\",\n \"GET /enterprises/{enterprise}/actions/runner-groups/{runner_group_id}/runners\",\n \"GET /enterprises/{enterprise}/actions/runners\",\n \"GET /enterprises/{enterprise}/audit-log\",\n \"GET /enterprises/{enterprise}/secret-scanning/alerts\",\n \"GET /enterprises/{enterprise}/settings/billing/advanced-security\",\n \"GET /events\",\n \"GET /gists\",\n \"GET /gists/public\",\n \"GET /gists/starred\",\n \"GET /gists/{gist_id}/comments\",\n \"GET /gists/{gist_id}/commits\",\n \"GET /gists/{gist_id}/forks\",\n \"GET /installation/repositories\",\n \"GET /issues\",\n \"GET /licenses\",\n \"GET /marketplace_listing/plans\",\n \"GET /marketplace_listing/plans/{plan_id}/accounts\",\n \"GET /marketplace_listing/stubbed/plans\",\n \"GET /marketplace_listing/stubbed/plans/{plan_id}/accounts\",\n \"GET /networks/{owner}/{repo}/events\",\n \"GET /notifications\",\n \"GET /organizations\",\n \"GET /orgs/{org}/actions/cache/usage-by-repository\",\n \"GET /orgs/{org}/actions/permissions/repositories\",\n \"GET /orgs/{org}/actions/runner-groups\",\n \"GET /orgs/{org}/actions/runner-groups/{runner_group_id}/repositories\",\n \"GET /orgs/{org}/actions/runner-groups/{runner_group_id}/runners\",\n \"GET /orgs/{org}/actions/runners\",\n \"GET /orgs/{org}/actions/secrets\",\n \"GET /orgs/{org}/actions/secrets/{secret_name}/repositories\",\n \"GET /orgs/{org}/audit-log\",\n \"GET /orgs/{org}/blocks\",\n \"GET /orgs/{org}/code-scanning/alerts\",\n \"GET /orgs/{org}/codespaces\",\n \"GET /orgs/{org}/credential-authorizations\",\n \"GET /orgs/{org}/dependabot/secrets\",\n \"GET /orgs/{org}/dependabot/secrets/{secret_name}/repositories\",\n \"GET /orgs/{org}/events\",\n \"GET /orgs/{org}/external-groups\",\n \"GET /orgs/{org}/failed_invitations\",\n \"GET /orgs/{org}/hooks\",\n \"GET /orgs/{org}/hooks/{hook_id}/deliveries\",\n \"GET /orgs/{org}/installations\",\n \"GET /orgs/{org}/invitations\",\n \"GET /orgs/{org}/invitations/{invitation_id}/teams\",\n \"GET /orgs/{org}/issues\",\n \"GET /orgs/{org}/members\",\n \"GET /orgs/{org}/migrations\",\n \"GET /orgs/{org}/migrations/{migration_id}/repositories\",\n \"GET /orgs/{org}/outside_collaborators\",\n \"GET /orgs/{org}/packages\",\n \"GET /orgs/{org}/packages/{package_type}/{package_name}/versions\",\n \"GET /orgs/{org}/projects\",\n \"GET /orgs/{org}/public_members\",\n \"GET /orgs/{org}/repos\",\n \"GET /orgs/{org}/secret-scanning/alerts\",\n \"GET /orgs/{org}/settings/billing/advanced-security\",\n \"GET /orgs/{org}/team-sync/groups\",\n \"GET /orgs/{org}/teams\",\n \"GET /orgs/{org}/teams/{team_slug}/discussions\",\n \"GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments\",\n \"GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions\",\n \"GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions\",\n \"GET /orgs/{org}/teams/{team_slug}/invitations\",\n \"GET /orgs/{org}/teams/{team_slug}/members\",\n \"GET /orgs/{org}/teams/{team_slug}/projects\",\n \"GET /orgs/{org}/teams/{team_slug}/repos\",\n \"GET /orgs/{org}/teams/{team_slug}/teams\",\n \"GET /projects/columns/{column_id}/cards\",\n \"GET /projects/{project_id}/collaborators\",\n \"GET /projects/{project_id}/columns\",\n \"GET /repos/{owner}/{repo}/actions/artifacts\",\n \"GET /repos/{owner}/{repo}/actions/caches\",\n \"GET /repos/{owner}/{repo}/actions/runners\",\n \"GET /repos/{owner}/{repo}/actions/runs\",\n \"GET /repos/{owner}/{repo}/actions/runs/{run_id}/artifacts\",\n \"GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/jobs\",\n \"GET /repos/{owner}/{repo}/actions/runs/{run_id}/jobs\",\n \"GET /repos/{owner}/{repo}/actions/secrets\",\n \"GET /repos/{owner}/{repo}/actions/workflows\",\n \"GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/runs\",\n \"GET /repos/{owner}/{repo}/assignees\",\n \"GET /repos/{owner}/{repo}/branches\",\n \"GET /repos/{owner}/{repo}/check-runs/{check_run_id}/annotations\",\n \"GET /repos/{owner}/{repo}/check-suites/{check_suite_id}/check-runs\",\n \"GET /repos/{owner}/{repo}/code-scanning/alerts\",\n \"GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances\",\n \"GET /repos/{owner}/{repo}/code-scanning/analyses\",\n \"GET /repos/{owner}/{repo}/codespaces\",\n \"GET /repos/{owner}/{repo}/codespaces/devcontainers\",\n \"GET /repos/{owner}/{repo}/codespaces/secrets\",\n \"GET /repos/{owner}/{repo}/collaborators\",\n \"GET /repos/{owner}/{repo}/comments\",\n \"GET /repos/{owner}/{repo}/comments/{comment_id}/reactions\",\n \"GET /repos/{owner}/{repo}/commits\",\n \"GET /repos/{owner}/{repo}/commits/{commit_sha}/comments\",\n \"GET /repos/{owner}/{repo}/commits/{commit_sha}/pulls\",\n \"GET /repos/{owner}/{repo}/commits/{ref}/check-runs\",\n \"GET /repos/{owner}/{repo}/commits/{ref}/check-suites\",\n \"GET /repos/{owner}/{repo}/commits/{ref}/status\",\n \"GET /repos/{owner}/{repo}/commits/{ref}/statuses\",\n \"GET /repos/{owner}/{repo}/contributors\",\n \"GET /repos/{owner}/{repo}/dependabot/secrets\",\n \"GET /repos/{owner}/{repo}/deployments\",\n \"GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses\",\n \"GET /repos/{owner}/{repo}/environments\",\n \"GET /repos/{owner}/{repo}/events\",\n \"GET /repos/{owner}/{repo}/forks\",\n \"GET /repos/{owner}/{repo}/git/matching-refs/{ref}\",\n \"GET /repos/{owner}/{repo}/hooks\",\n \"GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries\",\n \"GET /repos/{owner}/{repo}/invitations\",\n \"GET /repos/{owner}/{repo}/issues\",\n \"GET /repos/{owner}/{repo}/issues/comments\",\n \"GET /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions\",\n \"GET /repos/{owner}/{repo}/issues/events\",\n \"GET /repos/{owner}/{repo}/issues/{issue_number}/comments\",\n \"GET /repos/{owner}/{repo}/issues/{issue_number}/events\",\n \"GET /repos/{owner}/{repo}/issues/{issue_number}/labels\",\n \"GET /repos/{owner}/{repo}/issues/{issue_number}/reactions\",\n \"GET /repos/{owner}/{repo}/issues/{issue_number}/timeline\",\n \"GET /repos/{owner}/{repo}/keys\",\n \"GET /repos/{owner}/{repo}/labels\",\n \"GET /repos/{owner}/{repo}/milestones\",\n \"GET /repos/{owner}/{repo}/milestones/{milestone_number}/labels\",\n \"GET /repos/{owner}/{repo}/notifications\",\n \"GET /repos/{owner}/{repo}/pages/builds\",\n \"GET /repos/{owner}/{repo}/projects\",\n \"GET /repos/{owner}/{repo}/pulls\",\n \"GET /repos/{owner}/{repo}/pulls/comments\",\n \"GET /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions\",\n \"GET /repos/{owner}/{repo}/pulls/{pull_number}/comments\",\n \"GET /repos/{owner}/{repo}/pulls/{pull_number}/commits\",\n \"GET /repos/{owner}/{repo}/pulls/{pull_number}/files\",\n \"GET /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers\",\n \"GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews\",\n \"GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/comments\",\n \"GET /repos/{owner}/{repo}/releases\",\n \"GET /repos/{owner}/{repo}/releases/{release_id}/assets\",\n \"GET /repos/{owner}/{repo}/releases/{release_id}/reactions\",\n \"GET /repos/{owner}/{repo}/secret-scanning/alerts\",\n \"GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}/locations\",\n \"GET /repos/{owner}/{repo}/stargazers\",\n \"GET /repos/{owner}/{repo}/subscribers\",\n \"GET /repos/{owner}/{repo}/tags\",\n \"GET /repos/{owner}/{repo}/teams\",\n \"GET /repos/{owner}/{repo}/topics\",\n \"GET /repositories\",\n \"GET /repositories/{repository_id}/environments/{environment_name}/secrets\",\n \"GET /search/code\",\n \"GET /search/commits\",\n \"GET /search/issues\",\n \"GET /search/labels\",\n \"GET /search/repositories\",\n \"GET /search/topics\",\n \"GET /search/users\",\n \"GET /teams/{team_id}/discussions\",\n \"GET /teams/{team_id}/discussions/{discussion_number}/comments\",\n \"GET /teams/{team_id}/discussions/{discussion_number}/comments/{comment_number}/reactions\",\n \"GET /teams/{team_id}/discussions/{discussion_number}/reactions\",\n \"GET /teams/{team_id}/invitations\",\n \"GET /teams/{team_id}/members\",\n \"GET /teams/{team_id}/projects\",\n \"GET /teams/{team_id}/repos\",\n \"GET /teams/{team_id}/teams\",\n \"GET /user/blocks\",\n \"GET /user/codespaces\",\n \"GET /user/codespaces/secrets\",\n \"GET /user/emails\",\n \"GET /user/followers\",\n \"GET /user/following\",\n \"GET /user/gpg_keys\",\n \"GET /user/installations\",\n \"GET /user/installations/{installation_id}/repositories\",\n \"GET /user/issues\",\n \"GET /user/keys\",\n \"GET /user/marketplace_purchases\",\n \"GET /user/marketplace_purchases/stubbed\",\n \"GET /user/memberships/orgs\",\n \"GET /user/migrations\",\n \"GET /user/migrations/{migration_id}/repositories\",\n \"GET /user/orgs\",\n \"GET /user/packages\",\n \"GET /user/packages/{package_type}/{package_name}/versions\",\n \"GET /user/public_emails\",\n \"GET /user/repos\",\n \"GET /user/repository_invitations\",\n \"GET /user/starred\",\n \"GET /user/subscriptions\",\n \"GET /user/teams\",\n \"GET /users\",\n \"GET /users/{username}/events\",\n \"GET /users/{username}/events/orgs/{org}\",\n \"GET /users/{username}/events/public\",\n \"GET /users/{username}/followers\",\n \"GET /users/{username}/following\",\n \"GET /users/{username}/gists\",\n \"GET /users/{username}/gpg_keys\",\n \"GET /users/{username}/keys\",\n \"GET /users/{username}/orgs\",\n \"GET /users/{username}/packages\",\n \"GET /users/{username}/projects\",\n \"GET /users/{username}/received_events\",\n \"GET /users/{username}/received_events/public\",\n \"GET /users/{username}/repos\",\n \"GET /users/{username}/starred\",\n \"GET /users/{username}/subscriptions\",\n];\n","import { paginatingEndpoints, } from \"./generated/paginating-endpoints\";\nexport { paginatingEndpoints } from \"./generated/paginating-endpoints\";\nexport function isPaginatingEndpoint(arg) {\n if (typeof arg === \"string\") {\n return paginatingEndpoints.includes(arg);\n }\n else {\n return false;\n }\n}\n","import { VERSION } from \"./version\";\nimport { paginate } from \"./paginate\";\nimport { iterator } from \"./iterator\";\nexport { composePaginateRest } from \"./compose-paginate\";\nexport { isPaginatingEndpoint, paginatingEndpoints, } from \"./paginating-endpoints\";\n/**\n * @param octokit Octokit instance\n * @param options Options passed to Octokit constructor\n */\nexport function paginateRest(octokit) {\n return {\n paginate: Object.assign(paginate.bind(null, octokit), {\n iterator: iterator.bind(null, octokit),\n }),\n };\n}\npaginateRest.VERSION = VERSION;\n"],"names":["VERSION","normalizePaginatedListResponse","response","data","responseNeedsNormalization","incompleteResults","incomplete_results","repositorySelection","repository_selection","totalCount","total_count","namespaceKey","Object","keys","iterator","octokit","route","parameters","options","endpoint","request","requestMethod","method","headers","url","Symbol","asyncIterator","next","done","normalizedResponse","link","match","value","error","status","paginate","mapFn","undefined","gather","results","then","result","earlyExit","concat","composePaginateRest","assign","paginatingEndpoints","isPaginatingEndpoint","arg","includes","paginateRest","bind"],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@octokit/plugin-paginate-rest/dist-src/compose-paginate.js b/node_modules/@octokit/plugin-paginate-rest/dist-src/compose-paginate.js new file mode 100644 index 0000000..09ca53f --- /dev/null +++ b/node_modules/@octokit/plugin-paginate-rest/dist-src/compose-paginate.js @@ -0,0 +1,5 @@ +import { paginate } from "./paginate"; +import { iterator } from "./iterator"; +export const composePaginateRest = Object.assign(paginate, { + iterator, +}); diff --git a/node_modules/@octokit/plugin-paginate-rest/dist-src/generated/paginating-endpoints.js b/node_modules/@octokit/plugin-paginate-rest/dist-src/generated/paginating-endpoints.js new file mode 100644 index 0000000..863af10 --- /dev/null +++ b/node_modules/@octokit/plugin-paginate-rest/dist-src/generated/paginating-endpoints.js @@ -0,0 +1,216 @@ +export const 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", + "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", + "GET /user/migrations/{migration_id}/repositories", + "GET /user/orgs", + "GET /user/packages", + "GET /user/packages/{package_type}/{package_name}/versions", + "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", +]; diff --git a/node_modules/@octokit/plugin-paginate-rest/dist-src/index.js b/node_modules/@octokit/plugin-paginate-rest/dist-src/index.js new file mode 100644 index 0000000..5ba74de --- /dev/null +++ b/node_modules/@octokit/plugin-paginate-rest/dist-src/index.js @@ -0,0 +1,17 @@ +import { VERSION } from "./version"; +import { paginate } from "./paginate"; +import { iterator } from "./iterator"; +export { composePaginateRest } from "./compose-paginate"; +export { isPaginatingEndpoint, paginatingEndpoints, } from "./paginating-endpoints"; +/** + * @param octokit Octokit instance + * @param options Options passed to Octokit constructor + */ +export function paginateRest(octokit) { + return { + paginate: Object.assign(paginate.bind(null, octokit), { + iterator: iterator.bind(null, octokit), + }), + }; +} +paginateRest.VERSION = VERSION; diff --git a/node_modules/@octokit/plugin-paginate-rest/dist-src/iterator.js b/node_modules/@octokit/plugin-paginate-rest/dist-src/iterator.js new file mode 100644 index 0000000..7f9ee64 --- /dev/null +++ b/node_modules/@octokit/plugin-paginate-rest/dist-src/iterator.js @@ -0,0 +1,39 @@ +import { normalizePaginatedListResponse } from "./normalize-paginated-list-response"; +export function iterator(octokit, route, parameters) { + const options = typeof route === "function" + ? route.endpoint(parameters) + : octokit.request.endpoint(route, parameters); + const requestMethod = typeof route === "function" ? route : octokit.request; + const method = options.method; + const headers = options.headers; + let url = options.url; + return { + [Symbol.asyncIterator]: () => ({ + async next() { + if (!url) + return { done: true }; + try { + const response = await requestMethod({ method, url, headers }); + const normalizedResponse = normalizePaginatedListResponse(response); + // `response.headers.link` format: + // '; rel="next", ; rel="last"' + // sets `url` to undefined if "next" URL is not present or `link` header is not set + 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: [], + }, + }; + } + }, + }), + }; +} diff --git a/node_modules/@octokit/plugin-paginate-rest/dist-src/normalize-paginated-list-response.js b/node_modules/@octokit/plugin-paginate-rest/dist-src/normalize-paginated-list-response.js new file mode 100644 index 0000000..a87028b --- /dev/null +++ b/node_modules/@octokit/plugin-paginate-rest/dist-src/normalize-paginated-list-response.js @@ -0,0 +1,47 @@ +/** + * Some “list” response that can be paginated have a different response structure + * + * They have a `total_count` key in the response (search also has `incomplete_results`, + * /installation/repositories also has `repository_selection`), as well as a key with + * the list of the items which name varies from endpoint to endpoint. + * + * Octokit normalizes these responses so that paginated results are always returned following + * the same structure. One challenge is that if the list response has only one page, no Link + * header is provided, so this header alone is not sufficient to check wether a response is + * paginated or not. + * + * We check if a "total_count" key is present in the response data, but also make sure that + * a "url" property is not, as the "Get the combined status for a specific ref" endpoint would + * otherwise match: https://developer.github.com/v3/repos/statuses/#get-the-combined-status-for-a-specific-ref + */ +export function normalizePaginatedListResponse(response) { + // endpoints can respond with 204 if repository is empty + if (!response.data) { + return { + ...response, + data: [], + }; + } + const responseNeedsNormalization = "total_count" in response.data && !("url" in response.data); + if (!responseNeedsNormalization) + return response; + // keep the additional properties intact as there is currently no other way + // to retrieve the same information. + 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; +} diff --git a/node_modules/@octokit/plugin-paginate-rest/dist-src/paginate.js b/node_modules/@octokit/plugin-paginate-rest/dist-src/paginate.js new file mode 100644 index 0000000..8d18a60 --- /dev/null +++ b/node_modules/@octokit/plugin-paginate-rest/dist-src/paginate.js @@ -0,0 +1,24 @@ +import { iterator } from "./iterator"; +export function paginate(octokit, route, parameters, mapFn) { + if (typeof parameters === "function") { + mapFn = parameters; + parameters = undefined; + } + return gather(octokit, [], iterator(octokit, route, parameters)[Symbol.asyncIterator](), mapFn); +} +function gather(octokit, results, iterator, mapFn) { + return iterator.next().then((result) => { + if (result.done) { + return results; + } + let earlyExit = false; + function done() { + earlyExit = true; + } + results = results.concat(mapFn ? mapFn(result.value, done) : result.value.data); + if (earlyExit) { + return results; + } + return gather(octokit, results, iterator, mapFn); + }); +} diff --git a/node_modules/@octokit/plugin-paginate-rest/dist-src/paginating-endpoints.js b/node_modules/@octokit/plugin-paginate-rest/dist-src/paginating-endpoints.js new file mode 100644 index 0000000..1e52899 --- /dev/null +++ b/node_modules/@octokit/plugin-paginate-rest/dist-src/paginating-endpoints.js @@ -0,0 +1,10 @@ +import { paginatingEndpoints, } from "./generated/paginating-endpoints"; +export { paginatingEndpoints } from "./generated/paginating-endpoints"; +export function isPaginatingEndpoint(arg) { + if (typeof arg === "string") { + return paginatingEndpoints.includes(arg); + } + else { + return false; + } +} diff --git a/node_modules/@octokit/plugin-paginate-rest/dist-src/types.js b/node_modules/@octokit/plugin-paginate-rest/dist-src/types.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/node_modules/@octokit/plugin-paginate-rest/dist-src/types.js @@ -0,0 +1 @@ +export {}; diff --git a/node_modules/@octokit/plugin-paginate-rest/dist-src/version.js b/node_modules/@octokit/plugin-paginate-rest/dist-src/version.js new file mode 100644 index 0000000..af4553e --- /dev/null +++ b/node_modules/@octokit/plugin-paginate-rest/dist-src/version.js @@ -0,0 +1 @@ +export const VERSION = "2.21.3"; diff --git a/node_modules/@octokit/plugin-paginate-rest/dist-types/compose-paginate.d.ts b/node_modules/@octokit/plugin-paginate-rest/dist-types/compose-paginate.d.ts new file mode 100644 index 0000000..38a7432 --- /dev/null +++ b/node_modules/@octokit/plugin-paginate-rest/dist-types/compose-paginate.d.ts @@ -0,0 +1,2 @@ +import { ComposePaginateInterface } from "./types"; +export declare const composePaginateRest: ComposePaginateInterface; diff --git a/node_modules/@octokit/plugin-paginate-rest/dist-types/generated/paginating-endpoints.d.ts b/node_modules/@octokit/plugin-paginate-rest/dist-types/generated/paginating-endpoints.d.ts new file mode 100644 index 0000000..4882d94 --- /dev/null +++ b/node_modules/@octokit/plugin-paginate-rest/dist-types/generated/paginating-endpoints.d.ts @@ -0,0 +1,1612 @@ +import { Endpoints } from "@octokit/types"; +export interface PaginatingEndpoints { + /** + * @see https://docs.github.com/rest/reference/apps#list-deliveries-for-an-app-webhook + */ + "GET /app/hook/deliveries": { + parameters: Endpoints["GET /app/hook/deliveries"]["parameters"]; + response: Endpoints["GET /app/hook/deliveries"]["response"]; + }; + /** + * @see https://docs.github.com/rest/reference/apps#list-installations-for-the-authenticated-app + */ + "GET /app/installations": { + parameters: Endpoints["GET /app/installations"]["parameters"]; + response: Endpoints["GET /app/installations"]["response"]; + }; + /** + * @see https://docs.github.com/rest/reference/oauth-authorizations#list-your-grants + */ + "GET /applications/grants": { + parameters: Endpoints["GET /applications/grants"]["parameters"]; + response: Endpoints["GET /applications/grants"]["response"]; + }; + /** + * @see https://docs.github.com/rest/reference/oauth-authorizations#list-your-authorizations + */ + "GET /authorizations": { + parameters: Endpoints["GET /authorizations"]["parameters"]; + response: Endpoints["GET /authorizations"]["response"]; + }; + /** + * @see https://docs.github.com/rest/reference/actions#list-selected-organizations-enabled-for-github-actions-in-an-enterprise + */ + "GET /enterprises/{enterprise}/actions/permissions/organizations": { + parameters: Endpoints["GET /enterprises/{enterprise}/actions/permissions/organizations"]["parameters"]; + response: Endpoints["GET /enterprises/{enterprise}/actions/permissions/organizations"]["response"] & { + data: Endpoints["GET /enterprises/{enterprise}/actions/permissions/organizations"]["response"]["data"]["organizations"]; + }; + }; + /** + * @see https://docs.github.com/rest/reference/actions#list-self-hosted-runner-groups-for-an-enterprise + */ + "GET /enterprises/{enterprise}/actions/runner-groups": { + parameters: Endpoints["GET /enterprises/{enterprise}/actions/runner-groups"]["parameters"]; + response: Endpoints["GET /enterprises/{enterprise}/actions/runner-groups"]["response"] & { + data: Endpoints["GET /enterprises/{enterprise}/actions/runner-groups"]["response"]["data"]["runner_groups"]; + }; + }; + /** + * @see https://docs.github.com/rest/reference/actions#list-organization-access-to-a-self-hosted-runner-group-in-a-enterprise + */ + "GET /enterprises/{enterprise}/actions/runner-groups/{runner_group_id}/organizations": { + parameters: Endpoints["GET /enterprises/{enterprise}/actions/runner-groups/{runner_group_id}/organizations"]["parameters"]; + response: Endpoints["GET /enterprises/{enterprise}/actions/runner-groups/{runner_group_id}/organizations"]["response"] & { + data: Endpoints["GET /enterprises/{enterprise}/actions/runner-groups/{runner_group_id}/organizations"]["response"]["data"]["organizations"]; + }; + }; + /** + * @see https://docs.github.com/rest/reference/actions#list-self-hosted-runners-in-a-group-for-an-enterprise + */ + "GET /enterprises/{enterprise}/actions/runner-groups/{runner_group_id}/runners": { + parameters: Endpoints["GET /enterprises/{enterprise}/actions/runner-groups/{runner_group_id}/runners"]["parameters"]; + response: Endpoints["GET /enterprises/{enterprise}/actions/runner-groups/{runner_group_id}/runners"]["response"] & { + data: Endpoints["GET /enterprises/{enterprise}/actions/runner-groups/{runner_group_id}/runners"]["response"]["data"]["runners"]; + }; + }; + /** + * @see https://docs.github.com/rest/reference/actions#list-self-hosted-runners-for-an-enterprise + */ + "GET /enterprises/{enterprise}/actions/runners": { + parameters: Endpoints["GET /enterprises/{enterprise}/actions/runners"]["parameters"]; + response: Endpoints["GET /enterprises/{enterprise}/actions/runners"]["response"] & { + data: Endpoints["GET /enterprises/{enterprise}/actions/runners"]["response"]["data"]["runners"]; + }; + }; + /** + * @see https://docs.github.com/rest/reference/enterprise-admin#get-the-audit-log-for-an-enterprise + */ + "GET /enterprises/{enterprise}/audit-log": { + parameters: Endpoints["GET /enterprises/{enterprise}/audit-log"]["parameters"]; + response: Endpoints["GET /enterprises/{enterprise}/audit-log"]["response"]; + }; + /** + * @see https://docs.github.com/rest/reference/secret-scanning#list-secret-scanning-alerts-for-an-enterprise + */ + "GET /enterprises/{enterprise}/secret-scanning/alerts": { + parameters: Endpoints["GET /enterprises/{enterprise}/secret-scanning/alerts"]["parameters"]; + response: Endpoints["GET /enterprises/{enterprise}/secret-scanning/alerts"]["response"]; + }; + /** + * @see https://docs.github.com/rest/reference/billing#export-advanced-security-active-committers-data-for-enterprise + */ + "GET /enterprises/{enterprise}/settings/billing/advanced-security": { + parameters: Endpoints["GET /enterprises/{enterprise}/settings/billing/advanced-security"]["parameters"]; + response: Endpoints["GET /enterprises/{enterprise}/settings/billing/advanced-security"]["response"] & { + data: Endpoints["GET /enterprises/{enterprise}/settings/billing/advanced-security"]["response"]["data"]["repositories"]; + }; + }; + /** + * @see https://docs.github.com/rest/reference/activity#list-public-events + */ + "GET /events": { + parameters: Endpoints["GET /events"]["parameters"]; + response: Endpoints["GET /events"]["response"]; + }; + /** + * @see https://docs.github.com/rest/reference/gists#list-gists-for-the-authenticated-user + */ + "GET /gists": { + parameters: Endpoints["GET /gists"]["parameters"]; + response: Endpoints["GET /gists"]["response"]; + }; + /** + * @see https://docs.github.com/rest/reference/gists#list-public-gists + */ + "GET /gists/public": { + parameters: Endpoints["GET /gists/public"]["parameters"]; + response: Endpoints["GET /gists/public"]["response"]; + }; + /** + * @see https://docs.github.com/rest/reference/gists#list-starred-gists + */ + "GET /gists/starred": { + parameters: Endpoints["GET /gists/starred"]["parameters"]; + response: Endpoints["GET /gists/starred"]["response"]; + }; + /** + * @see https://docs.github.com/rest/reference/gists#list-gist-comments + */ + "GET /gists/{gist_id}/comments": { + parameters: Endpoints["GET /gists/{gist_id}/comments"]["parameters"]; + response: Endpoints["GET /gists/{gist_id}/comments"]["response"]; + }; + /** + * @see https://docs.github.com/rest/reference/gists#list-gist-commits + */ + "GET /gists/{gist_id}/commits": { + parameters: Endpoints["GET /gists/{gist_id}/commits"]["parameters"]; + response: Endpoints["GET /gists/{gist_id}/commits"]["response"]; + }; + /** + * @see https://docs.github.com/rest/reference/gists#list-gist-forks + */ + "GET /gists/{gist_id}/forks": { + parameters: Endpoints["GET /gists/{gist_id}/forks"]["parameters"]; + response: Endpoints["GET /gists/{gist_id}/forks"]["response"]; + }; + /** + * @see https://docs.github.com/rest/reference/apps#list-repositories-accessible-to-the-app-installation + */ + "GET /installation/repositories": { + parameters: Endpoints["GET /installation/repositories"]["parameters"]; + response: Endpoints["GET /installation/repositories"]["response"] & { + data: Endpoints["GET /installation/repositories"]["response"]["data"]["repositories"]; + }; + }; + /** + * @see https://docs.github.com/rest/reference/issues#list-issues-assigned-to-the-authenticated-user + */ + "GET /issues": { + parameters: Endpoints["GET /issues"]["parameters"]; + response: Endpoints["GET /issues"]["response"]; + }; + /** + * @see https://docs.github.com/rest/reference/licenses#get-all-commonly-used-licenses + */ + "GET /licenses": { + parameters: Endpoints["GET /licenses"]["parameters"]; + response: Endpoints["GET /licenses"]["response"]; + }; + /** + * @see https://docs.github.com/rest/reference/apps#list-plans + */ + "GET /marketplace_listing/plans": { + parameters: Endpoints["GET /marketplace_listing/plans"]["parameters"]; + response: Endpoints["GET /marketplace_listing/plans"]["response"]; + }; + /** + * @see https://docs.github.com/rest/reference/apps#list-accounts-for-a-plan + */ + "GET /marketplace_listing/plans/{plan_id}/accounts": { + parameters: Endpoints["GET /marketplace_listing/plans/{plan_id}/accounts"]["parameters"]; + response: Endpoints["GET /marketplace_listing/plans/{plan_id}/accounts"]["response"]; + }; + /** + * @see https://docs.github.com/rest/reference/apps#list-plans-stubbed + */ + "GET /marketplace_listing/stubbed/plans": { + parameters: Endpoints["GET /marketplace_listing/stubbed/plans"]["parameters"]; + response: Endpoints["GET /marketplace_listing/stubbed/plans"]["response"]; + }; + /** + * @see https://docs.github.com/rest/reference/apps#list-accounts-for-a-plan-stubbed + */ + "GET /marketplace_listing/stubbed/plans/{plan_id}/accounts": { + parameters: Endpoints["GET /marketplace_listing/stubbed/plans/{plan_id}/accounts"]["parameters"]; + response: Endpoints["GET /marketplace_listing/stubbed/plans/{plan_id}/accounts"]["response"]; + }; + /** + * @see https://docs.github.com/rest/reference/activity#list-public-events-for-a-network-of-repositories + */ + "GET /networks/{owner}/{repo}/events": { + parameters: Endpoints["GET /networks/{owner}/{repo}/events"]["parameters"]; + response: Endpoints["GET /networks/{owner}/{repo}/events"]["response"]; + }; + /** + * @see https://docs.github.com/rest/reference/activity#list-notifications-for-the-authenticated-user + */ + "GET /notifications": { + parameters: Endpoints["GET /notifications"]["parameters"]; + response: Endpoints["GET /notifications"]["response"]; + }; + /** + * @see https://docs.github.com/rest/reference/orgs#list-organizations + */ + "GET /organizations": { + parameters: Endpoints["GET /organizations"]["parameters"]; + response: Endpoints["GET /organizations"]["response"]; + }; + /** + * @see https://docs.github.com/rest/reference/actions#list-repositories-with-github-actions-cache-usage-for-an-organization + */ + "GET /orgs/{org}/actions/cache/usage-by-repository": { + parameters: Endpoints["GET /orgs/{org}/actions/cache/usage-by-repository"]["parameters"]; + response: Endpoints["GET /orgs/{org}/actions/cache/usage-by-repository"]["response"] & { + data: Endpoints["GET /orgs/{org}/actions/cache/usage-by-repository"]["response"]["data"]["repository_cache_usages"]; + }; + }; + /** + * @see https://docs.github.com/rest/reference/actions#list-selected-repositories-enabled-for-github-actions-in-an-organization + */ + "GET /orgs/{org}/actions/permissions/repositories": { + parameters: Endpoints["GET /orgs/{org}/actions/permissions/repositories"]["parameters"]; + response: Endpoints["GET /orgs/{org}/actions/permissions/repositories"]["response"] & { + data: Endpoints["GET /orgs/{org}/actions/permissions/repositories"]["response"]["data"]["repositories"]; + }; + }; + /** + * @see https://docs.github.com/rest/reference/actions#list-self-hosted-runner-groups-for-an-organization + */ + "GET /orgs/{org}/actions/runner-groups": { + parameters: Endpoints["GET /orgs/{org}/actions/runner-groups"]["parameters"]; + response: Endpoints["GET /orgs/{org}/actions/runner-groups"]["response"] & { + data: Endpoints["GET /orgs/{org}/actions/runner-groups"]["response"]["data"]["runner_groups"]; + }; + }; + /** + * @see https://docs.github.com/rest/reference/actions#list-repository-access-to-a-self-hosted-runner-group-in-an-organization + */ + "GET /orgs/{org}/actions/runner-groups/{runner_group_id}/repositories": { + parameters: Endpoints["GET /orgs/{org}/actions/runner-groups/{runner_group_id}/repositories"]["parameters"]; + response: Endpoints["GET /orgs/{org}/actions/runner-groups/{runner_group_id}/repositories"]["response"] & { + data: Endpoints["GET /orgs/{org}/actions/runner-groups/{runner_group_id}/repositories"]["response"]["data"]["repositories"]; + }; + }; + /** + * @see https://docs.github.com/rest/reference/actions#list-self-hosted-runners-in-a-group-for-an-organization + */ + "GET /orgs/{org}/actions/runner-groups/{runner_group_id}/runners": { + parameters: Endpoints["GET /orgs/{org}/actions/runner-groups/{runner_group_id}/runners"]["parameters"]; + response: Endpoints["GET /orgs/{org}/actions/runner-groups/{runner_group_id}/runners"]["response"] & { + data: Endpoints["GET /orgs/{org}/actions/runner-groups/{runner_group_id}/runners"]["response"]["data"]["runners"]; + }; + }; + /** + * @see https://docs.github.com/rest/reference/actions#list-self-hosted-runners-for-an-organization + */ + "GET /orgs/{org}/actions/runners": { + parameters: Endpoints["GET /orgs/{org}/actions/runners"]["parameters"]; + response: Endpoints["GET /orgs/{org}/actions/runners"]["response"] & { + data: Endpoints["GET /orgs/{org}/actions/runners"]["response"]["data"]["runners"]; + }; + }; + /** + * @see https://docs.github.com/rest/reference/actions#list-organization-secrets + */ + "GET /orgs/{org}/actions/secrets": { + parameters: Endpoints["GET /orgs/{org}/actions/secrets"]["parameters"]; + response: Endpoints["GET /orgs/{org}/actions/secrets"]["response"] & { + data: Endpoints["GET /orgs/{org}/actions/secrets"]["response"]["data"]["secrets"]; + }; + }; + /** + * @see https://docs.github.com/rest/reference/actions#list-selected-repositories-for-an-organization-secret + */ + "GET /orgs/{org}/actions/secrets/{secret_name}/repositories": { + parameters: Endpoints["GET /orgs/{org}/actions/secrets/{secret_name}/repositories"]["parameters"]; + response: Endpoints["GET /orgs/{org}/actions/secrets/{secret_name}/repositories"]["response"] & { + data: Endpoints["GET /orgs/{org}/actions/secrets/{secret_name}/repositories"]["response"]["data"]["repositories"]; + }; + }; + /** + * @see https://docs.github.com/rest/reference/orgs#get-audit-log + */ + "GET /orgs/{org}/audit-log": { + parameters: Endpoints["GET /orgs/{org}/audit-log"]["parameters"]; + response: Endpoints["GET /orgs/{org}/audit-log"]["response"]; + }; + /** + * @see https://docs.github.com/rest/reference/orgs#list-users-blocked-by-an-organization + */ + "GET /orgs/{org}/blocks": { + parameters: Endpoints["GET /orgs/{org}/blocks"]["parameters"]; + response: Endpoints["GET /orgs/{org}/blocks"]["response"]; + }; + /** + * @see https://docs.github.com/rest/reference/code-scanning#list-code-scanning-alerts-by-organization + */ + "GET /orgs/{org}/code-scanning/alerts": { + parameters: Endpoints["GET /orgs/{org}/code-scanning/alerts"]["parameters"]; + response: Endpoints["GET /orgs/{org}/code-scanning/alerts"]["response"]; + }; + /** + * @see https://docs.github.com/rest/reference/codespaces#list-in-organization + */ + "GET /orgs/{org}/codespaces": { + parameters: Endpoints["GET /orgs/{org}/codespaces"]["parameters"]; + response: Endpoints["GET /orgs/{org}/codespaces"]["response"] & { + data: Endpoints["GET /orgs/{org}/codespaces"]["response"]["data"]["codespaces"]; + }; + }; + /** + * @see https://docs.github.com/rest/reference/orgs#list-saml-sso-authorizations-for-an-organization + */ + "GET /orgs/{org}/credential-authorizations": { + parameters: Endpoints["GET /orgs/{org}/credential-authorizations"]["parameters"]; + response: Endpoints["GET /orgs/{org}/credential-authorizations"]["response"]; + }; + /** + * @see https://docs.github.com/rest/reference/dependabot#list-organization-secrets + */ + "GET /orgs/{org}/dependabot/secrets": { + parameters: Endpoints["GET /orgs/{org}/dependabot/secrets"]["parameters"]; + response: Endpoints["GET /orgs/{org}/dependabot/secrets"]["response"] & { + data: Endpoints["GET /orgs/{org}/dependabot/secrets"]["response"]["data"]["secrets"]; + }; + }; + /** + * @see https://docs.github.com/rest/reference/dependabot#list-selected-repositories-for-an-organization-secret + */ + "GET /orgs/{org}/dependabot/secrets/{secret_name}/repositories": { + parameters: Endpoints["GET /orgs/{org}/dependabot/secrets/{secret_name}/repositories"]["parameters"]; + response: Endpoints["GET /orgs/{org}/dependabot/secrets/{secret_name}/repositories"]["response"] & { + data: Endpoints["GET /orgs/{org}/dependabot/secrets/{secret_name}/repositories"]["response"]["data"]["repositories"]; + }; + }; + /** + * @see https://docs.github.com/rest/reference/activity#list-public-organization-events + */ + "GET /orgs/{org}/events": { + parameters: Endpoints["GET /orgs/{org}/events"]["parameters"]; + response: Endpoints["GET /orgs/{org}/events"]["response"]; + }; + /** + * @see https://docs.github.com/rest/reference/teams#list-external-idp-groups-for-an-organization + */ + "GET /orgs/{org}/external-groups": { + parameters: Endpoints["GET /orgs/{org}/external-groups"]["parameters"]; + response: Endpoints["GET /orgs/{org}/external-groups"]["response"] & { + data: Endpoints["GET /orgs/{org}/external-groups"]["response"]["data"]["groups"]; + }; + }; + /** + * @see https://docs.github.com/rest/reference/orgs#list-failed-organization-invitations + */ + "GET /orgs/{org}/failed_invitations": { + parameters: Endpoints["GET /orgs/{org}/failed_invitations"]["parameters"]; + response: Endpoints["GET /orgs/{org}/failed_invitations"]["response"]; + }; + /** + * @see https://docs.github.com/rest/reference/orgs#list-organization-webhooks + */ + "GET /orgs/{org}/hooks": { + parameters: Endpoints["GET /orgs/{org}/hooks"]["parameters"]; + response: Endpoints["GET /orgs/{org}/hooks"]["response"]; + }; + /** + * @see https://docs.github.com/rest/reference/orgs#list-deliveries-for-an-organization-webhook + */ + "GET /orgs/{org}/hooks/{hook_id}/deliveries": { + parameters: Endpoints["GET /orgs/{org}/hooks/{hook_id}/deliveries"]["parameters"]; + response: Endpoints["GET /orgs/{org}/hooks/{hook_id}/deliveries"]["response"]; + }; + /** + * @see https://docs.github.com/rest/reference/orgs#list-app-installations-for-an-organization + */ + "GET /orgs/{org}/installations": { + parameters: Endpoints["GET /orgs/{org}/installations"]["parameters"]; + response: Endpoints["GET /orgs/{org}/installations"]["response"] & { + data: Endpoints["GET /orgs/{org}/installations"]["response"]["data"]["installations"]; + }; + }; + /** + * @see https://docs.github.com/rest/reference/orgs#list-pending-organization-invitations + */ + "GET /orgs/{org}/invitations": { + parameters: Endpoints["GET /orgs/{org}/invitations"]["parameters"]; + response: Endpoints["GET /orgs/{org}/invitations"]["response"]; + }; + /** + * @see https://docs.github.com/rest/reference/orgs#list-organization-invitation-teams + */ + "GET /orgs/{org}/invitations/{invitation_id}/teams": { + parameters: Endpoints["GET /orgs/{org}/invitations/{invitation_id}/teams"]["parameters"]; + response: Endpoints["GET /orgs/{org}/invitations/{invitation_id}/teams"]["response"]; + }; + /** + * @see https://docs.github.com/rest/reference/issues#list-organization-issues-assigned-to-the-authenticated-user + */ + "GET /orgs/{org}/issues": { + parameters: Endpoints["GET /orgs/{org}/issues"]["parameters"]; + response: Endpoints["GET /orgs/{org}/issues"]["response"]; + }; + /** + * @see https://docs.github.com/rest/reference/orgs#list-organization-members + */ + "GET /orgs/{org}/members": { + parameters: Endpoints["GET /orgs/{org}/members"]["parameters"]; + response: Endpoints["GET /orgs/{org}/members"]["response"]; + }; + /** + * @see https://docs.github.com/rest/reference/migrations#list-organization-migrations + */ + "GET /orgs/{org}/migrations": { + parameters: Endpoints["GET /orgs/{org}/migrations"]["parameters"]; + response: Endpoints["GET /orgs/{org}/migrations"]["response"]; + }; + /** + * @see https://docs.github.com/rest/reference/migrations#list-repositories-in-an-organization-migration + */ + "GET /orgs/{org}/migrations/{migration_id}/repositories": { + parameters: Endpoints["GET /orgs/{org}/migrations/{migration_id}/repositories"]["parameters"]; + response: Endpoints["GET /orgs/{org}/migrations/{migration_id}/repositories"]["response"]; + }; + /** + * @see https://docs.github.com/rest/reference/orgs#list-outside-collaborators-for-an-organization + */ + "GET /orgs/{org}/outside_collaborators": { + parameters: Endpoints["GET /orgs/{org}/outside_collaborators"]["parameters"]; + response: Endpoints["GET /orgs/{org}/outside_collaborators"]["response"]; + }; + /** + * @see https://docs.github.com/rest/reference/packages#list-packages-for-an-organization + */ + "GET /orgs/{org}/packages": { + parameters: Endpoints["GET /orgs/{org}/packages"]["parameters"]; + response: Endpoints["GET /orgs/{org}/packages"]["response"]; + }; + /** + * @see https://docs.github.com/rest/reference/packages#get-all-package-versions-for-a-package-owned-by-an-organization + */ + "GET /orgs/{org}/packages/{package_type}/{package_name}/versions": { + parameters: Endpoints["GET /orgs/{org}/packages/{package_type}/{package_name}/versions"]["parameters"]; + response: Endpoints["GET /orgs/{org}/packages/{package_type}/{package_name}/versions"]["response"]; + }; + /** + * @see https://docs.github.com/rest/reference/projects#list-organization-projects + */ + "GET /orgs/{org}/projects": { + parameters: Endpoints["GET /orgs/{org}/projects"]["parameters"]; + response: Endpoints["GET /orgs/{org}/projects"]["response"]; + }; + /** + * @see https://docs.github.com/rest/reference/orgs#list-public-organization-members + */ + "GET /orgs/{org}/public_members": { + parameters: Endpoints["GET /orgs/{org}/public_members"]["parameters"]; + response: Endpoints["GET /orgs/{org}/public_members"]["response"]; + }; + /** + * @see https://docs.github.com/rest/reference/repos#list-organization-repositories + */ + "GET /orgs/{org}/repos": { + parameters: Endpoints["GET /orgs/{org}/repos"]["parameters"]; + response: Endpoints["GET /orgs/{org}/repos"]["response"]; + }; + /** + * @see https://docs.github.com/rest/reference/secret-scanning#list-secret-scanning-alerts-for-an-organization + */ + "GET /orgs/{org}/secret-scanning/alerts": { + parameters: Endpoints["GET /orgs/{org}/secret-scanning/alerts"]["parameters"]; + response: Endpoints["GET /orgs/{org}/secret-scanning/alerts"]["response"]; + }; + /** + * @see https://docs.github.com/rest/reference/billing#get-github-advanced-security-active-committers-for-an-organization + */ + "GET /orgs/{org}/settings/billing/advanced-security": { + parameters: Endpoints["GET /orgs/{org}/settings/billing/advanced-security"]["parameters"]; + response: Endpoints["GET /orgs/{org}/settings/billing/advanced-security"]["response"] & { + data: Endpoints["GET /orgs/{org}/settings/billing/advanced-security"]["response"]["data"]["repositories"]; + }; + }; + /** + * @see https://docs.github.com/rest/reference/teams#list-idp-groups-for-an-organization + */ + "GET /orgs/{org}/team-sync/groups": { + parameters: Endpoints["GET /orgs/{org}/team-sync/groups"]["parameters"]; + response: Endpoints["GET /orgs/{org}/team-sync/groups"]["response"] & { + data: Endpoints["GET /orgs/{org}/team-sync/groups"]["response"]["data"]["groups"]; + }; + }; + /** + * @see https://docs.github.com/rest/reference/teams#list-teams + */ + "GET /orgs/{org}/teams": { + parameters: Endpoints["GET /orgs/{org}/teams"]["parameters"]; + response: Endpoints["GET /orgs/{org}/teams"]["response"]; + }; + /** + * @see https://docs.github.com/rest/reference/teams#list-discussions + */ + "GET /orgs/{org}/teams/{team_slug}/discussions": { + parameters: Endpoints["GET /orgs/{org}/teams/{team_slug}/discussions"]["parameters"]; + response: Endpoints["GET /orgs/{org}/teams/{team_slug}/discussions"]["response"]; + }; + /** + * @see https://docs.github.com/rest/reference/teams#list-discussion-comments + */ + "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments": { + parameters: Endpoints["GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments"]["parameters"]; + response: Endpoints["GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments"]["response"]; + }; + /** + * @see https://docs.github.com/rest/reference/reactions#list-reactions-for-a-team-discussion-comment + */ + "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions": { + parameters: Endpoints["GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions"]["parameters"]; + response: Endpoints["GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions"]["response"]; + }; + /** + * @see https://docs.github.com/rest/reference/reactions#list-reactions-for-a-team-discussion + */ + "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions": { + parameters: Endpoints["GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions"]["parameters"]; + response: Endpoints["GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions"]["response"]; + }; + /** + * @see https://docs.github.com/rest/reference/teams#list-pending-team-invitations + */ + "GET /orgs/{org}/teams/{team_slug}/invitations": { + parameters: Endpoints["GET /orgs/{org}/teams/{team_slug}/invitations"]["parameters"]; + response: Endpoints["GET /orgs/{org}/teams/{team_slug}/invitations"]["response"]; + }; + /** + * @see https://docs.github.com/rest/reference/teams#list-team-members + */ + "GET /orgs/{org}/teams/{team_slug}/members": { + parameters: Endpoints["GET /orgs/{org}/teams/{team_slug}/members"]["parameters"]; + response: Endpoints["GET /orgs/{org}/teams/{team_slug}/members"]["response"]; + }; + /** + * @see https://docs.github.com/rest/reference/teams#list-team-projects + */ + "GET /orgs/{org}/teams/{team_slug}/projects": { + parameters: Endpoints["GET /orgs/{org}/teams/{team_slug}/projects"]["parameters"]; + response: Endpoints["GET /orgs/{org}/teams/{team_slug}/projects"]["response"]; + }; + /** + * @see https://docs.github.com/rest/reference/teams#list-team-repositories + */ + "GET /orgs/{org}/teams/{team_slug}/repos": { + parameters: Endpoints["GET /orgs/{org}/teams/{team_slug}/repos"]["parameters"]; + response: Endpoints["GET /orgs/{org}/teams/{team_slug}/repos"]["response"]; + }; + /** + * @see https://docs.github.com/rest/reference/teams#list-child-teams + */ + "GET /orgs/{org}/teams/{team_slug}/teams": { + parameters: Endpoints["GET /orgs/{org}/teams/{team_slug}/teams"]["parameters"]; + response: Endpoints["GET /orgs/{org}/teams/{team_slug}/teams"]["response"]; + }; + /** + * @see https://docs.github.com/rest/reference/projects#list-project-cards + */ + "GET /projects/columns/{column_id}/cards": { + parameters: Endpoints["GET /projects/columns/{column_id}/cards"]["parameters"]; + response: Endpoints["GET /projects/columns/{column_id}/cards"]["response"]; + }; + /** + * @see https://docs.github.com/rest/reference/projects#list-project-collaborators + */ + "GET /projects/{project_id}/collaborators": { + parameters: Endpoints["GET /projects/{project_id}/collaborators"]["parameters"]; + response: Endpoints["GET /projects/{project_id}/collaborators"]["response"]; + }; + /** + * @see https://docs.github.com/rest/reference/projects#list-project-columns + */ + "GET /projects/{project_id}/columns": { + parameters: Endpoints["GET /projects/{project_id}/columns"]["parameters"]; + response: Endpoints["GET /projects/{project_id}/columns"]["response"]; + }; + /** + * @see https://docs.github.com/rest/reference/actions#list-artifacts-for-a-repository + */ + "GET /repos/{owner}/{repo}/actions/artifacts": { + parameters: Endpoints["GET /repos/{owner}/{repo}/actions/artifacts"]["parameters"]; + response: Endpoints["GET /repos/{owner}/{repo}/actions/artifacts"]["response"] & { + data: Endpoints["GET /repos/{owner}/{repo}/actions/artifacts"]["response"]["data"]["artifacts"]; + }; + }; + /** + * @see https://docs.github.com/rest/actions/cache#list-github-actions-caches-for-a-repository + */ + "GET /repos/{owner}/{repo}/actions/caches": { + parameters: Endpoints["GET /repos/{owner}/{repo}/actions/caches"]["parameters"]; + response: Endpoints["GET /repos/{owner}/{repo}/actions/caches"]["response"] & { + data: Endpoints["GET /repos/{owner}/{repo}/actions/caches"]["response"]["data"]["actions_caches"]; + }; + }; + /** + * @see https://docs.github.com/rest/reference/actions#list-self-hosted-runners-for-a-repository + */ + "GET /repos/{owner}/{repo}/actions/runners": { + parameters: Endpoints["GET /repos/{owner}/{repo}/actions/runners"]["parameters"]; + response: Endpoints["GET /repos/{owner}/{repo}/actions/runners"]["response"] & { + data: Endpoints["GET /repos/{owner}/{repo}/actions/runners"]["response"]["data"]["runners"]; + }; + }; + /** + * @see https://docs.github.com/rest/reference/actions#list-workflow-runs-for-a-repository + */ + "GET /repos/{owner}/{repo}/actions/runs": { + parameters: Endpoints["GET /repos/{owner}/{repo}/actions/runs"]["parameters"]; + response: Endpoints["GET /repos/{owner}/{repo}/actions/runs"]["response"] & { + data: Endpoints["GET /repos/{owner}/{repo}/actions/runs"]["response"]["data"]["workflow_runs"]; + }; + }; + /** + * @see https://docs.github.com/rest/reference/actions#list-workflow-run-artifacts + */ + "GET /repos/{owner}/{repo}/actions/runs/{run_id}/artifacts": { + parameters: Endpoints["GET /repos/{owner}/{repo}/actions/runs/{run_id}/artifacts"]["parameters"]; + response: Endpoints["GET /repos/{owner}/{repo}/actions/runs/{run_id}/artifacts"]["response"] & { + data: Endpoints["GET /repos/{owner}/{repo}/actions/runs/{run_id}/artifacts"]["response"]["data"]["artifacts"]; + }; + }; + /** + * @see https://docs.github.com/rest/reference/actions#list-jobs-for-a-workflow-run-attempt + */ + "GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/jobs": { + parameters: Endpoints["GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/jobs"]["parameters"]; + response: Endpoints["GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/jobs"]["response"] & { + data: Endpoints["GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/jobs"]["response"]["data"]["jobs"]; + }; + }; + /** + * @see https://docs.github.com/rest/reference/actions#list-jobs-for-a-workflow-run + */ + "GET /repos/{owner}/{repo}/actions/runs/{run_id}/jobs": { + parameters: Endpoints["GET /repos/{owner}/{repo}/actions/runs/{run_id}/jobs"]["parameters"]; + response: Endpoints["GET /repos/{owner}/{repo}/actions/runs/{run_id}/jobs"]["response"] & { + data: Endpoints["GET /repos/{owner}/{repo}/actions/runs/{run_id}/jobs"]["response"]["data"]["jobs"]; + }; + }; + /** + * @see https://docs.github.com/rest/reference/actions#list-repository-secrets + */ + "GET /repos/{owner}/{repo}/actions/secrets": { + parameters: Endpoints["GET /repos/{owner}/{repo}/actions/secrets"]["parameters"]; + response: Endpoints["GET /repos/{owner}/{repo}/actions/secrets"]["response"] & { + data: Endpoints["GET /repos/{owner}/{repo}/actions/secrets"]["response"]["data"]["secrets"]; + }; + }; + /** + * @see https://docs.github.com/rest/reference/actions#list-repository-workflows + */ + "GET /repos/{owner}/{repo}/actions/workflows": { + parameters: Endpoints["GET /repos/{owner}/{repo}/actions/workflows"]["parameters"]; + response: Endpoints["GET /repos/{owner}/{repo}/actions/workflows"]["response"] & { + data: Endpoints["GET /repos/{owner}/{repo}/actions/workflows"]["response"]["data"]["workflows"]; + }; + }; + /** + * @see https://docs.github.com/rest/reference/actions#list-workflow-runs + */ + "GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/runs": { + parameters: Endpoints["GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/runs"]["parameters"]; + response: Endpoints["GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/runs"]["response"] & { + data: Endpoints["GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/runs"]["response"]["data"]["workflow_runs"]; + }; + }; + /** + * @see https://docs.github.com/rest/reference/issues#list-assignees + */ + "GET /repos/{owner}/{repo}/assignees": { + parameters: Endpoints["GET /repos/{owner}/{repo}/assignees"]["parameters"]; + response: Endpoints["GET /repos/{owner}/{repo}/assignees"]["response"]; + }; + /** + * @see https://docs.github.com/rest/reference/repos#list-branches + */ + "GET /repos/{owner}/{repo}/branches": { + parameters: Endpoints["GET /repos/{owner}/{repo}/branches"]["parameters"]; + response: Endpoints["GET /repos/{owner}/{repo}/branches"]["response"]; + }; + /** + * @see https://docs.github.com/rest/reference/checks#list-check-run-annotations + */ + "GET /repos/{owner}/{repo}/check-runs/{check_run_id}/annotations": { + parameters: Endpoints["GET /repos/{owner}/{repo}/check-runs/{check_run_id}/annotations"]["parameters"]; + response: Endpoints["GET /repos/{owner}/{repo}/check-runs/{check_run_id}/annotations"]["response"]; + }; + /** + * @see https://docs.github.com/rest/reference/checks#list-check-runs-in-a-check-suite + */ + "GET /repos/{owner}/{repo}/check-suites/{check_suite_id}/check-runs": { + parameters: Endpoints["GET /repos/{owner}/{repo}/check-suites/{check_suite_id}/check-runs"]["parameters"]; + response: Endpoints["GET /repos/{owner}/{repo}/check-suites/{check_suite_id}/check-runs"]["response"] & { + data: Endpoints["GET /repos/{owner}/{repo}/check-suites/{check_suite_id}/check-runs"]["response"]["data"]["check_runs"]; + }; + }; + /** + * @see https://docs.github.com/rest/reference/code-scanning#list-code-scanning-alerts-for-a-repository + */ + "GET /repos/{owner}/{repo}/code-scanning/alerts": { + parameters: Endpoints["GET /repos/{owner}/{repo}/code-scanning/alerts"]["parameters"]; + response: Endpoints["GET /repos/{owner}/{repo}/code-scanning/alerts"]["response"]; + }; + /** + * @see https://docs.github.com/rest/reference/code-scanning#list-instances-of-a-code-scanning-alert + */ + "GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances": { + parameters: Endpoints["GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances"]["parameters"]; + response: Endpoints["GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances"]["response"]; + }; + /** + * @see https://docs.github.com/rest/reference/code-scanning#list-code-scanning-analyses-for-a-repository + */ + "GET /repos/{owner}/{repo}/code-scanning/analyses": { + parameters: Endpoints["GET /repos/{owner}/{repo}/code-scanning/analyses"]["parameters"]; + response: Endpoints["GET /repos/{owner}/{repo}/code-scanning/analyses"]["response"]; + }; + /** + * @see https://docs.github.com/rest/reference/codespaces#list-codespaces-in-a-repository-for-the-authenticated-user + */ + "GET /repos/{owner}/{repo}/codespaces": { + parameters: Endpoints["GET /repos/{owner}/{repo}/codespaces"]["parameters"]; + response: Endpoints["GET /repos/{owner}/{repo}/codespaces"]["response"] & { + data: Endpoints["GET /repos/{owner}/{repo}/codespaces"]["response"]["data"]["codespaces"]; + }; + }; + /** + * @see https://docs.github.com/rest/reference/codespaces#list-devcontainers-in-a-repository-for-the-authenticated-user + */ + "GET /repos/{owner}/{repo}/codespaces/devcontainers": { + parameters: Endpoints["GET /repos/{owner}/{repo}/codespaces/devcontainers"]["parameters"]; + response: Endpoints["GET /repos/{owner}/{repo}/codespaces/devcontainers"]["response"] & { + data: Endpoints["GET /repos/{owner}/{repo}/codespaces/devcontainers"]["response"]["data"]["devcontainers"]; + }; + }; + /** + * @see https://docs.github.com/rest/reference/codespaces#list-repository-secrets + */ + "GET /repos/{owner}/{repo}/codespaces/secrets": { + parameters: Endpoints["GET /repos/{owner}/{repo}/codespaces/secrets"]["parameters"]; + response: Endpoints["GET /repos/{owner}/{repo}/codespaces/secrets"]["response"] & { + data: Endpoints["GET /repos/{owner}/{repo}/codespaces/secrets"]["response"]["data"]["secrets"]; + }; + }; + /** + * @see https://docs.github.com/rest/reference/repos#list-repository-collaborators + */ + "GET /repos/{owner}/{repo}/collaborators": { + parameters: Endpoints["GET /repos/{owner}/{repo}/collaborators"]["parameters"]; + response: Endpoints["GET /repos/{owner}/{repo}/collaborators"]["response"]; + }; + /** + * @see https://docs.github.com/rest/reference/repos#list-commit-comments-for-a-repository + */ + "GET /repos/{owner}/{repo}/comments": { + parameters: Endpoints["GET /repos/{owner}/{repo}/comments"]["parameters"]; + response: Endpoints["GET /repos/{owner}/{repo}/comments"]["response"]; + }; + /** + * @see https://docs.github.com/rest/reference/reactions#list-reactions-for-a-commit-comment + */ + "GET /repos/{owner}/{repo}/comments/{comment_id}/reactions": { + parameters: Endpoints["GET /repos/{owner}/{repo}/comments/{comment_id}/reactions"]["parameters"]; + response: Endpoints["GET /repos/{owner}/{repo}/comments/{comment_id}/reactions"]["response"]; + }; + /** + * @see https://docs.github.com/rest/reference/repos#list-commits + */ + "GET /repos/{owner}/{repo}/commits": { + parameters: Endpoints["GET /repos/{owner}/{repo}/commits"]["parameters"]; + response: Endpoints["GET /repos/{owner}/{repo}/commits"]["response"]; + }; + /** + * @see https://docs.github.com/rest/reference/repos#list-commit-comments + */ + "GET /repos/{owner}/{repo}/commits/{commit_sha}/comments": { + parameters: Endpoints["GET /repos/{owner}/{repo}/commits/{commit_sha}/comments"]["parameters"]; + response: Endpoints["GET /repos/{owner}/{repo}/commits/{commit_sha}/comments"]["response"]; + }; + /** + * @see https://docs.github.com/rest/reference/repos#list-pull-requests-associated-with-a-commit + */ + "GET /repos/{owner}/{repo}/commits/{commit_sha}/pulls": { + parameters: Endpoints["GET /repos/{owner}/{repo}/commits/{commit_sha}/pulls"]["parameters"]; + response: Endpoints["GET /repos/{owner}/{repo}/commits/{commit_sha}/pulls"]["response"]; + }; + /** + * @see https://docs.github.com/rest/reference/checks#list-check-runs-for-a-git-reference + */ + "GET /repos/{owner}/{repo}/commits/{ref}/check-runs": { + parameters: Endpoints["GET /repos/{owner}/{repo}/commits/{ref}/check-runs"]["parameters"]; + response: Endpoints["GET /repos/{owner}/{repo}/commits/{ref}/check-runs"]["response"] & { + data: Endpoints["GET /repos/{owner}/{repo}/commits/{ref}/check-runs"]["response"]["data"]["check_runs"]; + }; + }; + /** + * @see https://docs.github.com/rest/reference/checks#list-check-suites-for-a-git-reference + */ + "GET /repos/{owner}/{repo}/commits/{ref}/check-suites": { + parameters: Endpoints["GET /repos/{owner}/{repo}/commits/{ref}/check-suites"]["parameters"]; + response: Endpoints["GET /repos/{owner}/{repo}/commits/{ref}/check-suites"]["response"] & { + data: Endpoints["GET /repos/{owner}/{repo}/commits/{ref}/check-suites"]["response"]["data"]["check_suites"]; + }; + }; + /** + * @see https://docs.github.com/rest/reference/repos#get-the-combined-status-for-a-specific-reference + */ + "GET /repos/{owner}/{repo}/commits/{ref}/status": { + parameters: Endpoints["GET /repos/{owner}/{repo}/commits/{ref}/status"]["parameters"]; + response: Endpoints["GET /repos/{owner}/{repo}/commits/{ref}/status"]["response"] & { + data: Endpoints["GET /repos/{owner}/{repo}/commits/{ref}/status"]["response"]["data"]["statuses"]; + }; + }; + /** + * @see https://docs.github.com/rest/reference/repos#list-commit-statuses-for-a-reference + */ + "GET /repos/{owner}/{repo}/commits/{ref}/statuses": { + parameters: Endpoints["GET /repos/{owner}/{repo}/commits/{ref}/statuses"]["parameters"]; + response: Endpoints["GET /repos/{owner}/{repo}/commits/{ref}/statuses"]["response"]; + }; + /** + * @see https://docs.github.com/rest/reference/repos#list-repository-contributors + */ + "GET /repos/{owner}/{repo}/contributors": { + parameters: Endpoints["GET /repos/{owner}/{repo}/contributors"]["parameters"]; + response: Endpoints["GET /repos/{owner}/{repo}/contributors"]["response"]; + }; + /** + * @see https://docs.github.com/rest/reference/dependabot#list-repository-secrets + */ + "GET /repos/{owner}/{repo}/dependabot/secrets": { + parameters: Endpoints["GET /repos/{owner}/{repo}/dependabot/secrets"]["parameters"]; + response: Endpoints["GET /repos/{owner}/{repo}/dependabot/secrets"]["response"] & { + data: Endpoints["GET /repos/{owner}/{repo}/dependabot/secrets"]["response"]["data"]["secrets"]; + }; + }; + /** + * @see https://docs.github.com/rest/reference/repos#list-deployments + */ + "GET /repos/{owner}/{repo}/deployments": { + parameters: Endpoints["GET /repos/{owner}/{repo}/deployments"]["parameters"]; + response: Endpoints["GET /repos/{owner}/{repo}/deployments"]["response"]; + }; + /** + * @see https://docs.github.com/rest/reference/repos#list-deployment-statuses + */ + "GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses": { + parameters: Endpoints["GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses"]["parameters"]; + response: Endpoints["GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses"]["response"]; + }; + /** + * @see https://docs.github.com/rest/reference/repos#get-all-environments + */ + "GET /repos/{owner}/{repo}/environments": { + parameters: Endpoints["GET /repos/{owner}/{repo}/environments"]["parameters"]; + response: Endpoints["GET /repos/{owner}/{repo}/environments"]["response"] & { + data: Endpoints["GET /repos/{owner}/{repo}/environments"]["response"]["data"]["environments"]; + }; + }; + /** + * @see https://docs.github.com/rest/reference/activity#list-repository-events + */ + "GET /repos/{owner}/{repo}/events": { + parameters: Endpoints["GET /repos/{owner}/{repo}/events"]["parameters"]; + response: Endpoints["GET /repos/{owner}/{repo}/events"]["response"]; + }; + /** + * @see https://docs.github.com/rest/reference/repos#list-forks + */ + "GET /repos/{owner}/{repo}/forks": { + parameters: Endpoints["GET /repos/{owner}/{repo}/forks"]["parameters"]; + response: Endpoints["GET /repos/{owner}/{repo}/forks"]["response"]; + }; + /** + * @see https://docs.github.com/rest/reference/git#list-matching-references + */ + "GET /repos/{owner}/{repo}/git/matching-refs/{ref}": { + parameters: Endpoints["GET /repos/{owner}/{repo}/git/matching-refs/{ref}"]["parameters"]; + response: Endpoints["GET /repos/{owner}/{repo}/git/matching-refs/{ref}"]["response"]; + }; + /** + * @see https://docs.github.com/rest/reference/repos#list-repository-webhooks + */ + "GET /repos/{owner}/{repo}/hooks": { + parameters: Endpoints["GET /repos/{owner}/{repo}/hooks"]["parameters"]; + response: Endpoints["GET /repos/{owner}/{repo}/hooks"]["response"]; + }; + /** + * @see https://docs.github.com/rest/reference/repos#list-deliveries-for-a-repository-webhook + */ + "GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries": { + parameters: Endpoints["GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries"]["parameters"]; + response: Endpoints["GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries"]["response"]; + }; + /** + * @see https://docs.github.com/rest/reference/repos#list-repository-invitations + */ + "GET /repos/{owner}/{repo}/invitations": { + parameters: Endpoints["GET /repos/{owner}/{repo}/invitations"]["parameters"]; + response: Endpoints["GET /repos/{owner}/{repo}/invitations"]["response"]; + }; + /** + * @see https://docs.github.com/rest/reference/issues#list-repository-issues + */ + "GET /repos/{owner}/{repo}/issues": { + parameters: Endpoints["GET /repos/{owner}/{repo}/issues"]["parameters"]; + response: Endpoints["GET /repos/{owner}/{repo}/issues"]["response"]; + }; + /** + * @see https://docs.github.com/rest/reference/issues#list-issue-comments-for-a-repository + */ + "GET /repos/{owner}/{repo}/issues/comments": { + parameters: Endpoints["GET /repos/{owner}/{repo}/issues/comments"]["parameters"]; + response: Endpoints["GET /repos/{owner}/{repo}/issues/comments"]["response"]; + }; + /** + * @see https://docs.github.com/rest/reference/reactions#list-reactions-for-an-issue-comment + */ + "GET /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions": { + parameters: Endpoints["GET /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions"]["parameters"]; + response: Endpoints["GET /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions"]["response"]; + }; + /** + * @see https://docs.github.com/rest/reference/issues#list-issue-events-for-a-repository + */ + "GET /repos/{owner}/{repo}/issues/events": { + parameters: Endpoints["GET /repos/{owner}/{repo}/issues/events"]["parameters"]; + response: Endpoints["GET /repos/{owner}/{repo}/issues/events"]["response"]; + }; + /** + * @see https://docs.github.com/rest/reference/issues#list-issue-comments + */ + "GET /repos/{owner}/{repo}/issues/{issue_number}/comments": { + parameters: Endpoints["GET /repos/{owner}/{repo}/issues/{issue_number}/comments"]["parameters"]; + response: Endpoints["GET /repos/{owner}/{repo}/issues/{issue_number}/comments"]["response"]; + }; + /** + * @see https://docs.github.com/rest/reference/issues#list-issue-events + */ + "GET /repos/{owner}/{repo}/issues/{issue_number}/events": { + parameters: Endpoints["GET /repos/{owner}/{repo}/issues/{issue_number}/events"]["parameters"]; + response: Endpoints["GET /repos/{owner}/{repo}/issues/{issue_number}/events"]["response"]; + }; + /** + * @see https://docs.github.com/rest/reference/issues#list-labels-for-an-issue + */ + "GET /repos/{owner}/{repo}/issues/{issue_number}/labels": { + parameters: Endpoints["GET /repos/{owner}/{repo}/issues/{issue_number}/labels"]["parameters"]; + response: Endpoints["GET /repos/{owner}/{repo}/issues/{issue_number}/labels"]["response"]; + }; + /** + * @see https://docs.github.com/rest/reference/reactions#list-reactions-for-an-issue + */ + "GET /repos/{owner}/{repo}/issues/{issue_number}/reactions": { + parameters: Endpoints["GET /repos/{owner}/{repo}/issues/{issue_number}/reactions"]["parameters"]; + response: Endpoints["GET /repos/{owner}/{repo}/issues/{issue_number}/reactions"]["response"]; + }; + /** + * @see https://docs.github.com/rest/reference/issues#list-timeline-events-for-an-issue + */ + "GET /repos/{owner}/{repo}/issues/{issue_number}/timeline": { + parameters: Endpoints["GET /repos/{owner}/{repo}/issues/{issue_number}/timeline"]["parameters"]; + response: Endpoints["GET /repos/{owner}/{repo}/issues/{issue_number}/timeline"]["response"]; + }; + /** + * @see https://docs.github.com/rest/reference/repos#list-deploy-keys + */ + "GET /repos/{owner}/{repo}/keys": { + parameters: Endpoints["GET /repos/{owner}/{repo}/keys"]["parameters"]; + response: Endpoints["GET /repos/{owner}/{repo}/keys"]["response"]; + }; + /** + * @see https://docs.github.com/rest/reference/issues#list-labels-for-a-repository + */ + "GET /repos/{owner}/{repo}/labels": { + parameters: Endpoints["GET /repos/{owner}/{repo}/labels"]["parameters"]; + response: Endpoints["GET /repos/{owner}/{repo}/labels"]["response"]; + }; + /** + * @see https://docs.github.com/rest/reference/issues#list-milestones + */ + "GET /repos/{owner}/{repo}/milestones": { + parameters: Endpoints["GET /repos/{owner}/{repo}/milestones"]["parameters"]; + response: Endpoints["GET /repos/{owner}/{repo}/milestones"]["response"]; + }; + /** + * @see https://docs.github.com/rest/reference/issues#list-labels-for-issues-in-a-milestone + */ + "GET /repos/{owner}/{repo}/milestones/{milestone_number}/labels": { + parameters: Endpoints["GET /repos/{owner}/{repo}/milestones/{milestone_number}/labels"]["parameters"]; + response: Endpoints["GET /repos/{owner}/{repo}/milestones/{milestone_number}/labels"]["response"]; + }; + /** + * @see https://docs.github.com/rest/reference/activity#list-repository-notifications-for-the-authenticated-user + */ + "GET /repos/{owner}/{repo}/notifications": { + parameters: Endpoints["GET /repos/{owner}/{repo}/notifications"]["parameters"]; + response: Endpoints["GET /repos/{owner}/{repo}/notifications"]["response"]; + }; + /** + * @see https://docs.github.com/rest/reference/repos#list-github-pages-builds + */ + "GET /repos/{owner}/{repo}/pages/builds": { + parameters: Endpoints["GET /repos/{owner}/{repo}/pages/builds"]["parameters"]; + response: Endpoints["GET /repos/{owner}/{repo}/pages/builds"]["response"]; + }; + /** + * @see https://docs.github.com/rest/reference/projects#list-repository-projects + */ + "GET /repos/{owner}/{repo}/projects": { + parameters: Endpoints["GET /repos/{owner}/{repo}/projects"]["parameters"]; + response: Endpoints["GET /repos/{owner}/{repo}/projects"]["response"]; + }; + /** + * @see https://docs.github.com/rest/reference/pulls#list-pull-requests + */ + "GET /repos/{owner}/{repo}/pulls": { + parameters: Endpoints["GET /repos/{owner}/{repo}/pulls"]["parameters"]; + response: Endpoints["GET /repos/{owner}/{repo}/pulls"]["response"]; + }; + /** + * @see https://docs.github.com/rest/reference/pulls#list-review-comments-in-a-repository + */ + "GET /repos/{owner}/{repo}/pulls/comments": { + parameters: Endpoints["GET /repos/{owner}/{repo}/pulls/comments"]["parameters"]; + response: Endpoints["GET /repos/{owner}/{repo}/pulls/comments"]["response"]; + }; + /** + * @see https://docs.github.com/rest/reference/reactions#list-reactions-for-a-pull-request-review-comment + */ + "GET /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions": { + parameters: Endpoints["GET /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions"]["parameters"]; + response: Endpoints["GET /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions"]["response"]; + }; + /** + * @see https://docs.github.com/rest/reference/pulls#list-review-comments-on-a-pull-request + */ + "GET /repos/{owner}/{repo}/pulls/{pull_number}/comments": { + parameters: Endpoints["GET /repos/{owner}/{repo}/pulls/{pull_number}/comments"]["parameters"]; + response: Endpoints["GET /repos/{owner}/{repo}/pulls/{pull_number}/comments"]["response"]; + }; + /** + * @see https://docs.github.com/rest/reference/pulls#list-commits-on-a-pull-request + */ + "GET /repos/{owner}/{repo}/pulls/{pull_number}/commits": { + parameters: Endpoints["GET /repos/{owner}/{repo}/pulls/{pull_number}/commits"]["parameters"]; + response: Endpoints["GET /repos/{owner}/{repo}/pulls/{pull_number}/commits"]["response"]; + }; + /** + * @see https://docs.github.com/rest/reference/pulls#list-pull-requests-files + */ + "GET /repos/{owner}/{repo}/pulls/{pull_number}/files": { + parameters: Endpoints["GET /repos/{owner}/{repo}/pulls/{pull_number}/files"]["parameters"]; + response: Endpoints["GET /repos/{owner}/{repo}/pulls/{pull_number}/files"]["response"]; + }; + /** + * @see https://docs.github.com/rest/reference/pulls#list-requested-reviewers-for-a-pull-request + */ + "GET /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers": { + parameters: Endpoints["GET /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers"]["parameters"]; + response: Endpoints["GET /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers"]["response"] & { + data: Endpoints["GET /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers"]["response"]["data"]["users"]; + }; + }; + /** + * @see https://docs.github.com/rest/reference/pulls#list-reviews-for-a-pull-request + */ + "GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews": { + parameters: Endpoints["GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews"]["parameters"]; + response: Endpoints["GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews"]["response"]; + }; + /** + * @see https://docs.github.com/rest/reference/pulls#list-comments-for-a-pull-request-review + */ + "GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/comments": { + parameters: Endpoints["GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/comments"]["parameters"]; + response: Endpoints["GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/comments"]["response"]; + }; + /** + * @see https://docs.github.com/rest/reference/repos#list-releases + */ + "GET /repos/{owner}/{repo}/releases": { + parameters: Endpoints["GET /repos/{owner}/{repo}/releases"]["parameters"]; + response: Endpoints["GET /repos/{owner}/{repo}/releases"]["response"]; + }; + /** + * @see https://docs.github.com/rest/reference/repos#list-release-assets + */ + "GET /repos/{owner}/{repo}/releases/{release_id}/assets": { + parameters: Endpoints["GET /repos/{owner}/{repo}/releases/{release_id}/assets"]["parameters"]; + response: Endpoints["GET /repos/{owner}/{repo}/releases/{release_id}/assets"]["response"]; + }; + /** + * @see https://docs.github.com/rest/reference/reactions/#list-reactions-for-a-release + */ + "GET /repos/{owner}/{repo}/releases/{release_id}/reactions": { + parameters: Endpoints["GET /repos/{owner}/{repo}/releases/{release_id}/reactions"]["parameters"]; + response: Endpoints["GET /repos/{owner}/{repo}/releases/{release_id}/reactions"]["response"]; + }; + /** + * @see https://docs.github.com/rest/reference/secret-scanning#list-secret-scanning-alerts-for-a-repository + */ + "GET /repos/{owner}/{repo}/secret-scanning/alerts": { + parameters: Endpoints["GET /repos/{owner}/{repo}/secret-scanning/alerts"]["parameters"]; + response: Endpoints["GET /repos/{owner}/{repo}/secret-scanning/alerts"]["response"]; + }; + /** + * @see https://docs.github.com/rest/reference/secret-scanning#list-locations-for-a-secret-scanning-alert + */ + "GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}/locations": { + parameters: Endpoints["GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}/locations"]["parameters"]; + response: Endpoints["GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}/locations"]["response"]; + }; + /** + * @see https://docs.github.com/rest/reference/activity#list-stargazers + */ + "GET /repos/{owner}/{repo}/stargazers": { + parameters: Endpoints["GET /repos/{owner}/{repo}/stargazers"]["parameters"]; + response: Endpoints["GET /repos/{owner}/{repo}/stargazers"]["response"]; + }; + /** + * @see https://docs.github.com/rest/reference/activity#list-watchers + */ + "GET /repos/{owner}/{repo}/subscribers": { + parameters: Endpoints["GET /repos/{owner}/{repo}/subscribers"]["parameters"]; + response: Endpoints["GET /repos/{owner}/{repo}/subscribers"]["response"]; + }; + /** + * @see https://docs.github.com/rest/reference/repos#list-repository-tags + */ + "GET /repos/{owner}/{repo}/tags": { + parameters: Endpoints["GET /repos/{owner}/{repo}/tags"]["parameters"]; + response: Endpoints["GET /repos/{owner}/{repo}/tags"]["response"]; + }; + /** + * @see https://docs.github.com/rest/reference/repos#list-repository-teams + */ + "GET /repos/{owner}/{repo}/teams": { + parameters: Endpoints["GET /repos/{owner}/{repo}/teams"]["parameters"]; + response: Endpoints["GET /repos/{owner}/{repo}/teams"]["response"]; + }; + /** + * @see https://docs.github.com/rest/reference/repos#get-all-repository-topics + */ + "GET /repos/{owner}/{repo}/topics": { + parameters: Endpoints["GET /repos/{owner}/{repo}/topics"]["parameters"]; + response: Endpoints["GET /repos/{owner}/{repo}/topics"]["response"] & { + data: Endpoints["GET /repos/{owner}/{repo}/topics"]["response"]["data"]["names"]; + }; + }; + /** + * @see https://docs.github.com/rest/reference/repos#list-public-repositories + */ + "GET /repositories": { + parameters: Endpoints["GET /repositories"]["parameters"]; + response: Endpoints["GET /repositories"]["response"]; + }; + /** + * @see https://docs.github.com/rest/reference/actions#list-environment-secrets + */ + "GET /repositories/{repository_id}/environments/{environment_name}/secrets": { + parameters: Endpoints["GET /repositories/{repository_id}/environments/{environment_name}/secrets"]["parameters"]; + response: Endpoints["GET /repositories/{repository_id}/environments/{environment_name}/secrets"]["response"] & { + data: Endpoints["GET /repositories/{repository_id}/environments/{environment_name}/secrets"]["response"]["data"]["secrets"]; + }; + }; + /** + * @see https://docs.github.com/rest/reference/search#search-code + */ + "GET /search/code": { + parameters: Endpoints["GET /search/code"]["parameters"]; + response: Endpoints["GET /search/code"]["response"] & { + data: Endpoints["GET /search/code"]["response"]["data"]["items"]; + }; + }; + /** + * @see https://docs.github.com/rest/reference/search#search-commits + */ + "GET /search/commits": { + parameters: Endpoints["GET /search/commits"]["parameters"]; + response: Endpoints["GET /search/commits"]["response"] & { + data: Endpoints["GET /search/commits"]["response"]["data"]["items"]; + }; + }; + /** + * @see https://docs.github.com/rest/reference/search#search-issues-and-pull-requests + */ + "GET /search/issues": { + parameters: Endpoints["GET /search/issues"]["parameters"]; + response: Endpoints["GET /search/issues"]["response"] & { + data: Endpoints["GET /search/issues"]["response"]["data"]["items"]; + }; + }; + /** + * @see https://docs.github.com/rest/reference/search#search-labels + */ + "GET /search/labels": { + parameters: Endpoints["GET /search/labels"]["parameters"]; + response: Endpoints["GET /search/labels"]["response"] & { + data: Endpoints["GET /search/labels"]["response"]["data"]["items"]; + }; + }; + /** + * @see https://docs.github.com/rest/reference/search#search-repositories + */ + "GET /search/repositories": { + parameters: Endpoints["GET /search/repositories"]["parameters"]; + response: Endpoints["GET /search/repositories"]["response"] & { + data: Endpoints["GET /search/repositories"]["response"]["data"]["items"]; + }; + }; + /** + * @see https://docs.github.com/rest/reference/search#search-topics + */ + "GET /search/topics": { + parameters: Endpoints["GET /search/topics"]["parameters"]; + response: Endpoints["GET /search/topics"]["response"] & { + data: Endpoints["GET /search/topics"]["response"]["data"]["items"]; + }; + }; + /** + * @see https://docs.github.com/rest/reference/search#search-users + */ + "GET /search/users": { + parameters: Endpoints["GET /search/users"]["parameters"]; + response: Endpoints["GET /search/users"]["response"] & { + data: Endpoints["GET /search/users"]["response"]["data"]["items"]; + }; + }; + /** + * @see https://docs.github.com/rest/reference/teams#list-discussions-legacy + */ + "GET /teams/{team_id}/discussions": { + parameters: Endpoints["GET /teams/{team_id}/discussions"]["parameters"]; + response: Endpoints["GET /teams/{team_id}/discussions"]["response"]; + }; + /** + * @see https://docs.github.com/rest/reference/teams#list-discussion-comments-legacy + */ + "GET /teams/{team_id}/discussions/{discussion_number}/comments": { + parameters: Endpoints["GET /teams/{team_id}/discussions/{discussion_number}/comments"]["parameters"]; + response: Endpoints["GET /teams/{team_id}/discussions/{discussion_number}/comments"]["response"]; + }; + /** + * @see https://docs.github.com/rest/reference/reactions/#list-reactions-for-a-team-discussion-comment-legacy + */ + "GET /teams/{team_id}/discussions/{discussion_number}/comments/{comment_number}/reactions": { + parameters: Endpoints["GET /teams/{team_id}/discussions/{discussion_number}/comments/{comment_number}/reactions"]["parameters"]; + response: Endpoints["GET /teams/{team_id}/discussions/{discussion_number}/comments/{comment_number}/reactions"]["response"]; + }; + /** + * @see https://docs.github.com/rest/reference/reactions/#list-reactions-for-a-team-discussion-legacy + */ + "GET /teams/{team_id}/discussions/{discussion_number}/reactions": { + parameters: Endpoints["GET /teams/{team_id}/discussions/{discussion_number}/reactions"]["parameters"]; + response: Endpoints["GET /teams/{team_id}/discussions/{discussion_number}/reactions"]["response"]; + }; + /** + * @see https://docs.github.com/rest/reference/teams#list-pending-team-invitations-legacy + */ + "GET /teams/{team_id}/invitations": { + parameters: Endpoints["GET /teams/{team_id}/invitations"]["parameters"]; + response: Endpoints["GET /teams/{team_id}/invitations"]["response"]; + }; + /** + * @see https://docs.github.com/rest/reference/teams#list-team-members-legacy + */ + "GET /teams/{team_id}/members": { + parameters: Endpoints["GET /teams/{team_id}/members"]["parameters"]; + response: Endpoints["GET /teams/{team_id}/members"]["response"]; + }; + /** + * @see https://docs.github.com/rest/reference/teams/#list-team-projects-legacy + */ + "GET /teams/{team_id}/projects": { + parameters: Endpoints["GET /teams/{team_id}/projects"]["parameters"]; + response: Endpoints["GET /teams/{team_id}/projects"]["response"]; + }; + /** + * @see https://docs.github.com/rest/reference/teams/#list-team-repositories-legacy + */ + "GET /teams/{team_id}/repos": { + parameters: Endpoints["GET /teams/{team_id}/repos"]["parameters"]; + response: Endpoints["GET /teams/{team_id}/repos"]["response"]; + }; + /** + * @see https://docs.github.com/rest/reference/teams/#list-child-teams-legacy + */ + "GET /teams/{team_id}/teams": { + parameters: Endpoints["GET /teams/{team_id}/teams"]["parameters"]; + response: Endpoints["GET /teams/{team_id}/teams"]["response"]; + }; + /** + * @see https://docs.github.com/rest/reference/users#list-users-blocked-by-the-authenticated-user + */ + "GET /user/blocks": { + parameters: Endpoints["GET /user/blocks"]["parameters"]; + response: Endpoints["GET /user/blocks"]["response"]; + }; + /** + * @see https://docs.github.com/rest/reference/codespaces#list-codespaces-for-the-authenticated-user + */ + "GET /user/codespaces": { + parameters: Endpoints["GET /user/codespaces"]["parameters"]; + response: Endpoints["GET /user/codespaces"]["response"] & { + data: Endpoints["GET /user/codespaces"]["response"]["data"]["codespaces"]; + }; + }; + /** + * @see https://docs.github.com/rest/reference/codespaces#list-secrets-for-the-authenticated-user + */ + "GET /user/codespaces/secrets": { + parameters: Endpoints["GET /user/codespaces/secrets"]["parameters"]; + response: Endpoints["GET /user/codespaces/secrets"]["response"] & { + data: Endpoints["GET /user/codespaces/secrets"]["response"]["data"]["secrets"]; + }; + }; + /** + * @see https://docs.github.com/rest/reference/users#list-email-addresses-for-the-authenticated-user + */ + "GET /user/emails": { + parameters: Endpoints["GET /user/emails"]["parameters"]; + response: Endpoints["GET /user/emails"]["response"]; + }; + /** + * @see https://docs.github.com/rest/reference/users#list-followers-of-the-authenticated-user + */ + "GET /user/followers": { + parameters: Endpoints["GET /user/followers"]["parameters"]; + response: Endpoints["GET /user/followers"]["response"]; + }; + /** + * @see https://docs.github.com/rest/reference/users#list-the-people-the-authenticated-user-follows + */ + "GET /user/following": { + parameters: Endpoints["GET /user/following"]["parameters"]; + response: Endpoints["GET /user/following"]["response"]; + }; + /** + * @see https://docs.github.com/rest/reference/users#list-gpg-keys-for-the-authenticated-user + */ + "GET /user/gpg_keys": { + parameters: Endpoints["GET /user/gpg_keys"]["parameters"]; + response: Endpoints["GET /user/gpg_keys"]["response"]; + }; + /** + * @see https://docs.github.com/rest/reference/apps#list-app-installations-accessible-to-the-user-access-token + */ + "GET /user/installations": { + parameters: Endpoints["GET /user/installations"]["parameters"]; + response: Endpoints["GET /user/installations"]["response"] & { + data: Endpoints["GET /user/installations"]["response"]["data"]["installations"]; + }; + }; + /** + * @see https://docs.github.com/rest/reference/apps#list-repositories-accessible-to-the-user-access-token + */ + "GET /user/installations/{installation_id}/repositories": { + parameters: Endpoints["GET /user/installations/{installation_id}/repositories"]["parameters"]; + response: Endpoints["GET /user/installations/{installation_id}/repositories"]["response"] & { + data: Endpoints["GET /user/installations/{installation_id}/repositories"]["response"]["data"]["repositories"]; + }; + }; + /** + * @see https://docs.github.com/rest/reference/issues#list-user-account-issues-assigned-to-the-authenticated-user + */ + "GET /user/issues": { + parameters: Endpoints["GET /user/issues"]["parameters"]; + response: Endpoints["GET /user/issues"]["response"]; + }; + /** + * @see https://docs.github.com/rest/reference/users#list-public-ssh-keys-for-the-authenticated-user + */ + "GET /user/keys": { + parameters: Endpoints["GET /user/keys"]["parameters"]; + response: Endpoints["GET /user/keys"]["response"]; + }; + /** + * @see https://docs.github.com/rest/reference/apps#list-subscriptions-for-the-authenticated-user + */ + "GET /user/marketplace_purchases": { + parameters: Endpoints["GET /user/marketplace_purchases"]["parameters"]; + response: Endpoints["GET /user/marketplace_purchases"]["response"]; + }; + /** + * @see https://docs.github.com/rest/reference/apps#list-subscriptions-for-the-authenticated-user-stubbed + */ + "GET /user/marketplace_purchases/stubbed": { + parameters: Endpoints["GET /user/marketplace_purchases/stubbed"]["parameters"]; + response: Endpoints["GET /user/marketplace_purchases/stubbed"]["response"]; + }; + /** + * @see https://docs.github.com/rest/reference/orgs#list-organization-memberships-for-the-authenticated-user + */ + "GET /user/memberships/orgs": { + parameters: Endpoints["GET /user/memberships/orgs"]["parameters"]; + response: Endpoints["GET /user/memberships/orgs"]["response"]; + }; + /** + * @see https://docs.github.com/rest/reference/migrations#list-user-migrations + */ + "GET /user/migrations": { + parameters: Endpoints["GET /user/migrations"]["parameters"]; + response: Endpoints["GET /user/migrations"]["response"]; + }; + /** + * @see https://docs.github.com/rest/reference/migrations#list-repositories-for-a-user-migration + */ + "GET /user/migrations/{migration_id}/repositories": { + parameters: Endpoints["GET /user/migrations/{migration_id}/repositories"]["parameters"]; + response: Endpoints["GET /user/migrations/{migration_id}/repositories"]["response"]; + }; + /** + * @see https://docs.github.com/rest/reference/orgs#list-organizations-for-the-authenticated-user + */ + "GET /user/orgs": { + parameters: Endpoints["GET /user/orgs"]["parameters"]; + response: Endpoints["GET /user/orgs"]["response"]; + }; + /** + * @see https://docs.github.com/rest/reference/packages#list-packages-for-the-authenticated-user + */ + "GET /user/packages": { + parameters: Endpoints["GET /user/packages"]["parameters"]; + response: Endpoints["GET /user/packages"]["response"]; + }; + /** + * @see https://docs.github.com/rest/reference/packages#get-all-package-versions-for-a-package-owned-by-the-authenticated-user + */ + "GET /user/packages/{package_type}/{package_name}/versions": { + parameters: Endpoints["GET /user/packages/{package_type}/{package_name}/versions"]["parameters"]; + response: Endpoints["GET /user/packages/{package_type}/{package_name}/versions"]["response"]; + }; + /** + * @see https://docs.github.com/rest/reference/users#list-public-email-addresses-for-the-authenticated-user + */ + "GET /user/public_emails": { + parameters: Endpoints["GET /user/public_emails"]["parameters"]; + response: Endpoints["GET /user/public_emails"]["response"]; + }; + /** + * @see https://docs.github.com/rest/reference/repos#list-repositories-for-the-authenticated-user + */ + "GET /user/repos": { + parameters: Endpoints["GET /user/repos"]["parameters"]; + response: Endpoints["GET /user/repos"]["response"]; + }; + /** + * @see https://docs.github.com/rest/reference/repos#list-repository-invitations-for-the-authenticated-user + */ + "GET /user/repository_invitations": { + parameters: Endpoints["GET /user/repository_invitations"]["parameters"]; + response: Endpoints["GET /user/repository_invitations"]["response"]; + }; + /** + * @see https://docs.github.com/rest/reference/activity#list-repositories-starred-by-the-authenticated-user + */ + "GET /user/starred": { + parameters: Endpoints["GET /user/starred"]["parameters"]; + response: Endpoints["GET /user/starred"]["response"]; + }; + /** + * @see https://docs.github.com/rest/reference/activity#list-repositories-watched-by-the-authenticated-user + */ + "GET /user/subscriptions": { + parameters: Endpoints["GET /user/subscriptions"]["parameters"]; + response: Endpoints["GET /user/subscriptions"]["response"]; + }; + /** + * @see https://docs.github.com/rest/reference/teams#list-teams-for-the-authenticated-user + */ + "GET /user/teams": { + parameters: Endpoints["GET /user/teams"]["parameters"]; + response: Endpoints["GET /user/teams"]["response"]; + }; + /** + * @see https://docs.github.com/rest/reference/users#list-users + */ + "GET /users": { + parameters: Endpoints["GET /users"]["parameters"]; + response: Endpoints["GET /users"]["response"]; + }; + /** + * @see https://docs.github.com/rest/reference/activity#list-events-for-the-authenticated-user + */ + "GET /users/{username}/events": { + parameters: Endpoints["GET /users/{username}/events"]["parameters"]; + response: Endpoints["GET /users/{username}/events"]["response"]; + }; + /** + * @see https://docs.github.com/rest/reference/activity#list-organization-events-for-the-authenticated-user + */ + "GET /users/{username}/events/orgs/{org}": { + parameters: Endpoints["GET /users/{username}/events/orgs/{org}"]["parameters"]; + response: Endpoints["GET /users/{username}/events/orgs/{org}"]["response"]; + }; + /** + * @see https://docs.github.com/rest/reference/activity#list-public-events-for-a-user + */ + "GET /users/{username}/events/public": { + parameters: Endpoints["GET /users/{username}/events/public"]["parameters"]; + response: Endpoints["GET /users/{username}/events/public"]["response"]; + }; + /** + * @see https://docs.github.com/rest/reference/users#list-followers-of-a-user + */ + "GET /users/{username}/followers": { + parameters: Endpoints["GET /users/{username}/followers"]["parameters"]; + response: Endpoints["GET /users/{username}/followers"]["response"]; + }; + /** + * @see https://docs.github.com/rest/reference/users#list-the-people-a-user-follows + */ + "GET /users/{username}/following": { + parameters: Endpoints["GET /users/{username}/following"]["parameters"]; + response: Endpoints["GET /users/{username}/following"]["response"]; + }; + /** + * @see https://docs.github.com/rest/reference/gists#list-gists-for-a-user + */ + "GET /users/{username}/gists": { + parameters: Endpoints["GET /users/{username}/gists"]["parameters"]; + response: Endpoints["GET /users/{username}/gists"]["response"]; + }; + /** + * @see https://docs.github.com/rest/reference/users#list-gpg-keys-for-a-user + */ + "GET /users/{username}/gpg_keys": { + parameters: Endpoints["GET /users/{username}/gpg_keys"]["parameters"]; + response: Endpoints["GET /users/{username}/gpg_keys"]["response"]; + }; + /** + * @see https://docs.github.com/rest/reference/users#list-public-keys-for-a-user + */ + "GET /users/{username}/keys": { + parameters: Endpoints["GET /users/{username}/keys"]["parameters"]; + response: Endpoints["GET /users/{username}/keys"]["response"]; + }; + /** + * @see https://docs.github.com/rest/reference/orgs#list-organizations-for-a-user + */ + "GET /users/{username}/orgs": { + parameters: Endpoints["GET /users/{username}/orgs"]["parameters"]; + response: Endpoints["GET /users/{username}/orgs"]["response"]; + }; + /** + * @see https://docs.github.com/rest/reference/packages#list-packages-for-user + */ + "GET /users/{username}/packages": { + parameters: Endpoints["GET /users/{username}/packages"]["parameters"]; + response: Endpoints["GET /users/{username}/packages"]["response"]; + }; + /** + * @see https://docs.github.com/rest/reference/projects#list-user-projects + */ + "GET /users/{username}/projects": { + parameters: Endpoints["GET /users/{username}/projects"]["parameters"]; + response: Endpoints["GET /users/{username}/projects"]["response"]; + }; + /** + * @see https://docs.github.com/rest/reference/activity#list-events-received-by-the-authenticated-user + */ + "GET /users/{username}/received_events": { + parameters: Endpoints["GET /users/{username}/received_events"]["parameters"]; + response: Endpoints["GET /users/{username}/received_events"]["response"]; + }; + /** + * @see https://docs.github.com/rest/reference/activity#list-public-events-received-by-a-user + */ + "GET /users/{username}/received_events/public": { + parameters: Endpoints["GET /users/{username}/received_events/public"]["parameters"]; + response: Endpoints["GET /users/{username}/received_events/public"]["response"]; + }; + /** + * @see https://docs.github.com/rest/reference/repos#list-repositories-for-a-user + */ + "GET /users/{username}/repos": { + parameters: Endpoints["GET /users/{username}/repos"]["parameters"]; + response: Endpoints["GET /users/{username}/repos"]["response"]; + }; + /** + * @see https://docs.github.com/rest/reference/activity#list-repositories-starred-by-a-user + */ + "GET /users/{username}/starred": { + parameters: Endpoints["GET /users/{username}/starred"]["parameters"]; + response: Endpoints["GET /users/{username}/starred"]["response"]; + }; + /** + * @see https://docs.github.com/rest/reference/activity#list-repositories-watched-by-a-user + */ + "GET /users/{username}/subscriptions": { + parameters: Endpoints["GET /users/{username}/subscriptions"]["parameters"]; + response: Endpoints["GET /users/{username}/subscriptions"]["response"]; + }; +} +export declare const paginatingEndpoints: (keyof PaginatingEndpoints)[]; diff --git a/node_modules/@octokit/plugin-paginate-rest/dist-types/index.d.ts b/node_modules/@octokit/plugin-paginate-rest/dist-types/index.d.ts new file mode 100644 index 0000000..4d84aae --- /dev/null +++ b/node_modules/@octokit/plugin-paginate-rest/dist-types/index.d.ts @@ -0,0 +1,16 @@ +import { Octokit } from "@octokit/core"; +import { PaginateInterface } from "./types"; +export { PaginateInterface } from "./types"; +export { PaginatingEndpoints } from "./types"; +export { composePaginateRest } from "./compose-paginate"; +export { isPaginatingEndpoint, paginatingEndpoints, } from "./paginating-endpoints"; +/** + * @param octokit Octokit instance + * @param options Options passed to Octokit constructor + */ +export declare function paginateRest(octokit: Octokit): { + paginate: PaginateInterface; +}; +export declare namespace paginateRest { + var VERSION: string; +} diff --git a/node_modules/@octokit/plugin-paginate-rest/dist-types/iterator.d.ts b/node_modules/@octokit/plugin-paginate-rest/dist-types/iterator.d.ts new file mode 100644 index 0000000..931d530 --- /dev/null +++ b/node_modules/@octokit/plugin-paginate-rest/dist-types/iterator.d.ts @@ -0,0 +1,20 @@ +import { Octokit } from "@octokit/core"; +import { RequestInterface, RequestParameters, Route } from "./types"; +export declare function iterator(octokit: Octokit, route: Route | RequestInterface, parameters?: RequestParameters): { + [Symbol.asyncIterator]: () => { + next(): Promise<{ + done: boolean; + value?: undefined; + } | { + value: import("@octokit/types/dist-types/OctokitResponse").OctokitResponse; + done?: undefined; + } | { + value: { + status: number; + headers: {}; + data: never[]; + }; + done?: undefined; + }>; + }; +}; diff --git a/node_modules/@octokit/plugin-paginate-rest/dist-types/normalize-paginated-list-response.d.ts b/node_modules/@octokit/plugin-paginate-rest/dist-types/normalize-paginated-list-response.d.ts new file mode 100644 index 0000000..f948a78 --- /dev/null +++ b/node_modules/@octokit/plugin-paginate-rest/dist-types/normalize-paginated-list-response.d.ts @@ -0,0 +1,18 @@ +/** + * Some “list” response that can be paginated have a different response structure + * + * They have a `total_count` key in the response (search also has `incomplete_results`, + * /installation/repositories also has `repository_selection`), as well as a key with + * the list of the items which name varies from endpoint to endpoint. + * + * Octokit normalizes these responses so that paginated results are always returned following + * the same structure. One challenge is that if the list response has only one page, no Link + * header is provided, so this header alone is not sufficient to check wether a response is + * paginated or not. + * + * We check if a "total_count" key is present in the response data, but also make sure that + * a "url" property is not, as the "Get the combined status for a specific ref" endpoint would + * otherwise match: https://developer.github.com/v3/repos/statuses/#get-the-combined-status-for-a-specific-ref + */ +import { OctokitResponse } from "./types"; +export declare function normalizePaginatedListResponse(response: OctokitResponse): OctokitResponse; diff --git a/node_modules/@octokit/plugin-paginate-rest/dist-types/paginate.d.ts b/node_modules/@octokit/plugin-paginate-rest/dist-types/paginate.d.ts new file mode 100644 index 0000000..774c604 --- /dev/null +++ b/node_modules/@octokit/plugin-paginate-rest/dist-types/paginate.d.ts @@ -0,0 +1,3 @@ +import { Octokit } from "@octokit/core"; +import { MapFunction, PaginationResults, RequestParameters, Route, RequestInterface } from "./types"; +export declare function paginate(octokit: Octokit, route: Route | RequestInterface, parameters?: RequestParameters, mapFn?: MapFunction): Promise>; diff --git a/node_modules/@octokit/plugin-paginate-rest/dist-types/paginating-endpoints.d.ts b/node_modules/@octokit/plugin-paginate-rest/dist-types/paginating-endpoints.d.ts new file mode 100644 index 0000000..f6a4d7b --- /dev/null +++ b/node_modules/@octokit/plugin-paginate-rest/dist-types/paginating-endpoints.d.ts @@ -0,0 +1,3 @@ +import { PaginatingEndpoints } from "./generated/paginating-endpoints"; +export { paginatingEndpoints } from "./generated/paginating-endpoints"; +export declare function isPaginatingEndpoint(arg: unknown): arg is keyof PaginatingEndpoints; diff --git a/node_modules/@octokit/plugin-paginate-rest/dist-types/types.d.ts b/node_modules/@octokit/plugin-paginate-rest/dist-types/types.d.ts new file mode 100644 index 0000000..0634907 --- /dev/null +++ b/node_modules/@octokit/plugin-paginate-rest/dist-types/types.d.ts @@ -0,0 +1,242 @@ +import { Octokit } from "@octokit/core"; +import * as OctokitTypes from "@octokit/types"; +export { EndpointOptions, RequestInterface, OctokitResponse, RequestParameters, Route, } from "@octokit/types"; +export { PaginatingEndpoints } from "./generated/paginating-endpoints"; +import { PaginatingEndpoints } from "./generated/paginating-endpoints"; +declare type KnownKeys = Extract<{ + [K in keyof T]: string extends K ? never : number extends K ? never : K; +} extends { + [_ in keyof T]: infer U; +} ? U : never, keyof T>; +declare type KeysMatching = { + [K in keyof T]: T[K] extends V ? K : never; +}[keyof T]; +declare type KnownKeysMatching = KeysMatching>, V>; +declare type GetResultsType = T extends { + data: any[]; +} ? T["data"] : T extends { + data: object; +} ? T["data"][KnownKeysMatching] : never; +declare type NormalizeResponse = T & { + data: GetResultsType; +}; +declare type DataType = "data" extends keyof T ? T["data"] : unknown; +export interface MapFunction>, M = unknown[]> { + (response: T, done: () => void): M; +} +export declare type PaginationResults = T[]; +export interface PaginateInterface { + /** + * Paginate a request using endpoint options and map each response to a custom array + * + * @param {object} options Must set `method` and `url`. Plus URL, query or body parameters, as well as `headers`, `mediaType.{format|previews}`, `request`, or `baseUrl`. + * @param {function} mapFn Optional method to map each response to a custom array + */ + (options: OctokitTypes.EndpointOptions, mapFn: MapFunction>, M[]>): Promise>; + /** + * Paginate a request using endpoint options + * + * @param {object} options Must set `method` and `url`. Plus URL, query or body parameters, as well as `headers`, `mediaType.{format|previews}`, `request`, or `baseUrl`. + */ + (options: OctokitTypes.EndpointOptions): Promise>; + /** + * Paginate a request using a known endpoint route string and map each response to a custom array + * + * @param {string} route Request method + URL. Example: `'GET /orgs/{org}'` + * @param {function} mapFn Optional method to map each response to a custom array + */ + (route: R, mapFn: MapFunction): Promise; + /** + * Paginate a request using a known endpoint route string and parameters, and map each response to a custom array + * + * @param {string} route Request method + URL. Example: `'GET /orgs/{org}'` + * @param {object} parameters URL, query or body parameters, as well as `headers`, `mediaType.{format|previews}`, `request`, or `baseUrl`. + * @param {function} mapFn Optional method to map each response to a custom array + */ + (route: R, parameters: PaginatingEndpoints[R]["parameters"], mapFn: MapFunction): Promise; + /** + * Paginate a request using an known endpoint route string + * + * @param {string} route Request method + URL. Example: `'GET /orgs/{org}'` + * @param {object} parameters? URL, query or body parameters, as well as `headers`, `mediaType.{format|previews}`, `request`, or `baseUrl`. + */ + (route: R, parameters?: PaginatingEndpoints[R]["parameters"]): Promise>; + /** + * Paginate a request using an unknown endpoint route string + * + * @param {string} route Request method + URL. Example: `'GET /orgs/{org}'` + * @param {object} parameters? URL, query or body parameters, as well as `headers`, `mediaType.{format|previews}`, `request`, or `baseUrl`. + */ + (route: R, parameters?: R extends keyof PaginatingEndpoints ? PaginatingEndpoints[R]["parameters"] : OctokitTypes.RequestParameters): Promise; + /** + * Paginate a request using an endpoint method and a map function + * + * @param {string} request Request method (`octokit.request` or `@octokit/request`) + * @param {function} mapFn? Optional method to map each response to a custom array + */ + (request: R, mapFn: MapFunction>, M>): Promise; + /** + * Paginate a request using an endpoint method, parameters, and a map function + * + * @param {string} request Request method (`octokit.request` or `@octokit/request`) + * @param {object} parameters URL, query or body parameters, as well as `headers`, `mediaType.{format|previews}`, `request`, or `baseUrl`. + * @param {function} mapFn? Optional method to map each response to a custom array + */ + (request: R, parameters: Parameters[0], mapFn: MapFunction>, M>): Promise; + /** + * Paginate a request using an endpoint method and parameters + * + * @param {string} request Request method (`octokit.request` or `@octokit/request`) + * @param {object} parameters? URL, query or body parameters, as well as `headers`, `mediaType.{format|previews}`, `request`, or `baseUrl`. + */ + (request: R, parameters?: Parameters[0]): Promise>["data"]>; + iterator: { + /** + * Get an async iterator to paginate a request using endpoint options + * + * @see {link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for-await...of} for await...of + * @param {object} options Must set `method` and `url`. Plus URL, query or body parameters, as well as `headers`, `mediaType.{format|previews}`, `request`, or `baseUrl`. + */ + (options: OctokitTypes.EndpointOptions): AsyncIterableIterator>>; + /** + * Get an async iterator to paginate a request using a known endpoint route string and optional parameters + * + * @see {link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for-await...of} for await...of + * @param {string} route Request method + URL. Example: `'GET /orgs/{org}'` + * @param {object} [parameters] URL, query or body parameters, as well as `headers`, `mediaType.{format|previews}`, `request`, or `baseUrl`. + */ + (route: R, parameters?: PaginatingEndpoints[R]["parameters"]): AsyncIterableIterator>>; + /** + * Get an async iterator to paginate a request using an unknown endpoint route string and optional parameters + * + * @see {link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for-await...of} for await...of + * @param {string} route Request method + URL. Example: `'GET /orgs/{org}'` + * @param {object} [parameters] URL, query or body parameters, as well as `headers`, `mediaType.{format|previews}`, `request`, or `baseUrl`. + */ + (route: R, parameters?: R extends keyof PaginatingEndpoints ? PaginatingEndpoints[R]["parameters"] : OctokitTypes.RequestParameters): AsyncIterableIterator>>; + /** + * Get an async iterator to paginate a request using a request method and optional parameters + * + * @see {link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for-await...of} for await...of + * @param {string} request `@octokit/request` or `octokit.request` method + * @param {object} [parameters] URL, query or body parameters, as well as `headers`, `mediaType.{format|previews}`, `request`, or `baseUrl`. + */ + (request: R, parameters?: Parameters[0]): AsyncIterableIterator>>; + }; +} +export interface ComposePaginateInterface { + /** + * Paginate a request using endpoint options and map each response to a custom array + * + * @param {object} octokit Octokit instance + * @param {object} options Must set `method` and `url`. Plus URL, query or body parameters, as well as `headers`, `mediaType.{format|previews}`, `request`, or `baseUrl`. + * @param {function} mapFn Optional method to map each response to a custom array + */ + (octokit: Octokit, options: OctokitTypes.EndpointOptions, mapFn: MapFunction>, M[]>): Promise>; + /** + * Paginate a request using endpoint options + * + * @param {object} octokit Octokit instance + * @param {object} options Must set `method` and `url`. Plus URL, query or body parameters, as well as `headers`, `mediaType.{format|previews}`, `request`, or `baseUrl`. + */ + (octokit: Octokit, options: OctokitTypes.EndpointOptions): Promise>; + /** + * Paginate a request using a known endpoint route string and map each response to a custom array + * + * @param {object} octokit Octokit instance + * @param {string} route Request method + URL. Example: `'GET /orgs/{org}'` + * @param {function} mapFn Optional method to map each response to a custom array + */ + (octokit: Octokit, route: R, mapFn: MapFunction): Promise; + /** + * Paginate a request using a known endpoint route string and parameters, and map each response to a custom array + * + * @param {object} octokit Octokit instance + * @param {string} route Request method + URL. Example: `'GET /orgs/{org}'` + * @param {object} parameters URL, query or body parameters, as well as `headers`, `mediaType.{format|previews}`, `request`, or `baseUrl`. + * @param {function} mapFn Optional method to map each response to a custom array + */ + (octokit: Octokit, route: R, parameters: PaginatingEndpoints[R]["parameters"], mapFn: MapFunction): Promise; + /** + * Paginate a request using an known endpoint route string + * + * @param {object} octokit Octokit instance + * @param {string} route Request method + URL. Example: `'GET /orgs/{org}'` + * @param {object} parameters? URL, query or body parameters, as well as `headers`, `mediaType.{format|previews}`, `request`, or `baseUrl`. + */ + (octokit: Octokit, route: R, parameters?: PaginatingEndpoints[R]["parameters"]): Promise>; + /** + * Paginate a request using an unknown endpoint route string + * + * @param {object} octokit Octokit instance + * @param {string} route Request method + URL. Example: `'GET /orgs/{org}'` + * @param {object} parameters? URL, query or body parameters, as well as `headers`, `mediaType.{format|previews}`, `request`, or `baseUrl`. + */ + (octokit: Octokit, route: R, parameters?: R extends keyof PaginatingEndpoints ? PaginatingEndpoints[R]["parameters"] : OctokitTypes.RequestParameters): Promise; + /** + * Paginate a request using an endpoint method and a map function + * + * @param {object} octokit Octokit instance + * @param {string} request Request method (`octokit.request` or `@octokit/request`) + * @param {function} mapFn? Optional method to map each response to a custom array + */ + (octokit: Octokit, request: R, mapFn: MapFunction>, M>): Promise; + /** + * Paginate a request using an endpoint method, parameters, and a map function + * + * @param {object} octokit Octokit instance + * @param {string} request Request method (`octokit.request` or `@octokit/request`) + * @param {object} parameters URL, query or body parameters, as well as `headers`, `mediaType.{format|previews}`, `request`, or `baseUrl`. + * @param {function} mapFn? Optional method to map each response to a custom array + */ + (octokit: Octokit, request: R, parameters: Parameters[0], mapFn: MapFunction>, M>): Promise; + /** + * Paginate a request using an endpoint method and parameters + * + * @param {object} octokit Octokit instance + * @param {string} request Request method (`octokit.request` or `@octokit/request`) + * @param {object} parameters? URL, query or body parameters, as well as `headers`, `mediaType.{format|previews}`, `request`, or `baseUrl`. + */ + (octokit: Octokit, request: R, parameters?: Parameters[0]): Promise>["data"]>; + iterator: { + /** + * Get an async iterator to paginate a request using endpoint options + * + * @see {link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for-await...of} for await...of + * + * @param {object} octokit Octokit instance + * @param {object} options Must set `method` and `url`. Plus URL, query or body parameters, as well as `headers`, `mediaType.{format|previews}`, `request`, or `baseUrl`. + */ + (octokit: Octokit, options: OctokitTypes.EndpointOptions): AsyncIterableIterator>>; + /** + * Get an async iterator to paginate a request using a known endpoint route string and optional parameters + * + * @see {link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for-await...of} for await...of + * + * @param {object} octokit Octokit instance + * @param {string} route Request method + URL. Example: `'GET /orgs/{org}'` + * @param {object} [parameters] URL, query or body parameters, as well as `headers`, `mediaType.{format|previews}`, `request`, or `baseUrl`. + */ + (octokit: Octokit, route: R, parameters?: PaginatingEndpoints[R]["parameters"]): AsyncIterableIterator>>; + /** + * Get an async iterator to paginate a request using an unknown endpoint route string and optional parameters + * + * @see {link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for-await...of} for await...of + * + * @param {object} octokit Octokit instance + * @param {string} route Request method + URL. Example: `'GET /orgs/{org}'` + * @param {object} [parameters] URL, query or body parameters, as well as `headers`, `mediaType.{format|previews}`, `request`, or `baseUrl`. + */ + (octokit: Octokit, route: R, parameters?: R extends keyof PaginatingEndpoints ? PaginatingEndpoints[R]["parameters"] : OctokitTypes.RequestParameters): AsyncIterableIterator>>; + /** + * Get an async iterator to paginate a request using a request method and optional parameters + * + * @see {link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for-await...of} for await...of + * + * @param {object} octokit Octokit instance + * @param {string} request `@octokit/request` or `octokit.request` method + * @param {object} [parameters] URL, query or body parameters, as well as `headers`, `mediaType.{format|previews}`, `request`, or `baseUrl`. + */ + (octokit: Octokit, request: R, parameters?: Parameters[0]): AsyncIterableIterator>>; + }; +} diff --git a/node_modules/@octokit/plugin-paginate-rest/dist-types/version.d.ts b/node_modules/@octokit/plugin-paginate-rest/dist-types/version.d.ts new file mode 100644 index 0000000..77e3d51 --- /dev/null +++ b/node_modules/@octokit/plugin-paginate-rest/dist-types/version.d.ts @@ -0,0 +1 @@ +export declare const VERSION = "2.21.3"; diff --git a/node_modules/@octokit/plugin-paginate-rest/dist-web/index.js b/node_modules/@octokit/plugin-paginate-rest/dist-web/index.js new file mode 100644 index 0000000..e76659f --- /dev/null +++ b/node_modules/@octokit/plugin-paginate-rest/dist-web/index.js @@ -0,0 +1,358 @@ +const VERSION = "2.21.3"; + +/** + * Some “list” response that can be paginated have a different response structure + * + * They have a `total_count` key in the response (search also has `incomplete_results`, + * /installation/repositories also has `repository_selection`), as well as a key with + * the list of the items which name varies from endpoint to endpoint. + * + * Octokit normalizes these responses so that paginated results are always returned following + * the same structure. One challenge is that if the list response has only one page, no Link + * header is provided, so this header alone is not sufficient to check wether a response is + * paginated or not. + * + * We check if a "total_count" key is present in the response data, but also make sure that + * a "url" property is not, as the "Get the combined status for a specific ref" endpoint would + * otherwise match: https://developer.github.com/v3/repos/statuses/#get-the-combined-status-for-a-specific-ref + */ +function normalizePaginatedListResponse(response) { + // endpoints can respond with 204 if repository is empty + if (!response.data) { + return { + ...response, + data: [], + }; + } + const responseNeedsNormalization = "total_count" in response.data && !("url" in response.data); + if (!responseNeedsNormalization) + return response; + // keep the additional properties intact as there is currently no other way + // to retrieve the same information. + 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; +} + +function iterator(octokit, route, parameters) { + const options = typeof route === "function" + ? route.endpoint(parameters) + : octokit.request.endpoint(route, parameters); + const requestMethod = typeof route === "function" ? route : octokit.request; + const method = options.method; + const headers = options.headers; + let url = options.url; + return { + [Symbol.asyncIterator]: () => ({ + async next() { + if (!url) + return { done: true }; + try { + const response = await requestMethod({ method, url, headers }); + const normalizedResponse = normalizePaginatedListResponse(response); + // `response.headers.link` format: + // '; rel="next", ; rel="last"' + // sets `url` to undefined if "next" URL is not present or `link` header is not set + 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: [], + }, + }; + } + }, + }), + }; +} + +function paginate(octokit, route, parameters, mapFn) { + if (typeof parameters === "function") { + mapFn = parameters; + parameters = undefined; + } + return gather(octokit, [], iterator(octokit, route, parameters)[Symbol.asyncIterator](), mapFn); +} +function gather(octokit, results, iterator, mapFn) { + return iterator.next().then((result) => { + if (result.done) { + return results; + } + let earlyExit = false; + function done() { + earlyExit = true; + } + results = results.concat(mapFn ? mapFn(result.value, done) : result.value.data); + if (earlyExit) { + return results; + } + return gather(octokit, results, iterator, mapFn); + }); +} + +const composePaginateRest = Object.assign(paginate, { + iterator, +}); + +const 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", + "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", + "GET /user/migrations/{migration_id}/repositories", + "GET /user/orgs", + "GET /user/packages", + "GET /user/packages/{package_type}/{package_name}/versions", + "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; + } +} + +/** + * @param octokit Octokit instance + * @param options Options passed to Octokit constructor + */ +function paginateRest(octokit) { + return { + paginate: Object.assign(paginate.bind(null, octokit), { + iterator: iterator.bind(null, octokit), + }), + }; +} +paginateRest.VERSION = VERSION; + +export { composePaginateRest, isPaginatingEndpoint, paginateRest, paginatingEndpoints }; +//# sourceMappingURL=index.js.map diff --git a/node_modules/@octokit/plugin-paginate-rest/dist-web/index.js.map b/node_modules/@octokit/plugin-paginate-rest/dist-web/index.js.map new file mode 100644 index 0000000..878b8e4 --- /dev/null +++ b/node_modules/@octokit/plugin-paginate-rest/dist-web/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sources":["../dist-src/version.js","../dist-src/normalize-paginated-list-response.js","../dist-src/iterator.js","../dist-src/paginate.js","../dist-src/compose-paginate.js","../dist-src/generated/paginating-endpoints.js","../dist-src/paginating-endpoints.js","../dist-src/index.js"],"sourcesContent":["export const VERSION = \"2.21.3\";\n","/**\n * Some “list” response that can be paginated have a different response structure\n *\n * They have a `total_count` key in the response (search also has `incomplete_results`,\n * /installation/repositories also has `repository_selection`), as well as a key with\n * the list of the items which name varies from endpoint to endpoint.\n *\n * Octokit normalizes these responses so that paginated results are always returned following\n * the same structure. One challenge is that if the list response has only one page, no Link\n * header is provided, so this header alone is not sufficient to check wether a response is\n * paginated or not.\n *\n * We check if a \"total_count\" key is present in the response data, but also make sure that\n * a \"url\" property is not, as the \"Get the combined status for a specific ref\" endpoint would\n * otherwise match: https://developer.github.com/v3/repos/statuses/#get-the-combined-status-for-a-specific-ref\n */\nexport function normalizePaginatedListResponse(response) {\n // endpoints can respond with 204 if repository is empty\n if (!response.data) {\n return {\n ...response,\n data: [],\n };\n }\n const responseNeedsNormalization = \"total_count\" in response.data && !(\"url\" in response.data);\n if (!responseNeedsNormalization)\n return response;\n // keep the additional properties intact as there is currently no other way\n // to retrieve the same information.\n const incompleteResults = response.data.incomplete_results;\n const repositorySelection = response.data.repository_selection;\n const totalCount = response.data.total_count;\n delete response.data.incomplete_results;\n delete response.data.repository_selection;\n delete response.data.total_count;\n const namespaceKey = Object.keys(response.data)[0];\n const data = response.data[namespaceKey];\n response.data = data;\n if (typeof incompleteResults !== \"undefined\") {\n response.data.incomplete_results = incompleteResults;\n }\n if (typeof repositorySelection !== \"undefined\") {\n response.data.repository_selection = repositorySelection;\n }\n response.data.total_count = totalCount;\n return response;\n}\n","import { normalizePaginatedListResponse } from \"./normalize-paginated-list-response\";\nexport function iterator(octokit, route, parameters) {\n const options = typeof route === \"function\"\n ? route.endpoint(parameters)\n : octokit.request.endpoint(route, parameters);\n const requestMethod = typeof route === \"function\" ? route : octokit.request;\n const method = options.method;\n const headers = options.headers;\n let url = options.url;\n return {\n [Symbol.asyncIterator]: () => ({\n async next() {\n if (!url)\n return { done: true };\n try {\n const response = await requestMethod({ method, url, headers });\n const normalizedResponse = normalizePaginatedListResponse(response);\n // `response.headers.link` format:\n // '; rel=\"next\", ; rel=\"last\"'\n // sets `url` to undefined if \"next\" URL is not present or `link` header is not set\n url = ((normalizedResponse.headers.link || \"\").match(/<([^>]+)>;\\s*rel=\"next\"/) || [])[1];\n return { value: normalizedResponse };\n }\n catch (error) {\n if (error.status !== 409)\n throw error;\n url = \"\";\n return {\n value: {\n status: 200,\n headers: {},\n data: [],\n },\n };\n }\n },\n }),\n };\n}\n","import { iterator } from \"./iterator\";\nexport function paginate(octokit, route, parameters, mapFn) {\n if (typeof parameters === \"function\") {\n mapFn = parameters;\n parameters = undefined;\n }\n return gather(octokit, [], iterator(octokit, route, parameters)[Symbol.asyncIterator](), mapFn);\n}\nfunction gather(octokit, results, iterator, mapFn) {\n return iterator.next().then((result) => {\n if (result.done) {\n return results;\n }\n let earlyExit = false;\n function done() {\n earlyExit = true;\n }\n results = results.concat(mapFn ? mapFn(result.value, done) : result.value.data);\n if (earlyExit) {\n return results;\n }\n return gather(octokit, results, iterator, mapFn);\n });\n}\n","import { paginate } from \"./paginate\";\nimport { iterator } from \"./iterator\";\nexport const composePaginateRest = Object.assign(paginate, {\n iterator,\n});\n","export const paginatingEndpoints = [\n \"GET /app/hook/deliveries\",\n \"GET /app/installations\",\n \"GET /applications/grants\",\n \"GET /authorizations\",\n \"GET /enterprises/{enterprise}/actions/permissions/organizations\",\n \"GET /enterprises/{enterprise}/actions/runner-groups\",\n \"GET /enterprises/{enterprise}/actions/runner-groups/{runner_group_id}/organizations\",\n \"GET /enterprises/{enterprise}/actions/runner-groups/{runner_group_id}/runners\",\n \"GET /enterprises/{enterprise}/actions/runners\",\n \"GET /enterprises/{enterprise}/audit-log\",\n \"GET /enterprises/{enterprise}/secret-scanning/alerts\",\n \"GET /enterprises/{enterprise}/settings/billing/advanced-security\",\n \"GET /events\",\n \"GET /gists\",\n \"GET /gists/public\",\n \"GET /gists/starred\",\n \"GET /gists/{gist_id}/comments\",\n \"GET /gists/{gist_id}/commits\",\n \"GET /gists/{gist_id}/forks\",\n \"GET /installation/repositories\",\n \"GET /issues\",\n \"GET /licenses\",\n \"GET /marketplace_listing/plans\",\n \"GET /marketplace_listing/plans/{plan_id}/accounts\",\n \"GET /marketplace_listing/stubbed/plans\",\n \"GET /marketplace_listing/stubbed/plans/{plan_id}/accounts\",\n \"GET /networks/{owner}/{repo}/events\",\n \"GET /notifications\",\n \"GET /organizations\",\n \"GET /orgs/{org}/actions/cache/usage-by-repository\",\n \"GET /orgs/{org}/actions/permissions/repositories\",\n \"GET /orgs/{org}/actions/runner-groups\",\n \"GET /orgs/{org}/actions/runner-groups/{runner_group_id}/repositories\",\n \"GET /orgs/{org}/actions/runner-groups/{runner_group_id}/runners\",\n \"GET /orgs/{org}/actions/runners\",\n \"GET /orgs/{org}/actions/secrets\",\n \"GET /orgs/{org}/actions/secrets/{secret_name}/repositories\",\n \"GET /orgs/{org}/audit-log\",\n \"GET /orgs/{org}/blocks\",\n \"GET /orgs/{org}/code-scanning/alerts\",\n \"GET /orgs/{org}/codespaces\",\n \"GET /orgs/{org}/credential-authorizations\",\n \"GET /orgs/{org}/dependabot/secrets\",\n \"GET /orgs/{org}/dependabot/secrets/{secret_name}/repositories\",\n \"GET /orgs/{org}/events\",\n \"GET /orgs/{org}/external-groups\",\n \"GET /orgs/{org}/failed_invitations\",\n \"GET /orgs/{org}/hooks\",\n \"GET /orgs/{org}/hooks/{hook_id}/deliveries\",\n \"GET /orgs/{org}/installations\",\n \"GET /orgs/{org}/invitations\",\n \"GET /orgs/{org}/invitations/{invitation_id}/teams\",\n \"GET /orgs/{org}/issues\",\n \"GET /orgs/{org}/members\",\n \"GET /orgs/{org}/migrations\",\n \"GET /orgs/{org}/migrations/{migration_id}/repositories\",\n \"GET /orgs/{org}/outside_collaborators\",\n \"GET /orgs/{org}/packages\",\n \"GET /orgs/{org}/packages/{package_type}/{package_name}/versions\",\n \"GET /orgs/{org}/projects\",\n \"GET /orgs/{org}/public_members\",\n \"GET /orgs/{org}/repos\",\n \"GET /orgs/{org}/secret-scanning/alerts\",\n \"GET /orgs/{org}/settings/billing/advanced-security\",\n \"GET /orgs/{org}/team-sync/groups\",\n \"GET /orgs/{org}/teams\",\n \"GET /orgs/{org}/teams/{team_slug}/discussions\",\n \"GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments\",\n \"GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions\",\n \"GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions\",\n \"GET /orgs/{org}/teams/{team_slug}/invitations\",\n \"GET /orgs/{org}/teams/{team_slug}/members\",\n \"GET /orgs/{org}/teams/{team_slug}/projects\",\n \"GET /orgs/{org}/teams/{team_slug}/repos\",\n \"GET /orgs/{org}/teams/{team_slug}/teams\",\n \"GET /projects/columns/{column_id}/cards\",\n \"GET /projects/{project_id}/collaborators\",\n \"GET /projects/{project_id}/columns\",\n \"GET /repos/{owner}/{repo}/actions/artifacts\",\n \"GET /repos/{owner}/{repo}/actions/caches\",\n \"GET /repos/{owner}/{repo}/actions/runners\",\n \"GET /repos/{owner}/{repo}/actions/runs\",\n \"GET /repos/{owner}/{repo}/actions/runs/{run_id}/artifacts\",\n \"GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/jobs\",\n \"GET /repos/{owner}/{repo}/actions/runs/{run_id}/jobs\",\n \"GET /repos/{owner}/{repo}/actions/secrets\",\n \"GET /repos/{owner}/{repo}/actions/workflows\",\n \"GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/runs\",\n \"GET /repos/{owner}/{repo}/assignees\",\n \"GET /repos/{owner}/{repo}/branches\",\n \"GET /repos/{owner}/{repo}/check-runs/{check_run_id}/annotations\",\n \"GET /repos/{owner}/{repo}/check-suites/{check_suite_id}/check-runs\",\n \"GET /repos/{owner}/{repo}/code-scanning/alerts\",\n \"GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances\",\n \"GET /repos/{owner}/{repo}/code-scanning/analyses\",\n \"GET /repos/{owner}/{repo}/codespaces\",\n \"GET /repos/{owner}/{repo}/codespaces/devcontainers\",\n \"GET /repos/{owner}/{repo}/codespaces/secrets\",\n \"GET /repos/{owner}/{repo}/collaborators\",\n \"GET /repos/{owner}/{repo}/comments\",\n \"GET /repos/{owner}/{repo}/comments/{comment_id}/reactions\",\n \"GET /repos/{owner}/{repo}/commits\",\n \"GET /repos/{owner}/{repo}/commits/{commit_sha}/comments\",\n \"GET /repos/{owner}/{repo}/commits/{commit_sha}/pulls\",\n \"GET /repos/{owner}/{repo}/commits/{ref}/check-runs\",\n \"GET /repos/{owner}/{repo}/commits/{ref}/check-suites\",\n \"GET /repos/{owner}/{repo}/commits/{ref}/status\",\n \"GET /repos/{owner}/{repo}/commits/{ref}/statuses\",\n \"GET /repos/{owner}/{repo}/contributors\",\n \"GET /repos/{owner}/{repo}/dependabot/secrets\",\n \"GET /repos/{owner}/{repo}/deployments\",\n \"GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses\",\n \"GET /repos/{owner}/{repo}/environments\",\n \"GET /repos/{owner}/{repo}/events\",\n \"GET /repos/{owner}/{repo}/forks\",\n \"GET /repos/{owner}/{repo}/git/matching-refs/{ref}\",\n \"GET /repos/{owner}/{repo}/hooks\",\n \"GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries\",\n \"GET /repos/{owner}/{repo}/invitations\",\n \"GET /repos/{owner}/{repo}/issues\",\n \"GET /repos/{owner}/{repo}/issues/comments\",\n \"GET /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions\",\n \"GET /repos/{owner}/{repo}/issues/events\",\n \"GET /repos/{owner}/{repo}/issues/{issue_number}/comments\",\n \"GET /repos/{owner}/{repo}/issues/{issue_number}/events\",\n \"GET /repos/{owner}/{repo}/issues/{issue_number}/labels\",\n \"GET /repos/{owner}/{repo}/issues/{issue_number}/reactions\",\n \"GET /repos/{owner}/{repo}/issues/{issue_number}/timeline\",\n \"GET /repos/{owner}/{repo}/keys\",\n \"GET /repos/{owner}/{repo}/labels\",\n \"GET /repos/{owner}/{repo}/milestones\",\n \"GET /repos/{owner}/{repo}/milestones/{milestone_number}/labels\",\n \"GET /repos/{owner}/{repo}/notifications\",\n \"GET /repos/{owner}/{repo}/pages/builds\",\n \"GET /repos/{owner}/{repo}/projects\",\n \"GET /repos/{owner}/{repo}/pulls\",\n \"GET /repos/{owner}/{repo}/pulls/comments\",\n \"GET /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions\",\n \"GET /repos/{owner}/{repo}/pulls/{pull_number}/comments\",\n \"GET /repos/{owner}/{repo}/pulls/{pull_number}/commits\",\n \"GET /repos/{owner}/{repo}/pulls/{pull_number}/files\",\n \"GET /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers\",\n \"GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews\",\n \"GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/comments\",\n \"GET /repos/{owner}/{repo}/releases\",\n \"GET /repos/{owner}/{repo}/releases/{release_id}/assets\",\n \"GET /repos/{owner}/{repo}/releases/{release_id}/reactions\",\n \"GET /repos/{owner}/{repo}/secret-scanning/alerts\",\n \"GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}/locations\",\n \"GET /repos/{owner}/{repo}/stargazers\",\n \"GET /repos/{owner}/{repo}/subscribers\",\n \"GET /repos/{owner}/{repo}/tags\",\n \"GET /repos/{owner}/{repo}/teams\",\n \"GET /repos/{owner}/{repo}/topics\",\n \"GET /repositories\",\n \"GET /repositories/{repository_id}/environments/{environment_name}/secrets\",\n \"GET /search/code\",\n \"GET /search/commits\",\n \"GET /search/issues\",\n \"GET /search/labels\",\n \"GET /search/repositories\",\n \"GET /search/topics\",\n \"GET /search/users\",\n \"GET /teams/{team_id}/discussions\",\n \"GET /teams/{team_id}/discussions/{discussion_number}/comments\",\n \"GET /teams/{team_id}/discussions/{discussion_number}/comments/{comment_number}/reactions\",\n \"GET /teams/{team_id}/discussions/{discussion_number}/reactions\",\n \"GET /teams/{team_id}/invitations\",\n \"GET /teams/{team_id}/members\",\n \"GET /teams/{team_id}/projects\",\n \"GET /teams/{team_id}/repos\",\n \"GET /teams/{team_id}/teams\",\n \"GET /user/blocks\",\n \"GET /user/codespaces\",\n \"GET /user/codespaces/secrets\",\n \"GET /user/emails\",\n \"GET /user/followers\",\n \"GET /user/following\",\n \"GET /user/gpg_keys\",\n \"GET /user/installations\",\n \"GET /user/installations/{installation_id}/repositories\",\n \"GET /user/issues\",\n \"GET /user/keys\",\n \"GET /user/marketplace_purchases\",\n \"GET /user/marketplace_purchases/stubbed\",\n \"GET /user/memberships/orgs\",\n \"GET /user/migrations\",\n \"GET /user/migrations/{migration_id}/repositories\",\n \"GET /user/orgs\",\n \"GET /user/packages\",\n \"GET /user/packages/{package_type}/{package_name}/versions\",\n \"GET /user/public_emails\",\n \"GET /user/repos\",\n \"GET /user/repository_invitations\",\n \"GET /user/starred\",\n \"GET /user/subscriptions\",\n \"GET /user/teams\",\n \"GET /users\",\n \"GET /users/{username}/events\",\n \"GET /users/{username}/events/orgs/{org}\",\n \"GET /users/{username}/events/public\",\n \"GET /users/{username}/followers\",\n \"GET /users/{username}/following\",\n \"GET /users/{username}/gists\",\n \"GET /users/{username}/gpg_keys\",\n \"GET /users/{username}/keys\",\n \"GET /users/{username}/orgs\",\n \"GET /users/{username}/packages\",\n \"GET /users/{username}/projects\",\n \"GET /users/{username}/received_events\",\n \"GET /users/{username}/received_events/public\",\n \"GET /users/{username}/repos\",\n \"GET /users/{username}/starred\",\n \"GET /users/{username}/subscriptions\",\n];\n","import { paginatingEndpoints, } from \"./generated/paginating-endpoints\";\nexport { paginatingEndpoints } from \"./generated/paginating-endpoints\";\nexport function isPaginatingEndpoint(arg) {\n if (typeof arg === \"string\") {\n return paginatingEndpoints.includes(arg);\n }\n else {\n return false;\n }\n}\n","import { VERSION } from \"./version\";\nimport { paginate } from \"./paginate\";\nimport { iterator } from \"./iterator\";\nexport { composePaginateRest } from \"./compose-paginate\";\nexport { isPaginatingEndpoint, paginatingEndpoints, } from \"./paginating-endpoints\";\n/**\n * @param octokit Octokit instance\n * @param options Options passed to Octokit constructor\n */\nexport function paginateRest(octokit) {\n return {\n paginate: Object.assign(paginate.bind(null, octokit), {\n iterator: iterator.bind(null, octokit),\n }),\n };\n}\npaginateRest.VERSION = VERSION;\n"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@octokit/plugin-paginate-rest/package.json b/node_modules/@octokit/plugin-paginate-rest/package.json new file mode 100644 index 0000000..db9a6dc --- /dev/null +++ b/node_modules/@octokit/plugin-paginate-rest/package.json @@ -0,0 +1,51 @@ +{ + "name": "@octokit/plugin-paginate-rest", + "description": "Octokit plugin to paginate REST API endpoint responses", + "version": "2.21.3", + "license": "MIT", + "files": [ + "dist-*/", + "bin/" + ], + "source": "dist-src/index.js", + "types": "dist-types/index.d.ts", + "main": "dist-node/index.js", + "module": "dist-web/index.js", + "pika": true, + "sideEffects": false, + "keywords": [ + "github", + "api", + "sdk", + "toolkit" + ], + "repository": "github:octokit/plugin-paginate-rest.js", + "dependencies": { + "@octokit/types": "^6.40.0" + }, + "peerDependencies": { + "@octokit/core": ">=2" + }, + "devDependencies": { + "@octokit/core": "^4.0.0", + "@octokit/plugin-rest-endpoint-methods": "^6.0.0", + "@pika/pack": "^0.3.7", + "@pika/plugin-build-node": "^0.9.0", + "@pika/plugin-build-web": "^0.9.0", + "@pika/plugin-ts-standard-pkg": "^0.9.0", + "@types/fetch-mock": "^7.3.1", + "@types/jest": "^28.0.0", + "@types/node": "^16.0.0", + "fetch-mock": "^9.0.0", + "github-openapi-graphql-query": "^2.0.0", + "jest": "^28.0.0", + "npm-run-all": "^4.1.5", + "prettier": "2.7.1", + "semantic-release-plugin-update-version-in-files": "^1.0.0", + "ts-jest": "^28.0.0", + "typescript": "^4.0.2" + }, + "publishConfig": { + "access": "public" + } +} diff --git a/node_modules/@octokit/plugin-rest-endpoint-methods/LICENSE b/node_modules/@octokit/plugin-rest-endpoint-methods/LICENSE new file mode 100644 index 0000000..57bee5f --- /dev/null +++ b/node_modules/@octokit/plugin-rest-endpoint-methods/LICENSE @@ -0,0 +1,7 @@ +MIT License Copyright (c) 2019 Octokit contributors + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice (including the next paragraph) shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/@octokit/plugin-rest-endpoint-methods/README.md b/node_modules/@octokit/plugin-rest-endpoint-methods/README.md new file mode 100644 index 0000000..b23ff58 --- /dev/null +++ b/node_modules/@octokit/plugin-rest-endpoint-methods/README.md @@ -0,0 +1,76 @@ +# plugin-rest-endpoint-methods.js + +> Octokit plugin adding one method for all of api.github.com REST API endpoints + +[![@latest](https://img.shields.io/npm/v/@octokit/plugin-rest-endpoint-methods.svg)](https://www.npmjs.com/package/@octokit/plugin-rest-endpoint-methods) +[![Build Status](https://github.com/octokit/plugin-rest-endpoint-methods.js/workflows/Test/badge.svg)](https://github.com/octokit/plugin-rest-endpoint-methods.js/actions?workflow=Test) + +## Usage + + + + + + +
        +Browsers + + +Load `@octokit/plugin-rest-endpoint-methods` and [`@octokit/core`](https://github.com/octokit/core.js) (or core-compatible module) directly from [cdn.skypack.dev](https://cdn.skypack.dev) + +```html + +``` + +
        +Node + + +Install with `npm install @octokit/core @octokit/plugin-rest-endpoint-methods`. Optionally replace `@octokit/core` with a compatible module + +```js +const { Octokit } = require("@octokit/core"); +const { + restEndpointMethods, +} = require("@octokit/plugin-rest-endpoint-methods"); +``` + +
        + +```js +const MyOctokit = Octokit.plugin(restEndpointMethods); +const octokit = new MyOctokit({ auth: "secret123" }); + +// https://developer.github.com/v3/users/#get-the-authenticated-user +octokit.rest.users.getAuthenticated(); +``` + +There is one method for each REST API endpoint documented at [https://developer.github.com/v3](https://developer.github.com/v3). All endpoint methods are documented in the [docs/](docs/) folder, e.g. [docs/users/getAuthenticated.md](docs/users/getAuthenticated.md) + +## TypeScript + +Parameter and response types for all endpoint methods exported as `{ RestEndpointMethodTypes }`. + +Example + +```ts +import { RestEndpointMethodTypes } from "@octokit/plugin-rest-endpoint-methods"; + +type UpdateLabelParameters = + RestEndpointMethodTypes["issues"]["updateLabel"]["parameters"]; +type UpdateLabelResponse = + RestEndpointMethodTypes["issues"]["updateLabel"]["response"]; +``` + +In order to get types beyond parameters and responses, check out [`@octokit/openapi-types`](https://github.com/octokit/openapi-types.ts/#readme), which is a direct transpilation from GitHub's official OpenAPI specification. + +## Contributing + +See [CONTRIBUTING.md](CONTRIBUTING.md) + +## License + +[MIT](LICENSE) diff --git a/node_modules/@octokit/plugin-rest-endpoint-methods/dist-node/index.js b/node_modules/@octokit/plugin-rest-endpoint-methods/dist-node/index.js new file mode 100644 index 0000000..a7c5c16 --- /dev/null +++ b/node_modules/@octokit/plugin-rest-endpoint-methods/dist-node/index.js @@ -0,0 +1,1107 @@ +'use strict'; + +Object.defineProperty(exports, '__esModule', { value: true }); + +function ownKeys(object, enumerableOnly) { + var keys = Object.keys(object); + + if (Object.getOwnPropertySymbols) { + var symbols = Object.getOwnPropertySymbols(object); + + if (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] : {}; + + 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; +} + +function _defineProperty(obj, key, value) { + if (key in obj) { + Object.defineProperty(obj, key, { + value: value, + enumerable: true, + configurable: true, + writable: true + }); + } else { + obj[key] = value; + } + + return obj; +} + +const 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"] + } +}; + +const VERSION = "5.16.2"; + +function endpointsToMethods(octokit, 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(octokit, scope, methodName, endpointDefaults, decorations); + continue; + } + + scopeMethods[methodName] = octokit.request.defaults(endpointDefaults); + } + } + + return newMethods; +} + +function decorate(octokit, scope, methodName, defaults, decorations) { + const requestWithDefaults = octokit.request.defaults(defaults); + /* istanbul ignore next */ + + function withDecorations(...args) { + // @ts-ignore https://github.com/microsoft/TypeScript/issues/25488 + let options = requestWithDefaults.endpoint.merge(...args); // There are currently no other decorations than `.mapToData` + + if (decorations.mapToData) { + options = Object.assign({}, options, { + data: options[decorations.mapToData], + [decorations.mapToData]: undefined + }); + return requestWithDefaults(options); + } + + if (decorations.renamed) { + const [newScope, newMethodName] = decorations.renamed; + octokit.log.warn(`octokit.${scope}.${methodName}() has been renamed to octokit.${newScope}.${newMethodName}()`); + } + + if (decorations.deprecated) { + octokit.log.warn(decorations.deprecated); + } + + if (decorations.renamedParameters) { + // @ts-ignore https://github.com/microsoft/TypeScript/issues/25488 + const options = requestWithDefaults.endpoint.merge(...args); + + for (const [name, alias] of Object.entries(decorations.renamedParameters)) { + if (name in options) { + octokit.log.warn(`"${name}" parameter is deprecated for "octokit.${scope}.${methodName}()". Use "${alias}" instead`); + + if (!(alias in options)) { + options[alias] = options[name]; + } + + delete options[name]; + } + } + + return requestWithDefaults(options); + } // @ts-ignore https://github.com/microsoft/TypeScript/issues/25488 + + + return requestWithDefaults(...args); + } + + return Object.assign(withDecorations, requestWithDefaults); +} + +function restEndpointMethods(octokit) { + const api = endpointsToMethods(octokit, Endpoints); + return { + rest: api + }; +} +restEndpointMethods.VERSION = VERSION; +function legacyRestEndpointMethods(octokit) { + const api = endpointsToMethods(octokit, Endpoints); + return _objectSpread2(_objectSpread2({}, api), {}, { + rest: api + }); +} +legacyRestEndpointMethods.VERSION = VERSION; + +exports.legacyRestEndpointMethods = legacyRestEndpointMethods; +exports.restEndpointMethods = restEndpointMethods; +//# sourceMappingURL=index.js.map diff --git a/node_modules/@octokit/plugin-rest-endpoint-methods/dist-node/index.js.map b/node_modules/@octokit/plugin-rest-endpoint-methods/dist-node/index.js.map new file mode 100644 index 0000000..20eff5f --- /dev/null +++ b/node_modules/@octokit/plugin-rest-endpoint-methods/dist-node/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sources":["../dist-src/generated/endpoints.js","../dist-src/version.js","../dist-src/endpoints-to-methods.js","../dist-src/index.js"],"sourcesContent":["const Endpoints = {\n actions: {\n addCustomLabelsToSelfHostedRunnerForOrg: [\n \"POST /orgs/{org}/actions/runners/{runner_id}/labels\",\n ],\n addCustomLabelsToSelfHostedRunnerForRepo: [\n \"POST /repos/{owner}/{repo}/actions/runners/{runner_id}/labels\",\n ],\n addSelectedRepoToOrgSecret: [\n \"PUT /orgs/{org}/actions/secrets/{secret_name}/repositories/{repository_id}\",\n ],\n approveWorkflowRun: [\n \"POST /repos/{owner}/{repo}/actions/runs/{run_id}/approve\",\n ],\n cancelWorkflowRun: [\n \"POST /repos/{owner}/{repo}/actions/runs/{run_id}/cancel\",\n ],\n createOrUpdateEnvironmentSecret: [\n \"PUT /repositories/{repository_id}/environments/{environment_name}/secrets/{secret_name}\",\n ],\n createOrUpdateOrgSecret: [\"PUT /orgs/{org}/actions/secrets/{secret_name}\"],\n createOrUpdateRepoSecret: [\n \"PUT /repos/{owner}/{repo}/actions/secrets/{secret_name}\",\n ],\n createRegistrationTokenForOrg: [\n \"POST /orgs/{org}/actions/runners/registration-token\",\n ],\n createRegistrationTokenForRepo: [\n \"POST /repos/{owner}/{repo}/actions/runners/registration-token\",\n ],\n createRemoveTokenForOrg: [\"POST /orgs/{org}/actions/runners/remove-token\"],\n createRemoveTokenForRepo: [\n \"POST /repos/{owner}/{repo}/actions/runners/remove-token\",\n ],\n createWorkflowDispatch: [\n \"POST /repos/{owner}/{repo}/actions/workflows/{workflow_id}/dispatches\",\n ],\n deleteActionsCacheById: [\n \"DELETE /repos/{owner}/{repo}/actions/caches/{cache_id}\",\n ],\n deleteActionsCacheByKey: [\n \"DELETE /repos/{owner}/{repo}/actions/caches{?key,ref}\",\n ],\n deleteArtifact: [\n \"DELETE /repos/{owner}/{repo}/actions/artifacts/{artifact_id}\",\n ],\n deleteEnvironmentSecret: [\n \"DELETE /repositories/{repository_id}/environments/{environment_name}/secrets/{secret_name}\",\n ],\n deleteOrgSecret: [\"DELETE /orgs/{org}/actions/secrets/{secret_name}\"],\n deleteRepoSecret: [\n \"DELETE /repos/{owner}/{repo}/actions/secrets/{secret_name}\",\n ],\n deleteSelfHostedRunnerFromOrg: [\n \"DELETE /orgs/{org}/actions/runners/{runner_id}\",\n ],\n deleteSelfHostedRunnerFromRepo: [\n \"DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}\",\n ],\n deleteWorkflowRun: [\"DELETE /repos/{owner}/{repo}/actions/runs/{run_id}\"],\n deleteWorkflowRunLogs: [\n \"DELETE /repos/{owner}/{repo}/actions/runs/{run_id}/logs\",\n ],\n disableSelectedRepositoryGithubActionsOrganization: [\n \"DELETE /orgs/{org}/actions/permissions/repositories/{repository_id}\",\n ],\n disableWorkflow: [\n \"PUT /repos/{owner}/{repo}/actions/workflows/{workflow_id}/disable\",\n ],\n downloadArtifact: [\n \"GET /repos/{owner}/{repo}/actions/artifacts/{artifact_id}/{archive_format}\",\n ],\n downloadJobLogsForWorkflowRun: [\n \"GET /repos/{owner}/{repo}/actions/jobs/{job_id}/logs\",\n ],\n downloadWorkflowRunAttemptLogs: [\n \"GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/logs\",\n ],\n downloadWorkflowRunLogs: [\n \"GET /repos/{owner}/{repo}/actions/runs/{run_id}/logs\",\n ],\n enableSelectedRepositoryGithubActionsOrganization: [\n \"PUT /orgs/{org}/actions/permissions/repositories/{repository_id}\",\n ],\n enableWorkflow: [\n \"PUT /repos/{owner}/{repo}/actions/workflows/{workflow_id}/enable\",\n ],\n getActionsCacheList: [\"GET /repos/{owner}/{repo}/actions/caches\"],\n getActionsCacheUsage: [\"GET /repos/{owner}/{repo}/actions/cache/usage\"],\n getActionsCacheUsageByRepoForOrg: [\n \"GET /orgs/{org}/actions/cache/usage-by-repository\",\n ],\n getActionsCacheUsageForEnterprise: [\n \"GET /enterprises/{enterprise}/actions/cache/usage\",\n ],\n getActionsCacheUsageForOrg: [\"GET /orgs/{org}/actions/cache/usage\"],\n getAllowedActionsOrganization: [\n \"GET /orgs/{org}/actions/permissions/selected-actions\",\n ],\n getAllowedActionsRepository: [\n \"GET /repos/{owner}/{repo}/actions/permissions/selected-actions\",\n ],\n getArtifact: [\"GET /repos/{owner}/{repo}/actions/artifacts/{artifact_id}\"],\n getEnvironmentPublicKey: [\n \"GET /repositories/{repository_id}/environments/{environment_name}/secrets/public-key\",\n ],\n getEnvironmentSecret: [\n \"GET /repositories/{repository_id}/environments/{environment_name}/secrets/{secret_name}\",\n ],\n getGithubActionsDefaultWorkflowPermissionsEnterprise: [\n \"GET /enterprises/{enterprise}/actions/permissions/workflow\",\n ],\n getGithubActionsDefaultWorkflowPermissionsOrganization: [\n \"GET /orgs/{org}/actions/permissions/workflow\",\n ],\n getGithubActionsDefaultWorkflowPermissionsRepository: [\n \"GET /repos/{owner}/{repo}/actions/permissions/workflow\",\n ],\n getGithubActionsPermissionsOrganization: [\n \"GET /orgs/{org}/actions/permissions\",\n ],\n getGithubActionsPermissionsRepository: [\n \"GET /repos/{owner}/{repo}/actions/permissions\",\n ],\n getJobForWorkflowRun: [\"GET /repos/{owner}/{repo}/actions/jobs/{job_id}\"],\n getOrgPublicKey: [\"GET /orgs/{org}/actions/secrets/public-key\"],\n getOrgSecret: [\"GET /orgs/{org}/actions/secrets/{secret_name}\"],\n getPendingDeploymentsForRun: [\n \"GET /repos/{owner}/{repo}/actions/runs/{run_id}/pending_deployments\",\n ],\n getRepoPermissions: [\n \"GET /repos/{owner}/{repo}/actions/permissions\",\n {},\n { renamed: [\"actions\", \"getGithubActionsPermissionsRepository\"] },\n ],\n getRepoPublicKey: [\"GET /repos/{owner}/{repo}/actions/secrets/public-key\"],\n getRepoSecret: [\"GET /repos/{owner}/{repo}/actions/secrets/{secret_name}\"],\n getReviewsForRun: [\n \"GET /repos/{owner}/{repo}/actions/runs/{run_id}/approvals\",\n ],\n getSelfHostedRunnerForOrg: [\"GET /orgs/{org}/actions/runners/{runner_id}\"],\n getSelfHostedRunnerForRepo: [\n \"GET /repos/{owner}/{repo}/actions/runners/{runner_id}\",\n ],\n getWorkflow: [\"GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}\"],\n getWorkflowAccessToRepository: [\n \"GET /repos/{owner}/{repo}/actions/permissions/access\",\n ],\n getWorkflowRun: [\"GET /repos/{owner}/{repo}/actions/runs/{run_id}\"],\n getWorkflowRunAttempt: [\n \"GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}\",\n ],\n getWorkflowRunUsage: [\n \"GET /repos/{owner}/{repo}/actions/runs/{run_id}/timing\",\n ],\n getWorkflowUsage: [\n \"GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/timing\",\n ],\n listArtifactsForRepo: [\"GET /repos/{owner}/{repo}/actions/artifacts\"],\n listEnvironmentSecrets: [\n \"GET /repositories/{repository_id}/environments/{environment_name}/secrets\",\n ],\n listJobsForWorkflowRun: [\n \"GET /repos/{owner}/{repo}/actions/runs/{run_id}/jobs\",\n ],\n listJobsForWorkflowRunAttempt: [\n \"GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/jobs\",\n ],\n listLabelsForSelfHostedRunnerForOrg: [\n \"GET /orgs/{org}/actions/runners/{runner_id}/labels\",\n ],\n listLabelsForSelfHostedRunnerForRepo: [\n \"GET /repos/{owner}/{repo}/actions/runners/{runner_id}/labels\",\n ],\n listOrgSecrets: [\"GET /orgs/{org}/actions/secrets\"],\n listRepoSecrets: [\"GET /repos/{owner}/{repo}/actions/secrets\"],\n listRepoWorkflows: [\"GET /repos/{owner}/{repo}/actions/workflows\"],\n listRunnerApplicationsForOrg: [\"GET /orgs/{org}/actions/runners/downloads\"],\n listRunnerApplicationsForRepo: [\n \"GET /repos/{owner}/{repo}/actions/runners/downloads\",\n ],\n listSelectedReposForOrgSecret: [\n \"GET /orgs/{org}/actions/secrets/{secret_name}/repositories\",\n ],\n listSelectedRepositoriesEnabledGithubActionsOrganization: [\n \"GET /orgs/{org}/actions/permissions/repositories\",\n ],\n listSelfHostedRunnersForOrg: [\"GET /orgs/{org}/actions/runners\"],\n listSelfHostedRunnersForRepo: [\"GET /repos/{owner}/{repo}/actions/runners\"],\n listWorkflowRunArtifacts: [\n \"GET /repos/{owner}/{repo}/actions/runs/{run_id}/artifacts\",\n ],\n listWorkflowRuns: [\n \"GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/runs\",\n ],\n listWorkflowRunsForRepo: [\"GET /repos/{owner}/{repo}/actions/runs\"],\n reRunJobForWorkflowRun: [\n \"POST /repos/{owner}/{repo}/actions/jobs/{job_id}/rerun\",\n ],\n reRunWorkflow: [\"POST /repos/{owner}/{repo}/actions/runs/{run_id}/rerun\"],\n reRunWorkflowFailedJobs: [\n \"POST /repos/{owner}/{repo}/actions/runs/{run_id}/rerun-failed-jobs\",\n ],\n removeAllCustomLabelsFromSelfHostedRunnerForOrg: [\n \"DELETE /orgs/{org}/actions/runners/{runner_id}/labels\",\n ],\n removeAllCustomLabelsFromSelfHostedRunnerForRepo: [\n \"DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}/labels\",\n ],\n removeCustomLabelFromSelfHostedRunnerForOrg: [\n \"DELETE /orgs/{org}/actions/runners/{runner_id}/labels/{name}\",\n ],\n removeCustomLabelFromSelfHostedRunnerForRepo: [\n \"DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}/labels/{name}\",\n ],\n removeSelectedRepoFromOrgSecret: [\n \"DELETE /orgs/{org}/actions/secrets/{secret_name}/repositories/{repository_id}\",\n ],\n reviewPendingDeploymentsForRun: [\n \"POST /repos/{owner}/{repo}/actions/runs/{run_id}/pending_deployments\",\n ],\n setAllowedActionsOrganization: [\n \"PUT /orgs/{org}/actions/permissions/selected-actions\",\n ],\n setAllowedActionsRepository: [\n \"PUT /repos/{owner}/{repo}/actions/permissions/selected-actions\",\n ],\n setCustomLabelsForSelfHostedRunnerForOrg: [\n \"PUT /orgs/{org}/actions/runners/{runner_id}/labels\",\n ],\n setCustomLabelsForSelfHostedRunnerForRepo: [\n \"PUT /repos/{owner}/{repo}/actions/runners/{runner_id}/labels\",\n ],\n setGithubActionsDefaultWorkflowPermissionsEnterprise: [\n \"PUT /enterprises/{enterprise}/actions/permissions/workflow\",\n ],\n setGithubActionsDefaultWorkflowPermissionsOrganization: [\n \"PUT /orgs/{org}/actions/permissions/workflow\",\n ],\n setGithubActionsDefaultWorkflowPermissionsRepository: [\n \"PUT /repos/{owner}/{repo}/actions/permissions/workflow\",\n ],\n setGithubActionsPermissionsOrganization: [\n \"PUT /orgs/{org}/actions/permissions\",\n ],\n setGithubActionsPermissionsRepository: [\n \"PUT /repos/{owner}/{repo}/actions/permissions\",\n ],\n setSelectedReposForOrgSecret: [\n \"PUT /orgs/{org}/actions/secrets/{secret_name}/repositories\",\n ],\n setSelectedRepositoriesEnabledGithubActionsOrganization: [\n \"PUT /orgs/{org}/actions/permissions/repositories\",\n ],\n setWorkflowAccessToRepository: [\n \"PUT /repos/{owner}/{repo}/actions/permissions/access\",\n ],\n },\n activity: {\n checkRepoIsStarredByAuthenticatedUser: [\"GET /user/starred/{owner}/{repo}\"],\n deleteRepoSubscription: [\"DELETE /repos/{owner}/{repo}/subscription\"],\n deleteThreadSubscription: [\n \"DELETE /notifications/threads/{thread_id}/subscription\",\n ],\n getFeeds: [\"GET /feeds\"],\n getRepoSubscription: [\"GET /repos/{owner}/{repo}/subscription\"],\n getThread: [\"GET /notifications/threads/{thread_id}\"],\n getThreadSubscriptionForAuthenticatedUser: [\n \"GET /notifications/threads/{thread_id}/subscription\",\n ],\n listEventsForAuthenticatedUser: [\"GET /users/{username}/events\"],\n listNotificationsForAuthenticatedUser: [\"GET /notifications\"],\n listOrgEventsForAuthenticatedUser: [\n \"GET /users/{username}/events/orgs/{org}\",\n ],\n listPublicEvents: [\"GET /events\"],\n listPublicEventsForRepoNetwork: [\"GET /networks/{owner}/{repo}/events\"],\n listPublicEventsForUser: [\"GET /users/{username}/events/public\"],\n listPublicOrgEvents: [\"GET /orgs/{org}/events\"],\n listReceivedEventsForUser: [\"GET /users/{username}/received_events\"],\n listReceivedPublicEventsForUser: [\n \"GET /users/{username}/received_events/public\",\n ],\n listRepoEvents: [\"GET /repos/{owner}/{repo}/events\"],\n listRepoNotificationsForAuthenticatedUser: [\n \"GET /repos/{owner}/{repo}/notifications\",\n ],\n listReposStarredByAuthenticatedUser: [\"GET /user/starred\"],\n listReposStarredByUser: [\"GET /users/{username}/starred\"],\n listReposWatchedByUser: [\"GET /users/{username}/subscriptions\"],\n listStargazersForRepo: [\"GET /repos/{owner}/{repo}/stargazers\"],\n listWatchedReposForAuthenticatedUser: [\"GET /user/subscriptions\"],\n listWatchersForRepo: [\"GET /repos/{owner}/{repo}/subscribers\"],\n markNotificationsAsRead: [\"PUT /notifications\"],\n markRepoNotificationsAsRead: [\"PUT /repos/{owner}/{repo}/notifications\"],\n markThreadAsRead: [\"PATCH /notifications/threads/{thread_id}\"],\n setRepoSubscription: [\"PUT /repos/{owner}/{repo}/subscription\"],\n setThreadSubscription: [\n \"PUT /notifications/threads/{thread_id}/subscription\",\n ],\n starRepoForAuthenticatedUser: [\"PUT /user/starred/{owner}/{repo}\"],\n unstarRepoForAuthenticatedUser: [\"DELETE /user/starred/{owner}/{repo}\"],\n },\n apps: {\n addRepoToInstallation: [\n \"PUT /user/installations/{installation_id}/repositories/{repository_id}\",\n {},\n { renamed: [\"apps\", \"addRepoToInstallationForAuthenticatedUser\"] },\n ],\n addRepoToInstallationForAuthenticatedUser: [\n \"PUT /user/installations/{installation_id}/repositories/{repository_id}\",\n ],\n checkToken: [\"POST /applications/{client_id}/token\"],\n createFromManifest: [\"POST /app-manifests/{code}/conversions\"],\n createInstallationAccessToken: [\n \"POST /app/installations/{installation_id}/access_tokens\",\n ],\n deleteAuthorization: [\"DELETE /applications/{client_id}/grant\"],\n deleteInstallation: [\"DELETE /app/installations/{installation_id}\"],\n deleteToken: [\"DELETE /applications/{client_id}/token\"],\n getAuthenticated: [\"GET /app\"],\n getBySlug: [\"GET /apps/{app_slug}\"],\n getInstallation: [\"GET /app/installations/{installation_id}\"],\n getOrgInstallation: [\"GET /orgs/{org}/installation\"],\n getRepoInstallation: [\"GET /repos/{owner}/{repo}/installation\"],\n getSubscriptionPlanForAccount: [\n \"GET /marketplace_listing/accounts/{account_id}\",\n ],\n getSubscriptionPlanForAccountStubbed: [\n \"GET /marketplace_listing/stubbed/accounts/{account_id}\",\n ],\n getUserInstallation: [\"GET /users/{username}/installation\"],\n getWebhookConfigForApp: [\"GET /app/hook/config\"],\n getWebhookDelivery: [\"GET /app/hook/deliveries/{delivery_id}\"],\n listAccountsForPlan: [\"GET /marketplace_listing/plans/{plan_id}/accounts\"],\n listAccountsForPlanStubbed: [\n \"GET /marketplace_listing/stubbed/plans/{plan_id}/accounts\",\n ],\n listInstallationReposForAuthenticatedUser: [\n \"GET /user/installations/{installation_id}/repositories\",\n ],\n listInstallations: [\"GET /app/installations\"],\n listInstallationsForAuthenticatedUser: [\"GET /user/installations\"],\n listPlans: [\"GET /marketplace_listing/plans\"],\n listPlansStubbed: [\"GET /marketplace_listing/stubbed/plans\"],\n listReposAccessibleToInstallation: [\"GET /installation/repositories\"],\n listSubscriptionsForAuthenticatedUser: [\"GET /user/marketplace_purchases\"],\n listSubscriptionsForAuthenticatedUserStubbed: [\n \"GET /user/marketplace_purchases/stubbed\",\n ],\n listWebhookDeliveries: [\"GET /app/hook/deliveries\"],\n redeliverWebhookDelivery: [\n \"POST /app/hook/deliveries/{delivery_id}/attempts\",\n ],\n removeRepoFromInstallation: [\n \"DELETE /user/installations/{installation_id}/repositories/{repository_id}\",\n {},\n { renamed: [\"apps\", \"removeRepoFromInstallationForAuthenticatedUser\"] },\n ],\n removeRepoFromInstallationForAuthenticatedUser: [\n \"DELETE /user/installations/{installation_id}/repositories/{repository_id}\",\n ],\n resetToken: [\"PATCH /applications/{client_id}/token\"],\n revokeInstallationAccessToken: [\"DELETE /installation/token\"],\n scopeToken: [\"POST /applications/{client_id}/token/scoped\"],\n suspendInstallation: [\"PUT /app/installations/{installation_id}/suspended\"],\n unsuspendInstallation: [\n \"DELETE /app/installations/{installation_id}/suspended\",\n ],\n updateWebhookConfigForApp: [\"PATCH /app/hook/config\"],\n },\n billing: {\n getGithubActionsBillingOrg: [\"GET /orgs/{org}/settings/billing/actions\"],\n getGithubActionsBillingUser: [\n \"GET /users/{username}/settings/billing/actions\",\n ],\n getGithubAdvancedSecurityBillingGhe: [\n \"GET /enterprises/{enterprise}/settings/billing/advanced-security\",\n ],\n getGithubAdvancedSecurityBillingOrg: [\n \"GET /orgs/{org}/settings/billing/advanced-security\",\n ],\n getGithubPackagesBillingOrg: [\"GET /orgs/{org}/settings/billing/packages\"],\n getGithubPackagesBillingUser: [\n \"GET /users/{username}/settings/billing/packages\",\n ],\n getSharedStorageBillingOrg: [\n \"GET /orgs/{org}/settings/billing/shared-storage\",\n ],\n getSharedStorageBillingUser: [\n \"GET /users/{username}/settings/billing/shared-storage\",\n ],\n },\n checks: {\n create: [\"POST /repos/{owner}/{repo}/check-runs\"],\n createSuite: [\"POST /repos/{owner}/{repo}/check-suites\"],\n get: [\"GET /repos/{owner}/{repo}/check-runs/{check_run_id}\"],\n getSuite: [\"GET /repos/{owner}/{repo}/check-suites/{check_suite_id}\"],\n listAnnotations: [\n \"GET /repos/{owner}/{repo}/check-runs/{check_run_id}/annotations\",\n ],\n listForRef: [\"GET /repos/{owner}/{repo}/commits/{ref}/check-runs\"],\n listForSuite: [\n \"GET /repos/{owner}/{repo}/check-suites/{check_suite_id}/check-runs\",\n ],\n listSuitesForRef: [\"GET /repos/{owner}/{repo}/commits/{ref}/check-suites\"],\n rerequestRun: [\n \"POST /repos/{owner}/{repo}/check-runs/{check_run_id}/rerequest\",\n ],\n rerequestSuite: [\n \"POST /repos/{owner}/{repo}/check-suites/{check_suite_id}/rerequest\",\n ],\n setSuitesPreferences: [\n \"PATCH /repos/{owner}/{repo}/check-suites/preferences\",\n ],\n update: [\"PATCH /repos/{owner}/{repo}/check-runs/{check_run_id}\"],\n },\n codeScanning: {\n deleteAnalysis: [\n \"DELETE /repos/{owner}/{repo}/code-scanning/analyses/{analysis_id}{?confirm_delete}\",\n ],\n getAlert: [\n \"GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}\",\n {},\n { renamedParameters: { alert_id: \"alert_number\" } },\n ],\n getAnalysis: [\n \"GET /repos/{owner}/{repo}/code-scanning/analyses/{analysis_id}\",\n ],\n getSarif: [\"GET /repos/{owner}/{repo}/code-scanning/sarifs/{sarif_id}\"],\n listAlertInstances: [\n \"GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances\",\n ],\n listAlertsForOrg: [\"GET /orgs/{org}/code-scanning/alerts\"],\n listAlertsForRepo: [\"GET /repos/{owner}/{repo}/code-scanning/alerts\"],\n listAlertsInstances: [\n \"GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances\",\n {},\n { renamed: [\"codeScanning\", \"listAlertInstances\"] },\n ],\n listRecentAnalyses: [\"GET /repos/{owner}/{repo}/code-scanning/analyses\"],\n updateAlert: [\n \"PATCH /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}\",\n ],\n uploadSarif: [\"POST /repos/{owner}/{repo}/code-scanning/sarifs\"],\n },\n codesOfConduct: {\n getAllCodesOfConduct: [\"GET /codes_of_conduct\"],\n getConductCode: [\"GET /codes_of_conduct/{key}\"],\n },\n codespaces: {\n addRepositoryForSecretForAuthenticatedUser: [\n \"PUT /user/codespaces/secrets/{secret_name}/repositories/{repository_id}\",\n ],\n codespaceMachinesForAuthenticatedUser: [\n \"GET /user/codespaces/{codespace_name}/machines\",\n ],\n createForAuthenticatedUser: [\"POST /user/codespaces\"],\n createOrUpdateRepoSecret: [\n \"PUT /repos/{owner}/{repo}/codespaces/secrets/{secret_name}\",\n ],\n createOrUpdateSecretForAuthenticatedUser: [\n \"PUT /user/codespaces/secrets/{secret_name}\",\n ],\n createWithPrForAuthenticatedUser: [\n \"POST /repos/{owner}/{repo}/pulls/{pull_number}/codespaces\",\n ],\n createWithRepoForAuthenticatedUser: [\n \"POST /repos/{owner}/{repo}/codespaces\",\n ],\n deleteForAuthenticatedUser: [\"DELETE /user/codespaces/{codespace_name}\"],\n deleteFromOrganization: [\n \"DELETE /orgs/{org}/members/{username}/codespaces/{codespace_name}\",\n ],\n deleteRepoSecret: [\n \"DELETE /repos/{owner}/{repo}/codespaces/secrets/{secret_name}\",\n ],\n deleteSecretForAuthenticatedUser: [\n \"DELETE /user/codespaces/secrets/{secret_name}\",\n ],\n exportForAuthenticatedUser: [\n \"POST /user/codespaces/{codespace_name}/exports\",\n ],\n getExportDetailsForAuthenticatedUser: [\n \"GET /user/codespaces/{codespace_name}/exports/{export_id}\",\n ],\n getForAuthenticatedUser: [\"GET /user/codespaces/{codespace_name}\"],\n getPublicKeyForAuthenticatedUser: [\n \"GET /user/codespaces/secrets/public-key\",\n ],\n getRepoPublicKey: [\n \"GET /repos/{owner}/{repo}/codespaces/secrets/public-key\",\n ],\n getRepoSecret: [\n \"GET /repos/{owner}/{repo}/codespaces/secrets/{secret_name}\",\n ],\n getSecretForAuthenticatedUser: [\n \"GET /user/codespaces/secrets/{secret_name}\",\n ],\n listDevcontainersInRepositoryForAuthenticatedUser: [\n \"GET /repos/{owner}/{repo}/codespaces/devcontainers\",\n ],\n listForAuthenticatedUser: [\"GET /user/codespaces\"],\n listInOrganization: [\n \"GET /orgs/{org}/codespaces\",\n {},\n { renamedParameters: { org_id: \"org\" } },\n ],\n listInRepositoryForAuthenticatedUser: [\n \"GET /repos/{owner}/{repo}/codespaces\",\n ],\n listRepoSecrets: [\"GET /repos/{owner}/{repo}/codespaces/secrets\"],\n listRepositoriesForSecretForAuthenticatedUser: [\n \"GET /user/codespaces/secrets/{secret_name}/repositories\",\n ],\n listSecretsForAuthenticatedUser: [\"GET /user/codespaces/secrets\"],\n removeRepositoryForSecretForAuthenticatedUser: [\n \"DELETE /user/codespaces/secrets/{secret_name}/repositories/{repository_id}\",\n ],\n repoMachinesForAuthenticatedUser: [\n \"GET /repos/{owner}/{repo}/codespaces/machines\",\n ],\n setRepositoriesForSecretForAuthenticatedUser: [\n \"PUT /user/codespaces/secrets/{secret_name}/repositories\",\n ],\n startForAuthenticatedUser: [\"POST /user/codespaces/{codespace_name}/start\"],\n stopForAuthenticatedUser: [\"POST /user/codespaces/{codespace_name}/stop\"],\n stopInOrganization: [\n \"POST /orgs/{org}/members/{username}/codespaces/{codespace_name}/stop\",\n ],\n updateForAuthenticatedUser: [\"PATCH /user/codespaces/{codespace_name}\"],\n },\n dependabot: {\n addSelectedRepoToOrgSecret: [\n \"PUT /orgs/{org}/dependabot/secrets/{secret_name}/repositories/{repository_id}\",\n ],\n createOrUpdateOrgSecret: [\n \"PUT /orgs/{org}/dependabot/secrets/{secret_name}\",\n ],\n createOrUpdateRepoSecret: [\n \"PUT /repos/{owner}/{repo}/dependabot/secrets/{secret_name}\",\n ],\n deleteOrgSecret: [\"DELETE /orgs/{org}/dependabot/secrets/{secret_name}\"],\n deleteRepoSecret: [\n \"DELETE /repos/{owner}/{repo}/dependabot/secrets/{secret_name}\",\n ],\n getOrgPublicKey: [\"GET /orgs/{org}/dependabot/secrets/public-key\"],\n getOrgSecret: [\"GET /orgs/{org}/dependabot/secrets/{secret_name}\"],\n getRepoPublicKey: [\n \"GET /repos/{owner}/{repo}/dependabot/secrets/public-key\",\n ],\n getRepoSecret: [\n \"GET /repos/{owner}/{repo}/dependabot/secrets/{secret_name}\",\n ],\n listOrgSecrets: [\"GET /orgs/{org}/dependabot/secrets\"],\n listRepoSecrets: [\"GET /repos/{owner}/{repo}/dependabot/secrets\"],\n listSelectedReposForOrgSecret: [\n \"GET /orgs/{org}/dependabot/secrets/{secret_name}/repositories\",\n ],\n removeSelectedRepoFromOrgSecret: [\n \"DELETE /orgs/{org}/dependabot/secrets/{secret_name}/repositories/{repository_id}\",\n ],\n setSelectedReposForOrgSecret: [\n \"PUT /orgs/{org}/dependabot/secrets/{secret_name}/repositories\",\n ],\n },\n dependencyGraph: {\n createRepositorySnapshot: [\n \"POST /repos/{owner}/{repo}/dependency-graph/snapshots\",\n ],\n diffRange: [\n \"GET /repos/{owner}/{repo}/dependency-graph/compare/{basehead}\",\n ],\n },\n emojis: { get: [\"GET /emojis\"] },\n enterpriseAdmin: {\n addCustomLabelsToSelfHostedRunnerForEnterprise: [\n \"POST /enterprises/{enterprise}/actions/runners/{runner_id}/labels\",\n ],\n disableSelectedOrganizationGithubActionsEnterprise: [\n \"DELETE /enterprises/{enterprise}/actions/permissions/organizations/{org_id}\",\n ],\n enableSelectedOrganizationGithubActionsEnterprise: [\n \"PUT /enterprises/{enterprise}/actions/permissions/organizations/{org_id}\",\n ],\n getAllowedActionsEnterprise: [\n \"GET /enterprises/{enterprise}/actions/permissions/selected-actions\",\n ],\n getGithubActionsPermissionsEnterprise: [\n \"GET /enterprises/{enterprise}/actions/permissions\",\n ],\n getServerStatistics: [\n \"GET /enterprise-installation/{enterprise_or_org}/server-statistics\",\n ],\n listLabelsForSelfHostedRunnerForEnterprise: [\n \"GET /enterprises/{enterprise}/actions/runners/{runner_id}/labels\",\n ],\n listSelectedOrganizationsEnabledGithubActionsEnterprise: [\n \"GET /enterprises/{enterprise}/actions/permissions/organizations\",\n ],\n removeAllCustomLabelsFromSelfHostedRunnerForEnterprise: [\n \"DELETE /enterprises/{enterprise}/actions/runners/{runner_id}/labels\",\n ],\n removeCustomLabelFromSelfHostedRunnerForEnterprise: [\n \"DELETE /enterprises/{enterprise}/actions/runners/{runner_id}/labels/{name}\",\n ],\n setAllowedActionsEnterprise: [\n \"PUT /enterprises/{enterprise}/actions/permissions/selected-actions\",\n ],\n setCustomLabelsForSelfHostedRunnerForEnterprise: [\n \"PUT /enterprises/{enterprise}/actions/runners/{runner_id}/labels\",\n ],\n setGithubActionsPermissionsEnterprise: [\n \"PUT /enterprises/{enterprise}/actions/permissions\",\n ],\n setSelectedOrganizationsEnabledGithubActionsEnterprise: [\n \"PUT /enterprises/{enterprise}/actions/permissions/organizations\",\n ],\n },\n gists: {\n checkIsStarred: [\"GET /gists/{gist_id}/star\"],\n create: [\"POST /gists\"],\n createComment: [\"POST /gists/{gist_id}/comments\"],\n delete: [\"DELETE /gists/{gist_id}\"],\n deleteComment: [\"DELETE /gists/{gist_id}/comments/{comment_id}\"],\n fork: [\"POST /gists/{gist_id}/forks\"],\n get: [\"GET /gists/{gist_id}\"],\n getComment: [\"GET /gists/{gist_id}/comments/{comment_id}\"],\n getRevision: [\"GET /gists/{gist_id}/{sha}\"],\n list: [\"GET /gists\"],\n listComments: [\"GET /gists/{gist_id}/comments\"],\n listCommits: [\"GET /gists/{gist_id}/commits\"],\n listForUser: [\"GET /users/{username}/gists\"],\n listForks: [\"GET /gists/{gist_id}/forks\"],\n listPublic: [\"GET /gists/public\"],\n listStarred: [\"GET /gists/starred\"],\n star: [\"PUT /gists/{gist_id}/star\"],\n unstar: [\"DELETE /gists/{gist_id}/star\"],\n update: [\"PATCH /gists/{gist_id}\"],\n updateComment: [\"PATCH /gists/{gist_id}/comments/{comment_id}\"],\n },\n git: {\n createBlob: [\"POST /repos/{owner}/{repo}/git/blobs\"],\n createCommit: [\"POST /repos/{owner}/{repo}/git/commits\"],\n createRef: [\"POST /repos/{owner}/{repo}/git/refs\"],\n createTag: [\"POST /repos/{owner}/{repo}/git/tags\"],\n createTree: [\"POST /repos/{owner}/{repo}/git/trees\"],\n deleteRef: [\"DELETE /repos/{owner}/{repo}/git/refs/{ref}\"],\n getBlob: [\"GET /repos/{owner}/{repo}/git/blobs/{file_sha}\"],\n getCommit: [\"GET /repos/{owner}/{repo}/git/commits/{commit_sha}\"],\n getRef: [\"GET /repos/{owner}/{repo}/git/ref/{ref}\"],\n getTag: [\"GET /repos/{owner}/{repo}/git/tags/{tag_sha}\"],\n getTree: [\"GET /repos/{owner}/{repo}/git/trees/{tree_sha}\"],\n listMatchingRefs: [\"GET /repos/{owner}/{repo}/git/matching-refs/{ref}\"],\n updateRef: [\"PATCH /repos/{owner}/{repo}/git/refs/{ref}\"],\n },\n gitignore: {\n getAllTemplates: [\"GET /gitignore/templates\"],\n getTemplate: [\"GET /gitignore/templates/{name}\"],\n },\n interactions: {\n getRestrictionsForAuthenticatedUser: [\"GET /user/interaction-limits\"],\n getRestrictionsForOrg: [\"GET /orgs/{org}/interaction-limits\"],\n getRestrictionsForRepo: [\"GET /repos/{owner}/{repo}/interaction-limits\"],\n getRestrictionsForYourPublicRepos: [\n \"GET /user/interaction-limits\",\n {},\n { renamed: [\"interactions\", \"getRestrictionsForAuthenticatedUser\"] },\n ],\n removeRestrictionsForAuthenticatedUser: [\"DELETE /user/interaction-limits\"],\n removeRestrictionsForOrg: [\"DELETE /orgs/{org}/interaction-limits\"],\n removeRestrictionsForRepo: [\n \"DELETE /repos/{owner}/{repo}/interaction-limits\",\n ],\n removeRestrictionsForYourPublicRepos: [\n \"DELETE /user/interaction-limits\",\n {},\n { renamed: [\"interactions\", \"removeRestrictionsForAuthenticatedUser\"] },\n ],\n setRestrictionsForAuthenticatedUser: [\"PUT /user/interaction-limits\"],\n setRestrictionsForOrg: [\"PUT /orgs/{org}/interaction-limits\"],\n setRestrictionsForRepo: [\"PUT /repos/{owner}/{repo}/interaction-limits\"],\n setRestrictionsForYourPublicRepos: [\n \"PUT /user/interaction-limits\",\n {},\n { renamed: [\"interactions\", \"setRestrictionsForAuthenticatedUser\"] },\n ],\n },\n issues: {\n addAssignees: [\n \"POST /repos/{owner}/{repo}/issues/{issue_number}/assignees\",\n ],\n addLabels: [\"POST /repos/{owner}/{repo}/issues/{issue_number}/labels\"],\n checkUserCanBeAssigned: [\"GET /repos/{owner}/{repo}/assignees/{assignee}\"],\n create: [\"POST /repos/{owner}/{repo}/issues\"],\n createComment: [\n \"POST /repos/{owner}/{repo}/issues/{issue_number}/comments\",\n ],\n createLabel: [\"POST /repos/{owner}/{repo}/labels\"],\n createMilestone: [\"POST /repos/{owner}/{repo}/milestones\"],\n deleteComment: [\n \"DELETE /repos/{owner}/{repo}/issues/comments/{comment_id}\",\n ],\n deleteLabel: [\"DELETE /repos/{owner}/{repo}/labels/{name}\"],\n deleteMilestone: [\n \"DELETE /repos/{owner}/{repo}/milestones/{milestone_number}\",\n ],\n get: [\"GET /repos/{owner}/{repo}/issues/{issue_number}\"],\n getComment: [\"GET /repos/{owner}/{repo}/issues/comments/{comment_id}\"],\n getEvent: [\"GET /repos/{owner}/{repo}/issues/events/{event_id}\"],\n getLabel: [\"GET /repos/{owner}/{repo}/labels/{name}\"],\n getMilestone: [\"GET /repos/{owner}/{repo}/milestones/{milestone_number}\"],\n list: [\"GET /issues\"],\n listAssignees: [\"GET /repos/{owner}/{repo}/assignees\"],\n listComments: [\"GET /repos/{owner}/{repo}/issues/{issue_number}/comments\"],\n listCommentsForRepo: [\"GET /repos/{owner}/{repo}/issues/comments\"],\n listEvents: [\"GET /repos/{owner}/{repo}/issues/{issue_number}/events\"],\n listEventsForRepo: [\"GET /repos/{owner}/{repo}/issues/events\"],\n listEventsForTimeline: [\n \"GET /repos/{owner}/{repo}/issues/{issue_number}/timeline\",\n ],\n listForAuthenticatedUser: [\"GET /user/issues\"],\n listForOrg: [\"GET /orgs/{org}/issues\"],\n listForRepo: [\"GET /repos/{owner}/{repo}/issues\"],\n listLabelsForMilestone: [\n \"GET /repos/{owner}/{repo}/milestones/{milestone_number}/labels\",\n ],\n listLabelsForRepo: [\"GET /repos/{owner}/{repo}/labels\"],\n listLabelsOnIssue: [\n \"GET /repos/{owner}/{repo}/issues/{issue_number}/labels\",\n ],\n listMilestones: [\"GET /repos/{owner}/{repo}/milestones\"],\n lock: [\"PUT /repos/{owner}/{repo}/issues/{issue_number}/lock\"],\n removeAllLabels: [\n \"DELETE /repos/{owner}/{repo}/issues/{issue_number}/labels\",\n ],\n removeAssignees: [\n \"DELETE /repos/{owner}/{repo}/issues/{issue_number}/assignees\",\n ],\n removeLabel: [\n \"DELETE /repos/{owner}/{repo}/issues/{issue_number}/labels/{name}\",\n ],\n setLabels: [\"PUT /repos/{owner}/{repo}/issues/{issue_number}/labels\"],\n unlock: [\"DELETE /repos/{owner}/{repo}/issues/{issue_number}/lock\"],\n update: [\"PATCH /repos/{owner}/{repo}/issues/{issue_number}\"],\n updateComment: [\"PATCH /repos/{owner}/{repo}/issues/comments/{comment_id}\"],\n updateLabel: [\"PATCH /repos/{owner}/{repo}/labels/{name}\"],\n updateMilestone: [\n \"PATCH /repos/{owner}/{repo}/milestones/{milestone_number}\",\n ],\n },\n licenses: {\n get: [\"GET /licenses/{license}\"],\n getAllCommonlyUsed: [\"GET /licenses\"],\n getForRepo: [\"GET /repos/{owner}/{repo}/license\"],\n },\n markdown: {\n render: [\"POST /markdown\"],\n renderRaw: [\n \"POST /markdown/raw\",\n { headers: { \"content-type\": \"text/plain; charset=utf-8\" } },\n ],\n },\n meta: {\n get: [\"GET /meta\"],\n getOctocat: [\"GET /octocat\"],\n getZen: [\"GET /zen\"],\n root: [\"GET /\"],\n },\n migrations: {\n cancelImport: [\"DELETE /repos/{owner}/{repo}/import\"],\n deleteArchiveForAuthenticatedUser: [\n \"DELETE /user/migrations/{migration_id}/archive\",\n ],\n deleteArchiveForOrg: [\n \"DELETE /orgs/{org}/migrations/{migration_id}/archive\",\n ],\n downloadArchiveForOrg: [\n \"GET /orgs/{org}/migrations/{migration_id}/archive\",\n ],\n getArchiveForAuthenticatedUser: [\n \"GET /user/migrations/{migration_id}/archive\",\n ],\n getCommitAuthors: [\"GET /repos/{owner}/{repo}/import/authors\"],\n getImportStatus: [\"GET /repos/{owner}/{repo}/import\"],\n getLargeFiles: [\"GET /repos/{owner}/{repo}/import/large_files\"],\n getStatusForAuthenticatedUser: [\"GET /user/migrations/{migration_id}\"],\n getStatusForOrg: [\"GET /orgs/{org}/migrations/{migration_id}\"],\n listForAuthenticatedUser: [\"GET /user/migrations\"],\n listForOrg: [\"GET /orgs/{org}/migrations\"],\n listReposForAuthenticatedUser: [\n \"GET /user/migrations/{migration_id}/repositories\",\n ],\n listReposForOrg: [\"GET /orgs/{org}/migrations/{migration_id}/repositories\"],\n listReposForUser: [\n \"GET /user/migrations/{migration_id}/repositories\",\n {},\n { renamed: [\"migrations\", \"listReposForAuthenticatedUser\"] },\n ],\n mapCommitAuthor: [\"PATCH /repos/{owner}/{repo}/import/authors/{author_id}\"],\n setLfsPreference: [\"PATCH /repos/{owner}/{repo}/import/lfs\"],\n startForAuthenticatedUser: [\"POST /user/migrations\"],\n startForOrg: [\"POST /orgs/{org}/migrations\"],\n startImport: [\"PUT /repos/{owner}/{repo}/import\"],\n unlockRepoForAuthenticatedUser: [\n \"DELETE /user/migrations/{migration_id}/repos/{repo_name}/lock\",\n ],\n unlockRepoForOrg: [\n \"DELETE /orgs/{org}/migrations/{migration_id}/repos/{repo_name}/lock\",\n ],\n updateImport: [\"PATCH /repos/{owner}/{repo}/import\"],\n },\n orgs: {\n blockUser: [\"PUT /orgs/{org}/blocks/{username}\"],\n cancelInvitation: [\"DELETE /orgs/{org}/invitations/{invitation_id}\"],\n checkBlockedUser: [\"GET /orgs/{org}/blocks/{username}\"],\n checkMembershipForUser: [\"GET /orgs/{org}/members/{username}\"],\n checkPublicMembershipForUser: [\"GET /orgs/{org}/public_members/{username}\"],\n convertMemberToOutsideCollaborator: [\n \"PUT /orgs/{org}/outside_collaborators/{username}\",\n ],\n createInvitation: [\"POST /orgs/{org}/invitations\"],\n createWebhook: [\"POST /orgs/{org}/hooks\"],\n deleteWebhook: [\"DELETE /orgs/{org}/hooks/{hook_id}\"],\n get: [\"GET /orgs/{org}\"],\n getMembershipForAuthenticatedUser: [\"GET /user/memberships/orgs/{org}\"],\n getMembershipForUser: [\"GET /orgs/{org}/memberships/{username}\"],\n getWebhook: [\"GET /orgs/{org}/hooks/{hook_id}\"],\n getWebhookConfigForOrg: [\"GET /orgs/{org}/hooks/{hook_id}/config\"],\n getWebhookDelivery: [\n \"GET /orgs/{org}/hooks/{hook_id}/deliveries/{delivery_id}\",\n ],\n list: [\"GET /organizations\"],\n listAppInstallations: [\"GET /orgs/{org}/installations\"],\n listBlockedUsers: [\"GET /orgs/{org}/blocks\"],\n listCustomRoles: [\"GET /organizations/{organization_id}/custom_roles\"],\n listFailedInvitations: [\"GET /orgs/{org}/failed_invitations\"],\n listForAuthenticatedUser: [\"GET /user/orgs\"],\n listForUser: [\"GET /users/{username}/orgs\"],\n listInvitationTeams: [\"GET /orgs/{org}/invitations/{invitation_id}/teams\"],\n listMembers: [\"GET /orgs/{org}/members\"],\n listMembershipsForAuthenticatedUser: [\"GET /user/memberships/orgs\"],\n listOutsideCollaborators: [\"GET /orgs/{org}/outside_collaborators\"],\n listPendingInvitations: [\"GET /orgs/{org}/invitations\"],\n listPublicMembers: [\"GET /orgs/{org}/public_members\"],\n listWebhookDeliveries: [\"GET /orgs/{org}/hooks/{hook_id}/deliveries\"],\n listWebhooks: [\"GET /orgs/{org}/hooks\"],\n pingWebhook: [\"POST /orgs/{org}/hooks/{hook_id}/pings\"],\n redeliverWebhookDelivery: [\n \"POST /orgs/{org}/hooks/{hook_id}/deliveries/{delivery_id}/attempts\",\n ],\n removeMember: [\"DELETE /orgs/{org}/members/{username}\"],\n removeMembershipForUser: [\"DELETE /orgs/{org}/memberships/{username}\"],\n removeOutsideCollaborator: [\n \"DELETE /orgs/{org}/outside_collaborators/{username}\",\n ],\n removePublicMembershipForAuthenticatedUser: [\n \"DELETE /orgs/{org}/public_members/{username}\",\n ],\n setMembershipForUser: [\"PUT /orgs/{org}/memberships/{username}\"],\n setPublicMembershipForAuthenticatedUser: [\n \"PUT /orgs/{org}/public_members/{username}\",\n ],\n unblockUser: [\"DELETE /orgs/{org}/blocks/{username}\"],\n update: [\"PATCH /orgs/{org}\"],\n updateMembershipForAuthenticatedUser: [\n \"PATCH /user/memberships/orgs/{org}\",\n ],\n updateWebhook: [\"PATCH /orgs/{org}/hooks/{hook_id}\"],\n updateWebhookConfigForOrg: [\"PATCH /orgs/{org}/hooks/{hook_id}/config\"],\n },\n packages: {\n deletePackageForAuthenticatedUser: [\n \"DELETE /user/packages/{package_type}/{package_name}\",\n ],\n deletePackageForOrg: [\n \"DELETE /orgs/{org}/packages/{package_type}/{package_name}\",\n ],\n deletePackageForUser: [\n \"DELETE /users/{username}/packages/{package_type}/{package_name}\",\n ],\n deletePackageVersionForAuthenticatedUser: [\n \"DELETE /user/packages/{package_type}/{package_name}/versions/{package_version_id}\",\n ],\n deletePackageVersionForOrg: [\n \"DELETE /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}\",\n ],\n deletePackageVersionForUser: [\n \"DELETE /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}\",\n ],\n getAllPackageVersionsForAPackageOwnedByAnOrg: [\n \"GET /orgs/{org}/packages/{package_type}/{package_name}/versions\",\n {},\n { renamed: [\"packages\", \"getAllPackageVersionsForPackageOwnedByOrg\"] },\n ],\n getAllPackageVersionsForAPackageOwnedByTheAuthenticatedUser: [\n \"GET /user/packages/{package_type}/{package_name}/versions\",\n {},\n {\n renamed: [\n \"packages\",\n \"getAllPackageVersionsForPackageOwnedByAuthenticatedUser\",\n ],\n },\n ],\n getAllPackageVersionsForPackageOwnedByAuthenticatedUser: [\n \"GET /user/packages/{package_type}/{package_name}/versions\",\n ],\n getAllPackageVersionsForPackageOwnedByOrg: [\n \"GET /orgs/{org}/packages/{package_type}/{package_name}/versions\",\n ],\n getAllPackageVersionsForPackageOwnedByUser: [\n \"GET /users/{username}/packages/{package_type}/{package_name}/versions\",\n ],\n getPackageForAuthenticatedUser: [\n \"GET /user/packages/{package_type}/{package_name}\",\n ],\n getPackageForOrganization: [\n \"GET /orgs/{org}/packages/{package_type}/{package_name}\",\n ],\n getPackageForUser: [\n \"GET /users/{username}/packages/{package_type}/{package_name}\",\n ],\n getPackageVersionForAuthenticatedUser: [\n \"GET /user/packages/{package_type}/{package_name}/versions/{package_version_id}\",\n ],\n getPackageVersionForOrganization: [\n \"GET /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}\",\n ],\n getPackageVersionForUser: [\n \"GET /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}\",\n ],\n listPackagesForAuthenticatedUser: [\"GET /user/packages\"],\n listPackagesForOrganization: [\"GET /orgs/{org}/packages\"],\n listPackagesForUser: [\"GET /users/{username}/packages\"],\n restorePackageForAuthenticatedUser: [\n \"POST /user/packages/{package_type}/{package_name}/restore{?token}\",\n ],\n restorePackageForOrg: [\n \"POST /orgs/{org}/packages/{package_type}/{package_name}/restore{?token}\",\n ],\n restorePackageForUser: [\n \"POST /users/{username}/packages/{package_type}/{package_name}/restore{?token}\",\n ],\n restorePackageVersionForAuthenticatedUser: [\n \"POST /user/packages/{package_type}/{package_name}/versions/{package_version_id}/restore\",\n ],\n restorePackageVersionForOrg: [\n \"POST /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}/restore\",\n ],\n restorePackageVersionForUser: [\n \"POST /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}/restore\",\n ],\n },\n projects: {\n addCollaborator: [\"PUT /projects/{project_id}/collaborators/{username}\"],\n createCard: [\"POST /projects/columns/{column_id}/cards\"],\n createColumn: [\"POST /projects/{project_id}/columns\"],\n createForAuthenticatedUser: [\"POST /user/projects\"],\n createForOrg: [\"POST /orgs/{org}/projects\"],\n createForRepo: [\"POST /repos/{owner}/{repo}/projects\"],\n delete: [\"DELETE /projects/{project_id}\"],\n deleteCard: [\"DELETE /projects/columns/cards/{card_id}\"],\n deleteColumn: [\"DELETE /projects/columns/{column_id}\"],\n get: [\"GET /projects/{project_id}\"],\n getCard: [\"GET /projects/columns/cards/{card_id}\"],\n getColumn: [\"GET /projects/columns/{column_id}\"],\n getPermissionForUser: [\n \"GET /projects/{project_id}/collaborators/{username}/permission\",\n ],\n listCards: [\"GET /projects/columns/{column_id}/cards\"],\n listCollaborators: [\"GET /projects/{project_id}/collaborators\"],\n listColumns: [\"GET /projects/{project_id}/columns\"],\n listForOrg: [\"GET /orgs/{org}/projects\"],\n listForRepo: [\"GET /repos/{owner}/{repo}/projects\"],\n listForUser: [\"GET /users/{username}/projects\"],\n moveCard: [\"POST /projects/columns/cards/{card_id}/moves\"],\n moveColumn: [\"POST /projects/columns/{column_id}/moves\"],\n removeCollaborator: [\n \"DELETE /projects/{project_id}/collaborators/{username}\",\n ],\n update: [\"PATCH /projects/{project_id}\"],\n updateCard: [\"PATCH /projects/columns/cards/{card_id}\"],\n updateColumn: [\"PATCH /projects/columns/{column_id}\"],\n },\n pulls: {\n checkIfMerged: [\"GET /repos/{owner}/{repo}/pulls/{pull_number}/merge\"],\n create: [\"POST /repos/{owner}/{repo}/pulls\"],\n createReplyForReviewComment: [\n \"POST /repos/{owner}/{repo}/pulls/{pull_number}/comments/{comment_id}/replies\",\n ],\n createReview: [\"POST /repos/{owner}/{repo}/pulls/{pull_number}/reviews\"],\n createReviewComment: [\n \"POST /repos/{owner}/{repo}/pulls/{pull_number}/comments\",\n ],\n deletePendingReview: [\n \"DELETE /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}\",\n ],\n deleteReviewComment: [\n \"DELETE /repos/{owner}/{repo}/pulls/comments/{comment_id}\",\n ],\n dismissReview: [\n \"PUT /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/dismissals\",\n ],\n get: [\"GET /repos/{owner}/{repo}/pulls/{pull_number}\"],\n getReview: [\n \"GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}\",\n ],\n getReviewComment: [\"GET /repos/{owner}/{repo}/pulls/comments/{comment_id}\"],\n list: [\"GET /repos/{owner}/{repo}/pulls\"],\n listCommentsForReview: [\n \"GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/comments\",\n ],\n listCommits: [\"GET /repos/{owner}/{repo}/pulls/{pull_number}/commits\"],\n listFiles: [\"GET /repos/{owner}/{repo}/pulls/{pull_number}/files\"],\n listRequestedReviewers: [\n \"GET /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers\",\n ],\n listReviewComments: [\n \"GET /repos/{owner}/{repo}/pulls/{pull_number}/comments\",\n ],\n listReviewCommentsForRepo: [\"GET /repos/{owner}/{repo}/pulls/comments\"],\n listReviews: [\"GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews\"],\n merge: [\"PUT /repos/{owner}/{repo}/pulls/{pull_number}/merge\"],\n removeRequestedReviewers: [\n \"DELETE /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers\",\n ],\n requestReviewers: [\n \"POST /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers\",\n ],\n submitReview: [\n \"POST /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/events\",\n ],\n update: [\"PATCH /repos/{owner}/{repo}/pulls/{pull_number}\"],\n updateBranch: [\n \"PUT /repos/{owner}/{repo}/pulls/{pull_number}/update-branch\",\n ],\n updateReview: [\n \"PUT /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}\",\n ],\n updateReviewComment: [\n \"PATCH /repos/{owner}/{repo}/pulls/comments/{comment_id}\",\n ],\n },\n rateLimit: { get: [\"GET /rate_limit\"] },\n reactions: {\n createForCommitComment: [\n \"POST /repos/{owner}/{repo}/comments/{comment_id}/reactions\",\n ],\n createForIssue: [\n \"POST /repos/{owner}/{repo}/issues/{issue_number}/reactions\",\n ],\n createForIssueComment: [\n \"POST /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions\",\n ],\n createForPullRequestReviewComment: [\n \"POST /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions\",\n ],\n createForRelease: [\n \"POST /repos/{owner}/{repo}/releases/{release_id}/reactions\",\n ],\n createForTeamDiscussionCommentInOrg: [\n \"POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions\",\n ],\n createForTeamDiscussionInOrg: [\n \"POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions\",\n ],\n deleteForCommitComment: [\n \"DELETE /repos/{owner}/{repo}/comments/{comment_id}/reactions/{reaction_id}\",\n ],\n deleteForIssue: [\n \"DELETE /repos/{owner}/{repo}/issues/{issue_number}/reactions/{reaction_id}\",\n ],\n deleteForIssueComment: [\n \"DELETE /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions/{reaction_id}\",\n ],\n deleteForPullRequestComment: [\n \"DELETE /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions/{reaction_id}\",\n ],\n deleteForRelease: [\n \"DELETE /repos/{owner}/{repo}/releases/{release_id}/reactions/{reaction_id}\",\n ],\n deleteForTeamDiscussion: [\n \"DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions/{reaction_id}\",\n ],\n deleteForTeamDiscussionComment: [\n \"DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions/{reaction_id}\",\n ],\n listForCommitComment: [\n \"GET /repos/{owner}/{repo}/comments/{comment_id}/reactions\",\n ],\n listForIssue: [\"GET /repos/{owner}/{repo}/issues/{issue_number}/reactions\"],\n listForIssueComment: [\n \"GET /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions\",\n ],\n listForPullRequestReviewComment: [\n \"GET /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions\",\n ],\n listForRelease: [\n \"GET /repos/{owner}/{repo}/releases/{release_id}/reactions\",\n ],\n listForTeamDiscussionCommentInOrg: [\n \"GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions\",\n ],\n listForTeamDiscussionInOrg: [\n \"GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions\",\n ],\n },\n repos: {\n acceptInvitation: [\n \"PATCH /user/repository_invitations/{invitation_id}\",\n {},\n { renamed: [\"repos\", \"acceptInvitationForAuthenticatedUser\"] },\n ],\n acceptInvitationForAuthenticatedUser: [\n \"PATCH /user/repository_invitations/{invitation_id}\",\n ],\n addAppAccessRestrictions: [\n \"POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps\",\n {},\n { mapToData: \"apps\" },\n ],\n addCollaborator: [\"PUT /repos/{owner}/{repo}/collaborators/{username}\"],\n addStatusCheckContexts: [\n \"POST /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts\",\n {},\n { mapToData: \"contexts\" },\n ],\n addTeamAccessRestrictions: [\n \"POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams\",\n {},\n { mapToData: \"teams\" },\n ],\n addUserAccessRestrictions: [\n \"POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users\",\n {},\n { mapToData: \"users\" },\n ],\n checkCollaborator: [\"GET /repos/{owner}/{repo}/collaborators/{username}\"],\n checkVulnerabilityAlerts: [\n \"GET /repos/{owner}/{repo}/vulnerability-alerts\",\n ],\n codeownersErrors: [\"GET /repos/{owner}/{repo}/codeowners/errors\"],\n compareCommits: [\"GET /repos/{owner}/{repo}/compare/{base}...{head}\"],\n compareCommitsWithBasehead: [\n \"GET /repos/{owner}/{repo}/compare/{basehead}\",\n ],\n createAutolink: [\"POST /repos/{owner}/{repo}/autolinks\"],\n createCommitComment: [\n \"POST /repos/{owner}/{repo}/commits/{commit_sha}/comments\",\n ],\n createCommitSignatureProtection: [\n \"POST /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures\",\n ],\n createCommitStatus: [\"POST /repos/{owner}/{repo}/statuses/{sha}\"],\n createDeployKey: [\"POST /repos/{owner}/{repo}/keys\"],\n createDeployment: [\"POST /repos/{owner}/{repo}/deployments\"],\n createDeploymentStatus: [\n \"POST /repos/{owner}/{repo}/deployments/{deployment_id}/statuses\",\n ],\n createDispatchEvent: [\"POST /repos/{owner}/{repo}/dispatches\"],\n createForAuthenticatedUser: [\"POST /user/repos\"],\n createFork: [\"POST /repos/{owner}/{repo}/forks\"],\n createInOrg: [\"POST /orgs/{org}/repos\"],\n createOrUpdateEnvironment: [\n \"PUT /repos/{owner}/{repo}/environments/{environment_name}\",\n ],\n createOrUpdateFileContents: [\"PUT /repos/{owner}/{repo}/contents/{path}\"],\n createPagesSite: [\"POST /repos/{owner}/{repo}/pages\"],\n createRelease: [\"POST /repos/{owner}/{repo}/releases\"],\n createTagProtection: [\"POST /repos/{owner}/{repo}/tags/protection\"],\n createUsingTemplate: [\n \"POST /repos/{template_owner}/{template_repo}/generate\",\n ],\n createWebhook: [\"POST /repos/{owner}/{repo}/hooks\"],\n declineInvitation: [\n \"DELETE /user/repository_invitations/{invitation_id}\",\n {},\n { renamed: [\"repos\", \"declineInvitationForAuthenticatedUser\"] },\n ],\n declineInvitationForAuthenticatedUser: [\n \"DELETE /user/repository_invitations/{invitation_id}\",\n ],\n delete: [\"DELETE /repos/{owner}/{repo}\"],\n deleteAccessRestrictions: [\n \"DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions\",\n ],\n deleteAdminBranchProtection: [\n \"DELETE /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins\",\n ],\n deleteAnEnvironment: [\n \"DELETE /repos/{owner}/{repo}/environments/{environment_name}\",\n ],\n deleteAutolink: [\"DELETE /repos/{owner}/{repo}/autolinks/{autolink_id}\"],\n deleteBranchProtection: [\n \"DELETE /repos/{owner}/{repo}/branches/{branch}/protection\",\n ],\n deleteCommitComment: [\"DELETE /repos/{owner}/{repo}/comments/{comment_id}\"],\n deleteCommitSignatureProtection: [\n \"DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures\",\n ],\n deleteDeployKey: [\"DELETE /repos/{owner}/{repo}/keys/{key_id}\"],\n deleteDeployment: [\n \"DELETE /repos/{owner}/{repo}/deployments/{deployment_id}\",\n ],\n deleteFile: [\"DELETE /repos/{owner}/{repo}/contents/{path}\"],\n deleteInvitation: [\n \"DELETE /repos/{owner}/{repo}/invitations/{invitation_id}\",\n ],\n deletePagesSite: [\"DELETE /repos/{owner}/{repo}/pages\"],\n deletePullRequestReviewProtection: [\n \"DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews\",\n ],\n deleteRelease: [\"DELETE /repos/{owner}/{repo}/releases/{release_id}\"],\n deleteReleaseAsset: [\n \"DELETE /repos/{owner}/{repo}/releases/assets/{asset_id}\",\n ],\n deleteTagProtection: [\n \"DELETE /repos/{owner}/{repo}/tags/protection/{tag_protection_id}\",\n ],\n deleteWebhook: [\"DELETE /repos/{owner}/{repo}/hooks/{hook_id}\"],\n disableAutomatedSecurityFixes: [\n \"DELETE /repos/{owner}/{repo}/automated-security-fixes\",\n ],\n disableLfsForRepo: [\"DELETE /repos/{owner}/{repo}/lfs\"],\n disableVulnerabilityAlerts: [\n \"DELETE /repos/{owner}/{repo}/vulnerability-alerts\",\n ],\n downloadArchive: [\n \"GET /repos/{owner}/{repo}/zipball/{ref}\",\n {},\n { renamed: [\"repos\", \"downloadZipballArchive\"] },\n ],\n downloadTarballArchive: [\"GET /repos/{owner}/{repo}/tarball/{ref}\"],\n downloadZipballArchive: [\"GET /repos/{owner}/{repo}/zipball/{ref}\"],\n enableAutomatedSecurityFixes: [\n \"PUT /repos/{owner}/{repo}/automated-security-fixes\",\n ],\n enableLfsForRepo: [\"PUT /repos/{owner}/{repo}/lfs\"],\n enableVulnerabilityAlerts: [\n \"PUT /repos/{owner}/{repo}/vulnerability-alerts\",\n ],\n generateReleaseNotes: [\n \"POST /repos/{owner}/{repo}/releases/generate-notes\",\n ],\n get: [\"GET /repos/{owner}/{repo}\"],\n getAccessRestrictions: [\n \"GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions\",\n ],\n getAdminBranchProtection: [\n \"GET /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins\",\n ],\n getAllEnvironments: [\"GET /repos/{owner}/{repo}/environments\"],\n getAllStatusCheckContexts: [\n \"GET /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts\",\n ],\n getAllTopics: [\"GET /repos/{owner}/{repo}/topics\"],\n getAppsWithAccessToProtectedBranch: [\n \"GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps\",\n ],\n getAutolink: [\"GET /repos/{owner}/{repo}/autolinks/{autolink_id}\"],\n getBranch: [\"GET /repos/{owner}/{repo}/branches/{branch}\"],\n getBranchProtection: [\n \"GET /repos/{owner}/{repo}/branches/{branch}/protection\",\n ],\n getClones: [\"GET /repos/{owner}/{repo}/traffic/clones\"],\n getCodeFrequencyStats: [\"GET /repos/{owner}/{repo}/stats/code_frequency\"],\n getCollaboratorPermissionLevel: [\n \"GET /repos/{owner}/{repo}/collaborators/{username}/permission\",\n ],\n getCombinedStatusForRef: [\"GET /repos/{owner}/{repo}/commits/{ref}/status\"],\n getCommit: [\"GET /repos/{owner}/{repo}/commits/{ref}\"],\n getCommitActivityStats: [\"GET /repos/{owner}/{repo}/stats/commit_activity\"],\n getCommitComment: [\"GET /repos/{owner}/{repo}/comments/{comment_id}\"],\n getCommitSignatureProtection: [\n \"GET /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures\",\n ],\n getCommunityProfileMetrics: [\"GET /repos/{owner}/{repo}/community/profile\"],\n getContent: [\"GET /repos/{owner}/{repo}/contents/{path}\"],\n getContributorsStats: [\"GET /repos/{owner}/{repo}/stats/contributors\"],\n getDeployKey: [\"GET /repos/{owner}/{repo}/keys/{key_id}\"],\n getDeployment: [\"GET /repos/{owner}/{repo}/deployments/{deployment_id}\"],\n getDeploymentStatus: [\n \"GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses/{status_id}\",\n ],\n getEnvironment: [\n \"GET /repos/{owner}/{repo}/environments/{environment_name}\",\n ],\n getLatestPagesBuild: [\"GET /repos/{owner}/{repo}/pages/builds/latest\"],\n getLatestRelease: [\"GET /repos/{owner}/{repo}/releases/latest\"],\n getPages: [\"GET /repos/{owner}/{repo}/pages\"],\n getPagesBuild: [\"GET /repos/{owner}/{repo}/pages/builds/{build_id}\"],\n getPagesHealthCheck: [\"GET /repos/{owner}/{repo}/pages/health\"],\n getParticipationStats: [\"GET /repos/{owner}/{repo}/stats/participation\"],\n getPullRequestReviewProtection: [\n \"GET /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews\",\n ],\n getPunchCardStats: [\"GET /repos/{owner}/{repo}/stats/punch_card\"],\n getReadme: [\"GET /repos/{owner}/{repo}/readme\"],\n getReadmeInDirectory: [\"GET /repos/{owner}/{repo}/readme/{dir}\"],\n getRelease: [\"GET /repos/{owner}/{repo}/releases/{release_id}\"],\n getReleaseAsset: [\"GET /repos/{owner}/{repo}/releases/assets/{asset_id}\"],\n getReleaseByTag: [\"GET /repos/{owner}/{repo}/releases/tags/{tag}\"],\n getStatusChecksProtection: [\n \"GET /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks\",\n ],\n getTeamsWithAccessToProtectedBranch: [\n \"GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams\",\n ],\n getTopPaths: [\"GET /repos/{owner}/{repo}/traffic/popular/paths\"],\n getTopReferrers: [\"GET /repos/{owner}/{repo}/traffic/popular/referrers\"],\n getUsersWithAccessToProtectedBranch: [\n \"GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users\",\n ],\n getViews: [\"GET /repos/{owner}/{repo}/traffic/views\"],\n getWebhook: [\"GET /repos/{owner}/{repo}/hooks/{hook_id}\"],\n getWebhookConfigForRepo: [\n \"GET /repos/{owner}/{repo}/hooks/{hook_id}/config\",\n ],\n getWebhookDelivery: [\n \"GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries/{delivery_id}\",\n ],\n listAutolinks: [\"GET /repos/{owner}/{repo}/autolinks\"],\n listBranches: [\"GET /repos/{owner}/{repo}/branches\"],\n listBranchesForHeadCommit: [\n \"GET /repos/{owner}/{repo}/commits/{commit_sha}/branches-where-head\",\n ],\n listCollaborators: [\"GET /repos/{owner}/{repo}/collaborators\"],\n listCommentsForCommit: [\n \"GET /repos/{owner}/{repo}/commits/{commit_sha}/comments\",\n ],\n listCommitCommentsForRepo: [\"GET /repos/{owner}/{repo}/comments\"],\n listCommitStatusesForRef: [\n \"GET /repos/{owner}/{repo}/commits/{ref}/statuses\",\n ],\n listCommits: [\"GET /repos/{owner}/{repo}/commits\"],\n listContributors: [\"GET /repos/{owner}/{repo}/contributors\"],\n listDeployKeys: [\"GET /repos/{owner}/{repo}/keys\"],\n listDeploymentStatuses: [\n \"GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses\",\n ],\n listDeployments: [\"GET /repos/{owner}/{repo}/deployments\"],\n listForAuthenticatedUser: [\"GET /user/repos\"],\n listForOrg: [\"GET /orgs/{org}/repos\"],\n listForUser: [\"GET /users/{username}/repos\"],\n listForks: [\"GET /repos/{owner}/{repo}/forks\"],\n listInvitations: [\"GET /repos/{owner}/{repo}/invitations\"],\n listInvitationsForAuthenticatedUser: [\"GET /user/repository_invitations\"],\n listLanguages: [\"GET /repos/{owner}/{repo}/languages\"],\n listPagesBuilds: [\"GET /repos/{owner}/{repo}/pages/builds\"],\n listPublic: [\"GET /repositories\"],\n listPullRequestsAssociatedWithCommit: [\n \"GET /repos/{owner}/{repo}/commits/{commit_sha}/pulls\",\n ],\n listReleaseAssets: [\n \"GET /repos/{owner}/{repo}/releases/{release_id}/assets\",\n ],\n listReleases: [\"GET /repos/{owner}/{repo}/releases\"],\n listTagProtection: [\"GET /repos/{owner}/{repo}/tags/protection\"],\n listTags: [\"GET /repos/{owner}/{repo}/tags\"],\n listTeams: [\"GET /repos/{owner}/{repo}/teams\"],\n listWebhookDeliveries: [\n \"GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries\",\n ],\n listWebhooks: [\"GET /repos/{owner}/{repo}/hooks\"],\n merge: [\"POST /repos/{owner}/{repo}/merges\"],\n mergeUpstream: [\"POST /repos/{owner}/{repo}/merge-upstream\"],\n pingWebhook: [\"POST /repos/{owner}/{repo}/hooks/{hook_id}/pings\"],\n redeliverWebhookDelivery: [\n \"POST /repos/{owner}/{repo}/hooks/{hook_id}/deliveries/{delivery_id}/attempts\",\n ],\n removeAppAccessRestrictions: [\n \"DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps\",\n {},\n { mapToData: \"apps\" },\n ],\n removeCollaborator: [\n \"DELETE /repos/{owner}/{repo}/collaborators/{username}\",\n ],\n removeStatusCheckContexts: [\n \"DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts\",\n {},\n { mapToData: \"contexts\" },\n ],\n removeStatusCheckProtection: [\n \"DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks\",\n ],\n removeTeamAccessRestrictions: [\n \"DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams\",\n {},\n { mapToData: \"teams\" },\n ],\n removeUserAccessRestrictions: [\n \"DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users\",\n {},\n { mapToData: \"users\" },\n ],\n renameBranch: [\"POST /repos/{owner}/{repo}/branches/{branch}/rename\"],\n replaceAllTopics: [\"PUT /repos/{owner}/{repo}/topics\"],\n requestPagesBuild: [\"POST /repos/{owner}/{repo}/pages/builds\"],\n setAdminBranchProtection: [\n \"POST /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins\",\n ],\n setAppAccessRestrictions: [\n \"PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps\",\n {},\n { mapToData: \"apps\" },\n ],\n setStatusCheckContexts: [\n \"PUT /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts\",\n {},\n { mapToData: \"contexts\" },\n ],\n setTeamAccessRestrictions: [\n \"PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams\",\n {},\n { mapToData: \"teams\" },\n ],\n setUserAccessRestrictions: [\n \"PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users\",\n {},\n { mapToData: \"users\" },\n ],\n testPushWebhook: [\"POST /repos/{owner}/{repo}/hooks/{hook_id}/tests\"],\n transfer: [\"POST /repos/{owner}/{repo}/transfer\"],\n update: [\"PATCH /repos/{owner}/{repo}\"],\n updateBranchProtection: [\n \"PUT /repos/{owner}/{repo}/branches/{branch}/protection\",\n ],\n updateCommitComment: [\"PATCH /repos/{owner}/{repo}/comments/{comment_id}\"],\n updateInformationAboutPagesSite: [\"PUT /repos/{owner}/{repo}/pages\"],\n updateInvitation: [\n \"PATCH /repos/{owner}/{repo}/invitations/{invitation_id}\",\n ],\n updatePullRequestReviewProtection: [\n \"PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews\",\n ],\n updateRelease: [\"PATCH /repos/{owner}/{repo}/releases/{release_id}\"],\n updateReleaseAsset: [\n \"PATCH /repos/{owner}/{repo}/releases/assets/{asset_id}\",\n ],\n updateStatusCheckPotection: [\n \"PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks\",\n {},\n { renamed: [\"repos\", \"updateStatusCheckProtection\"] },\n ],\n updateStatusCheckProtection: [\n \"PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks\",\n ],\n updateWebhook: [\"PATCH /repos/{owner}/{repo}/hooks/{hook_id}\"],\n updateWebhookConfigForRepo: [\n \"PATCH /repos/{owner}/{repo}/hooks/{hook_id}/config\",\n ],\n uploadReleaseAsset: [\n \"POST /repos/{owner}/{repo}/releases/{release_id}/assets{?name,label}\",\n { baseUrl: \"https://uploads.github.com\" },\n ],\n },\n search: {\n code: [\"GET /search/code\"],\n commits: [\"GET /search/commits\"],\n issuesAndPullRequests: [\"GET /search/issues\"],\n labels: [\"GET /search/labels\"],\n repos: [\"GET /search/repositories\"],\n topics: [\"GET /search/topics\"],\n users: [\"GET /search/users\"],\n },\n secretScanning: {\n getAlert: [\n \"GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}\",\n ],\n listAlertsForEnterprise: [\n \"GET /enterprises/{enterprise}/secret-scanning/alerts\",\n ],\n listAlertsForOrg: [\"GET /orgs/{org}/secret-scanning/alerts\"],\n listAlertsForRepo: [\"GET /repos/{owner}/{repo}/secret-scanning/alerts\"],\n listLocationsForAlert: [\n \"GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}/locations\",\n ],\n updateAlert: [\n \"PATCH /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}\",\n ],\n },\n teams: {\n addOrUpdateMembershipForUserInOrg: [\n \"PUT /orgs/{org}/teams/{team_slug}/memberships/{username}\",\n ],\n addOrUpdateProjectPermissionsInOrg: [\n \"PUT /orgs/{org}/teams/{team_slug}/projects/{project_id}\",\n ],\n addOrUpdateRepoPermissionsInOrg: [\n \"PUT /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}\",\n ],\n checkPermissionsForProjectInOrg: [\n \"GET /orgs/{org}/teams/{team_slug}/projects/{project_id}\",\n ],\n checkPermissionsForRepoInOrg: [\n \"GET /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}\",\n ],\n create: [\"POST /orgs/{org}/teams\"],\n createDiscussionCommentInOrg: [\n \"POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments\",\n ],\n createDiscussionInOrg: [\"POST /orgs/{org}/teams/{team_slug}/discussions\"],\n deleteDiscussionCommentInOrg: [\n \"DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}\",\n ],\n deleteDiscussionInOrg: [\n \"DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}\",\n ],\n deleteInOrg: [\"DELETE /orgs/{org}/teams/{team_slug}\"],\n getByName: [\"GET /orgs/{org}/teams/{team_slug}\"],\n getDiscussionCommentInOrg: [\n \"GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}\",\n ],\n getDiscussionInOrg: [\n \"GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}\",\n ],\n getMembershipForUserInOrg: [\n \"GET /orgs/{org}/teams/{team_slug}/memberships/{username}\",\n ],\n list: [\"GET /orgs/{org}/teams\"],\n listChildInOrg: [\"GET /orgs/{org}/teams/{team_slug}/teams\"],\n listDiscussionCommentsInOrg: [\n \"GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments\",\n ],\n listDiscussionsInOrg: [\"GET /orgs/{org}/teams/{team_slug}/discussions\"],\n listForAuthenticatedUser: [\"GET /user/teams\"],\n listMembersInOrg: [\"GET /orgs/{org}/teams/{team_slug}/members\"],\n listPendingInvitationsInOrg: [\n \"GET /orgs/{org}/teams/{team_slug}/invitations\",\n ],\n listProjectsInOrg: [\"GET /orgs/{org}/teams/{team_slug}/projects\"],\n listReposInOrg: [\"GET /orgs/{org}/teams/{team_slug}/repos\"],\n removeMembershipForUserInOrg: [\n \"DELETE /orgs/{org}/teams/{team_slug}/memberships/{username}\",\n ],\n removeProjectInOrg: [\n \"DELETE /orgs/{org}/teams/{team_slug}/projects/{project_id}\",\n ],\n removeRepoInOrg: [\n \"DELETE /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}\",\n ],\n updateDiscussionCommentInOrg: [\n \"PATCH /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}\",\n ],\n updateDiscussionInOrg: [\n \"PATCH /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}\",\n ],\n updateInOrg: [\"PATCH /orgs/{org}/teams/{team_slug}\"],\n },\n users: {\n addEmailForAuthenticated: [\n \"POST /user/emails\",\n {},\n { renamed: [\"users\", \"addEmailForAuthenticatedUser\"] },\n ],\n addEmailForAuthenticatedUser: [\"POST /user/emails\"],\n block: [\"PUT /user/blocks/{username}\"],\n checkBlocked: [\"GET /user/blocks/{username}\"],\n checkFollowingForUser: [\"GET /users/{username}/following/{target_user}\"],\n checkPersonIsFollowedByAuthenticated: [\"GET /user/following/{username}\"],\n createGpgKeyForAuthenticated: [\n \"POST /user/gpg_keys\",\n {},\n { renamed: [\"users\", \"createGpgKeyForAuthenticatedUser\"] },\n ],\n createGpgKeyForAuthenticatedUser: [\"POST /user/gpg_keys\"],\n createPublicSshKeyForAuthenticated: [\n \"POST /user/keys\",\n {},\n { renamed: [\"users\", \"createPublicSshKeyForAuthenticatedUser\"] },\n ],\n createPublicSshKeyForAuthenticatedUser: [\"POST /user/keys\"],\n deleteEmailForAuthenticated: [\n \"DELETE /user/emails\",\n {},\n { renamed: [\"users\", \"deleteEmailForAuthenticatedUser\"] },\n ],\n deleteEmailForAuthenticatedUser: [\"DELETE /user/emails\"],\n deleteGpgKeyForAuthenticated: [\n \"DELETE /user/gpg_keys/{gpg_key_id}\",\n {},\n { renamed: [\"users\", \"deleteGpgKeyForAuthenticatedUser\"] },\n ],\n deleteGpgKeyForAuthenticatedUser: [\"DELETE /user/gpg_keys/{gpg_key_id}\"],\n deletePublicSshKeyForAuthenticated: [\n \"DELETE /user/keys/{key_id}\",\n {},\n { renamed: [\"users\", \"deletePublicSshKeyForAuthenticatedUser\"] },\n ],\n deletePublicSshKeyForAuthenticatedUser: [\"DELETE /user/keys/{key_id}\"],\n follow: [\"PUT /user/following/{username}\"],\n getAuthenticated: [\"GET /user\"],\n getByUsername: [\"GET /users/{username}\"],\n getContextForUser: [\"GET /users/{username}/hovercard\"],\n getGpgKeyForAuthenticated: [\n \"GET /user/gpg_keys/{gpg_key_id}\",\n {},\n { renamed: [\"users\", \"getGpgKeyForAuthenticatedUser\"] },\n ],\n getGpgKeyForAuthenticatedUser: [\"GET /user/gpg_keys/{gpg_key_id}\"],\n getPublicSshKeyForAuthenticated: [\n \"GET /user/keys/{key_id}\",\n {},\n { renamed: [\"users\", \"getPublicSshKeyForAuthenticatedUser\"] },\n ],\n getPublicSshKeyForAuthenticatedUser: [\"GET /user/keys/{key_id}\"],\n list: [\"GET /users\"],\n listBlockedByAuthenticated: [\n \"GET /user/blocks\",\n {},\n { renamed: [\"users\", \"listBlockedByAuthenticatedUser\"] },\n ],\n listBlockedByAuthenticatedUser: [\"GET /user/blocks\"],\n listEmailsForAuthenticated: [\n \"GET /user/emails\",\n {},\n { renamed: [\"users\", \"listEmailsForAuthenticatedUser\"] },\n ],\n listEmailsForAuthenticatedUser: [\"GET /user/emails\"],\n listFollowedByAuthenticated: [\n \"GET /user/following\",\n {},\n { renamed: [\"users\", \"listFollowedByAuthenticatedUser\"] },\n ],\n listFollowedByAuthenticatedUser: [\"GET /user/following\"],\n listFollowersForAuthenticatedUser: [\"GET /user/followers\"],\n listFollowersForUser: [\"GET /users/{username}/followers\"],\n listFollowingForUser: [\"GET /users/{username}/following\"],\n listGpgKeysForAuthenticated: [\n \"GET /user/gpg_keys\",\n {},\n { renamed: [\"users\", \"listGpgKeysForAuthenticatedUser\"] },\n ],\n listGpgKeysForAuthenticatedUser: [\"GET /user/gpg_keys\"],\n listGpgKeysForUser: [\"GET /users/{username}/gpg_keys\"],\n listPublicEmailsForAuthenticated: [\n \"GET /user/public_emails\",\n {},\n { renamed: [\"users\", \"listPublicEmailsForAuthenticatedUser\"] },\n ],\n listPublicEmailsForAuthenticatedUser: [\"GET /user/public_emails\"],\n listPublicKeysForUser: [\"GET /users/{username}/keys\"],\n listPublicSshKeysForAuthenticated: [\n \"GET /user/keys\",\n {},\n { renamed: [\"users\", \"listPublicSshKeysForAuthenticatedUser\"] },\n ],\n listPublicSshKeysForAuthenticatedUser: [\"GET /user/keys\"],\n setPrimaryEmailVisibilityForAuthenticated: [\n \"PATCH /user/email/visibility\",\n {},\n { renamed: [\"users\", \"setPrimaryEmailVisibilityForAuthenticatedUser\"] },\n ],\n setPrimaryEmailVisibilityForAuthenticatedUser: [\n \"PATCH /user/email/visibility\",\n ],\n unblock: [\"DELETE /user/blocks/{username}\"],\n unfollow: [\"DELETE /user/following/{username}\"],\n updateAuthenticated: [\"PATCH /user\"],\n },\n};\nexport default Endpoints;\n","export const VERSION = \"5.16.2\";\n","export function endpointsToMethods(octokit, endpointsMap) {\n const newMethods = {};\n for (const [scope, endpoints] of Object.entries(endpointsMap)) {\n for (const [methodName, endpoint] of Object.entries(endpoints)) {\n const [route, defaults, decorations] = endpoint;\n const [method, url] = route.split(/ /);\n const endpointDefaults = Object.assign({ method, url }, defaults);\n if (!newMethods[scope]) {\n newMethods[scope] = {};\n }\n const scopeMethods = newMethods[scope];\n if (decorations) {\n scopeMethods[methodName] = decorate(octokit, scope, methodName, endpointDefaults, decorations);\n continue;\n }\n scopeMethods[methodName] = octokit.request.defaults(endpointDefaults);\n }\n }\n return newMethods;\n}\nfunction decorate(octokit, scope, methodName, defaults, decorations) {\n const requestWithDefaults = octokit.request.defaults(defaults);\n /* istanbul ignore next */\n function withDecorations(...args) {\n // @ts-ignore https://github.com/microsoft/TypeScript/issues/25488\n let options = requestWithDefaults.endpoint.merge(...args);\n // There are currently no other decorations than `.mapToData`\n if (decorations.mapToData) {\n options = Object.assign({}, options, {\n data: options[decorations.mapToData],\n [decorations.mapToData]: undefined,\n });\n return requestWithDefaults(options);\n }\n if (decorations.renamed) {\n const [newScope, newMethodName] = decorations.renamed;\n octokit.log.warn(`octokit.${scope}.${methodName}() has been renamed to octokit.${newScope}.${newMethodName}()`);\n }\n if (decorations.deprecated) {\n octokit.log.warn(decorations.deprecated);\n }\n if (decorations.renamedParameters) {\n // @ts-ignore https://github.com/microsoft/TypeScript/issues/25488\n const options = requestWithDefaults.endpoint.merge(...args);\n for (const [name, alias] of Object.entries(decorations.renamedParameters)) {\n if (name in options) {\n octokit.log.warn(`\"${name}\" parameter is deprecated for \"octokit.${scope}.${methodName}()\". Use \"${alias}\" instead`);\n if (!(alias in options)) {\n options[alias] = options[name];\n }\n delete options[name];\n }\n }\n return requestWithDefaults(options);\n }\n // @ts-ignore https://github.com/microsoft/TypeScript/issues/25488\n return requestWithDefaults(...args);\n }\n return Object.assign(withDecorations, requestWithDefaults);\n}\n","import ENDPOINTS from \"./generated/endpoints\";\nimport { VERSION } from \"./version\";\nimport { endpointsToMethods } from \"./endpoints-to-methods\";\nexport function restEndpointMethods(octokit) {\n const api = endpointsToMethods(octokit, ENDPOINTS);\n return {\n rest: api,\n };\n}\nrestEndpointMethods.VERSION = VERSION;\nexport function legacyRestEndpointMethods(octokit) {\n const api = endpointsToMethods(octokit, ENDPOINTS);\n return {\n ...api,\n rest: api,\n };\n}\nlegacyRestEndpointMethods.VERSION = VERSION;\n"],"names":["Endpoints","actions","addCustomLabelsToSelfHostedRunnerForOrg","addCustomLabelsToSelfHostedRunnerForRepo","addSelectedRepoToOrgSecret","approveWorkflowRun","cancelWorkflowRun","createOrUpdateEnvironmentSecret","createOrUpdateOrgSecret","createOrUpdateRepoSecret","createRegistrationTokenForOrg","createRegistrationTokenForRepo","createRemoveTokenForOrg","createRemoveTokenForRepo","createWorkflowDispatch","deleteActionsCacheById","deleteActionsCacheByKey","deleteArtifact","deleteEnvironmentSecret","deleteOrgSecret","deleteRepoSecret","deleteSelfHostedRunnerFromOrg","deleteSelfHostedRunnerFromRepo","deleteWorkflowRun","deleteWorkflowRunLogs","disableSelectedRepositoryGithubActionsOrganization","disableWorkflow","downloadArtifact","downloadJobLogsForWorkflowRun","downloadWorkflowRunAttemptLogs","downloadWorkflowRunLogs","enableSelectedRepositoryGithubActionsOrganization","enableWorkflow","getActionsCacheList","getActionsCacheUsage","getActionsCacheUsageByRepoForOrg","getActionsCacheUsageForEnterprise","getActionsCacheUsageForOrg","getAllowedActionsOrganization","getAllowedActionsRepository","getArtifact","getEnvironmentPublicKey","getEnvironmentSecret","getGithubActionsDefaultWorkflowPermissionsEnterprise","getGithubActionsDefaultWorkflowPermissionsOrganization","getGithubActionsDefaultWorkflowPermissionsRepository","getGithubActionsPermissionsOrganization","getGithubActionsPermissionsRepository","getJobForWorkflowRun","getOrgPublicKey","getOrgSecret","getPendingDeploymentsForRun","getRepoPermissions","renamed","getRepoPublicKey","getRepoSecret","getReviewsForRun","getSelfHostedRunnerForOrg","getSelfHostedRunnerForRepo","getWorkflow","getWorkflowAccessToRepository","getWorkflowRun","getWorkflowRunAttempt","getWorkflowRunUsage","getWorkflowUsage","listArtifactsForRepo","listEnvironmentSecrets","listJobsForWorkflowRun","listJobsForWorkflowRunAttempt","listLabelsForSelfHostedRunnerForOrg","listLabelsForSelfHostedRunnerForRepo","listOrgSecrets","listRepoSecrets","listRepoWorkflows","listRunnerApplicationsForOrg","listRunnerApplicationsForRepo","listSelectedReposForOrgSecret","listSelectedRepositoriesEnabledGithubActionsOrganization","listSelfHostedRunnersForOrg","listSelfHostedRunnersForRepo","listWorkflowRunArtifacts","listWorkflowRuns","listWorkflowRunsForRepo","reRunJobForWorkflowRun","reRunWorkflow","reRunWorkflowFailedJobs","removeAllCustomLabelsFromSelfHostedRunnerForOrg","removeAllCustomLabelsFromSelfHostedRunnerForRepo","removeCustomLabelFromSelfHostedRunnerForOrg","removeCustomLabelFromSelfHostedRunnerForRepo","removeSelectedRepoFromOrgSecret","reviewPendingDeploymentsForRun","setAllowedActionsOrganization","setAllowedActionsRepository","setCustomLabelsForSelfHostedRunnerForOrg","setCustomLabelsForSelfHostedRunnerForRepo","setGithubActionsDefaultWorkflowPermissionsEnterprise","setGithubActionsDefaultWorkflowPermissionsOrganization","setGithubActionsDefaultWorkflowPermissionsRepository","setGithubActionsPermissionsOrganization","setGithubActionsPermissionsRepository","setSelectedReposForOrgSecret","setSelectedRepositoriesEnabledGithubActionsOrganization","setWorkflowAccessToRepository","activity","checkRepoIsStarredByAuthenticatedUser","deleteRepoSubscription","deleteThreadSubscription","getFeeds","getRepoSubscription","getThread","getThreadSubscriptionForAuthenticatedUser","listEventsForAuthenticatedUser","listNotificationsForAuthenticatedUser","listOrgEventsForAuthenticatedUser","listPublicEvents","listPublicEventsForRepoNetwork","listPublicEventsForUser","listPublicOrgEvents","listReceivedEventsForUser","listReceivedPublicEventsForUser","listRepoEvents","listRepoNotificationsForAuthenticatedUser","listReposStarredByAuthenticatedUser","listReposStarredByUser","listReposWatchedByUser","listStargazersForRepo","listWatchedReposForAuthenticatedUser","listWatchersForRepo","markNotificationsAsRead","markRepoNotificationsAsRead","markThreadAsRead","setRepoSubscription","setThreadSubscription","starRepoForAuthenticatedUser","unstarRepoForAuthenticatedUser","apps","addRepoToInstallation","addRepoToInstallationForAuthenticatedUser","checkToken","createFromManifest","createInstallationAccessToken","deleteAuthorization","deleteInstallation","deleteToken","getAuthenticated","getBySlug","getInstallation","getOrgInstallation","getRepoInstallation","getSubscriptionPlanForAccount","getSubscriptionPlanForAccountStubbed","getUserInstallation","getWebhookConfigForApp","getWebhookDelivery","listAccountsForPlan","listAccountsForPlanStubbed","listInstallationReposForAuthenticatedUser","listInstallations","listInstallationsForAuthenticatedUser","listPlans","listPlansStubbed","listReposAccessibleToInstallation","listSubscriptionsForAuthenticatedUser","listSubscriptionsForAuthenticatedUserStubbed","listWebhookDeliveries","redeliverWebhookDelivery","removeRepoFromInstallation","removeRepoFromInstallationForAuthenticatedUser","resetToken","revokeInstallationAccessToken","scopeToken","suspendInstallation","unsuspendInstallation","updateWebhookConfigForApp","billing","getGithubActionsBillingOrg","getGithubActionsBillingUser","getGithubAdvancedSecurityBillingGhe","getGithubAdvancedSecurityBillingOrg","getGithubPackagesBillingOrg","getGithubPackagesBillingUser","getSharedStorageBillingOrg","getSharedStorageBillingUser","checks","create","createSuite","get","getSuite","listAnnotations","listForRef","listForSuite","listSuitesForRef","rerequestRun","rerequestSuite","setSuitesPreferences","update","codeScanning","deleteAnalysis","getAlert","renamedParameters","alert_id","getAnalysis","getSarif","listAlertInstances","listAlertsForOrg","listAlertsForRepo","listAlertsInstances","listRecentAnalyses","updateAlert","uploadSarif","codesOfConduct","getAllCodesOfConduct","getConductCode","codespaces","addRepositoryForSecretForAuthenticatedUser","codespaceMachinesForAuthenticatedUser","createForAuthenticatedUser","createOrUpdateSecretForAuthenticatedUser","createWithPrForAuthenticatedUser","createWithRepoForAuthenticatedUser","deleteForAuthenticatedUser","deleteFromOrganization","deleteSecretForAuthenticatedUser","exportForAuthenticatedUser","getExportDetailsForAuthenticatedUser","getForAuthenticatedUser","getPublicKeyForAuthenticatedUser","getSecretForAuthenticatedUser","listDevcontainersInRepositoryForAuthenticatedUser","listForAuthenticatedUser","listInOrganization","org_id","listInRepositoryForAuthenticatedUser","listRepositoriesForSecretForAuthenticatedUser","listSecretsForAuthenticatedUser","removeRepositoryForSecretForAuthenticatedUser","repoMachinesForAuthenticatedUser","setRepositoriesForSecretForAuthenticatedUser","startForAuthenticatedUser","stopForAuthenticatedUser","stopInOrganization","updateForAuthenticatedUser","dependabot","dependencyGraph","createRepositorySnapshot","diffRange","emojis","enterpriseAdmin","addCustomLabelsToSelfHostedRunnerForEnterprise","disableSelectedOrganizationGithubActionsEnterprise","enableSelectedOrganizationGithubActionsEnterprise","getAllowedActionsEnterprise","getGithubActionsPermissionsEnterprise","getServerStatistics","listLabelsForSelfHostedRunnerForEnterprise","listSelectedOrganizationsEnabledGithubActionsEnterprise","removeAllCustomLabelsFromSelfHostedRunnerForEnterprise","removeCustomLabelFromSelfHostedRunnerForEnterprise","setAllowedActionsEnterprise","setCustomLabelsForSelfHostedRunnerForEnterprise","setGithubActionsPermissionsEnterprise","setSelectedOrganizationsEnabledGithubActionsEnterprise","gists","checkIsStarred","createComment","delete","deleteComment","fork","getComment","getRevision","list","listComments","listCommits","listForUser","listForks","listPublic","listStarred","star","unstar","updateComment","git","createBlob","createCommit","createRef","createTag","createTree","deleteRef","getBlob","getCommit","getRef","getTag","getTree","listMatchingRefs","updateRef","gitignore","getAllTemplates","getTemplate","interactions","getRestrictionsForAuthenticatedUser","getRestrictionsForOrg","getRestrictionsForRepo","getRestrictionsForYourPublicRepos","removeRestrictionsForAuthenticatedUser","removeRestrictionsForOrg","removeRestrictionsForRepo","removeRestrictionsForYourPublicRepos","setRestrictionsForAuthenticatedUser","setRestrictionsForOrg","setRestrictionsForRepo","setRestrictionsForYourPublicRepos","issues","addAssignees","addLabels","checkUserCanBeAssigned","createLabel","createMilestone","deleteLabel","deleteMilestone","getEvent","getLabel","getMilestone","listAssignees","listCommentsForRepo","listEvents","listEventsForRepo","listEventsForTimeline","listForOrg","listForRepo","listLabelsForMilestone","listLabelsForRepo","listLabelsOnIssue","listMilestones","lock","removeAllLabels","removeAssignees","removeLabel","setLabels","unlock","updateLabel","updateMilestone","licenses","getAllCommonlyUsed","getForRepo","markdown","render","renderRaw","headers","meta","getOctocat","getZen","root","migrations","cancelImport","deleteArchiveForAuthenticatedUser","deleteArchiveForOrg","downloadArchiveForOrg","getArchiveForAuthenticatedUser","getCommitAuthors","getImportStatus","getLargeFiles","getStatusForAuthenticatedUser","getStatusForOrg","listReposForAuthenticatedUser","listReposForOrg","listReposForUser","mapCommitAuthor","setLfsPreference","startForOrg","startImport","unlockRepoForAuthenticatedUser","unlockRepoForOrg","updateImport","orgs","blockUser","cancelInvitation","checkBlockedUser","checkMembershipForUser","checkPublicMembershipForUser","convertMemberToOutsideCollaborator","createInvitation","createWebhook","deleteWebhook","getMembershipForAuthenticatedUser","getMembershipForUser","getWebhook","getWebhookConfigForOrg","listAppInstallations","listBlockedUsers","listCustomRoles","listFailedInvitations","listInvitationTeams","listMembers","listMembershipsForAuthenticatedUser","listOutsideCollaborators","listPendingInvitations","listPublicMembers","listWebhooks","pingWebhook","removeMember","removeMembershipForUser","removeOutsideCollaborator","removePublicMembershipForAuthenticatedUser","setMembershipForUser","setPublicMembershipForAuthenticatedUser","unblockUser","updateMembershipForAuthenticatedUser","updateWebhook","updateWebhookConfigForOrg","packages","deletePackageForAuthenticatedUser","deletePackageForOrg","deletePackageForUser","deletePackageVersionForAuthenticatedUser","deletePackageVersionForOrg","deletePackageVersionForUser","getAllPackageVersionsForAPackageOwnedByAnOrg","getAllPackageVersionsForAPackageOwnedByTheAuthenticatedUser","getAllPackageVersionsForPackageOwnedByAuthenticatedUser","getAllPackageVersionsForPackageOwnedByOrg","getAllPackageVersionsForPackageOwnedByUser","getPackageForAuthenticatedUser","getPackageForOrganization","getPackageForUser","getPackageVersionForAuthenticatedUser","getPackageVersionForOrganization","getPackageVersionForUser","listPackagesForAuthenticatedUser","listPackagesForOrganization","listPackagesForUser","restorePackageForAuthenticatedUser","restorePackageForOrg","restorePackageForUser","restorePackageVersionForAuthenticatedUser","restorePackageVersionForOrg","restorePackageVersionForUser","projects","addCollaborator","createCard","createColumn","createForOrg","createForRepo","deleteCard","deleteColumn","getCard","getColumn","getPermissionForUser","listCards","listCollaborators","listColumns","moveCard","moveColumn","removeCollaborator","updateCard","updateColumn","pulls","checkIfMerged","createReplyForReviewComment","createReview","createReviewComment","deletePendingReview","deleteReviewComment","dismissReview","getReview","getReviewComment","listCommentsForReview","listFiles","listRequestedReviewers","listReviewComments","listReviewCommentsForRepo","listReviews","merge","removeRequestedReviewers","requestReviewers","submitReview","updateBranch","updateReview","updateReviewComment","rateLimit","reactions","createForCommitComment","createForIssue","createForIssueComment","createForPullRequestReviewComment","createForRelease","createForTeamDiscussionCommentInOrg","createForTeamDiscussionInOrg","deleteForCommitComment","deleteForIssue","deleteForIssueComment","deleteForPullRequestComment","deleteForRelease","deleteForTeamDiscussion","deleteForTeamDiscussionComment","listForCommitComment","listForIssue","listForIssueComment","listForPullRequestReviewComment","listForRelease","listForTeamDiscussionCommentInOrg","listForTeamDiscussionInOrg","repos","acceptInvitation","acceptInvitationForAuthenticatedUser","addAppAccessRestrictions","mapToData","addStatusCheckContexts","addTeamAccessRestrictions","addUserAccessRestrictions","checkCollaborator","checkVulnerabilityAlerts","codeownersErrors","compareCommits","compareCommitsWithBasehead","createAutolink","createCommitComment","createCommitSignatureProtection","createCommitStatus","createDeployKey","createDeployment","createDeploymentStatus","createDispatchEvent","createFork","createInOrg","createOrUpdateEnvironment","createOrUpdateFileContents","createPagesSite","createRelease","createTagProtection","createUsingTemplate","declineInvitation","declineInvitationForAuthenticatedUser","deleteAccessRestrictions","deleteAdminBranchProtection","deleteAnEnvironment","deleteAutolink","deleteBranchProtection","deleteCommitComment","deleteCommitSignatureProtection","deleteDeployKey","deleteDeployment","deleteFile","deleteInvitation","deletePagesSite","deletePullRequestReviewProtection","deleteRelease","deleteReleaseAsset","deleteTagProtection","disableAutomatedSecurityFixes","disableLfsForRepo","disableVulnerabilityAlerts","downloadArchive","downloadTarballArchive","downloadZipballArchive","enableAutomatedSecurityFixes","enableLfsForRepo","enableVulnerabilityAlerts","generateReleaseNotes","getAccessRestrictions","getAdminBranchProtection","getAllEnvironments","getAllStatusCheckContexts","getAllTopics","getAppsWithAccessToProtectedBranch","getAutolink","getBranch","getBranchProtection","getClones","getCodeFrequencyStats","getCollaboratorPermissionLevel","getCombinedStatusForRef","getCommitActivityStats","getCommitComment","getCommitSignatureProtection","getCommunityProfileMetrics","getContent","getContributorsStats","getDeployKey","getDeployment","getDeploymentStatus","getEnvironment","getLatestPagesBuild","getLatestRelease","getPages","getPagesBuild","getPagesHealthCheck","getParticipationStats","getPullRequestReviewProtection","getPunchCardStats","getReadme","getReadmeInDirectory","getRelease","getReleaseAsset","getReleaseByTag","getStatusChecksProtection","getTeamsWithAccessToProtectedBranch","getTopPaths","getTopReferrers","getUsersWithAccessToProtectedBranch","getViews","getWebhookConfigForRepo","listAutolinks","listBranches","listBranchesForHeadCommit","listCommentsForCommit","listCommitCommentsForRepo","listCommitStatusesForRef","listContributors","listDeployKeys","listDeploymentStatuses","listDeployments","listInvitations","listInvitationsForAuthenticatedUser","listLanguages","listPagesBuilds","listPullRequestsAssociatedWithCommit","listReleaseAssets","listReleases","listTagProtection","listTags","listTeams","mergeUpstream","removeAppAccessRestrictions","removeStatusCheckContexts","removeStatusCheckProtection","removeTeamAccessRestrictions","removeUserAccessRestrictions","renameBranch","replaceAllTopics","requestPagesBuild","setAdminBranchProtection","setAppAccessRestrictions","setStatusCheckContexts","setTeamAccessRestrictions","setUserAccessRestrictions","testPushWebhook","transfer","updateBranchProtection","updateCommitComment","updateInformationAboutPagesSite","updateInvitation","updatePullRequestReviewProtection","updateRelease","updateReleaseAsset","updateStatusCheckPotection","updateStatusCheckProtection","updateWebhookConfigForRepo","uploadReleaseAsset","baseUrl","search","code","commits","issuesAndPullRequests","labels","topics","users","secretScanning","listAlertsForEnterprise","listLocationsForAlert","teams","addOrUpdateMembershipForUserInOrg","addOrUpdateProjectPermissionsInOrg","addOrUpdateRepoPermissionsInOrg","checkPermissionsForProjectInOrg","checkPermissionsForRepoInOrg","createDiscussionCommentInOrg","createDiscussionInOrg","deleteDiscussionCommentInOrg","deleteDiscussionInOrg","deleteInOrg","getByName","getDiscussionCommentInOrg","getDiscussionInOrg","getMembershipForUserInOrg","listChildInOrg","listDiscussionCommentsInOrg","listDiscussionsInOrg","listMembersInOrg","listPendingInvitationsInOrg","listProjectsInOrg","listReposInOrg","removeMembershipForUserInOrg","removeProjectInOrg","removeRepoInOrg","updateDiscussionCommentInOrg","updateDiscussionInOrg","updateInOrg","addEmailForAuthenticated","addEmailForAuthenticatedUser","block","checkBlocked","checkFollowingForUser","checkPersonIsFollowedByAuthenticated","createGpgKeyForAuthenticated","createGpgKeyForAuthenticatedUser","createPublicSshKeyForAuthenticated","createPublicSshKeyForAuthenticatedUser","deleteEmailForAuthenticated","deleteEmailForAuthenticatedUser","deleteGpgKeyForAuthenticated","deleteGpgKeyForAuthenticatedUser","deletePublicSshKeyForAuthenticated","deletePublicSshKeyForAuthenticatedUser","follow","getByUsername","getContextForUser","getGpgKeyForAuthenticated","getGpgKeyForAuthenticatedUser","getPublicSshKeyForAuthenticated","getPublicSshKeyForAuthenticatedUser","listBlockedByAuthenticated","listBlockedByAuthenticatedUser","listEmailsForAuthenticated","listEmailsForAuthenticatedUser","listFollowedByAuthenticated","listFollowedByAuthenticatedUser","listFollowersForAuthenticatedUser","listFollowersForUser","listFollowingForUser","listGpgKeysForAuthenticated","listGpgKeysForAuthenticatedUser","listGpgKeysForUser","listPublicEmailsForAuthenticated","listPublicEmailsForAuthenticatedUser","listPublicKeysForUser","listPublicSshKeysForAuthenticated","listPublicSshKeysForAuthenticatedUser","setPrimaryEmailVisibilityForAuthenticated","setPrimaryEmailVisibilityForAuthenticatedUser","unblock","unfollow","updateAuthenticated","VERSION","endpointsToMethods","octokit","endpointsMap","newMethods","scope","endpoints","Object","entries","methodName","endpoint","route","defaults","decorations","method","url","split","endpointDefaults","assign","scopeMethods","decorate","request","requestWithDefaults","withDecorations","args","options","data","undefined","newScope","newMethodName","log","warn","deprecated","name","alias","restEndpointMethods","api","ENDPOINTS","rest","legacyRestEndpointMethods"],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@octokit/plugin-rest-endpoint-methods/dist-src/endpoints-to-methods.js b/node_modules/@octokit/plugin-rest-endpoint-methods/dist-src/endpoints-to-methods.js new file mode 100644 index 0000000..32c2f39 --- /dev/null +++ b/node_modules/@octokit/plugin-rest-endpoint-methods/dist-src/endpoints-to-methods.js @@ -0,0 +1,60 @@ +export function endpointsToMethods(octokit, 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(octokit, scope, methodName, endpointDefaults, decorations); + continue; + } + scopeMethods[methodName] = octokit.request.defaults(endpointDefaults); + } + } + return newMethods; +} +function decorate(octokit, scope, methodName, defaults, decorations) { + const requestWithDefaults = octokit.request.defaults(defaults); + /* istanbul ignore next */ + function withDecorations(...args) { + // @ts-ignore https://github.com/microsoft/TypeScript/issues/25488 + let options = requestWithDefaults.endpoint.merge(...args); + // There are currently no other decorations than `.mapToData` + if (decorations.mapToData) { + options = Object.assign({}, options, { + data: options[decorations.mapToData], + [decorations.mapToData]: undefined, + }); + return requestWithDefaults(options); + } + if (decorations.renamed) { + const [newScope, newMethodName] = decorations.renamed; + octokit.log.warn(`octokit.${scope}.${methodName}() has been renamed to octokit.${newScope}.${newMethodName}()`); + } + if (decorations.deprecated) { + octokit.log.warn(decorations.deprecated); + } + if (decorations.renamedParameters) { + // @ts-ignore https://github.com/microsoft/TypeScript/issues/25488 + const options = requestWithDefaults.endpoint.merge(...args); + for (const [name, alias] of Object.entries(decorations.renamedParameters)) { + if (name in options) { + octokit.log.warn(`"${name}" parameter is deprecated for "octokit.${scope}.${methodName}()". Use "${alias}" instead`); + if (!(alias in options)) { + options[alias] = options[name]; + } + delete options[name]; + } + } + return requestWithDefaults(options); + } + // @ts-ignore https://github.com/microsoft/TypeScript/issues/25488 + return requestWithDefaults(...args); + } + return Object.assign(withDecorations, requestWithDefaults); +} diff --git a/node_modules/@octokit/plugin-rest-endpoint-methods/dist-src/generated/endpoints.js b/node_modules/@octokit/plugin-rest-endpoint-methods/dist-src/generated/endpoints.js new file mode 100644 index 0000000..e61f6ac --- /dev/null +++ b/node_modules/@octokit/plugin-rest-endpoint-methods/dist-src/generated/endpoints.js @@ -0,0 +1,1664 @@ +const 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"], + }, +}; +export default Endpoints; diff --git a/node_modules/@octokit/plugin-rest-endpoint-methods/dist-src/generated/method-types.js b/node_modules/@octokit/plugin-rest-endpoint-methods/dist-src/generated/method-types.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/node_modules/@octokit/plugin-rest-endpoint-methods/dist-src/generated/method-types.js @@ -0,0 +1 @@ +export {}; diff --git a/node_modules/@octokit/plugin-rest-endpoint-methods/dist-src/generated/parameters-and-response-types.js b/node_modules/@octokit/plugin-rest-endpoint-methods/dist-src/generated/parameters-and-response-types.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/node_modules/@octokit/plugin-rest-endpoint-methods/dist-src/generated/parameters-and-response-types.js @@ -0,0 +1 @@ +export {}; diff --git a/node_modules/@octokit/plugin-rest-endpoint-methods/dist-src/index.js b/node_modules/@octokit/plugin-rest-endpoint-methods/dist-src/index.js new file mode 100644 index 0000000..53d539d --- /dev/null +++ b/node_modules/@octokit/plugin-rest-endpoint-methods/dist-src/index.js @@ -0,0 +1,18 @@ +import ENDPOINTS from "./generated/endpoints"; +import { VERSION } from "./version"; +import { endpointsToMethods } from "./endpoints-to-methods"; +export function restEndpointMethods(octokit) { + const api = endpointsToMethods(octokit, ENDPOINTS); + return { + rest: api, + }; +} +restEndpointMethods.VERSION = VERSION; +export function legacyRestEndpointMethods(octokit) { + const api = endpointsToMethods(octokit, ENDPOINTS); + return { + ...api, + rest: api, + }; +} +legacyRestEndpointMethods.VERSION = VERSION; diff --git a/node_modules/@octokit/plugin-rest-endpoint-methods/dist-src/types.js b/node_modules/@octokit/plugin-rest-endpoint-methods/dist-src/types.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/node_modules/@octokit/plugin-rest-endpoint-methods/dist-src/types.js @@ -0,0 +1 @@ +export {}; diff --git a/node_modules/@octokit/plugin-rest-endpoint-methods/dist-src/version.js b/node_modules/@octokit/plugin-rest-endpoint-methods/dist-src/version.js new file mode 100644 index 0000000..80a383f --- /dev/null +++ b/node_modules/@octokit/plugin-rest-endpoint-methods/dist-src/version.js @@ -0,0 +1 @@ +export const VERSION = "5.16.2"; diff --git a/node_modules/@octokit/plugin-rest-endpoint-methods/dist-types/endpoints-to-methods.d.ts b/node_modules/@octokit/plugin-rest-endpoint-methods/dist-types/endpoints-to-methods.d.ts new file mode 100644 index 0000000..2a97a4b --- /dev/null +++ b/node_modules/@octokit/plugin-rest-endpoint-methods/dist-types/endpoints-to-methods.d.ts @@ -0,0 +1,4 @@ +import { Octokit } from "@octokit/core"; +import { EndpointsDefaultsAndDecorations } from "./types"; +import { RestEndpointMethods } from "./generated/method-types"; +export declare function endpointsToMethods(octokit: Octokit, endpointsMap: EndpointsDefaultsAndDecorations): RestEndpointMethods; diff --git a/node_modules/@octokit/plugin-rest-endpoint-methods/dist-types/generated/endpoints.d.ts b/node_modules/@octokit/plugin-rest-endpoint-methods/dist-types/generated/endpoints.d.ts new file mode 100644 index 0000000..a3c1d92 --- /dev/null +++ b/node_modules/@octokit/plugin-rest-endpoint-methods/dist-types/generated/endpoints.d.ts @@ -0,0 +1,3 @@ +import { EndpointsDefaultsAndDecorations } from "../types"; +declare const Endpoints: EndpointsDefaultsAndDecorations; +export default Endpoints; diff --git a/node_modules/@octokit/plugin-rest-endpoint-methods/dist-types/generated/method-types.d.ts b/node_modules/@octokit/plugin-rest-endpoint-methods/dist-types/generated/method-types.d.ts new file mode 100644 index 0000000..91c55f3 --- /dev/null +++ b/node_modules/@octokit/plugin-rest-endpoint-methods/dist-types/generated/method-types.d.ts @@ -0,0 +1,9945 @@ +import { EndpointInterface, RequestInterface } from "@octokit/types"; +import { RestEndpointMethodTypes } from "./parameters-and-response-types"; +export declare type RestEndpointMethods = { + actions: { + /** + * Add custom labels to a self-hosted runner configured in an organization. + * + * You must authenticate using an access token with the `admin:org` scope to use this endpoint. + */ + addCustomLabelsToSelfHostedRunnerForOrg: { + (params?: RestEndpointMethodTypes["actions"]["addCustomLabelsToSelfHostedRunnerForOrg"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Add custom labels to a self-hosted runner configured in a repository. + * + * You must authenticate using an access token with the `repo` scope to use this + * endpoint. + */ + addCustomLabelsToSelfHostedRunnerForRepo: { + (params?: RestEndpointMethodTypes["actions"]["addCustomLabelsToSelfHostedRunnerForRepo"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Adds a repository to an organization secret when the `visibility` for repository access is set to `selected`. The visibility is set when you [Create or update an organization secret](https://docs.github.com/rest/reference/actions#create-or-update-an-organization-secret). You must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `secrets` organization permission to use this endpoint. + */ + addSelectedRepoToOrgSecret: { + (params?: RestEndpointMethodTypes["actions"]["addSelectedRepoToOrgSecret"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Approves a workflow run for a pull request from a public fork of a first time contributor. For more information, see ["Approving workflow runs from public forks](https://docs.github.com/actions/managing-workflow-runs/approving-workflow-runs-from-public-forks)." + * + * You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the `actions:write` permission to use this endpoint. + */ + approveWorkflowRun: { + (params?: RestEndpointMethodTypes["actions"]["approveWorkflowRun"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Cancels a workflow run using its `id`. You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the `actions:write` permission to use this endpoint. + */ + cancelWorkflowRun: { + (params?: RestEndpointMethodTypes["actions"]["cancelWorkflowRun"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Creates or updates an environment secret with an encrypted value. Encrypt your secret using + * [LibSodium](https://libsodium.gitbook.io/doc/bindings_for_other_languages). You must authenticate using an access + * token with the `repo` scope to use this endpoint. GitHub Apps must have the `secrets` repository permission to use + * this endpoint. + * + * #### Example encrypting a secret using Node.js + * + * Encrypt your secret using the [tweetsodium](https://github.com/github/tweetsodium) library. + * + * ``` + * const sodium = require('tweetsodium'); + * + * const key = "base64-encoded-public-key"; + * const value = "plain-text-secret"; + * + * // Convert the message and key to Uint8Array's (Buffer implements that interface) + * const messageBytes = Buffer.from(value); + * const keyBytes = Buffer.from(key, 'base64'); + * + * // Encrypt using LibSodium. + * const encryptedBytes = sodium.seal(messageBytes, keyBytes); + * + * // Base64 the encrypted secret + * const encrypted = Buffer.from(encryptedBytes).toString('base64'); + * + * console.log(encrypted); + * ``` + * + * + * #### Example encrypting a secret using Python + * + * Encrypt your secret using [pynacl](https://pynacl.readthedocs.io/en/latest/public/#nacl-public-sealedbox) with Python 3. + * + * ``` + * from base64 import b64encode + * from nacl import encoding, public + * + * def encrypt(public_key: str, secret_value: str) -> str: + * """Encrypt a Unicode string using the public key.""" + * public_key = public.PublicKey(public_key.encode("utf-8"), encoding.Base64Encoder()) + * sealed_box = public.SealedBox(public_key) + * encrypted = sealed_box.encrypt(secret_value.encode("utf-8")) + * return b64encode(encrypted).decode("utf-8") + * ``` + * + * #### Example encrypting a secret using C# + * + * Encrypt your secret using the [Sodium.Core](https://www.nuget.org/packages/Sodium.Core/) package. + * + * ``` + * var secretValue = System.Text.Encoding.UTF8.GetBytes("mySecret"); + * var publicKey = Convert.FromBase64String("2Sg8iYjAxxmI2LvUXpJjkYrMxURPc8r+dB7TJyvvcCU="); + * + * var sealedPublicKeyBox = Sodium.SealedPublicKeyBox.Create(secretValue, publicKey); + * + * Console.WriteLine(Convert.ToBase64String(sealedPublicKeyBox)); + * ``` + * + * #### Example encrypting a secret using Ruby + * + * Encrypt your secret using the [rbnacl](https://github.com/RubyCrypto/rbnacl) gem. + * + * ```ruby + * require "rbnacl" + * require "base64" + * + * key = Base64.decode64("+ZYvJDZMHUfBkJdyq5Zm9SKqeuBQ4sj+6sfjlH4CgG0=") + * public_key = RbNaCl::PublicKey.new(key) + * + * box = RbNaCl::Boxes::Sealed.from_public_key(public_key) + * encrypted_secret = box.encrypt("my_secret") + * + * # Print the base64 encoded secret + * puts Base64.strict_encode64(encrypted_secret) + * ``` + */ + createOrUpdateEnvironmentSecret: { + (params?: RestEndpointMethodTypes["actions"]["createOrUpdateEnvironmentSecret"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Creates or updates an organization secret with an encrypted value. Encrypt your secret using + * [LibSodium](https://libsodium.gitbook.io/doc/bindings_for_other_languages). You must authenticate using an access + * token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `secrets` organization permission to + * use this endpoint. + * + * #### Example encrypting a secret using Node.js + * + * Encrypt your secret using the [tweetsodium](https://github.com/github/tweetsodium) library. + * + * ``` + * const sodium = require('tweetsodium'); + * + * const key = "base64-encoded-public-key"; + * const value = "plain-text-secret"; + * + * // Convert the message and key to Uint8Array's (Buffer implements that interface) + * const messageBytes = Buffer.from(value); + * const keyBytes = Buffer.from(key, 'base64'); + * + * // Encrypt using LibSodium. + * const encryptedBytes = sodium.seal(messageBytes, keyBytes); + * + * // Base64 the encrypted secret + * const encrypted = Buffer.from(encryptedBytes).toString('base64'); + * + * console.log(encrypted); + * ``` + * + * + * #### Example encrypting a secret using Python + * + * Encrypt your secret using [pynacl](https://pynacl.readthedocs.io/en/latest/public/#nacl-public-sealedbox) with Python 3. + * + * ``` + * from base64 import b64encode + * from nacl import encoding, public + * + * def encrypt(public_key: str, secret_value: str) -> str: + * """Encrypt a Unicode string using the public key.""" + * public_key = public.PublicKey(public_key.encode("utf-8"), encoding.Base64Encoder()) + * sealed_box = public.SealedBox(public_key) + * encrypted = sealed_box.encrypt(secret_value.encode("utf-8")) + * return b64encode(encrypted).decode("utf-8") + * ``` + * + * #### Example encrypting a secret using C# + * + * Encrypt your secret using the [Sodium.Core](https://www.nuget.org/packages/Sodium.Core/) package. + * + * ``` + * var secretValue = System.Text.Encoding.UTF8.GetBytes("mySecret"); + * var publicKey = Convert.FromBase64String("2Sg8iYjAxxmI2LvUXpJjkYrMxURPc8r+dB7TJyvvcCU="); + * + * var sealedPublicKeyBox = Sodium.SealedPublicKeyBox.Create(secretValue, publicKey); + * + * Console.WriteLine(Convert.ToBase64String(sealedPublicKeyBox)); + * ``` + * + * #### Example encrypting a secret using Ruby + * + * Encrypt your secret using the [rbnacl](https://github.com/RubyCrypto/rbnacl) gem. + * + * ```ruby + * require "rbnacl" + * require "base64" + * + * key = Base64.decode64("+ZYvJDZMHUfBkJdyq5Zm9SKqeuBQ4sj+6sfjlH4CgG0=") + * public_key = RbNaCl::PublicKey.new(key) + * + * box = RbNaCl::Boxes::Sealed.from_public_key(public_key) + * encrypted_secret = box.encrypt("my_secret") + * + * # Print the base64 encoded secret + * puts Base64.strict_encode64(encrypted_secret) + * ``` + */ + createOrUpdateOrgSecret: { + (params?: RestEndpointMethodTypes["actions"]["createOrUpdateOrgSecret"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Creates or updates a repository secret with an encrypted value. Encrypt your secret using + * [LibSodium](https://libsodium.gitbook.io/doc/bindings_for_other_languages). You must authenticate using an access + * token with the `repo` scope to use this endpoint. GitHub Apps must have the `secrets` repository permission to use + * this endpoint. + * + * #### Example encrypting a secret using Node.js + * + * Encrypt your secret using the [tweetsodium](https://github.com/github/tweetsodium) library. + * + * ``` + * const sodium = require('tweetsodium'); + * + * const key = "base64-encoded-public-key"; + * const value = "plain-text-secret"; + * + * // Convert the message and key to Uint8Array's (Buffer implements that interface) + * const messageBytes = Buffer.from(value); + * const keyBytes = Buffer.from(key, 'base64'); + * + * // Encrypt using LibSodium. + * const encryptedBytes = sodium.seal(messageBytes, keyBytes); + * + * // Base64 the encrypted secret + * const encrypted = Buffer.from(encryptedBytes).toString('base64'); + * + * console.log(encrypted); + * ``` + * + * + * #### Example encrypting a secret using Python + * + * Encrypt your secret using [pynacl](https://pynacl.readthedocs.io/en/latest/public/#nacl-public-sealedbox) with Python 3. + * + * ``` + * from base64 import b64encode + * from nacl import encoding, public + * + * def encrypt(public_key: str, secret_value: str) -> str: + * """Encrypt a Unicode string using the public key.""" + * public_key = public.PublicKey(public_key.encode("utf-8"), encoding.Base64Encoder()) + * sealed_box = public.SealedBox(public_key) + * encrypted = sealed_box.encrypt(secret_value.encode("utf-8")) + * return b64encode(encrypted).decode("utf-8") + * ``` + * + * #### Example encrypting a secret using C# + * + * Encrypt your secret using the [Sodium.Core](https://www.nuget.org/packages/Sodium.Core/) package. + * + * ``` + * var secretValue = System.Text.Encoding.UTF8.GetBytes("mySecret"); + * var publicKey = Convert.FromBase64String("2Sg8iYjAxxmI2LvUXpJjkYrMxURPc8r+dB7TJyvvcCU="); + * + * var sealedPublicKeyBox = Sodium.SealedPublicKeyBox.Create(secretValue, publicKey); + * + * Console.WriteLine(Convert.ToBase64String(sealedPublicKeyBox)); + * ``` + * + * #### Example encrypting a secret using Ruby + * + * Encrypt your secret using the [rbnacl](https://github.com/RubyCrypto/rbnacl) gem. + * + * ```ruby + * require "rbnacl" + * require "base64" + * + * key = Base64.decode64("+ZYvJDZMHUfBkJdyq5Zm9SKqeuBQ4sj+6sfjlH4CgG0=") + * public_key = RbNaCl::PublicKey.new(key) + * + * box = RbNaCl::Boxes::Sealed.from_public_key(public_key) + * encrypted_secret = box.encrypt("my_secret") + * + * # Print the base64 encoded secret + * puts Base64.strict_encode64(encrypted_secret) + * ``` + */ + createOrUpdateRepoSecret: { + (params?: RestEndpointMethodTypes["actions"]["createOrUpdateRepoSecret"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Returns a token that you can pass to the `config` script. The token expires after one hour. + * + * You must authenticate using an access token with the `admin:org` scope to use this endpoint. + * + * #### Example using registration token + * + * Configure your self-hosted runner, replacing `TOKEN` with the registration token provided by this endpoint. + * + * ``` + * ./config.sh --url https://github.com/octo-org --token TOKEN + * ``` + */ + createRegistrationTokenForOrg: { + (params?: RestEndpointMethodTypes["actions"]["createRegistrationTokenForOrg"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Returns a token that you can pass to the `config` script. The token expires after one hour. You must authenticate + * using an access token with the `repo` scope to use this endpoint. + * + * #### Example using registration token + * + * Configure your self-hosted runner, replacing `TOKEN` with the registration token provided by this endpoint. + * + * ``` + * ./config.sh --url https://github.com/octo-org/octo-repo-artifacts --token TOKEN + * ``` + */ + createRegistrationTokenForRepo: { + (params?: RestEndpointMethodTypes["actions"]["createRegistrationTokenForRepo"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Returns a token that you can pass to the `config` script to remove a self-hosted runner from an organization. The token expires after one hour. + * + * You must authenticate using an access token with the `admin:org` scope to use this endpoint. + * + * #### Example using remove token + * + * To remove your self-hosted runner from an organization, replace `TOKEN` with the remove token provided by this + * endpoint. + * + * ``` + * ./config.sh remove --token TOKEN + * ``` + */ + createRemoveTokenForOrg: { + (params?: RestEndpointMethodTypes["actions"]["createRemoveTokenForOrg"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Returns a token that you can pass to remove a self-hosted runner from a repository. The token expires after one hour. + * You must authenticate using an access token with the `repo` scope to use this endpoint. + * + * #### Example using remove token + * + * To remove your self-hosted runner from a repository, replace TOKEN with the remove token provided by this endpoint. + * + * ``` + * ./config.sh remove --token TOKEN + * ``` + */ + createRemoveTokenForRepo: { + (params?: RestEndpointMethodTypes["actions"]["createRemoveTokenForRepo"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * You can use this endpoint to manually trigger a GitHub Actions workflow run. You can replace `workflow_id` with the workflow file name. For example, you could use `main.yaml`. + * + * You must configure your GitHub Actions workflow to run when the [`workflow_dispatch` webhook](/developers/webhooks-and-events/webhook-events-and-payloads#workflow_dispatch) event occurs. The `inputs` are configured in the workflow file. For more information about how to configure the `workflow_dispatch` event in the workflow file, see "[Events that trigger workflows](/actions/reference/events-that-trigger-workflows#workflow_dispatch)." + * + * You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the `actions:write` permission to use this endpoint. For more information, see "[Creating a personal access token for the command line](https://docs.github.com/articles/creating-a-personal-access-token-for-the-command-line)." + */ + createWorkflowDispatch: { + (params?: RestEndpointMethodTypes["actions"]["createWorkflowDispatch"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Deletes a GitHub Actions cache for a repository, using a cache ID. + * + * You must authenticate using an access token with the `repo` scope to use this endpoint. + * + * GitHub Apps must have the `actions:write` permission to use this endpoint. + */ + deleteActionsCacheById: { + (params?: RestEndpointMethodTypes["actions"]["deleteActionsCacheById"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Deletes one or more GitHub Actions caches for a repository, using a complete cache key. By default, all caches that match the provided key are deleted, but you can optionally provide a Git ref to restrict deletions to caches that match both the provided key and the Git ref. + * + * You must authenticate using an access token with the `repo` scope to use this endpoint. + * + * GitHub Apps must have the `actions:write` permission to use this endpoint. + */ + deleteActionsCacheByKey: { + (params?: RestEndpointMethodTypes["actions"]["deleteActionsCacheByKey"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Deletes an artifact for a workflow run. You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the `actions:write` permission to use this endpoint. + */ + deleteArtifact: { + (params?: RestEndpointMethodTypes["actions"]["deleteArtifact"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Deletes a secret in an environment using the secret name. You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the `secrets` repository permission to use this endpoint. + */ + deleteEnvironmentSecret: { + (params?: RestEndpointMethodTypes["actions"]["deleteEnvironmentSecret"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Deletes a secret in an organization using the secret name. You must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `secrets` organization permission to use this endpoint. + */ + deleteOrgSecret: { + (params?: RestEndpointMethodTypes["actions"]["deleteOrgSecret"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Deletes a secret in a repository using the secret name. You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the `secrets` repository permission to use this endpoint. + */ + deleteRepoSecret: { + (params?: RestEndpointMethodTypes["actions"]["deleteRepoSecret"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Forces the removal of a self-hosted runner from an organization. You can use this endpoint to completely remove the runner when the machine you were using no longer exists. + * + * You must authenticate using an access token with the `admin:org` scope to use this endpoint. + */ + deleteSelfHostedRunnerFromOrg: { + (params?: RestEndpointMethodTypes["actions"]["deleteSelfHostedRunnerFromOrg"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Forces the removal of a self-hosted runner from a repository. You can use this endpoint to completely remove the runner when the machine you were using no longer exists. + * + * You must authenticate using an access token with the `repo` + * scope to use this endpoint. + */ + deleteSelfHostedRunnerFromRepo: { + (params?: RestEndpointMethodTypes["actions"]["deleteSelfHostedRunnerFromRepo"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Delete a specific workflow run. Anyone with write access to the repository can use this endpoint. If the repository is + * private you must use an access token with the `repo` scope. GitHub Apps must have the `actions:write` permission to use + * this endpoint. + */ + deleteWorkflowRun: { + (params?: RestEndpointMethodTypes["actions"]["deleteWorkflowRun"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Deletes all logs for a workflow run. You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the `actions:write` permission to use this endpoint. + */ + deleteWorkflowRunLogs: { + (params?: RestEndpointMethodTypes["actions"]["deleteWorkflowRunLogs"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Removes a repository from the list of selected repositories that are enabled for GitHub Actions in an organization. To use this endpoint, the organization permission policy for `enabled_repositories` must be configured to `selected`. For more information, see "[Set GitHub Actions permissions for an organization](#set-github-actions-permissions-for-an-organization)." + * + * You must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `administration` organization permission to use this API. + */ + disableSelectedRepositoryGithubActionsOrganization: { + (params?: RestEndpointMethodTypes["actions"]["disableSelectedRepositoryGithubActionsOrganization"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Disables a workflow and sets the `state` of the workflow to `disabled_manually`. You can replace `workflow_id` with the workflow file name. For example, you could use `main.yaml`. + * + * You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the `actions:write` permission to use this endpoint. + */ + disableWorkflow: { + (params?: RestEndpointMethodTypes["actions"]["disableWorkflow"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Gets a redirect URL to download an archive for a repository. This URL expires after 1 minute. Look for `Location:` in + * the response header to find the URL for the download. The `:archive_format` must be `zip`. Anyone with read access to + * the repository can use this endpoint. If the repository is private you must use an access token with the `repo` scope. + * GitHub Apps must have the `actions:read` permission to use this endpoint. + */ + downloadArtifact: { + (params?: RestEndpointMethodTypes["actions"]["downloadArtifact"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Gets a redirect URL to download a plain text file of logs for a workflow job. This link expires after 1 minute. Look + * for `Location:` in the response header to find the URL for the download. Anyone with read access to the repository can + * use this endpoint. If the repository is private you must use an access token with the `repo` scope. GitHub Apps must + * have the `actions:read` permission to use this endpoint. + */ + downloadJobLogsForWorkflowRun: { + (params?: RestEndpointMethodTypes["actions"]["downloadJobLogsForWorkflowRun"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Gets a redirect URL to download an archive of log files for a specific workflow run attempt. This link expires after + * 1 minute. Look for `Location:` in the response header to find the URL for the download. Anyone with read access to + * the repository can use this endpoint. If the repository is private you must use an access token with the `repo` scope. + * GitHub Apps must have the `actions:read` permission to use this endpoint. + */ + downloadWorkflowRunAttemptLogs: { + (params?: RestEndpointMethodTypes["actions"]["downloadWorkflowRunAttemptLogs"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Gets a redirect URL to download an archive of log files for a workflow run. This link expires after 1 minute. Look for + * `Location:` in the response header to find the URL for the download. Anyone with read access to the repository can use + * this endpoint. If the repository is private you must use an access token with the `repo` scope. GitHub Apps must have + * the `actions:read` permission to use this endpoint. + */ + downloadWorkflowRunLogs: { + (params?: RestEndpointMethodTypes["actions"]["downloadWorkflowRunLogs"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Adds a repository to the list of selected repositories that are enabled for GitHub Actions in an organization. To use this endpoint, the organization permission policy for `enabled_repositories` must be must be configured to `selected`. For more information, see "[Set GitHub Actions permissions for an organization](#set-github-actions-permissions-for-an-organization)." + * + * You must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `administration` organization permission to use this API. + */ + enableSelectedRepositoryGithubActionsOrganization: { + (params?: RestEndpointMethodTypes["actions"]["enableSelectedRepositoryGithubActionsOrganization"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Enables a workflow and sets the `state` of the workflow to `active`. You can replace `workflow_id` with the workflow file name. For example, you could use `main.yaml`. + * + * You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the `actions:write` permission to use this endpoint. + */ + enableWorkflow: { + (params?: RestEndpointMethodTypes["actions"]["enableWorkflow"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Lists the GitHub Actions caches for a repository. + * You must authenticate using an access token with the `repo` scope to use this endpoint. + * GitHub Apps must have the `actions:read` permission to use this endpoint. + */ + getActionsCacheList: { + (params?: RestEndpointMethodTypes["actions"]["getActionsCacheList"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Gets GitHub Actions cache usage for a repository. + * The data fetched using this API is refreshed approximately every 5 minutes, so values returned from this endpoint may take at least 5 minutes to get updated. + * Anyone with read access to the repository can use this endpoint. If the repository is private, you must use an access token with the `repo` scope. GitHub Apps must have the `actions:read` permission to use this endpoint. + */ + getActionsCacheUsage: { + (params?: RestEndpointMethodTypes["actions"]["getActionsCacheUsage"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Lists repositories and their GitHub Actions cache usage for an organization. + * The data fetched using this API is refreshed approximately every 5 minutes, so values returned from this endpoint may take at least 5 minutes to get updated. + * You must authenticate using an access token with the `read:org` scope to use this endpoint. GitHub Apps must have the `organization_admistration:read` permission to use this endpoint. + */ + getActionsCacheUsageByRepoForOrg: { + (params?: RestEndpointMethodTypes["actions"]["getActionsCacheUsageByRepoForOrg"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Gets the total GitHub Actions cache usage for an enterprise. + * The data fetched using this API is refreshed approximately every 5 minutes, so values returned from this endpoint may take at least 5 minutes to get updated. + * You must authenticate using an access token with the `admin:enterprise` scope to use this endpoint. + */ + getActionsCacheUsageForEnterprise: { + (params?: RestEndpointMethodTypes["actions"]["getActionsCacheUsageForEnterprise"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Gets the total GitHub Actions cache usage for an organization. + * The data fetched using this API is refreshed approximately every 5 minutes, so values returned from this endpoint may take at least 5 minutes to get updated. + * You must authenticate using an access token with the `read:org` scope to use this endpoint. GitHub Apps must have the `organization_admistration:read` permission to use this endpoint. + */ + getActionsCacheUsageForOrg: { + (params?: RestEndpointMethodTypes["actions"]["getActionsCacheUsageForOrg"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Gets the selected actions and reusable workflows that are allowed in an organization. To use this endpoint, the organization permission policy for `allowed_actions` must be configured to `selected`. For more information, see "[Set GitHub Actions permissions for an organization](#set-github-actions-permissions-for-an-organization)."" + * + * You must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `administration` organization permission to use this API. + */ + getAllowedActionsOrganization: { + (params?: RestEndpointMethodTypes["actions"]["getAllowedActionsOrganization"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Gets the settings for selected actions and reusable workflows that are allowed in a repository. To use this endpoint, the repository policy for `allowed_actions` must be configured to `selected`. For more information, see "[Set GitHub Actions permissions for a repository](#set-github-actions-permissions-for-a-repository)." + * + * You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the `administration` repository permission to use this API. + */ + getAllowedActionsRepository: { + (params?: RestEndpointMethodTypes["actions"]["getAllowedActionsRepository"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Gets a specific artifact for a workflow run. Anyone with read access to the repository can use this endpoint. If the repository is private you must use an access token with the `repo` scope. GitHub Apps must have the `actions:read` permission to use this endpoint. + */ + getArtifact: { + (params?: RestEndpointMethodTypes["actions"]["getArtifact"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Get the public key for an environment, which you need to encrypt environment secrets. You need to encrypt a secret before you can create or update secrets. Anyone with read access to the repository can use this endpoint. If the repository is private you must use an access token with the `repo` scope. GitHub Apps must have the `secrets` repository permission to use this endpoint. + */ + getEnvironmentPublicKey: { + (params?: RestEndpointMethodTypes["actions"]["getEnvironmentPublicKey"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Gets a single environment secret without revealing its encrypted value. You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the `secrets` repository permission to use this endpoint. + */ + getEnvironmentSecret: { + (params?: RestEndpointMethodTypes["actions"]["getEnvironmentSecret"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Gets the default workflow permissions granted to the `GITHUB_TOKEN` when running workflows in an enterprise, + * as well as whether GitHub Actions can submit approving pull request reviews. For more information, see + * "[Enforcing a policy for workflow permissions in your enterprise](https://docs.github.com/enterprise-cloud@latest/admin/policies/enforcing-policies-for-your-enterprise/enforcing-policies-for-github-actions-in-your-enterprise#enforcing-a-policy-for-workflow-permissions-in-your-enterprise)." + * + * You must authenticate using an access token with the `admin:enterprise` scope to use this endpoint. + * GitHub Apps must have the `enterprise_administration:write` permission to use this endpoint. + */ + getGithubActionsDefaultWorkflowPermissionsEnterprise: { + (params?: RestEndpointMethodTypes["actions"]["getGithubActionsDefaultWorkflowPermissionsEnterprise"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Gets the default workflow permissions granted to the `GITHUB_TOKEN` when running workflows in an organization, + * as well as whether GitHub Actions can submit approving pull request reviews. For more information, see + * "[Setting the permissions of the GITHUB_TOKEN for your organization](https://docs.github.com/organizations/managing-organization-settings/disabling-or-limiting-github-actions-for-your-organization#setting-the-permissions-of-the-github_token-for-your-organization)." + * + * You must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `administration` organization permission to use this API. + */ + getGithubActionsDefaultWorkflowPermissionsOrganization: { + (params?: RestEndpointMethodTypes["actions"]["getGithubActionsDefaultWorkflowPermissionsOrganization"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Gets the default workflow permissions granted to the `GITHUB_TOKEN` when running workflows in a repository, + * as well as if GitHub Actions can submit approving pull request reviews. + * For more information, see "[Setting the permissions of the GITHUB_TOKEN for your repository](https://docs.github.com/repositories/managing-your-repositorys-settings-and-features/enabling-features-for-your-repository/managing-github-actions-settings-for-a-repository#setting-the-permissions-of-the-github_token-for-your-repository)." + * + * You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the repository `administration` permission to use this API. + */ + getGithubActionsDefaultWorkflowPermissionsRepository: { + (params?: RestEndpointMethodTypes["actions"]["getGithubActionsDefaultWorkflowPermissionsRepository"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Gets the GitHub Actions permissions policy for repositories and allowed actions and reusable workflows in an organization. + * + * You must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `administration` organization permission to use this API. + */ + getGithubActionsPermissionsOrganization: { + (params?: RestEndpointMethodTypes["actions"]["getGithubActionsPermissionsOrganization"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Gets the GitHub Actions permissions policy for a repository, including whether GitHub Actions is enabled and the actions and reusable workflows allowed to run in the repository. + * + * You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the `administration` repository permission to use this API. + */ + getGithubActionsPermissionsRepository: { + (params?: RestEndpointMethodTypes["actions"]["getGithubActionsPermissionsRepository"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Gets a specific job in a workflow run. Anyone with read access to the repository can use this endpoint. If the repository is private you must use an access token with the `repo` scope. GitHub Apps must have the `actions:read` permission to use this endpoint. + */ + getJobForWorkflowRun: { + (params?: RestEndpointMethodTypes["actions"]["getJobForWorkflowRun"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Gets your public key, which you need to encrypt secrets. You need to encrypt a secret before you can create or update secrets. You must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `secrets` organization permission to use this endpoint. + */ + getOrgPublicKey: { + (params?: RestEndpointMethodTypes["actions"]["getOrgPublicKey"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Gets a single organization secret without revealing its encrypted value. You must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `secrets` organization permission to use this endpoint. + */ + getOrgSecret: { + (params?: RestEndpointMethodTypes["actions"]["getOrgSecret"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Get all deployment environments for a workflow run that are waiting for protection rules to pass. + * + * Anyone with read access to the repository can use this endpoint. If the repository is private, you must use an access token with the `repo` scope. GitHub Apps must have the `actions:read` permission to use this endpoint. + */ + getPendingDeploymentsForRun: { + (params?: RestEndpointMethodTypes["actions"]["getPendingDeploymentsForRun"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Gets the GitHub Actions permissions policy for a repository, including whether GitHub Actions is enabled and the actions and reusable workflows allowed to run in the repository. + * + * You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the `administration` repository permission to use this API. + * @deprecated octokit.rest.actions.getRepoPermissions() has been renamed to octokit.rest.actions.getGithubActionsPermissionsRepository() (2020-11-10) + */ + getRepoPermissions: { + (params?: RestEndpointMethodTypes["actions"]["getRepoPermissions"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Gets your public key, which you need to encrypt secrets. You need to encrypt a secret before you can create or update secrets. Anyone with read access to the repository can use this endpoint. If the repository is private you must use an access token with the `repo` scope. GitHub Apps must have the `secrets` repository permission to use this endpoint. + */ + getRepoPublicKey: { + (params?: RestEndpointMethodTypes["actions"]["getRepoPublicKey"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Gets a single repository secret without revealing its encrypted value. You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the `secrets` repository permission to use this endpoint. + */ + getRepoSecret: { + (params?: RestEndpointMethodTypes["actions"]["getRepoSecret"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Anyone with read access to the repository can use this endpoint. If the repository is private, you must use an access token with the `repo` scope. GitHub Apps must have the `actions:read` permission to use this endpoint. + */ + getReviewsForRun: { + (params?: RestEndpointMethodTypes["actions"]["getReviewsForRun"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Gets a specific self-hosted runner configured in an organization. + * + * You must authenticate using an access token with the `admin:org` scope to use this endpoint. + */ + getSelfHostedRunnerForOrg: { + (params?: RestEndpointMethodTypes["actions"]["getSelfHostedRunnerForOrg"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Gets a specific self-hosted runner configured in a repository. + * + * You must authenticate using an access token with the `repo` scope to use this + * endpoint. + */ + getSelfHostedRunnerForRepo: { + (params?: RestEndpointMethodTypes["actions"]["getSelfHostedRunnerForRepo"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Gets a specific workflow. You can replace `workflow_id` with the workflow file name. For example, you could use `main.yaml`. Anyone with read access to the repository can use this endpoint. If the repository is private you must use an access token with the `repo` scope. GitHub Apps must have the `actions:read` permission to use this endpoint. + */ + getWorkflow: { + (params?: RestEndpointMethodTypes["actions"]["getWorkflow"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Gets the level of access that workflows outside of the repository have to actions and reusable workflows in the repository. + * This endpoint only applies to internal repositories. For more information, see "[Managing GitHub Actions settings for a repository](https://docs.github.com/repositories/managing-your-repositorys-settings-and-features/enabling-features-for-your-repository/managing-github-actions-settings-for-a-repository#allowing-access-to-components-in-an-internal-repository)." + * + * You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the + * repository `administration` permission to use this endpoint. + */ + getWorkflowAccessToRepository: { + (params?: RestEndpointMethodTypes["actions"]["getWorkflowAccessToRepository"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Gets a specific workflow run. Anyone with read access to the repository can use this endpoint. If the repository is private you must use an access token with the `repo` scope. GitHub Apps must have the `actions:read` permission to use this endpoint. + */ + getWorkflowRun: { + (params?: RestEndpointMethodTypes["actions"]["getWorkflowRun"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Gets a specific workflow run attempt. Anyone with read access to the repository + * can use this endpoint. If the repository is private you must use an access token + * with the `repo` scope. GitHub Apps must have the `actions:read` permission to + * use this endpoint. + */ + getWorkflowRunAttempt: { + (params?: RestEndpointMethodTypes["actions"]["getWorkflowRunAttempt"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Gets the number of billable minutes and total run time for a specific workflow run. Billable minutes only apply to workflows in private repositories that use GitHub-hosted runners. Usage is listed for each GitHub-hosted runner operating system in milliseconds. Any job re-runs are also included in the usage. The usage does not include the multiplier for macOS and Windows runners and is not rounded up to the nearest whole minute. For more information, see "[Managing billing for GitHub Actions](https://docs.github.com/github/setting-up-and-managing-billing-and-payments-on-github/managing-billing-for-github-actions)". + * + * Anyone with read access to the repository can use this endpoint. If the repository is private you must use an access token with the `repo` scope. GitHub Apps must have the `actions:read` permission to use this endpoint. + */ + getWorkflowRunUsage: { + (params?: RestEndpointMethodTypes["actions"]["getWorkflowRunUsage"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Gets the number of billable minutes used by a specific workflow during the current billing cycle. Billable minutes only apply to workflows in private repositories that use GitHub-hosted runners. Usage is listed for each GitHub-hosted runner operating system in milliseconds. Any job re-runs are also included in the usage. The usage does not include the multiplier for macOS and Windows runners and is not rounded up to the nearest whole minute. For more information, see "[Managing billing for GitHub Actions](https://docs.github.com/github/setting-up-and-managing-billing-and-payments-on-github/managing-billing-for-github-actions)". + * + * You can replace `workflow_id` with the workflow file name. For example, you could use `main.yaml`. Anyone with read access to the repository can use this endpoint. If the repository is private you must use an access token with the `repo` scope. GitHub Apps must have the `actions:read` permission to use this endpoint. + */ + getWorkflowUsage: { + (params?: RestEndpointMethodTypes["actions"]["getWorkflowUsage"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Lists all artifacts for a repository. Anyone with read access to the repository can use this endpoint. If the repository is private you must use an access token with the `repo` scope. GitHub Apps must have the `actions:read` permission to use this endpoint. + */ + listArtifactsForRepo: { + (params?: RestEndpointMethodTypes["actions"]["listArtifactsForRepo"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Lists all secrets available in an environment without revealing their encrypted values. You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the `secrets` repository permission to use this endpoint. + */ + listEnvironmentSecrets: { + (params?: RestEndpointMethodTypes["actions"]["listEnvironmentSecrets"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Lists jobs for a workflow run. Anyone with read access to the repository can use this endpoint. If the repository is private you must use an access token with the `repo` scope. GitHub Apps must have the `actions:read` permission to use this endpoint. You can use parameters to narrow the list of results. For more information about using parameters, see [Parameters](https://docs.github.com/rest/overview/resources-in-the-rest-api#parameters). + */ + listJobsForWorkflowRun: { + (params?: RestEndpointMethodTypes["actions"]["listJobsForWorkflowRun"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Lists jobs for a specific workflow run attempt. Anyone with read access to the repository can use this endpoint. If the repository is private you must use an access token with the `repo` scope. GitHub Apps must have the `actions:read` permission to use this endpoint. You can use parameters to narrow the list of results. For more information about using parameters, see [Parameters](https://docs.github.com/rest/overview/resources-in-the-rest-api#parameters). + */ + listJobsForWorkflowRunAttempt: { + (params?: RestEndpointMethodTypes["actions"]["listJobsForWorkflowRunAttempt"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Lists all labels for a self-hosted runner configured in an organization. + * + * You must authenticate using an access token with the `admin:org` scope to use this endpoint. + */ + listLabelsForSelfHostedRunnerForOrg: { + (params?: RestEndpointMethodTypes["actions"]["listLabelsForSelfHostedRunnerForOrg"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Lists all labels for a self-hosted runner configured in a repository. + * + * You must authenticate using an access token with the `repo` scope to use this + * endpoint. + */ + listLabelsForSelfHostedRunnerForRepo: { + (params?: RestEndpointMethodTypes["actions"]["listLabelsForSelfHostedRunnerForRepo"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Lists all secrets available in an organization without revealing their encrypted values. You must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `secrets` organization permission to use this endpoint. + */ + listOrgSecrets: { + (params?: RestEndpointMethodTypes["actions"]["listOrgSecrets"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Lists all secrets available in a repository without revealing their encrypted values. You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the `secrets` repository permission to use this endpoint. + */ + listRepoSecrets: { + (params?: RestEndpointMethodTypes["actions"]["listRepoSecrets"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Lists the workflows in a repository. Anyone with read access to the repository can use this endpoint. If the repository is private you must use an access token with the `repo` scope. GitHub Apps must have the `actions:read` permission to use this endpoint. + */ + listRepoWorkflows: { + (params?: RestEndpointMethodTypes["actions"]["listRepoWorkflows"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Lists binaries for the runner application that you can download and run. + * + * You must authenticate using an access token with the `admin:org` scope to use this endpoint. + */ + listRunnerApplicationsForOrg: { + (params?: RestEndpointMethodTypes["actions"]["listRunnerApplicationsForOrg"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Lists binaries for the runner application that you can download and run. + * + * You must authenticate using an access token with the `repo` scope to use this endpoint. + */ + listRunnerApplicationsForRepo: { + (params?: RestEndpointMethodTypes["actions"]["listRunnerApplicationsForRepo"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Lists all repositories that have been selected when the `visibility` for repository access to a secret is set to `selected`. You must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `secrets` organization permission to use this endpoint. + */ + listSelectedReposForOrgSecret: { + (params?: RestEndpointMethodTypes["actions"]["listSelectedReposForOrgSecret"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Lists the selected repositories that are enabled for GitHub Actions in an organization. To use this endpoint, the organization permission policy for `enabled_repositories` must be configured to `selected`. For more information, see "[Set GitHub Actions permissions for an organization](#set-github-actions-permissions-for-an-organization)." + * + * You must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `administration` organization permission to use this API. + */ + listSelectedRepositoriesEnabledGithubActionsOrganization: { + (params?: RestEndpointMethodTypes["actions"]["listSelectedRepositoriesEnabledGithubActionsOrganization"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Lists all self-hosted runners configured in an organization. + * + * You must authenticate using an access token with the `admin:org` scope to use this endpoint. + */ + listSelfHostedRunnersForOrg: { + (params?: RestEndpointMethodTypes["actions"]["listSelfHostedRunnersForOrg"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Lists all self-hosted runners configured in a repository. You must authenticate using an access token with the `repo` scope to use this endpoint. + */ + listSelfHostedRunnersForRepo: { + (params?: RestEndpointMethodTypes["actions"]["listSelfHostedRunnersForRepo"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Lists artifacts for a workflow run. Anyone with read access to the repository can use this endpoint. If the repository is private you must use an access token with the `repo` scope. GitHub Apps must have the `actions:read` permission to use this endpoint. + */ + listWorkflowRunArtifacts: { + (params?: RestEndpointMethodTypes["actions"]["listWorkflowRunArtifacts"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * List all workflow runs for a workflow. You can replace `workflow_id` with the workflow file name. For example, you could use `main.yaml`. You can use parameters to narrow the list of results. For more information about using parameters, see [Parameters](https://docs.github.com/rest/overview/resources-in-the-rest-api#parameters). + * + * Anyone with read access to the repository can use this endpoint. If the repository is private you must use an access token with the `repo` scope. + */ + listWorkflowRuns: { + (params?: RestEndpointMethodTypes["actions"]["listWorkflowRuns"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Lists all workflow runs for a repository. You can use parameters to narrow the list of results. For more information about using parameters, see [Parameters](https://docs.github.com/rest/overview/resources-in-the-rest-api#parameters). + * + * Anyone with read access to the repository can use this endpoint. If the repository is private you must use an access token with the `repo` scope. GitHub Apps must have the `actions:read` permission to use this endpoint. + */ + listWorkflowRunsForRepo: { + (params?: RestEndpointMethodTypes["actions"]["listWorkflowRunsForRepo"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Re-run a job and its dependent jobs in a workflow run. You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the `actions:write` permission to use this endpoint. + */ + reRunJobForWorkflowRun: { + (params?: RestEndpointMethodTypes["actions"]["reRunJobForWorkflowRun"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Re-runs your workflow run using its `id`. You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the `actions:write` permission to use this endpoint. + */ + reRunWorkflow: { + (params?: RestEndpointMethodTypes["actions"]["reRunWorkflow"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Re-run all of the failed jobs and their dependent jobs in a workflow run using the `id` of the workflow run. You must authenticate using an access token with the `repo` scope to use this endpoint. + */ + reRunWorkflowFailedJobs: { + (params?: RestEndpointMethodTypes["actions"]["reRunWorkflowFailedJobs"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Remove all custom labels from a self-hosted runner configured in an + * organization. Returns the remaining read-only labels from the runner. + * + * You must authenticate using an access token with the `admin:org` scope to use this endpoint. + */ + removeAllCustomLabelsFromSelfHostedRunnerForOrg: { + (params?: RestEndpointMethodTypes["actions"]["removeAllCustomLabelsFromSelfHostedRunnerForOrg"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Remove all custom labels from a self-hosted runner configured in a + * repository. Returns the remaining read-only labels from the runner. + * + * You must authenticate using an access token with the `repo` scope to use this + * endpoint. + */ + removeAllCustomLabelsFromSelfHostedRunnerForRepo: { + (params?: RestEndpointMethodTypes["actions"]["removeAllCustomLabelsFromSelfHostedRunnerForRepo"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Remove a custom label from a self-hosted runner configured + * in an organization. Returns the remaining labels from the runner. + * + * This endpoint returns a `404 Not Found` status if the custom label is not + * present on the runner. + * + * You must authenticate using an access token with the `admin:org` scope to use this endpoint. + */ + removeCustomLabelFromSelfHostedRunnerForOrg: { + (params?: RestEndpointMethodTypes["actions"]["removeCustomLabelFromSelfHostedRunnerForOrg"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Remove a custom label from a self-hosted runner configured + * in a repository. Returns the remaining labels from the runner. + * + * This endpoint returns a `404 Not Found` status if the custom label is not + * present on the runner. + * + * You must authenticate using an access token with the `repo` scope to use this + * endpoint. + */ + removeCustomLabelFromSelfHostedRunnerForRepo: { + (params?: RestEndpointMethodTypes["actions"]["removeCustomLabelFromSelfHostedRunnerForRepo"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Removes a repository from an organization secret when the `visibility` for repository access is set to `selected`. The visibility is set when you [Create or update an organization secret](https://docs.github.com/rest/reference/actions#create-or-update-an-organization-secret). You must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `secrets` organization permission to use this endpoint. + */ + removeSelectedRepoFromOrgSecret: { + (params?: RestEndpointMethodTypes["actions"]["removeSelectedRepoFromOrgSecret"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Approve or reject pending deployments that are waiting on approval by a required reviewer. + * + * Required reviewers with read access to the repository contents and deployments can use this endpoint. Required reviewers must authenticate using an access token with the `repo` scope to use this endpoint. + */ + reviewPendingDeploymentsForRun: { + (params?: RestEndpointMethodTypes["actions"]["reviewPendingDeploymentsForRun"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Sets the actions and reusable workflows that are allowed in an organization. To use this endpoint, the organization permission policy for `allowed_actions` must be configured to `selected`. For more information, see "[Set GitHub Actions permissions for an organization](#set-github-actions-permissions-for-an-organization)." + * + * If the organization belongs to an enterprise that has `selected` actions and reusable workflows set at the enterprise level, then you cannot override any of the enterprise's allowed actions and reusable workflows settings. + * + * To use the `patterns_allowed` setting for private repositories, the organization must belong to an enterprise. If the organization does not belong to an enterprise, then the `patterns_allowed` setting only applies to public repositories in the organization. + * + * You must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `administration` organization permission to use this API. + */ + setAllowedActionsOrganization: { + (params?: RestEndpointMethodTypes["actions"]["setAllowedActionsOrganization"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Sets the actions and reusable workflows that are allowed in a repository. To use this endpoint, the repository permission policy for `allowed_actions` must be configured to `selected`. For more information, see "[Set GitHub Actions permissions for a repository](#set-github-actions-permissions-for-a-repository)." + * + * If the repository belongs to an organization or enterprise that has `selected` actions and reusable workflows set at the organization or enterprise levels, then you cannot override any of the allowed actions and reusable workflows settings. + * + * To use the `patterns_allowed` setting for private repositories, the repository must belong to an enterprise. If the repository does not belong to an enterprise, then the `patterns_allowed` setting only applies to public repositories. + * + * You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the `administration` repository permission to use this API. + */ + setAllowedActionsRepository: { + (params?: RestEndpointMethodTypes["actions"]["setAllowedActionsRepository"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Remove all previous custom labels and set the new custom labels for a specific + * self-hosted runner configured in an organization. + * + * You must authenticate using an access token with the `admin:org` scope to use this endpoint. + */ + setCustomLabelsForSelfHostedRunnerForOrg: { + (params?: RestEndpointMethodTypes["actions"]["setCustomLabelsForSelfHostedRunnerForOrg"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Remove all previous custom labels and set the new custom labels for a specific + * self-hosted runner configured in a repository. + * + * You must authenticate using an access token with the `repo` scope to use this + * endpoint. + */ + setCustomLabelsForSelfHostedRunnerForRepo: { + (params?: RestEndpointMethodTypes["actions"]["setCustomLabelsForSelfHostedRunnerForRepo"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Sets the default workflow permissions granted to the `GITHUB_TOKEN` when running workflows in an enterprise, and sets + * whether GitHub Actions can submit approving pull request reviews. For more information, see + * "[Enforcing a policy for workflow permissions in your enterprise](https://docs.github.com/enterprise-cloud@latest/admin/policies/enforcing-policies-for-your-enterprise/enforcing-policies-for-github-actions-in-your-enterprise#enforcing-a-policy-for-workflow-permissions-in-your-enterprise)." + * + * You must authenticate using an access token with the `admin:enterprise` scope to use this endpoint. + * GitHub Apps must have the `enterprise_administration:write` permission to use this endpoint. + */ + setGithubActionsDefaultWorkflowPermissionsEnterprise: { + (params?: RestEndpointMethodTypes["actions"]["setGithubActionsDefaultWorkflowPermissionsEnterprise"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Sets the default workflow permissions granted to the `GITHUB_TOKEN` when running workflows in an organization, and sets if GitHub Actions + * can submit approving pull request reviews. For more information, see + * "[Setting the permissions of the GITHUB_TOKEN for your organization](https://docs.github.com/organizations/managing-organization-settings/disabling-or-limiting-github-actions-for-your-organization#setting-the-permissions-of-the-github_token-for-your-organization)." + * + * You must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `administration` organization permission to use this API. + */ + setGithubActionsDefaultWorkflowPermissionsOrganization: { + (params?: RestEndpointMethodTypes["actions"]["setGithubActionsDefaultWorkflowPermissionsOrganization"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Sets the default workflow permissions granted to the `GITHUB_TOKEN` when running workflows in a repository, and sets if GitHub Actions + * can submit approving pull request reviews. + * For more information, see "[Setting the permissions of the GITHUB_TOKEN for your repository](https://docs.github.com/repositories/managing-your-repositorys-settings-and-features/enabling-features-for-your-repository/managing-github-actions-settings-for-a-repository#setting-the-permissions-of-the-github_token-for-your-repository)." + * + * You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the repository `administration` permission to use this API. + */ + setGithubActionsDefaultWorkflowPermissionsRepository: { + (params?: RestEndpointMethodTypes["actions"]["setGithubActionsDefaultWorkflowPermissionsRepository"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Sets the GitHub Actions permissions policy for repositories and allowed actions and reusable workflows in an organization. + * + * If the organization belongs to an enterprise that has set restrictive permissions at the enterprise level, such as `allowed_actions` to `selected` actions and reusable workflows, then you cannot override them for the organization. + * + * You must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `administration` organization permission to use this API. + */ + setGithubActionsPermissionsOrganization: { + (params?: RestEndpointMethodTypes["actions"]["setGithubActionsPermissionsOrganization"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Sets the GitHub Actions permissions policy for enabling GitHub Actions and allowed actions and reusable workflows in the repository. + * + * If the repository belongs to an organization or enterprise that has set restrictive permissions at the organization or enterprise levels, such as `allowed_actions` to `selected` actions and reusable workflows, then you cannot override them for the repository. + * + * You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the `administration` repository permission to use this API. + */ + setGithubActionsPermissionsRepository: { + (params?: RestEndpointMethodTypes["actions"]["setGithubActionsPermissionsRepository"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Replaces all repositories for an organization secret when the `visibility` for repository access is set to `selected`. The visibility is set when you [Create or update an organization secret](https://docs.github.com/rest/reference/actions#create-or-update-an-organization-secret). You must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `secrets` organization permission to use this endpoint. + */ + setSelectedReposForOrgSecret: { + (params?: RestEndpointMethodTypes["actions"]["setSelectedReposForOrgSecret"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Replaces the list of selected repositories that are enabled for GitHub Actions in an organization. To use this endpoint, the organization permission policy for `enabled_repositories` must be configured to `selected`. For more information, see "[Set GitHub Actions permissions for an organization](#set-github-actions-permissions-for-an-organization)." + * + * You must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `administration` organization permission to use this API. + */ + setSelectedRepositoriesEnabledGithubActionsOrganization: { + (params?: RestEndpointMethodTypes["actions"]["setSelectedRepositoriesEnabledGithubActionsOrganization"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Sets the level of access that workflows outside of the repository have to actions and reusable workflows in the repository. + * This endpoint only applies to internal repositories. For more information, see "[Managing GitHub Actions settings for a repository](https://docs.github.com/repositories/managing-your-repositorys-settings-and-features/enabling-features-for-your-repository/managing-github-actions-settings-for-a-repository#allowing-access-to-components-in-an-internal-repository)." + * + * You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the + * repository `administration` permission to use this endpoint. + */ + setWorkflowAccessToRepository: { + (params?: RestEndpointMethodTypes["actions"]["setWorkflowAccessToRepository"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + }; + activity: { + checkRepoIsStarredByAuthenticatedUser: { + (params?: RestEndpointMethodTypes["activity"]["checkRepoIsStarredByAuthenticatedUser"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * This endpoint should only be used to stop watching a repository. To control whether or not you wish to receive notifications from a repository, [set the repository's subscription manually](https://docs.github.com/rest/reference/activity#set-a-repository-subscription). + */ + deleteRepoSubscription: { + (params?: RestEndpointMethodTypes["activity"]["deleteRepoSubscription"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Mutes all future notifications for a conversation until you comment on the thread or get an **@mention**. If you are watching the repository of the thread, you will still receive notifications. To ignore future notifications for a repository you are watching, use the [Set a thread subscription](https://docs.github.com/rest/reference/activity#set-a-thread-subscription) endpoint and set `ignore` to `true`. + */ + deleteThreadSubscription: { + (params?: RestEndpointMethodTypes["activity"]["deleteThreadSubscription"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * GitHub provides several timeline resources in [Atom](http://en.wikipedia.org/wiki/Atom_(standard)) format. The Feeds API lists all the feeds available to the authenticated user: + * + * * **Timeline**: The GitHub global public timeline + * * **User**: The public timeline for any user, using [URI template](https://docs.github.com/rest/overview/resources-in-the-rest-api#hypermedia) + * * **Current user public**: The public timeline for the authenticated user + * * **Current user**: The private timeline for the authenticated user + * * **Current user actor**: The private timeline for activity created by the authenticated user + * * **Current user organizations**: The private timeline for the organizations the authenticated user is a member of. + * * **Security advisories**: A collection of public announcements that provide information about security-related vulnerabilities in software on GitHub. + * + * **Note**: Private feeds are only returned when [authenticating via Basic Auth](https://docs.github.com/rest/overview/other-authentication-methods#basic-authentication) since current feed URIs use the older, non revocable auth tokens. + */ + getFeeds: { + (params?: RestEndpointMethodTypes["activity"]["getFeeds"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + getRepoSubscription: { + (params?: RestEndpointMethodTypes["activity"]["getRepoSubscription"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + getThread: { + (params?: RestEndpointMethodTypes["activity"]["getThread"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * This checks to see if the current user is subscribed to a thread. You can also [get a repository subscription](https://docs.github.com/rest/reference/activity#get-a-repository-subscription). + * + * Note that subscriptions are only generated if a user is participating in a conversation--for example, they've replied to the thread, were **@mentioned**, or manually subscribe to a thread. + */ + getThreadSubscriptionForAuthenticatedUser: { + (params?: RestEndpointMethodTypes["activity"]["getThreadSubscriptionForAuthenticatedUser"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * If you are authenticated as the given user, you will see your private events. Otherwise, you'll only see public events. + */ + listEventsForAuthenticatedUser: { + (params?: RestEndpointMethodTypes["activity"]["listEventsForAuthenticatedUser"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * List all notifications for the current user, sorted by most recently updated. + */ + listNotificationsForAuthenticatedUser: { + (params?: RestEndpointMethodTypes["activity"]["listNotificationsForAuthenticatedUser"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * This is the user's organization dashboard. You must be authenticated as the user to view this. + */ + listOrgEventsForAuthenticatedUser: { + (params?: RestEndpointMethodTypes["activity"]["listOrgEventsForAuthenticatedUser"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * We delay the public events feed by five minutes, which means the most recent event returned by the public events API actually occurred at least five minutes ago. + */ + listPublicEvents: { + (params?: RestEndpointMethodTypes["activity"]["listPublicEvents"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + listPublicEventsForRepoNetwork: { + (params?: RestEndpointMethodTypes["activity"]["listPublicEventsForRepoNetwork"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + listPublicEventsForUser: { + (params?: RestEndpointMethodTypes["activity"]["listPublicEventsForUser"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + listPublicOrgEvents: { + (params?: RestEndpointMethodTypes["activity"]["listPublicOrgEvents"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * These are events that you've received by watching repos and following users. If you are authenticated as the given user, you will see private events. Otherwise, you'll only see public events. + */ + listReceivedEventsForUser: { + (params?: RestEndpointMethodTypes["activity"]["listReceivedEventsForUser"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + listReceivedPublicEventsForUser: { + (params?: RestEndpointMethodTypes["activity"]["listReceivedPublicEventsForUser"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + listRepoEvents: { + (params?: RestEndpointMethodTypes["activity"]["listRepoEvents"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * List all notifications for the current user. + */ + listRepoNotificationsForAuthenticatedUser: { + (params?: RestEndpointMethodTypes["activity"]["listRepoNotificationsForAuthenticatedUser"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Lists repositories the authenticated user has starred. + * + * You can also find out _when_ stars were created by passing the following custom [media type](https://docs.github.com/rest/overview/media-types/) via the `Accept` header: + */ + listReposStarredByAuthenticatedUser: { + (params?: RestEndpointMethodTypes["activity"]["listReposStarredByAuthenticatedUser"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Lists repositories a user has starred. + * + * You can also find out _when_ stars were created by passing the following custom [media type](https://docs.github.com/rest/overview/media-types/) via the `Accept` header: + */ + listReposStarredByUser: { + (params?: RestEndpointMethodTypes["activity"]["listReposStarredByUser"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Lists repositories a user is watching. + */ + listReposWatchedByUser: { + (params?: RestEndpointMethodTypes["activity"]["listReposWatchedByUser"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Lists the people that have starred the repository. + * + * You can also find out _when_ stars were created by passing the following custom [media type](https://docs.github.com/rest/overview/media-types/) via the `Accept` header: + */ + listStargazersForRepo: { + (params?: RestEndpointMethodTypes["activity"]["listStargazersForRepo"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Lists repositories the authenticated user is watching. + */ + listWatchedReposForAuthenticatedUser: { + (params?: RestEndpointMethodTypes["activity"]["listWatchedReposForAuthenticatedUser"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Lists the people watching the specified repository. + */ + listWatchersForRepo: { + (params?: RestEndpointMethodTypes["activity"]["listWatchersForRepo"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Marks all notifications as "read" removes it from the [default view on GitHub](https://github.com/notifications). If the number of notifications is too large to complete in one request, you will receive a `202 Accepted` status and GitHub will run an asynchronous process to mark notifications as "read." To check whether any "unread" notifications remain, you can use the [List notifications for the authenticated user](https://docs.github.com/rest/reference/activity#list-notifications-for-the-authenticated-user) endpoint and pass the query parameter `all=false`. + */ + markNotificationsAsRead: { + (params?: RestEndpointMethodTypes["activity"]["markNotificationsAsRead"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Marks all notifications in a repository as "read" removes them from the [default view on GitHub](https://github.com/notifications). If the number of notifications is too large to complete in one request, you will receive a `202 Accepted` status and GitHub will run an asynchronous process to mark notifications as "read." To check whether any "unread" notifications remain, you can use the [List repository notifications for the authenticated user](https://docs.github.com/rest/reference/activity#list-repository-notifications-for-the-authenticated-user) endpoint and pass the query parameter `all=false`. + */ + markRepoNotificationsAsRead: { + (params?: RestEndpointMethodTypes["activity"]["markRepoNotificationsAsRead"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + markThreadAsRead: { + (params?: RestEndpointMethodTypes["activity"]["markThreadAsRead"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * If you would like to watch a repository, set `subscribed` to `true`. If you would like to ignore notifications made within a repository, set `ignored` to `true`. If you would like to stop watching a repository, [delete the repository's subscription](https://docs.github.com/rest/reference/activity#delete-a-repository-subscription) completely. + */ + setRepoSubscription: { + (params?: RestEndpointMethodTypes["activity"]["setRepoSubscription"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * If you are watching a repository, you receive notifications for all threads by default. Use this endpoint to ignore future notifications for threads until you comment on the thread or get an **@mention**. + * + * You can also use this endpoint to subscribe to threads that you are currently not receiving notifications for or to subscribed to threads that you have previously ignored. + * + * Unsubscribing from a conversation in a repository that you are not watching is functionally equivalent to the [Delete a thread subscription](https://docs.github.com/rest/reference/activity#delete-a-thread-subscription) endpoint. + */ + setThreadSubscription: { + (params?: RestEndpointMethodTypes["activity"]["setThreadSubscription"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Note that you'll need to set `Content-Length` to zero when calling out to this endpoint. For more information, see "[HTTP verbs](https://docs.github.com/rest/overview/resources-in-the-rest-api#http-verbs)." + */ + starRepoForAuthenticatedUser: { + (params?: RestEndpointMethodTypes["activity"]["starRepoForAuthenticatedUser"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + unstarRepoForAuthenticatedUser: { + (params?: RestEndpointMethodTypes["activity"]["unstarRepoForAuthenticatedUser"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + }; + apps: { + /** + * Add a single repository to an installation. The authenticated user must have admin access to the repository. + * + * You must use a personal access token (which you can create via the [command line](https://docs.github.com/github/authenticating-to-github/creating-a-personal-access-token) or [Basic Authentication](https://docs.github.com/rest/overview/other-authentication-methods#basic-authentication)) to access this endpoint. + * @deprecated octokit.rest.apps.addRepoToInstallation() has been renamed to octokit.rest.apps.addRepoToInstallationForAuthenticatedUser() (2021-10-05) + */ + addRepoToInstallation: { + (params?: RestEndpointMethodTypes["apps"]["addRepoToInstallation"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Add a single repository to an installation. The authenticated user must have admin access to the repository. + * + * You must use a personal access token (which you can create via the [command line](https://docs.github.com/github/authenticating-to-github/creating-a-personal-access-token) or [Basic Authentication](https://docs.github.com/rest/overview/other-authentication-methods#basic-authentication)) to access this endpoint. + */ + addRepoToInstallationForAuthenticatedUser: { + (params?: RestEndpointMethodTypes["apps"]["addRepoToInstallationForAuthenticatedUser"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * OAuth applications can use a special API method for checking OAuth token validity without exceeding the normal rate limits for failed login attempts. Authentication works differently with this particular endpoint. You must use [Basic Authentication](https://docs.github.com/rest/overview/other-authentication-methods#basic-authentication) to use this endpoint, where the username is the OAuth application `client_id` and the password is its `client_secret`. Invalid tokens will return `404 NOT FOUND`. + */ + checkToken: { + (params?: RestEndpointMethodTypes["apps"]["checkToken"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Use this endpoint to complete the handshake necessary when implementing the [GitHub App Manifest flow](https://docs.github.com/apps/building-github-apps/creating-github-apps-from-a-manifest/). When you create a GitHub App with the manifest flow, you receive a temporary `code` used to retrieve the GitHub App's `id`, `pem` (private key), and `webhook_secret`. + */ + createFromManifest: { + (params?: RestEndpointMethodTypes["apps"]["createFromManifest"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Creates an installation access token that enables a GitHub App to make authenticated API requests for the app's installation on an organization or individual account. Installation tokens expire one hour from the time you create them. Using an expired token produces a status code of `401 - Unauthorized`, and requires creating a new installation token. By default the installation token has access to all repositories that the installation can access. To restrict the access to specific repositories, you can provide the `repository_ids` when creating the token. When you omit `repository_ids`, the response does not contain the `repositories` key. + * + * You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. + */ + createInstallationAccessToken: { + (params?: RestEndpointMethodTypes["apps"]["createInstallationAccessToken"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * OAuth application owners can revoke a grant for their OAuth application and a specific user. You must use [Basic Authentication](https://docs.github.com/rest/overview/other-authentication-methods#basic-authentication) when accessing this endpoint, using the OAuth application's `client_id` and `client_secret` as the username and password. You must also provide a valid OAuth `access_token` as an input parameter and the grant for the token's owner will be deleted. + * Deleting an OAuth application's grant will also delete all OAuth tokens associated with the application for the user. Once deleted, the application will have no access to the user's account and will no longer be listed on [the application authorizations settings screen within GitHub](https://github.com/settings/applications#authorized). + */ + deleteAuthorization: { + (params?: RestEndpointMethodTypes["apps"]["deleteAuthorization"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Uninstalls a GitHub App on a user, organization, or business account. If you prefer to temporarily suspend an app's access to your account's resources, then we recommend the "[Suspend an app installation](https://docs.github.com/rest/reference/apps/#suspend-an-app-installation)" endpoint. + * + * You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. + */ + deleteInstallation: { + (params?: RestEndpointMethodTypes["apps"]["deleteInstallation"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * OAuth application owners can revoke a single token for an OAuth application. You must use [Basic Authentication](https://docs.github.com/rest/overview/other-authentication-methods#basic-authentication) when accessing this endpoint, using the OAuth application's `client_id` and `client_secret` as the username and password. + */ + deleteToken: { + (params?: RestEndpointMethodTypes["apps"]["deleteToken"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Returns the GitHub App associated with the authentication credentials used. To see how many app installations are associated with this GitHub App, see the `installations_count` in the response. For more details about your app's installations, see the "[List installations for the authenticated app](https://docs.github.com/rest/reference/apps#list-installations-for-the-authenticated-app)" endpoint. + * + * You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. + */ + getAuthenticated: { + (params?: RestEndpointMethodTypes["apps"]["getAuthenticated"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * **Note**: The `:app_slug` is just the URL-friendly name of your GitHub App. You can find this on the settings page for your GitHub App (e.g., `https://github.com/settings/apps/:app_slug`). + * + * If the GitHub App you specify is public, you can access this endpoint without authenticating. If the GitHub App you specify is private, you must authenticate with a [personal access token](https://docs.github.com/articles/creating-a-personal-access-token-for-the-command-line/) or an [installation access token](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-an-installation) to access this endpoint. + */ + getBySlug: { + (params?: RestEndpointMethodTypes["apps"]["getBySlug"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Enables an authenticated GitHub App to find an installation's information using the installation id. + * + * You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. + */ + getInstallation: { + (params?: RestEndpointMethodTypes["apps"]["getInstallation"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Enables an authenticated GitHub App to find the organization's installation information. + * + * You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. + */ + getOrgInstallation: { + (params?: RestEndpointMethodTypes["apps"]["getOrgInstallation"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Enables an authenticated GitHub App to find the repository's installation information. The installation's account type will be either an organization or a user account, depending which account the repository belongs to. + * + * You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. + */ + getRepoInstallation: { + (params?: RestEndpointMethodTypes["apps"]["getRepoInstallation"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Shows whether the user or organization account actively subscribes to a plan listed by the authenticated GitHub App. When someone submits a plan change that won't be processed until the end of their billing cycle, you will also see the upcoming pending change. + * + * GitHub Apps must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. OAuth Apps must use [basic authentication](https://docs.github.com/rest/overview/other-authentication-methods#basic-authentication) with their client ID and client secret to access this endpoint. + */ + getSubscriptionPlanForAccount: { + (params?: RestEndpointMethodTypes["apps"]["getSubscriptionPlanForAccount"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Shows whether the user or organization account actively subscribes to a plan listed by the authenticated GitHub App. When someone submits a plan change that won't be processed until the end of their billing cycle, you will also see the upcoming pending change. + * + * GitHub Apps must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. OAuth Apps must use [basic authentication](https://docs.github.com/rest/overview/other-authentication-methods#basic-authentication) with their client ID and client secret to access this endpoint. + */ + getSubscriptionPlanForAccountStubbed: { + (params?: RestEndpointMethodTypes["apps"]["getSubscriptionPlanForAccountStubbed"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Enables an authenticated GitHub App to find the user’s installation information. + * + * You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. + */ + getUserInstallation: { + (params?: RestEndpointMethodTypes["apps"]["getUserInstallation"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Returns the webhook configuration for a GitHub App. For more information about configuring a webhook for your app, see "[Creating a GitHub App](/developers/apps/creating-a-github-app)." + * + * You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. + */ + getWebhookConfigForApp: { + (params?: RestEndpointMethodTypes["apps"]["getWebhookConfigForApp"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Returns a delivery for the webhook configured for a GitHub App. + * + * You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. + */ + getWebhookDelivery: { + (params?: RestEndpointMethodTypes["apps"]["getWebhookDelivery"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Returns user and organization accounts associated with the specified plan, including free plans. For per-seat pricing, you see the list of accounts that have purchased the plan, including the number of seats purchased. When someone submits a plan change that won't be processed until the end of their billing cycle, you will also see the upcoming pending change. + * + * GitHub Apps must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. OAuth Apps must use [basic authentication](https://docs.github.com/rest/overview/other-authentication-methods#basic-authentication) with their client ID and client secret to access this endpoint. + */ + listAccountsForPlan: { + (params?: RestEndpointMethodTypes["apps"]["listAccountsForPlan"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Returns repository and organization accounts associated with the specified plan, including free plans. For per-seat pricing, you see the list of accounts that have purchased the plan, including the number of seats purchased. When someone submits a plan change that won't be processed until the end of their billing cycle, you will also see the upcoming pending change. + * + * GitHub Apps must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. OAuth Apps must use [basic authentication](https://docs.github.com/rest/overview/other-authentication-methods#basic-authentication) with their client ID and client secret to access this endpoint. + */ + listAccountsForPlanStubbed: { + (params?: RestEndpointMethodTypes["apps"]["listAccountsForPlanStubbed"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * List repositories that the authenticated user has explicit permission (`:read`, `:write`, or `:admin`) to access for an installation. + * + * The authenticated user has explicit permission to access repositories they own, repositories where they are a collaborator, and repositories that they can access through an organization membership. + * + * You must use a [user-to-server OAuth access token](https://docs.github.com/apps/building-github-apps/identifying-and-authorizing-users-for-github-apps/#identifying-users-on-your-site), created for a user who has authorized your GitHub App, to access this endpoint. + * + * The access the user has to each repository is included in the hash under the `permissions` key. + */ + listInstallationReposForAuthenticatedUser: { + (params?: RestEndpointMethodTypes["apps"]["listInstallationReposForAuthenticatedUser"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. + * + * The permissions the installation has are included under the `permissions` key. + */ + listInstallations: { + (params?: RestEndpointMethodTypes["apps"]["listInstallations"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Lists installations of your GitHub App that the authenticated user has explicit permission (`:read`, `:write`, or `:admin`) to access. + * + * You must use a [user-to-server OAuth access token](https://docs.github.com/apps/building-github-apps/identifying-and-authorizing-users-for-github-apps/#identifying-users-on-your-site), created for a user who has authorized your GitHub App, to access this endpoint. + * + * The authenticated user has explicit permission to access repositories they own, repositories where they are a collaborator, and repositories that they can access through an organization membership. + * + * You can find the permissions for the installation under the `permissions` key. + */ + listInstallationsForAuthenticatedUser: { + (params?: RestEndpointMethodTypes["apps"]["listInstallationsForAuthenticatedUser"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Lists all plans that are part of your GitHub Marketplace listing. + * + * GitHub Apps must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. OAuth Apps must use [basic authentication](https://docs.github.com/rest/overview/other-authentication-methods#basic-authentication) with their client ID and client secret to access this endpoint. + */ + listPlans: { + (params?: RestEndpointMethodTypes["apps"]["listPlans"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Lists all plans that are part of your GitHub Marketplace listing. + * + * GitHub Apps must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. OAuth Apps must use [basic authentication](https://docs.github.com/rest/overview/other-authentication-methods#basic-authentication) with their client ID and client secret to access this endpoint. + */ + listPlansStubbed: { + (params?: RestEndpointMethodTypes["apps"]["listPlansStubbed"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * List repositories that an app installation can access. + * + * You must use an [installation access token](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-an-installation) to access this endpoint. + */ + listReposAccessibleToInstallation: { + (params?: RestEndpointMethodTypes["apps"]["listReposAccessibleToInstallation"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Lists the active subscriptions for the authenticated user. You must use a [user-to-server OAuth access token](https://docs.github.com/apps/building-github-apps/identifying-and-authorizing-users-for-github-apps/#identifying-users-on-your-site), created for a user who has authorized your GitHub App, to access this endpoint. . OAuth Apps must authenticate using an [OAuth token](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/). + */ + listSubscriptionsForAuthenticatedUser: { + (params?: RestEndpointMethodTypes["apps"]["listSubscriptionsForAuthenticatedUser"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Lists the active subscriptions for the authenticated user. You must use a [user-to-server OAuth access token](https://docs.github.com/apps/building-github-apps/identifying-and-authorizing-users-for-github-apps/#identifying-users-on-your-site), created for a user who has authorized your GitHub App, to access this endpoint. . OAuth Apps must authenticate using an [OAuth token](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/). + */ + listSubscriptionsForAuthenticatedUserStubbed: { + (params?: RestEndpointMethodTypes["apps"]["listSubscriptionsForAuthenticatedUserStubbed"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Returns a list of webhook deliveries for the webhook configured for a GitHub App. + * + * You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. + */ + listWebhookDeliveries: { + (params?: RestEndpointMethodTypes["apps"]["listWebhookDeliveries"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Redeliver a delivery for the webhook configured for a GitHub App. + * + * You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. + */ + redeliverWebhookDelivery: { + (params?: RestEndpointMethodTypes["apps"]["redeliverWebhookDelivery"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Remove a single repository from an installation. The authenticated user must have admin access to the repository. + * + * You must use a personal access token (which you can create via the [command line](https://docs.github.com/github/authenticating-to-github/creating-a-personal-access-token) or [Basic Authentication](https://docs.github.com/rest/overview/other-authentication-methods#basic-authentication)) to access this endpoint. + * @deprecated octokit.rest.apps.removeRepoFromInstallation() has been renamed to octokit.rest.apps.removeRepoFromInstallationForAuthenticatedUser() (2021-10-05) + */ + removeRepoFromInstallation: { + (params?: RestEndpointMethodTypes["apps"]["removeRepoFromInstallation"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Remove a single repository from an installation. The authenticated user must have admin access to the repository. + * + * You must use a personal access token (which you can create via the [command line](https://docs.github.com/github/authenticating-to-github/creating-a-personal-access-token) or [Basic Authentication](https://docs.github.com/rest/overview/other-authentication-methods#basic-authentication)) to access this endpoint. + */ + removeRepoFromInstallationForAuthenticatedUser: { + (params?: RestEndpointMethodTypes["apps"]["removeRepoFromInstallationForAuthenticatedUser"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * OAuth applications can use this API method to reset a valid OAuth token without end-user involvement. Applications must save the "token" property in the response because changes take effect immediately. You must use [Basic Authentication](https://docs.github.com/rest/overview/other-authentication-methods#basic-authentication) when accessing this endpoint, using the OAuth application's `client_id` and `client_secret` as the username and password. Invalid tokens will return `404 NOT FOUND`. + */ + resetToken: { + (params?: RestEndpointMethodTypes["apps"]["resetToken"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Revokes the installation token you're using to authenticate as an installation and access this endpoint. + * + * Once an installation token is revoked, the token is invalidated and cannot be used. Other endpoints that require the revoked installation token must have a new installation token to work. You can create a new token using the "[Create an installation access token for an app](https://docs.github.com/rest/reference/apps#create-an-installation-access-token-for-an-app)" endpoint. + * + * You must use an [installation access token](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-an-installation) to access this endpoint. + */ + revokeInstallationAccessToken: { + (params?: RestEndpointMethodTypes["apps"]["revokeInstallationAccessToken"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Use a non-scoped user-to-server OAuth access token to create a repository scoped and/or permission scoped user-to-server OAuth access token. You can specify which repositories the token can access and which permissions are granted to the token. You must use [Basic Authentication](https://docs.github.com/rest/overview/other-authentication-methods#basic-authentication) when accessing this endpoint, using the OAuth application's `client_id` and `client_secret` as the username and password. Invalid tokens will return `404 NOT FOUND`. + */ + scopeToken: { + (params?: RestEndpointMethodTypes["apps"]["scopeToken"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Suspends a GitHub App on a user, organization, or business account, which blocks the app from accessing the account's resources. When a GitHub App is suspended, the app's access to the GitHub API or webhook events is blocked for that account. + * + * You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. + */ + suspendInstallation: { + (params?: RestEndpointMethodTypes["apps"]["suspendInstallation"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Removes a GitHub App installation suspension. + * + * You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. + */ + unsuspendInstallation: { + (params?: RestEndpointMethodTypes["apps"]["unsuspendInstallation"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Updates the webhook configuration for a GitHub App. For more information about configuring a webhook for your app, see "[Creating a GitHub App](/developers/apps/creating-a-github-app)." + * + * You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. + */ + updateWebhookConfigForApp: { + (params?: RestEndpointMethodTypes["apps"]["updateWebhookConfigForApp"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + }; + billing: { + /** + * Gets the summary of the free and paid GitHub Actions minutes used. + * + * Paid minutes only apply to workflows in private repositories that use GitHub-hosted runners. Minutes used is listed for each GitHub-hosted runner operating system. Any job re-runs are also included in the usage. The usage returned includes any minute multipliers for macOS and Windows runners, and is rounded up to the nearest whole minute. For more information, see "[Managing billing for GitHub Actions](https://docs.github.com/github/setting-up-and-managing-billing-and-payments-on-github/managing-billing-for-github-actions)". + * + * Access tokens must have the `repo` or `admin:org` scope. + */ + getGithubActionsBillingOrg: { + (params?: RestEndpointMethodTypes["billing"]["getGithubActionsBillingOrg"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Gets the summary of the free and paid GitHub Actions minutes used. + * + * Paid minutes only apply to workflows in private repositories that use GitHub-hosted runners. Minutes used is listed for each GitHub-hosted runner operating system. Any job re-runs are also included in the usage. The usage returned includes any minute multipliers for macOS and Windows runners, and is rounded up to the nearest whole minute. For more information, see "[Managing billing for GitHub Actions](https://docs.github.com/github/setting-up-and-managing-billing-and-payments-on-github/managing-billing-for-github-actions)". + * + * Access tokens must have the `user` scope. + */ + getGithubActionsBillingUser: { + (params?: RestEndpointMethodTypes["billing"]["getGithubActionsBillingUser"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Gets the GitHub Advanced Security active committers for an enterprise per repository. + * Each distinct user login across all repositories is counted as a single Advanced Security seat, so the total_advanced_security_committers is not the sum of active_users for each repository. + */ + getGithubAdvancedSecurityBillingGhe: { + (params?: RestEndpointMethodTypes["billing"]["getGithubAdvancedSecurityBillingGhe"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Gets the GitHub Advanced Security active committers for an organization per repository. + * Each distinct user login across all repositories is counted as a single Advanced Security seat, so the total_advanced_security_committers is not the sum of advanced_security_committers for each repository. + * If this organization defers to an enterprise for billing, the total_advanced_security_committers returned from the organization API may include some users that are in more than one organization, so they will only consume a single Advanced Security seat at the enterprise level. + */ + getGithubAdvancedSecurityBillingOrg: { + (params?: RestEndpointMethodTypes["billing"]["getGithubAdvancedSecurityBillingOrg"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Gets the free and paid storage used for GitHub Packages in gigabytes. + * + * Paid minutes only apply to packages stored for private repositories. For more information, see "[Managing billing for GitHub Packages](https://docs.github.com/github/setting-up-and-managing-billing-and-payments-on-github/managing-billing-for-github-packages)." + * + * Access tokens must have the `repo` or `admin:org` scope. + */ + getGithubPackagesBillingOrg: { + (params?: RestEndpointMethodTypes["billing"]["getGithubPackagesBillingOrg"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Gets the free and paid storage used for GitHub Packages in gigabytes. + * + * Paid minutes only apply to packages stored for private repositories. For more information, see "[Managing billing for GitHub Packages](https://docs.github.com/github/setting-up-and-managing-billing-and-payments-on-github/managing-billing-for-github-packages)." + * + * Access tokens must have the `user` scope. + */ + getGithubPackagesBillingUser: { + (params?: RestEndpointMethodTypes["billing"]["getGithubPackagesBillingUser"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Gets the estimated paid and estimated total storage used for GitHub Actions and GitHub Packages. + * + * Paid minutes only apply to packages stored for private repositories. For more information, see "[Managing billing for GitHub Packages](https://docs.github.com/github/setting-up-and-managing-billing-and-payments-on-github/managing-billing-for-github-packages)." + * + * Access tokens must have the `repo` or `admin:org` scope. + */ + getSharedStorageBillingOrg: { + (params?: RestEndpointMethodTypes["billing"]["getSharedStorageBillingOrg"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Gets the estimated paid and estimated total storage used for GitHub Actions and GitHub Packages. + * + * Paid minutes only apply to packages stored for private repositories. For more information, see "[Managing billing for GitHub Packages](https://docs.github.com/github/setting-up-and-managing-billing-and-payments-on-github/managing-billing-for-github-packages)." + * + * Access tokens must have the `user` scope. + */ + getSharedStorageBillingUser: { + (params?: RestEndpointMethodTypes["billing"]["getSharedStorageBillingUser"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + }; + checks: { + /** + * **Note:** The Checks API only looks for pushes in the repository where the check suite or check run were created. Pushes to a branch in a forked repository are not detected and return an empty `pull_requests` array. + * + * Creates a new check run for a specific commit in a repository. Your GitHub App must have the `checks:write` permission to create check runs. + * + * In a check suite, GitHub limits the number of check runs with the same name to 1000. Once these check runs exceed 1000, GitHub will start to automatically delete older check runs. + */ + create: { + (params?: RestEndpointMethodTypes["checks"]["create"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * **Note:** The Checks API only looks for pushes in the repository where the check suite or check run were created. Pushes to a branch in a forked repository are not detected and return an empty `pull_requests` array and a `null` value for `head_branch`. + * + * By default, check suites are automatically created when you create a [check run](https://docs.github.com/rest/reference/checks#check-runs). You only need to use this endpoint for manually creating check suites when you've disabled automatic creation using "[Update repository preferences for check suites](https://docs.github.com/rest/reference/checks#update-repository-preferences-for-check-suites)". Your GitHub App must have the `checks:write` permission to create check suites. + */ + createSuite: { + (params?: RestEndpointMethodTypes["checks"]["createSuite"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * **Note:** The Checks API only looks for pushes in the repository where the check suite or check run were created. Pushes to a branch in a forked repository are not detected and return an empty `pull_requests` array. + * + * Gets a single check run using its `id`. GitHub Apps must have the `checks:read` permission on a private repository or pull access to a public repository to get check runs. OAuth Apps and authenticated users must have the `repo` scope to get check runs in a private repository. + */ + get: { + (params?: RestEndpointMethodTypes["checks"]["get"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * **Note:** The Checks API only looks for pushes in the repository where the check suite or check run were created. Pushes to a branch in a forked repository are not detected and return an empty `pull_requests` array and a `null` value for `head_branch`. + * + * Gets a single check suite using its `id`. GitHub Apps must have the `checks:read` permission on a private repository or pull access to a public repository to get check suites. OAuth Apps and authenticated users must have the `repo` scope to get check suites in a private repository. + */ + getSuite: { + (params?: RestEndpointMethodTypes["checks"]["getSuite"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Lists annotations for a check run using the annotation `id`. GitHub Apps must have the `checks:read` permission on a private repository or pull access to a public repository to get annotations for a check run. OAuth Apps and authenticated users must have the `repo` scope to get annotations for a check run in a private repository. + */ + listAnnotations: { + (params?: RestEndpointMethodTypes["checks"]["listAnnotations"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * **Note:** The Checks API only looks for pushes in the repository where the check suite or check run were created. Pushes to a branch in a forked repository are not detected and return an empty `pull_requests` array. + * + * Lists check runs for a commit ref. The `ref` can be a SHA, branch name, or a tag name. GitHub Apps must have the `checks:read` permission on a private repository or pull access to a public repository to get check runs. OAuth Apps and authenticated users must have the `repo` scope to get check runs in a private repository. + */ + listForRef: { + (params?: RestEndpointMethodTypes["checks"]["listForRef"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * **Note:** The Checks API only looks for pushes in the repository where the check suite or check run were created. Pushes to a branch in a forked repository are not detected and return an empty `pull_requests` array. + * + * Lists check runs for a check suite using its `id`. GitHub Apps must have the `checks:read` permission on a private repository or pull access to a public repository to get check runs. OAuth Apps and authenticated users must have the `repo` scope to get check runs in a private repository. + */ + listForSuite: { + (params?: RestEndpointMethodTypes["checks"]["listForSuite"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * **Note:** The Checks API only looks for pushes in the repository where the check suite or check run were created. Pushes to a branch in a forked repository are not detected and return an empty `pull_requests` array and a `null` value for `head_branch`. + * + * Lists check suites for a commit `ref`. The `ref` can be a SHA, branch name, or a tag name. GitHub Apps must have the `checks:read` permission on a private repository or pull access to a public repository to list check suites. OAuth Apps and authenticated users must have the `repo` scope to get check suites in a private repository. + */ + listSuitesForRef: { + (params?: RestEndpointMethodTypes["checks"]["listSuitesForRef"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Triggers GitHub to rerequest an existing check run, without pushing new code to a repository. This endpoint will trigger the [`check_run` webhook](https://docs.github.com/webhooks/event-payloads/#check_run) event with the action `rerequested`. When a check run is `rerequested`, its `status` is reset to `queued` and the `conclusion` is cleared. + * + * To rerequest a check run, your GitHub App must have the `checks:read` permission on a private repository or pull access to a public repository. + */ + rerequestRun: { + (params?: RestEndpointMethodTypes["checks"]["rerequestRun"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Triggers GitHub to rerequest an existing check suite, without pushing new code to a repository. This endpoint will trigger the [`check_suite` webhook](https://docs.github.com/webhooks/event-payloads/#check_suite) event with the action `rerequested`. When a check suite is `rerequested`, its `status` is reset to `queued` and the `conclusion` is cleared. + * + * To rerequest a check suite, your GitHub App must have the `checks:read` permission on a private repository or pull access to a public repository. + */ + rerequestSuite: { + (params?: RestEndpointMethodTypes["checks"]["rerequestSuite"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Changes the default automatic flow when creating check suites. By default, a check suite is automatically created each time code is pushed to a repository. When you disable the automatic creation of check suites, you can manually [Create a check suite](https://docs.github.com/rest/reference/checks#create-a-check-suite). You must have admin permissions in the repository to set preferences for check suites. + */ + setSuitesPreferences: { + (params?: RestEndpointMethodTypes["checks"]["setSuitesPreferences"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * **Note:** The Checks API only looks for pushes in the repository where the check suite or check run were created. Pushes to a branch in a forked repository are not detected and return an empty `pull_requests` array. + * + * Updates a check run for a specific commit in a repository. Your GitHub App must have the `checks:write` permission to edit check runs. + */ + update: { + (params?: RestEndpointMethodTypes["checks"]["update"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + }; + codeScanning: { + /** + * Deletes a specified code scanning analysis from a repository. For + * private repositories, you must use an access token with the `repo` scope. For public repositories, + * you must use an access token with `public_repo` scope. + * GitHub Apps must have the `security_events` write permission to use this endpoint. + * + * You can delete one analysis at a time. + * To delete a series of analyses, start with the most recent analysis and work backwards. + * Conceptually, the process is similar to the undo function in a text editor. + * + * When you list the analyses for a repository, + * one or more will be identified as deletable in the response: + * + * ``` + * "deletable": true + * ``` + * + * An analysis is deletable when it's the most recent in a set of analyses. + * Typically, a repository will have multiple sets of analyses + * for each enabled code scanning tool, + * where a set is determined by a unique combination of analysis values: + * + * * `ref` + * * `tool` + * * `analysis_key` + * * `environment` + * + * If you attempt to delete an analysis that is not the most recent in a set, + * you'll get a 400 response with the message: + * + * ``` + * Analysis specified is not deletable. + * ``` + * + * The response from a successful `DELETE` operation provides you with + * two alternative URLs for deleting the next analysis in the set: + * `next_analysis_url` and `confirm_delete_url`. + * Use the `next_analysis_url` URL if you want to avoid accidentally deleting the final analysis + * in a set. This is a useful option if you want to preserve at least one analysis + * for the specified tool in your repository. + * Use the `confirm_delete_url` URL if you are content to remove all analyses for a tool. + * When you delete the last analysis in a set, the value of `next_analysis_url` and `confirm_delete_url` + * in the 200 response is `null`. + * + * As an example of the deletion process, + * let's imagine that you added a workflow that configured a particular code scanning tool + * to analyze the code in a repository. This tool has added 15 analyses: + * 10 on the default branch, and another 5 on a topic branch. + * You therefore have two separate sets of analyses for this tool. + * You've now decided that you want to remove all of the analyses for the tool. + * To do this you must make 15 separate deletion requests. + * To start, you must find an analysis that's identified as deletable. + * Each set of analyses always has one that's identified as deletable. + * Having found the deletable analysis for one of the two sets, + * delete this analysis and then continue deleting the next analysis in the set until they're all deleted. + * Then repeat the process for the second set. + * The procedure therefore consists of a nested loop: + * + * **Outer loop**: + * * List the analyses for the repository, filtered by tool. + * * Parse this list to find a deletable analysis. If found: + * + * **Inner loop**: + * * Delete the identified analysis. + * * Parse the response for the value of `confirm_delete_url` and, if found, use this in the next iteration. + * + * The above process assumes that you want to remove all trace of the tool's analyses from the GitHub user interface, for the specified repository, and it therefore uses the `confirm_delete_url` value. Alternatively, you could use the `next_analysis_url` value, which would leave the last analysis in each set undeleted to avoid removing a tool's analysis entirely. + */ + deleteAnalysis: { + (params?: RestEndpointMethodTypes["codeScanning"]["deleteAnalysis"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Gets a single code scanning alert. You must use an access token with the `security_events` scope to use this endpoint with private repos, the `public_repo` scope also grants permission to read security events on public repos only. GitHub Apps must have the `security_events` read permission to use this endpoint. + * + * **Deprecation notice**: + * The instances field is deprecated and will, in future, not be included in the response for this endpoint. The example response reflects this change. The same information can now be retrieved via a GET request to the URL specified by `instances_url`. + */ + getAlert: { + (params?: RestEndpointMethodTypes["codeScanning"]["getAlert"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Gets a specified code scanning analysis for a repository. + * You must use an access token with the `security_events` scope to use this endpoint with private repos, + * the `public_repo` scope also grants permission to read security events on public repos only. + * GitHub Apps must have the `security_events` read permission to use this endpoint. + * + * The default JSON response contains fields that describe the analysis. + * This includes the Git reference and commit SHA to which the analysis relates, + * the datetime of the analysis, the name of the code scanning tool, + * and the number of alerts. + * + * The `rules_count` field in the default response give the number of rules + * that were run in the analysis. + * For very old analyses this data is not available, + * and `0` is returned in this field. + * + * If you use the Accept header `application/sarif+json`, + * the response contains the analysis data that was uploaded. + * This is formatted as + * [SARIF version 2.1.0](https://docs.oasis-open.org/sarif/sarif/v2.1.0/cs01/sarif-v2.1.0-cs01.html). + */ + getAnalysis: { + (params?: RestEndpointMethodTypes["codeScanning"]["getAnalysis"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Gets information about a SARIF upload, including the status and the URL of the analysis that was uploaded so that you can retrieve details of the analysis. For more information, see "[Get a code scanning analysis for a repository](/rest/reference/code-scanning#get-a-code-scanning-analysis-for-a-repository)." You must use an access token with the `security_events` scope to use this endpoint with private repos, the `public_repo` scope also grants permission to read security events on public repos only. GitHub Apps must have the `security_events` read permission to use this endpoint. + */ + getSarif: { + (params?: RestEndpointMethodTypes["codeScanning"]["getSarif"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Lists all instances of the specified code scanning alert. + * You must use an access token with the `security_events` scope to use this endpoint with private repos, + * the `public_repo` scope also grants permission to read security events on public repos only. + * GitHub Apps must have the `security_events` read permission to use this endpoint. + */ + listAlertInstances: { + (params?: RestEndpointMethodTypes["codeScanning"]["listAlertInstances"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Lists all code scanning alerts for the default branch (usually `main` + * or `master`) for all eligible repositories in an organization. + * To use this endpoint, you must be an administrator or security manager for the organization, and you must use an access token with the `repo` scope or `security_events` scope. + * + * GitHub Apps must have the `security_events` read permission to use this endpoint. + */ + listAlertsForOrg: { + (params?: RestEndpointMethodTypes["codeScanning"]["listAlertsForOrg"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Lists all open code scanning alerts for the default branch (usually `main` + * or `master`). You must use an access token with the `security_events` scope to use + * this endpoint with private repos, the `public_repo` scope also grants permission to read + * security events on public repos only. GitHub Apps must have the `security_events` read + * permission to use this endpoint. + * + * The response includes a `most_recent_instance` object. + * This provides details of the most recent instance of this alert + * for the default branch or for the specified Git reference + * (if you used `ref` in the request). + */ + listAlertsForRepo: { + (params?: RestEndpointMethodTypes["codeScanning"]["listAlertsForRepo"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Lists all instances of the specified code scanning alert. + * You must use an access token with the `security_events` scope to use this endpoint with private repos, + * the `public_repo` scope also grants permission to read security events on public repos only. + * GitHub Apps must have the `security_events` read permission to use this endpoint. + * @deprecated octokit.rest.codeScanning.listAlertsInstances() has been renamed to octokit.rest.codeScanning.listAlertInstances() (2021-04-30) + */ + listAlertsInstances: { + (params?: RestEndpointMethodTypes["codeScanning"]["listAlertsInstances"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Lists the details of all code scanning analyses for a repository, + * starting with the most recent. + * The response is paginated and you can use the `page` and `per_page` parameters + * to list the analyses you're interested in. + * By default 30 analyses are listed per page. + * + * The `rules_count` field in the response give the number of rules + * that were run in the analysis. + * For very old analyses this data is not available, + * and `0` is returned in this field. + * + * You must use an access token with the `security_events` scope to use this endpoint with private repos, + * the `public_repo` scope also grants permission to read security events on public repos only. + * GitHub Apps must have the `security_events` read permission to use this endpoint. + * + * **Deprecation notice**: + * The `tool_name` field is deprecated and will, in future, not be included in the response for this endpoint. The example response reflects this change. The tool name can now be found inside the `tool` field. + */ + listRecentAnalyses: { + (params?: RestEndpointMethodTypes["codeScanning"]["listRecentAnalyses"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Updates the status of a single code scanning alert. You must use an access token with the `security_events` scope to use this endpoint with private repositories. You can also use tokens with the `public_repo` scope for public repositories only. GitHub Apps must have the `security_events` write permission to use this endpoint. + */ + updateAlert: { + (params?: RestEndpointMethodTypes["codeScanning"]["updateAlert"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Uploads SARIF data containing the results of a code scanning analysis to make the results available in a repository. You must use an access token with the `security_events` scope to use this endpoint for private repositories. You can also use tokens with the `public_repo` scope for public repositories only. GitHub Apps must have the `security_events` write permission to use this endpoint. + * + * There are two places where you can upload code scanning results. + * - If you upload to a pull request, for example `--ref refs/pull/42/merge` or `--ref refs/pull/42/head`, then the results appear as alerts in a pull request check. For more information, see "[Triaging code scanning alerts in pull requests](/code-security/secure-coding/triaging-code-scanning-alerts-in-pull-requests)." + * - If you upload to a branch, for example `--ref refs/heads/my-branch`, then the results appear in the **Security** tab for your repository. For more information, see "[Managing code scanning alerts for your repository](/code-security/secure-coding/managing-code-scanning-alerts-for-your-repository#viewing-the-alerts-for-a-repository)." + * + * You must compress the SARIF-formatted analysis data that you want to upload, using `gzip`, and then encode it as a Base64 format string. For example: + * + * ``` + * gzip -c analysis-data.sarif | base64 -w0 + * ``` + * + * SARIF upload supports a maximum of 5000 results per analysis run. Any results over this limit are ignored and any SARIF uploads with more than 25,000 results are rejected. Typically, but not necessarily, a SARIF file contains a single run of a single tool. If a code scanning tool generates too many results, you should update the analysis configuration to run only the most important rules or queries. + * + * The `202 Accepted`, response includes an `id` value. + * You can use this ID to check the status of the upload by using this for the `/sarifs/{sarif_id}` endpoint. + * For more information, see "[Get information about a SARIF upload](/rest/reference/code-scanning#get-information-about-a-sarif-upload)." + */ + uploadSarif: { + (params?: RestEndpointMethodTypes["codeScanning"]["uploadSarif"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + }; + codesOfConduct: { + getAllCodesOfConduct: { + (params?: RestEndpointMethodTypes["codesOfConduct"]["getAllCodesOfConduct"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + getConductCode: { + (params?: RestEndpointMethodTypes["codesOfConduct"]["getConductCode"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + }; + codespaces: { + /** + * Adds a repository to the selected repositories for a user's codespace secret. + * You must authenticate using an access token with the `codespace` or `codespace:secrets` scope to use this endpoint. User must have Codespaces access to use this endpoint. + * GitHub Apps must have write access to the `codespaces_user_secrets` user permission and write access to the `codespaces_secrets` repository permission on the referenced repository to use this endpoint. + */ + addRepositoryForSecretForAuthenticatedUser: { + (params?: RestEndpointMethodTypes["codespaces"]["addRepositoryForSecretForAuthenticatedUser"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * List the machine types a codespace can transition to use. + * + * You must authenticate using an access token with the `codespace` scope to use this endpoint. + * + * GitHub Apps must have read access to the `codespaces_metadata` repository permission to use this endpoint. + */ + codespaceMachinesForAuthenticatedUser: { + (params?: RestEndpointMethodTypes["codespaces"]["codespaceMachinesForAuthenticatedUser"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Creates a new codespace, owned by the authenticated user. + * + * This endpoint requires either a `repository_id` OR a `pull_request` but not both. + * + * You must authenticate using an access token with the `codespace` scope to use this endpoint. + * + * GitHub Apps must have write access to the `codespaces` repository permission to use this endpoint. + */ + createForAuthenticatedUser: { + (params?: RestEndpointMethodTypes["codespaces"]["createForAuthenticatedUser"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Creates or updates a repository secret with an encrypted value. Encrypt your secret using + * [LibSodium](https://libsodium.gitbook.io/doc/bindings_for_other_languages). You must authenticate using an access + * token with the `repo` scope to use this endpoint. GitHub Apps must have the `codespaces_secrets` repository + * permission to use this endpoint. + * + * #### Example of encrypting a secret using Node.js + * + * Encrypt your secret using the [tweetsodium](https://github.com/github/tweetsodium) library. + * + * ``` + * const sodium = require('tweetsodium'); + * + * const key = "base64-encoded-public-key"; + * const value = "plain-text-secret"; + * + * // Convert the message and key to Uint8Array's (Buffer implements that interface) + * const messageBytes = Buffer.from(value); + * const keyBytes = Buffer.from(key, 'base64'); + * + * // Encrypt using LibSodium. + * const encryptedBytes = sodium.seal(messageBytes, keyBytes); + * + * // Base64 the encrypted secret + * const encrypted = Buffer.from(encryptedBytes).toString('base64'); + * + * console.log(encrypted); + * ``` + * + * + * #### Example of encrypting a secret using Python + * + * Encrypt your secret using [pynacl](https://pynacl.readthedocs.io/en/latest/public/#nacl-public-sealedbox) with Python 3. + * + * ``` + * from base64 import b64encode + * from nacl import encoding, public + * + * def encrypt(public_key: str, secret_value: str) -> str: + * """Encrypt a Unicode string using the public key.""" + * public_key = public.PublicKey(public_key.encode("utf-8"), encoding.Base64Encoder()) + * sealed_box = public.SealedBox(public_key) + * encrypted = sealed_box.encrypt(secret_value.encode("utf-8")) + * return b64encode(encrypted).decode("utf-8") + * ``` + * + * #### Example of encrypting a secret using C# + * + * Encrypt your secret using the [Sodium.Core](https://www.nuget.org/packages/Sodium.Core/) package. + * + * ``` + * var secretValue = System.Text.Encoding.UTF8.GetBytes("mySecret"); + * var publicKey = Convert.FromBase64String("2Sg8iYjAxxmI2LvUXpJjkYrMxURPc8r+dB7TJyvvcCU="); + * + * var sealedPublicKeyBox = Sodium.SealedPublicKeyBox.Create(secretValue, publicKey); + * + * Console.WriteLine(Convert.ToBase64String(sealedPublicKeyBox)); + * ``` + * + * #### Example of encrypting a secret using Ruby + * + * Encrypt your secret using the [rbnacl](https://github.com/RubyCrypto/rbnacl) gem. + * + * ```ruby + * require "rbnacl" + * require "base64" + * + * key = Base64.decode64("+ZYvJDZMHUfBkJdyq5Zm9SKqeuBQ4sj+6sfjlH4CgG0=") + * public_key = RbNaCl::PublicKey.new(key) + * + * box = RbNaCl::Boxes::Sealed.from_public_key(public_key) + * encrypted_secret = box.encrypt("my_secret") + * + * # Print the base64 encoded secret + * puts Base64.strict_encode64(encrypted_secret) + * ``` + */ + createOrUpdateRepoSecret: { + (params?: RestEndpointMethodTypes["codespaces"]["createOrUpdateRepoSecret"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Creates or updates a secret for a user's codespace with an encrypted value. Encrypt your secret using + * [LibSodium](https://libsodium.gitbook.io/doc/bindings_for_other_languages). + * + * You must authenticate using an access token with the `codespace` or `codespace:secrets` scope to use this endpoint. User must also have Codespaces access to use this endpoint. + * + * GitHub Apps must have read access to the `codespaces_user_secrets` user permission and `codespaces_secrets` repository permission on all referenced repositories to use this endpoint. + * + * #### Example encrypting a secret using Node.js + * + * Encrypt your secret using the [tweetsodium](https://github.com/github/tweetsodium) library. + * + * ``` + * const sodium = require('tweetsodium'); + * + * const key = "base64-encoded-public-key"; + * const value = "plain-text-secret"; + * + * // Convert the message and key to Uint8Array's (Buffer implements that interface) + * const messageBytes = Buffer.from(value); + * const keyBytes = Buffer.from(key, 'base64'); + * + * // Encrypt using LibSodium. + * const encryptedBytes = sodium.seal(messageBytes, keyBytes); + * + * // Base64 the encrypted secret + * const encrypted = Buffer.from(encryptedBytes).toString('base64'); + * + * console.log(encrypted); + * ``` + * + * + * #### Example encrypting a secret using Python + * + * Encrypt your secret using [pynacl](https://pynacl.readthedocs.io/en/latest/public/#nacl-public-sealedbox) with Python 3. + * + * ``` + * from base64 import b64encode + * from nacl import encoding, public + * + * def encrypt(public_key: str, secret_value: str) -> str: + * """Encrypt a Unicode string using the public key.""" + * public_key = public.PublicKey(public_key.encode("utf-8"), encoding.Base64Encoder()) + * sealed_box = public.SealedBox(public_key) + * encrypted = sealed_box.encrypt(secret_value.encode("utf-8")) + * return b64encode(encrypted).decode("utf-8") + * ``` + * + * #### Example encrypting a secret using C# + * + * Encrypt your secret using the [Sodium.Core](https://www.nuget.org/packages/Sodium.Core/) package. + * + * ``` + * var secretValue = System.Text.Encoding.UTF8.GetBytes("mySecret"); + * var publicKey = Convert.FromBase64String("2Sg8iYjAxxmI2LvUXpJjkYrMxURPc8r+dB7TJyvvcCU="); + * + * var sealedPublicKeyBox = Sodium.SealedPublicKeyBox.Create(secretValue, publicKey); + * + * Console.WriteLine(Convert.ToBase64String(sealedPublicKeyBox)); + * ``` + * + * #### Example encrypting a secret using Ruby + * + * Encrypt your secret using the [rbnacl](https://github.com/RubyCrypto/rbnacl) gem. + * + * ```ruby + * require "rbnacl" + * require "base64" + * + * key = Base64.decode64("+ZYvJDZMHUfBkJdyq5Zm9SKqeuBQ4sj+6sfjlH4CgG0=") + * public_key = RbNaCl::PublicKey.new(key) + * + * box = RbNaCl::Boxes::Sealed.from_public_key(public_key) + * encrypted_secret = box.encrypt("my_secret") + * + * # Print the base64 encoded secret + * puts Base64.strict_encode64(encrypted_secret) + * ``` + */ + createOrUpdateSecretForAuthenticatedUser: { + (params?: RestEndpointMethodTypes["codespaces"]["createOrUpdateSecretForAuthenticatedUser"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Creates a codespace owned by the authenticated user for the specified pull request. + * + * You must authenticate using an access token with the `codespace` scope to use this endpoint. + * + * GitHub Apps must have write access to the `codespaces` repository permission to use this endpoint. + */ + createWithPrForAuthenticatedUser: { + (params?: RestEndpointMethodTypes["codespaces"]["createWithPrForAuthenticatedUser"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Creates a codespace owned by the authenticated user in the specified repository. + * + * You must authenticate using an access token with the `codespace` scope to use this endpoint. + * + * GitHub Apps must have write access to the `codespaces` repository permission to use this endpoint. + */ + createWithRepoForAuthenticatedUser: { + (params?: RestEndpointMethodTypes["codespaces"]["createWithRepoForAuthenticatedUser"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Deletes a user's codespace. + * + * You must authenticate using an access token with the `codespace` scope to use this endpoint. + * + * GitHub Apps must have write access to the `codespaces` repository permission to use this endpoint. + */ + deleteForAuthenticatedUser: { + (params?: RestEndpointMethodTypes["codespaces"]["deleteForAuthenticatedUser"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Deletes a user's codespace. + * + * You must authenticate using an access token with the `admin:org` scope to use this endpoint. + */ + deleteFromOrganization: { + (params?: RestEndpointMethodTypes["codespaces"]["deleteFromOrganization"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Deletes a secret in a repository using the secret name. You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the `codespaces_secrets` repository permission to use this endpoint. + */ + deleteRepoSecret: { + (params?: RestEndpointMethodTypes["codespaces"]["deleteRepoSecret"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Deletes a secret from a user's codespaces using the secret name. Deleting the secret will remove access from all codespaces that were allowed to access the secret. + * + * You must authenticate using an access token with the `codespace` or `codespace:secrets` scope to use this endpoint. User must have Codespaces access to use this endpoint. + * + * GitHub Apps must have write access to the `codespaces_user_secrets` user permission to use this endpoint. + */ + deleteSecretForAuthenticatedUser: { + (params?: RestEndpointMethodTypes["codespaces"]["deleteSecretForAuthenticatedUser"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Triggers an export of the specified codespace and returns a URL and ID where the status of the export can be monitored. + * + * You must authenticate using a personal access token with the `codespace` scope to use this endpoint. + * + * GitHub Apps must have write access to the `codespaces_lifecycle_admin` repository permission to use this endpoint. + */ + exportForAuthenticatedUser: { + (params?: RestEndpointMethodTypes["codespaces"]["exportForAuthenticatedUser"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Gets information about an export of a codespace. + * + * You must authenticate using a personal access token with the `codespace` scope to use this endpoint. + * + * GitHub Apps must have read access to the `codespaces_lifecycle_admin` repository permission to use this endpoint. + */ + getExportDetailsForAuthenticatedUser: { + (params?: RestEndpointMethodTypes["codespaces"]["getExportDetailsForAuthenticatedUser"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Gets information about a user's codespace. + * + * You must authenticate using an access token with the `codespace` scope to use this endpoint. + * + * GitHub Apps must have read access to the `codespaces` repository permission to use this endpoint. + */ + getForAuthenticatedUser: { + (params?: RestEndpointMethodTypes["codespaces"]["getForAuthenticatedUser"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Gets your public key, which you need to encrypt secrets. You need to encrypt a secret before you can create or update secrets. + * + * You must authenticate using an access token with the `codespace` or `codespace:secrets` scope to use this endpoint. User must have Codespaces access to use this endpoint. + * + * GitHub Apps must have read access to the `codespaces_user_secrets` user permission to use this endpoint. + */ + getPublicKeyForAuthenticatedUser: { + (params?: RestEndpointMethodTypes["codespaces"]["getPublicKeyForAuthenticatedUser"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Gets your public key, which you need to encrypt secrets. You need to encrypt a secret before you can create or update secrets. Anyone with read access to the repository can use this endpoint. If the repository is private you must use an access token with the `repo` scope. GitHub Apps must have the `codespaces_secrets` repository permission to use this endpoint. + */ + getRepoPublicKey: { + (params?: RestEndpointMethodTypes["codespaces"]["getRepoPublicKey"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Gets a single repository secret without revealing its encrypted value. You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the `codespaces_secrets` repository permission to use this endpoint. + */ + getRepoSecret: { + (params?: RestEndpointMethodTypes["codespaces"]["getRepoSecret"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Gets a secret available to a user's codespaces without revealing its encrypted value. + * + * You must authenticate using an access token with the `codespace` or `codespace:secrets` scope to use this endpoint. User must have Codespaces access to use this endpoint. + * + * GitHub Apps must have read access to the `codespaces_user_secrets` user permission to use this endpoint. + */ + getSecretForAuthenticatedUser: { + (params?: RestEndpointMethodTypes["codespaces"]["getSecretForAuthenticatedUser"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Lists the devcontainer.json files associated with a specified repository and the authenticated user. These files + * specify launchpoint configurations for codespaces created within the repository. + * + * You must authenticate using an access token with the `codespace` scope to use this endpoint. + * + * GitHub Apps must have read access to the `codespaces_metadata` repository permission to use this endpoint. + */ + listDevcontainersInRepositoryForAuthenticatedUser: { + (params?: RestEndpointMethodTypes["codespaces"]["listDevcontainersInRepositoryForAuthenticatedUser"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Lists the authenticated user's codespaces. + * + * You must authenticate using an access token with the `codespace` scope to use this endpoint. + * + * GitHub Apps must have read access to the `codespaces` repository permission to use this endpoint. + */ + listForAuthenticatedUser: { + (params?: RestEndpointMethodTypes["codespaces"]["listForAuthenticatedUser"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Lists the codespaces associated to a specified organization. + * + * You must authenticate using an access token with the `admin:org` scope to use this endpoint. + */ + listInOrganization: { + (params?: RestEndpointMethodTypes["codespaces"]["listInOrganization"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Lists the codespaces associated to a specified repository and the authenticated user. + * + * You must authenticate using an access token with the `codespace` scope to use this endpoint. + * + * GitHub Apps must have read access to the `codespaces` repository permission to use this endpoint. + */ + listInRepositoryForAuthenticatedUser: { + (params?: RestEndpointMethodTypes["codespaces"]["listInRepositoryForAuthenticatedUser"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Lists all secrets available in a repository without revealing their encrypted values. You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the `codespaces_secrets` repository permission to use this endpoint. + */ + listRepoSecrets: { + (params?: RestEndpointMethodTypes["codespaces"]["listRepoSecrets"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * List the repositories that have been granted the ability to use a user's codespace secret. + * + * You must authenticate using an access token with the `codespace` or `codespace:secrets` scope to use this endpoint. User must have Codespaces access to use this endpoint. + * + * GitHub Apps must have read access to the `codespaces_user_secrets` user permission and write access to the `codespaces_secrets` repository permission on all referenced repositories to use this endpoint. + */ + listRepositoriesForSecretForAuthenticatedUser: { + (params?: RestEndpointMethodTypes["codespaces"]["listRepositoriesForSecretForAuthenticatedUser"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Lists all secrets available for a user's Codespaces without revealing their + * encrypted values. + * + * You must authenticate using an access token with the `codespace` or `codespace:secrets` scope to use this endpoint. User must have Codespaces access to use this endpoint. + * + * GitHub Apps must have read access to the `codespaces_user_secrets` user permission to use this endpoint. + */ + listSecretsForAuthenticatedUser: { + (params?: RestEndpointMethodTypes["codespaces"]["listSecretsForAuthenticatedUser"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Removes a repository from the selected repositories for a user's codespace secret. + * You must authenticate using an access token with the `codespace` or `codespace:secrets` scope to use this endpoint. User must have Codespaces access to use this endpoint. + * GitHub Apps must have write access to the `codespaces_user_secrets` user permission to use this endpoint. + */ + removeRepositoryForSecretForAuthenticatedUser: { + (params?: RestEndpointMethodTypes["codespaces"]["removeRepositoryForSecretForAuthenticatedUser"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * List the machine types available for a given repository based on its configuration. + * + * You must authenticate using an access token with the `codespace` scope to use this endpoint. + * + * GitHub Apps must have write access to the `codespaces_metadata` repository permission to use this endpoint. + */ + repoMachinesForAuthenticatedUser: { + (params?: RestEndpointMethodTypes["codespaces"]["repoMachinesForAuthenticatedUser"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Select the repositories that will use a user's codespace secret. + * + * You must authenticate using an access token with the `codespace` or `codespace:secrets` scope to use this endpoint. User must have Codespaces access to use this endpoint. + * + * GitHub Apps must have write access to the `codespaces_user_secrets` user permission and write access to the `codespaces_secrets` repository permission on all referenced repositories to use this endpoint. + */ + setRepositoriesForSecretForAuthenticatedUser: { + (params?: RestEndpointMethodTypes["codespaces"]["setRepositoriesForSecretForAuthenticatedUser"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Starts a user's codespace. + * + * You must authenticate using an access token with the `codespace` scope to use this endpoint. + * + * GitHub Apps must have write access to the `codespaces_lifecycle_admin` repository permission to use this endpoint. + */ + startForAuthenticatedUser: { + (params?: RestEndpointMethodTypes["codespaces"]["startForAuthenticatedUser"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Stops a user's codespace. + * + * You must authenticate using an access token with the `codespace` scope to use this endpoint. + * + * GitHub Apps must have write access to the `codespaces_lifecycle_admin` repository permission to use this endpoint. + */ + stopForAuthenticatedUser: { + (params?: RestEndpointMethodTypes["codespaces"]["stopForAuthenticatedUser"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Stops a user's codespace. + * + * You must authenticate using an access token with the `admin:org` scope to use this endpoint. + */ + stopInOrganization: { + (params?: RestEndpointMethodTypes["codespaces"]["stopInOrganization"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Updates a codespace owned by the authenticated user. Currently only the codespace's machine type and recent folders can be modified using this endpoint. + * + * If you specify a new machine type it will be applied the next time your codespace is started. + * + * You must authenticate using an access token with the `codespace` scope to use this endpoint. + * + * GitHub Apps must have write access to the `codespaces` repository permission to use this endpoint. + */ + updateForAuthenticatedUser: { + (params?: RestEndpointMethodTypes["codespaces"]["updateForAuthenticatedUser"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + }; + dependabot: { + /** + * Adds a repository to an organization secret when the `visibility` for repository access is set to `selected`. The visibility is set when you [Create or update an organization secret](https://docs.github.com/rest/reference/dependabot#create-or-update-an-organization-secret). You must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `dependabot_secrets` organization permission to use this endpoint. + */ + addSelectedRepoToOrgSecret: { + (params?: RestEndpointMethodTypes["dependabot"]["addSelectedRepoToOrgSecret"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Creates or updates an organization secret with an encrypted value. Encrypt your secret using + * [LibSodium](https://libsodium.gitbook.io/doc/bindings_for_other_languages). You must authenticate using an access + * token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `dependabot_secrets` organization + * permission to use this endpoint. + * + * #### Example encrypting a secret using Node.js + * + * Encrypt your secret using the [tweetsodium](https://github.com/github/tweetsodium) library. + * + * ``` + * const sodium = require('tweetsodium'); + * + * const key = "base64-encoded-public-key"; + * const value = "plain-text-secret"; + * + * // Convert the message and key to Uint8Array's (Buffer implements that interface) + * const messageBytes = Buffer.from(value); + * const keyBytes = Buffer.from(key, 'base64'); + * + * // Encrypt using LibSodium. + * const encryptedBytes = sodium.seal(messageBytes, keyBytes); + * + * // Base64 the encrypted secret + * const encrypted = Buffer.from(encryptedBytes).toString('base64'); + * + * console.log(encrypted); + * ``` + * + * + * #### Example encrypting a secret using Python + * + * Encrypt your secret using [pynacl](https://pynacl.readthedocs.io/en/latest/public/#nacl-public-sealedbox) with Python 3. + * + * ``` + * from base64 import b64encode + * from nacl import encoding, public + * + * def encrypt(public_key: str, secret_value: str) -> str: + * """Encrypt a Unicode string using the public key.""" + * public_key = public.PublicKey(public_key.encode("utf-8"), encoding.Base64Encoder()) + * sealed_box = public.SealedBox(public_key) + * encrypted = sealed_box.encrypt(secret_value.encode("utf-8")) + * return b64encode(encrypted).decode("utf-8") + * ``` + * + * #### Example encrypting a secret using C# + * + * Encrypt your secret using the [Sodium.Core](https://www.nuget.org/packages/Sodium.Core/) package. + * + * ``` + * var secretValue = System.Text.Encoding.UTF8.GetBytes("mySecret"); + * var publicKey = Convert.FromBase64String("2Sg8iYjAxxmI2LvUXpJjkYrMxURPc8r+dB7TJyvvcCU="); + * + * var sealedPublicKeyBox = Sodium.SealedPublicKeyBox.Create(secretValue, publicKey); + * + * Console.WriteLine(Convert.ToBase64String(sealedPublicKeyBox)); + * ``` + * + * #### Example encrypting a secret using Ruby + * + * Encrypt your secret using the [rbnacl](https://github.com/RubyCrypto/rbnacl) gem. + * + * ```ruby + * require "rbnacl" + * require "base64" + * + * key = Base64.decode64("+ZYvJDZMHUfBkJdyq5Zm9SKqeuBQ4sj+6sfjlH4CgG0=") + * public_key = RbNaCl::PublicKey.new(key) + * + * box = RbNaCl::Boxes::Sealed.from_public_key(public_key) + * encrypted_secret = box.encrypt("my_secret") + * + * # Print the base64 encoded secret + * puts Base64.strict_encode64(encrypted_secret) + * ``` + */ + createOrUpdateOrgSecret: { + (params?: RestEndpointMethodTypes["dependabot"]["createOrUpdateOrgSecret"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Creates or updates a repository secret with an encrypted value. Encrypt your secret using + * [LibSodium](https://libsodium.gitbook.io/doc/bindings_for_other_languages). You must authenticate using an access + * token with the `repo` scope to use this endpoint. GitHub Apps must have the `dependabot_secrets` repository + * permission to use this endpoint. + * + * #### Example encrypting a secret using Node.js + * + * Encrypt your secret using the [tweetsodium](https://github.com/github/tweetsodium) library. + * + * ``` + * const sodium = require('tweetsodium'); + * + * const key = "base64-encoded-public-key"; + * const value = "plain-text-secret"; + * + * // Convert the message and key to Uint8Array's (Buffer implements that interface) + * const messageBytes = Buffer.from(value); + * const keyBytes = Buffer.from(key, 'base64'); + * + * // Encrypt using LibSodium. + * const encryptedBytes = sodium.seal(messageBytes, keyBytes); + * + * // Base64 the encrypted secret + * const encrypted = Buffer.from(encryptedBytes).toString('base64'); + * + * console.log(encrypted); + * ``` + * + * + * #### Example encrypting a secret using Python + * + * Encrypt your secret using [pynacl](https://pynacl.readthedocs.io/en/latest/public/#nacl-public-sealedbox) with Python 3. + * + * ``` + * from base64 import b64encode + * from nacl import encoding, public + * + * def encrypt(public_key: str, secret_value: str) -> str: + * """Encrypt a Unicode string using the public key.""" + * public_key = public.PublicKey(public_key.encode("utf-8"), encoding.Base64Encoder()) + * sealed_box = public.SealedBox(public_key) + * encrypted = sealed_box.encrypt(secret_value.encode("utf-8")) + * return b64encode(encrypted).decode("utf-8") + * ``` + * + * #### Example encrypting a secret using C# + * + * Encrypt your secret using the [Sodium.Core](https://www.nuget.org/packages/Sodium.Core/) package. + * + * ``` + * var secretValue = System.Text.Encoding.UTF8.GetBytes("mySecret"); + * var publicKey = Convert.FromBase64String("2Sg8iYjAxxmI2LvUXpJjkYrMxURPc8r+dB7TJyvvcCU="); + * + * var sealedPublicKeyBox = Sodium.SealedPublicKeyBox.Create(secretValue, publicKey); + * + * Console.WriteLine(Convert.ToBase64String(sealedPublicKeyBox)); + * ``` + * + * #### Example encrypting a secret using Ruby + * + * Encrypt your secret using the [rbnacl](https://github.com/RubyCrypto/rbnacl) gem. + * + * ```ruby + * require "rbnacl" + * require "base64" + * + * key = Base64.decode64("+ZYvJDZMHUfBkJdyq5Zm9SKqeuBQ4sj+6sfjlH4CgG0=") + * public_key = RbNaCl::PublicKey.new(key) + * + * box = RbNaCl::Boxes::Sealed.from_public_key(public_key) + * encrypted_secret = box.encrypt("my_secret") + * + * # Print the base64 encoded secret + * puts Base64.strict_encode64(encrypted_secret) + * ``` + */ + createOrUpdateRepoSecret: { + (params?: RestEndpointMethodTypes["dependabot"]["createOrUpdateRepoSecret"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Deletes a secret in an organization using the secret name. You must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `dependabot_secrets` organization permission to use this endpoint. + */ + deleteOrgSecret: { + (params?: RestEndpointMethodTypes["dependabot"]["deleteOrgSecret"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Deletes a secret in a repository using the secret name. You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the `dependabot_secrets` repository permission to use this endpoint. + */ + deleteRepoSecret: { + (params?: RestEndpointMethodTypes["dependabot"]["deleteRepoSecret"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Gets your public key, which you need to encrypt secrets. You need to encrypt a secret before you can create or update secrets. You must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `dependabot_secrets` organization permission to use this endpoint. + */ + getOrgPublicKey: { + (params?: RestEndpointMethodTypes["dependabot"]["getOrgPublicKey"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Gets a single organization secret without revealing its encrypted value. You must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `dependabot_secrets` organization permission to use this endpoint. + */ + getOrgSecret: { + (params?: RestEndpointMethodTypes["dependabot"]["getOrgSecret"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Gets your public key, which you need to encrypt secrets. You need to encrypt a secret before you can create or update secrets. Anyone with read access to the repository can use this endpoint. If the repository is private you must use an access token with the `repo` scope. GitHub Apps must have the `dependabot_secrets` repository permission to use this endpoint. + */ + getRepoPublicKey: { + (params?: RestEndpointMethodTypes["dependabot"]["getRepoPublicKey"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Gets a single repository secret without revealing its encrypted value. You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the `dependabot_secrets` repository permission to use this endpoint. + */ + getRepoSecret: { + (params?: RestEndpointMethodTypes["dependabot"]["getRepoSecret"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Lists all secrets available in an organization without revealing their encrypted values. You must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `dependabot_secrets` organization permission to use this endpoint. + */ + listOrgSecrets: { + (params?: RestEndpointMethodTypes["dependabot"]["listOrgSecrets"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Lists all secrets available in a repository without revealing their encrypted values. You must authenticate using an access token with the `repo` scope to use this endpoint. GitHub Apps must have the `dependabot_secrets` repository permission to use this endpoint. + */ + listRepoSecrets: { + (params?: RestEndpointMethodTypes["dependabot"]["listRepoSecrets"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Lists all repositories that have been selected when the `visibility` for repository access to a secret is set to `selected`. You must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `dependabot_secrets` organization permission to use this endpoint. + */ + listSelectedReposForOrgSecret: { + (params?: RestEndpointMethodTypes["dependabot"]["listSelectedReposForOrgSecret"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Removes a repository from an organization secret when the `visibility` for repository access is set to `selected`. The visibility is set when you [Create or update an organization secret](https://docs.github.com/rest/reference/dependabot#create-or-update-an-organization-secret). You must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `dependabot_secrets` organization permission to use this endpoint. + */ + removeSelectedRepoFromOrgSecret: { + (params?: RestEndpointMethodTypes["dependabot"]["removeSelectedRepoFromOrgSecret"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Replaces all repositories for an organization secret when the `visibility` for repository access is set to `selected`. The visibility is set when you [Create or update an organization secret](https://docs.github.com/rest/reference/dependabot#create-or-update-an-organization-secret). You must authenticate using an access token with the `admin:org` scope to use this endpoint. GitHub Apps must have the `dependabot_secrets` organization permission to use this endpoint. + */ + setSelectedReposForOrgSecret: { + (params?: RestEndpointMethodTypes["dependabot"]["setSelectedReposForOrgSecret"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + }; + dependencyGraph: { + /** + * Create a new snapshot of a repository's dependencies. You must authenticate using an access token with the `repo` scope to use this endpoint for a repository that the requesting user has access to. + */ + createRepositorySnapshot: { + (params?: RestEndpointMethodTypes["dependencyGraph"]["createRepositorySnapshot"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Gets the diff of the dependency changes between two commits of a repository, based on the changes to the dependency manifests made in those commits. + */ + diffRange: { + (params?: RestEndpointMethodTypes["dependencyGraph"]["diffRange"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + }; + emojis: { + /** + * Lists all the emojis available to use on GitHub. + */ + get: { + (params?: RestEndpointMethodTypes["emojis"]["get"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + }; + enterpriseAdmin: { + /** + * Add custom labels to a self-hosted runner configured in an enterprise. + * + * You must authenticate using an access token with the `manage_runners:enterprise` scope to use this endpoint. + */ + addCustomLabelsToSelfHostedRunnerForEnterprise: { + (params?: RestEndpointMethodTypes["enterpriseAdmin"]["addCustomLabelsToSelfHostedRunnerForEnterprise"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Removes an organization from the list of selected organizations that are enabled for GitHub Actions in an enterprise. To use this endpoint, the enterprise permission policy for `enabled_organizations` must be configured to `selected`. For more information, see "[Set GitHub Actions permissions for an enterprise](#set-github-actions-permissions-for-an-enterprise)." + * + * You must authenticate using an access token with the `admin:enterprise` scope to use this endpoint. + */ + disableSelectedOrganizationGithubActionsEnterprise: { + (params?: RestEndpointMethodTypes["enterpriseAdmin"]["disableSelectedOrganizationGithubActionsEnterprise"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Adds an organization to the list of selected organizations that are enabled for GitHub Actions in an enterprise. To use this endpoint, the enterprise permission policy for `enabled_organizations` must be configured to `selected`. For more information, see "[Set GitHub Actions permissions for an enterprise](#set-github-actions-permissions-for-an-enterprise)." + * + * You must authenticate using an access token with the `admin:enterprise` scope to use this endpoint. + */ + enableSelectedOrganizationGithubActionsEnterprise: { + (params?: RestEndpointMethodTypes["enterpriseAdmin"]["enableSelectedOrganizationGithubActionsEnterprise"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Gets the selected actions and reusable workflows that are allowed in an enterprise. To use this endpoint, the enterprise permission policy for `allowed_actions` must be configured to `selected`. For more information, see "[Set GitHub Actions permissions for an enterprise](#set-github-actions-permissions-for-an-enterprise)." + * + * You must authenticate using an access token with the `admin:enterprise` scope to use this endpoint. + */ + getAllowedActionsEnterprise: { + (params?: RestEndpointMethodTypes["enterpriseAdmin"]["getAllowedActionsEnterprise"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Gets the GitHub Actions permissions policy for organizations and allowed actions and reusable workflows in an enterprise. + * + * You must authenticate using an access token with the `admin:enterprise` scope to use this endpoint. + */ + getGithubActionsPermissionsEnterprise: { + (params?: RestEndpointMethodTypes["enterpriseAdmin"]["getGithubActionsPermissionsEnterprise"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Returns aggregate usage metrics for your GitHub Enterprise Server 3.5+ instance for a specified time period up to 365 days. + * + * To use this endpoint, your GitHub Enterprise Server instance must be connected to GitHub Enterprise Cloud using GitHub Connect. You must enable Server Statistics, and for the API request provide your enterprise account name or organization name connected to the GitHub Enterprise Server. For more information, see "[Enabling Server Statistics for your enterprise](/admin/configuration/configuring-github-connect/enabling-server-statistics-for-your-enterprise)" in the GitHub Enterprise Server documentation. + * + * You'll need to use a personal access token: + * - If you connected your GitHub Enterprise Server to an enterprise account and enabled Server Statistics, you'll need a personal access token with the `read:enterprise` permission. + * - If you connected your GitHub Enterprise Server to an organization account and enabled Server Statistics, you'll need a personal access token with the `read:org` permission. + * + * For more information on creating a personal access token, see "[Creating a personal access token](/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token)." + */ + getServerStatistics: { + (params?: RestEndpointMethodTypes["enterpriseAdmin"]["getServerStatistics"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Lists all labels for a self-hosted runner configured in an enterprise. + * + * You must authenticate using an access token with the `manage_runners:enterprise` scope to use this endpoint. + */ + listLabelsForSelfHostedRunnerForEnterprise: { + (params?: RestEndpointMethodTypes["enterpriseAdmin"]["listLabelsForSelfHostedRunnerForEnterprise"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Lists the organizations that are selected to have GitHub Actions enabled in an enterprise. To use this endpoint, the enterprise permission policy for `enabled_organizations` must be configured to `selected`. For more information, see "[Set GitHub Actions permissions for an enterprise](#set-github-actions-permissions-for-an-enterprise)." + * + * You must authenticate using an access token with the `admin:enterprise` scope to use this endpoint. + */ + listSelectedOrganizationsEnabledGithubActionsEnterprise: { + (params?: RestEndpointMethodTypes["enterpriseAdmin"]["listSelectedOrganizationsEnabledGithubActionsEnterprise"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Remove all custom labels from a self-hosted runner configured in an + * enterprise. Returns the remaining read-only labels from the runner. + * + * You must authenticate using an access token with the `manage_runners:enterprise` scope to use this endpoint. + */ + removeAllCustomLabelsFromSelfHostedRunnerForEnterprise: { + (params?: RestEndpointMethodTypes["enterpriseAdmin"]["removeAllCustomLabelsFromSelfHostedRunnerForEnterprise"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Remove a custom label from a self-hosted runner configured + * in an enterprise. Returns the remaining labels from the runner. + * + * This endpoint returns a `404 Not Found` status if the custom label is not + * present on the runner. + * + * You must authenticate using an access token with the `manage_runners:enterprise` scope to use this endpoint. + */ + removeCustomLabelFromSelfHostedRunnerForEnterprise: { + (params?: RestEndpointMethodTypes["enterpriseAdmin"]["removeCustomLabelFromSelfHostedRunnerForEnterprise"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Sets the actions and reusable workflows that are allowed in an enterprise. To use this endpoint, the enterprise permission policy for `allowed_actions` must be configured to `selected`. For more information, see "[Set GitHub Actions permissions for an enterprise](#set-github-actions-permissions-for-an-enterprise)." + * + * You must authenticate using an access token with the `admin:enterprise` scope to use this endpoint. + */ + setAllowedActionsEnterprise: { + (params?: RestEndpointMethodTypes["enterpriseAdmin"]["setAllowedActionsEnterprise"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Remove all previous custom labels and set the new custom labels for a specific + * self-hosted runner configured in an enterprise. + * + * You must authenticate using an access token with the `manage_runners:enterprise` scope to use this endpoint. + */ + setCustomLabelsForSelfHostedRunnerForEnterprise: { + (params?: RestEndpointMethodTypes["enterpriseAdmin"]["setCustomLabelsForSelfHostedRunnerForEnterprise"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Sets the GitHub Actions permissions policy for organizations and allowed actions and reusable workflows in an enterprise. + * + * You must authenticate using an access token with the `admin:enterprise` scope to use this endpoint. + */ + setGithubActionsPermissionsEnterprise: { + (params?: RestEndpointMethodTypes["enterpriseAdmin"]["setGithubActionsPermissionsEnterprise"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Replaces the list of selected organizations that are enabled for GitHub Actions in an enterprise. To use this endpoint, the enterprise permission policy for `enabled_organizations` must be configured to `selected`. For more information, see "[Set GitHub Actions permissions for an enterprise](#set-github-actions-permissions-for-an-enterprise)." + * + * You must authenticate using an access token with the `admin:enterprise` scope to use this endpoint. + */ + setSelectedOrganizationsEnabledGithubActionsEnterprise: { + (params?: RestEndpointMethodTypes["enterpriseAdmin"]["setSelectedOrganizationsEnabledGithubActionsEnterprise"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + }; + gists: { + checkIsStarred: { + (params?: RestEndpointMethodTypes["gists"]["checkIsStarred"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Allows you to add a new gist with one or more files. + * + * **Note:** Don't name your files "gistfile" with a numerical suffix. This is the format of the automatic naming scheme that Gist uses internally. + */ + create: { + (params?: RestEndpointMethodTypes["gists"]["create"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + createComment: { + (params?: RestEndpointMethodTypes["gists"]["createComment"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + delete: { + (params?: RestEndpointMethodTypes["gists"]["delete"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + deleteComment: { + (params?: RestEndpointMethodTypes["gists"]["deleteComment"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * **Note**: This was previously `/gists/:gist_id/fork`. + */ + fork: { + (params?: RestEndpointMethodTypes["gists"]["fork"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + get: { + (params?: RestEndpointMethodTypes["gists"]["get"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + getComment: { + (params?: RestEndpointMethodTypes["gists"]["getComment"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + getRevision: { + (params?: RestEndpointMethodTypes["gists"]["getRevision"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Lists the authenticated user's gists or if called anonymously, this endpoint returns all public gists: + */ + list: { + (params?: RestEndpointMethodTypes["gists"]["list"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + listComments: { + (params?: RestEndpointMethodTypes["gists"]["listComments"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + listCommits: { + (params?: RestEndpointMethodTypes["gists"]["listCommits"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Lists public gists for the specified user: + */ + listForUser: { + (params?: RestEndpointMethodTypes["gists"]["listForUser"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + listForks: { + (params?: RestEndpointMethodTypes["gists"]["listForks"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * List public gists sorted by most recently updated to least recently updated. + * + * Note: With [pagination](https://docs.github.com/rest/overview/resources-in-the-rest-api#pagination), you can fetch up to 3000 gists. For example, you can fetch 100 pages with 30 gists per page or 30 pages with 100 gists per page. + */ + listPublic: { + (params?: RestEndpointMethodTypes["gists"]["listPublic"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * List the authenticated user's starred gists: + */ + listStarred: { + (params?: RestEndpointMethodTypes["gists"]["listStarred"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Note that you'll need to set `Content-Length` to zero when calling out to this endpoint. For more information, see "[HTTP verbs](https://docs.github.com/rest/overview/resources-in-the-rest-api#http-verbs)." + */ + star: { + (params?: RestEndpointMethodTypes["gists"]["star"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + unstar: { + (params?: RestEndpointMethodTypes["gists"]["unstar"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Allows you to update or delete a gist file and rename gist files. Files from the previous version of the gist that aren't explicitly changed during an edit are unchanged. + */ + update: { + (params?: RestEndpointMethodTypes["gists"]["update"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + updateComment: { + (params?: RestEndpointMethodTypes["gists"]["updateComment"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + }; + git: { + createBlob: { + (params?: RestEndpointMethodTypes["git"]["createBlob"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Creates a new Git [commit object](https://git-scm.com/book/en/v1/Git-Internals-Git-Objects#Commit-Objects). + * + * **Signature verification object** + * + * The response will include a `verification` object that describes the result of verifying the commit's signature. The following fields are included in the `verification` object: + * + * | Name | Type | Description | + * | ---- | ---- | ----------- | + * | `verified` | `boolean` | Indicates whether GitHub considers the signature in this commit to be verified. | + * | `reason` | `string` | The reason for verified value. Possible values and their meanings are enumerated in the table below. | + * | `signature` | `string` | The signature that was extracted from the commit. | + * | `payload` | `string` | The value that was signed. | + * + * These are the possible values for `reason` in the `verification` object: + * + * | Value | Description | + * | ----- | ----------- | + * | `expired_key` | The key that made the signature is expired. | + * | `not_signing_key` | The "signing" flag is not among the usage flags in the GPG key that made the signature. | + * | `gpgverify_error` | There was an error communicating with the signature verification service. | + * | `gpgverify_unavailable` | The signature verification service is currently unavailable. | + * | `unsigned` | The object does not include a signature. | + * | `unknown_signature_type` | A non-PGP signature was found in the commit. | + * | `no_user` | No user was associated with the `committer` email address in the commit. | + * | `unverified_email` | The `committer` email address in the commit was associated with a user, but the email address is not verified on her/his account. | + * | `bad_email` | The `committer` email address in the commit is not included in the identities of the PGP key that made the signature. | + * | `unknown_key` | The key that made the signature has not been registered with any user's account. | + * | `malformed_signature` | There was an error parsing the signature. | + * | `invalid` | The signature could not be cryptographically verified using the key whose key-id was found in the signature. | + * | `valid` | None of the above errors applied, so the signature is considered to be verified. | + */ + createCommit: { + (params?: RestEndpointMethodTypes["git"]["createCommit"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Creates a reference for your repository. You are unable to create new references for empty repositories, even if the commit SHA-1 hash used exists. Empty repositories are repositories without branches. + */ + createRef: { + (params?: RestEndpointMethodTypes["git"]["createRef"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Note that creating a tag object does not create the reference that makes a tag in Git. If you want to create an annotated tag in Git, you have to do this call to create the tag object, and then [create](https://docs.github.com/rest/reference/git#create-a-reference) the `refs/tags/[tag]` reference. If you want to create a lightweight tag, you only have to [create](https://docs.github.com/rest/reference/git#create-a-reference) the tag reference - this call would be unnecessary. + * + * **Signature verification object** + * + * The response will include a `verification` object that describes the result of verifying the commit's signature. The following fields are included in the `verification` object: + * + * | Name | Type | Description | + * | ---- | ---- | ----------- | + * | `verified` | `boolean` | Indicates whether GitHub considers the signature in this commit to be verified. | + * | `reason` | `string` | The reason for verified value. Possible values and their meanings are enumerated in table below. | + * | `signature` | `string` | The signature that was extracted from the commit. | + * | `payload` | `string` | The value that was signed. | + * + * These are the possible values for `reason` in the `verification` object: + * + * | Value | Description | + * | ----- | ----------- | + * | `expired_key` | The key that made the signature is expired. | + * | `not_signing_key` | The "signing" flag is not among the usage flags in the GPG key that made the signature. | + * | `gpgverify_error` | There was an error communicating with the signature verification service. | + * | `gpgverify_unavailable` | The signature verification service is currently unavailable. | + * | `unsigned` | The object does not include a signature. | + * | `unknown_signature_type` | A non-PGP signature was found in the commit. | + * | `no_user` | No user was associated with the `committer` email address in the commit. | + * | `unverified_email` | The `committer` email address in the commit was associated with a user, but the email address is not verified on her/his account. | + * | `bad_email` | The `committer` email address in the commit is not included in the identities of the PGP key that made the signature. | + * | `unknown_key` | The key that made the signature has not been registered with any user's account. | + * | `malformed_signature` | There was an error parsing the signature. | + * | `invalid` | The signature could not be cryptographically verified using the key whose key-id was found in the signature. | + * | `valid` | None of the above errors applied, so the signature is considered to be verified. | + */ + createTag: { + (params?: RestEndpointMethodTypes["git"]["createTag"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * The tree creation API accepts nested entries. If you specify both a tree and a nested path modifying that tree, this endpoint will overwrite the contents of the tree with the new path contents, and create a new tree structure. + * + * If you use this endpoint to add, delete, or modify the file contents in a tree, you will need to commit the tree and then update a branch to point to the commit. For more information see "[Create a commit](https://docs.github.com/rest/reference/git#create-a-commit)" and "[Update a reference](https://docs.github.com/rest/reference/git#update-a-reference)." + */ + createTree: { + (params?: RestEndpointMethodTypes["git"]["createTree"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + deleteRef: { + (params?: RestEndpointMethodTypes["git"]["deleteRef"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * The `content` in the response will always be Base64 encoded. + * + * _Note_: This API supports blobs up to 100 megabytes in size. + */ + getBlob: { + (params?: RestEndpointMethodTypes["git"]["getBlob"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Gets a Git [commit object](https://git-scm.com/book/en/v1/Git-Internals-Git-Objects#Commit-Objects). + * + * **Signature verification object** + * + * The response will include a `verification` object that describes the result of verifying the commit's signature. The following fields are included in the `verification` object: + * + * | Name | Type | Description | + * | ---- | ---- | ----------- | + * | `verified` | `boolean` | Indicates whether GitHub considers the signature in this commit to be verified. | + * | `reason` | `string` | The reason for verified value. Possible values and their meanings are enumerated in the table below. | + * | `signature` | `string` | The signature that was extracted from the commit. | + * | `payload` | `string` | The value that was signed. | + * + * These are the possible values for `reason` in the `verification` object: + * + * | Value | Description | + * | ----- | ----------- | + * | `expired_key` | The key that made the signature is expired. | + * | `not_signing_key` | The "signing" flag is not among the usage flags in the GPG key that made the signature. | + * | `gpgverify_error` | There was an error communicating with the signature verification service. | + * | `gpgverify_unavailable` | The signature verification service is currently unavailable. | + * | `unsigned` | The object does not include a signature. | + * | `unknown_signature_type` | A non-PGP signature was found in the commit. | + * | `no_user` | No user was associated with the `committer` email address in the commit. | + * | `unverified_email` | The `committer` email address in the commit was associated with a user, but the email address is not verified on her/his account. | + * | `bad_email` | The `committer` email address in the commit is not included in the identities of the PGP key that made the signature. | + * | `unknown_key` | The key that made the signature has not been registered with any user's account. | + * | `malformed_signature` | There was an error parsing the signature. | + * | `invalid` | The signature could not be cryptographically verified using the key whose key-id was found in the signature. | + * | `valid` | None of the above errors applied, so the signature is considered to be verified. | + */ + getCommit: { + (params?: RestEndpointMethodTypes["git"]["getCommit"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Returns a single reference from your Git database. The `:ref` in the URL must be formatted as `heads/` for branches and `tags/` for tags. If the `:ref` doesn't match an existing ref, a `404` is returned. + * + * **Note:** You need to explicitly [request a pull request](https://docs.github.com/rest/reference/pulls#get-a-pull-request) to trigger a test merge commit, which checks the mergeability of pull requests. For more information, see "[Checking mergeability of pull requests](https://docs.github.com/rest/guides/getting-started-with-the-git-database-api#checking-mergeability-of-pull-requests)". + */ + getRef: { + (params?: RestEndpointMethodTypes["git"]["getRef"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * **Signature verification object** + * + * The response will include a `verification` object that describes the result of verifying the commit's signature. The following fields are included in the `verification` object: + * + * | Name | Type | Description | + * | ---- | ---- | ----------- | + * | `verified` | `boolean` | Indicates whether GitHub considers the signature in this commit to be verified. | + * | `reason` | `string` | The reason for verified value. Possible values and their meanings are enumerated in table below. | + * | `signature` | `string` | The signature that was extracted from the commit. | + * | `payload` | `string` | The value that was signed. | + * + * These are the possible values for `reason` in the `verification` object: + * + * | Value | Description | + * | ----- | ----------- | + * | `expired_key` | The key that made the signature is expired. | + * | `not_signing_key` | The "signing" flag is not among the usage flags in the GPG key that made the signature. | + * | `gpgverify_error` | There was an error communicating with the signature verification service. | + * | `gpgverify_unavailable` | The signature verification service is currently unavailable. | + * | `unsigned` | The object does not include a signature. | + * | `unknown_signature_type` | A non-PGP signature was found in the commit. | + * | `no_user` | No user was associated with the `committer` email address in the commit. | + * | `unverified_email` | The `committer` email address in the commit was associated with a user, but the email address is not verified on her/his account. | + * | `bad_email` | The `committer` email address in the commit is not included in the identities of the PGP key that made the signature. | + * | `unknown_key` | The key that made the signature has not been registered with any user's account. | + * | `malformed_signature` | There was an error parsing the signature. | + * | `invalid` | The signature could not be cryptographically verified using the key whose key-id was found in the signature. | + * | `valid` | None of the above errors applied, so the signature is considered to be verified. | + */ + getTag: { + (params?: RestEndpointMethodTypes["git"]["getTag"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Returns a single tree using the SHA1 value for that tree. + * + * If `truncated` is `true` in the response then the number of items in the `tree` array exceeded our maximum limit. If you need to fetch more items, use the non-recursive method of fetching trees, and fetch one sub-tree at a time. + */ + getTree: { + (params?: RestEndpointMethodTypes["git"]["getTree"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Returns an array of references from your Git database that match the supplied name. The `:ref` in the URL must be formatted as `heads/` for branches and `tags/` for tags. If the `:ref` doesn't exist in the repository, but existing refs start with `:ref`, they will be returned as an array. + * + * When you use this endpoint without providing a `:ref`, it will return an array of all the references from your Git database, including notes and stashes if they exist on the server. Anything in the namespace is returned, not just `heads` and `tags`. + * + * **Note:** You need to explicitly [request a pull request](https://docs.github.com/rest/reference/pulls#get-a-pull-request) to trigger a test merge commit, which checks the mergeability of pull requests. For more information, see "[Checking mergeability of pull requests](https://docs.github.com/rest/guides/getting-started-with-the-git-database-api#checking-mergeability-of-pull-requests)". + * + * If you request matching references for a branch named `feature` but the branch `feature` doesn't exist, the response can still include other matching head refs that start with the word `feature`, such as `featureA` and `featureB`. + */ + listMatchingRefs: { + (params?: RestEndpointMethodTypes["git"]["listMatchingRefs"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + updateRef: { + (params?: RestEndpointMethodTypes["git"]["updateRef"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + }; + gitignore: { + /** + * List all templates available to pass as an option when [creating a repository](https://docs.github.com/rest/reference/repos#create-a-repository-for-the-authenticated-user). + */ + getAllTemplates: { + (params?: RestEndpointMethodTypes["gitignore"]["getAllTemplates"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * The API also allows fetching the source of a single template. + * Use the raw [media type](https://docs.github.com/rest/overview/media-types/) to get the raw contents. + */ + getTemplate: { + (params?: RestEndpointMethodTypes["gitignore"]["getTemplate"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + }; + interactions: { + /** + * Shows which type of GitHub user can interact with your public repositories and when the restriction expires. + */ + getRestrictionsForAuthenticatedUser: { + (params?: RestEndpointMethodTypes["interactions"]["getRestrictionsForAuthenticatedUser"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Shows which type of GitHub user can interact with this organization and when the restriction expires. If there is no restrictions, you will see an empty response. + */ + getRestrictionsForOrg: { + (params?: RestEndpointMethodTypes["interactions"]["getRestrictionsForOrg"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Shows which type of GitHub user can interact with this repository and when the restriction expires. If there are no restrictions, you will see an empty response. + */ + getRestrictionsForRepo: { + (params?: RestEndpointMethodTypes["interactions"]["getRestrictionsForRepo"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Shows which type of GitHub user can interact with your public repositories and when the restriction expires. + * @deprecated octokit.rest.interactions.getRestrictionsForYourPublicRepos() has been renamed to octokit.rest.interactions.getRestrictionsForAuthenticatedUser() (2021-02-02) + */ + getRestrictionsForYourPublicRepos: { + (params?: RestEndpointMethodTypes["interactions"]["getRestrictionsForYourPublicRepos"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Removes any interaction restrictions from your public repositories. + */ + removeRestrictionsForAuthenticatedUser: { + (params?: RestEndpointMethodTypes["interactions"]["removeRestrictionsForAuthenticatedUser"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Removes all interaction restrictions from public repositories in the given organization. You must be an organization owner to remove restrictions. + */ + removeRestrictionsForOrg: { + (params?: RestEndpointMethodTypes["interactions"]["removeRestrictionsForOrg"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Removes all interaction restrictions from the given repository. You must have owner or admin access to remove restrictions. If the interaction limit is set for the user or organization that owns this repository, you will receive a `409 Conflict` response and will not be able to use this endpoint to change the interaction limit for a single repository. + */ + removeRestrictionsForRepo: { + (params?: RestEndpointMethodTypes["interactions"]["removeRestrictionsForRepo"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Removes any interaction restrictions from your public repositories. + * @deprecated octokit.rest.interactions.removeRestrictionsForYourPublicRepos() has been renamed to octokit.rest.interactions.removeRestrictionsForAuthenticatedUser() (2021-02-02) + */ + removeRestrictionsForYourPublicRepos: { + (params?: RestEndpointMethodTypes["interactions"]["removeRestrictionsForYourPublicRepos"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Temporarily restricts which type of GitHub user can interact with your public repositories. Setting the interaction limit at the user level will overwrite any interaction limits that are set for individual repositories owned by the user. + */ + setRestrictionsForAuthenticatedUser: { + (params?: RestEndpointMethodTypes["interactions"]["setRestrictionsForAuthenticatedUser"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Temporarily restricts interactions to a certain type of GitHub user in any public repository in the given organization. You must be an organization owner to set these restrictions. Setting the interaction limit at the organization level will overwrite any interaction limits that are set for individual repositories owned by the organization. + */ + setRestrictionsForOrg: { + (params?: RestEndpointMethodTypes["interactions"]["setRestrictionsForOrg"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Temporarily restricts interactions to a certain type of GitHub user within the given repository. You must have owner or admin access to set these restrictions. If an interaction limit is set for the user or organization that owns this repository, you will receive a `409 Conflict` response and will not be able to use this endpoint to change the interaction limit for a single repository. + */ + setRestrictionsForRepo: { + (params?: RestEndpointMethodTypes["interactions"]["setRestrictionsForRepo"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Temporarily restricts which type of GitHub user can interact with your public repositories. Setting the interaction limit at the user level will overwrite any interaction limits that are set for individual repositories owned by the user. + * @deprecated octokit.rest.interactions.setRestrictionsForYourPublicRepos() has been renamed to octokit.rest.interactions.setRestrictionsForAuthenticatedUser() (2021-02-02) + */ + setRestrictionsForYourPublicRepos: { + (params?: RestEndpointMethodTypes["interactions"]["setRestrictionsForYourPublicRepos"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + }; + issues: { + /** + * Adds up to 10 assignees to an issue. Users already assigned to an issue are not replaced. + */ + addAssignees: { + (params?: RestEndpointMethodTypes["issues"]["addAssignees"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + addLabels: { + (params?: RestEndpointMethodTypes["issues"]["addLabels"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Checks if a user has permission to be assigned to an issue in this repository. + * + * If the `assignee` can be assigned to issues in the repository, a `204` header with no content is returned. + * + * Otherwise a `404` status code is returned. + */ + checkUserCanBeAssigned: { + (params?: RestEndpointMethodTypes["issues"]["checkUserCanBeAssigned"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Any user with pull access to a repository can create an issue. If [issues are disabled in the repository](https://docs.github.com/articles/disabling-issues/), the API returns a `410 Gone` status. + * + * This endpoint triggers [notifications](https://docs.github.com/github/managing-subscriptions-and-notifications-on-github/about-notifications). Creating content too quickly using this endpoint may result in secondary rate limiting. See "[Secondary rate limits](https://docs.github.com/rest/overview/resources-in-the-rest-api#secondary-rate-limits)" and "[Dealing with secondary rate limits](https://docs.github.com/rest/guides/best-practices-for-integrators#dealing-with-secondary-rate-limits)" for details. + */ + create: { + (params?: RestEndpointMethodTypes["issues"]["create"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * This endpoint triggers [notifications](https://docs.github.com/github/managing-subscriptions-and-notifications-on-github/about-notifications). Creating content too quickly using this endpoint may result in secondary rate limiting. See "[Secondary rate limits](https://docs.github.com/rest/overview/resources-in-the-rest-api#secondary-rate-limits)" and "[Dealing with secondary rate limits](https://docs.github.com/rest/guides/best-practices-for-integrators#dealing-with-secondary-rate-limits)" for details. + */ + createComment: { + (params?: RestEndpointMethodTypes["issues"]["createComment"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + createLabel: { + (params?: RestEndpointMethodTypes["issues"]["createLabel"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + createMilestone: { + (params?: RestEndpointMethodTypes["issues"]["createMilestone"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + deleteComment: { + (params?: RestEndpointMethodTypes["issues"]["deleteComment"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + deleteLabel: { + (params?: RestEndpointMethodTypes["issues"]["deleteLabel"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + deleteMilestone: { + (params?: RestEndpointMethodTypes["issues"]["deleteMilestone"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * The API returns a [`301 Moved Permanently` status](https://docs.github.com/rest/overview/resources-in-the-rest-api#http-redirects-redirects) if the issue was + * [transferred](https://docs.github.com/articles/transferring-an-issue-to-another-repository/) to another repository. If + * the issue was transferred to or deleted from a repository where the authenticated user lacks read access, the API + * returns a `404 Not Found` status. If the issue was deleted from a repository where the authenticated user has read + * access, the API returns a `410 Gone` status. To receive webhook events for transferred and deleted issues, subscribe + * to the [`issues`](https://docs.github.com/webhooks/event-payloads/#issues) webhook. + * + * **Note**: GitHub's REST API v3 considers every pull request an issue, but not every issue is a pull request. For this + * reason, "Issues" endpoints may return both issues and pull requests in the response. You can identify pull requests by + * the `pull_request` key. Be aware that the `id` of a pull request returned from "Issues" endpoints will be an _issue id_. To find out the pull + * request id, use the "[List pull requests](https://docs.github.com/rest/reference/pulls#list-pull-requests)" endpoint. + */ + get: { + (params?: RestEndpointMethodTypes["issues"]["get"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + getComment: { + (params?: RestEndpointMethodTypes["issues"]["getComment"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + getEvent: { + (params?: RestEndpointMethodTypes["issues"]["getEvent"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + getLabel: { + (params?: RestEndpointMethodTypes["issues"]["getLabel"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + getMilestone: { + (params?: RestEndpointMethodTypes["issues"]["getMilestone"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * List issues assigned to the authenticated user across all visible repositories including owned repositories, member + * repositories, and organization repositories. You can use the `filter` query parameter to fetch issues that are not + * necessarily assigned to you. + * + * + * **Note**: GitHub's REST API v3 considers every pull request an issue, but not every issue is a pull request. For this + * reason, "Issues" endpoints may return both issues and pull requests in the response. You can identify pull requests by + * the `pull_request` key. Be aware that the `id` of a pull request returned from "Issues" endpoints will be an _issue id_. To find out the pull + * request id, use the "[List pull requests](https://docs.github.com/rest/reference/pulls#list-pull-requests)" endpoint. + */ + list: { + (params?: RestEndpointMethodTypes["issues"]["list"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Lists the [available assignees](https://docs.github.com/articles/assigning-issues-and-pull-requests-to-other-github-users/) for issues in a repository. + */ + listAssignees: { + (params?: RestEndpointMethodTypes["issues"]["listAssignees"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Issue Comments are ordered by ascending ID. + */ + listComments: { + (params?: RestEndpointMethodTypes["issues"]["listComments"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * By default, Issue Comments are ordered by ascending ID. + */ + listCommentsForRepo: { + (params?: RestEndpointMethodTypes["issues"]["listCommentsForRepo"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + listEvents: { + (params?: RestEndpointMethodTypes["issues"]["listEvents"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + listEventsForRepo: { + (params?: RestEndpointMethodTypes["issues"]["listEventsForRepo"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + listEventsForTimeline: { + (params?: RestEndpointMethodTypes["issues"]["listEventsForTimeline"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * List issues across owned and member repositories assigned to the authenticated user. + * + * **Note**: GitHub's REST API v3 considers every pull request an issue, but not every issue is a pull request. For this + * reason, "Issues" endpoints may return both issues and pull requests in the response. You can identify pull requests by + * the `pull_request` key. Be aware that the `id` of a pull request returned from "Issues" endpoints will be an _issue id_. To find out the pull + * request id, use the "[List pull requests](https://docs.github.com/rest/reference/pulls#list-pull-requests)" endpoint. + */ + listForAuthenticatedUser: { + (params?: RestEndpointMethodTypes["issues"]["listForAuthenticatedUser"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * List issues in an organization assigned to the authenticated user. + * + * **Note**: GitHub's REST API v3 considers every pull request an issue, but not every issue is a pull request. For this + * reason, "Issues" endpoints may return both issues and pull requests in the response. You can identify pull requests by + * the `pull_request` key. Be aware that the `id` of a pull request returned from "Issues" endpoints will be an _issue id_. To find out the pull + * request id, use the "[List pull requests](https://docs.github.com/rest/reference/pulls#list-pull-requests)" endpoint. + */ + listForOrg: { + (params?: RestEndpointMethodTypes["issues"]["listForOrg"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * List issues in a repository. + * + * **Note**: GitHub's REST API v3 considers every pull request an issue, but not every issue is a pull request. For this + * reason, "Issues" endpoints may return both issues and pull requests in the response. You can identify pull requests by + * the `pull_request` key. Be aware that the `id` of a pull request returned from "Issues" endpoints will be an _issue id_. To find out the pull + * request id, use the "[List pull requests](https://docs.github.com/rest/reference/pulls#list-pull-requests)" endpoint. + */ + listForRepo: { + (params?: RestEndpointMethodTypes["issues"]["listForRepo"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + listLabelsForMilestone: { + (params?: RestEndpointMethodTypes["issues"]["listLabelsForMilestone"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + listLabelsForRepo: { + (params?: RestEndpointMethodTypes["issues"]["listLabelsForRepo"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + listLabelsOnIssue: { + (params?: RestEndpointMethodTypes["issues"]["listLabelsOnIssue"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + listMilestones: { + (params?: RestEndpointMethodTypes["issues"]["listMilestones"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Users with push access can lock an issue or pull request's conversation. + * + * Note that, if you choose not to pass any parameters, you'll need to set `Content-Length` to zero when calling out to this endpoint. For more information, see "[HTTP verbs](https://docs.github.com/rest/overview/resources-in-the-rest-api#http-verbs)." + */ + lock: { + (params?: RestEndpointMethodTypes["issues"]["lock"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + removeAllLabels: { + (params?: RestEndpointMethodTypes["issues"]["removeAllLabels"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Removes one or more assignees from an issue. + */ + removeAssignees: { + (params?: RestEndpointMethodTypes["issues"]["removeAssignees"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Removes the specified label from the issue, and returns the remaining labels on the issue. This endpoint returns a `404 Not Found` status if the label does not exist. + */ + removeLabel: { + (params?: RestEndpointMethodTypes["issues"]["removeLabel"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Removes any previous labels and sets the new labels for an issue. + */ + setLabels: { + (params?: RestEndpointMethodTypes["issues"]["setLabels"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Users with push access can unlock an issue's conversation. + */ + unlock: { + (params?: RestEndpointMethodTypes["issues"]["unlock"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Issue owners and users with push access can edit an issue. + */ + update: { + (params?: RestEndpointMethodTypes["issues"]["update"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + updateComment: { + (params?: RestEndpointMethodTypes["issues"]["updateComment"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + updateLabel: { + (params?: RestEndpointMethodTypes["issues"]["updateLabel"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + updateMilestone: { + (params?: RestEndpointMethodTypes["issues"]["updateMilestone"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + }; + licenses: { + get: { + (params?: RestEndpointMethodTypes["licenses"]["get"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + getAllCommonlyUsed: { + (params?: RestEndpointMethodTypes["licenses"]["getAllCommonlyUsed"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * This method returns the contents of the repository's license file, if one is detected. + * + * Similar to [Get repository content](https://docs.github.com/rest/reference/repos#get-repository-content), this method also supports [custom media types](https://docs.github.com/rest/overview/media-types) for retrieving the raw license content or rendered license HTML. + */ + getForRepo: { + (params?: RestEndpointMethodTypes["licenses"]["getForRepo"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + }; + markdown: { + render: { + (params?: RestEndpointMethodTypes["markdown"]["render"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * You must send Markdown as plain text (using a `Content-Type` header of `text/plain` or `text/x-markdown`) to this endpoint, rather than using JSON format. In raw mode, [GitHub Flavored Markdown](https://github.github.com/gfm/) is not supported and Markdown will be rendered in plain format like a README.md file. Markdown content must be 400 KB or less. + */ + renderRaw: { + (params?: RestEndpointMethodTypes["markdown"]["renderRaw"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + }; + meta: { + /** + * Returns meta information about GitHub, including a list of GitHub's IP addresses. For more information, see "[About GitHub's IP addresses](https://docs.github.com/articles/about-github-s-ip-addresses/)." + * + * **Note:** The IP addresses shown in the documentation's response are only example values. You must always query the API directly to get the latest list of IP addresses. + */ + get: { + (params?: RestEndpointMethodTypes["meta"]["get"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Get the octocat as ASCII art + */ + getOctocat: { + (params?: RestEndpointMethodTypes["meta"]["getOctocat"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Get a random sentence from the Zen of GitHub + */ + getZen: { + (params?: RestEndpointMethodTypes["meta"]["getZen"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Get Hypermedia links to resources accessible in GitHub's REST API + */ + root: { + (params?: RestEndpointMethodTypes["meta"]["root"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + }; + migrations: { + /** + * Stop an import for a repository. + */ + cancelImport: { + (params?: RestEndpointMethodTypes["migrations"]["cancelImport"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Deletes a previous migration archive. Downloadable migration archives are automatically deleted after seven days. Migration metadata, which is returned in the [List user migrations](https://docs.github.com/rest/reference/migrations#list-user-migrations) and [Get a user migration status](https://docs.github.com/rest/reference/migrations#get-a-user-migration-status) endpoints, will continue to be available even after an archive is deleted. + */ + deleteArchiveForAuthenticatedUser: { + (params?: RestEndpointMethodTypes["migrations"]["deleteArchiveForAuthenticatedUser"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Deletes a previous migration archive. Migration archives are automatically deleted after seven days. + */ + deleteArchiveForOrg: { + (params?: RestEndpointMethodTypes["migrations"]["deleteArchiveForOrg"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Fetches the URL to a migration archive. + */ + downloadArchiveForOrg: { + (params?: RestEndpointMethodTypes["migrations"]["downloadArchiveForOrg"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Fetches the URL to download the migration archive as a `tar.gz` file. Depending on the resources your repository uses, the migration archive can contain JSON files with data for these objects: + * + * * attachments + * * bases + * * commit\_comments + * * issue\_comments + * * issue\_events + * * issues + * * milestones + * * organizations + * * projects + * * protected\_branches + * * pull\_request\_reviews + * * pull\_requests + * * releases + * * repositories + * * review\_comments + * * schema + * * users + * + * The archive will also contain an `attachments` directory that includes all attachment files uploaded to GitHub.com and a `repositories` directory that contains the repository's Git data. + */ + getArchiveForAuthenticatedUser: { + (params?: RestEndpointMethodTypes["migrations"]["getArchiveForAuthenticatedUser"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Each type of source control system represents authors in a different way. For example, a Git commit author has a display name and an email address, but a Subversion commit author just has a username. The GitHub Importer will make the author information valid, but the author might not be correct. For example, it will change the bare Subversion username `hubot` into something like `hubot `. + * + * This endpoint and the [Map a commit author](https://docs.github.com/rest/reference/migrations#map-a-commit-author) endpoint allow you to provide correct Git author information. + */ + getCommitAuthors: { + (params?: RestEndpointMethodTypes["migrations"]["getCommitAuthors"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * View the progress of an import. + * + * **Import status** + * + * This section includes details about the possible values of the `status` field of the Import Progress response. + * + * An import that does not have errors will progress through these steps: + * + * * `detecting` - the "detection" step of the import is in progress because the request did not include a `vcs` parameter. The import is identifying the type of source control present at the URL. + * * `importing` - the "raw" step of the import is in progress. This is where commit data is fetched from the original repository. The import progress response will include `commit_count` (the total number of raw commits that will be imported) and `percent` (0 - 100, the current progress through the import). + * * `mapping` - the "rewrite" step of the import is in progress. This is where SVN branches are converted to Git branches, and where author updates are applied. The import progress response does not include progress information. + * * `pushing` - the "push" step of the import is in progress. This is where the importer updates the repository on GitHub. The import progress response will include `push_percent`, which is the percent value reported by `git push` when it is "Writing objects". + * * `complete` - the import is complete, and the repository is ready on GitHub. + * + * If there are problems, you will see one of these in the `status` field: + * + * * `auth_failed` - the import requires authentication in order to connect to the original repository. To update authentication for the import, please see the [Update an import](https://docs.github.com/rest/reference/migrations#update-an-import) section. + * * `error` - the import encountered an error. The import progress response will include the `failed_step` and an error message. Contact [GitHub Support](https://support.github.com/contact?tags=dotcom-rest-api) for more information. + * * `detection_needs_auth` - the importer requires authentication for the originating repository to continue detection. To update authentication for the import, please see the [Update an import](https://docs.github.com/rest/reference/migrations#update-an-import) section. + * * `detection_found_nothing` - the importer didn't recognize any source control at the URL. To resolve, [Cancel the import](https://docs.github.com/rest/reference/migrations#cancel-an-import) and [retry](https://docs.github.com/rest/reference/migrations#start-an-import) with the correct URL. + * * `detection_found_multiple` - the importer found several projects or repositories at the provided URL. When this is the case, the Import Progress response will also include a `project_choices` field with the possible project choices as values. To update project choice, please see the [Update an import](https://docs.github.com/rest/reference/migrations#update-an-import) section. + * + * **The project_choices field** + * + * When multiple projects are found at the provided URL, the response hash will include a `project_choices` field, the value of which is an array of hashes each representing a project choice. The exact key/value pairs of the project hashes will differ depending on the version control type. + * + * **Git LFS related fields** + * + * This section includes details about Git LFS related fields that may be present in the Import Progress response. + * + * * `use_lfs` - describes whether the import has been opted in or out of using Git LFS. The value can be `opt_in`, `opt_out`, or `undecided` if no action has been taken. + * * `has_large_files` - the boolean value describing whether files larger than 100MB were found during the `importing` step. + * * `large_files_size` - the total size in gigabytes of files larger than 100MB found in the originating repository. + * * `large_files_count` - the total number of files larger than 100MB found in the originating repository. To see a list of these files, make a "Get Large Files" request. + */ + getImportStatus: { + (params?: RestEndpointMethodTypes["migrations"]["getImportStatus"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * List files larger than 100MB found during the import + */ + getLargeFiles: { + (params?: RestEndpointMethodTypes["migrations"]["getLargeFiles"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Fetches a single user migration. The response includes the `state` of the migration, which can be one of the following values: + * + * * `pending` - the migration hasn't started yet. + * * `exporting` - the migration is in progress. + * * `exported` - the migration finished successfully. + * * `failed` - the migration failed. + * + * Once the migration has been `exported` you can [download the migration archive](https://docs.github.com/rest/reference/migrations#download-a-user-migration-archive). + */ + getStatusForAuthenticatedUser: { + (params?: RestEndpointMethodTypes["migrations"]["getStatusForAuthenticatedUser"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Fetches the status of a migration. + * + * The `state` of a migration can be one of the following values: + * + * * `pending`, which means the migration hasn't started yet. + * * `exporting`, which means the migration is in progress. + * * `exported`, which means the migration finished successfully. + * * `failed`, which means the migration failed. + */ + getStatusForOrg: { + (params?: RestEndpointMethodTypes["migrations"]["getStatusForOrg"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Lists all migrations a user has started. + */ + listForAuthenticatedUser: { + (params?: RestEndpointMethodTypes["migrations"]["listForAuthenticatedUser"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Lists the most recent migrations. + */ + listForOrg: { + (params?: RestEndpointMethodTypes["migrations"]["listForOrg"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Lists all the repositories for this user migration. + */ + listReposForAuthenticatedUser: { + (params?: RestEndpointMethodTypes["migrations"]["listReposForAuthenticatedUser"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * List all the repositories for this organization migration. + */ + listReposForOrg: { + (params?: RestEndpointMethodTypes["migrations"]["listReposForOrg"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Lists all the repositories for this user migration. + * @deprecated octokit.rest.migrations.listReposForUser() has been renamed to octokit.rest.migrations.listReposForAuthenticatedUser() (2021-10-05) + */ + listReposForUser: { + (params?: RestEndpointMethodTypes["migrations"]["listReposForUser"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Update an author's identity for the import. Your application can continue updating authors any time before you push new commits to the repository. + */ + mapCommitAuthor: { + (params?: RestEndpointMethodTypes["migrations"]["mapCommitAuthor"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * You can import repositories from Subversion, Mercurial, and TFS that include files larger than 100MB. This ability is powered by [Git LFS](https://git-lfs.github.com). You can learn more about our LFS feature and working with large files [on our help site](https://docs.github.com/articles/versioning-large-files/). + */ + setLfsPreference: { + (params?: RestEndpointMethodTypes["migrations"]["setLfsPreference"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Initiates the generation of a user migration archive. + */ + startForAuthenticatedUser: { + (params?: RestEndpointMethodTypes["migrations"]["startForAuthenticatedUser"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Initiates the generation of a migration archive. + */ + startForOrg: { + (params?: RestEndpointMethodTypes["migrations"]["startForOrg"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Start a source import to a GitHub repository using GitHub Importer. + */ + startImport: { + (params?: RestEndpointMethodTypes["migrations"]["startImport"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Unlocks a repository. You can lock repositories when you [start a user migration](https://docs.github.com/rest/reference/migrations#start-a-user-migration). Once the migration is complete you can unlock each repository to begin using it again or [delete the repository](https://docs.github.com/rest/reference/repos#delete-a-repository) if you no longer need the source data. Returns a status of `404 Not Found` if the repository is not locked. + */ + unlockRepoForAuthenticatedUser: { + (params?: RestEndpointMethodTypes["migrations"]["unlockRepoForAuthenticatedUser"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Unlocks a repository that was locked for migration. You should unlock each migrated repository and [delete them](https://docs.github.com/rest/reference/repos#delete-a-repository) when the migration is complete and you no longer need the source data. + */ + unlockRepoForOrg: { + (params?: RestEndpointMethodTypes["migrations"]["unlockRepoForOrg"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * An import can be updated with credentials or a project choice by passing in the appropriate parameters in this API + * request. If no parameters are provided, the import will be restarted. + * + * Some servers (e.g. TFS servers) can have several projects at a single URL. In those cases the import progress will + * have the status `detection_found_multiple` and the Import Progress response will include a `project_choices` array. + * You can select the project to import by providing one of the objects in the `project_choices` array in the update request. + */ + updateImport: { + (params?: RestEndpointMethodTypes["migrations"]["updateImport"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + }; + orgs: { + blockUser: { + (params?: RestEndpointMethodTypes["orgs"]["blockUser"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Cancel an organization invitation. In order to cancel an organization invitation, the authenticated user must be an organization owner. + * + * This endpoint triggers [notifications](https://docs.github.com/en/github/managing-subscriptions-and-notifications-on-github/about-notifications). + */ + cancelInvitation: { + (params?: RestEndpointMethodTypes["orgs"]["cancelInvitation"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + checkBlockedUser: { + (params?: RestEndpointMethodTypes["orgs"]["checkBlockedUser"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Check if a user is, publicly or privately, a member of the organization. + */ + checkMembershipForUser: { + (params?: RestEndpointMethodTypes["orgs"]["checkMembershipForUser"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + checkPublicMembershipForUser: { + (params?: RestEndpointMethodTypes["orgs"]["checkPublicMembershipForUser"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * When an organization member is converted to an outside collaborator, they'll only have access to the repositories that their current team membership allows. The user will no longer be a member of the organization. For more information, see "[Converting an organization member to an outside collaborator](https://docs.github.com/articles/converting-an-organization-member-to-an-outside-collaborator/)". Converting an organization member to an outside collaborator may be restricted by enterprise administrators. For more information, see "[Enforcing repository management policies in your enterprise](https://docs.github.com/enterprise-cloud@latest/admin/policies/enforcing-policies-for-your-enterprise/enforcing-repository-management-policies-in-your-enterprise#enforcing-a-policy-for-inviting-outside-collaborators-to-repositories)." + */ + convertMemberToOutsideCollaborator: { + (params?: RestEndpointMethodTypes["orgs"]["convertMemberToOutsideCollaborator"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Invite people to an organization by using their GitHub user ID or their email address. In order to create invitations in an organization, the authenticated user must be an organization owner. + * + * This endpoint triggers [notifications](https://docs.github.com/en/github/managing-subscriptions-and-notifications-on-github/about-notifications). Creating content too quickly using this endpoint may result in secondary rate limiting. See "[Secondary rate limits](https://docs.github.com/rest/overview/resources-in-the-rest-api#secondary-rate-limits)" and "[Dealing with secondary rate limits](https://docs.github.com/rest/guides/best-practices-for-integrators#dealing-with-secondary-rate-limits)" for details. + */ + createInvitation: { + (params?: RestEndpointMethodTypes["orgs"]["createInvitation"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Here's how you can create a hook that posts payloads in JSON format: + */ + createWebhook: { + (params?: RestEndpointMethodTypes["orgs"]["createWebhook"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + deleteWebhook: { + (params?: RestEndpointMethodTypes["orgs"]["deleteWebhook"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * To see many of the organization response values, you need to be an authenticated organization owner with the `admin:org` scope. When the value of `two_factor_requirement_enabled` is `true`, the organization requires all members, billing managers, and outside collaborators to enable [two-factor authentication](https://docs.github.com/articles/securing-your-account-with-two-factor-authentication-2fa/). + * + * GitHub Apps with the `Organization plan` permission can use this endpoint to retrieve information about an organization's GitHub plan. See "[Authenticating with GitHub Apps](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/)" for details. For an example response, see 'Response with GitHub plan information' below." + */ + get: { + (params?: RestEndpointMethodTypes["orgs"]["get"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + getMembershipForAuthenticatedUser: { + (params?: RestEndpointMethodTypes["orgs"]["getMembershipForAuthenticatedUser"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * In order to get a user's membership with an organization, the authenticated user must be an organization member. The `state` parameter in the response can be used to identify the user's membership status. + */ + getMembershipForUser: { + (params?: RestEndpointMethodTypes["orgs"]["getMembershipForUser"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Returns a webhook configured in an organization. To get only the webhook `config` properties, see "[Get a webhook configuration for an organization](/rest/reference/orgs#get-a-webhook-configuration-for-an-organization)." + */ + getWebhook: { + (params?: RestEndpointMethodTypes["orgs"]["getWebhook"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Returns the webhook configuration for an organization. To get more information about the webhook, including the `active` state and `events`, use "[Get an organization webhook ](/rest/reference/orgs#get-an-organization-webhook)." + * + * Access tokens must have the `admin:org_hook` scope, and GitHub Apps must have the `organization_hooks:read` permission. + */ + getWebhookConfigForOrg: { + (params?: RestEndpointMethodTypes["orgs"]["getWebhookConfigForOrg"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Returns a delivery for a webhook configured in an organization. + */ + getWebhookDelivery: { + (params?: RestEndpointMethodTypes["orgs"]["getWebhookDelivery"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Lists all organizations, in the order that they were created on GitHub. + * + * **Note:** Pagination is powered exclusively by the `since` parameter. Use the [Link header](https://docs.github.com/rest/overview/resources-in-the-rest-api#link-header) to get the URL for the next page of organizations. + */ + list: { + (params?: RestEndpointMethodTypes["orgs"]["list"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Lists all GitHub Apps in an organization. The installation count includes all GitHub Apps installed on repositories in the organization. You must be an organization owner with `admin:read` scope to use this endpoint. + */ + listAppInstallations: { + (params?: RestEndpointMethodTypes["orgs"]["listAppInstallations"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * List the users blocked by an organization. + */ + listBlockedUsers: { + (params?: RestEndpointMethodTypes["orgs"]["listBlockedUsers"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * List the custom repository roles available in this organization. In order to see custom + * repository roles in an organization, the authenticated user must be an organization owner. + * + * For more information on custom repository roles, see "[Managing custom repository roles for an organization](https://docs.github.com/organizations/managing-peoples-access-to-your-organization-with-roles/managing-custom-repository-roles-for-an-organization)". + */ + listCustomRoles: { + (params?: RestEndpointMethodTypes["orgs"]["listCustomRoles"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * The return hash contains `failed_at` and `failed_reason` fields which represent the time at which the invitation failed and the reason for the failure. + */ + listFailedInvitations: { + (params?: RestEndpointMethodTypes["orgs"]["listFailedInvitations"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * List organizations for the authenticated user. + * + * **OAuth scope requirements** + * + * This only lists organizations that your authorization allows you to operate on in some way (e.g., you can list teams with `read:org` scope, you can publicize your organization membership with `user` scope, etc.). Therefore, this API requires at least `user` or `read:org` scope. OAuth requests with insufficient scope receive a `403 Forbidden` response. + */ + listForAuthenticatedUser: { + (params?: RestEndpointMethodTypes["orgs"]["listForAuthenticatedUser"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * List [public organization memberships](https://docs.github.com/articles/publicizing-or-concealing-organization-membership) for the specified user. + * + * This method only lists _public_ memberships, regardless of authentication. If you need to fetch all of the organization memberships (public and private) for the authenticated user, use the [List organizations for the authenticated user](https://docs.github.com/rest/reference/orgs#list-organizations-for-the-authenticated-user) API instead. + */ + listForUser: { + (params?: RestEndpointMethodTypes["orgs"]["listForUser"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * List all teams associated with an invitation. In order to see invitations in an organization, the authenticated user must be an organization owner. + */ + listInvitationTeams: { + (params?: RestEndpointMethodTypes["orgs"]["listInvitationTeams"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * List all users who are members of an organization. If the authenticated user is also a member of this organization then both concealed and public members will be returned. + */ + listMembers: { + (params?: RestEndpointMethodTypes["orgs"]["listMembers"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + listMembershipsForAuthenticatedUser: { + (params?: RestEndpointMethodTypes["orgs"]["listMembershipsForAuthenticatedUser"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * List all users who are outside collaborators of an organization. + */ + listOutsideCollaborators: { + (params?: RestEndpointMethodTypes["orgs"]["listOutsideCollaborators"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * The return hash contains a `role` field which refers to the Organization Invitation role and will be one of the following values: `direct_member`, `admin`, `billing_manager`, `hiring_manager`, or `reinstate`. If the invitee is not a GitHub member, the `login` field in the return hash will be `null`. + */ + listPendingInvitations: { + (params?: RestEndpointMethodTypes["orgs"]["listPendingInvitations"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Members of an organization can choose to have their membership publicized or not. + */ + listPublicMembers: { + (params?: RestEndpointMethodTypes["orgs"]["listPublicMembers"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Returns a list of webhook deliveries for a webhook configured in an organization. + */ + listWebhookDeliveries: { + (params?: RestEndpointMethodTypes["orgs"]["listWebhookDeliveries"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + listWebhooks: { + (params?: RestEndpointMethodTypes["orgs"]["listWebhooks"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * This will trigger a [ping event](https://docs.github.com/webhooks/#ping-event) to be sent to the hook. + */ + pingWebhook: { + (params?: RestEndpointMethodTypes["orgs"]["pingWebhook"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Redeliver a delivery for a webhook configured in an organization. + */ + redeliverWebhookDelivery: { + (params?: RestEndpointMethodTypes["orgs"]["redeliverWebhookDelivery"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Removing a user from this list will remove them from all teams and they will no longer have any access to the organization's repositories. + */ + removeMember: { + (params?: RestEndpointMethodTypes["orgs"]["removeMember"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * In order to remove a user's membership with an organization, the authenticated user must be an organization owner. + * + * If the specified user is an active member of the organization, this will remove them from the organization. If the specified user has been invited to the organization, this will cancel their invitation. The specified user will receive an email notification in both cases. + */ + removeMembershipForUser: { + (params?: RestEndpointMethodTypes["orgs"]["removeMembershipForUser"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Removing a user from this list will remove them from all the organization's repositories. + */ + removeOutsideCollaborator: { + (params?: RestEndpointMethodTypes["orgs"]["removeOutsideCollaborator"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + removePublicMembershipForAuthenticatedUser: { + (params?: RestEndpointMethodTypes["orgs"]["removePublicMembershipForAuthenticatedUser"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Only authenticated organization owners can add a member to the organization or update the member's role. + * + * * If the authenticated user is _adding_ a member to the organization, the invited user will receive an email inviting them to the organization. The user's [membership status](https://docs.github.com/rest/reference/orgs#get-organization-membership-for-a-user) will be `pending` until they accept the invitation. + * + * * Authenticated users can _update_ a user's membership by passing the `role` parameter. If the authenticated user changes a member's role to `admin`, the affected user will receive an email notifying them that they've been made an organization owner. If the authenticated user changes an owner's role to `member`, no email will be sent. + * + * **Rate limits** + * + * To prevent abuse, the authenticated user is limited to 50 organization invitations per 24 hour period. If the organization is more than one month old or on a paid plan, the limit is 500 invitations per 24 hour period. + */ + setMembershipForUser: { + (params?: RestEndpointMethodTypes["orgs"]["setMembershipForUser"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * The user can publicize their own membership. (A user cannot publicize the membership for another user.) + * + * Note that you'll need to set `Content-Length` to zero when calling out to this endpoint. For more information, see "[HTTP verbs](https://docs.github.com/rest/overview/resources-in-the-rest-api#http-verbs)." + */ + setPublicMembershipForAuthenticatedUser: { + (params?: RestEndpointMethodTypes["orgs"]["setPublicMembershipForAuthenticatedUser"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + unblockUser: { + (params?: RestEndpointMethodTypes["orgs"]["unblockUser"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * **Parameter Deprecation Notice:** GitHub will replace and discontinue `members_allowed_repository_creation_type` in favor of more granular permissions. The new input parameters are `members_can_create_public_repositories`, `members_can_create_private_repositories` for all organizations and `members_can_create_internal_repositories` for organizations associated with an enterprise account using GitHub Enterprise Cloud or GitHub Enterprise Server 2.20+. For more information, see the [blog post](https://developer.github.com/changes/2019-12-03-internal-visibility-changes). + * + * Enables an authenticated organization owner with the `admin:org` scope to update the organization's profile and member privileges. + */ + update: { + (params?: RestEndpointMethodTypes["orgs"]["update"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + updateMembershipForAuthenticatedUser: { + (params?: RestEndpointMethodTypes["orgs"]["updateMembershipForAuthenticatedUser"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Updates a webhook configured in an organization. When you update a webhook, the `secret` will be overwritten. If you previously had a `secret` set, you must provide the same `secret` or set a new `secret` or the secret will be removed. If you are only updating individual webhook `config` properties, use "[Update a webhook configuration for an organization](/rest/reference/orgs#update-a-webhook-configuration-for-an-organization)." + */ + updateWebhook: { + (params?: RestEndpointMethodTypes["orgs"]["updateWebhook"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Updates the webhook configuration for an organization. To update more information about the webhook, including the `active` state and `events`, use "[Update an organization webhook ](/rest/reference/orgs#update-an-organization-webhook)." + * + * Access tokens must have the `admin:org_hook` scope, and GitHub Apps must have the `organization_hooks:write` permission. + */ + updateWebhookConfigForOrg: { + (params?: RestEndpointMethodTypes["orgs"]["updateWebhookConfigForOrg"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + }; + packages: { + /** + * Deletes a package owned by the authenticated user. You cannot delete a public package if any version of the package has more than 5,000 downloads. In this scenario, contact GitHub support for further assistance. + * + * To use this endpoint, you must authenticate using an access token with the `packages:read` and `packages:delete` scopes. + * If `package_type` is not `container`, your token must also include the `repo` scope. + */ + deletePackageForAuthenticatedUser: { + (params?: RestEndpointMethodTypes["packages"]["deletePackageForAuthenticatedUser"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Deletes an entire package in an organization. You cannot delete a public package if any version of the package has more than 5,000 downloads. In this scenario, contact GitHub support for further assistance. + * + * To use this endpoint, you must have admin permissions in the organization and authenticate using an access token with the `packages:read` and `packages:delete` scopes. In addition: + * - If `package_type` is not `container`, your token must also include the `repo` scope. + * - If `package_type` is `container`, you must also have admin permissions to the container you want to delete. + */ + deletePackageForOrg: { + (params?: RestEndpointMethodTypes["packages"]["deletePackageForOrg"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Deletes an entire package for a user. You cannot delete a public package if any version of the package has more than 5,000 downloads. In this scenario, contact GitHub support for further assistance. + * + * To use this endpoint, you must authenticate using an access token with the `packages:read` and `packages:delete` scopes. In addition: + * - If `package_type` is not `container`, your token must also include the `repo` scope. + * - If `package_type` is `container`, you must also have admin permissions to the container you want to delete. + */ + deletePackageForUser: { + (params?: RestEndpointMethodTypes["packages"]["deletePackageForUser"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Deletes a specific package version for a package owned by the authenticated user. If the package is public and the package version has more than 5,000 downloads, you cannot delete the package version. In this scenario, contact GitHub support for further assistance. + * + * To use this endpoint, you must have admin permissions in the organization and authenticate using an access token with the `packages:read` and `packages:delete` scopes. + * If `package_type` is not `container`, your token must also include the `repo` scope. + */ + deletePackageVersionForAuthenticatedUser: { + (params?: RestEndpointMethodTypes["packages"]["deletePackageVersionForAuthenticatedUser"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Deletes a specific package version in an organization. If the package is public and the package version has more than 5,000 downloads, you cannot delete the package version. In this scenario, contact GitHub support for further assistance. + * + * To use this endpoint, you must have admin permissions in the organization and authenticate using an access token with the `packages:read` and `packages:delete` scopes. In addition: + * - If `package_type` is not `container`, your token must also include the `repo` scope. + * - If `package_type` is `container`, you must also have admin permissions to the container you want to delete. + */ + deletePackageVersionForOrg: { + (params?: RestEndpointMethodTypes["packages"]["deletePackageVersionForOrg"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Deletes a specific package version for a user. If the package is public and the package version has more than 5,000 downloads, you cannot delete the package version. In this scenario, contact GitHub support for further assistance. + * + * To use this endpoint, you must authenticate using an access token with the `packages:read` and `packages:delete` scopes. In addition: + * - If `package_type` is not `container`, your token must also include the `repo` scope. + * - If `package_type` is `container`, you must also have admin permissions to the container you want to delete. + */ + deletePackageVersionForUser: { + (params?: RestEndpointMethodTypes["packages"]["deletePackageVersionForUser"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Returns all package versions for a package owned by an organization. + * + * To use this endpoint, you must authenticate using an access token with the `packages:read` scope. + * If `package_type` is not `container`, your token must also include the `repo` scope. + * @deprecated octokit.rest.packages.getAllPackageVersionsForAPackageOwnedByAnOrg() has been renamed to octokit.rest.packages.getAllPackageVersionsForPackageOwnedByOrg() (2021-03-24) + */ + getAllPackageVersionsForAPackageOwnedByAnOrg: { + (params?: RestEndpointMethodTypes["packages"]["getAllPackageVersionsForAPackageOwnedByAnOrg"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Returns all package versions for a package owned by the authenticated user. + * + * To use this endpoint, you must authenticate using an access token with the `packages:read` scope. + * If `package_type` is not `container`, your token must also include the `repo` scope. + * @deprecated octokit.rest.packages.getAllPackageVersionsForAPackageOwnedByTheAuthenticatedUser() has been renamed to octokit.rest.packages.getAllPackageVersionsForPackageOwnedByAuthenticatedUser() (2021-03-24) + */ + getAllPackageVersionsForAPackageOwnedByTheAuthenticatedUser: { + (params?: RestEndpointMethodTypes["packages"]["getAllPackageVersionsForAPackageOwnedByTheAuthenticatedUser"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Returns all package versions for a package owned by the authenticated user. + * + * To use this endpoint, you must authenticate using an access token with the `packages:read` scope. + * If `package_type` is not `container`, your token must also include the `repo` scope. + */ + getAllPackageVersionsForPackageOwnedByAuthenticatedUser: { + (params?: RestEndpointMethodTypes["packages"]["getAllPackageVersionsForPackageOwnedByAuthenticatedUser"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Returns all package versions for a package owned by an organization. + * + * To use this endpoint, you must authenticate using an access token with the `packages:read` scope. + * If `package_type` is not `container`, your token must also include the `repo` scope. + */ + getAllPackageVersionsForPackageOwnedByOrg: { + (params?: RestEndpointMethodTypes["packages"]["getAllPackageVersionsForPackageOwnedByOrg"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Returns all package versions for a public package owned by a specified user. + * + * To use this endpoint, you must authenticate using an access token with the `packages:read` scope. + * If `package_type` is not `container`, your token must also include the `repo` scope. + */ + getAllPackageVersionsForPackageOwnedByUser: { + (params?: RestEndpointMethodTypes["packages"]["getAllPackageVersionsForPackageOwnedByUser"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Gets a specific package for a package owned by the authenticated user. + * + * To use this endpoint, you must authenticate using an access token with the `packages:read` scope. + * If `package_type` is not `container`, your token must also include the `repo` scope. + */ + getPackageForAuthenticatedUser: { + (params?: RestEndpointMethodTypes["packages"]["getPackageForAuthenticatedUser"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Gets a specific package in an organization. + * + * To use this endpoint, you must authenticate using an access token with the `packages:read` scope. + * If `package_type` is not `container`, your token must also include the `repo` scope. + */ + getPackageForOrganization: { + (params?: RestEndpointMethodTypes["packages"]["getPackageForOrganization"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Gets a specific package metadata for a public package owned by a user. + * + * To use this endpoint, you must authenticate using an access token with the `packages:read` scope. + * If `package_type` is not `container`, your token must also include the `repo` scope. + */ + getPackageForUser: { + (params?: RestEndpointMethodTypes["packages"]["getPackageForUser"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Gets a specific package version for a package owned by the authenticated user. + * + * To use this endpoint, you must authenticate using an access token with the `packages:read` scope. + * If `package_type` is not `container`, your token must also include the `repo` scope. + */ + getPackageVersionForAuthenticatedUser: { + (params?: RestEndpointMethodTypes["packages"]["getPackageVersionForAuthenticatedUser"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Gets a specific package version in an organization. + * + * You must authenticate using an access token with the `packages:read` scope. + * If `package_type` is not `container`, your token must also include the `repo` scope. + */ + getPackageVersionForOrganization: { + (params?: RestEndpointMethodTypes["packages"]["getPackageVersionForOrganization"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Gets a specific package version for a public package owned by a specified user. + * + * At this time, to use this endpoint, you must authenticate using an access token with the `packages:read` scope. + * If `package_type` is not `container`, your token must also include the `repo` scope. + */ + getPackageVersionForUser: { + (params?: RestEndpointMethodTypes["packages"]["getPackageVersionForUser"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Lists packages owned by the authenticated user within the user's namespace. + * + * To use this endpoint, you must authenticate using an access token with the `packages:read` scope. + * If `package_type` is not `container`, your token must also include the `repo` scope. + */ + listPackagesForAuthenticatedUser: { + (params?: RestEndpointMethodTypes["packages"]["listPackagesForAuthenticatedUser"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Lists all packages in an organization readable by the user. + * + * To use this endpoint, you must authenticate using an access token with the `packages:read` scope. + * If `package_type` is not `container`, your token must also include the `repo` scope. + */ + listPackagesForOrganization: { + (params?: RestEndpointMethodTypes["packages"]["listPackagesForOrganization"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Lists all packages in a user's namespace for which the requesting user has access. + * + * To use this endpoint, you must authenticate using an access token with the `packages:read` scope. + * If `package_type` is not `container`, your token must also include the `repo` scope. + */ + listPackagesForUser: { + (params?: RestEndpointMethodTypes["packages"]["listPackagesForUser"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Restores a package owned by the authenticated user. + * + * You can restore a deleted package under the following conditions: + * - The package was deleted within the last 30 days. + * - The same package namespace and version is still available and not reused for a new package. If the same package namespace is not available, you will not be able to restore your package. In this scenario, to restore the deleted package, you must delete the new package that uses the deleted package's namespace first. + * + * To use this endpoint, you must authenticate using an access token with the `packages:read` and `packages:write` scopes. If `package_type` is not `container`, your token must also include the `repo` scope. + */ + restorePackageForAuthenticatedUser: { + (params?: RestEndpointMethodTypes["packages"]["restorePackageForAuthenticatedUser"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Restores an entire package in an organization. + * + * You can restore a deleted package under the following conditions: + * - The package was deleted within the last 30 days. + * - The same package namespace and version is still available and not reused for a new package. If the same package namespace is not available, you will not be able to restore your package. In this scenario, to restore the deleted package, you must delete the new package that uses the deleted package's namespace first. + * + * To use this endpoint, you must have admin permissions in the organization and authenticate using an access token with the `packages:read` and `packages:write` scopes. In addition: + * - If `package_type` is not `container`, your token must also include the `repo` scope. + * - If `package_type` is `container`, you must also have admin permissions to the container that you want to restore. + */ + restorePackageForOrg: { + (params?: RestEndpointMethodTypes["packages"]["restorePackageForOrg"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Restores an entire package for a user. + * + * You can restore a deleted package under the following conditions: + * - The package was deleted within the last 30 days. + * - The same package namespace and version is still available and not reused for a new package. If the same package namespace is not available, you will not be able to restore your package. In this scenario, to restore the deleted package, you must delete the new package that uses the deleted package's namespace first. + * + * To use this endpoint, you must authenticate using an access token with the `packages:read` and `packages:write` scopes. In addition: + * - If `package_type` is not `container`, your token must also include the `repo` scope. + * - If `package_type` is `container`, you must also have admin permissions to the container that you want to restore. + */ + restorePackageForUser: { + (params?: RestEndpointMethodTypes["packages"]["restorePackageForUser"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Restores a package version owned by the authenticated user. + * + * You can restore a deleted package version under the following conditions: + * - The package was deleted within the last 30 days. + * - The same package namespace and version is still available and not reused for a new package. If the same package namespace is not available, you will not be able to restore your package. In this scenario, to restore the deleted package, you must delete the new package that uses the deleted package's namespace first. + * + * To use this endpoint, you must authenticate using an access token with the `packages:read` and `packages:write` scopes. If `package_type` is not `container`, your token must also include the `repo` scope. + */ + restorePackageVersionForAuthenticatedUser: { + (params?: RestEndpointMethodTypes["packages"]["restorePackageVersionForAuthenticatedUser"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Restores a specific package version in an organization. + * + * You can restore a deleted package under the following conditions: + * - The package was deleted within the last 30 days. + * - The same package namespace and version is still available and not reused for a new package. If the same package namespace is not available, you will not be able to restore your package. In this scenario, to restore the deleted package, you must delete the new package that uses the deleted package's namespace first. + * + * To use this endpoint, you must have admin permissions in the organization and authenticate using an access token with the `packages:read` and `packages:write` scopes. In addition: + * - If `package_type` is not `container`, your token must also include the `repo` scope. + * - If `package_type` is `container`, you must also have admin permissions to the container that you want to restore. + */ + restorePackageVersionForOrg: { + (params?: RestEndpointMethodTypes["packages"]["restorePackageVersionForOrg"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Restores a specific package version for a user. + * + * You can restore a deleted package under the following conditions: + * - The package was deleted within the last 30 days. + * - The same package namespace and version is still available and not reused for a new package. If the same package namespace is not available, you will not be able to restore your package. In this scenario, to restore the deleted package, you must delete the new package that uses the deleted package's namespace first. + * + * To use this endpoint, you must authenticate using an access token with the `packages:read` and `packages:write` scopes. In addition: + * - If `package_type` is not `container`, your token must also include the `repo` scope. + * - If `package_type` is `container`, you must also have admin permissions to the container that you want to restore. + */ + restorePackageVersionForUser: { + (params?: RestEndpointMethodTypes["packages"]["restorePackageVersionForUser"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + }; + projects: { + /** + * Adds a collaborator to an organization project and sets their permission level. You must be an organization owner or a project `admin` to add a collaborator. + */ + addCollaborator: { + (params?: RestEndpointMethodTypes["projects"]["addCollaborator"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + createCard: { + (params?: RestEndpointMethodTypes["projects"]["createCard"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + createColumn: { + (params?: RestEndpointMethodTypes["projects"]["createColumn"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + createForAuthenticatedUser: { + (params?: RestEndpointMethodTypes["projects"]["createForAuthenticatedUser"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Creates an organization project board. Returns a `404 Not Found` status if projects are disabled in the organization. If you do not have sufficient privileges to perform this action, a `401 Unauthorized` or `410 Gone` status is returned. + */ + createForOrg: { + (params?: RestEndpointMethodTypes["projects"]["createForOrg"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Creates a repository project board. Returns a `404 Not Found` status if projects are disabled in the repository. If you do not have sufficient privileges to perform this action, a `401 Unauthorized` or `410 Gone` status is returned. + */ + createForRepo: { + (params?: RestEndpointMethodTypes["projects"]["createForRepo"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Deletes a project board. Returns a `404 Not Found` status if projects are disabled. + */ + delete: { + (params?: RestEndpointMethodTypes["projects"]["delete"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + deleteCard: { + (params?: RestEndpointMethodTypes["projects"]["deleteCard"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + deleteColumn: { + (params?: RestEndpointMethodTypes["projects"]["deleteColumn"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Gets a project by its `id`. Returns a `404 Not Found` status if projects are disabled. If you do not have sufficient privileges to perform this action, a `401 Unauthorized` or `410 Gone` status is returned. + */ + get: { + (params?: RestEndpointMethodTypes["projects"]["get"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + getCard: { + (params?: RestEndpointMethodTypes["projects"]["getCard"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + getColumn: { + (params?: RestEndpointMethodTypes["projects"]["getColumn"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Returns the collaborator's permission level for an organization project. Possible values for the `permission` key: `admin`, `write`, `read`, `none`. You must be an organization owner or a project `admin` to review a user's permission level. + */ + getPermissionForUser: { + (params?: RestEndpointMethodTypes["projects"]["getPermissionForUser"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + listCards: { + (params?: RestEndpointMethodTypes["projects"]["listCards"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Lists the collaborators for an organization project. For a project, the list of collaborators includes outside collaborators, organization members that are direct collaborators, organization members with access through team memberships, organization members with access through default organization permissions, and organization owners. You must be an organization owner or a project `admin` to list collaborators. + */ + listCollaborators: { + (params?: RestEndpointMethodTypes["projects"]["listCollaborators"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + listColumns: { + (params?: RestEndpointMethodTypes["projects"]["listColumns"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Lists the projects in an organization. Returns a `404 Not Found` status if projects are disabled in the organization. If you do not have sufficient privileges to perform this action, a `401 Unauthorized` or `410 Gone` status is returned. + */ + listForOrg: { + (params?: RestEndpointMethodTypes["projects"]["listForOrg"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Lists the projects in a repository. Returns a `404 Not Found` status if projects are disabled in the repository. If you do not have sufficient privileges to perform this action, a `401 Unauthorized` or `410 Gone` status is returned. + */ + listForRepo: { + (params?: RestEndpointMethodTypes["projects"]["listForRepo"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + listForUser: { + (params?: RestEndpointMethodTypes["projects"]["listForUser"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + moveCard: { + (params?: RestEndpointMethodTypes["projects"]["moveCard"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + moveColumn: { + (params?: RestEndpointMethodTypes["projects"]["moveColumn"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Removes a collaborator from an organization project. You must be an organization owner or a project `admin` to remove a collaborator. + */ + removeCollaborator: { + (params?: RestEndpointMethodTypes["projects"]["removeCollaborator"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Updates a project board's information. Returns a `404 Not Found` status if projects are disabled. If you do not have sufficient privileges to perform this action, a `401 Unauthorized` or `410 Gone` status is returned. + */ + update: { + (params?: RestEndpointMethodTypes["projects"]["update"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + updateCard: { + (params?: RestEndpointMethodTypes["projects"]["updateCard"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + updateColumn: { + (params?: RestEndpointMethodTypes["projects"]["updateColumn"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + }; + pulls: { + checkIfMerged: { + (params?: RestEndpointMethodTypes["pulls"]["checkIfMerged"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Draft pull requests are available in public repositories with GitHub Free and GitHub Free for organizations, GitHub Pro, and legacy per-repository billing plans, and in public and private repositories with GitHub Team and GitHub Enterprise Cloud. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. + * + * To open or update a pull request in a public repository, you must have write access to the head or the source branch. For organization-owned repositories, you must be a member of the organization that owns the repository to open or update a pull request. + * + * You can create a new pull request. + * + * This endpoint triggers [notifications](https://docs.github.com/en/github/managing-subscriptions-and-notifications-on-github/about-notifications). Creating content too quickly using this endpoint may result in secondary rate limiting. See "[Secondary rate limits](https://docs.github.com/rest/overview/resources-in-the-rest-api#secondary-rate-limits)" and "[Dealing with secondary rate limits](https://docs.github.com/rest/guides/best-practices-for-integrators#dealing-with-rate-limits)" for details. + */ + create: { + (params?: RestEndpointMethodTypes["pulls"]["create"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Creates a reply to a review comment for a pull request. For the `comment_id`, provide the ID of the review comment you are replying to. This must be the ID of a _top-level review comment_, not a reply to that comment. Replies to replies are not supported. + * + * This endpoint triggers [notifications](https://docs.github.com/en/github/managing-subscriptions-and-notifications-on-github/about-notifications). Creating content too quickly using this endpoint may result in secondary rate limiting. See "[Secondary rate limits](https://docs.github.com/rest/overview/resources-in-the-rest-api#secondary-rate-limits)" and "[Dealing with secondary rate limits](https://docs.github.com/rest/guides/best-practices-for-integrators#dealing-with-secondary-rate-limits)" for details. + */ + createReplyForReviewComment: { + (params?: RestEndpointMethodTypes["pulls"]["createReplyForReviewComment"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * This endpoint triggers [notifications](https://docs.github.com/en/github/managing-subscriptions-and-notifications-on-github/about-notifications). Creating content too quickly using this endpoint may result in secondary rate limiting. See "[Secondary rate limits](https://docs.github.com/rest/overview/resources-in-the-rest-api#secondary-rate-limits)" and "[Dealing with secondary rate limits](https://docs.github.com/rest/guides/best-practices-for-integrators#dealing-with-secondary-rate-limits)" for details. + * + * Pull request reviews created in the `PENDING` state do not include the `submitted_at` property in the response. + * + * **Note:** To comment on a specific line in a file, you need to first determine the _position_ of that line in the diff. The GitHub REST API v3 offers the `application/vnd.github.v3.diff` [media type](https://docs.github.com/rest/overview/media-types#commits-commit-comparison-and-pull-requests). To see a pull request diff, add this media type to the `Accept` header of a call to the [single pull request](https://docs.github.com/rest/reference/pulls#get-a-pull-request) endpoint. + * + * The `position` value equals the number of lines down from the first "@@" hunk header in the file you want to add a comment. The line just below the "@@" line is position 1, the next line is position 2, and so on. The position in the diff continues to increase through lines of whitespace and additional hunks until the beginning of a new file. + */ + createReview: { + (params?: RestEndpointMethodTypes["pulls"]["createReview"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Creates a review comment in the pull request diff. To add a regular comment to a pull request timeline, see "[Create an issue comment](https://docs.github.com/rest/reference/issues#create-an-issue-comment)." We recommend creating a review comment using `line`, `side`, and optionally `start_line` and `start_side` if your comment applies to more than one line in the pull request diff. + * + * The `position` parameter is deprecated. If you use `position`, the `line`, `side`, `start_line`, and `start_side` parameters are not required. + * + * **Note:** The position value equals the number of lines down from the first "@@" hunk header in the file you want to add a comment. The line just below the "@@" line is position 1, the next line is position 2, and so on. The position in the diff continues to increase through lines of whitespace and additional hunks until the beginning of a new file. + * + * This endpoint triggers [notifications](https://docs.github.com/en/github/managing-subscriptions-and-notifications-on-github/about-notifications). Creating content too quickly using this endpoint may result in secondary rate limiting. See "[Secondary rate limits](https://docs.github.com/rest/overview/resources-in-the-rest-api#secondary-rate-limits)" and "[Dealing with secondary rate limits](https://docs.github.com/rest/guides/best-practices-for-integrators#dealing-with-secondary-rate-limits)" for details. + */ + createReviewComment: { + (params?: RestEndpointMethodTypes["pulls"]["createReviewComment"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + deletePendingReview: { + (params?: RestEndpointMethodTypes["pulls"]["deletePendingReview"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Deletes a review comment. + */ + deleteReviewComment: { + (params?: RestEndpointMethodTypes["pulls"]["deleteReviewComment"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * **Note:** To dismiss a pull request review on a [protected branch](https://docs.github.com/rest/reference/repos#branches), you must be a repository administrator or be included in the list of people or teams who can dismiss pull request reviews. + */ + dismissReview: { + (params?: RestEndpointMethodTypes["pulls"]["dismissReview"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Draft pull requests are available in public repositories with GitHub Free and GitHub Free for organizations, GitHub Pro, and legacy per-repository billing plans, and in public and private repositories with GitHub Team and GitHub Enterprise Cloud. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. + * + * Lists details of a pull request by providing its number. + * + * When you get, [create](https://docs.github.com/rest/reference/pulls/#create-a-pull-request), or [edit](https://docs.github.com/rest/reference/pulls#update-a-pull-request) a pull request, GitHub creates a merge commit to test whether the pull request can be automatically merged into the base branch. This test commit is not added to the base branch or the head branch. You can review the status of the test commit using the `mergeable` key. For more information, see "[Checking mergeability of pull requests](https://docs.github.com/rest/guides/getting-started-with-the-git-database-api#checking-mergeability-of-pull-requests)". + * + * The value of the `mergeable` attribute can be `true`, `false`, or `null`. If the value is `null`, then GitHub has started a background job to compute the mergeability. After giving the job time to complete, resubmit the request. When the job finishes, you will see a non-`null` value for the `mergeable` attribute in the response. If `mergeable` is `true`, then `merge_commit_sha` will be the SHA of the _test_ merge commit. + * + * The value of the `merge_commit_sha` attribute changes depending on the state of the pull request. Before merging a pull request, the `merge_commit_sha` attribute holds the SHA of the _test_ merge commit. After merging a pull request, the `merge_commit_sha` attribute changes depending on how you merged the pull request: + * + * * If merged as a [merge commit](https://docs.github.com/articles/about-merge-methods-on-github/), `merge_commit_sha` represents the SHA of the merge commit. + * * If merged via a [squash](https://docs.github.com/articles/about-merge-methods-on-github/#squashing-your-merge-commits), `merge_commit_sha` represents the SHA of the squashed commit on the base branch. + * * If [rebased](https://docs.github.com/articles/about-merge-methods-on-github/#rebasing-and-merging-your-commits), `merge_commit_sha` represents the commit that the base branch was updated to. + * + * Pass the appropriate [media type](https://docs.github.com/rest/overview/media-types/#commits-commit-comparison-and-pull-requests) to fetch diff and patch formats. + */ + get: { + (params?: RestEndpointMethodTypes["pulls"]["get"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + getReview: { + (params?: RestEndpointMethodTypes["pulls"]["getReview"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Provides details for a review comment. + */ + getReviewComment: { + (params?: RestEndpointMethodTypes["pulls"]["getReviewComment"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Draft pull requests are available in public repositories with GitHub Free and GitHub Free for organizations, GitHub Pro, and legacy per-repository billing plans, and in public and private repositories with GitHub Team and GitHub Enterprise Cloud. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. + */ + list: { + (params?: RestEndpointMethodTypes["pulls"]["list"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * List comments for a specific pull request review. + */ + listCommentsForReview: { + (params?: RestEndpointMethodTypes["pulls"]["listCommentsForReview"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Lists a maximum of 250 commits for a pull request. To receive a complete commit list for pull requests with more than 250 commits, use the [List commits](https://docs.github.com/rest/reference/repos#list-commits) endpoint. + */ + listCommits: { + (params?: RestEndpointMethodTypes["pulls"]["listCommits"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * **Note:** Responses include a maximum of 3000 files. The paginated response returns 30 files per page by default. + */ + listFiles: { + (params?: RestEndpointMethodTypes["pulls"]["listFiles"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + listRequestedReviewers: { + (params?: RestEndpointMethodTypes["pulls"]["listRequestedReviewers"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Lists all review comments for a pull request. By default, review comments are in ascending order by ID. + */ + listReviewComments: { + (params?: RestEndpointMethodTypes["pulls"]["listReviewComments"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Lists review comments for all pull requests in a repository. By default, review comments are in ascending order by ID. + */ + listReviewCommentsForRepo: { + (params?: RestEndpointMethodTypes["pulls"]["listReviewCommentsForRepo"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * The list of reviews returns in chronological order. + */ + listReviews: { + (params?: RestEndpointMethodTypes["pulls"]["listReviews"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * This endpoint triggers [notifications](https://docs.github.com/github/managing-subscriptions-and-notifications-on-github/about-notifications). Creating content too quickly using this endpoint may result in secondary rate limiting. See "[Secondary rate limits](https://docs.github.com/rest/overview/resources-in-the-rest-api#secondary-rate-limits)" and "[Dealing with secondary rate limits](https://docs.github.com/rest/guides/best-practices-for-integrators#dealing-with-secondary-rate-limits)" for details. + */ + merge: { + (params?: RestEndpointMethodTypes["pulls"]["merge"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + removeRequestedReviewers: { + (params?: RestEndpointMethodTypes["pulls"]["removeRequestedReviewers"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * This endpoint triggers [notifications](https://docs.github.com/github/managing-subscriptions-and-notifications-on-github/about-notifications). Creating content too quickly using this endpoint may result in secondary rate limiting. See "[Secondary rate limits](https://docs.github.com/rest/overview/resources-in-the-rest-api#secondary-rate-limits)" and "[Dealing with secondary rate limits](https://docs.github.com/rest/guides/best-practices-for-integrators#dealing-with-secondary-rate-limits)" for details. + */ + requestReviewers: { + (params?: RestEndpointMethodTypes["pulls"]["requestReviewers"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + submitReview: { + (params?: RestEndpointMethodTypes["pulls"]["submitReview"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Draft pull requests are available in public repositories with GitHub Free and GitHub Free for organizations, GitHub Pro, and legacy per-repository billing plans, and in public and private repositories with GitHub Team and GitHub Enterprise Cloud. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. + * + * To open or update a pull request in a public repository, you must have write access to the head or the source branch. For organization-owned repositories, you must be a member of the organization that owns the repository to open or update a pull request. + */ + update: { + (params?: RestEndpointMethodTypes["pulls"]["update"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Updates the pull request branch with the latest upstream changes by merging HEAD from the base branch into the pull request branch. + */ + updateBranch: { + (params?: RestEndpointMethodTypes["pulls"]["updateBranch"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Update the review summary comment with new text. + */ + updateReview: { + (params?: RestEndpointMethodTypes["pulls"]["updateReview"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Enables you to edit a review comment. + */ + updateReviewComment: { + (params?: RestEndpointMethodTypes["pulls"]["updateReviewComment"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + }; + rateLimit: { + /** + * **Note:** Accessing this endpoint does not count against your REST API rate limit. + * + * **Note:** The `rate` object is deprecated. If you're writing new API client code or updating existing code, you should use the `core` object instead of the `rate` object. The `core` object contains the same information that is present in the `rate` object. + */ + get: { + (params?: RestEndpointMethodTypes["rateLimit"]["get"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + }; + reactions: { + /** + * Create a reaction to a [commit comment](https://docs.github.com/rest/reference/repos#comments). A response with an HTTP `200` status means that you already added the reaction type to this commit comment. + */ + createForCommitComment: { + (params?: RestEndpointMethodTypes["reactions"]["createForCommitComment"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Create a reaction to an [issue](https://docs.github.com/rest/reference/issues/). A response with an HTTP `200` status means that you already added the reaction type to this issue. + */ + createForIssue: { + (params?: RestEndpointMethodTypes["reactions"]["createForIssue"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Create a reaction to an [issue comment](https://docs.github.com/rest/reference/issues#comments). A response with an HTTP `200` status means that you already added the reaction type to this issue comment. + */ + createForIssueComment: { + (params?: RestEndpointMethodTypes["reactions"]["createForIssueComment"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Create a reaction to a [pull request review comment](https://docs.github.com/rest/reference/pulls#comments). A response with an HTTP `200` status means that you already added the reaction type to this pull request review comment. + */ + createForPullRequestReviewComment: { + (params?: RestEndpointMethodTypes["reactions"]["createForPullRequestReviewComment"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Create a reaction to a [release](https://docs.github.com/rest/reference/repos#releases). A response with a `Status: 200 OK` means that you already added the reaction type to this release. + */ + createForRelease: { + (params?: RestEndpointMethodTypes["reactions"]["createForRelease"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Create a reaction to a [team discussion comment](https://docs.github.com/rest/reference/teams#discussion-comments). OAuth access tokens require the `write:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). A response with an HTTP `200` status means that you already added the reaction type to this team discussion comment. + * + * **Note:** You can also specify a team by `org_id` and `team_id` using the route `POST /organizations/:org_id/team/:team_id/discussions/:discussion_number/comments/:comment_number/reactions`. + */ + createForTeamDiscussionCommentInOrg: { + (params?: RestEndpointMethodTypes["reactions"]["createForTeamDiscussionCommentInOrg"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Create a reaction to a [team discussion](https://docs.github.com/rest/reference/teams#discussions). OAuth access tokens require the `write:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). A response with an HTTP `200` status means that you already added the reaction type to this team discussion. + * + * **Note:** You can also specify a team by `org_id` and `team_id` using the route `POST /organizations/:org_id/team/:team_id/discussions/:discussion_number/reactions`. + */ + createForTeamDiscussionInOrg: { + (params?: RestEndpointMethodTypes["reactions"]["createForTeamDiscussionInOrg"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * **Note:** You can also specify a repository by `repository_id` using the route `DELETE /repositories/:repository_id/comments/:comment_id/reactions/:reaction_id`. + * + * Delete a reaction to a [commit comment](https://docs.github.com/rest/reference/repos#comments). + */ + deleteForCommitComment: { + (params?: RestEndpointMethodTypes["reactions"]["deleteForCommitComment"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * **Note:** You can also specify a repository by `repository_id` using the route `DELETE /repositories/:repository_id/issues/:issue_number/reactions/:reaction_id`. + * + * Delete a reaction to an [issue](https://docs.github.com/rest/reference/issues/). + */ + deleteForIssue: { + (params?: RestEndpointMethodTypes["reactions"]["deleteForIssue"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * **Note:** You can also specify a repository by `repository_id` using the route `DELETE delete /repositories/:repository_id/issues/comments/:comment_id/reactions/:reaction_id`. + * + * Delete a reaction to an [issue comment](https://docs.github.com/rest/reference/issues#comments). + */ + deleteForIssueComment: { + (params?: RestEndpointMethodTypes["reactions"]["deleteForIssueComment"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * **Note:** You can also specify a repository by `repository_id` using the route `DELETE /repositories/:repository_id/pulls/comments/:comment_id/reactions/:reaction_id.` + * + * Delete a reaction to a [pull request review comment](https://docs.github.com/rest/reference/pulls#review-comments). + */ + deleteForPullRequestComment: { + (params?: RestEndpointMethodTypes["reactions"]["deleteForPullRequestComment"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * **Note:** You can also specify a repository by `repository_id` using the route `DELETE delete /repositories/:repository_id/releases/:release_id/reactions/:reaction_id`. + * + * Delete a reaction to a [release](https://docs.github.com/rest/reference/repos#releases). + */ + deleteForRelease: { + (params?: RestEndpointMethodTypes["reactions"]["deleteForRelease"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * **Note:** You can also specify a team or organization with `team_id` and `org_id` using the route `DELETE /organizations/:org_id/team/:team_id/discussions/:discussion_number/reactions/:reaction_id`. + * + * Delete a reaction to a [team discussion](https://docs.github.com/rest/reference/teams#discussions). OAuth access tokens require the `write:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). + */ + deleteForTeamDiscussion: { + (params?: RestEndpointMethodTypes["reactions"]["deleteForTeamDiscussion"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * **Note:** You can also specify a team or organization with `team_id` and `org_id` using the route `DELETE /organizations/:org_id/team/:team_id/discussions/:discussion_number/comments/:comment_number/reactions/:reaction_id`. + * + * Delete a reaction to a [team discussion comment](https://docs.github.com/rest/reference/teams#discussion-comments). OAuth access tokens require the `write:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). + */ + deleteForTeamDiscussionComment: { + (params?: RestEndpointMethodTypes["reactions"]["deleteForTeamDiscussionComment"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * List the reactions to a [commit comment](https://docs.github.com/rest/reference/repos#comments). + */ + listForCommitComment: { + (params?: RestEndpointMethodTypes["reactions"]["listForCommitComment"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * List the reactions to an [issue](https://docs.github.com/rest/reference/issues). + */ + listForIssue: { + (params?: RestEndpointMethodTypes["reactions"]["listForIssue"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * List the reactions to an [issue comment](https://docs.github.com/rest/reference/issues#comments). + */ + listForIssueComment: { + (params?: RestEndpointMethodTypes["reactions"]["listForIssueComment"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * List the reactions to a [pull request review comment](https://docs.github.com/rest/reference/pulls#review-comments). + */ + listForPullRequestReviewComment: { + (params?: RestEndpointMethodTypes["reactions"]["listForPullRequestReviewComment"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * List the reactions to a [release](https://docs.github.com/rest/reference/repos#releases). + */ + listForRelease: { + (params?: RestEndpointMethodTypes["reactions"]["listForRelease"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * List the reactions to a [team discussion comment](https://docs.github.com/rest/reference/teams#discussion-comments/). OAuth access tokens require the `read:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). + * + * **Note:** You can also specify a team by `org_id` and `team_id` using the route `GET /organizations/:org_id/team/:team_id/discussions/:discussion_number/comments/:comment_number/reactions`. + */ + listForTeamDiscussionCommentInOrg: { + (params?: RestEndpointMethodTypes["reactions"]["listForTeamDiscussionCommentInOrg"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * List the reactions to a [team discussion](https://docs.github.com/rest/reference/teams#discussions). OAuth access tokens require the `read:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). + * + * **Note:** You can also specify a team by `org_id` and `team_id` using the route `GET /organizations/:org_id/team/:team_id/discussions/:discussion_number/reactions`. + */ + listForTeamDiscussionInOrg: { + (params?: RestEndpointMethodTypes["reactions"]["listForTeamDiscussionInOrg"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + }; + repos: { + /** + * @deprecated octokit.rest.repos.acceptInvitation() has been renamed to octokit.rest.repos.acceptInvitationForAuthenticatedUser() (2021-10-05) + */ + acceptInvitation: { + (params?: RestEndpointMethodTypes["repos"]["acceptInvitation"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + acceptInvitationForAuthenticatedUser: { + (params?: RestEndpointMethodTypes["repos"]["acceptInvitationForAuthenticatedUser"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. + * + * Grants the specified apps push access for this branch. Only installed GitHub Apps with `write` access to the `contents` permission can be added as authorized actors on a protected branch. + * + * | Type | Description | + * | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | + * | `array` | The GitHub Apps that have push access to this branch. Use the app's `slug`. **Note**: The list of users, apps, and teams in total is limited to 100 items. | + */ + addAppAccessRestrictions: { + (params?: RestEndpointMethodTypes["repos"]["addAppAccessRestrictions"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * This endpoint triggers [notifications](https://docs.github.com/github/managing-subscriptions-and-notifications-on-github/about-notifications). Creating content too quickly using this endpoint may result in secondary rate limiting. See "[Secondary rate limits](https://docs.github.com/rest/overview/resources-in-the-rest-api#secondary-rate-limits)" and "[Dealing with secondary rate limits](https://docs.github.com/rest/guides/best-practices-for-integrators#dealing-with-secondary-rate-limits)" for details. + * + * Adding an outside collaborator may be restricted by enterprise administrators. For more information, see "[Enforcing repository management policies in your enterprise](https://docs.github.com/enterprise-cloud@latest/admin/policies/enforcing-policies-for-your-enterprise/enforcing-repository-management-policies-in-your-enterprise#enforcing-a-policy-for-inviting-outside-collaborators-to-repositories)." + * + * For more information on permission levels, see "[Repository permission levels for an organization](https://docs.github.com/github/setting-up-and-managing-organizations-and-teams/repository-permission-levels-for-an-organization#permission-levels-for-repositories-owned-by-an-organization)". There are restrictions on which permissions can be granted to organization members when an organization base role is in place. In this case, the permission being given must be equal to or higher than the org base permission. Otherwise, the request will fail with: + * + * ``` + * Cannot assign {member} permission of {role name} + * ``` + * + * Note that, if you choose not to pass any parameters, you'll need to set `Content-Length` to zero when calling out to this endpoint. For more information, see "[HTTP verbs](https://docs.github.com/rest/overview/resources-in-the-rest-api#http-verbs)." + * + * The invitee will receive a notification that they have been invited to the repository, which they must accept or decline. They may do this via the notifications page, the email they receive, or by using the [repository invitations API endpoints](https://docs.github.com/rest/reference/repos#invitations). + * + * **Updating an existing collaborator's permission level** + * + * The endpoint can also be used to change the permissions of an existing collaborator without first removing and re-adding the collaborator. To change the permissions, use the same endpoint and pass a different `permission` parameter. The response will be a `204`, with no other indication that the permission level changed. + * + * **Rate limits** + * + * You are limited to sending 50 invitations to a repository per 24 hour period. Note there is no limit if you are inviting organization members to an organization repository. + */ + addCollaborator: { + (params?: RestEndpointMethodTypes["repos"]["addCollaborator"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. + */ + addStatusCheckContexts: { + (params?: RestEndpointMethodTypes["repos"]["addStatusCheckContexts"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. + * + * Grants the specified teams push access for this branch. You can also give push access to child teams. + * + * | Type | Description | + * | ------- | ------------------------------------------------------------------------------------------------------------------------------------------ | + * | `array` | The teams that can have push access. Use the team's `slug`. **Note**: The list of users, apps, and teams in total is limited to 100 items. | + */ + addTeamAccessRestrictions: { + (params?: RestEndpointMethodTypes["repos"]["addTeamAccessRestrictions"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. + * + * Grants the specified people push access for this branch. + * + * | Type | Description | + * | ------- | ----------------------------------------------------------------------------------------------------------------------------- | + * | `array` | Usernames for people who can have push access. **Note**: The list of users, apps, and teams in total is limited to 100 items. | + */ + addUserAccessRestrictions: { + (params?: RestEndpointMethodTypes["repos"]["addUserAccessRestrictions"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * For organization-owned repositories, the list of collaborators includes outside collaborators, organization members that are direct collaborators, organization members with access through team memberships, organization members with access through default organization permissions, and organization owners. + * + * Team members will include the members of child teams. + * + * You must authenticate using an access token with the `read:org` and `repo` scopes with push access to use this + * endpoint. GitHub Apps must have the `members` organization permission and `metadata` repository permission to use this + * endpoint. + */ + checkCollaborator: { + (params?: RestEndpointMethodTypes["repos"]["checkCollaborator"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Shows whether dependency alerts are enabled or disabled for a repository. The authenticated user must have admin read access to the repository. For more information, see "[About security alerts for vulnerable dependencies](https://docs.github.com/en/articles/about-security-alerts-for-vulnerable-dependencies)". + */ + checkVulnerabilityAlerts: { + (params?: RestEndpointMethodTypes["repos"]["checkVulnerabilityAlerts"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * List any syntax errors that are detected in the CODEOWNERS + * file. + * + * For more information about the correct CODEOWNERS syntax, + * see "[About code owners](https://docs.github.com/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/about-code-owners)." + */ + codeownersErrors: { + (params?: RestEndpointMethodTypes["repos"]["codeownersErrors"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * **Deprecated**: Use `repos.compareCommitsWithBasehead()` (`GET /repos/{owner}/{repo}/compare/{basehead}`) instead. Both `:base` and `:head` must be branch names in `:repo`. To compare branches across other repositories in the same network as `:repo`, use the format `:branch`. + * + * The response from the API is equivalent to running the `git log base..head` command; however, commits are returned in chronological order. Pass the appropriate [media type](https://docs.github.com/rest/overview/media-types/#commits-commit-comparison-and-pull-requests) to fetch diff and patch formats. + * + * The response also includes details on the files that were changed between the two commits. This includes the status of the change (for example, if a file was added, removed, modified, or renamed), and details of the change itself. For example, files with a `renamed` status have a `previous_filename` field showing the previous filename of the file, and files with a `modified` status have a `patch` field showing the changes made to the file. + * + * **Working with large comparisons** + * + * To process a response with a large number of commits, you can use (`per_page` or `page`) to paginate the results. When using paging, the list of changed files is only returned with page 1, but includes all changed files for the entire comparison. For more information on working with pagination, see "[Traversing with pagination](/rest/guides/traversing-with-pagination)." + * + * When calling this API without any paging parameters (`per_page` or `page`), the returned list is limited to 250 commits and the last commit in the list is the most recent of the entire comparison. When a paging parameter is specified, the first commit in the returned list of each page is the earliest. + * + * **Signature verification object** + * + * The response will include a `verification` object that describes the result of verifying the commit's signature. The following fields are included in the `verification` object: + * + * | Name | Type | Description | + * | ---- | ---- | ----------- | + * | `verified` | `boolean` | Indicates whether GitHub considers the signature in this commit to be verified. | + * | `reason` | `string` | The reason for verified value. Possible values and their meanings are enumerated in table below. | + * | `signature` | `string` | The signature that was extracted from the commit. | + * | `payload` | `string` | The value that was signed. | + * + * These are the possible values for `reason` in the `verification` object: + * + * | Value | Description | + * | ----- | ----------- | + * | `expired_key` | The key that made the signature is expired. | + * | `not_signing_key` | The "signing" flag is not among the usage flags in the GPG key that made the signature. | + * | `gpgverify_error` | There was an error communicating with the signature verification service. | + * | `gpgverify_unavailable` | The signature verification service is currently unavailable. | + * | `unsigned` | The object does not include a signature. | + * | `unknown_signature_type` | A non-PGP signature was found in the commit. | + * | `no_user` | No user was associated with the `committer` email address in the commit. | + * | `unverified_email` | The `committer` email address in the commit was associated with a user, but the email address is not verified on her/his account. | + * | `bad_email` | The `committer` email address in the commit is not included in the identities of the PGP key that made the signature. | + * | `unknown_key` | The key that made the signature has not been registered with any user's account. | + * | `malformed_signature` | There was an error parsing the signature. | + * | `invalid` | The signature could not be cryptographically verified using the key whose key-id was found in the signature. | + * | `valid` | None of the above errors applied, so the signature is considered to be verified. | + */ + compareCommits: { + (params?: RestEndpointMethodTypes["repos"]["compareCommits"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * The `basehead` param is comprised of two parts: `base` and `head`. Both must be branch names in `repo`. To compare branches across other repositories in the same network as `repo`, use the format `:branch`. + * + * The response from the API is equivalent to running the `git log base..head` command; however, commits are returned in chronological order. Pass the appropriate [media type](https://docs.github.com/rest/overview/media-types/#commits-commit-comparison-and-pull-requests) to fetch diff and patch formats. + * + * The response also includes details on the files that were changed between the two commits. This includes the status of the change (for example, if a file was added, removed, modified, or renamed), and details of the change itself. For example, files with a `renamed` status have a `previous_filename` field showing the previous filename of the file, and files with a `modified` status have a `patch` field showing the changes made to the file. + * + * **Working with large comparisons** + * + * To process a response with a large number of commits, you can use (`per_page` or `page`) to paginate the results. When using paging, the list of changed files is only returned with page 1, but includes all changed files for the entire comparison. For more information on working with pagination, see "[Traversing with pagination](/rest/guides/traversing-with-pagination)." + * + * When calling this API without any paging parameters (`per_page` or `page`), the returned list is limited to 250 commits and the last commit in the list is the most recent of the entire comparison. When a paging parameter is specified, the first commit in the returned list of each page is the earliest. + * + * **Signature verification object** + * + * The response will include a `verification` object that describes the result of verifying the commit's signature. The following fields are included in the `verification` object: + * + * | Name | Type | Description | + * | ---- | ---- | ----------- | + * | `verified` | `boolean` | Indicates whether GitHub considers the signature in this commit to be verified. | + * | `reason` | `string` | The reason for verified value. Possible values and their meanings are enumerated in table below. | + * | `signature` | `string` | The signature that was extracted from the commit. | + * | `payload` | `string` | The value that was signed. | + * + * These are the possible values for `reason` in the `verification` object: + * + * | Value | Description | + * | ----- | ----------- | + * | `expired_key` | The key that made the signature is expired. | + * | `not_signing_key` | The "signing" flag is not among the usage flags in the GPG key that made the signature. | + * | `gpgverify_error` | There was an error communicating with the signature verification service. | + * | `gpgverify_unavailable` | The signature verification service is currently unavailable. | + * | `unsigned` | The object does not include a signature. | + * | `unknown_signature_type` | A non-PGP signature was found in the commit. | + * | `no_user` | No user was associated with the `committer` email address in the commit. | + * | `unverified_email` | The `committer` email address in the commit was associated with a user, but the email address is not verified on her/his account. | + * | `bad_email` | The `committer` email address in the commit is not included in the identities of the PGP key that made the signature. | + * | `unknown_key` | The key that made the signature has not been registered with any user's account. | + * | `malformed_signature` | There was an error parsing the signature. | + * | `invalid` | The signature could not be cryptographically verified using the key whose key-id was found in the signature. | + * | `valid` | None of the above errors applied, so the signature is considered to be verified. | + */ + compareCommitsWithBasehead: { + (params?: RestEndpointMethodTypes["repos"]["compareCommitsWithBasehead"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Users with admin access to the repository can create an autolink. + */ + createAutolink: { + (params?: RestEndpointMethodTypes["repos"]["createAutolink"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Create a comment for a commit using its `:commit_sha`. + * + * This endpoint triggers [notifications](https://docs.github.com/en/github/managing-subscriptions-and-notifications-on-github/about-notifications). Creating content too quickly using this endpoint may result in secondary rate limiting. See "[Secondary rate limits](https://docs.github.com/rest/overview/resources-in-the-rest-api#secondary-rate-limits)" and "[Dealing with secondary rate limits](https://docs.github.com/rest/guides/best-practices-for-integrators#dealing-with-secondary-rate-limits)" for details. + */ + createCommitComment: { + (params?: RestEndpointMethodTypes["repos"]["createCommitComment"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. + * + * When authenticated with admin or owner permissions to the repository, you can use this endpoint to require signed commits on a branch. You must enable branch protection to require signed commits. + */ + createCommitSignatureProtection: { + (params?: RestEndpointMethodTypes["repos"]["createCommitSignatureProtection"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Users with push access in a repository can create commit statuses for a given SHA. + * + * Note: there is a limit of 1000 statuses per `sha` and `context` within a repository. Attempts to create more than 1000 statuses will result in a validation error. + */ + createCommitStatus: { + (params?: RestEndpointMethodTypes["repos"]["createCommitStatus"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * You can create a read-only deploy key. + */ + createDeployKey: { + (params?: RestEndpointMethodTypes["repos"]["createDeployKey"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Deployments offer a few configurable parameters with certain defaults. + * + * The `ref` parameter can be any named branch, tag, or SHA. At GitHub we often deploy branches and verify them + * before we merge a pull request. + * + * The `environment` parameter allows deployments to be issued to different runtime environments. Teams often have + * multiple environments for verifying their applications, such as `production`, `staging`, and `qa`. This parameter + * makes it easier to track which environments have requested deployments. The default environment is `production`. + * + * The `auto_merge` parameter is used to ensure that the requested ref is not behind the repository's default branch. If + * the ref _is_ behind the default branch for the repository, we will attempt to merge it for you. If the merge succeeds, + * the API will return a successful merge commit. If merge conflicts prevent the merge from succeeding, the API will + * return a failure response. + * + * By default, [commit statuses](https://docs.github.com/rest/commits/statuses) for every submitted context must be in a `success` + * state. The `required_contexts` parameter allows you to specify a subset of contexts that must be `success`, or to + * specify contexts that have not yet been submitted. You are not required to use commit statuses to deploy. If you do + * not require any contexts or create any commit statuses, the deployment will always succeed. + * + * The `payload` parameter is available for any extra information that a deployment system might need. It is a JSON text + * field that will be passed on when a deployment event is dispatched. + * + * The `task` parameter is used by the deployment system to allow different execution paths. In the web world this might + * be `deploy:migrations` to run schema changes on the system. In the compiled world this could be a flag to compile an + * application with debugging enabled. + * + * Users with `repo` or `repo_deployment` scopes can create a deployment for a given ref. + * + * #### Merged branch response + * You will see this response when GitHub automatically merges the base branch into the topic branch instead of creating + * a deployment. This auto-merge happens when: + * * Auto-merge option is enabled in the repository + * * Topic branch does not include the latest changes on the base branch, which is `master` in the response example + * * There are no merge conflicts + * + * If there are no new commits in the base branch, a new request to create a deployment should give a successful + * response. + * + * #### Merge conflict response + * This error happens when the `auto_merge` option is enabled and when the default branch (in this case `master`), can't + * be merged into the branch that's being deployed (in this case `topic-branch`), due to merge conflicts. + * + * #### Failed commit status checks + * This error happens when the `required_contexts` parameter indicates that one or more contexts need to have a `success` + * status for the commit to be deployed, but one or more of the required contexts do not have a state of `success`. + */ + createDeployment: { + (params?: RestEndpointMethodTypes["repos"]["createDeployment"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Users with `push` access can create deployment statuses for a given deployment. + * + * GitHub Apps require `read & write` access to "Deployments" and `read-only` access to "Repo contents" (for private repos). OAuth Apps require the `repo_deployment` scope. + */ + createDeploymentStatus: { + (params?: RestEndpointMethodTypes["repos"]["createDeploymentStatus"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * You can use this endpoint to trigger a webhook event called `repository_dispatch` when you want activity that happens outside of GitHub to trigger a GitHub Actions workflow or GitHub App webhook. You must configure your GitHub Actions workflow or GitHub App to run when the `repository_dispatch` event occurs. For an example `repository_dispatch` webhook payload, see "[RepositoryDispatchEvent](https://docs.github.com/webhooks/event-payloads/#repository_dispatch)." + * + * The `client_payload` parameter is available for any extra information that your workflow might need. This parameter is a JSON payload that will be passed on when the webhook event is dispatched. For example, the `client_payload` can include a message that a user would like to send using a GitHub Actions workflow. Or the `client_payload` can be used as a test to debug your workflow. + * + * This endpoint requires write access to the repository by providing either: + * + * - Personal access tokens with `repo` scope. For more information, see "[Creating a personal access token for the command line](https://docs.github.com/articles/creating-a-personal-access-token-for-the-command-line)" in the GitHub Help documentation. + * - GitHub Apps with both `metadata:read` and `contents:read&write` permissions. + * + * This input example shows how you can use the `client_payload` as a test to debug your workflow. + */ + createDispatchEvent: { + (params?: RestEndpointMethodTypes["repos"]["createDispatchEvent"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Creates a new repository for the authenticated user. + * + * **OAuth scope requirements** + * + * When using [OAuth](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/), authorizations must include: + * + * * `public_repo` scope or `repo` scope to create a public repository. Note: For GitHub AE, use `repo` scope to create an internal repository. + * * `repo` scope to create a private repository. + */ + createForAuthenticatedUser: { + (params?: RestEndpointMethodTypes["repos"]["createForAuthenticatedUser"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Create a fork for the authenticated user. + * + * **Note**: Forking a Repository happens asynchronously. You may have to wait a short period of time before you can access the git objects. If this takes longer than 5 minutes, be sure to contact [GitHub Support](https://support.github.com/contact?tags=dotcom-rest-api). + */ + createFork: { + (params?: RestEndpointMethodTypes["repos"]["createFork"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Creates a new repository in the specified organization. The authenticated user must be a member of the organization. + * + * **OAuth scope requirements** + * + * When using [OAuth](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/), authorizations must include: + * + * * `public_repo` scope or `repo` scope to create a public repository. Note: For GitHub AE, use `repo` scope to create an internal repository. + * * `repo` scope to create a private repository + */ + createInOrg: { + (params?: RestEndpointMethodTypes["repos"]["createInOrg"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Create or update an environment with protection rules, such as required reviewers. For more information about environment protection rules, see "[Environments](/actions/reference/environments#environment-protection-rules)." + * + * **Note:** Although you can use this operation to specify that only branches that match specified name patterns can deploy to this environment, you must use the UI to set the name patterns. For more information, see "[Environments](/actions/reference/environments#deployment-branches)." + * + * **Note:** To create or update secrets for an environment, see "[Secrets](/rest/reference/actions#secrets)." + * + * You must authenticate using an access token with the repo scope to use this endpoint. + */ + createOrUpdateEnvironment: { + (params?: RestEndpointMethodTypes["repos"]["createOrUpdateEnvironment"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Creates a new file or replaces an existing file in a repository. + */ + createOrUpdateFileContents: { + (params?: RestEndpointMethodTypes["repos"]["createOrUpdateFileContents"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Configures a GitHub Pages site. For more information, see "[About GitHub Pages](/github/working-with-github-pages/about-github-pages)." + */ + createPagesSite: { + (params?: RestEndpointMethodTypes["repos"]["createPagesSite"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Users with push access to the repository can create a release. + * + * This endpoint triggers [notifications](https://docs.github.com/en/github/managing-subscriptions-and-notifications-on-github/about-notifications). Creating content too quickly using this endpoint may result in secondary rate limiting. See "[Secondary rate limits](https://docs.github.com/rest/overview/resources-in-the-rest-api#secondary-rate-limits)" and "[Dealing with secondary rate limits](https://docs.github.com/rest/guides/best-practices-for-integrators#dealing-with-secondary-rate-limits)" for details. + */ + createRelease: { + (params?: RestEndpointMethodTypes["repos"]["createRelease"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * This creates a tag protection state for a repository. + * This endpoint is only available to repository administrators. + */ + createTagProtection: { + (params?: RestEndpointMethodTypes["repos"]["createTagProtection"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Creates a new repository using a repository template. Use the `template_owner` and `template_repo` route parameters to specify the repository to use as the template. The authenticated user must own or be a member of an organization that owns the repository. To check if a repository is available to use as a template, get the repository's information using the [Get a repository](https://docs.github.com/rest/reference/repos#get-a-repository) endpoint and check that the `is_template` key is `true`. + * + * **OAuth scope requirements** + * + * When using [OAuth](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/), authorizations must include: + * + * * `public_repo` scope or `repo` scope to create a public repository. Note: For GitHub AE, use `repo` scope to create an internal repository. + * * `repo` scope to create a private repository + */ + createUsingTemplate: { + (params?: RestEndpointMethodTypes["repos"]["createUsingTemplate"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Repositories can have multiple webhooks installed. Each webhook should have a unique `config`. Multiple webhooks can + * share the same `config` as long as those webhooks do not have any `events` that overlap. + */ + createWebhook: { + (params?: RestEndpointMethodTypes["repos"]["createWebhook"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * @deprecated octokit.rest.repos.declineInvitation() has been renamed to octokit.rest.repos.declineInvitationForAuthenticatedUser() (2021-10-05) + */ + declineInvitation: { + (params?: RestEndpointMethodTypes["repos"]["declineInvitation"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + declineInvitationForAuthenticatedUser: { + (params?: RestEndpointMethodTypes["repos"]["declineInvitationForAuthenticatedUser"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Deleting a repository requires admin access. If OAuth is used, the `delete_repo` scope is required. + * + * If an organization owner has configured the organization to prevent members from deleting organization-owned + * repositories, you will get a `403 Forbidden` response. + */ + delete: { + (params?: RestEndpointMethodTypes["repos"]["delete"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. + * + * Disables the ability to restrict who can push to this branch. + */ + deleteAccessRestrictions: { + (params?: RestEndpointMethodTypes["repos"]["deleteAccessRestrictions"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. + * + * Removing admin enforcement requires admin or owner permissions to the repository and branch protection to be enabled. + */ + deleteAdminBranchProtection: { + (params?: RestEndpointMethodTypes["repos"]["deleteAdminBranchProtection"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * You must authenticate using an access token with the repo scope to use this endpoint. + */ + deleteAnEnvironment: { + (params?: RestEndpointMethodTypes["repos"]["deleteAnEnvironment"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * This deletes a single autolink reference by ID that was configured for the given repository. + * + * Information about autolinks are only available to repository administrators. + */ + deleteAutolink: { + (params?: RestEndpointMethodTypes["repos"]["deleteAutolink"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. + */ + deleteBranchProtection: { + (params?: RestEndpointMethodTypes["repos"]["deleteBranchProtection"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + deleteCommitComment: { + (params?: RestEndpointMethodTypes["repos"]["deleteCommitComment"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. + * + * When authenticated with admin or owner permissions to the repository, you can use this endpoint to disable required signed commits on a branch. You must enable branch protection to require signed commits. + */ + deleteCommitSignatureProtection: { + (params?: RestEndpointMethodTypes["repos"]["deleteCommitSignatureProtection"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Deploy keys are immutable. If you need to update a key, remove the key and create a new one instead. + */ + deleteDeployKey: { + (params?: RestEndpointMethodTypes["repos"]["deleteDeployKey"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * If the repository only has one deployment, you can delete the deployment regardless of its status. If the repository has more than one deployment, you can only delete inactive deployments. This ensures that repositories with multiple deployments will always have an active deployment. Anyone with `repo` or `repo_deployment` scopes can delete a deployment. + * + * To set a deployment as inactive, you must: + * + * * Create a new deployment that is active so that the system has a record of the current state, then delete the previously active deployment. + * * Mark the active deployment as inactive by adding any non-successful deployment status. + * + * For more information, see "[Create a deployment](https://docs.github.com/rest/reference/repos/#create-a-deployment)" and "[Create a deployment status](https://docs.github.com/rest/reference/repos#create-a-deployment-status)." + */ + deleteDeployment: { + (params?: RestEndpointMethodTypes["repos"]["deleteDeployment"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Deletes a file in a repository. + * + * You can provide an additional `committer` parameter, which is an object containing information about the committer. Or, you can provide an `author` parameter, which is an object containing information about the author. + * + * The `author` section is optional and is filled in with the `committer` information if omitted. If the `committer` information is omitted, the authenticated user's information is used. + * + * You must provide values for both `name` and `email`, whether you choose to use `author` or `committer`. Otherwise, you'll receive a `422` status code. + */ + deleteFile: { + (params?: RestEndpointMethodTypes["repos"]["deleteFile"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + deleteInvitation: { + (params?: RestEndpointMethodTypes["repos"]["deleteInvitation"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + deletePagesSite: { + (params?: RestEndpointMethodTypes["repos"]["deletePagesSite"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. + */ + deletePullRequestReviewProtection: { + (params?: RestEndpointMethodTypes["repos"]["deletePullRequestReviewProtection"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Users with push access to the repository can delete a release. + */ + deleteRelease: { + (params?: RestEndpointMethodTypes["repos"]["deleteRelease"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + deleteReleaseAsset: { + (params?: RestEndpointMethodTypes["repos"]["deleteReleaseAsset"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * This deletes a tag protection state for a repository. + * This endpoint is only available to repository administrators. + */ + deleteTagProtection: { + (params?: RestEndpointMethodTypes["repos"]["deleteTagProtection"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + deleteWebhook: { + (params?: RestEndpointMethodTypes["repos"]["deleteWebhook"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Disables automated security fixes for a repository. The authenticated user must have admin access to the repository. For more information, see "[Configuring automated security fixes](https://docs.github.com/en/articles/configuring-automated-security-fixes)". + */ + disableAutomatedSecurityFixes: { + (params?: RestEndpointMethodTypes["repos"]["disableAutomatedSecurityFixes"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + disableLfsForRepo: { + (params?: RestEndpointMethodTypes["repos"]["disableLfsForRepo"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Disables dependency alerts and the dependency graph for a repository. The authenticated user must have admin access to the repository. For more information, see "[About security alerts for vulnerable dependencies](https://docs.github.com/en/articles/about-security-alerts-for-vulnerable-dependencies)". + */ + disableVulnerabilityAlerts: { + (params?: RestEndpointMethodTypes["repos"]["disableVulnerabilityAlerts"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Gets a redirect URL to download a zip archive for a repository. If you omit `:ref`, the repository’s default branch (usually + * `master`) will be used. Please make sure your HTTP framework is configured to follow redirects or you will need to use + * the `Location` header to make a second `GET` request. + * **Note**: For private repositories, these links are temporary and expire after five minutes. + * @deprecated octokit.rest.repos.downloadArchive() has been renamed to octokit.rest.repos.downloadZipballArchive() (2020-09-17) + */ + downloadArchive: { + (params?: RestEndpointMethodTypes["repos"]["downloadArchive"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Gets a redirect URL to download a tar archive for a repository. If you omit `:ref`, the repository’s default branch (usually + * `master`) will be used. Please make sure your HTTP framework is configured to follow redirects or you will need to use + * the `Location` header to make a second `GET` request. + * **Note**: For private repositories, these links are temporary and expire after five minutes. + */ + downloadTarballArchive: { + (params?: RestEndpointMethodTypes["repos"]["downloadTarballArchive"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Gets a redirect URL to download a zip archive for a repository. If you omit `:ref`, the repository’s default branch (usually + * `master`) will be used. Please make sure your HTTP framework is configured to follow redirects or you will need to use + * the `Location` header to make a second `GET` request. + * **Note**: For private repositories, these links are temporary and expire after five minutes. + */ + downloadZipballArchive: { + (params?: RestEndpointMethodTypes["repos"]["downloadZipballArchive"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Enables automated security fixes for a repository. The authenticated user must have admin access to the repository. For more information, see "[Configuring automated security fixes](https://docs.github.com/en/articles/configuring-automated-security-fixes)". + */ + enableAutomatedSecurityFixes: { + (params?: RestEndpointMethodTypes["repos"]["enableAutomatedSecurityFixes"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + enableLfsForRepo: { + (params?: RestEndpointMethodTypes["repos"]["enableLfsForRepo"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Enables dependency alerts and the dependency graph for a repository. The authenticated user must have admin access to the repository. For more information, see "[About security alerts for vulnerable dependencies](https://docs.github.com/en/articles/about-security-alerts-for-vulnerable-dependencies)". + */ + enableVulnerabilityAlerts: { + (params?: RestEndpointMethodTypes["repos"]["enableVulnerabilityAlerts"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Generate a name and body describing a [release](https://docs.github.com/rest/reference/repos#releases). The body content will be markdown formatted and contain information like the changes since last release and users who contributed. The generated release notes are not saved anywhere. They are intended to be generated and used when creating a new release. + */ + generateReleaseNotes: { + (params?: RestEndpointMethodTypes["repos"]["generateReleaseNotes"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * The `parent` and `source` objects are present when the repository is a fork. `parent` is the repository this repository was forked from, `source` is the ultimate source for the network. + */ + get: { + (params?: RestEndpointMethodTypes["repos"]["get"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. + * + * Lists who has access to this protected branch. + * + * **Note**: Users, apps, and teams `restrictions` are only available for organization-owned repositories. + */ + getAccessRestrictions: { + (params?: RestEndpointMethodTypes["repos"]["getAccessRestrictions"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. + */ + getAdminBranchProtection: { + (params?: RestEndpointMethodTypes["repos"]["getAdminBranchProtection"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Get all environments for a repository. + * + * Anyone with read access to the repository can use this endpoint. If the repository is private, you must use an access token with the `repo` scope. GitHub Apps must have the `actions:read` permission to use this endpoint. + */ + getAllEnvironments: { + (params?: RestEndpointMethodTypes["repos"]["getAllEnvironments"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. + */ + getAllStatusCheckContexts: { + (params?: RestEndpointMethodTypes["repos"]["getAllStatusCheckContexts"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + getAllTopics: { + (params?: RestEndpointMethodTypes["repos"]["getAllTopics"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. + * + * Lists the GitHub Apps that have push access to this branch. Only installed GitHub Apps with `write` access to the `contents` permission can be added as authorized actors on a protected branch. + */ + getAppsWithAccessToProtectedBranch: { + (params?: RestEndpointMethodTypes["repos"]["getAppsWithAccessToProtectedBranch"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * This returns a single autolink reference by ID that was configured for the given repository. + * + * Information about autolinks are only available to repository administrators. + */ + getAutolink: { + (params?: RestEndpointMethodTypes["repos"]["getAutolink"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + getBranch: { + (params?: RestEndpointMethodTypes["repos"]["getBranch"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. + */ + getBranchProtection: { + (params?: RestEndpointMethodTypes["repos"]["getBranchProtection"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Get the total number of clones and breakdown per day or week for the last 14 days. Timestamps are aligned to UTC midnight of the beginning of the day or week. Week begins on Monday. + */ + getClones: { + (params?: RestEndpointMethodTypes["repos"]["getClones"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Returns a weekly aggregate of the number of additions and deletions pushed to a repository. + */ + getCodeFrequencyStats: { + (params?: RestEndpointMethodTypes["repos"]["getCodeFrequencyStats"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Checks the repository permission of a collaborator. The possible repository permissions are `admin`, `write`, `read`, and `none`. + */ + getCollaboratorPermissionLevel: { + (params?: RestEndpointMethodTypes["repos"]["getCollaboratorPermissionLevel"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Users with pull access in a repository can access a combined view of commit statuses for a given ref. The ref can be a SHA, a branch name, or a tag name. + * + * + * Additionally, a combined `state` is returned. The `state` is one of: + * + * * **failure** if any of the contexts report as `error` or `failure` + * * **pending** if there are no statuses or a context is `pending` + * * **success** if the latest status for all contexts is `success` + */ + getCombinedStatusForRef: { + (params?: RestEndpointMethodTypes["repos"]["getCombinedStatusForRef"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Returns the contents of a single commit reference. You must have `read` access for the repository to use this endpoint. + * + * **Note:** If there are more than 300 files in the commit diff, the response will include pagination link headers for the remaining files, up to a limit of 3000 files. Each page contains the static commit information, and the only changes are to the file listing. + * + * You can pass the appropriate [media type](https://docs.github.com/rest/overview/media-types/#commits-commit-comparison-and-pull-requests) to fetch `diff` and `patch` formats. Diffs with binary data will have no `patch` property. + * + * To return only the SHA-1 hash of the commit reference, you can provide the `sha` custom [media type](https://docs.github.com/rest/overview/media-types/#commits-commit-comparison-and-pull-requests) in the `Accept` header. You can use this endpoint to check if a remote reference's SHA-1 hash is the same as your local reference's SHA-1 hash by providing the local SHA-1 reference as the ETag. + * + * **Signature verification object** + * + * The response will include a `verification` object that describes the result of verifying the commit's signature. The following fields are included in the `verification` object: + * + * | Name | Type | Description | + * | ---- | ---- | ----------- | + * | `verified` | `boolean` | Indicates whether GitHub considers the signature in this commit to be verified. | + * | `reason` | `string` | The reason for verified value. Possible values and their meanings are enumerated in table below. | + * | `signature` | `string` | The signature that was extracted from the commit. | + * | `payload` | `string` | The value that was signed. | + * + * These are the possible values for `reason` in the `verification` object: + * + * | Value | Description | + * | ----- | ----------- | + * | `expired_key` | The key that made the signature is expired. | + * | `not_signing_key` | The "signing" flag is not among the usage flags in the GPG key that made the signature. | + * | `gpgverify_error` | There was an error communicating with the signature verification service. | + * | `gpgverify_unavailable` | The signature verification service is currently unavailable. | + * | `unsigned` | The object does not include a signature. | + * | `unknown_signature_type` | A non-PGP signature was found in the commit. | + * | `no_user` | No user was associated with the `committer` email address in the commit. | + * | `unverified_email` | The `committer` email address in the commit was associated with a user, but the email address is not verified on her/his account. | + * | `bad_email` | The `committer` email address in the commit is not included in the identities of the PGP key that made the signature. | + * | `unknown_key` | The key that made the signature has not been registered with any user's account. | + * | `malformed_signature` | There was an error parsing the signature. | + * | `invalid` | The signature could not be cryptographically verified using the key whose key-id was found in the signature. | + * | `valid` | None of the above errors applied, so the signature is considered to be verified. | + */ + getCommit: { + (params?: RestEndpointMethodTypes["repos"]["getCommit"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Returns the last year of commit activity grouped by week. The `days` array is a group of commits per day, starting on `Sunday`. + */ + getCommitActivityStats: { + (params?: RestEndpointMethodTypes["repos"]["getCommitActivityStats"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + getCommitComment: { + (params?: RestEndpointMethodTypes["repos"]["getCommitComment"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. + * + * When authenticated with admin or owner permissions to the repository, you can use this endpoint to check whether a branch requires signed commits. An enabled status of `true` indicates you must sign commits on this branch. For more information, see [Signing commits with GPG](https://docs.github.com/articles/signing-commits-with-gpg) in GitHub Help. + * + * **Note**: You must enable branch protection to require signed commits. + */ + getCommitSignatureProtection: { + (params?: RestEndpointMethodTypes["repos"]["getCommitSignatureProtection"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * This endpoint will return all community profile metrics, including an + * overall health score, repository description, the presence of documentation, detected + * code of conduct, detected license, and the presence of ISSUE\_TEMPLATE, PULL\_REQUEST\_TEMPLATE, + * README, and CONTRIBUTING files. + * + * The `health_percentage` score is defined as a percentage of how many of + * these four documents are present: README, CONTRIBUTING, LICENSE, and + * CODE_OF_CONDUCT. For example, if all four documents are present, then + * the `health_percentage` is `100`. If only one is present, then the + * `health_percentage` is `25`. + * + * `content_reports_enabled` is only returned for organization-owned repositories. + */ + getCommunityProfileMetrics: { + (params?: RestEndpointMethodTypes["repos"]["getCommunityProfileMetrics"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Gets the contents of a file or directory in a repository. Specify the file path or directory in `:path`. If you omit + * `:path`, you will receive the contents of the repository's root directory. See the description below regarding what the API response includes for directories. + * + * Files and symlinks support [a custom media type](https://docs.github.com/rest/reference/repos#custom-media-types) for + * retrieving the raw content or rendered HTML (when supported). All content types support [a custom media + * type](https://docs.github.com/rest/reference/repos#custom-media-types) to ensure the content is returned in a consistent + * object format. + * + * **Note**: + * * To get a repository's contents recursively, you can [recursively get the tree](https://docs.github.com/rest/reference/git#trees). + * * This API has an upper limit of 1,000 files for a directory. If you need to retrieve more files, use the [Git Trees + * API](https://docs.github.com/rest/reference/git#get-a-tree). + * + * #### Size limits + * If the requested file's size is: + * * 1 MB or smaller: All features of this endpoint are supported. + * * Between 1-100 MB: Only the `raw` or `object` [custom media types](https://docs.github.com/rest/repos/contents#custom-media-types-for-repository-contents) are supported. Both will work as normal, except that when using the `object` media type, the `content` field will be an empty string and the `encoding` field will be `"none"`. To get the contents of these larger files, use the `raw` media type. + * * Greater than 100 MB: This endpoint is not supported. + * + * #### If the content is a directory + * The response will be an array of objects, one object for each item in the directory. + * When listing the contents of a directory, submodules have their "type" specified as "file". Logically, the value + * _should_ be "submodule". This behavior exists in API v3 [for backwards compatibility purposes](https://git.io/v1YCW). + * In the next major version of the API, the type will be returned as "submodule". + * + * #### If the content is a symlink + * If the requested `:path` points to a symlink, and the symlink's target is a normal file in the repository, then the + * API responds with the content of the file (in the format shown in the example. Otherwise, the API responds with an object + * describing the symlink itself. + * + * #### If the content is a submodule + * The `submodule_git_url` identifies the location of the submodule repository, and the `sha` identifies a specific + * commit within the submodule repository. Git uses the given URL when cloning the submodule repository, and checks out + * the submodule at that specific commit. + * + * If the submodule repository is not hosted on github.com, the Git URLs (`git_url` and `_links["git"]`) and the + * github.com URLs (`html_url` and `_links["html"]`) will have null values. + */ + getContent: { + (params?: RestEndpointMethodTypes["repos"]["getContent"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Returns the `total` number of commits authored by the contributor. In addition, the response includes a Weekly Hash (`weeks` array) with the following information: + * + * * `w` - Start of the week, given as a [Unix timestamp](http://en.wikipedia.org/wiki/Unix_time). + * * `a` - Number of additions + * * `d` - Number of deletions + * * `c` - Number of commits + */ + getContributorsStats: { + (params?: RestEndpointMethodTypes["repos"]["getContributorsStats"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + getDeployKey: { + (params?: RestEndpointMethodTypes["repos"]["getDeployKey"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + getDeployment: { + (params?: RestEndpointMethodTypes["repos"]["getDeployment"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Users with pull access can view a deployment status for a deployment: + */ + getDeploymentStatus: { + (params?: RestEndpointMethodTypes["repos"]["getDeploymentStatus"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Anyone with read access to the repository can use this endpoint. If the repository is private, you must use an access token with the `repo` scope. GitHub Apps must have the `actions:read` permission to use this endpoint. + */ + getEnvironment: { + (params?: RestEndpointMethodTypes["repos"]["getEnvironment"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + getLatestPagesBuild: { + (params?: RestEndpointMethodTypes["repos"]["getLatestPagesBuild"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * View the latest published full release for the repository. + * + * The latest release is the most recent non-prerelease, non-draft release, sorted by the `created_at` attribute. The `created_at` attribute is the date of the commit used for the release, and not the date when the release was drafted or published. + */ + getLatestRelease: { + (params?: RestEndpointMethodTypes["repos"]["getLatestRelease"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + getPages: { + (params?: RestEndpointMethodTypes["repos"]["getPages"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + getPagesBuild: { + (params?: RestEndpointMethodTypes["repos"]["getPagesBuild"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Gets a health check of the DNS settings for the `CNAME` record configured for a repository's GitHub Pages. + * + * The first request to this endpoint returns a `202 Accepted` status and starts an asynchronous background task to get the results for the domain. After the background task completes, subsequent requests to this endpoint return a `200 OK` status with the health check results in the response. + * + * Users must have admin or owner permissions. GitHub Apps must have the `pages:write` and `administration:write` permission to use this endpoint. + */ + getPagesHealthCheck: { + (params?: RestEndpointMethodTypes["repos"]["getPagesHealthCheck"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Returns the total commit counts for the `owner` and total commit counts in `all`. `all` is everyone combined, including the `owner` in the last 52 weeks. If you'd like to get the commit counts for non-owners, you can subtract `owner` from `all`. + * + * The array order is oldest week (index 0) to most recent week. + */ + getParticipationStats: { + (params?: RestEndpointMethodTypes["repos"]["getParticipationStats"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. + */ + getPullRequestReviewProtection: { + (params?: RestEndpointMethodTypes["repos"]["getPullRequestReviewProtection"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Each array contains the day number, hour number, and number of commits: + * + * * `0-6`: Sunday - Saturday + * * `0-23`: Hour of day + * * Number of commits + * + * For example, `[2, 14, 25]` indicates that there were 25 total commits, during the 2:00pm hour on Tuesdays. All times are based on the time zone of individual commits. + */ + getPunchCardStats: { + (params?: RestEndpointMethodTypes["repos"]["getPunchCardStats"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Gets the preferred README for a repository. + * + * READMEs support [custom media types](https://docs.github.com/rest/reference/repos#custom-media-types) for retrieving the raw content or rendered HTML. + */ + getReadme: { + (params?: RestEndpointMethodTypes["repos"]["getReadme"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Gets the README from a repository directory. + * + * READMEs support [custom media types](https://docs.github.com/rest/reference/repos#custom-media-types) for retrieving the raw content or rendered HTML. + */ + getReadmeInDirectory: { + (params?: RestEndpointMethodTypes["repos"]["getReadmeInDirectory"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * **Note:** This returns an `upload_url` key corresponding to the endpoint for uploading release assets. This key is a [hypermedia resource](https://docs.github.com/rest/overview/resources-in-the-rest-api#hypermedia). + */ + getRelease: { + (params?: RestEndpointMethodTypes["repos"]["getRelease"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * To download the asset's binary content, set the `Accept` header of the request to [`application/octet-stream`](https://docs.github.com/rest/overview/media-types). The API will either redirect the client to the location, or stream it directly if possible. API clients should handle both a `200` or `302` response. + */ + getReleaseAsset: { + (params?: RestEndpointMethodTypes["repos"]["getReleaseAsset"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Get a published release with the specified tag. + */ + getReleaseByTag: { + (params?: RestEndpointMethodTypes["repos"]["getReleaseByTag"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. + */ + getStatusChecksProtection: { + (params?: RestEndpointMethodTypes["repos"]["getStatusChecksProtection"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. + * + * Lists the teams who have push access to this branch. The list includes child teams. + */ + getTeamsWithAccessToProtectedBranch: { + (params?: RestEndpointMethodTypes["repos"]["getTeamsWithAccessToProtectedBranch"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Get the top 10 popular contents over the last 14 days. + */ + getTopPaths: { + (params?: RestEndpointMethodTypes["repos"]["getTopPaths"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Get the top 10 referrers over the last 14 days. + */ + getTopReferrers: { + (params?: RestEndpointMethodTypes["repos"]["getTopReferrers"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. + * + * Lists the people who have push access to this branch. + */ + getUsersWithAccessToProtectedBranch: { + (params?: RestEndpointMethodTypes["repos"]["getUsersWithAccessToProtectedBranch"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Get the total number of views and breakdown per day or week for the last 14 days. Timestamps are aligned to UTC midnight of the beginning of the day or week. Week begins on Monday. + */ + getViews: { + (params?: RestEndpointMethodTypes["repos"]["getViews"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Returns a webhook configured in a repository. To get only the webhook `config` properties, see "[Get a webhook configuration for a repository](/rest/reference/repos#get-a-webhook-configuration-for-a-repository)." + */ + getWebhook: { + (params?: RestEndpointMethodTypes["repos"]["getWebhook"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Returns the webhook configuration for a repository. To get more information about the webhook, including the `active` state and `events`, use "[Get a repository webhook](/rest/reference/orgs#get-a-repository-webhook)." + * + * Access tokens must have the `read:repo_hook` or `repo` scope, and GitHub Apps must have the `repository_hooks:read` permission. + */ + getWebhookConfigForRepo: { + (params?: RestEndpointMethodTypes["repos"]["getWebhookConfigForRepo"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Returns a delivery for a webhook configured in a repository. + */ + getWebhookDelivery: { + (params?: RestEndpointMethodTypes["repos"]["getWebhookDelivery"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * This returns a list of autolinks configured for the given repository. + * + * Information about autolinks are only available to repository administrators. + */ + listAutolinks: { + (params?: RestEndpointMethodTypes["repos"]["listAutolinks"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + listBranches: { + (params?: RestEndpointMethodTypes["repos"]["listBranches"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. + * + * Returns all branches where the given commit SHA is the HEAD, or latest commit for the branch. + */ + listBranchesForHeadCommit: { + (params?: RestEndpointMethodTypes["repos"]["listBranchesForHeadCommit"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * For organization-owned repositories, the list of collaborators includes outside collaborators, organization members that are direct collaborators, organization members with access through team memberships, organization members with access through default organization permissions, and organization owners. + * Organization members with write, maintain, or admin privileges on the organization-owned repository can use this endpoint. + * + * Team members will include the members of child teams. + * + * You must authenticate using an access token with the `read:org` and `repo` scopes with push access to use this + * endpoint. GitHub Apps must have the `members` organization permission and `metadata` repository permission to use this + * endpoint. + */ + listCollaborators: { + (params?: RestEndpointMethodTypes["repos"]["listCollaborators"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Use the `:commit_sha` to specify the commit that will have its comments listed. + */ + listCommentsForCommit: { + (params?: RestEndpointMethodTypes["repos"]["listCommentsForCommit"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Commit Comments use [these custom media types](https://docs.github.com/rest/reference/repos#custom-media-types). You can read more about the use of media types in the API [here](https://docs.github.com/rest/overview/media-types/). + * + * Comments are ordered by ascending ID. + */ + listCommitCommentsForRepo: { + (params?: RestEndpointMethodTypes["repos"]["listCommitCommentsForRepo"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Users with pull access in a repository can view commit statuses for a given ref. The ref can be a SHA, a branch name, or a tag name. Statuses are returned in reverse chronological order. The first status in the list will be the latest one. + * + * This resource is also available via a legacy route: `GET /repos/:owner/:repo/statuses/:ref`. + */ + listCommitStatusesForRef: { + (params?: RestEndpointMethodTypes["repos"]["listCommitStatusesForRef"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * **Signature verification object** + * + * The response will include a `verification` object that describes the result of verifying the commit's signature. The following fields are included in the `verification` object: + * + * | Name | Type | Description | + * | ---- | ---- | ----------- | + * | `verified` | `boolean` | Indicates whether GitHub considers the signature in this commit to be verified. | + * | `reason` | `string` | The reason for verified value. Possible values and their meanings are enumerated in table below. | + * | `signature` | `string` | The signature that was extracted from the commit. | + * | `payload` | `string` | The value that was signed. | + * + * These are the possible values for `reason` in the `verification` object: + * + * | Value | Description | + * | ----- | ----------- | + * | `expired_key` | The key that made the signature is expired. | + * | `not_signing_key` | The "signing" flag is not among the usage flags in the GPG key that made the signature. | + * | `gpgverify_error` | There was an error communicating with the signature verification service. | + * | `gpgverify_unavailable` | The signature verification service is currently unavailable. | + * | `unsigned` | The object does not include a signature. | + * | `unknown_signature_type` | A non-PGP signature was found in the commit. | + * | `no_user` | No user was associated with the `committer` email address in the commit. | + * | `unverified_email` | The `committer` email address in the commit was associated with a user, but the email address is not verified on her/his account. | + * | `bad_email` | The `committer` email address in the commit is not included in the identities of the PGP key that made the signature. | + * | `unknown_key` | The key that made the signature has not been registered with any user's account. | + * | `malformed_signature` | There was an error parsing the signature. | + * | `invalid` | The signature could not be cryptographically verified using the key whose key-id was found in the signature. | + * | `valid` | None of the above errors applied, so the signature is considered to be verified. | + */ + listCommits: { + (params?: RestEndpointMethodTypes["repos"]["listCommits"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Lists contributors to the specified repository and sorts them by the number of commits per contributor in descending order. This endpoint may return information that is a few hours old because the GitHub REST API v3 caches contributor data to improve performance. + * + * GitHub identifies contributors by author email address. This endpoint groups contribution counts by GitHub user, which includes all associated email addresses. To improve performance, only the first 500 author email addresses in the repository link to GitHub users. The rest will appear as anonymous contributors without associated GitHub user information. + */ + listContributors: { + (params?: RestEndpointMethodTypes["repos"]["listContributors"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + listDeployKeys: { + (params?: RestEndpointMethodTypes["repos"]["listDeployKeys"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Users with pull access can view deployment statuses for a deployment: + */ + listDeploymentStatuses: { + (params?: RestEndpointMethodTypes["repos"]["listDeploymentStatuses"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Simple filtering of deployments is available via query parameters: + */ + listDeployments: { + (params?: RestEndpointMethodTypes["repos"]["listDeployments"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Lists repositories that the authenticated user has explicit permission (`:read`, `:write`, or `:admin`) to access. + * + * The authenticated user has explicit permission to access repositories they own, repositories where they are a collaborator, and repositories that they can access through an organization membership. + */ + listForAuthenticatedUser: { + (params?: RestEndpointMethodTypes["repos"]["listForAuthenticatedUser"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Lists repositories for the specified organization. + */ + listForOrg: { + (params?: RestEndpointMethodTypes["repos"]["listForOrg"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Lists public repositories for the specified user. Note: For GitHub AE, this endpoint will list internal repositories for the specified user. + */ + listForUser: { + (params?: RestEndpointMethodTypes["repos"]["listForUser"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + listForks: { + (params?: RestEndpointMethodTypes["repos"]["listForks"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * When authenticating as a user with admin rights to a repository, this endpoint will list all currently open repository invitations. + */ + listInvitations: { + (params?: RestEndpointMethodTypes["repos"]["listInvitations"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * When authenticating as a user, this endpoint will list all currently open repository invitations for that user. + */ + listInvitationsForAuthenticatedUser: { + (params?: RestEndpointMethodTypes["repos"]["listInvitationsForAuthenticatedUser"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Lists languages for the specified repository. The value shown for each language is the number of bytes of code written in that language. + */ + listLanguages: { + (params?: RestEndpointMethodTypes["repos"]["listLanguages"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + listPagesBuilds: { + (params?: RestEndpointMethodTypes["repos"]["listPagesBuilds"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Lists all public repositories in the order that they were created. + * + * Note: + * - For GitHub Enterprise Server, this endpoint will only list repositories available to all users on the enterprise. + * - Pagination is powered exclusively by the `since` parameter. Use the [Link header](https://docs.github.com/rest/overview/resources-in-the-rest-api#link-header) to get the URL for the next page of repositories. + */ + listPublic: { + (params?: RestEndpointMethodTypes["repos"]["listPublic"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Lists the merged pull request that introduced the commit to the repository. If the commit is not present in the default branch, additionally returns open pull requests associated with the commit. The results may include open and closed pull requests. + */ + listPullRequestsAssociatedWithCommit: { + (params?: RestEndpointMethodTypes["repos"]["listPullRequestsAssociatedWithCommit"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + listReleaseAssets: { + (params?: RestEndpointMethodTypes["repos"]["listReleaseAssets"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * This returns a list of releases, which does not include regular Git tags that have not been associated with a release. To get a list of Git tags, use the [Repository Tags API](https://docs.github.com/rest/reference/repos#list-repository-tags). + * + * Information about published releases are available to everyone. Only users with push access will receive listings for draft releases. + */ + listReleases: { + (params?: RestEndpointMethodTypes["repos"]["listReleases"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * This returns the tag protection states of a repository. + * + * This information is only available to repository administrators. + */ + listTagProtection: { + (params?: RestEndpointMethodTypes["repos"]["listTagProtection"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + listTags: { + (params?: RestEndpointMethodTypes["repos"]["listTags"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + listTeams: { + (params?: RestEndpointMethodTypes["repos"]["listTeams"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Returns a list of webhook deliveries for a webhook configured in a repository. + */ + listWebhookDeliveries: { + (params?: RestEndpointMethodTypes["repos"]["listWebhookDeliveries"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + listWebhooks: { + (params?: RestEndpointMethodTypes["repos"]["listWebhooks"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + merge: { + (params?: RestEndpointMethodTypes["repos"]["merge"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Sync a branch of a forked repository to keep it up-to-date with the upstream repository. + */ + mergeUpstream: { + (params?: RestEndpointMethodTypes["repos"]["mergeUpstream"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * This will trigger a [ping event](https://docs.github.com/webhooks/#ping-event) to be sent to the hook. + */ + pingWebhook: { + (params?: RestEndpointMethodTypes["repos"]["pingWebhook"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Redeliver a webhook delivery for a webhook configured in a repository. + */ + redeliverWebhookDelivery: { + (params?: RestEndpointMethodTypes["repos"]["redeliverWebhookDelivery"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. + * + * Removes the ability of an app to push to this branch. Only installed GitHub Apps with `write` access to the `contents` permission can be added as authorized actors on a protected branch. + * + * | Type | Description | + * | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | + * | `array` | The GitHub Apps that have push access to this branch. Use the app's `slug`. **Note**: The list of users, apps, and teams in total is limited to 100 items. | + */ + removeAppAccessRestrictions: { + (params?: RestEndpointMethodTypes["repos"]["removeAppAccessRestrictions"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + removeCollaborator: { + (params?: RestEndpointMethodTypes["repos"]["removeCollaborator"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. + */ + removeStatusCheckContexts: { + (params?: RestEndpointMethodTypes["repos"]["removeStatusCheckContexts"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. + */ + removeStatusCheckProtection: { + (params?: RestEndpointMethodTypes["repos"]["removeStatusCheckProtection"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. + * + * Removes the ability of a team to push to this branch. You can also remove push access for child teams. + * + * | Type | Description | + * | ------- | --------------------------------------------------------------------------------------------------------------------------------------------------- | + * | `array` | Teams that should no longer have push access. Use the team's `slug`. **Note**: The list of users, apps, and teams in total is limited to 100 items. | + */ + removeTeamAccessRestrictions: { + (params?: RestEndpointMethodTypes["repos"]["removeTeamAccessRestrictions"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. + * + * Removes the ability of a user to push to this branch. + * + * | Type | Description | + * | ------- | --------------------------------------------------------------------------------------------------------------------------------------------- | + * | `array` | Usernames of the people who should no longer have push access. **Note**: The list of users, apps, and teams in total is limited to 100 items. | + */ + removeUserAccessRestrictions: { + (params?: RestEndpointMethodTypes["repos"]["removeUserAccessRestrictions"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Renames a branch in a repository. + * + * **Note:** Although the API responds immediately, the branch rename process might take some extra time to complete in the background. You won't be able to push to the old branch name while the rename process is in progress. For more information, see "[Renaming a branch](https://docs.github.com/github/administering-a-repository/renaming-a-branch)". + * + * The permissions required to use this endpoint depends on whether you are renaming the default branch. + * + * To rename a non-default branch: + * + * * Users must have push access. + * * GitHub Apps must have the `contents:write` repository permission. + * + * To rename the default branch: + * + * * Users must have admin or owner permissions. + * * GitHub Apps must have the `administration:write` repository permission. + */ + renameBranch: { + (params?: RestEndpointMethodTypes["repos"]["renameBranch"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + replaceAllTopics: { + (params?: RestEndpointMethodTypes["repos"]["replaceAllTopics"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * You can request that your site be built from the latest revision on the default branch. This has the same effect as pushing a commit to your default branch, but does not require an additional commit. Manually triggering page builds can be helpful when diagnosing build warnings and failures. + * + * Build requests are limited to one concurrent build per repository and one concurrent build per requester. If you request a build while another is still in progress, the second request will be queued until the first completes. + */ + requestPagesBuild: { + (params?: RestEndpointMethodTypes["repos"]["requestPagesBuild"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. + * + * Adding admin enforcement requires admin or owner permissions to the repository and branch protection to be enabled. + */ + setAdminBranchProtection: { + (params?: RestEndpointMethodTypes["repos"]["setAdminBranchProtection"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. + * + * Replaces the list of apps that have push access to this branch. This removes all apps that previously had push access and grants push access to the new list of apps. Only installed GitHub Apps with `write` access to the `contents` permission can be added as authorized actors on a protected branch. + * + * | Type | Description | + * | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | + * | `array` | The GitHub Apps that have push access to this branch. Use the app's `slug`. **Note**: The list of users, apps, and teams in total is limited to 100 items. | + */ + setAppAccessRestrictions: { + (params?: RestEndpointMethodTypes["repos"]["setAppAccessRestrictions"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. + */ + setStatusCheckContexts: { + (params?: RestEndpointMethodTypes["repos"]["setStatusCheckContexts"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. + * + * Replaces the list of teams that have push access to this branch. This removes all teams that previously had push access and grants push access to the new list of teams. Team restrictions include child teams. + * + * | Type | Description | + * | ------- | ------------------------------------------------------------------------------------------------------------------------------------------ | + * | `array` | The teams that can have push access. Use the team's `slug`. **Note**: The list of users, apps, and teams in total is limited to 100 items. | + */ + setTeamAccessRestrictions: { + (params?: RestEndpointMethodTypes["repos"]["setTeamAccessRestrictions"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. + * + * Replaces the list of people that have push access to this branch. This removes all people that previously had push access and grants push access to the new list of people. + * + * | Type | Description | + * | ------- | ----------------------------------------------------------------------------------------------------------------------------- | + * | `array` | Usernames for people who can have push access. **Note**: The list of users, apps, and teams in total is limited to 100 items. | + */ + setUserAccessRestrictions: { + (params?: RestEndpointMethodTypes["repos"]["setUserAccessRestrictions"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * This will trigger the hook with the latest push to the current repository if the hook is subscribed to `push` events. If the hook is not subscribed to `push` events, the server will respond with 204 but no test POST will be generated. + * + * **Note**: Previously `/repos/:owner/:repo/hooks/:hook_id/test` + */ + testPushWebhook: { + (params?: RestEndpointMethodTypes["repos"]["testPushWebhook"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * A transfer request will need to be accepted by the new owner when transferring a personal repository to another user. The response will contain the original `owner`, and the transfer will continue asynchronously. For more details on the requirements to transfer personal and organization-owned repositories, see [about repository transfers](https://docs.github.com/articles/about-repository-transfers/). + */ + transfer: { + (params?: RestEndpointMethodTypes["repos"]["transfer"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * **Note**: To edit a repository's topics, use the [Replace all repository topics](https://docs.github.com/rest/reference/repos#replace-all-repository-topics) endpoint. + */ + update: { + (params?: RestEndpointMethodTypes["repos"]["update"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. + * + * Protecting a branch requires admin or owner permissions to the repository. + * + * **Note**: Passing new arrays of `users` and `teams` replaces their previous values. + * + * **Note**: The list of users, apps, and teams in total is limited to 100 items. + */ + updateBranchProtection: { + (params?: RestEndpointMethodTypes["repos"]["updateBranchProtection"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + updateCommitComment: { + (params?: RestEndpointMethodTypes["repos"]["updateCommitComment"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Updates information for a GitHub Pages site. For more information, see "[About GitHub Pages](/github/working-with-github-pages/about-github-pages). + */ + updateInformationAboutPagesSite: { + (params?: RestEndpointMethodTypes["repos"]["updateInformationAboutPagesSite"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + updateInvitation: { + (params?: RestEndpointMethodTypes["repos"]["updateInvitation"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. + * + * Updating pull request review enforcement requires admin or owner permissions to the repository and branch protection to be enabled. + * + * **Note**: Passing new arrays of `users` and `teams` replaces their previous values. + */ + updatePullRequestReviewProtection: { + (params?: RestEndpointMethodTypes["repos"]["updatePullRequestReviewProtection"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Users with push access to the repository can edit a release. + */ + updateRelease: { + (params?: RestEndpointMethodTypes["repos"]["updateRelease"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Users with push access to the repository can edit a release asset. + */ + updateReleaseAsset: { + (params?: RestEndpointMethodTypes["repos"]["updateReleaseAsset"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. + * + * Updating required status checks requires admin or owner permissions to the repository and branch protection to be enabled. + * @deprecated octokit.rest.repos.updateStatusCheckPotection() has been renamed to octokit.rest.repos.updateStatusCheckProtection() (2020-09-17) + */ + updateStatusCheckPotection: { + (params?: RestEndpointMethodTypes["repos"]["updateStatusCheckPotection"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. + * + * Updating required status checks requires admin or owner permissions to the repository and branch protection to be enabled. + */ + updateStatusCheckProtection: { + (params?: RestEndpointMethodTypes["repos"]["updateStatusCheckProtection"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Updates a webhook configured in a repository. If you previously had a `secret` set, you must provide the same `secret` or set a new `secret` or the secret will be removed. If you are only updating individual webhook `config` properties, use "[Update a webhook configuration for a repository](/rest/reference/repos#update-a-webhook-configuration-for-a-repository)." + */ + updateWebhook: { + (params?: RestEndpointMethodTypes["repos"]["updateWebhook"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Updates the webhook configuration for a repository. To update more information about the webhook, including the `active` state and `events`, use "[Update a repository webhook](/rest/reference/orgs#update-a-repository-webhook)." + * + * Access tokens must have the `write:repo_hook` or `repo` scope, and GitHub Apps must have the `repository_hooks:write` permission. + */ + updateWebhookConfigForRepo: { + (params?: RestEndpointMethodTypes["repos"]["updateWebhookConfigForRepo"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * This endpoint makes use of [a Hypermedia relation](https://docs.github.com/rest/overview/resources-in-the-rest-api#hypermedia) to determine which URL to access. The endpoint you call to upload release assets is specific to your release. Use the `upload_url` returned in + * the response of the [Create a release endpoint](https://docs.github.com/rest/reference/repos#create-a-release) to upload a release asset. + * + * You need to use an HTTP client which supports [SNI](http://en.wikipedia.org/wiki/Server_Name_Indication) to make calls to this endpoint. + * + * Most libraries will set the required `Content-Length` header automatically. Use the required `Content-Type` header to provide the media type of the asset. For a list of media types, see [Media Types](https://www.iana.org/assignments/media-types/media-types.xhtml). For example: + * + * `application/zip` + * + * GitHub expects the asset data in its raw binary form, rather than JSON. You will send the raw binary content of the asset as the request body. Everything else about the endpoint is the same as the rest of the API. For example, + * you'll still need to pass your authentication to be able to upload an asset. + * + * When an upstream failure occurs, you will receive a `502 Bad Gateway` status. This may leave an empty asset with a state of `starter`. It can be safely deleted. + * + * **Notes:** + * * GitHub renames asset filenames that have special characters, non-alphanumeric characters, and leading or trailing periods. The "[List assets for a release](https://docs.github.com/rest/reference/repos#list-assets-for-a-release)" + * endpoint lists the renamed filenames. For more information and help, contact [GitHub Support](https://support.github.com/contact?tags=dotcom-rest-api). + * * If you upload an asset with the same filename as another uploaded asset, you'll receive an error and must delete the old file before you can re-upload the new asset. + */ + uploadReleaseAsset: { + (params?: RestEndpointMethodTypes["repos"]["uploadReleaseAsset"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + }; + search: { + /** + * Searches for query terms inside of a file. This method returns up to 100 results [per page](https://docs.github.com/rest/overview/resources-in-the-rest-api#pagination). + * + * When searching for code, you can get text match metadata for the file **content** and file **path** fields when you pass the `text-match` media type. For more details about how to receive highlighted search results, see [Text match metadata](https://docs.github.com/rest/reference/search#text-match-metadata). + * + * For example, if you want to find the definition of the `addClass` function inside [jQuery](https://github.com/jquery/jquery) repository, your query would look something like this: + * + * `q=addClass+in:file+language:js+repo:jquery/jquery` + * + * This query searches for the keyword `addClass` within a file's contents. The query limits the search to files where the language is JavaScript in the `jquery/jquery` repository. + * + * #### Considerations for code search + * + * Due to the complexity of searching code, there are a few restrictions on how searches are performed: + * + * * Only the _default branch_ is considered. In most cases, this will be the `master` branch. + * * Only files smaller than 384 KB are searchable. + * * You must always include at least one search term when searching source code. For example, searching for [`language:go`](https://github.com/search?utf8=%E2%9C%93&q=language%3Ago&type=Code) is not valid, while [`amazing + * language:go`](https://github.com/search?utf8=%E2%9C%93&q=amazing+language%3Ago&type=Code) is. + */ + code: { + (params?: RestEndpointMethodTypes["search"]["code"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Find commits via various criteria on the default branch (usually `master`). This method returns up to 100 results [per page](https://docs.github.com/rest/overview/resources-in-the-rest-api#pagination). + * + * When searching for commits, you can get text match metadata for the **message** field when you provide the `text-match` media type. For more details about how to receive highlighted search results, see [Text match + * metadata](https://docs.github.com/rest/reference/search#text-match-metadata). + * + * For example, if you want to find commits related to CSS in the [octocat/Spoon-Knife](https://github.com/octocat/Spoon-Knife) repository. Your query would look something like this: + * + * `q=repo:octocat/Spoon-Knife+css` + */ + commits: { + (params?: RestEndpointMethodTypes["search"]["commits"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Find issues by state and keyword. This method returns up to 100 results [per page](https://docs.github.com/rest/overview/resources-in-the-rest-api#pagination). + * + * When searching for issues, you can get text match metadata for the issue **title**, issue **body**, and issue **comment body** fields when you pass the `text-match` media type. For more details about how to receive highlighted + * search results, see [Text match metadata](https://docs.github.com/rest/reference/search#text-match-metadata). + * + * For example, if you want to find the oldest unresolved Python bugs on Windows. Your query might look something like this. + * + * `q=windows+label:bug+language:python+state:open&sort=created&order=asc` + * + * This query searches for the keyword `windows`, within any open issue that is labeled as `bug`. The search runs across repositories whose primary language is Python. The results are sorted by creation date in ascending order, which means the oldest issues appear first in the search results. + * + * **Note:** For [user-to-server](https://docs.github.com/developers/apps/identifying-and-authorizing-users-for-github-apps#user-to-server-requests) GitHub App requests, you can't retrieve a combination of issues and pull requests in a single query. Requests that don't include the `is:issue` or `is:pull-request` qualifier will receive an HTTP `422 Unprocessable Entity` response. To get results for both issues and pull requests, you must send separate queries for issues and pull requests. For more information about the `is` qualifier, see "[Searching only issues or pull requests](https://docs.github.com/github/searching-for-information-on-github/searching-issues-and-pull-requests#search-only-issues-or-pull-requests)." + */ + issuesAndPullRequests: { + (params?: RestEndpointMethodTypes["search"]["issuesAndPullRequests"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Find labels in a repository with names or descriptions that match search keywords. Returns up to 100 results [per page](https://docs.github.com/rest/overview/resources-in-the-rest-api#pagination). + * + * When searching for labels, you can get text match metadata for the label **name** and **description** fields when you pass the `text-match` media type. For more details about how to receive highlighted search results, see [Text match metadata](https://docs.github.com/rest/reference/search#text-match-metadata). + * + * For example, if you want to find labels in the `linguist` repository that match `bug`, `defect`, or `enhancement`. Your query might look like this: + * + * `q=bug+defect+enhancement&repository_id=64778136` + * + * The labels that best match the query appear first in the search results. + */ + labels: { + (params?: RestEndpointMethodTypes["search"]["labels"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Find repositories via various criteria. This method returns up to 100 results [per page](https://docs.github.com/rest/overview/resources-in-the-rest-api#pagination). + * + * When searching for repositories, you can get text match metadata for the **name** and **description** fields when you pass the `text-match` media type. For more details about how to receive highlighted search results, see [Text match metadata](https://docs.github.com/rest/reference/search#text-match-metadata). + * + * For example, if you want to search for popular Tetris repositories written in assembly code, your query might look like this: + * + * `q=tetris+language:assembly&sort=stars&order=desc` + * + * This query searches for repositories with the word `tetris` in the name, the description, or the README. The results are limited to repositories where the primary language is assembly. The results are sorted by stars in descending order, so that the most popular repositories appear first in the search results. + */ + repos: { + (params?: RestEndpointMethodTypes["search"]["repos"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Find topics via various criteria. Results are sorted by best match. This method returns up to 100 results [per page](https://docs.github.com/rest/overview/resources-in-the-rest-api#pagination). See "[Searching topics](https://docs.github.com/articles/searching-topics/)" for a detailed list of qualifiers. + * + * When searching for topics, you can get text match metadata for the topic's **short\_description**, **description**, **name**, or **display\_name** field when you pass the `text-match` media type. For more details about how to receive highlighted search results, see [Text match metadata](https://docs.github.com/rest/reference/search#text-match-metadata). + * + * For example, if you want to search for topics related to Ruby that are featured on https://github.com/topics. Your query might look like this: + * + * `q=ruby+is:featured` + * + * This query searches for topics with the keyword `ruby` and limits the results to find only topics that are featured. The topics that are the best match for the query appear first in the search results. + */ + topics: { + (params?: RestEndpointMethodTypes["search"]["topics"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Find users via various criteria. This method returns up to 100 results [per page](https://docs.github.com/rest/overview/resources-in-the-rest-api#pagination). + * + * When searching for users, you can get text match metadata for the issue **login**, **email**, and **name** fields when you pass the `text-match` media type. For more details about highlighting search results, see [Text match metadata](https://docs.github.com/rest/reference/search#text-match-metadata). For more details about how to receive highlighted search results, see [Text match metadata](https://docs.github.com/rest/reference/search#text-match-metadata). + * + * For example, if you're looking for a list of popular users, you might try this query: + * + * `q=tom+repos:%3E42+followers:%3E1000` + * + * This query searches for users with the name `tom`. The results are restricted to users with more than 42 repositories and over 1,000 followers. + */ + users: { + (params?: RestEndpointMethodTypes["search"]["users"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + }; + secretScanning: { + /** + * Gets a single secret scanning alert detected in an eligible repository. + * To use this endpoint, you must be an administrator for the repository or for the organization that owns the repository, and you must use a personal access token with the `repo` scope or `security_events` scope. + * For public repositories, you may instead use the `public_repo` scope. + * + * GitHub Apps must have the `secret_scanning_alerts` read permission to use this endpoint. + */ + getAlert: { + (params?: RestEndpointMethodTypes["secretScanning"]["getAlert"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Lists secret scanning alerts for eligible repositories in an enterprise, from newest to oldest. + * To use this endpoint, you must be a member of the enterprise, and you must use an access token with the `repo` scope or `security_events` scope. Alerts are only returned for organizations in the enterprise for which you are an organization owner or a [security manager](https://docs.github.com/organizations/managing-peoples-access-to-your-organization-with-roles/managing-security-managers-in-your-organization). + */ + listAlertsForEnterprise: { + (params?: RestEndpointMethodTypes["secretScanning"]["listAlertsForEnterprise"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Lists secret scanning alerts for eligible repositories in an organization, from newest to oldest. + * To use this endpoint, you must be an administrator or security manager for the organization, and you must use an access token with the `repo` scope or `security_events` scope. + * For public repositories, you may instead use the `public_repo` scope. + * + * GitHub Apps must have the `secret_scanning_alerts` read permission to use this endpoint. + */ + listAlertsForOrg: { + (params?: RestEndpointMethodTypes["secretScanning"]["listAlertsForOrg"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Lists secret scanning alerts for an eligible repository, from newest to oldest. + * To use this endpoint, you must be an administrator for the repository or for the organization that owns the repository, and you must use a personal access token with the `repo` scope or `security_events` scope. + * For public repositories, you may instead use the `public_repo` scope. + * + * GitHub Apps must have the `secret_scanning_alerts` read permission to use this endpoint. + */ + listAlertsForRepo: { + (params?: RestEndpointMethodTypes["secretScanning"]["listAlertsForRepo"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Lists all locations for a given secret scanning alert for an eligible repository. + * To use this endpoint, you must be an administrator for the repository or for the organization that owns the repository, and you must use a personal access token with the `repo` scope or `security_events` scope. + * For public repositories, you may instead use the `public_repo` scope. + * + * GitHub Apps must have the `secret_scanning_alerts` read permission to use this endpoint. + */ + listLocationsForAlert: { + (params?: RestEndpointMethodTypes["secretScanning"]["listLocationsForAlert"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Updates the status of a secret scanning alert in an eligible repository. + * To use this endpoint, you must be an administrator for the repository or for the organization that owns the repository, and you must use a personal access token with the `repo` scope or `security_events` scope. + * For public repositories, you may instead use the `public_repo` scope. + * + * GitHub Apps must have the `secret_scanning_alerts` write permission to use this endpoint. + */ + updateAlert: { + (params?: RestEndpointMethodTypes["secretScanning"]["updateAlert"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + }; + teams: { + /** + * Team synchronization is available for organizations using GitHub Enterprise Cloud. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. + * + * Adds an organization member to a team. An authenticated organization owner or team maintainer can add organization members to a team. + * + * **Note:** When you have team synchronization set up for a team with your organization's identity provider (IdP), you will see an error if you attempt to use the API for making changes to the team's membership. If you have access to manage group membership in your IdP, you can manage GitHub team membership through your identity provider, which automatically adds and removes team members in an organization. For more information, see "[Synchronizing teams between your identity provider and GitHub](https://docs.github.com/articles/synchronizing-teams-between-your-identity-provider-and-github/)." + * + * An organization owner can add someone who is not part of the team's organization to a team. When an organization owner adds someone to a team who is not an organization member, this endpoint will send an invitation to the person via email. This newly-created membership will be in the "pending" state until the person accepts the invitation, at which point the membership will transition to the "active" state and the user will be added as a member of the team. + * + * If the user is already a member of the team, this endpoint will update the role of the team member's role. To update the membership of a team member, the authenticated user must be an organization owner or a team maintainer. + * + * **Note:** You can also specify a team by `org_id` and `team_id` using the route `PUT /organizations/{org_id}/team/{team_id}/memberships/{username}`. + */ + addOrUpdateMembershipForUserInOrg: { + (params?: RestEndpointMethodTypes["teams"]["addOrUpdateMembershipForUserInOrg"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Adds an organization project to a team. To add a project to a team or update the team's permission on a project, the authenticated user must have `admin` permissions for the project. The project and team must be part of the same organization. + * + * **Note:** You can also specify a team by `org_id` and `team_id` using the route `PUT /organizations/{org_id}/team/{team_id}/projects/{project_id}`. + */ + addOrUpdateProjectPermissionsInOrg: { + (params?: RestEndpointMethodTypes["teams"]["addOrUpdateProjectPermissionsInOrg"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * To add a repository to a team or update the team's permission on a repository, the authenticated user must have admin access to the repository, and must be able to see the team. The repository must be owned by the organization, or a direct fork of a repository owned by the organization. You will get a `422 Unprocessable Entity` status if you attempt to add a repository to a team that is not owned by the organization. Note that, if you choose not to pass any parameters, you'll need to set `Content-Length` to zero when calling out to this endpoint. For more information, see "[HTTP verbs](https://docs.github.com/rest/overview/resources-in-the-rest-api#http-verbs)." + * + * **Note:** You can also specify a team by `org_id` and `team_id` using the route `PUT /organizations/{org_id}/team/{team_id}/repos/{owner}/{repo}`. + * + * For more information about the permission levels, see "[Repository permission levels for an organization](https://docs.github.com/en/github/setting-up-and-managing-organizations-and-teams/repository-permission-levels-for-an-organization#permission-levels-for-repositories-owned-by-an-organization)". + */ + addOrUpdateRepoPermissionsInOrg: { + (params?: RestEndpointMethodTypes["teams"]["addOrUpdateRepoPermissionsInOrg"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Checks whether a team has `read`, `write`, or `admin` permissions for an organization project. The response includes projects inherited from a parent team. + * + * **Note:** You can also specify a team by `org_id` and `team_id` using the route `GET /organizations/{org_id}/team/{team_id}/projects/{project_id}`. + */ + checkPermissionsForProjectInOrg: { + (params?: RestEndpointMethodTypes["teams"]["checkPermissionsForProjectInOrg"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Checks whether a team has `admin`, `push`, `maintain`, `triage`, or `pull` permission for a repository. Repositories inherited through a parent team will also be checked. + * + * You can also get information about the specified repository, including what permissions the team grants on it, by passing the following custom [media type](https://docs.github.com/rest/overview/media-types/) via the `application/vnd.github.v3.repository+json` accept header. + * + * If a team doesn't have permission for the repository, you will receive a `404 Not Found` response status. + * + * **Note:** You can also specify a team by `org_id` and `team_id` using the route `GET /organizations/{org_id}/team/{team_id}/repos/{owner}/{repo}`. + */ + checkPermissionsForRepoInOrg: { + (params?: RestEndpointMethodTypes["teams"]["checkPermissionsForRepoInOrg"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * To create a team, the authenticated user must be a member or owner of `{org}`. By default, organization members can create teams. Organization owners can limit team creation to organization owners. For more information, see "[Setting team creation permissions](https://docs.github.com/en/articles/setting-team-creation-permissions-in-your-organization)." + * + * When you create a new team, you automatically become a team maintainer without explicitly adding yourself to the optional array of `maintainers`. For more information, see "[About teams](https://docs.github.com/en/github/setting-up-and-managing-organizations-and-teams/about-teams)". + */ + create: { + (params?: RestEndpointMethodTypes["teams"]["create"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Creates a new comment on a team discussion. OAuth access tokens require the `write:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). + * + * This endpoint triggers [notifications](https://docs.github.com/en/github/managing-subscriptions-and-notifications-on-github/about-notifications). Creating content too quickly using this endpoint may result in secondary rate limiting. See "[Secondary rate limits](https://docs.github.com/rest/overview/resources-in-the-rest-api#secondary-rate-limits)" and "[Dealing with secondary rate limits](https://docs.github.com/rest/guides/best-practices-for-integrators#dealing-with-secondary-rate-limits)" for details. + * + * **Note:** You can also specify a team by `org_id` and `team_id` using the route `POST /organizations/{org_id}/team/{team_id}/discussions/{discussion_number}/comments`. + */ + createDiscussionCommentInOrg: { + (params?: RestEndpointMethodTypes["teams"]["createDiscussionCommentInOrg"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Creates a new discussion post on a team's page. OAuth access tokens require the `write:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). + * + * This endpoint triggers [notifications](https://docs.github.com/en/github/managing-subscriptions-and-notifications-on-github/about-notifications). Creating content too quickly using this endpoint may result in secondary rate limiting. See "[Secondary rate limits](https://docs.github.com/rest/overview/resources-in-the-rest-api#secondary-rate-limits)" and "[Dealing with secondary rate limits](https://docs.github.com/rest/guides/best-practices-for-integrators#dealing-with-secondary-rate-limits)" for details. + * + * **Note:** You can also specify a team by `org_id` and `team_id` using the route `POST /organizations/{org_id}/team/{team_id}/discussions`. + */ + createDiscussionInOrg: { + (params?: RestEndpointMethodTypes["teams"]["createDiscussionInOrg"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Deletes a comment on a team discussion. OAuth access tokens require the `write:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). + * + * **Note:** You can also specify a team by `org_id` and `team_id` using the route `DELETE /organizations/{org_id}/team/{team_id}/discussions/{discussion_number}/comments/{comment_number}`. + */ + deleteDiscussionCommentInOrg: { + (params?: RestEndpointMethodTypes["teams"]["deleteDiscussionCommentInOrg"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Delete a discussion from a team's page. OAuth access tokens require the `write:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). + * + * **Note:** You can also specify a team by `org_id` and `team_id` using the route `DELETE /organizations/{org_id}/team/{team_id}/discussions/{discussion_number}`. + */ + deleteDiscussionInOrg: { + (params?: RestEndpointMethodTypes["teams"]["deleteDiscussionInOrg"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * To delete a team, the authenticated user must be an organization owner or team maintainer. + * + * If you are an organization owner, deleting a parent team will delete all of its child teams as well. + * + * **Note:** You can also specify a team by `org_id` and `team_id` using the route `DELETE /organizations/{org_id}/team/{team_id}`. + */ + deleteInOrg: { + (params?: RestEndpointMethodTypes["teams"]["deleteInOrg"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Gets a team using the team's `slug`. GitHub generates the `slug` from the team `name`. + * + * **Note:** You can also specify a team by `org_id` and `team_id` using the route `GET /organizations/{org_id}/team/{team_id}`. + */ + getByName: { + (params?: RestEndpointMethodTypes["teams"]["getByName"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Get a specific comment on a team discussion. OAuth access tokens require the `read:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). + * + * **Note:** You can also specify a team by `org_id` and `team_id` using the route `GET /organizations/{org_id}/team/{team_id}/discussions/{discussion_number}/comments/{comment_number}`. + */ + getDiscussionCommentInOrg: { + (params?: RestEndpointMethodTypes["teams"]["getDiscussionCommentInOrg"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Get a specific discussion on a team's page. OAuth access tokens require the `read:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). + * + * **Note:** You can also specify a team by `org_id` and `team_id` using the route `GET /organizations/{org_id}/team/{team_id}/discussions/{discussion_number}`. + */ + getDiscussionInOrg: { + (params?: RestEndpointMethodTypes["teams"]["getDiscussionInOrg"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Team members will include the members of child teams. + * + * To get a user's membership with a team, the team must be visible to the authenticated user. + * + * **Note:** You can also specify a team by `org_id` and `team_id` using the route `GET /organizations/{org_id}/team/{team_id}/memberships/{username}`. + * + * **Note:** + * The response contains the `state` of the membership and the member's `role`. + * + * The `role` for organization owners is set to `maintainer`. For more information about `maintainer` roles, see see [Create a team](https://docs.github.com/rest/reference/teams#create-a-team). + */ + getMembershipForUserInOrg: { + (params?: RestEndpointMethodTypes["teams"]["getMembershipForUserInOrg"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Lists all teams in an organization that are visible to the authenticated user. + */ + list: { + (params?: RestEndpointMethodTypes["teams"]["list"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Lists the child teams of the team specified by `{team_slug}`. + * + * **Note:** You can also specify a team by `org_id` and `team_id` using the route `GET /organizations/{org_id}/team/{team_id}/teams`. + */ + listChildInOrg: { + (params?: RestEndpointMethodTypes["teams"]["listChildInOrg"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * List all comments on a team discussion. OAuth access tokens require the `read:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). + * + * **Note:** You can also specify a team by `org_id` and `team_id` using the route `GET /organizations/{org_id}/team/{team_id}/discussions/{discussion_number}/comments`. + */ + listDiscussionCommentsInOrg: { + (params?: RestEndpointMethodTypes["teams"]["listDiscussionCommentsInOrg"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * List all discussions on a team's page. OAuth access tokens require the `read:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). + * + * **Note:** You can also specify a team by `org_id` and `team_id` using the route `GET /organizations/{org_id}/team/{team_id}/discussions`. + */ + listDiscussionsInOrg: { + (params?: RestEndpointMethodTypes["teams"]["listDiscussionsInOrg"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * List all of the teams across all of the organizations to which the authenticated user belongs. This method requires `user`, `repo`, or `read:org` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/) when authenticating via [OAuth](https://docs.github.com/apps/building-oauth-apps/). + */ + listForAuthenticatedUser: { + (params?: RestEndpointMethodTypes["teams"]["listForAuthenticatedUser"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Team members will include the members of child teams. + * + * To list members in a team, the team must be visible to the authenticated user. + */ + listMembersInOrg: { + (params?: RestEndpointMethodTypes["teams"]["listMembersInOrg"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * The return hash contains a `role` field which refers to the Organization Invitation role and will be one of the following values: `direct_member`, `admin`, `billing_manager`, `hiring_manager`, or `reinstate`. If the invitee is not a GitHub member, the `login` field in the return hash will be `null`. + * + * **Note:** You can also specify a team by `org_id` and `team_id` using the route `GET /organizations/{org_id}/team/{team_id}/invitations`. + */ + listPendingInvitationsInOrg: { + (params?: RestEndpointMethodTypes["teams"]["listPendingInvitationsInOrg"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Lists the organization projects for a team. + * + * **Note:** You can also specify a team by `org_id` and `team_id` using the route `GET /organizations/{org_id}/team/{team_id}/projects`. + */ + listProjectsInOrg: { + (params?: RestEndpointMethodTypes["teams"]["listProjectsInOrg"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Lists a team's repositories visible to the authenticated user. + * + * **Note:** You can also specify a team by `org_id` and `team_id` using the route `GET /organizations/{org_id}/team/{team_id}/repos`. + */ + listReposInOrg: { + (params?: RestEndpointMethodTypes["teams"]["listReposInOrg"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Team synchronization is available for organizations using GitHub Enterprise Cloud. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation. + * + * To remove a membership between a user and a team, the authenticated user must have 'admin' permissions to the team or be an owner of the organization that the team is associated with. Removing team membership does not delete the user, it just removes their membership from the team. + * + * **Note:** When you have team synchronization set up for a team with your organization's identity provider (IdP), you will see an error if you attempt to use the API for making changes to the team's membership. If you have access to manage group membership in your IdP, you can manage GitHub team membership through your identity provider, which automatically adds and removes team members in an organization. For more information, see "[Synchronizing teams between your identity provider and GitHub](https://docs.github.com/articles/synchronizing-teams-between-your-identity-provider-and-github/)." + * + * **Note:** You can also specify a team by `org_id` and `team_id` using the route `DELETE /organizations/{org_id}/team/{team_id}/memberships/{username}`. + */ + removeMembershipForUserInOrg: { + (params?: RestEndpointMethodTypes["teams"]["removeMembershipForUserInOrg"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Removes an organization project from a team. An organization owner or a team maintainer can remove any project from the team. To remove a project from a team as an organization member, the authenticated user must have `read` access to both the team and project, or `admin` access to the team or project. This endpoint removes the project from the team, but does not delete the project. + * + * **Note:** You can also specify a team by `org_id` and `team_id` using the route `DELETE /organizations/{org_id}/team/{team_id}/projects/{project_id}`. + */ + removeProjectInOrg: { + (params?: RestEndpointMethodTypes["teams"]["removeProjectInOrg"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * If the authenticated user is an organization owner or a team maintainer, they can remove any repositories from the team. To remove a repository from a team as an organization member, the authenticated user must have admin access to the repository and must be able to see the team. This does not delete the repository, it just removes it from the team. + * + * **Note:** You can also specify a team by `org_id` and `team_id` using the route `DELETE /organizations/{org_id}/team/{team_id}/repos/{owner}/{repo}`. + */ + removeRepoInOrg: { + (params?: RestEndpointMethodTypes["teams"]["removeRepoInOrg"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Edits the body text of a discussion comment. OAuth access tokens require the `write:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). + * + * **Note:** You can also specify a team by `org_id` and `team_id` using the route `PATCH /organizations/{org_id}/team/{team_id}/discussions/{discussion_number}/comments/{comment_number}`. + */ + updateDiscussionCommentInOrg: { + (params?: RestEndpointMethodTypes["teams"]["updateDiscussionCommentInOrg"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Edits the title and body text of a discussion post. Only the parameters you provide are updated. OAuth access tokens require the `write:discussion` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). + * + * **Note:** You can also specify a team by `org_id` and `team_id` using the route `PATCH /organizations/{org_id}/team/{team_id}/discussions/{discussion_number}`. + */ + updateDiscussionInOrg: { + (params?: RestEndpointMethodTypes["teams"]["updateDiscussionInOrg"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * To edit a team, the authenticated user must either be an organization owner or a team maintainer. + * + * **Note:** You can also specify a team by `org_id` and `team_id` using the route `PATCH /organizations/{org_id}/team/{team_id}`. + */ + updateInOrg: { + (params?: RestEndpointMethodTypes["teams"]["updateInOrg"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + }; + users: { + /** + * This endpoint is accessible with the `user` scope. + * @deprecated octokit.rest.users.addEmailForAuthenticated() has been renamed to octokit.rest.users.addEmailForAuthenticatedUser() (2021-10-05) + */ + addEmailForAuthenticated: { + (params?: RestEndpointMethodTypes["users"]["addEmailForAuthenticated"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * This endpoint is accessible with the `user` scope. + */ + addEmailForAuthenticatedUser: { + (params?: RestEndpointMethodTypes["users"]["addEmailForAuthenticatedUser"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + block: { + (params?: RestEndpointMethodTypes["users"]["block"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + checkBlocked: { + (params?: RestEndpointMethodTypes["users"]["checkBlocked"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + checkFollowingForUser: { + (params?: RestEndpointMethodTypes["users"]["checkFollowingForUser"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + checkPersonIsFollowedByAuthenticated: { + (params?: RestEndpointMethodTypes["users"]["checkPersonIsFollowedByAuthenticated"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Adds a GPG key to the authenticated user's GitHub account. Requires that you are authenticated via Basic Auth, or OAuth with at least `write:gpg_key` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). + * @deprecated octokit.rest.users.createGpgKeyForAuthenticated() has been renamed to octokit.rest.users.createGpgKeyForAuthenticatedUser() (2021-10-05) + */ + createGpgKeyForAuthenticated: { + (params?: RestEndpointMethodTypes["users"]["createGpgKeyForAuthenticated"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Adds a GPG key to the authenticated user's GitHub account. Requires that you are authenticated via Basic Auth, or OAuth with at least `write:gpg_key` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). + */ + createGpgKeyForAuthenticatedUser: { + (params?: RestEndpointMethodTypes["users"]["createGpgKeyForAuthenticatedUser"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Adds a public SSH key to the authenticated user's GitHub account. Requires that you are authenticated via Basic Auth, or OAuth with at least `write:public_key` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). + * @deprecated octokit.rest.users.createPublicSshKeyForAuthenticated() has been renamed to octokit.rest.users.createPublicSshKeyForAuthenticatedUser() (2021-10-05) + */ + createPublicSshKeyForAuthenticated: { + (params?: RestEndpointMethodTypes["users"]["createPublicSshKeyForAuthenticated"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Adds a public SSH key to the authenticated user's GitHub account. Requires that you are authenticated via Basic Auth, or OAuth with at least `write:public_key` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). + */ + createPublicSshKeyForAuthenticatedUser: { + (params?: RestEndpointMethodTypes["users"]["createPublicSshKeyForAuthenticatedUser"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * This endpoint is accessible with the `user` scope. + * @deprecated octokit.rest.users.deleteEmailForAuthenticated() has been renamed to octokit.rest.users.deleteEmailForAuthenticatedUser() (2021-10-05) + */ + deleteEmailForAuthenticated: { + (params?: RestEndpointMethodTypes["users"]["deleteEmailForAuthenticated"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * This endpoint is accessible with the `user` scope. + */ + deleteEmailForAuthenticatedUser: { + (params?: RestEndpointMethodTypes["users"]["deleteEmailForAuthenticatedUser"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Removes a GPG key from the authenticated user's GitHub account. Requires that you are authenticated via Basic Auth or via OAuth with at least `admin:gpg_key` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). + * @deprecated octokit.rest.users.deleteGpgKeyForAuthenticated() has been renamed to octokit.rest.users.deleteGpgKeyForAuthenticatedUser() (2021-10-05) + */ + deleteGpgKeyForAuthenticated: { + (params?: RestEndpointMethodTypes["users"]["deleteGpgKeyForAuthenticated"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Removes a GPG key from the authenticated user's GitHub account. Requires that you are authenticated via Basic Auth or via OAuth with at least `admin:gpg_key` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). + */ + deleteGpgKeyForAuthenticatedUser: { + (params?: RestEndpointMethodTypes["users"]["deleteGpgKeyForAuthenticatedUser"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Removes a public SSH key from the authenticated user's GitHub account. Requires that you are authenticated via Basic Auth or via OAuth with at least `admin:public_key` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). + * @deprecated octokit.rest.users.deletePublicSshKeyForAuthenticated() has been renamed to octokit.rest.users.deletePublicSshKeyForAuthenticatedUser() (2021-10-05) + */ + deletePublicSshKeyForAuthenticated: { + (params?: RestEndpointMethodTypes["users"]["deletePublicSshKeyForAuthenticated"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Removes a public SSH key from the authenticated user's GitHub account. Requires that you are authenticated via Basic Auth or via OAuth with at least `admin:public_key` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). + */ + deletePublicSshKeyForAuthenticatedUser: { + (params?: RestEndpointMethodTypes["users"]["deletePublicSshKeyForAuthenticatedUser"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Note that you'll need to set `Content-Length` to zero when calling out to this endpoint. For more information, see "[HTTP verbs](https://docs.github.com/rest/overview/resources-in-the-rest-api#http-verbs)." + * + * Following a user requires the user to be logged in and authenticated with basic auth or OAuth with the `user:follow` scope. + */ + follow: { + (params?: RestEndpointMethodTypes["users"]["follow"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * If the authenticated user is authenticated through basic authentication or OAuth with the `user` scope, then the response lists public and private profile information. + * + * If the authenticated user is authenticated through OAuth without the `user` scope, then the response lists only public profile information. + */ + getAuthenticated: { + (params?: RestEndpointMethodTypes["users"]["getAuthenticated"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Provides publicly available information about someone with a GitHub account. + * + * GitHub Apps with the `Plan` user permission can use this endpoint to retrieve information about a user's GitHub plan. The GitHub App must be authenticated as a user. See "[Identifying and authorizing users for GitHub Apps](https://docs.github.com/apps/building-github-apps/identifying-and-authorizing-users-for-github-apps/)" for details about authentication. For an example response, see 'Response with GitHub plan information' below" + * + * The `email` key in the following response is the publicly visible email address from your GitHub [profile page](https://github.com/settings/profile). When setting up your profile, you can select a primary email address to be “public” which provides an email entry for this endpoint. If you do not set a public email address for `email`, then it will have a value of `null`. You only see publicly visible email addresses when authenticated with GitHub. For more information, see [Authentication](https://docs.github.com/rest/overview/resources-in-the-rest-api#authentication). + * + * The Emails API enables you to list all of your email addresses, and toggle a primary email to be visible publicly. For more information, see "[Emails API](https://docs.github.com/rest/reference/users#emails)". + */ + getByUsername: { + (params?: RestEndpointMethodTypes["users"]["getByUsername"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Provides hovercard information when authenticated through basic auth or OAuth with the `repo` scope. You can find out more about someone in relation to their pull requests, issues, repositories, and organizations. + * + * The `subject_type` and `subject_id` parameters provide context for the person's hovercard, which returns more information than without the parameters. For example, if you wanted to find out more about `octocat` who owns the `Spoon-Knife` repository via cURL, it would look like this: + * + * ```shell + * curl -u username:token + * https://api.github.com/users/octocat/hovercard?subject_type=repository&subject_id=1300192 + * ``` + */ + getContextForUser: { + (params?: RestEndpointMethodTypes["users"]["getContextForUser"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * View extended details for a single GPG key. Requires that you are authenticated via Basic Auth or via OAuth with at least `read:gpg_key` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). + * @deprecated octokit.rest.users.getGpgKeyForAuthenticated() has been renamed to octokit.rest.users.getGpgKeyForAuthenticatedUser() (2021-10-05) + */ + getGpgKeyForAuthenticated: { + (params?: RestEndpointMethodTypes["users"]["getGpgKeyForAuthenticated"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * View extended details for a single GPG key. Requires that you are authenticated via Basic Auth or via OAuth with at least `read:gpg_key` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). + */ + getGpgKeyForAuthenticatedUser: { + (params?: RestEndpointMethodTypes["users"]["getGpgKeyForAuthenticatedUser"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * View extended details for a single public SSH key. Requires that you are authenticated via Basic Auth or via OAuth with at least `read:public_key` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). + * @deprecated octokit.rest.users.getPublicSshKeyForAuthenticated() has been renamed to octokit.rest.users.getPublicSshKeyForAuthenticatedUser() (2021-10-05) + */ + getPublicSshKeyForAuthenticated: { + (params?: RestEndpointMethodTypes["users"]["getPublicSshKeyForAuthenticated"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * View extended details for a single public SSH key. Requires that you are authenticated via Basic Auth or via OAuth with at least `read:public_key` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). + */ + getPublicSshKeyForAuthenticatedUser: { + (params?: RestEndpointMethodTypes["users"]["getPublicSshKeyForAuthenticatedUser"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Lists all users, in the order that they signed up on GitHub. This list includes personal user accounts and organization accounts. + * + * Note: Pagination is powered exclusively by the `since` parameter. Use the [Link header](https://docs.github.com/rest/overview/resources-in-the-rest-api#link-header) to get the URL for the next page of users. + */ + list: { + (params?: RestEndpointMethodTypes["users"]["list"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * List the users you've blocked on your personal account. + * @deprecated octokit.rest.users.listBlockedByAuthenticated() has been renamed to octokit.rest.users.listBlockedByAuthenticatedUser() (2021-10-05) + */ + listBlockedByAuthenticated: { + (params?: RestEndpointMethodTypes["users"]["listBlockedByAuthenticated"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * List the users you've blocked on your personal account. + */ + listBlockedByAuthenticatedUser: { + (params?: RestEndpointMethodTypes["users"]["listBlockedByAuthenticatedUser"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Lists all of your email addresses, and specifies which one is visible to the public. This endpoint is accessible with the `user:email` scope. + * @deprecated octokit.rest.users.listEmailsForAuthenticated() has been renamed to octokit.rest.users.listEmailsForAuthenticatedUser() (2021-10-05) + */ + listEmailsForAuthenticated: { + (params?: RestEndpointMethodTypes["users"]["listEmailsForAuthenticated"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Lists all of your email addresses, and specifies which one is visible to the public. This endpoint is accessible with the `user:email` scope. + */ + listEmailsForAuthenticatedUser: { + (params?: RestEndpointMethodTypes["users"]["listEmailsForAuthenticatedUser"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Lists the people who the authenticated user follows. + * @deprecated octokit.rest.users.listFollowedByAuthenticated() has been renamed to octokit.rest.users.listFollowedByAuthenticatedUser() (2021-10-05) + */ + listFollowedByAuthenticated: { + (params?: RestEndpointMethodTypes["users"]["listFollowedByAuthenticated"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Lists the people who the authenticated user follows. + */ + listFollowedByAuthenticatedUser: { + (params?: RestEndpointMethodTypes["users"]["listFollowedByAuthenticatedUser"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Lists the people following the authenticated user. + */ + listFollowersForAuthenticatedUser: { + (params?: RestEndpointMethodTypes["users"]["listFollowersForAuthenticatedUser"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Lists the people following the specified user. + */ + listFollowersForUser: { + (params?: RestEndpointMethodTypes["users"]["listFollowersForUser"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Lists the people who the specified user follows. + */ + listFollowingForUser: { + (params?: RestEndpointMethodTypes["users"]["listFollowingForUser"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Lists the current user's GPG keys. Requires that you are authenticated via Basic Auth or via OAuth with at least `read:gpg_key` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). + * @deprecated octokit.rest.users.listGpgKeysForAuthenticated() has been renamed to octokit.rest.users.listGpgKeysForAuthenticatedUser() (2021-10-05) + */ + listGpgKeysForAuthenticated: { + (params?: RestEndpointMethodTypes["users"]["listGpgKeysForAuthenticated"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Lists the current user's GPG keys. Requires that you are authenticated via Basic Auth or via OAuth with at least `read:gpg_key` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). + */ + listGpgKeysForAuthenticatedUser: { + (params?: RestEndpointMethodTypes["users"]["listGpgKeysForAuthenticatedUser"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Lists the GPG keys for a user. This information is accessible by anyone. + */ + listGpgKeysForUser: { + (params?: RestEndpointMethodTypes["users"]["listGpgKeysForUser"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Lists your publicly visible email address, which you can set with the [Set primary email visibility for the authenticated user](https://docs.github.com/rest/reference/users#set-primary-email-visibility-for-the-authenticated-user) endpoint. This endpoint is accessible with the `user:email` scope. + * @deprecated octokit.rest.users.listPublicEmailsForAuthenticated() has been renamed to octokit.rest.users.listPublicEmailsForAuthenticatedUser() (2021-10-05) + */ + listPublicEmailsForAuthenticated: { + (params?: RestEndpointMethodTypes["users"]["listPublicEmailsForAuthenticated"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Lists your publicly visible email address, which you can set with the [Set primary email visibility for the authenticated user](https://docs.github.com/rest/reference/users#set-primary-email-visibility-for-the-authenticated-user) endpoint. This endpoint is accessible with the `user:email` scope. + */ + listPublicEmailsForAuthenticatedUser: { + (params?: RestEndpointMethodTypes["users"]["listPublicEmailsForAuthenticatedUser"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Lists the _verified_ public SSH keys for a user. This is accessible by anyone. + */ + listPublicKeysForUser: { + (params?: RestEndpointMethodTypes["users"]["listPublicKeysForUser"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Lists the public SSH keys for the authenticated user's GitHub account. Requires that you are authenticated via Basic Auth or via OAuth with at least `read:public_key` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). + * @deprecated octokit.rest.users.listPublicSshKeysForAuthenticated() has been renamed to octokit.rest.users.listPublicSshKeysForAuthenticatedUser() (2021-10-05) + */ + listPublicSshKeysForAuthenticated: { + (params?: RestEndpointMethodTypes["users"]["listPublicSshKeysForAuthenticated"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Lists the public SSH keys for the authenticated user's GitHub account. Requires that you are authenticated via Basic Auth or via OAuth with at least `read:public_key` [scope](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). + */ + listPublicSshKeysForAuthenticatedUser: { + (params?: RestEndpointMethodTypes["users"]["listPublicSshKeysForAuthenticatedUser"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Sets the visibility for your primary email addresses. + * @deprecated octokit.rest.users.setPrimaryEmailVisibilityForAuthenticated() has been renamed to octokit.rest.users.setPrimaryEmailVisibilityForAuthenticatedUser() (2021-10-05) + */ + setPrimaryEmailVisibilityForAuthenticated: { + (params?: RestEndpointMethodTypes["users"]["setPrimaryEmailVisibilityForAuthenticated"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Sets the visibility for your primary email addresses. + */ + setPrimaryEmailVisibilityForAuthenticatedUser: { + (params?: RestEndpointMethodTypes["users"]["setPrimaryEmailVisibilityForAuthenticatedUser"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + unblock: { + (params?: RestEndpointMethodTypes["users"]["unblock"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * Unfollowing a user requires the user to be logged in and authenticated with basic auth or OAuth with the `user:follow` scope. + */ + unfollow: { + (params?: RestEndpointMethodTypes["users"]["unfollow"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + /** + * **Note:** If your email is set to private and you send an `email` parameter as part of this request to update your profile, your privacy settings are still enforced: the email address will not be displayed on your public profile or via the API. + */ + updateAuthenticated: { + (params?: RestEndpointMethodTypes["users"]["updateAuthenticated"]["parameters"]): Promise; + defaults: RequestInterface["defaults"]; + endpoint: EndpointInterface<{ + url: string; + }>; + }; + }; +}; diff --git a/node_modules/@octokit/plugin-rest-endpoint-methods/dist-types/generated/parameters-and-response-types.d.ts b/node_modules/@octokit/plugin-rest-endpoint-methods/dist-types/generated/parameters-and-response-types.d.ts new file mode 100644 index 0000000..ce2a2f1 --- /dev/null +++ b/node_modules/@octokit/plugin-rest-endpoint-methods/dist-types/generated/parameters-and-response-types.d.ts @@ -0,0 +1,3211 @@ +import { Endpoints, RequestParameters } from "@octokit/types"; +export declare type RestEndpointMethodTypes = { + actions: { + addCustomLabelsToSelfHostedRunnerForOrg: { + parameters: RequestParameters & Omit; + response: Endpoints["POST /orgs/{org}/actions/runners/{runner_id}/labels"]["response"]; + }; + addCustomLabelsToSelfHostedRunnerForRepo: { + parameters: RequestParameters & Omit; + response: Endpoints["POST /repos/{owner}/{repo}/actions/runners/{runner_id}/labels"]["response"]; + }; + addSelectedRepoToOrgSecret: { + parameters: RequestParameters & Omit; + response: Endpoints["PUT /orgs/{org}/actions/secrets/{secret_name}/repositories/{repository_id}"]["response"]; + }; + approveWorkflowRun: { + parameters: RequestParameters & Omit; + response: Endpoints["POST /repos/{owner}/{repo}/actions/runs/{run_id}/approve"]["response"]; + }; + cancelWorkflowRun: { + parameters: RequestParameters & Omit; + response: Endpoints["POST /repos/{owner}/{repo}/actions/runs/{run_id}/cancel"]["response"]; + }; + createOrUpdateEnvironmentSecret: { + parameters: RequestParameters & Omit; + response: Endpoints["PUT /repositories/{repository_id}/environments/{environment_name}/secrets/{secret_name}"]["response"]; + }; + createOrUpdateOrgSecret: { + parameters: RequestParameters & Omit; + response: Endpoints["PUT /orgs/{org}/actions/secrets/{secret_name}"]["response"]; + }; + createOrUpdateRepoSecret: { + parameters: RequestParameters & Omit; + response: Endpoints["PUT /repos/{owner}/{repo}/actions/secrets/{secret_name}"]["response"]; + }; + createRegistrationTokenForOrg: { + parameters: RequestParameters & Omit; + response: Endpoints["POST /orgs/{org}/actions/runners/registration-token"]["response"]; + }; + createRegistrationTokenForRepo: { + parameters: RequestParameters & Omit; + response: Endpoints["POST /repos/{owner}/{repo}/actions/runners/registration-token"]["response"]; + }; + createRemoveTokenForOrg: { + parameters: RequestParameters & Omit; + response: Endpoints["POST /orgs/{org}/actions/runners/remove-token"]["response"]; + }; + createRemoveTokenForRepo: { + parameters: RequestParameters & Omit; + response: Endpoints["POST /repos/{owner}/{repo}/actions/runners/remove-token"]["response"]; + }; + createWorkflowDispatch: { + parameters: RequestParameters & Omit; + response: Endpoints["POST /repos/{owner}/{repo}/actions/workflows/{workflow_id}/dispatches"]["response"]; + }; + deleteActionsCacheById: { + parameters: RequestParameters & Omit; + response: Endpoints["DELETE /repos/{owner}/{repo}/actions/caches/{cache_id}"]["response"]; + }; + deleteActionsCacheByKey: { + parameters: RequestParameters & Omit; + response: Endpoints["DELETE /repos/{owner}/{repo}/actions/caches{?key,ref}"]["response"]; + }; + deleteArtifact: { + parameters: RequestParameters & Omit; + response: Endpoints["DELETE /repos/{owner}/{repo}/actions/artifacts/{artifact_id}"]["response"]; + }; + deleteEnvironmentSecret: { + parameters: RequestParameters & Omit; + response: Endpoints["DELETE /repositories/{repository_id}/environments/{environment_name}/secrets/{secret_name}"]["response"]; + }; + deleteOrgSecret: { + parameters: RequestParameters & Omit; + response: Endpoints["DELETE /orgs/{org}/actions/secrets/{secret_name}"]["response"]; + }; + deleteRepoSecret: { + parameters: RequestParameters & Omit; + response: Endpoints["DELETE /repos/{owner}/{repo}/actions/secrets/{secret_name}"]["response"]; + }; + deleteSelfHostedRunnerFromOrg: { + parameters: RequestParameters & Omit; + response: Endpoints["DELETE /orgs/{org}/actions/runners/{runner_id}"]["response"]; + }; + deleteSelfHostedRunnerFromRepo: { + parameters: RequestParameters & Omit; + response: Endpoints["DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}"]["response"]; + }; + deleteWorkflowRun: { + parameters: RequestParameters & Omit; + response: Endpoints["DELETE /repos/{owner}/{repo}/actions/runs/{run_id}"]["response"]; + }; + deleteWorkflowRunLogs: { + parameters: RequestParameters & Omit; + response: Endpoints["DELETE /repos/{owner}/{repo}/actions/runs/{run_id}/logs"]["response"]; + }; + disableSelectedRepositoryGithubActionsOrganization: { + parameters: RequestParameters & Omit; + response: Endpoints["DELETE /orgs/{org}/actions/permissions/repositories/{repository_id}"]["response"]; + }; + disableWorkflow: { + parameters: RequestParameters & Omit; + response: Endpoints["PUT /repos/{owner}/{repo}/actions/workflows/{workflow_id}/disable"]["response"]; + }; + downloadArtifact: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/actions/artifacts/{artifact_id}/{archive_format}"]["response"]; + }; + downloadJobLogsForWorkflowRun: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/actions/jobs/{job_id}/logs"]["response"]; + }; + downloadWorkflowRunAttemptLogs: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/logs"]["response"]; + }; + downloadWorkflowRunLogs: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/actions/runs/{run_id}/logs"]["response"]; + }; + enableSelectedRepositoryGithubActionsOrganization: { + parameters: RequestParameters & Omit; + response: Endpoints["PUT /orgs/{org}/actions/permissions/repositories/{repository_id}"]["response"]; + }; + enableWorkflow: { + parameters: RequestParameters & Omit; + response: Endpoints["PUT /repos/{owner}/{repo}/actions/workflows/{workflow_id}/enable"]["response"]; + }; + getActionsCacheList: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/actions/caches"]["response"]; + }; + getActionsCacheUsage: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/actions/cache/usage"]["response"]; + }; + getActionsCacheUsageByRepoForOrg: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /orgs/{org}/actions/cache/usage-by-repository"]["response"]; + }; + getActionsCacheUsageForEnterprise: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /enterprises/{enterprise}/actions/cache/usage"]["response"]; + }; + getActionsCacheUsageForOrg: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /orgs/{org}/actions/cache/usage"]["response"]; + }; + getAllowedActionsOrganization: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /orgs/{org}/actions/permissions/selected-actions"]["response"]; + }; + getAllowedActionsRepository: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/actions/permissions/selected-actions"]["response"]; + }; + getArtifact: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/actions/artifacts/{artifact_id}"]["response"]; + }; + getEnvironmentPublicKey: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repositories/{repository_id}/environments/{environment_name}/secrets/public-key"]["response"]; + }; + getEnvironmentSecret: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repositories/{repository_id}/environments/{environment_name}/secrets/{secret_name}"]["response"]; + }; + getGithubActionsDefaultWorkflowPermissionsEnterprise: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /enterprises/{enterprise}/actions/permissions/workflow"]["response"]; + }; + getGithubActionsDefaultWorkflowPermissionsOrganization: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /orgs/{org}/actions/permissions/workflow"]["response"]; + }; + getGithubActionsDefaultWorkflowPermissionsRepository: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/actions/permissions/workflow"]["response"]; + }; + getGithubActionsPermissionsOrganization: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /orgs/{org}/actions/permissions"]["response"]; + }; + getGithubActionsPermissionsRepository: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/actions/permissions"]["response"]; + }; + getJobForWorkflowRun: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/actions/jobs/{job_id}"]["response"]; + }; + getOrgPublicKey: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /orgs/{org}/actions/secrets/public-key"]["response"]; + }; + getOrgSecret: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /orgs/{org}/actions/secrets/{secret_name}"]["response"]; + }; + getPendingDeploymentsForRun: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/actions/runs/{run_id}/pending_deployments"]["response"]; + }; + getRepoPermissions: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/actions/permissions"]["response"]; + }; + getRepoPublicKey: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/actions/secrets/public-key"]["response"]; + }; + getRepoSecret: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/actions/secrets/{secret_name}"]["response"]; + }; + getReviewsForRun: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/actions/runs/{run_id}/approvals"]["response"]; + }; + getSelfHostedRunnerForOrg: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /orgs/{org}/actions/runners/{runner_id}"]["response"]; + }; + getSelfHostedRunnerForRepo: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/actions/runners/{runner_id}"]["response"]; + }; + getWorkflow: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}"]["response"]; + }; + getWorkflowAccessToRepository: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/actions/permissions/access"]["response"]; + }; + getWorkflowRun: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/actions/runs/{run_id}"]["response"]; + }; + getWorkflowRunAttempt: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}"]["response"]; + }; + getWorkflowRunUsage: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/actions/runs/{run_id}/timing"]["response"]; + }; + getWorkflowUsage: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/timing"]["response"]; + }; + listArtifactsForRepo: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/actions/artifacts"]["response"]; + }; + listEnvironmentSecrets: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repositories/{repository_id}/environments/{environment_name}/secrets"]["response"]; + }; + listJobsForWorkflowRun: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/actions/runs/{run_id}/jobs"]["response"]; + }; + listJobsForWorkflowRunAttempt: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/jobs"]["response"]; + }; + listLabelsForSelfHostedRunnerForOrg: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /orgs/{org}/actions/runners/{runner_id}/labels"]["response"]; + }; + listLabelsForSelfHostedRunnerForRepo: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/actions/runners/{runner_id}/labels"]["response"]; + }; + listOrgSecrets: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /orgs/{org}/actions/secrets"]["response"]; + }; + listRepoSecrets: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/actions/secrets"]["response"]; + }; + listRepoWorkflows: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/actions/workflows"]["response"]; + }; + listRunnerApplicationsForOrg: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /orgs/{org}/actions/runners/downloads"]["response"]; + }; + listRunnerApplicationsForRepo: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/actions/runners/downloads"]["response"]; + }; + listSelectedReposForOrgSecret: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /orgs/{org}/actions/secrets/{secret_name}/repositories"]["response"]; + }; + listSelectedRepositoriesEnabledGithubActionsOrganization: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /orgs/{org}/actions/permissions/repositories"]["response"]; + }; + listSelfHostedRunnersForOrg: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /orgs/{org}/actions/runners"]["response"]; + }; + listSelfHostedRunnersForRepo: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/actions/runners"]["response"]; + }; + listWorkflowRunArtifacts: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/actions/runs/{run_id}/artifacts"]["response"]; + }; + listWorkflowRuns: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/runs"]["response"]; + }; + listWorkflowRunsForRepo: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/actions/runs"]["response"]; + }; + reRunJobForWorkflowRun: { + parameters: RequestParameters & Omit; + response: Endpoints["POST /repos/{owner}/{repo}/actions/jobs/{job_id}/rerun"]["response"]; + }; + reRunWorkflow: { + parameters: RequestParameters & Omit; + response: Endpoints["POST /repos/{owner}/{repo}/actions/runs/{run_id}/rerun"]["response"]; + }; + reRunWorkflowFailedJobs: { + parameters: RequestParameters & Omit; + response: Endpoints["POST /repos/{owner}/{repo}/actions/runs/{run_id}/rerun-failed-jobs"]["response"]; + }; + removeAllCustomLabelsFromSelfHostedRunnerForOrg: { + parameters: RequestParameters & Omit; + response: Endpoints["DELETE /orgs/{org}/actions/runners/{runner_id}/labels"]["response"]; + }; + removeAllCustomLabelsFromSelfHostedRunnerForRepo: { + parameters: RequestParameters & Omit; + response: Endpoints["DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}/labels"]["response"]; + }; + removeCustomLabelFromSelfHostedRunnerForOrg: { + parameters: RequestParameters & Omit; + response: Endpoints["DELETE /orgs/{org}/actions/runners/{runner_id}/labels/{name}"]["response"]; + }; + removeCustomLabelFromSelfHostedRunnerForRepo: { + parameters: RequestParameters & Omit; + response: Endpoints["DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}/labels/{name}"]["response"]; + }; + removeSelectedRepoFromOrgSecret: { + parameters: RequestParameters & Omit; + response: Endpoints["DELETE /orgs/{org}/actions/secrets/{secret_name}/repositories/{repository_id}"]["response"]; + }; + reviewPendingDeploymentsForRun: { + parameters: RequestParameters & Omit; + response: Endpoints["POST /repos/{owner}/{repo}/actions/runs/{run_id}/pending_deployments"]["response"]; + }; + setAllowedActionsOrganization: { + parameters: RequestParameters & Omit; + response: Endpoints["PUT /orgs/{org}/actions/permissions/selected-actions"]["response"]; + }; + setAllowedActionsRepository: { + parameters: RequestParameters & Omit; + response: Endpoints["PUT /repos/{owner}/{repo}/actions/permissions/selected-actions"]["response"]; + }; + setCustomLabelsForSelfHostedRunnerForOrg: { + parameters: RequestParameters & Omit; + response: Endpoints["PUT /orgs/{org}/actions/runners/{runner_id}/labels"]["response"]; + }; + setCustomLabelsForSelfHostedRunnerForRepo: { + parameters: RequestParameters & Omit; + response: Endpoints["PUT /repos/{owner}/{repo}/actions/runners/{runner_id}/labels"]["response"]; + }; + setGithubActionsDefaultWorkflowPermissionsEnterprise: { + parameters: RequestParameters & Omit; + response: Endpoints["PUT /enterprises/{enterprise}/actions/permissions/workflow"]["response"]; + }; + setGithubActionsDefaultWorkflowPermissionsOrganization: { + parameters: RequestParameters & Omit; + response: Endpoints["PUT /orgs/{org}/actions/permissions/workflow"]["response"]; + }; + setGithubActionsDefaultWorkflowPermissionsRepository: { + parameters: RequestParameters & Omit; + response: Endpoints["PUT /repos/{owner}/{repo}/actions/permissions/workflow"]["response"]; + }; + setGithubActionsPermissionsOrganization: { + parameters: RequestParameters & Omit; + response: Endpoints["PUT /orgs/{org}/actions/permissions"]["response"]; + }; + setGithubActionsPermissionsRepository: { + parameters: RequestParameters & Omit; + response: Endpoints["PUT /repos/{owner}/{repo}/actions/permissions"]["response"]; + }; + setSelectedReposForOrgSecret: { + parameters: RequestParameters & Omit; + response: Endpoints["PUT /orgs/{org}/actions/secrets/{secret_name}/repositories"]["response"]; + }; + setSelectedRepositoriesEnabledGithubActionsOrganization: { + parameters: RequestParameters & Omit; + response: Endpoints["PUT /orgs/{org}/actions/permissions/repositories"]["response"]; + }; + setWorkflowAccessToRepository: { + parameters: RequestParameters & Omit; + response: Endpoints["PUT /repos/{owner}/{repo}/actions/permissions/access"]["response"]; + }; + }; + activity: { + checkRepoIsStarredByAuthenticatedUser: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /user/starred/{owner}/{repo}"]["response"]; + }; + deleteRepoSubscription: { + parameters: RequestParameters & Omit; + response: Endpoints["DELETE /repos/{owner}/{repo}/subscription"]["response"]; + }; + deleteThreadSubscription: { + parameters: RequestParameters & Omit; + response: Endpoints["DELETE /notifications/threads/{thread_id}/subscription"]["response"]; + }; + getFeeds: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /feeds"]["response"]; + }; + getRepoSubscription: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/subscription"]["response"]; + }; + getThread: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /notifications/threads/{thread_id}"]["response"]; + }; + getThreadSubscriptionForAuthenticatedUser: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /notifications/threads/{thread_id}/subscription"]["response"]; + }; + listEventsForAuthenticatedUser: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /users/{username}/events"]["response"]; + }; + listNotificationsForAuthenticatedUser: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /notifications"]["response"]; + }; + listOrgEventsForAuthenticatedUser: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /users/{username}/events/orgs/{org}"]["response"]; + }; + listPublicEvents: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /events"]["response"]; + }; + listPublicEventsForRepoNetwork: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /networks/{owner}/{repo}/events"]["response"]; + }; + listPublicEventsForUser: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /users/{username}/events/public"]["response"]; + }; + listPublicOrgEvents: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /orgs/{org}/events"]["response"]; + }; + listReceivedEventsForUser: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /users/{username}/received_events"]["response"]; + }; + listReceivedPublicEventsForUser: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /users/{username}/received_events/public"]["response"]; + }; + listRepoEvents: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/events"]["response"]; + }; + listRepoNotificationsForAuthenticatedUser: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/notifications"]["response"]; + }; + listReposStarredByAuthenticatedUser: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /user/starred"]["response"]; + }; + listReposStarredByUser: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /users/{username}/starred"]["response"]; + }; + listReposWatchedByUser: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /users/{username}/subscriptions"]["response"]; + }; + listStargazersForRepo: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/stargazers"]["response"]; + }; + listWatchedReposForAuthenticatedUser: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /user/subscriptions"]["response"]; + }; + listWatchersForRepo: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/subscribers"]["response"]; + }; + markNotificationsAsRead: { + parameters: RequestParameters & Omit; + response: Endpoints["PUT /notifications"]["response"]; + }; + markRepoNotificationsAsRead: { + parameters: RequestParameters & Omit; + response: Endpoints["PUT /repos/{owner}/{repo}/notifications"]["response"]; + }; + markThreadAsRead: { + parameters: RequestParameters & Omit; + response: Endpoints["PATCH /notifications/threads/{thread_id}"]["response"]; + }; + setRepoSubscription: { + parameters: RequestParameters & Omit; + response: Endpoints["PUT /repos/{owner}/{repo}/subscription"]["response"]; + }; + setThreadSubscription: { + parameters: RequestParameters & Omit; + response: Endpoints["PUT /notifications/threads/{thread_id}/subscription"]["response"]; + }; + starRepoForAuthenticatedUser: { + parameters: RequestParameters & Omit; + response: Endpoints["PUT /user/starred/{owner}/{repo}"]["response"]; + }; + unstarRepoForAuthenticatedUser: { + parameters: RequestParameters & Omit; + response: Endpoints["DELETE /user/starred/{owner}/{repo}"]["response"]; + }; + }; + apps: { + addRepoToInstallation: { + parameters: RequestParameters & Omit; + response: Endpoints["PUT /user/installations/{installation_id}/repositories/{repository_id}"]["response"]; + }; + addRepoToInstallationForAuthenticatedUser: { + parameters: RequestParameters & Omit; + response: Endpoints["PUT /user/installations/{installation_id}/repositories/{repository_id}"]["response"]; + }; + checkToken: { + parameters: RequestParameters & Omit; + response: Endpoints["POST /applications/{client_id}/token"]["response"]; + }; + createFromManifest: { + parameters: RequestParameters & Omit; + response: Endpoints["POST /app-manifests/{code}/conversions"]["response"]; + }; + createInstallationAccessToken: { + parameters: RequestParameters & Omit; + response: Endpoints["POST /app/installations/{installation_id}/access_tokens"]["response"]; + }; + deleteAuthorization: { + parameters: RequestParameters & Omit; + response: Endpoints["DELETE /applications/{client_id}/grant"]["response"]; + }; + deleteInstallation: { + parameters: RequestParameters & Omit; + response: Endpoints["DELETE /app/installations/{installation_id}"]["response"]; + }; + deleteToken: { + parameters: RequestParameters & Omit; + response: Endpoints["DELETE /applications/{client_id}/token"]["response"]; + }; + getAuthenticated: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /app"]["response"]; + }; + getBySlug: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /apps/{app_slug}"]["response"]; + }; + getInstallation: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /app/installations/{installation_id}"]["response"]; + }; + getOrgInstallation: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /orgs/{org}/installation"]["response"]; + }; + getRepoInstallation: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/installation"]["response"]; + }; + getSubscriptionPlanForAccount: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /marketplace_listing/accounts/{account_id}"]["response"]; + }; + getSubscriptionPlanForAccountStubbed: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /marketplace_listing/stubbed/accounts/{account_id}"]["response"]; + }; + getUserInstallation: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /users/{username}/installation"]["response"]; + }; + getWebhookConfigForApp: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /app/hook/config"]["response"]; + }; + getWebhookDelivery: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /app/hook/deliveries/{delivery_id}"]["response"]; + }; + listAccountsForPlan: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /marketplace_listing/plans/{plan_id}/accounts"]["response"]; + }; + listAccountsForPlanStubbed: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /marketplace_listing/stubbed/plans/{plan_id}/accounts"]["response"]; + }; + listInstallationReposForAuthenticatedUser: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /user/installations/{installation_id}/repositories"]["response"]; + }; + listInstallations: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /app/installations"]["response"]; + }; + listInstallationsForAuthenticatedUser: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /user/installations"]["response"]; + }; + listPlans: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /marketplace_listing/plans"]["response"]; + }; + listPlansStubbed: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /marketplace_listing/stubbed/plans"]["response"]; + }; + listReposAccessibleToInstallation: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /installation/repositories"]["response"]; + }; + listSubscriptionsForAuthenticatedUser: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /user/marketplace_purchases"]["response"]; + }; + listSubscriptionsForAuthenticatedUserStubbed: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /user/marketplace_purchases/stubbed"]["response"]; + }; + listWebhookDeliveries: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /app/hook/deliveries"]["response"]; + }; + redeliverWebhookDelivery: { + parameters: RequestParameters & Omit; + response: Endpoints["POST /app/hook/deliveries/{delivery_id}/attempts"]["response"]; + }; + removeRepoFromInstallation: { + parameters: RequestParameters & Omit; + response: Endpoints["DELETE /user/installations/{installation_id}/repositories/{repository_id}"]["response"]; + }; + removeRepoFromInstallationForAuthenticatedUser: { + parameters: RequestParameters & Omit; + response: Endpoints["DELETE /user/installations/{installation_id}/repositories/{repository_id}"]["response"]; + }; + resetToken: { + parameters: RequestParameters & Omit; + response: Endpoints["PATCH /applications/{client_id}/token"]["response"]; + }; + revokeInstallationAccessToken: { + parameters: RequestParameters & Omit; + response: Endpoints["DELETE /installation/token"]["response"]; + }; + scopeToken: { + parameters: RequestParameters & Omit; + response: Endpoints["POST /applications/{client_id}/token/scoped"]["response"]; + }; + suspendInstallation: { + parameters: RequestParameters & Omit; + response: Endpoints["PUT /app/installations/{installation_id}/suspended"]["response"]; + }; + unsuspendInstallation: { + parameters: RequestParameters & Omit; + response: Endpoints["DELETE /app/installations/{installation_id}/suspended"]["response"]; + }; + updateWebhookConfigForApp: { + parameters: RequestParameters & Omit; + response: Endpoints["PATCH /app/hook/config"]["response"]; + }; + }; + billing: { + getGithubActionsBillingOrg: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /orgs/{org}/settings/billing/actions"]["response"]; + }; + getGithubActionsBillingUser: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /users/{username}/settings/billing/actions"]["response"]; + }; + getGithubAdvancedSecurityBillingGhe: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /enterprises/{enterprise}/settings/billing/advanced-security"]["response"]; + }; + getGithubAdvancedSecurityBillingOrg: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /orgs/{org}/settings/billing/advanced-security"]["response"]; + }; + getGithubPackagesBillingOrg: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /orgs/{org}/settings/billing/packages"]["response"]; + }; + getGithubPackagesBillingUser: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /users/{username}/settings/billing/packages"]["response"]; + }; + getSharedStorageBillingOrg: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /orgs/{org}/settings/billing/shared-storage"]["response"]; + }; + getSharedStorageBillingUser: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /users/{username}/settings/billing/shared-storage"]["response"]; + }; + }; + checks: { + create: { + parameters: RequestParameters & Omit; + response: Endpoints["POST /repos/{owner}/{repo}/check-runs"]["response"]; + }; + createSuite: { + parameters: RequestParameters & Omit; + response: Endpoints["POST /repos/{owner}/{repo}/check-suites"]["response"]; + }; + get: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/check-runs/{check_run_id}"]["response"]; + }; + getSuite: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/check-suites/{check_suite_id}"]["response"]; + }; + listAnnotations: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/check-runs/{check_run_id}/annotations"]["response"]; + }; + listForRef: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/commits/{ref}/check-runs"]["response"]; + }; + listForSuite: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/check-suites/{check_suite_id}/check-runs"]["response"]; + }; + listSuitesForRef: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/commits/{ref}/check-suites"]["response"]; + }; + rerequestRun: { + parameters: RequestParameters & Omit; + response: Endpoints["POST /repos/{owner}/{repo}/check-runs/{check_run_id}/rerequest"]["response"]; + }; + rerequestSuite: { + parameters: RequestParameters & Omit; + response: Endpoints["POST /repos/{owner}/{repo}/check-suites/{check_suite_id}/rerequest"]["response"]; + }; + setSuitesPreferences: { + parameters: RequestParameters & Omit; + response: Endpoints["PATCH /repos/{owner}/{repo}/check-suites/preferences"]["response"]; + }; + update: { + parameters: RequestParameters & Omit; + response: Endpoints["PATCH /repos/{owner}/{repo}/check-runs/{check_run_id}"]["response"]; + }; + }; + codeScanning: { + deleteAnalysis: { + parameters: RequestParameters & Omit; + response: Endpoints["DELETE /repos/{owner}/{repo}/code-scanning/analyses/{analysis_id}{?confirm_delete}"]["response"]; + }; + getAlert: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}"]["response"]; + }; + getAnalysis: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/code-scanning/analyses/{analysis_id}"]["response"]; + }; + getSarif: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/code-scanning/sarifs/{sarif_id}"]["response"]; + }; + listAlertInstances: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances"]["response"]; + }; + listAlertsForOrg: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /orgs/{org}/code-scanning/alerts"]["response"]; + }; + listAlertsForRepo: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/code-scanning/alerts"]["response"]; + }; + listAlertsInstances: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances"]["response"]; + }; + listRecentAnalyses: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/code-scanning/analyses"]["response"]; + }; + updateAlert: { + parameters: RequestParameters & Omit; + response: Endpoints["PATCH /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}"]["response"]; + }; + uploadSarif: { + parameters: RequestParameters & Omit; + response: Endpoints["POST /repos/{owner}/{repo}/code-scanning/sarifs"]["response"]; + }; + }; + codesOfConduct: { + getAllCodesOfConduct: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /codes_of_conduct"]["response"]; + }; + getConductCode: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /codes_of_conduct/{key}"]["response"]; + }; + }; + codespaces: { + addRepositoryForSecretForAuthenticatedUser: { + parameters: RequestParameters & Omit; + response: Endpoints["PUT /user/codespaces/secrets/{secret_name}/repositories/{repository_id}"]["response"]; + }; + codespaceMachinesForAuthenticatedUser: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /user/codespaces/{codespace_name}/machines"]["response"]; + }; + createForAuthenticatedUser: { + parameters: RequestParameters & Omit; + response: Endpoints["POST /user/codespaces"]["response"]; + }; + createOrUpdateRepoSecret: { + parameters: RequestParameters & Omit; + response: Endpoints["PUT /repos/{owner}/{repo}/codespaces/secrets/{secret_name}"]["response"]; + }; + createOrUpdateSecretForAuthenticatedUser: { + parameters: RequestParameters & Omit; + response: Endpoints["PUT /user/codespaces/secrets/{secret_name}"]["response"]; + }; + createWithPrForAuthenticatedUser: { + parameters: RequestParameters & Omit; + response: Endpoints["POST /repos/{owner}/{repo}/pulls/{pull_number}/codespaces"]["response"]; + }; + createWithRepoForAuthenticatedUser: { + parameters: RequestParameters & Omit; + response: Endpoints["POST /repos/{owner}/{repo}/codespaces"]["response"]; + }; + deleteForAuthenticatedUser: { + parameters: RequestParameters & Omit; + response: Endpoints["DELETE /user/codespaces/{codespace_name}"]["response"]; + }; + deleteFromOrganization: { + parameters: RequestParameters & Omit; + response: Endpoints["DELETE /orgs/{org}/members/{username}/codespaces/{codespace_name}"]["response"]; + }; + deleteRepoSecret: { + parameters: RequestParameters & Omit; + response: Endpoints["DELETE /repos/{owner}/{repo}/codespaces/secrets/{secret_name}"]["response"]; + }; + deleteSecretForAuthenticatedUser: { + parameters: RequestParameters & Omit; + response: Endpoints["DELETE /user/codespaces/secrets/{secret_name}"]["response"]; + }; + exportForAuthenticatedUser: { + parameters: RequestParameters & Omit; + response: Endpoints["POST /user/codespaces/{codespace_name}/exports"]["response"]; + }; + getExportDetailsForAuthenticatedUser: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /user/codespaces/{codespace_name}/exports/{export_id}"]["response"]; + }; + getForAuthenticatedUser: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /user/codespaces/{codespace_name}"]["response"]; + }; + getPublicKeyForAuthenticatedUser: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /user/codespaces/secrets/public-key"]["response"]; + }; + getRepoPublicKey: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/codespaces/secrets/public-key"]["response"]; + }; + getRepoSecret: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/codespaces/secrets/{secret_name}"]["response"]; + }; + getSecretForAuthenticatedUser: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /user/codespaces/secrets/{secret_name}"]["response"]; + }; + listDevcontainersInRepositoryForAuthenticatedUser: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/codespaces/devcontainers"]["response"]; + }; + listForAuthenticatedUser: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /user/codespaces"]["response"]; + }; + listInOrganization: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /orgs/{org}/codespaces"]["response"]; + }; + listInRepositoryForAuthenticatedUser: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/codespaces"]["response"]; + }; + listRepoSecrets: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/codespaces/secrets"]["response"]; + }; + listRepositoriesForSecretForAuthenticatedUser: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /user/codespaces/secrets/{secret_name}/repositories"]["response"]; + }; + listSecretsForAuthenticatedUser: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /user/codespaces/secrets"]["response"]; + }; + removeRepositoryForSecretForAuthenticatedUser: { + parameters: RequestParameters & Omit; + response: Endpoints["DELETE /user/codespaces/secrets/{secret_name}/repositories/{repository_id}"]["response"]; + }; + repoMachinesForAuthenticatedUser: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/codespaces/machines"]["response"]; + }; + setRepositoriesForSecretForAuthenticatedUser: { + parameters: RequestParameters & Omit; + response: Endpoints["PUT /user/codespaces/secrets/{secret_name}/repositories"]["response"]; + }; + startForAuthenticatedUser: { + parameters: RequestParameters & Omit; + response: Endpoints["POST /user/codespaces/{codespace_name}/start"]["response"]; + }; + stopForAuthenticatedUser: { + parameters: RequestParameters & Omit; + response: Endpoints["POST /user/codespaces/{codespace_name}/stop"]["response"]; + }; + stopInOrganization: { + parameters: RequestParameters & Omit; + response: Endpoints["POST /orgs/{org}/members/{username}/codespaces/{codespace_name}/stop"]["response"]; + }; + updateForAuthenticatedUser: { + parameters: RequestParameters & Omit; + response: Endpoints["PATCH /user/codespaces/{codespace_name}"]["response"]; + }; + }; + dependabot: { + addSelectedRepoToOrgSecret: { + parameters: RequestParameters & Omit; + response: Endpoints["PUT /orgs/{org}/dependabot/secrets/{secret_name}/repositories/{repository_id}"]["response"]; + }; + createOrUpdateOrgSecret: { + parameters: RequestParameters & Omit; + response: Endpoints["PUT /orgs/{org}/dependabot/secrets/{secret_name}"]["response"]; + }; + createOrUpdateRepoSecret: { + parameters: RequestParameters & Omit; + response: Endpoints["PUT /repos/{owner}/{repo}/dependabot/secrets/{secret_name}"]["response"]; + }; + deleteOrgSecret: { + parameters: RequestParameters & Omit; + response: Endpoints["DELETE /orgs/{org}/dependabot/secrets/{secret_name}"]["response"]; + }; + deleteRepoSecret: { + parameters: RequestParameters & Omit; + response: Endpoints["DELETE /repos/{owner}/{repo}/dependabot/secrets/{secret_name}"]["response"]; + }; + getOrgPublicKey: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /orgs/{org}/dependabot/secrets/public-key"]["response"]; + }; + getOrgSecret: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /orgs/{org}/dependabot/secrets/{secret_name}"]["response"]; + }; + getRepoPublicKey: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/dependabot/secrets/public-key"]["response"]; + }; + getRepoSecret: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/dependabot/secrets/{secret_name}"]["response"]; + }; + listOrgSecrets: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /orgs/{org}/dependabot/secrets"]["response"]; + }; + listRepoSecrets: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/dependabot/secrets"]["response"]; + }; + listSelectedReposForOrgSecret: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /orgs/{org}/dependabot/secrets/{secret_name}/repositories"]["response"]; + }; + removeSelectedRepoFromOrgSecret: { + parameters: RequestParameters & Omit; + response: Endpoints["DELETE /orgs/{org}/dependabot/secrets/{secret_name}/repositories/{repository_id}"]["response"]; + }; + setSelectedReposForOrgSecret: { + parameters: RequestParameters & Omit; + response: Endpoints["PUT /orgs/{org}/dependabot/secrets/{secret_name}/repositories"]["response"]; + }; + }; + dependencyGraph: { + createRepositorySnapshot: { + parameters: RequestParameters & Omit; + response: Endpoints["POST /repos/{owner}/{repo}/dependency-graph/snapshots"]["response"]; + }; + diffRange: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/dependency-graph/compare/{basehead}"]["response"]; + }; + }; + emojis: { + get: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /emojis"]["response"]; + }; + }; + enterpriseAdmin: { + addCustomLabelsToSelfHostedRunnerForEnterprise: { + parameters: RequestParameters & Omit; + response: Endpoints["POST /enterprises/{enterprise}/actions/runners/{runner_id}/labels"]["response"]; + }; + disableSelectedOrganizationGithubActionsEnterprise: { + parameters: RequestParameters & Omit; + response: Endpoints["DELETE /enterprises/{enterprise}/actions/permissions/organizations/{org_id}"]["response"]; + }; + enableSelectedOrganizationGithubActionsEnterprise: { + parameters: RequestParameters & Omit; + response: Endpoints["PUT /enterprises/{enterprise}/actions/permissions/organizations/{org_id}"]["response"]; + }; + getAllowedActionsEnterprise: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /enterprises/{enterprise}/actions/permissions/selected-actions"]["response"]; + }; + getGithubActionsPermissionsEnterprise: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /enterprises/{enterprise}/actions/permissions"]["response"]; + }; + getServerStatistics: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /enterprise-installation/{enterprise_or_org}/server-statistics"]["response"]; + }; + listLabelsForSelfHostedRunnerForEnterprise: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /enterprises/{enterprise}/actions/runners/{runner_id}/labels"]["response"]; + }; + listSelectedOrganizationsEnabledGithubActionsEnterprise: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /enterprises/{enterprise}/actions/permissions/organizations"]["response"]; + }; + removeAllCustomLabelsFromSelfHostedRunnerForEnterprise: { + parameters: RequestParameters & Omit; + response: Endpoints["DELETE /enterprises/{enterprise}/actions/runners/{runner_id}/labels"]["response"]; + }; + removeCustomLabelFromSelfHostedRunnerForEnterprise: { + parameters: RequestParameters & Omit; + response: Endpoints["DELETE /enterprises/{enterprise}/actions/runners/{runner_id}/labels/{name}"]["response"]; + }; + setAllowedActionsEnterprise: { + parameters: RequestParameters & Omit; + response: Endpoints["PUT /enterprises/{enterprise}/actions/permissions/selected-actions"]["response"]; + }; + setCustomLabelsForSelfHostedRunnerForEnterprise: { + parameters: RequestParameters & Omit; + response: Endpoints["PUT /enterprises/{enterprise}/actions/runners/{runner_id}/labels"]["response"]; + }; + setGithubActionsPermissionsEnterprise: { + parameters: RequestParameters & Omit; + response: Endpoints["PUT /enterprises/{enterprise}/actions/permissions"]["response"]; + }; + setSelectedOrganizationsEnabledGithubActionsEnterprise: { + parameters: RequestParameters & Omit; + response: Endpoints["PUT /enterprises/{enterprise}/actions/permissions/organizations"]["response"]; + }; + }; + gists: { + checkIsStarred: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /gists/{gist_id}/star"]["response"]; + }; + create: { + parameters: RequestParameters & Omit; + response: Endpoints["POST /gists"]["response"]; + }; + createComment: { + parameters: RequestParameters & Omit; + response: Endpoints["POST /gists/{gist_id}/comments"]["response"]; + }; + delete: { + parameters: RequestParameters & Omit; + response: Endpoints["DELETE /gists/{gist_id}"]["response"]; + }; + deleteComment: { + parameters: RequestParameters & Omit; + response: Endpoints["DELETE /gists/{gist_id}/comments/{comment_id}"]["response"]; + }; + fork: { + parameters: RequestParameters & Omit; + response: Endpoints["POST /gists/{gist_id}/forks"]["response"]; + }; + get: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /gists/{gist_id}"]["response"]; + }; + getComment: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /gists/{gist_id}/comments/{comment_id}"]["response"]; + }; + getRevision: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /gists/{gist_id}/{sha}"]["response"]; + }; + list: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /gists"]["response"]; + }; + listComments: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /gists/{gist_id}/comments"]["response"]; + }; + listCommits: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /gists/{gist_id}/commits"]["response"]; + }; + listForUser: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /users/{username}/gists"]["response"]; + }; + listForks: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /gists/{gist_id}/forks"]["response"]; + }; + listPublic: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /gists/public"]["response"]; + }; + listStarred: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /gists/starred"]["response"]; + }; + star: { + parameters: RequestParameters & Omit; + response: Endpoints["PUT /gists/{gist_id}/star"]["response"]; + }; + unstar: { + parameters: RequestParameters & Omit; + response: Endpoints["DELETE /gists/{gist_id}/star"]["response"]; + }; + update: { + parameters: RequestParameters & Omit; + response: Endpoints["PATCH /gists/{gist_id}"]["response"]; + }; + updateComment: { + parameters: RequestParameters & Omit; + response: Endpoints["PATCH /gists/{gist_id}/comments/{comment_id}"]["response"]; + }; + }; + git: { + createBlob: { + parameters: RequestParameters & Omit; + response: Endpoints["POST /repos/{owner}/{repo}/git/blobs"]["response"]; + }; + createCommit: { + parameters: RequestParameters & Omit; + response: Endpoints["POST /repos/{owner}/{repo}/git/commits"]["response"]; + }; + createRef: { + parameters: RequestParameters & Omit; + response: Endpoints["POST /repos/{owner}/{repo}/git/refs"]["response"]; + }; + createTag: { + parameters: RequestParameters & Omit; + response: Endpoints["POST /repos/{owner}/{repo}/git/tags"]["response"]; + }; + createTree: { + parameters: RequestParameters & Omit; + response: Endpoints["POST /repos/{owner}/{repo}/git/trees"]["response"]; + }; + deleteRef: { + parameters: RequestParameters & Omit; + response: Endpoints["DELETE /repos/{owner}/{repo}/git/refs/{ref}"]["response"]; + }; + getBlob: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/git/blobs/{file_sha}"]["response"]; + }; + getCommit: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/git/commits/{commit_sha}"]["response"]; + }; + getRef: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/git/ref/{ref}"]["response"]; + }; + getTag: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/git/tags/{tag_sha}"]["response"]; + }; + getTree: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/git/trees/{tree_sha}"]["response"]; + }; + listMatchingRefs: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/git/matching-refs/{ref}"]["response"]; + }; + updateRef: { + parameters: RequestParameters & Omit; + response: Endpoints["PATCH /repos/{owner}/{repo}/git/refs/{ref}"]["response"]; + }; + }; + gitignore: { + getAllTemplates: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /gitignore/templates"]["response"]; + }; + getTemplate: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /gitignore/templates/{name}"]["response"]; + }; + }; + interactions: { + getRestrictionsForAuthenticatedUser: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /user/interaction-limits"]["response"]; + }; + getRestrictionsForOrg: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /orgs/{org}/interaction-limits"]["response"]; + }; + getRestrictionsForRepo: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/interaction-limits"]["response"]; + }; + getRestrictionsForYourPublicRepos: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /user/interaction-limits"]["response"]; + }; + removeRestrictionsForAuthenticatedUser: { + parameters: RequestParameters & Omit; + response: Endpoints["DELETE /user/interaction-limits"]["response"]; + }; + removeRestrictionsForOrg: { + parameters: RequestParameters & Omit; + response: Endpoints["DELETE /orgs/{org}/interaction-limits"]["response"]; + }; + removeRestrictionsForRepo: { + parameters: RequestParameters & Omit; + response: Endpoints["DELETE /repos/{owner}/{repo}/interaction-limits"]["response"]; + }; + removeRestrictionsForYourPublicRepos: { + parameters: RequestParameters & Omit; + response: Endpoints["DELETE /user/interaction-limits"]["response"]; + }; + setRestrictionsForAuthenticatedUser: { + parameters: RequestParameters & Omit; + response: Endpoints["PUT /user/interaction-limits"]["response"]; + }; + setRestrictionsForOrg: { + parameters: RequestParameters & Omit; + response: Endpoints["PUT /orgs/{org}/interaction-limits"]["response"]; + }; + setRestrictionsForRepo: { + parameters: RequestParameters & Omit; + response: Endpoints["PUT /repos/{owner}/{repo}/interaction-limits"]["response"]; + }; + setRestrictionsForYourPublicRepos: { + parameters: RequestParameters & Omit; + response: Endpoints["PUT /user/interaction-limits"]["response"]; + }; + }; + issues: { + addAssignees: { + parameters: RequestParameters & Omit; + response: Endpoints["POST /repos/{owner}/{repo}/issues/{issue_number}/assignees"]["response"]; + }; + addLabels: { + parameters: RequestParameters & Omit; + response: Endpoints["POST /repos/{owner}/{repo}/issues/{issue_number}/labels"]["response"]; + }; + checkUserCanBeAssigned: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/assignees/{assignee}"]["response"]; + }; + create: { + parameters: RequestParameters & Omit; + response: Endpoints["POST /repos/{owner}/{repo}/issues"]["response"]; + }; + createComment: { + parameters: RequestParameters & Omit; + response: Endpoints["POST /repos/{owner}/{repo}/issues/{issue_number}/comments"]["response"]; + }; + createLabel: { + parameters: RequestParameters & Omit; + response: Endpoints["POST /repos/{owner}/{repo}/labels"]["response"]; + }; + createMilestone: { + parameters: RequestParameters & Omit; + response: Endpoints["POST /repos/{owner}/{repo}/milestones"]["response"]; + }; + deleteComment: { + parameters: RequestParameters & Omit; + response: Endpoints["DELETE /repos/{owner}/{repo}/issues/comments/{comment_id}"]["response"]; + }; + deleteLabel: { + parameters: RequestParameters & Omit; + response: Endpoints["DELETE /repos/{owner}/{repo}/labels/{name}"]["response"]; + }; + deleteMilestone: { + parameters: RequestParameters & Omit; + response: Endpoints["DELETE /repos/{owner}/{repo}/milestones/{milestone_number}"]["response"]; + }; + get: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/issues/{issue_number}"]["response"]; + }; + getComment: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/issues/comments/{comment_id}"]["response"]; + }; + getEvent: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/issues/events/{event_id}"]["response"]; + }; + getLabel: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/labels/{name}"]["response"]; + }; + getMilestone: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/milestones/{milestone_number}"]["response"]; + }; + list: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /issues"]["response"]; + }; + listAssignees: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/assignees"]["response"]; + }; + listComments: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/issues/{issue_number}/comments"]["response"]; + }; + listCommentsForRepo: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/issues/comments"]["response"]; + }; + listEvents: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/issues/{issue_number}/events"]["response"]; + }; + listEventsForRepo: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/issues/events"]["response"]; + }; + listEventsForTimeline: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/issues/{issue_number}/timeline"]["response"]; + }; + listForAuthenticatedUser: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /user/issues"]["response"]; + }; + listForOrg: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /orgs/{org}/issues"]["response"]; + }; + listForRepo: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/issues"]["response"]; + }; + listLabelsForMilestone: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/milestones/{milestone_number}/labels"]["response"]; + }; + listLabelsForRepo: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/labels"]["response"]; + }; + listLabelsOnIssue: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/issues/{issue_number}/labels"]["response"]; + }; + listMilestones: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/milestones"]["response"]; + }; + lock: { + parameters: RequestParameters & Omit; + response: Endpoints["PUT /repos/{owner}/{repo}/issues/{issue_number}/lock"]["response"]; + }; + removeAllLabels: { + parameters: RequestParameters & Omit; + response: Endpoints["DELETE /repos/{owner}/{repo}/issues/{issue_number}/labels"]["response"]; + }; + removeAssignees: { + parameters: RequestParameters & Omit; + response: Endpoints["DELETE /repos/{owner}/{repo}/issues/{issue_number}/assignees"]["response"]; + }; + removeLabel: { + parameters: RequestParameters & Omit; + response: Endpoints["DELETE /repos/{owner}/{repo}/issues/{issue_number}/labels/{name}"]["response"]; + }; + setLabels: { + parameters: RequestParameters & Omit; + response: Endpoints["PUT /repos/{owner}/{repo}/issues/{issue_number}/labels"]["response"]; + }; + unlock: { + parameters: RequestParameters & Omit; + response: Endpoints["DELETE /repos/{owner}/{repo}/issues/{issue_number}/lock"]["response"]; + }; + update: { + parameters: RequestParameters & Omit; + response: Endpoints["PATCH /repos/{owner}/{repo}/issues/{issue_number}"]["response"]; + }; + updateComment: { + parameters: RequestParameters & Omit; + response: Endpoints["PATCH /repos/{owner}/{repo}/issues/comments/{comment_id}"]["response"]; + }; + updateLabel: { + parameters: RequestParameters & Omit; + response: Endpoints["PATCH /repos/{owner}/{repo}/labels/{name}"]["response"]; + }; + updateMilestone: { + parameters: RequestParameters & Omit; + response: Endpoints["PATCH /repos/{owner}/{repo}/milestones/{milestone_number}"]["response"]; + }; + }; + licenses: { + get: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /licenses/{license}"]["response"]; + }; + getAllCommonlyUsed: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /licenses"]["response"]; + }; + getForRepo: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/license"]["response"]; + }; + }; + markdown: { + render: { + parameters: RequestParameters & Omit; + response: Endpoints["POST /markdown"]["response"]; + }; + renderRaw: { + parameters: RequestParameters & Omit; + response: Endpoints["POST /markdown/raw"]["response"]; + }; + }; + meta: { + get: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /meta"]["response"]; + }; + getOctocat: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /octocat"]["response"]; + }; + getZen: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /zen"]["response"]; + }; + root: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /"]["response"]; + }; + }; + migrations: { + cancelImport: { + parameters: RequestParameters & Omit; + response: Endpoints["DELETE /repos/{owner}/{repo}/import"]["response"]; + }; + deleteArchiveForAuthenticatedUser: { + parameters: RequestParameters & Omit; + response: Endpoints["DELETE /user/migrations/{migration_id}/archive"]["response"]; + }; + deleteArchiveForOrg: { + parameters: RequestParameters & Omit; + response: Endpoints["DELETE /orgs/{org}/migrations/{migration_id}/archive"]["response"]; + }; + downloadArchiveForOrg: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /orgs/{org}/migrations/{migration_id}/archive"]["response"]; + }; + getArchiveForAuthenticatedUser: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /user/migrations/{migration_id}/archive"]["response"]; + }; + getCommitAuthors: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/import/authors"]["response"]; + }; + getImportStatus: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/import"]["response"]; + }; + getLargeFiles: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/import/large_files"]["response"]; + }; + getStatusForAuthenticatedUser: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /user/migrations/{migration_id}"]["response"]; + }; + getStatusForOrg: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /orgs/{org}/migrations/{migration_id}"]["response"]; + }; + listForAuthenticatedUser: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /user/migrations"]["response"]; + }; + listForOrg: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /orgs/{org}/migrations"]["response"]; + }; + listReposForAuthenticatedUser: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /user/migrations/{migration_id}/repositories"]["response"]; + }; + listReposForOrg: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /orgs/{org}/migrations/{migration_id}/repositories"]["response"]; + }; + listReposForUser: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /user/migrations/{migration_id}/repositories"]["response"]; + }; + mapCommitAuthor: { + parameters: RequestParameters & Omit; + response: Endpoints["PATCH /repos/{owner}/{repo}/import/authors/{author_id}"]["response"]; + }; + setLfsPreference: { + parameters: RequestParameters & Omit; + response: Endpoints["PATCH /repos/{owner}/{repo}/import/lfs"]["response"]; + }; + startForAuthenticatedUser: { + parameters: RequestParameters & Omit; + response: Endpoints["POST /user/migrations"]["response"]; + }; + startForOrg: { + parameters: RequestParameters & Omit; + response: Endpoints["POST /orgs/{org}/migrations"]["response"]; + }; + startImport: { + parameters: RequestParameters & Omit; + response: Endpoints["PUT /repos/{owner}/{repo}/import"]["response"]; + }; + unlockRepoForAuthenticatedUser: { + parameters: RequestParameters & Omit; + response: Endpoints["DELETE /user/migrations/{migration_id}/repos/{repo_name}/lock"]["response"]; + }; + unlockRepoForOrg: { + parameters: RequestParameters & Omit; + response: Endpoints["DELETE /orgs/{org}/migrations/{migration_id}/repos/{repo_name}/lock"]["response"]; + }; + updateImport: { + parameters: RequestParameters & Omit; + response: Endpoints["PATCH /repos/{owner}/{repo}/import"]["response"]; + }; + }; + orgs: { + blockUser: { + parameters: RequestParameters & Omit; + response: Endpoints["PUT /orgs/{org}/blocks/{username}"]["response"]; + }; + cancelInvitation: { + parameters: RequestParameters & Omit; + response: Endpoints["DELETE /orgs/{org}/invitations/{invitation_id}"]["response"]; + }; + checkBlockedUser: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /orgs/{org}/blocks/{username}"]["response"]; + }; + checkMembershipForUser: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /orgs/{org}/members/{username}"]["response"]; + }; + checkPublicMembershipForUser: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /orgs/{org}/public_members/{username}"]["response"]; + }; + convertMemberToOutsideCollaborator: { + parameters: RequestParameters & Omit; + response: Endpoints["PUT /orgs/{org}/outside_collaborators/{username}"]["response"]; + }; + createInvitation: { + parameters: RequestParameters & Omit; + response: Endpoints["POST /orgs/{org}/invitations"]["response"]; + }; + createWebhook: { + parameters: RequestParameters & Omit; + response: Endpoints["POST /orgs/{org}/hooks"]["response"]; + }; + deleteWebhook: { + parameters: RequestParameters & Omit; + response: Endpoints["DELETE /orgs/{org}/hooks/{hook_id}"]["response"]; + }; + get: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /orgs/{org}"]["response"]; + }; + getMembershipForAuthenticatedUser: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /user/memberships/orgs/{org}"]["response"]; + }; + getMembershipForUser: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /orgs/{org}/memberships/{username}"]["response"]; + }; + getWebhook: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /orgs/{org}/hooks/{hook_id}"]["response"]; + }; + getWebhookConfigForOrg: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /orgs/{org}/hooks/{hook_id}/config"]["response"]; + }; + getWebhookDelivery: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /orgs/{org}/hooks/{hook_id}/deliveries/{delivery_id}"]["response"]; + }; + list: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /organizations"]["response"]; + }; + listAppInstallations: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /orgs/{org}/installations"]["response"]; + }; + listBlockedUsers: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /orgs/{org}/blocks"]["response"]; + }; + listCustomRoles: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /organizations/{organization_id}/custom_roles"]["response"]; + }; + listFailedInvitations: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /orgs/{org}/failed_invitations"]["response"]; + }; + listForAuthenticatedUser: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /user/orgs"]["response"]; + }; + listForUser: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /users/{username}/orgs"]["response"]; + }; + listInvitationTeams: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /orgs/{org}/invitations/{invitation_id}/teams"]["response"]; + }; + listMembers: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /orgs/{org}/members"]["response"]; + }; + listMembershipsForAuthenticatedUser: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /user/memberships/orgs"]["response"]; + }; + listOutsideCollaborators: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /orgs/{org}/outside_collaborators"]["response"]; + }; + listPendingInvitations: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /orgs/{org}/invitations"]["response"]; + }; + listPublicMembers: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /orgs/{org}/public_members"]["response"]; + }; + listWebhookDeliveries: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /orgs/{org}/hooks/{hook_id}/deliveries"]["response"]; + }; + listWebhooks: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /orgs/{org}/hooks"]["response"]; + }; + pingWebhook: { + parameters: RequestParameters & Omit; + response: Endpoints["POST /orgs/{org}/hooks/{hook_id}/pings"]["response"]; + }; + redeliverWebhookDelivery: { + parameters: RequestParameters & Omit; + response: Endpoints["POST /orgs/{org}/hooks/{hook_id}/deliveries/{delivery_id}/attempts"]["response"]; + }; + removeMember: { + parameters: RequestParameters & Omit; + response: Endpoints["DELETE /orgs/{org}/members/{username}"]["response"]; + }; + removeMembershipForUser: { + parameters: RequestParameters & Omit; + response: Endpoints["DELETE /orgs/{org}/memberships/{username}"]["response"]; + }; + removeOutsideCollaborator: { + parameters: RequestParameters & Omit; + response: Endpoints["DELETE /orgs/{org}/outside_collaborators/{username}"]["response"]; + }; + removePublicMembershipForAuthenticatedUser: { + parameters: RequestParameters & Omit; + response: Endpoints["DELETE /orgs/{org}/public_members/{username}"]["response"]; + }; + setMembershipForUser: { + parameters: RequestParameters & Omit; + response: Endpoints["PUT /orgs/{org}/memberships/{username}"]["response"]; + }; + setPublicMembershipForAuthenticatedUser: { + parameters: RequestParameters & Omit; + response: Endpoints["PUT /orgs/{org}/public_members/{username}"]["response"]; + }; + unblockUser: { + parameters: RequestParameters & Omit; + response: Endpoints["DELETE /orgs/{org}/blocks/{username}"]["response"]; + }; + update: { + parameters: RequestParameters & Omit; + response: Endpoints["PATCH /orgs/{org}"]["response"]; + }; + updateMembershipForAuthenticatedUser: { + parameters: RequestParameters & Omit; + response: Endpoints["PATCH /user/memberships/orgs/{org}"]["response"]; + }; + updateWebhook: { + parameters: RequestParameters & Omit; + response: Endpoints["PATCH /orgs/{org}/hooks/{hook_id}"]["response"]; + }; + updateWebhookConfigForOrg: { + parameters: RequestParameters & Omit; + response: Endpoints["PATCH /orgs/{org}/hooks/{hook_id}/config"]["response"]; + }; + }; + packages: { + deletePackageForAuthenticatedUser: { + parameters: RequestParameters & Omit; + response: Endpoints["DELETE /user/packages/{package_type}/{package_name}"]["response"]; + }; + deletePackageForOrg: { + parameters: RequestParameters & Omit; + response: Endpoints["DELETE /orgs/{org}/packages/{package_type}/{package_name}"]["response"]; + }; + deletePackageForUser: { + parameters: RequestParameters & Omit; + response: Endpoints["DELETE /users/{username}/packages/{package_type}/{package_name}"]["response"]; + }; + deletePackageVersionForAuthenticatedUser: { + parameters: RequestParameters & Omit; + response: Endpoints["DELETE /user/packages/{package_type}/{package_name}/versions/{package_version_id}"]["response"]; + }; + deletePackageVersionForOrg: { + parameters: RequestParameters & Omit; + response: Endpoints["DELETE /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}"]["response"]; + }; + deletePackageVersionForUser: { + parameters: RequestParameters & Omit; + response: Endpoints["DELETE /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}"]["response"]; + }; + getAllPackageVersionsForAPackageOwnedByAnOrg: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /orgs/{org}/packages/{package_type}/{package_name}/versions"]["response"]; + }; + getAllPackageVersionsForAPackageOwnedByTheAuthenticatedUser: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /user/packages/{package_type}/{package_name}/versions"]["response"]; + }; + getAllPackageVersionsForPackageOwnedByAuthenticatedUser: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /user/packages/{package_type}/{package_name}/versions"]["response"]; + }; + getAllPackageVersionsForPackageOwnedByOrg: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /orgs/{org}/packages/{package_type}/{package_name}/versions"]["response"]; + }; + getAllPackageVersionsForPackageOwnedByUser: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /users/{username}/packages/{package_type}/{package_name}/versions"]["response"]; + }; + getPackageForAuthenticatedUser: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /user/packages/{package_type}/{package_name}"]["response"]; + }; + getPackageForOrganization: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /orgs/{org}/packages/{package_type}/{package_name}"]["response"]; + }; + getPackageForUser: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /users/{username}/packages/{package_type}/{package_name}"]["response"]; + }; + getPackageVersionForAuthenticatedUser: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /user/packages/{package_type}/{package_name}/versions/{package_version_id}"]["response"]; + }; + getPackageVersionForOrganization: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}"]["response"]; + }; + getPackageVersionForUser: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}"]["response"]; + }; + listPackagesForAuthenticatedUser: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /user/packages"]["response"]; + }; + listPackagesForOrganization: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /orgs/{org}/packages"]["response"]; + }; + listPackagesForUser: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /users/{username}/packages"]["response"]; + }; + restorePackageForAuthenticatedUser: { + parameters: RequestParameters & Omit; + response: Endpoints["POST /user/packages/{package_type}/{package_name}/restore{?token}"]["response"]; + }; + restorePackageForOrg: { + parameters: RequestParameters & Omit; + response: Endpoints["POST /orgs/{org}/packages/{package_type}/{package_name}/restore{?token}"]["response"]; + }; + restorePackageForUser: { + parameters: RequestParameters & Omit; + response: Endpoints["POST /users/{username}/packages/{package_type}/{package_name}/restore{?token}"]["response"]; + }; + restorePackageVersionForAuthenticatedUser: { + parameters: RequestParameters & Omit; + response: Endpoints["POST /user/packages/{package_type}/{package_name}/versions/{package_version_id}/restore"]["response"]; + }; + restorePackageVersionForOrg: { + parameters: RequestParameters & Omit; + response: Endpoints["POST /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}/restore"]["response"]; + }; + restorePackageVersionForUser: { + parameters: RequestParameters & Omit; + response: Endpoints["POST /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}/restore"]["response"]; + }; + }; + projects: { + addCollaborator: { + parameters: RequestParameters & Omit; + response: Endpoints["PUT /projects/{project_id}/collaborators/{username}"]["response"]; + }; + createCard: { + parameters: RequestParameters & Omit; + response: Endpoints["POST /projects/columns/{column_id}/cards"]["response"]; + }; + createColumn: { + parameters: RequestParameters & Omit; + response: Endpoints["POST /projects/{project_id}/columns"]["response"]; + }; + createForAuthenticatedUser: { + parameters: RequestParameters & Omit; + response: Endpoints["POST /user/projects"]["response"]; + }; + createForOrg: { + parameters: RequestParameters & Omit; + response: Endpoints["POST /orgs/{org}/projects"]["response"]; + }; + createForRepo: { + parameters: RequestParameters & Omit; + response: Endpoints["POST /repos/{owner}/{repo}/projects"]["response"]; + }; + delete: { + parameters: RequestParameters & Omit; + response: Endpoints["DELETE /projects/{project_id}"]["response"]; + }; + deleteCard: { + parameters: RequestParameters & Omit; + response: Endpoints["DELETE /projects/columns/cards/{card_id}"]["response"]; + }; + deleteColumn: { + parameters: RequestParameters & Omit; + response: Endpoints["DELETE /projects/columns/{column_id}"]["response"]; + }; + get: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /projects/{project_id}"]["response"]; + }; + getCard: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /projects/columns/cards/{card_id}"]["response"]; + }; + getColumn: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /projects/columns/{column_id}"]["response"]; + }; + getPermissionForUser: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /projects/{project_id}/collaborators/{username}/permission"]["response"]; + }; + listCards: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /projects/columns/{column_id}/cards"]["response"]; + }; + listCollaborators: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /projects/{project_id}/collaborators"]["response"]; + }; + listColumns: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /projects/{project_id}/columns"]["response"]; + }; + listForOrg: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /orgs/{org}/projects"]["response"]; + }; + listForRepo: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/projects"]["response"]; + }; + listForUser: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /users/{username}/projects"]["response"]; + }; + moveCard: { + parameters: RequestParameters & Omit; + response: Endpoints["POST /projects/columns/cards/{card_id}/moves"]["response"]; + }; + moveColumn: { + parameters: RequestParameters & Omit; + response: Endpoints["POST /projects/columns/{column_id}/moves"]["response"]; + }; + removeCollaborator: { + parameters: RequestParameters & Omit; + response: Endpoints["DELETE /projects/{project_id}/collaborators/{username}"]["response"]; + }; + update: { + parameters: RequestParameters & Omit; + response: Endpoints["PATCH /projects/{project_id}"]["response"]; + }; + updateCard: { + parameters: RequestParameters & Omit; + response: Endpoints["PATCH /projects/columns/cards/{card_id}"]["response"]; + }; + updateColumn: { + parameters: RequestParameters & Omit; + response: Endpoints["PATCH /projects/columns/{column_id}"]["response"]; + }; + }; + pulls: { + checkIfMerged: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/pulls/{pull_number}/merge"]["response"]; + }; + create: { + parameters: RequestParameters & Omit; + response: Endpoints["POST /repos/{owner}/{repo}/pulls"]["response"]; + }; + createReplyForReviewComment: { + parameters: RequestParameters & Omit; + response: Endpoints["POST /repos/{owner}/{repo}/pulls/{pull_number}/comments/{comment_id}/replies"]["response"]; + }; + createReview: { + parameters: RequestParameters & Omit; + response: Endpoints["POST /repos/{owner}/{repo}/pulls/{pull_number}/reviews"]["response"]; + }; + createReviewComment: { + parameters: RequestParameters & Omit; + response: Endpoints["POST /repos/{owner}/{repo}/pulls/{pull_number}/comments"]["response"]; + }; + deletePendingReview: { + parameters: RequestParameters & Omit; + response: Endpoints["DELETE /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}"]["response"]; + }; + deleteReviewComment: { + parameters: RequestParameters & Omit; + response: Endpoints["DELETE /repos/{owner}/{repo}/pulls/comments/{comment_id}"]["response"]; + }; + dismissReview: { + parameters: RequestParameters & Omit; + response: Endpoints["PUT /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/dismissals"]["response"]; + }; + get: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/pulls/{pull_number}"]["response"]; + }; + getReview: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}"]["response"]; + }; + getReviewComment: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/pulls/comments/{comment_id}"]["response"]; + }; + list: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/pulls"]["response"]; + }; + listCommentsForReview: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/comments"]["response"]; + }; + listCommits: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/pulls/{pull_number}/commits"]["response"]; + }; + listFiles: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/pulls/{pull_number}/files"]["response"]; + }; + listRequestedReviewers: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers"]["response"]; + }; + listReviewComments: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/pulls/{pull_number}/comments"]["response"]; + }; + listReviewCommentsForRepo: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/pulls/comments"]["response"]; + }; + listReviews: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews"]["response"]; + }; + merge: { + parameters: RequestParameters & Omit; + response: Endpoints["PUT /repos/{owner}/{repo}/pulls/{pull_number}/merge"]["response"]; + }; + removeRequestedReviewers: { + parameters: RequestParameters & Omit; + response: Endpoints["DELETE /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers"]["response"]; + }; + requestReviewers: { + parameters: RequestParameters & Omit; + response: Endpoints["POST /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers"]["response"]; + }; + submitReview: { + parameters: RequestParameters & Omit; + response: Endpoints["POST /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/events"]["response"]; + }; + update: { + parameters: RequestParameters & Omit; + response: Endpoints["PATCH /repos/{owner}/{repo}/pulls/{pull_number}"]["response"]; + }; + updateBranch: { + parameters: RequestParameters & Omit; + response: Endpoints["PUT /repos/{owner}/{repo}/pulls/{pull_number}/update-branch"]["response"]; + }; + updateReview: { + parameters: RequestParameters & Omit; + response: Endpoints["PUT /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}"]["response"]; + }; + updateReviewComment: { + parameters: RequestParameters & Omit; + response: Endpoints["PATCH /repos/{owner}/{repo}/pulls/comments/{comment_id}"]["response"]; + }; + }; + rateLimit: { + get: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /rate_limit"]["response"]; + }; + }; + reactions: { + createForCommitComment: { + parameters: RequestParameters & Omit; + response: Endpoints["POST /repos/{owner}/{repo}/comments/{comment_id}/reactions"]["response"]; + }; + createForIssue: { + parameters: RequestParameters & Omit; + response: Endpoints["POST /repos/{owner}/{repo}/issues/{issue_number}/reactions"]["response"]; + }; + createForIssueComment: { + parameters: RequestParameters & Omit; + response: Endpoints["POST /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions"]["response"]; + }; + createForPullRequestReviewComment: { + parameters: RequestParameters & Omit; + response: Endpoints["POST /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions"]["response"]; + }; + createForRelease: { + parameters: RequestParameters & Omit; + response: Endpoints["POST /repos/{owner}/{repo}/releases/{release_id}/reactions"]["response"]; + }; + createForTeamDiscussionCommentInOrg: { + parameters: RequestParameters & Omit; + response: Endpoints["POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions"]["response"]; + }; + createForTeamDiscussionInOrg: { + parameters: RequestParameters & Omit; + response: Endpoints["POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions"]["response"]; + }; + deleteForCommitComment: { + parameters: RequestParameters & Omit; + response: Endpoints["DELETE /repos/{owner}/{repo}/comments/{comment_id}/reactions/{reaction_id}"]["response"]; + }; + deleteForIssue: { + parameters: RequestParameters & Omit; + response: Endpoints["DELETE /repos/{owner}/{repo}/issues/{issue_number}/reactions/{reaction_id}"]["response"]; + }; + deleteForIssueComment: { + parameters: RequestParameters & Omit; + response: Endpoints["DELETE /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions/{reaction_id}"]["response"]; + }; + deleteForPullRequestComment: { + parameters: RequestParameters & Omit; + response: Endpoints["DELETE /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions/{reaction_id}"]["response"]; + }; + deleteForRelease: { + parameters: RequestParameters & Omit; + response: Endpoints["DELETE /repos/{owner}/{repo}/releases/{release_id}/reactions/{reaction_id}"]["response"]; + }; + deleteForTeamDiscussion: { + parameters: RequestParameters & Omit; + response: Endpoints["DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions/{reaction_id}"]["response"]; + }; + deleteForTeamDiscussionComment: { + parameters: RequestParameters & Omit; + response: Endpoints["DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions/{reaction_id}"]["response"]; + }; + listForCommitComment: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/comments/{comment_id}/reactions"]["response"]; + }; + listForIssue: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/issues/{issue_number}/reactions"]["response"]; + }; + listForIssueComment: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions"]["response"]; + }; + listForPullRequestReviewComment: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions"]["response"]; + }; + listForRelease: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/releases/{release_id}/reactions"]["response"]; + }; + listForTeamDiscussionCommentInOrg: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions"]["response"]; + }; + listForTeamDiscussionInOrg: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions"]["response"]; + }; + }; + repos: { + acceptInvitation: { + parameters: RequestParameters & Omit; + response: Endpoints["PATCH /user/repository_invitations/{invitation_id}"]["response"]; + }; + acceptInvitationForAuthenticatedUser: { + parameters: RequestParameters & Omit; + response: Endpoints["PATCH /user/repository_invitations/{invitation_id}"]["response"]; + }; + addAppAccessRestrictions: { + parameters: RequestParameters & Omit; + response: Endpoints["POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps"]["response"]; + }; + addCollaborator: { + parameters: RequestParameters & Omit; + response: Endpoints["PUT /repos/{owner}/{repo}/collaborators/{username}"]["response"]; + }; + addStatusCheckContexts: { + parameters: RequestParameters & Omit; + response: Endpoints["POST /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts"]["response"]; + }; + addTeamAccessRestrictions: { + parameters: RequestParameters & Omit; + response: Endpoints["POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams"]["response"]; + }; + addUserAccessRestrictions: { + parameters: RequestParameters & Omit; + response: Endpoints["POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users"]["response"]; + }; + checkCollaborator: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/collaborators/{username}"]["response"]; + }; + checkVulnerabilityAlerts: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/vulnerability-alerts"]["response"]; + }; + codeownersErrors: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/codeowners/errors"]["response"]; + }; + compareCommits: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/compare/{base}...{head}"]["response"]; + }; + compareCommitsWithBasehead: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/compare/{basehead}"]["response"]; + }; + createAutolink: { + parameters: RequestParameters & Omit; + response: Endpoints["POST /repos/{owner}/{repo}/autolinks"]["response"]; + }; + createCommitComment: { + parameters: RequestParameters & Omit; + response: Endpoints["POST /repos/{owner}/{repo}/commits/{commit_sha}/comments"]["response"]; + }; + createCommitSignatureProtection: { + parameters: RequestParameters & Omit; + response: Endpoints["POST /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures"]["response"]; + }; + createCommitStatus: { + parameters: RequestParameters & Omit; + response: Endpoints["POST /repos/{owner}/{repo}/statuses/{sha}"]["response"]; + }; + createDeployKey: { + parameters: RequestParameters & Omit; + response: Endpoints["POST /repos/{owner}/{repo}/keys"]["response"]; + }; + createDeployment: { + parameters: RequestParameters & Omit; + response: Endpoints["POST /repos/{owner}/{repo}/deployments"]["response"]; + }; + createDeploymentStatus: { + parameters: RequestParameters & Omit; + response: Endpoints["POST /repos/{owner}/{repo}/deployments/{deployment_id}/statuses"]["response"]; + }; + createDispatchEvent: { + parameters: RequestParameters & Omit; + response: Endpoints["POST /repos/{owner}/{repo}/dispatches"]["response"]; + }; + createForAuthenticatedUser: { + parameters: RequestParameters & Omit; + response: Endpoints["POST /user/repos"]["response"]; + }; + createFork: { + parameters: RequestParameters & Omit; + response: Endpoints["POST /repos/{owner}/{repo}/forks"]["response"]; + }; + createInOrg: { + parameters: RequestParameters & Omit; + response: Endpoints["POST /orgs/{org}/repos"]["response"]; + }; + createOrUpdateEnvironment: { + parameters: RequestParameters & Omit; + response: Endpoints["PUT /repos/{owner}/{repo}/environments/{environment_name}"]["response"]; + }; + createOrUpdateFileContents: { + parameters: RequestParameters & Omit; + response: Endpoints["PUT /repos/{owner}/{repo}/contents/{path}"]["response"]; + }; + createPagesSite: { + parameters: RequestParameters & Omit; + response: Endpoints["POST /repos/{owner}/{repo}/pages"]["response"]; + }; + createRelease: { + parameters: RequestParameters & Omit; + response: Endpoints["POST /repos/{owner}/{repo}/releases"]["response"]; + }; + createTagProtection: { + parameters: RequestParameters & Omit; + response: Endpoints["POST /repos/{owner}/{repo}/tags/protection"]["response"]; + }; + createUsingTemplate: { + parameters: RequestParameters & Omit; + response: Endpoints["POST /repos/{template_owner}/{template_repo}/generate"]["response"]; + }; + createWebhook: { + parameters: RequestParameters & Omit; + response: Endpoints["POST /repos/{owner}/{repo}/hooks"]["response"]; + }; + declineInvitation: { + parameters: RequestParameters & Omit; + response: Endpoints["DELETE /user/repository_invitations/{invitation_id}"]["response"]; + }; + declineInvitationForAuthenticatedUser: { + parameters: RequestParameters & Omit; + response: Endpoints["DELETE /user/repository_invitations/{invitation_id}"]["response"]; + }; + delete: { + parameters: RequestParameters & Omit; + response: Endpoints["DELETE /repos/{owner}/{repo}"]["response"]; + }; + deleteAccessRestrictions: { + parameters: RequestParameters & Omit; + response: Endpoints["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions"]["response"]; + }; + deleteAdminBranchProtection: { + parameters: RequestParameters & Omit; + response: Endpoints["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins"]["response"]; + }; + deleteAnEnvironment: { + parameters: RequestParameters & Omit; + response: Endpoints["DELETE /repos/{owner}/{repo}/environments/{environment_name}"]["response"]; + }; + deleteAutolink: { + parameters: RequestParameters & Omit; + response: Endpoints["DELETE /repos/{owner}/{repo}/autolinks/{autolink_id}"]["response"]; + }; + deleteBranchProtection: { + parameters: RequestParameters & Omit; + response: Endpoints["DELETE /repos/{owner}/{repo}/branches/{branch}/protection"]["response"]; + }; + deleteCommitComment: { + parameters: RequestParameters & Omit; + response: Endpoints["DELETE /repos/{owner}/{repo}/comments/{comment_id}"]["response"]; + }; + deleteCommitSignatureProtection: { + parameters: RequestParameters & Omit; + response: Endpoints["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures"]["response"]; + }; + deleteDeployKey: { + parameters: RequestParameters & Omit; + response: Endpoints["DELETE /repos/{owner}/{repo}/keys/{key_id}"]["response"]; + }; + deleteDeployment: { + parameters: RequestParameters & Omit; + response: Endpoints["DELETE /repos/{owner}/{repo}/deployments/{deployment_id}"]["response"]; + }; + deleteFile: { + parameters: RequestParameters & Omit; + response: Endpoints["DELETE /repos/{owner}/{repo}/contents/{path}"]["response"]; + }; + deleteInvitation: { + parameters: RequestParameters & Omit; + response: Endpoints["DELETE /repos/{owner}/{repo}/invitations/{invitation_id}"]["response"]; + }; + deletePagesSite: { + parameters: RequestParameters & Omit; + response: Endpoints["DELETE /repos/{owner}/{repo}/pages"]["response"]; + }; + deletePullRequestReviewProtection: { + parameters: RequestParameters & Omit; + response: Endpoints["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews"]["response"]; + }; + deleteRelease: { + parameters: RequestParameters & Omit; + response: Endpoints["DELETE /repos/{owner}/{repo}/releases/{release_id}"]["response"]; + }; + deleteReleaseAsset: { + parameters: RequestParameters & Omit; + response: Endpoints["DELETE /repos/{owner}/{repo}/releases/assets/{asset_id}"]["response"]; + }; + deleteTagProtection: { + parameters: RequestParameters & Omit; + response: Endpoints["DELETE /repos/{owner}/{repo}/tags/protection/{tag_protection_id}"]["response"]; + }; + deleteWebhook: { + parameters: RequestParameters & Omit; + response: Endpoints["DELETE /repos/{owner}/{repo}/hooks/{hook_id}"]["response"]; + }; + disableAutomatedSecurityFixes: { + parameters: RequestParameters & Omit; + response: Endpoints["DELETE /repos/{owner}/{repo}/automated-security-fixes"]["response"]; + }; + disableLfsForRepo: { + parameters: RequestParameters & Omit; + response: Endpoints["DELETE /repos/{owner}/{repo}/lfs"]["response"]; + }; + disableVulnerabilityAlerts: { + parameters: RequestParameters & Omit; + response: Endpoints["DELETE /repos/{owner}/{repo}/vulnerability-alerts"]["response"]; + }; + downloadArchive: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/zipball/{ref}"]["response"]; + }; + downloadTarballArchive: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/tarball/{ref}"]["response"]; + }; + downloadZipballArchive: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/zipball/{ref}"]["response"]; + }; + enableAutomatedSecurityFixes: { + parameters: RequestParameters & Omit; + response: Endpoints["PUT /repos/{owner}/{repo}/automated-security-fixes"]["response"]; + }; + enableLfsForRepo: { + parameters: RequestParameters & Omit; + response: Endpoints["PUT /repos/{owner}/{repo}/lfs"]["response"]; + }; + enableVulnerabilityAlerts: { + parameters: RequestParameters & Omit; + response: Endpoints["PUT /repos/{owner}/{repo}/vulnerability-alerts"]["response"]; + }; + generateReleaseNotes: { + parameters: RequestParameters & Omit; + response: Endpoints["POST /repos/{owner}/{repo}/releases/generate-notes"]["response"]; + }; + get: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}"]["response"]; + }; + getAccessRestrictions: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions"]["response"]; + }; + getAdminBranchProtection: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins"]["response"]; + }; + getAllEnvironments: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/environments"]["response"]; + }; + getAllStatusCheckContexts: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts"]["response"]; + }; + getAllTopics: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/topics"]["response"]; + }; + getAppsWithAccessToProtectedBranch: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps"]["response"]; + }; + getAutolink: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/autolinks/{autolink_id}"]["response"]; + }; + getBranch: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/branches/{branch}"]["response"]; + }; + getBranchProtection: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/branches/{branch}/protection"]["response"]; + }; + getClones: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/traffic/clones"]["response"]; + }; + getCodeFrequencyStats: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/stats/code_frequency"]["response"]; + }; + getCollaboratorPermissionLevel: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/collaborators/{username}/permission"]["response"]; + }; + getCombinedStatusForRef: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/commits/{ref}/status"]["response"]; + }; + getCommit: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/commits/{ref}"]["response"]; + }; + getCommitActivityStats: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/stats/commit_activity"]["response"]; + }; + getCommitComment: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/comments/{comment_id}"]["response"]; + }; + getCommitSignatureProtection: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures"]["response"]; + }; + getCommunityProfileMetrics: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/community/profile"]["response"]; + }; + getContent: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/contents/{path}"]["response"]; + }; + getContributorsStats: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/stats/contributors"]["response"]; + }; + getDeployKey: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/keys/{key_id}"]["response"]; + }; + getDeployment: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/deployments/{deployment_id}"]["response"]; + }; + getDeploymentStatus: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses/{status_id}"]["response"]; + }; + getEnvironment: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/environments/{environment_name}"]["response"]; + }; + getLatestPagesBuild: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/pages/builds/latest"]["response"]; + }; + getLatestRelease: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/releases/latest"]["response"]; + }; + getPages: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/pages"]["response"]; + }; + getPagesBuild: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/pages/builds/{build_id}"]["response"]; + }; + getPagesHealthCheck: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/pages/health"]["response"]; + }; + getParticipationStats: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/stats/participation"]["response"]; + }; + getPullRequestReviewProtection: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews"]["response"]; + }; + getPunchCardStats: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/stats/punch_card"]["response"]; + }; + getReadme: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/readme"]["response"]; + }; + getReadmeInDirectory: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/readme/{dir}"]["response"]; + }; + getRelease: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/releases/{release_id}"]["response"]; + }; + getReleaseAsset: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/releases/assets/{asset_id}"]["response"]; + }; + getReleaseByTag: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/releases/tags/{tag}"]["response"]; + }; + getStatusChecksProtection: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks"]["response"]; + }; + getTeamsWithAccessToProtectedBranch: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams"]["response"]; + }; + getTopPaths: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/traffic/popular/paths"]["response"]; + }; + getTopReferrers: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/traffic/popular/referrers"]["response"]; + }; + getUsersWithAccessToProtectedBranch: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users"]["response"]; + }; + getViews: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/traffic/views"]["response"]; + }; + getWebhook: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/hooks/{hook_id}"]["response"]; + }; + getWebhookConfigForRepo: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/hooks/{hook_id}/config"]["response"]; + }; + getWebhookDelivery: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries/{delivery_id}"]["response"]; + }; + listAutolinks: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/autolinks"]["response"]; + }; + listBranches: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/branches"]["response"]; + }; + listBranchesForHeadCommit: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/commits/{commit_sha}/branches-where-head"]["response"]; + }; + listCollaborators: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/collaborators"]["response"]; + }; + listCommentsForCommit: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/commits/{commit_sha}/comments"]["response"]; + }; + listCommitCommentsForRepo: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/comments"]["response"]; + }; + listCommitStatusesForRef: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/commits/{ref}/statuses"]["response"]; + }; + listCommits: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/commits"]["response"]; + }; + listContributors: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/contributors"]["response"]; + }; + listDeployKeys: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/keys"]["response"]; + }; + listDeploymentStatuses: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses"]["response"]; + }; + listDeployments: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/deployments"]["response"]; + }; + listForAuthenticatedUser: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /user/repos"]["response"]; + }; + listForOrg: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /orgs/{org}/repos"]["response"]; + }; + listForUser: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /users/{username}/repos"]["response"]; + }; + listForks: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/forks"]["response"]; + }; + listInvitations: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/invitations"]["response"]; + }; + listInvitationsForAuthenticatedUser: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /user/repository_invitations"]["response"]; + }; + listLanguages: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/languages"]["response"]; + }; + listPagesBuilds: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/pages/builds"]["response"]; + }; + listPublic: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repositories"]["response"]; + }; + listPullRequestsAssociatedWithCommit: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/commits/{commit_sha}/pulls"]["response"]; + }; + listReleaseAssets: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/releases/{release_id}/assets"]["response"]; + }; + listReleases: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/releases"]["response"]; + }; + listTagProtection: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/tags/protection"]["response"]; + }; + listTags: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/tags"]["response"]; + }; + listTeams: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/teams"]["response"]; + }; + listWebhookDeliveries: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries"]["response"]; + }; + listWebhooks: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/hooks"]["response"]; + }; + merge: { + parameters: RequestParameters & Omit; + response: Endpoints["POST /repos/{owner}/{repo}/merges"]["response"]; + }; + mergeUpstream: { + parameters: RequestParameters & Omit; + response: Endpoints["POST /repos/{owner}/{repo}/merge-upstream"]["response"]; + }; + pingWebhook: { + parameters: RequestParameters & Omit; + response: Endpoints["POST /repos/{owner}/{repo}/hooks/{hook_id}/pings"]["response"]; + }; + redeliverWebhookDelivery: { + parameters: RequestParameters & Omit; + response: Endpoints["POST /repos/{owner}/{repo}/hooks/{hook_id}/deliveries/{delivery_id}/attempts"]["response"]; + }; + removeAppAccessRestrictions: { + parameters: RequestParameters & Omit; + response: Endpoints["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps"]["response"]; + }; + removeCollaborator: { + parameters: RequestParameters & Omit; + response: Endpoints["DELETE /repos/{owner}/{repo}/collaborators/{username}"]["response"]; + }; + removeStatusCheckContexts: { + parameters: RequestParameters & Omit; + response: Endpoints["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts"]["response"]; + }; + removeStatusCheckProtection: { + parameters: RequestParameters & Omit; + response: Endpoints["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks"]["response"]; + }; + removeTeamAccessRestrictions: { + parameters: RequestParameters & Omit; + response: Endpoints["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams"]["response"]; + }; + removeUserAccessRestrictions: { + parameters: RequestParameters & Omit; + response: Endpoints["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users"]["response"]; + }; + renameBranch: { + parameters: RequestParameters & Omit; + response: Endpoints["POST /repos/{owner}/{repo}/branches/{branch}/rename"]["response"]; + }; + replaceAllTopics: { + parameters: RequestParameters & Omit; + response: Endpoints["PUT /repos/{owner}/{repo}/topics"]["response"]; + }; + requestPagesBuild: { + parameters: RequestParameters & Omit; + response: Endpoints["POST /repos/{owner}/{repo}/pages/builds"]["response"]; + }; + setAdminBranchProtection: { + parameters: RequestParameters & Omit; + response: Endpoints["POST /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins"]["response"]; + }; + setAppAccessRestrictions: { + parameters: RequestParameters & Omit; + response: Endpoints["PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps"]["response"]; + }; + setStatusCheckContexts: { + parameters: RequestParameters & Omit; + response: Endpoints["PUT /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts"]["response"]; + }; + setTeamAccessRestrictions: { + parameters: RequestParameters & Omit; + response: Endpoints["PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams"]["response"]; + }; + setUserAccessRestrictions: { + parameters: RequestParameters & Omit; + response: Endpoints["PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users"]["response"]; + }; + testPushWebhook: { + parameters: RequestParameters & Omit; + response: Endpoints["POST /repos/{owner}/{repo}/hooks/{hook_id}/tests"]["response"]; + }; + transfer: { + parameters: RequestParameters & Omit; + response: Endpoints["POST /repos/{owner}/{repo}/transfer"]["response"]; + }; + update: { + parameters: RequestParameters & Omit; + response: Endpoints["PATCH /repos/{owner}/{repo}"]["response"]; + }; + updateBranchProtection: { + parameters: RequestParameters & Omit; + response: Endpoints["PUT /repos/{owner}/{repo}/branches/{branch}/protection"]["response"]; + }; + updateCommitComment: { + parameters: RequestParameters & Omit; + response: Endpoints["PATCH /repos/{owner}/{repo}/comments/{comment_id}"]["response"]; + }; + updateInformationAboutPagesSite: { + parameters: RequestParameters & Omit; + response: Endpoints["PUT /repos/{owner}/{repo}/pages"]["response"]; + }; + updateInvitation: { + parameters: RequestParameters & Omit; + response: Endpoints["PATCH /repos/{owner}/{repo}/invitations/{invitation_id}"]["response"]; + }; + updatePullRequestReviewProtection: { + parameters: RequestParameters & Omit; + response: Endpoints["PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews"]["response"]; + }; + updateRelease: { + parameters: RequestParameters & Omit; + response: Endpoints["PATCH /repos/{owner}/{repo}/releases/{release_id}"]["response"]; + }; + updateReleaseAsset: { + parameters: RequestParameters & Omit; + response: Endpoints["PATCH /repos/{owner}/{repo}/releases/assets/{asset_id}"]["response"]; + }; + updateStatusCheckPotection: { + parameters: RequestParameters & Omit; + response: Endpoints["PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks"]["response"]; + }; + updateStatusCheckProtection: { + parameters: RequestParameters & Omit; + response: Endpoints["PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks"]["response"]; + }; + updateWebhook: { + parameters: RequestParameters & Omit; + response: Endpoints["PATCH /repos/{owner}/{repo}/hooks/{hook_id}"]["response"]; + }; + updateWebhookConfigForRepo: { + parameters: RequestParameters & Omit; + response: Endpoints["PATCH /repos/{owner}/{repo}/hooks/{hook_id}/config"]["response"]; + }; + uploadReleaseAsset: { + parameters: RequestParameters & Omit; + response: Endpoints["POST {origin}/repos/{owner}/{repo}/releases/{release_id}/assets{?name,label}"]["response"]; + }; + }; + search: { + code: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /search/code"]["response"]; + }; + commits: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /search/commits"]["response"]; + }; + issuesAndPullRequests: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /search/issues"]["response"]; + }; + labels: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /search/labels"]["response"]; + }; + repos: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /search/repositories"]["response"]; + }; + topics: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /search/topics"]["response"]; + }; + users: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /search/users"]["response"]; + }; + }; + secretScanning: { + getAlert: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}"]["response"]; + }; + listAlertsForEnterprise: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /enterprises/{enterprise}/secret-scanning/alerts"]["response"]; + }; + listAlertsForOrg: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /orgs/{org}/secret-scanning/alerts"]["response"]; + }; + listAlertsForRepo: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/secret-scanning/alerts"]["response"]; + }; + listLocationsForAlert: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}/locations"]["response"]; + }; + updateAlert: { + parameters: RequestParameters & Omit; + response: Endpoints["PATCH /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}"]["response"]; + }; + }; + teams: { + addOrUpdateMembershipForUserInOrg: { + parameters: RequestParameters & Omit; + response: Endpoints["PUT /orgs/{org}/teams/{team_slug}/memberships/{username}"]["response"]; + }; + addOrUpdateProjectPermissionsInOrg: { + parameters: RequestParameters & Omit; + response: Endpoints["PUT /orgs/{org}/teams/{team_slug}/projects/{project_id}"]["response"]; + }; + addOrUpdateRepoPermissionsInOrg: { + parameters: RequestParameters & Omit; + response: Endpoints["PUT /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}"]["response"]; + }; + checkPermissionsForProjectInOrg: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /orgs/{org}/teams/{team_slug}/projects/{project_id}"]["response"]; + }; + checkPermissionsForRepoInOrg: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}"]["response"]; + }; + create: { + parameters: RequestParameters & Omit; + response: Endpoints["POST /orgs/{org}/teams"]["response"]; + }; + createDiscussionCommentInOrg: { + parameters: RequestParameters & Omit; + response: Endpoints["POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments"]["response"]; + }; + createDiscussionInOrg: { + parameters: RequestParameters & Omit; + response: Endpoints["POST /orgs/{org}/teams/{team_slug}/discussions"]["response"]; + }; + deleteDiscussionCommentInOrg: { + parameters: RequestParameters & Omit; + response: Endpoints["DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}"]["response"]; + }; + deleteDiscussionInOrg: { + parameters: RequestParameters & Omit; + response: Endpoints["DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}"]["response"]; + }; + deleteInOrg: { + parameters: RequestParameters & Omit; + response: Endpoints["DELETE /orgs/{org}/teams/{team_slug}"]["response"]; + }; + getByName: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /orgs/{org}/teams/{team_slug}"]["response"]; + }; + getDiscussionCommentInOrg: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}"]["response"]; + }; + getDiscussionInOrg: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}"]["response"]; + }; + getMembershipForUserInOrg: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /orgs/{org}/teams/{team_slug}/memberships/{username}"]["response"]; + }; + list: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /orgs/{org}/teams"]["response"]; + }; + listChildInOrg: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /orgs/{org}/teams/{team_slug}/teams"]["response"]; + }; + listDiscussionCommentsInOrg: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments"]["response"]; + }; + listDiscussionsInOrg: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /orgs/{org}/teams/{team_slug}/discussions"]["response"]; + }; + listForAuthenticatedUser: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /user/teams"]["response"]; + }; + listMembersInOrg: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /orgs/{org}/teams/{team_slug}/members"]["response"]; + }; + listPendingInvitationsInOrg: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /orgs/{org}/teams/{team_slug}/invitations"]["response"]; + }; + listProjectsInOrg: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /orgs/{org}/teams/{team_slug}/projects"]["response"]; + }; + listReposInOrg: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /orgs/{org}/teams/{team_slug}/repos"]["response"]; + }; + removeMembershipForUserInOrg: { + parameters: RequestParameters & Omit; + response: Endpoints["DELETE /orgs/{org}/teams/{team_slug}/memberships/{username}"]["response"]; + }; + removeProjectInOrg: { + parameters: RequestParameters & Omit; + response: Endpoints["DELETE /orgs/{org}/teams/{team_slug}/projects/{project_id}"]["response"]; + }; + removeRepoInOrg: { + parameters: RequestParameters & Omit; + response: Endpoints["DELETE /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}"]["response"]; + }; + updateDiscussionCommentInOrg: { + parameters: RequestParameters & Omit; + response: Endpoints["PATCH /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}"]["response"]; + }; + updateDiscussionInOrg: { + parameters: RequestParameters & Omit; + response: Endpoints["PATCH /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}"]["response"]; + }; + updateInOrg: { + parameters: RequestParameters & Omit; + response: Endpoints["PATCH /orgs/{org}/teams/{team_slug}"]["response"]; + }; + }; + users: { + addEmailForAuthenticated: { + parameters: RequestParameters & Omit; + response: Endpoints["POST /user/emails"]["response"]; + }; + addEmailForAuthenticatedUser: { + parameters: RequestParameters & Omit; + response: Endpoints["POST /user/emails"]["response"]; + }; + block: { + parameters: RequestParameters & Omit; + response: Endpoints["PUT /user/blocks/{username}"]["response"]; + }; + checkBlocked: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /user/blocks/{username}"]["response"]; + }; + checkFollowingForUser: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /users/{username}/following/{target_user}"]["response"]; + }; + checkPersonIsFollowedByAuthenticated: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /user/following/{username}"]["response"]; + }; + createGpgKeyForAuthenticated: { + parameters: RequestParameters & Omit; + response: Endpoints["POST /user/gpg_keys"]["response"]; + }; + createGpgKeyForAuthenticatedUser: { + parameters: RequestParameters & Omit; + response: Endpoints["POST /user/gpg_keys"]["response"]; + }; + createPublicSshKeyForAuthenticated: { + parameters: RequestParameters & Omit; + response: Endpoints["POST /user/keys"]["response"]; + }; + createPublicSshKeyForAuthenticatedUser: { + parameters: RequestParameters & Omit; + response: Endpoints["POST /user/keys"]["response"]; + }; + deleteEmailForAuthenticated: { + parameters: RequestParameters & Omit; + response: Endpoints["DELETE /user/emails"]["response"]; + }; + deleteEmailForAuthenticatedUser: { + parameters: RequestParameters & Omit; + response: Endpoints["DELETE /user/emails"]["response"]; + }; + deleteGpgKeyForAuthenticated: { + parameters: RequestParameters & Omit; + response: Endpoints["DELETE /user/gpg_keys/{gpg_key_id}"]["response"]; + }; + deleteGpgKeyForAuthenticatedUser: { + parameters: RequestParameters & Omit; + response: Endpoints["DELETE /user/gpg_keys/{gpg_key_id}"]["response"]; + }; + deletePublicSshKeyForAuthenticated: { + parameters: RequestParameters & Omit; + response: Endpoints["DELETE /user/keys/{key_id}"]["response"]; + }; + deletePublicSshKeyForAuthenticatedUser: { + parameters: RequestParameters & Omit; + response: Endpoints["DELETE /user/keys/{key_id}"]["response"]; + }; + follow: { + parameters: RequestParameters & Omit; + response: Endpoints["PUT /user/following/{username}"]["response"]; + }; + getAuthenticated: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /user"]["response"]; + }; + getByUsername: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /users/{username}"]["response"]; + }; + getContextForUser: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /users/{username}/hovercard"]["response"]; + }; + getGpgKeyForAuthenticated: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /user/gpg_keys/{gpg_key_id}"]["response"]; + }; + getGpgKeyForAuthenticatedUser: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /user/gpg_keys/{gpg_key_id}"]["response"]; + }; + getPublicSshKeyForAuthenticated: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /user/keys/{key_id}"]["response"]; + }; + getPublicSshKeyForAuthenticatedUser: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /user/keys/{key_id}"]["response"]; + }; + list: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /users"]["response"]; + }; + listBlockedByAuthenticated: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /user/blocks"]["response"]; + }; + listBlockedByAuthenticatedUser: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /user/blocks"]["response"]; + }; + listEmailsForAuthenticated: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /user/emails"]["response"]; + }; + listEmailsForAuthenticatedUser: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /user/emails"]["response"]; + }; + listFollowedByAuthenticated: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /user/following"]["response"]; + }; + listFollowedByAuthenticatedUser: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /user/following"]["response"]; + }; + listFollowersForAuthenticatedUser: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /user/followers"]["response"]; + }; + listFollowersForUser: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /users/{username}/followers"]["response"]; + }; + listFollowingForUser: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /users/{username}/following"]["response"]; + }; + listGpgKeysForAuthenticated: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /user/gpg_keys"]["response"]; + }; + listGpgKeysForAuthenticatedUser: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /user/gpg_keys"]["response"]; + }; + listGpgKeysForUser: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /users/{username}/gpg_keys"]["response"]; + }; + listPublicEmailsForAuthenticated: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /user/public_emails"]["response"]; + }; + listPublicEmailsForAuthenticatedUser: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /user/public_emails"]["response"]; + }; + listPublicKeysForUser: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /users/{username}/keys"]["response"]; + }; + listPublicSshKeysForAuthenticated: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /user/keys"]["response"]; + }; + listPublicSshKeysForAuthenticatedUser: { + parameters: RequestParameters & Omit; + response: Endpoints["GET /user/keys"]["response"]; + }; + setPrimaryEmailVisibilityForAuthenticated: { + parameters: RequestParameters & Omit; + response: Endpoints["PATCH /user/email/visibility"]["response"]; + }; + setPrimaryEmailVisibilityForAuthenticatedUser: { + parameters: RequestParameters & Omit; + response: Endpoints["PATCH /user/email/visibility"]["response"]; + }; + unblock: { + parameters: RequestParameters & Omit; + response: Endpoints["DELETE /user/blocks/{username}"]["response"]; + }; + unfollow: { + parameters: RequestParameters & Omit; + response: Endpoints["DELETE /user/following/{username}"]["response"]; + }; + updateAuthenticated: { + parameters: RequestParameters & Omit; + response: Endpoints["PATCH /user"]["response"]; + }; + }; +}; diff --git a/node_modules/@octokit/plugin-rest-endpoint-methods/dist-types/index.d.ts b/node_modules/@octokit/plugin-rest-endpoint-methods/dist-types/index.d.ts new file mode 100644 index 0000000..a81f3b0 --- /dev/null +++ b/node_modules/@octokit/plugin-rest-endpoint-methods/dist-types/index.d.ts @@ -0,0 +1,11 @@ +import { Octokit } from "@octokit/core"; +export { RestEndpointMethodTypes } from "./generated/parameters-and-response-types"; +import { Api } from "./types"; +export declare function restEndpointMethods(octokit: Octokit): Api; +export declare namespace restEndpointMethods { + var VERSION: string; +} +export declare function legacyRestEndpointMethods(octokit: Octokit): Api["rest"] & Api; +export declare namespace legacyRestEndpointMethods { + var VERSION: string; +} diff --git a/node_modules/@octokit/plugin-rest-endpoint-methods/dist-types/types.d.ts b/node_modules/@octokit/plugin-rest-endpoint-methods/dist-types/types.d.ts new file mode 100644 index 0000000..3628f02 --- /dev/null +++ b/node_modules/@octokit/plugin-rest-endpoint-methods/dist-types/types.d.ts @@ -0,0 +1,18 @@ +import { Route, RequestParameters } from "@octokit/types"; +import { RestEndpointMethods } from "./generated/method-types"; +export declare type Api = { + rest: RestEndpointMethods; +}; +export declare type EndpointDecorations = { + mapToData?: string; + deprecated?: string; + renamed?: [string, string]; + renamedParameters?: { + [name: string]: string; + }; +}; +export declare type EndpointsDefaultsAndDecorations = { + [scope: string]: { + [methodName: string]: [Route, RequestParameters?, EndpointDecorations?]; + }; +}; diff --git a/node_modules/@octokit/plugin-rest-endpoint-methods/dist-types/version.d.ts b/node_modules/@octokit/plugin-rest-endpoint-methods/dist-types/version.d.ts new file mode 100644 index 0000000..04c17e0 --- /dev/null +++ b/node_modules/@octokit/plugin-rest-endpoint-methods/dist-types/version.d.ts @@ -0,0 +1 @@ +export declare const VERSION = "5.16.2"; diff --git a/node_modules/@octokit/plugin-rest-endpoint-methods/dist-web/index.js b/node_modules/@octokit/plugin-rest-endpoint-methods/dist-web/index.js new file mode 100644 index 0000000..e35644d --- /dev/null +++ b/node_modules/@octokit/plugin-rest-endpoint-methods/dist-web/index.js @@ -0,0 +1,1745 @@ +const 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"], + }, +}; + +const VERSION = "5.16.2"; + +function endpointsToMethods(octokit, 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(octokit, scope, methodName, endpointDefaults, decorations); + continue; + } + scopeMethods[methodName] = octokit.request.defaults(endpointDefaults); + } + } + return newMethods; +} +function decorate(octokit, scope, methodName, defaults, decorations) { + const requestWithDefaults = octokit.request.defaults(defaults); + /* istanbul ignore next */ + function withDecorations(...args) { + // @ts-ignore https://github.com/microsoft/TypeScript/issues/25488 + let options = requestWithDefaults.endpoint.merge(...args); + // There are currently no other decorations than `.mapToData` + if (decorations.mapToData) { + options = Object.assign({}, options, { + data: options[decorations.mapToData], + [decorations.mapToData]: undefined, + }); + return requestWithDefaults(options); + } + if (decorations.renamed) { + const [newScope, newMethodName] = decorations.renamed; + octokit.log.warn(`octokit.${scope}.${methodName}() has been renamed to octokit.${newScope}.${newMethodName}()`); + } + if (decorations.deprecated) { + octokit.log.warn(decorations.deprecated); + } + if (decorations.renamedParameters) { + // @ts-ignore https://github.com/microsoft/TypeScript/issues/25488 + const options = requestWithDefaults.endpoint.merge(...args); + for (const [name, alias] of Object.entries(decorations.renamedParameters)) { + if (name in options) { + octokit.log.warn(`"${name}" parameter is deprecated for "octokit.${scope}.${methodName}()". Use "${alias}" instead`); + if (!(alias in options)) { + options[alias] = options[name]; + } + delete options[name]; + } + } + return requestWithDefaults(options); + } + // @ts-ignore https://github.com/microsoft/TypeScript/issues/25488 + return requestWithDefaults(...args); + } + return Object.assign(withDecorations, requestWithDefaults); +} + +function restEndpointMethods(octokit) { + const api = endpointsToMethods(octokit, Endpoints); + return { + rest: api, + }; +} +restEndpointMethods.VERSION = VERSION; +function legacyRestEndpointMethods(octokit) { + const api = endpointsToMethods(octokit, Endpoints); + return { + ...api, + rest: api, + }; +} +legacyRestEndpointMethods.VERSION = VERSION; + +export { legacyRestEndpointMethods, restEndpointMethods }; +//# sourceMappingURL=index.js.map diff --git a/node_modules/@octokit/plugin-rest-endpoint-methods/dist-web/index.js.map b/node_modules/@octokit/plugin-rest-endpoint-methods/dist-web/index.js.map new file mode 100644 index 0000000..d33402a --- /dev/null +++ b/node_modules/@octokit/plugin-rest-endpoint-methods/dist-web/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sources":["../dist-src/generated/endpoints.js","../dist-src/version.js","../dist-src/endpoints-to-methods.js","../dist-src/index.js"],"sourcesContent":["const Endpoints = {\n actions: {\n addCustomLabelsToSelfHostedRunnerForOrg: [\n \"POST /orgs/{org}/actions/runners/{runner_id}/labels\",\n ],\n addCustomLabelsToSelfHostedRunnerForRepo: [\n \"POST /repos/{owner}/{repo}/actions/runners/{runner_id}/labels\",\n ],\n addSelectedRepoToOrgSecret: [\n \"PUT /orgs/{org}/actions/secrets/{secret_name}/repositories/{repository_id}\",\n ],\n approveWorkflowRun: [\n \"POST /repos/{owner}/{repo}/actions/runs/{run_id}/approve\",\n ],\n cancelWorkflowRun: [\n \"POST /repos/{owner}/{repo}/actions/runs/{run_id}/cancel\",\n ],\n createOrUpdateEnvironmentSecret: [\n \"PUT /repositories/{repository_id}/environments/{environment_name}/secrets/{secret_name}\",\n ],\n createOrUpdateOrgSecret: [\"PUT /orgs/{org}/actions/secrets/{secret_name}\"],\n createOrUpdateRepoSecret: [\n \"PUT /repos/{owner}/{repo}/actions/secrets/{secret_name}\",\n ],\n createRegistrationTokenForOrg: [\n \"POST /orgs/{org}/actions/runners/registration-token\",\n ],\n createRegistrationTokenForRepo: [\n \"POST /repos/{owner}/{repo}/actions/runners/registration-token\",\n ],\n createRemoveTokenForOrg: [\"POST /orgs/{org}/actions/runners/remove-token\"],\n createRemoveTokenForRepo: [\n \"POST /repos/{owner}/{repo}/actions/runners/remove-token\",\n ],\n createWorkflowDispatch: [\n \"POST /repos/{owner}/{repo}/actions/workflows/{workflow_id}/dispatches\",\n ],\n deleteActionsCacheById: [\n \"DELETE /repos/{owner}/{repo}/actions/caches/{cache_id}\",\n ],\n deleteActionsCacheByKey: [\n \"DELETE /repos/{owner}/{repo}/actions/caches{?key,ref}\",\n ],\n deleteArtifact: [\n \"DELETE /repos/{owner}/{repo}/actions/artifacts/{artifact_id}\",\n ],\n deleteEnvironmentSecret: [\n \"DELETE /repositories/{repository_id}/environments/{environment_name}/secrets/{secret_name}\",\n ],\n deleteOrgSecret: [\"DELETE /orgs/{org}/actions/secrets/{secret_name}\"],\n deleteRepoSecret: [\n \"DELETE /repos/{owner}/{repo}/actions/secrets/{secret_name}\",\n ],\n deleteSelfHostedRunnerFromOrg: [\n \"DELETE /orgs/{org}/actions/runners/{runner_id}\",\n ],\n deleteSelfHostedRunnerFromRepo: [\n \"DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}\",\n ],\n deleteWorkflowRun: [\"DELETE /repos/{owner}/{repo}/actions/runs/{run_id}\"],\n deleteWorkflowRunLogs: [\n \"DELETE /repos/{owner}/{repo}/actions/runs/{run_id}/logs\",\n ],\n disableSelectedRepositoryGithubActionsOrganization: [\n \"DELETE /orgs/{org}/actions/permissions/repositories/{repository_id}\",\n ],\n disableWorkflow: [\n \"PUT /repos/{owner}/{repo}/actions/workflows/{workflow_id}/disable\",\n ],\n downloadArtifact: [\n \"GET /repos/{owner}/{repo}/actions/artifacts/{artifact_id}/{archive_format}\",\n ],\n downloadJobLogsForWorkflowRun: [\n \"GET /repos/{owner}/{repo}/actions/jobs/{job_id}/logs\",\n ],\n downloadWorkflowRunAttemptLogs: [\n \"GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/logs\",\n ],\n downloadWorkflowRunLogs: [\n \"GET /repos/{owner}/{repo}/actions/runs/{run_id}/logs\",\n ],\n enableSelectedRepositoryGithubActionsOrganization: [\n \"PUT /orgs/{org}/actions/permissions/repositories/{repository_id}\",\n ],\n enableWorkflow: [\n \"PUT /repos/{owner}/{repo}/actions/workflows/{workflow_id}/enable\",\n ],\n getActionsCacheList: [\"GET /repos/{owner}/{repo}/actions/caches\"],\n getActionsCacheUsage: [\"GET /repos/{owner}/{repo}/actions/cache/usage\"],\n getActionsCacheUsageByRepoForOrg: [\n \"GET /orgs/{org}/actions/cache/usage-by-repository\",\n ],\n getActionsCacheUsageForEnterprise: [\n \"GET /enterprises/{enterprise}/actions/cache/usage\",\n ],\n getActionsCacheUsageForOrg: [\"GET /orgs/{org}/actions/cache/usage\"],\n getAllowedActionsOrganization: [\n \"GET /orgs/{org}/actions/permissions/selected-actions\",\n ],\n getAllowedActionsRepository: [\n \"GET /repos/{owner}/{repo}/actions/permissions/selected-actions\",\n ],\n getArtifact: [\"GET /repos/{owner}/{repo}/actions/artifacts/{artifact_id}\"],\n getEnvironmentPublicKey: [\n \"GET /repositories/{repository_id}/environments/{environment_name}/secrets/public-key\",\n ],\n getEnvironmentSecret: [\n \"GET /repositories/{repository_id}/environments/{environment_name}/secrets/{secret_name}\",\n ],\n getGithubActionsDefaultWorkflowPermissionsEnterprise: [\n \"GET /enterprises/{enterprise}/actions/permissions/workflow\",\n ],\n getGithubActionsDefaultWorkflowPermissionsOrganization: [\n \"GET /orgs/{org}/actions/permissions/workflow\",\n ],\n getGithubActionsDefaultWorkflowPermissionsRepository: [\n \"GET /repos/{owner}/{repo}/actions/permissions/workflow\",\n ],\n getGithubActionsPermissionsOrganization: [\n \"GET /orgs/{org}/actions/permissions\",\n ],\n getGithubActionsPermissionsRepository: [\n \"GET /repos/{owner}/{repo}/actions/permissions\",\n ],\n getJobForWorkflowRun: [\"GET /repos/{owner}/{repo}/actions/jobs/{job_id}\"],\n getOrgPublicKey: [\"GET /orgs/{org}/actions/secrets/public-key\"],\n getOrgSecret: [\"GET /orgs/{org}/actions/secrets/{secret_name}\"],\n getPendingDeploymentsForRun: [\n \"GET /repos/{owner}/{repo}/actions/runs/{run_id}/pending_deployments\",\n ],\n getRepoPermissions: [\n \"GET /repos/{owner}/{repo}/actions/permissions\",\n {},\n { renamed: [\"actions\", \"getGithubActionsPermissionsRepository\"] },\n ],\n getRepoPublicKey: [\"GET /repos/{owner}/{repo}/actions/secrets/public-key\"],\n getRepoSecret: [\"GET /repos/{owner}/{repo}/actions/secrets/{secret_name}\"],\n getReviewsForRun: [\n \"GET /repos/{owner}/{repo}/actions/runs/{run_id}/approvals\",\n ],\n getSelfHostedRunnerForOrg: [\"GET /orgs/{org}/actions/runners/{runner_id}\"],\n getSelfHostedRunnerForRepo: [\n \"GET /repos/{owner}/{repo}/actions/runners/{runner_id}\",\n ],\n getWorkflow: [\"GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}\"],\n getWorkflowAccessToRepository: [\n \"GET /repos/{owner}/{repo}/actions/permissions/access\",\n ],\n getWorkflowRun: [\"GET /repos/{owner}/{repo}/actions/runs/{run_id}\"],\n getWorkflowRunAttempt: [\n \"GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}\",\n ],\n getWorkflowRunUsage: [\n \"GET /repos/{owner}/{repo}/actions/runs/{run_id}/timing\",\n ],\n getWorkflowUsage: [\n \"GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/timing\",\n ],\n listArtifactsForRepo: [\"GET /repos/{owner}/{repo}/actions/artifacts\"],\n listEnvironmentSecrets: [\n \"GET /repositories/{repository_id}/environments/{environment_name}/secrets\",\n ],\n listJobsForWorkflowRun: [\n \"GET /repos/{owner}/{repo}/actions/runs/{run_id}/jobs\",\n ],\n listJobsForWorkflowRunAttempt: [\n \"GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/jobs\",\n ],\n listLabelsForSelfHostedRunnerForOrg: [\n \"GET /orgs/{org}/actions/runners/{runner_id}/labels\",\n ],\n listLabelsForSelfHostedRunnerForRepo: [\n \"GET /repos/{owner}/{repo}/actions/runners/{runner_id}/labels\",\n ],\n listOrgSecrets: [\"GET /orgs/{org}/actions/secrets\"],\n listRepoSecrets: [\"GET /repos/{owner}/{repo}/actions/secrets\"],\n listRepoWorkflows: [\"GET /repos/{owner}/{repo}/actions/workflows\"],\n listRunnerApplicationsForOrg: [\"GET /orgs/{org}/actions/runners/downloads\"],\n listRunnerApplicationsForRepo: [\n \"GET /repos/{owner}/{repo}/actions/runners/downloads\",\n ],\n listSelectedReposForOrgSecret: [\n \"GET /orgs/{org}/actions/secrets/{secret_name}/repositories\",\n ],\n listSelectedRepositoriesEnabledGithubActionsOrganization: [\n \"GET /orgs/{org}/actions/permissions/repositories\",\n ],\n listSelfHostedRunnersForOrg: [\"GET /orgs/{org}/actions/runners\"],\n listSelfHostedRunnersForRepo: [\"GET /repos/{owner}/{repo}/actions/runners\"],\n listWorkflowRunArtifacts: [\n \"GET /repos/{owner}/{repo}/actions/runs/{run_id}/artifacts\",\n ],\n listWorkflowRuns: [\n \"GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/runs\",\n ],\n listWorkflowRunsForRepo: [\"GET /repos/{owner}/{repo}/actions/runs\"],\n reRunJobForWorkflowRun: [\n \"POST /repos/{owner}/{repo}/actions/jobs/{job_id}/rerun\",\n ],\n reRunWorkflow: [\"POST /repos/{owner}/{repo}/actions/runs/{run_id}/rerun\"],\n reRunWorkflowFailedJobs: [\n \"POST /repos/{owner}/{repo}/actions/runs/{run_id}/rerun-failed-jobs\",\n ],\n removeAllCustomLabelsFromSelfHostedRunnerForOrg: [\n \"DELETE /orgs/{org}/actions/runners/{runner_id}/labels\",\n ],\n removeAllCustomLabelsFromSelfHostedRunnerForRepo: [\n \"DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}/labels\",\n ],\n removeCustomLabelFromSelfHostedRunnerForOrg: [\n \"DELETE /orgs/{org}/actions/runners/{runner_id}/labels/{name}\",\n ],\n removeCustomLabelFromSelfHostedRunnerForRepo: [\n \"DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}/labels/{name}\",\n ],\n removeSelectedRepoFromOrgSecret: [\n \"DELETE /orgs/{org}/actions/secrets/{secret_name}/repositories/{repository_id}\",\n ],\n reviewPendingDeploymentsForRun: [\n \"POST /repos/{owner}/{repo}/actions/runs/{run_id}/pending_deployments\",\n ],\n setAllowedActionsOrganization: [\n \"PUT /orgs/{org}/actions/permissions/selected-actions\",\n ],\n setAllowedActionsRepository: [\n \"PUT /repos/{owner}/{repo}/actions/permissions/selected-actions\",\n ],\n setCustomLabelsForSelfHostedRunnerForOrg: [\n \"PUT /orgs/{org}/actions/runners/{runner_id}/labels\",\n ],\n setCustomLabelsForSelfHostedRunnerForRepo: [\n \"PUT /repos/{owner}/{repo}/actions/runners/{runner_id}/labels\",\n ],\n setGithubActionsDefaultWorkflowPermissionsEnterprise: [\n \"PUT /enterprises/{enterprise}/actions/permissions/workflow\",\n ],\n setGithubActionsDefaultWorkflowPermissionsOrganization: [\n \"PUT /orgs/{org}/actions/permissions/workflow\",\n ],\n setGithubActionsDefaultWorkflowPermissionsRepository: [\n \"PUT /repos/{owner}/{repo}/actions/permissions/workflow\",\n ],\n setGithubActionsPermissionsOrganization: [\n \"PUT /orgs/{org}/actions/permissions\",\n ],\n setGithubActionsPermissionsRepository: [\n \"PUT /repos/{owner}/{repo}/actions/permissions\",\n ],\n setSelectedReposForOrgSecret: [\n \"PUT /orgs/{org}/actions/secrets/{secret_name}/repositories\",\n ],\n setSelectedRepositoriesEnabledGithubActionsOrganization: [\n \"PUT /orgs/{org}/actions/permissions/repositories\",\n ],\n setWorkflowAccessToRepository: [\n \"PUT /repos/{owner}/{repo}/actions/permissions/access\",\n ],\n },\n activity: {\n checkRepoIsStarredByAuthenticatedUser: [\"GET /user/starred/{owner}/{repo}\"],\n deleteRepoSubscription: [\"DELETE /repos/{owner}/{repo}/subscription\"],\n deleteThreadSubscription: [\n \"DELETE /notifications/threads/{thread_id}/subscription\",\n ],\n getFeeds: [\"GET /feeds\"],\n getRepoSubscription: [\"GET /repos/{owner}/{repo}/subscription\"],\n getThread: [\"GET /notifications/threads/{thread_id}\"],\n getThreadSubscriptionForAuthenticatedUser: [\n \"GET /notifications/threads/{thread_id}/subscription\",\n ],\n listEventsForAuthenticatedUser: [\"GET /users/{username}/events\"],\n listNotificationsForAuthenticatedUser: [\"GET /notifications\"],\n listOrgEventsForAuthenticatedUser: [\n \"GET /users/{username}/events/orgs/{org}\",\n ],\n listPublicEvents: [\"GET /events\"],\n listPublicEventsForRepoNetwork: [\"GET /networks/{owner}/{repo}/events\"],\n listPublicEventsForUser: [\"GET /users/{username}/events/public\"],\n listPublicOrgEvents: [\"GET /orgs/{org}/events\"],\n listReceivedEventsForUser: [\"GET /users/{username}/received_events\"],\n listReceivedPublicEventsForUser: [\n \"GET /users/{username}/received_events/public\",\n ],\n listRepoEvents: [\"GET /repos/{owner}/{repo}/events\"],\n listRepoNotificationsForAuthenticatedUser: [\n \"GET /repos/{owner}/{repo}/notifications\",\n ],\n listReposStarredByAuthenticatedUser: [\"GET /user/starred\"],\n listReposStarredByUser: [\"GET /users/{username}/starred\"],\n listReposWatchedByUser: [\"GET /users/{username}/subscriptions\"],\n listStargazersForRepo: [\"GET /repos/{owner}/{repo}/stargazers\"],\n listWatchedReposForAuthenticatedUser: [\"GET /user/subscriptions\"],\n listWatchersForRepo: [\"GET /repos/{owner}/{repo}/subscribers\"],\n markNotificationsAsRead: [\"PUT /notifications\"],\n markRepoNotificationsAsRead: [\"PUT /repos/{owner}/{repo}/notifications\"],\n markThreadAsRead: [\"PATCH /notifications/threads/{thread_id}\"],\n setRepoSubscription: [\"PUT /repos/{owner}/{repo}/subscription\"],\n setThreadSubscription: [\n \"PUT /notifications/threads/{thread_id}/subscription\",\n ],\n starRepoForAuthenticatedUser: [\"PUT /user/starred/{owner}/{repo}\"],\n unstarRepoForAuthenticatedUser: [\"DELETE /user/starred/{owner}/{repo}\"],\n },\n apps: {\n addRepoToInstallation: [\n \"PUT /user/installations/{installation_id}/repositories/{repository_id}\",\n {},\n { renamed: [\"apps\", \"addRepoToInstallationForAuthenticatedUser\"] },\n ],\n addRepoToInstallationForAuthenticatedUser: [\n \"PUT /user/installations/{installation_id}/repositories/{repository_id}\",\n ],\n checkToken: [\"POST /applications/{client_id}/token\"],\n createFromManifest: [\"POST /app-manifests/{code}/conversions\"],\n createInstallationAccessToken: [\n \"POST /app/installations/{installation_id}/access_tokens\",\n ],\n deleteAuthorization: [\"DELETE /applications/{client_id}/grant\"],\n deleteInstallation: [\"DELETE /app/installations/{installation_id}\"],\n deleteToken: [\"DELETE /applications/{client_id}/token\"],\n getAuthenticated: [\"GET /app\"],\n getBySlug: [\"GET /apps/{app_slug}\"],\n getInstallation: [\"GET /app/installations/{installation_id}\"],\n getOrgInstallation: [\"GET /orgs/{org}/installation\"],\n getRepoInstallation: [\"GET /repos/{owner}/{repo}/installation\"],\n getSubscriptionPlanForAccount: [\n \"GET /marketplace_listing/accounts/{account_id}\",\n ],\n getSubscriptionPlanForAccountStubbed: [\n \"GET /marketplace_listing/stubbed/accounts/{account_id}\",\n ],\n getUserInstallation: [\"GET /users/{username}/installation\"],\n getWebhookConfigForApp: [\"GET /app/hook/config\"],\n getWebhookDelivery: [\"GET /app/hook/deliveries/{delivery_id}\"],\n listAccountsForPlan: [\"GET /marketplace_listing/plans/{plan_id}/accounts\"],\n listAccountsForPlanStubbed: [\n \"GET /marketplace_listing/stubbed/plans/{plan_id}/accounts\",\n ],\n listInstallationReposForAuthenticatedUser: [\n \"GET /user/installations/{installation_id}/repositories\",\n ],\n listInstallations: [\"GET /app/installations\"],\n listInstallationsForAuthenticatedUser: [\"GET /user/installations\"],\n listPlans: [\"GET /marketplace_listing/plans\"],\n listPlansStubbed: [\"GET /marketplace_listing/stubbed/plans\"],\n listReposAccessibleToInstallation: [\"GET /installation/repositories\"],\n listSubscriptionsForAuthenticatedUser: [\"GET /user/marketplace_purchases\"],\n listSubscriptionsForAuthenticatedUserStubbed: [\n \"GET /user/marketplace_purchases/stubbed\",\n ],\n listWebhookDeliveries: [\"GET /app/hook/deliveries\"],\n redeliverWebhookDelivery: [\n \"POST /app/hook/deliveries/{delivery_id}/attempts\",\n ],\n removeRepoFromInstallation: [\n \"DELETE /user/installations/{installation_id}/repositories/{repository_id}\",\n {},\n { renamed: [\"apps\", \"removeRepoFromInstallationForAuthenticatedUser\"] },\n ],\n removeRepoFromInstallationForAuthenticatedUser: [\n \"DELETE /user/installations/{installation_id}/repositories/{repository_id}\",\n ],\n resetToken: [\"PATCH /applications/{client_id}/token\"],\n revokeInstallationAccessToken: [\"DELETE /installation/token\"],\n scopeToken: [\"POST /applications/{client_id}/token/scoped\"],\n suspendInstallation: [\"PUT /app/installations/{installation_id}/suspended\"],\n unsuspendInstallation: [\n \"DELETE /app/installations/{installation_id}/suspended\",\n ],\n updateWebhookConfigForApp: [\"PATCH /app/hook/config\"],\n },\n billing: {\n getGithubActionsBillingOrg: [\"GET /orgs/{org}/settings/billing/actions\"],\n getGithubActionsBillingUser: [\n \"GET /users/{username}/settings/billing/actions\",\n ],\n getGithubAdvancedSecurityBillingGhe: [\n \"GET /enterprises/{enterprise}/settings/billing/advanced-security\",\n ],\n getGithubAdvancedSecurityBillingOrg: [\n \"GET /orgs/{org}/settings/billing/advanced-security\",\n ],\n getGithubPackagesBillingOrg: [\"GET /orgs/{org}/settings/billing/packages\"],\n getGithubPackagesBillingUser: [\n \"GET /users/{username}/settings/billing/packages\",\n ],\n getSharedStorageBillingOrg: [\n \"GET /orgs/{org}/settings/billing/shared-storage\",\n ],\n getSharedStorageBillingUser: [\n \"GET /users/{username}/settings/billing/shared-storage\",\n ],\n },\n checks: {\n create: [\"POST /repos/{owner}/{repo}/check-runs\"],\n createSuite: [\"POST /repos/{owner}/{repo}/check-suites\"],\n get: [\"GET /repos/{owner}/{repo}/check-runs/{check_run_id}\"],\n getSuite: [\"GET /repos/{owner}/{repo}/check-suites/{check_suite_id}\"],\n listAnnotations: [\n \"GET /repos/{owner}/{repo}/check-runs/{check_run_id}/annotations\",\n ],\n listForRef: [\"GET /repos/{owner}/{repo}/commits/{ref}/check-runs\"],\n listForSuite: [\n \"GET /repos/{owner}/{repo}/check-suites/{check_suite_id}/check-runs\",\n ],\n listSuitesForRef: [\"GET /repos/{owner}/{repo}/commits/{ref}/check-suites\"],\n rerequestRun: [\n \"POST /repos/{owner}/{repo}/check-runs/{check_run_id}/rerequest\",\n ],\n rerequestSuite: [\n \"POST /repos/{owner}/{repo}/check-suites/{check_suite_id}/rerequest\",\n ],\n setSuitesPreferences: [\n \"PATCH /repos/{owner}/{repo}/check-suites/preferences\",\n ],\n update: [\"PATCH /repos/{owner}/{repo}/check-runs/{check_run_id}\"],\n },\n codeScanning: {\n deleteAnalysis: [\n \"DELETE /repos/{owner}/{repo}/code-scanning/analyses/{analysis_id}{?confirm_delete}\",\n ],\n getAlert: [\n \"GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}\",\n {},\n { renamedParameters: { alert_id: \"alert_number\" } },\n ],\n getAnalysis: [\n \"GET /repos/{owner}/{repo}/code-scanning/analyses/{analysis_id}\",\n ],\n getSarif: [\"GET /repos/{owner}/{repo}/code-scanning/sarifs/{sarif_id}\"],\n listAlertInstances: [\n \"GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances\",\n ],\n listAlertsForOrg: [\"GET /orgs/{org}/code-scanning/alerts\"],\n listAlertsForRepo: [\"GET /repos/{owner}/{repo}/code-scanning/alerts\"],\n listAlertsInstances: [\n \"GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances\",\n {},\n { renamed: [\"codeScanning\", \"listAlertInstances\"] },\n ],\n listRecentAnalyses: [\"GET /repos/{owner}/{repo}/code-scanning/analyses\"],\n updateAlert: [\n \"PATCH /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}\",\n ],\n uploadSarif: [\"POST /repos/{owner}/{repo}/code-scanning/sarifs\"],\n },\n codesOfConduct: {\n getAllCodesOfConduct: [\"GET /codes_of_conduct\"],\n getConductCode: [\"GET /codes_of_conduct/{key}\"],\n },\n codespaces: {\n addRepositoryForSecretForAuthenticatedUser: [\n \"PUT /user/codespaces/secrets/{secret_name}/repositories/{repository_id}\",\n ],\n codespaceMachinesForAuthenticatedUser: [\n \"GET /user/codespaces/{codespace_name}/machines\",\n ],\n createForAuthenticatedUser: [\"POST /user/codespaces\"],\n createOrUpdateRepoSecret: [\n \"PUT /repos/{owner}/{repo}/codespaces/secrets/{secret_name}\",\n ],\n createOrUpdateSecretForAuthenticatedUser: [\n \"PUT /user/codespaces/secrets/{secret_name}\",\n ],\n createWithPrForAuthenticatedUser: [\n \"POST /repos/{owner}/{repo}/pulls/{pull_number}/codespaces\",\n ],\n createWithRepoForAuthenticatedUser: [\n \"POST /repos/{owner}/{repo}/codespaces\",\n ],\n deleteForAuthenticatedUser: [\"DELETE /user/codespaces/{codespace_name}\"],\n deleteFromOrganization: [\n \"DELETE /orgs/{org}/members/{username}/codespaces/{codespace_name}\",\n ],\n deleteRepoSecret: [\n \"DELETE /repos/{owner}/{repo}/codespaces/secrets/{secret_name}\",\n ],\n deleteSecretForAuthenticatedUser: [\n \"DELETE /user/codespaces/secrets/{secret_name}\",\n ],\n exportForAuthenticatedUser: [\n \"POST /user/codespaces/{codespace_name}/exports\",\n ],\n getExportDetailsForAuthenticatedUser: [\n \"GET /user/codespaces/{codespace_name}/exports/{export_id}\",\n ],\n getForAuthenticatedUser: [\"GET /user/codespaces/{codespace_name}\"],\n getPublicKeyForAuthenticatedUser: [\n \"GET /user/codespaces/secrets/public-key\",\n ],\n getRepoPublicKey: [\n \"GET /repos/{owner}/{repo}/codespaces/secrets/public-key\",\n ],\n getRepoSecret: [\n \"GET /repos/{owner}/{repo}/codespaces/secrets/{secret_name}\",\n ],\n getSecretForAuthenticatedUser: [\n \"GET /user/codespaces/secrets/{secret_name}\",\n ],\n listDevcontainersInRepositoryForAuthenticatedUser: [\n \"GET /repos/{owner}/{repo}/codespaces/devcontainers\",\n ],\n listForAuthenticatedUser: [\"GET /user/codespaces\"],\n listInOrganization: [\n \"GET /orgs/{org}/codespaces\",\n {},\n { renamedParameters: { org_id: \"org\" } },\n ],\n listInRepositoryForAuthenticatedUser: [\n \"GET /repos/{owner}/{repo}/codespaces\",\n ],\n listRepoSecrets: [\"GET /repos/{owner}/{repo}/codespaces/secrets\"],\n listRepositoriesForSecretForAuthenticatedUser: [\n \"GET /user/codespaces/secrets/{secret_name}/repositories\",\n ],\n listSecretsForAuthenticatedUser: [\"GET /user/codespaces/secrets\"],\n removeRepositoryForSecretForAuthenticatedUser: [\n \"DELETE /user/codespaces/secrets/{secret_name}/repositories/{repository_id}\",\n ],\n repoMachinesForAuthenticatedUser: [\n \"GET /repos/{owner}/{repo}/codespaces/machines\",\n ],\n setRepositoriesForSecretForAuthenticatedUser: [\n \"PUT /user/codespaces/secrets/{secret_name}/repositories\",\n ],\n startForAuthenticatedUser: [\"POST /user/codespaces/{codespace_name}/start\"],\n stopForAuthenticatedUser: [\"POST /user/codespaces/{codespace_name}/stop\"],\n stopInOrganization: [\n \"POST /orgs/{org}/members/{username}/codespaces/{codespace_name}/stop\",\n ],\n updateForAuthenticatedUser: [\"PATCH /user/codespaces/{codespace_name}\"],\n },\n dependabot: {\n addSelectedRepoToOrgSecret: [\n \"PUT /orgs/{org}/dependabot/secrets/{secret_name}/repositories/{repository_id}\",\n ],\n createOrUpdateOrgSecret: [\n \"PUT /orgs/{org}/dependabot/secrets/{secret_name}\",\n ],\n createOrUpdateRepoSecret: [\n \"PUT /repos/{owner}/{repo}/dependabot/secrets/{secret_name}\",\n ],\n deleteOrgSecret: [\"DELETE /orgs/{org}/dependabot/secrets/{secret_name}\"],\n deleteRepoSecret: [\n \"DELETE /repos/{owner}/{repo}/dependabot/secrets/{secret_name}\",\n ],\n getOrgPublicKey: [\"GET /orgs/{org}/dependabot/secrets/public-key\"],\n getOrgSecret: [\"GET /orgs/{org}/dependabot/secrets/{secret_name}\"],\n getRepoPublicKey: [\n \"GET /repos/{owner}/{repo}/dependabot/secrets/public-key\",\n ],\n getRepoSecret: [\n \"GET /repos/{owner}/{repo}/dependabot/secrets/{secret_name}\",\n ],\n listOrgSecrets: [\"GET /orgs/{org}/dependabot/secrets\"],\n listRepoSecrets: [\"GET /repos/{owner}/{repo}/dependabot/secrets\"],\n listSelectedReposForOrgSecret: [\n \"GET /orgs/{org}/dependabot/secrets/{secret_name}/repositories\",\n ],\n removeSelectedRepoFromOrgSecret: [\n \"DELETE /orgs/{org}/dependabot/secrets/{secret_name}/repositories/{repository_id}\",\n ],\n setSelectedReposForOrgSecret: [\n \"PUT /orgs/{org}/dependabot/secrets/{secret_name}/repositories\",\n ],\n },\n dependencyGraph: {\n createRepositorySnapshot: [\n \"POST /repos/{owner}/{repo}/dependency-graph/snapshots\",\n ],\n diffRange: [\n \"GET /repos/{owner}/{repo}/dependency-graph/compare/{basehead}\",\n ],\n },\n emojis: { get: [\"GET /emojis\"] },\n enterpriseAdmin: {\n addCustomLabelsToSelfHostedRunnerForEnterprise: [\n \"POST /enterprises/{enterprise}/actions/runners/{runner_id}/labels\",\n ],\n disableSelectedOrganizationGithubActionsEnterprise: [\n \"DELETE /enterprises/{enterprise}/actions/permissions/organizations/{org_id}\",\n ],\n enableSelectedOrganizationGithubActionsEnterprise: [\n \"PUT /enterprises/{enterprise}/actions/permissions/organizations/{org_id}\",\n ],\n getAllowedActionsEnterprise: [\n \"GET /enterprises/{enterprise}/actions/permissions/selected-actions\",\n ],\n getGithubActionsPermissionsEnterprise: [\n \"GET /enterprises/{enterprise}/actions/permissions\",\n ],\n getServerStatistics: [\n \"GET /enterprise-installation/{enterprise_or_org}/server-statistics\",\n ],\n listLabelsForSelfHostedRunnerForEnterprise: [\n \"GET /enterprises/{enterprise}/actions/runners/{runner_id}/labels\",\n ],\n listSelectedOrganizationsEnabledGithubActionsEnterprise: [\n \"GET /enterprises/{enterprise}/actions/permissions/organizations\",\n ],\n removeAllCustomLabelsFromSelfHostedRunnerForEnterprise: [\n \"DELETE /enterprises/{enterprise}/actions/runners/{runner_id}/labels\",\n ],\n removeCustomLabelFromSelfHostedRunnerForEnterprise: [\n \"DELETE /enterprises/{enterprise}/actions/runners/{runner_id}/labels/{name}\",\n ],\n setAllowedActionsEnterprise: [\n \"PUT /enterprises/{enterprise}/actions/permissions/selected-actions\",\n ],\n setCustomLabelsForSelfHostedRunnerForEnterprise: [\n \"PUT /enterprises/{enterprise}/actions/runners/{runner_id}/labels\",\n ],\n setGithubActionsPermissionsEnterprise: [\n \"PUT /enterprises/{enterprise}/actions/permissions\",\n ],\n setSelectedOrganizationsEnabledGithubActionsEnterprise: [\n \"PUT /enterprises/{enterprise}/actions/permissions/organizations\",\n ],\n },\n gists: {\n checkIsStarred: [\"GET /gists/{gist_id}/star\"],\n create: [\"POST /gists\"],\n createComment: [\"POST /gists/{gist_id}/comments\"],\n delete: [\"DELETE /gists/{gist_id}\"],\n deleteComment: [\"DELETE /gists/{gist_id}/comments/{comment_id}\"],\n fork: [\"POST /gists/{gist_id}/forks\"],\n get: [\"GET /gists/{gist_id}\"],\n getComment: [\"GET /gists/{gist_id}/comments/{comment_id}\"],\n getRevision: [\"GET /gists/{gist_id}/{sha}\"],\n list: [\"GET /gists\"],\n listComments: [\"GET /gists/{gist_id}/comments\"],\n listCommits: [\"GET /gists/{gist_id}/commits\"],\n listForUser: [\"GET /users/{username}/gists\"],\n listForks: [\"GET /gists/{gist_id}/forks\"],\n listPublic: [\"GET /gists/public\"],\n listStarred: [\"GET /gists/starred\"],\n star: [\"PUT /gists/{gist_id}/star\"],\n unstar: [\"DELETE /gists/{gist_id}/star\"],\n update: [\"PATCH /gists/{gist_id}\"],\n updateComment: [\"PATCH /gists/{gist_id}/comments/{comment_id}\"],\n },\n git: {\n createBlob: [\"POST /repos/{owner}/{repo}/git/blobs\"],\n createCommit: [\"POST /repos/{owner}/{repo}/git/commits\"],\n createRef: [\"POST /repos/{owner}/{repo}/git/refs\"],\n createTag: [\"POST /repos/{owner}/{repo}/git/tags\"],\n createTree: [\"POST /repos/{owner}/{repo}/git/trees\"],\n deleteRef: [\"DELETE /repos/{owner}/{repo}/git/refs/{ref}\"],\n getBlob: [\"GET /repos/{owner}/{repo}/git/blobs/{file_sha}\"],\n getCommit: [\"GET /repos/{owner}/{repo}/git/commits/{commit_sha}\"],\n getRef: [\"GET /repos/{owner}/{repo}/git/ref/{ref}\"],\n getTag: [\"GET /repos/{owner}/{repo}/git/tags/{tag_sha}\"],\n getTree: [\"GET /repos/{owner}/{repo}/git/trees/{tree_sha}\"],\n listMatchingRefs: [\"GET /repos/{owner}/{repo}/git/matching-refs/{ref}\"],\n updateRef: [\"PATCH /repos/{owner}/{repo}/git/refs/{ref}\"],\n },\n gitignore: {\n getAllTemplates: [\"GET /gitignore/templates\"],\n getTemplate: [\"GET /gitignore/templates/{name}\"],\n },\n interactions: {\n getRestrictionsForAuthenticatedUser: [\"GET /user/interaction-limits\"],\n getRestrictionsForOrg: [\"GET /orgs/{org}/interaction-limits\"],\n getRestrictionsForRepo: [\"GET /repos/{owner}/{repo}/interaction-limits\"],\n getRestrictionsForYourPublicRepos: [\n \"GET /user/interaction-limits\",\n {},\n { renamed: [\"interactions\", \"getRestrictionsForAuthenticatedUser\"] },\n ],\n removeRestrictionsForAuthenticatedUser: [\"DELETE /user/interaction-limits\"],\n removeRestrictionsForOrg: [\"DELETE /orgs/{org}/interaction-limits\"],\n removeRestrictionsForRepo: [\n \"DELETE /repos/{owner}/{repo}/interaction-limits\",\n ],\n removeRestrictionsForYourPublicRepos: [\n \"DELETE /user/interaction-limits\",\n {},\n { renamed: [\"interactions\", \"removeRestrictionsForAuthenticatedUser\"] },\n ],\n setRestrictionsForAuthenticatedUser: [\"PUT /user/interaction-limits\"],\n setRestrictionsForOrg: [\"PUT /orgs/{org}/interaction-limits\"],\n setRestrictionsForRepo: [\"PUT /repos/{owner}/{repo}/interaction-limits\"],\n setRestrictionsForYourPublicRepos: [\n \"PUT /user/interaction-limits\",\n {},\n { renamed: [\"interactions\", \"setRestrictionsForAuthenticatedUser\"] },\n ],\n },\n issues: {\n addAssignees: [\n \"POST /repos/{owner}/{repo}/issues/{issue_number}/assignees\",\n ],\n addLabels: [\"POST /repos/{owner}/{repo}/issues/{issue_number}/labels\"],\n checkUserCanBeAssigned: [\"GET /repos/{owner}/{repo}/assignees/{assignee}\"],\n create: [\"POST /repos/{owner}/{repo}/issues\"],\n createComment: [\n \"POST /repos/{owner}/{repo}/issues/{issue_number}/comments\",\n ],\n createLabel: [\"POST /repos/{owner}/{repo}/labels\"],\n createMilestone: [\"POST /repos/{owner}/{repo}/milestones\"],\n deleteComment: [\n \"DELETE /repos/{owner}/{repo}/issues/comments/{comment_id}\",\n ],\n deleteLabel: [\"DELETE /repos/{owner}/{repo}/labels/{name}\"],\n deleteMilestone: [\n \"DELETE /repos/{owner}/{repo}/milestones/{milestone_number}\",\n ],\n get: [\"GET /repos/{owner}/{repo}/issues/{issue_number}\"],\n getComment: [\"GET /repos/{owner}/{repo}/issues/comments/{comment_id}\"],\n getEvent: [\"GET /repos/{owner}/{repo}/issues/events/{event_id}\"],\n getLabel: [\"GET /repos/{owner}/{repo}/labels/{name}\"],\n getMilestone: [\"GET /repos/{owner}/{repo}/milestones/{milestone_number}\"],\n list: [\"GET /issues\"],\n listAssignees: [\"GET /repos/{owner}/{repo}/assignees\"],\n listComments: [\"GET /repos/{owner}/{repo}/issues/{issue_number}/comments\"],\n listCommentsForRepo: [\"GET /repos/{owner}/{repo}/issues/comments\"],\n listEvents: [\"GET /repos/{owner}/{repo}/issues/{issue_number}/events\"],\n listEventsForRepo: [\"GET /repos/{owner}/{repo}/issues/events\"],\n listEventsForTimeline: [\n \"GET /repos/{owner}/{repo}/issues/{issue_number}/timeline\",\n ],\n listForAuthenticatedUser: [\"GET /user/issues\"],\n listForOrg: [\"GET /orgs/{org}/issues\"],\n listForRepo: [\"GET /repos/{owner}/{repo}/issues\"],\n listLabelsForMilestone: [\n \"GET /repos/{owner}/{repo}/milestones/{milestone_number}/labels\",\n ],\n listLabelsForRepo: [\"GET /repos/{owner}/{repo}/labels\"],\n listLabelsOnIssue: [\n \"GET /repos/{owner}/{repo}/issues/{issue_number}/labels\",\n ],\n listMilestones: [\"GET /repos/{owner}/{repo}/milestones\"],\n lock: [\"PUT /repos/{owner}/{repo}/issues/{issue_number}/lock\"],\n removeAllLabels: [\n \"DELETE /repos/{owner}/{repo}/issues/{issue_number}/labels\",\n ],\n removeAssignees: [\n \"DELETE /repos/{owner}/{repo}/issues/{issue_number}/assignees\",\n ],\n removeLabel: [\n \"DELETE /repos/{owner}/{repo}/issues/{issue_number}/labels/{name}\",\n ],\n setLabels: [\"PUT /repos/{owner}/{repo}/issues/{issue_number}/labels\"],\n unlock: [\"DELETE /repos/{owner}/{repo}/issues/{issue_number}/lock\"],\n update: [\"PATCH /repos/{owner}/{repo}/issues/{issue_number}\"],\n updateComment: [\"PATCH /repos/{owner}/{repo}/issues/comments/{comment_id}\"],\n updateLabel: [\"PATCH /repos/{owner}/{repo}/labels/{name}\"],\n updateMilestone: [\n \"PATCH /repos/{owner}/{repo}/milestones/{milestone_number}\",\n ],\n },\n licenses: {\n get: [\"GET /licenses/{license}\"],\n getAllCommonlyUsed: [\"GET /licenses\"],\n getForRepo: [\"GET /repos/{owner}/{repo}/license\"],\n },\n markdown: {\n render: [\"POST /markdown\"],\n renderRaw: [\n \"POST /markdown/raw\",\n { headers: { \"content-type\": \"text/plain; charset=utf-8\" } },\n ],\n },\n meta: {\n get: [\"GET /meta\"],\n getOctocat: [\"GET /octocat\"],\n getZen: [\"GET /zen\"],\n root: [\"GET /\"],\n },\n migrations: {\n cancelImport: [\"DELETE /repos/{owner}/{repo}/import\"],\n deleteArchiveForAuthenticatedUser: [\n \"DELETE /user/migrations/{migration_id}/archive\",\n ],\n deleteArchiveForOrg: [\n \"DELETE /orgs/{org}/migrations/{migration_id}/archive\",\n ],\n downloadArchiveForOrg: [\n \"GET /orgs/{org}/migrations/{migration_id}/archive\",\n ],\n getArchiveForAuthenticatedUser: [\n \"GET /user/migrations/{migration_id}/archive\",\n ],\n getCommitAuthors: [\"GET /repos/{owner}/{repo}/import/authors\"],\n getImportStatus: [\"GET /repos/{owner}/{repo}/import\"],\n getLargeFiles: [\"GET /repos/{owner}/{repo}/import/large_files\"],\n getStatusForAuthenticatedUser: [\"GET /user/migrations/{migration_id}\"],\n getStatusForOrg: [\"GET /orgs/{org}/migrations/{migration_id}\"],\n listForAuthenticatedUser: [\"GET /user/migrations\"],\n listForOrg: [\"GET /orgs/{org}/migrations\"],\n listReposForAuthenticatedUser: [\n \"GET /user/migrations/{migration_id}/repositories\",\n ],\n listReposForOrg: [\"GET /orgs/{org}/migrations/{migration_id}/repositories\"],\n listReposForUser: [\n \"GET /user/migrations/{migration_id}/repositories\",\n {},\n { renamed: [\"migrations\", \"listReposForAuthenticatedUser\"] },\n ],\n mapCommitAuthor: [\"PATCH /repos/{owner}/{repo}/import/authors/{author_id}\"],\n setLfsPreference: [\"PATCH /repos/{owner}/{repo}/import/lfs\"],\n startForAuthenticatedUser: [\"POST /user/migrations\"],\n startForOrg: [\"POST /orgs/{org}/migrations\"],\n startImport: [\"PUT /repos/{owner}/{repo}/import\"],\n unlockRepoForAuthenticatedUser: [\n \"DELETE /user/migrations/{migration_id}/repos/{repo_name}/lock\",\n ],\n unlockRepoForOrg: [\n \"DELETE /orgs/{org}/migrations/{migration_id}/repos/{repo_name}/lock\",\n ],\n updateImport: [\"PATCH /repos/{owner}/{repo}/import\"],\n },\n orgs: {\n blockUser: [\"PUT /orgs/{org}/blocks/{username}\"],\n cancelInvitation: [\"DELETE /orgs/{org}/invitations/{invitation_id}\"],\n checkBlockedUser: [\"GET /orgs/{org}/blocks/{username}\"],\n checkMembershipForUser: [\"GET /orgs/{org}/members/{username}\"],\n checkPublicMembershipForUser: [\"GET /orgs/{org}/public_members/{username}\"],\n convertMemberToOutsideCollaborator: [\n \"PUT /orgs/{org}/outside_collaborators/{username}\",\n ],\n createInvitation: [\"POST /orgs/{org}/invitations\"],\n createWebhook: [\"POST /orgs/{org}/hooks\"],\n deleteWebhook: [\"DELETE /orgs/{org}/hooks/{hook_id}\"],\n get: [\"GET /orgs/{org}\"],\n getMembershipForAuthenticatedUser: [\"GET /user/memberships/orgs/{org}\"],\n getMembershipForUser: [\"GET /orgs/{org}/memberships/{username}\"],\n getWebhook: [\"GET /orgs/{org}/hooks/{hook_id}\"],\n getWebhookConfigForOrg: [\"GET /orgs/{org}/hooks/{hook_id}/config\"],\n getWebhookDelivery: [\n \"GET /orgs/{org}/hooks/{hook_id}/deliveries/{delivery_id}\",\n ],\n list: [\"GET /organizations\"],\n listAppInstallations: [\"GET /orgs/{org}/installations\"],\n listBlockedUsers: [\"GET /orgs/{org}/blocks\"],\n listCustomRoles: [\"GET /organizations/{organization_id}/custom_roles\"],\n listFailedInvitations: [\"GET /orgs/{org}/failed_invitations\"],\n listForAuthenticatedUser: [\"GET /user/orgs\"],\n listForUser: [\"GET /users/{username}/orgs\"],\n listInvitationTeams: [\"GET /orgs/{org}/invitations/{invitation_id}/teams\"],\n listMembers: [\"GET /orgs/{org}/members\"],\n listMembershipsForAuthenticatedUser: [\"GET /user/memberships/orgs\"],\n listOutsideCollaborators: [\"GET /orgs/{org}/outside_collaborators\"],\n listPendingInvitations: [\"GET /orgs/{org}/invitations\"],\n listPublicMembers: [\"GET /orgs/{org}/public_members\"],\n listWebhookDeliveries: [\"GET /orgs/{org}/hooks/{hook_id}/deliveries\"],\n listWebhooks: [\"GET /orgs/{org}/hooks\"],\n pingWebhook: [\"POST /orgs/{org}/hooks/{hook_id}/pings\"],\n redeliverWebhookDelivery: [\n \"POST /orgs/{org}/hooks/{hook_id}/deliveries/{delivery_id}/attempts\",\n ],\n removeMember: [\"DELETE /orgs/{org}/members/{username}\"],\n removeMembershipForUser: [\"DELETE /orgs/{org}/memberships/{username}\"],\n removeOutsideCollaborator: [\n \"DELETE /orgs/{org}/outside_collaborators/{username}\",\n ],\n removePublicMembershipForAuthenticatedUser: [\n \"DELETE /orgs/{org}/public_members/{username}\",\n ],\n setMembershipForUser: [\"PUT /orgs/{org}/memberships/{username}\"],\n setPublicMembershipForAuthenticatedUser: [\n \"PUT /orgs/{org}/public_members/{username}\",\n ],\n unblockUser: [\"DELETE /orgs/{org}/blocks/{username}\"],\n update: [\"PATCH /orgs/{org}\"],\n updateMembershipForAuthenticatedUser: [\n \"PATCH /user/memberships/orgs/{org}\",\n ],\n updateWebhook: [\"PATCH /orgs/{org}/hooks/{hook_id}\"],\n updateWebhookConfigForOrg: [\"PATCH /orgs/{org}/hooks/{hook_id}/config\"],\n },\n packages: {\n deletePackageForAuthenticatedUser: [\n \"DELETE /user/packages/{package_type}/{package_name}\",\n ],\n deletePackageForOrg: [\n \"DELETE /orgs/{org}/packages/{package_type}/{package_name}\",\n ],\n deletePackageForUser: [\n \"DELETE /users/{username}/packages/{package_type}/{package_name}\",\n ],\n deletePackageVersionForAuthenticatedUser: [\n \"DELETE /user/packages/{package_type}/{package_name}/versions/{package_version_id}\",\n ],\n deletePackageVersionForOrg: [\n \"DELETE /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}\",\n ],\n deletePackageVersionForUser: [\n \"DELETE /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}\",\n ],\n getAllPackageVersionsForAPackageOwnedByAnOrg: [\n \"GET /orgs/{org}/packages/{package_type}/{package_name}/versions\",\n {},\n { renamed: [\"packages\", \"getAllPackageVersionsForPackageOwnedByOrg\"] },\n ],\n getAllPackageVersionsForAPackageOwnedByTheAuthenticatedUser: [\n \"GET /user/packages/{package_type}/{package_name}/versions\",\n {},\n {\n renamed: [\n \"packages\",\n \"getAllPackageVersionsForPackageOwnedByAuthenticatedUser\",\n ],\n },\n ],\n getAllPackageVersionsForPackageOwnedByAuthenticatedUser: [\n \"GET /user/packages/{package_type}/{package_name}/versions\",\n ],\n getAllPackageVersionsForPackageOwnedByOrg: [\n \"GET /orgs/{org}/packages/{package_type}/{package_name}/versions\",\n ],\n getAllPackageVersionsForPackageOwnedByUser: [\n \"GET /users/{username}/packages/{package_type}/{package_name}/versions\",\n ],\n getPackageForAuthenticatedUser: [\n \"GET /user/packages/{package_type}/{package_name}\",\n ],\n getPackageForOrganization: [\n \"GET /orgs/{org}/packages/{package_type}/{package_name}\",\n ],\n getPackageForUser: [\n \"GET /users/{username}/packages/{package_type}/{package_name}\",\n ],\n getPackageVersionForAuthenticatedUser: [\n \"GET /user/packages/{package_type}/{package_name}/versions/{package_version_id}\",\n ],\n getPackageVersionForOrganization: [\n \"GET /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}\",\n ],\n getPackageVersionForUser: [\n \"GET /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}\",\n ],\n listPackagesForAuthenticatedUser: [\"GET /user/packages\"],\n listPackagesForOrganization: [\"GET /orgs/{org}/packages\"],\n listPackagesForUser: [\"GET /users/{username}/packages\"],\n restorePackageForAuthenticatedUser: [\n \"POST /user/packages/{package_type}/{package_name}/restore{?token}\",\n ],\n restorePackageForOrg: [\n \"POST /orgs/{org}/packages/{package_type}/{package_name}/restore{?token}\",\n ],\n restorePackageForUser: [\n \"POST /users/{username}/packages/{package_type}/{package_name}/restore{?token}\",\n ],\n restorePackageVersionForAuthenticatedUser: [\n \"POST /user/packages/{package_type}/{package_name}/versions/{package_version_id}/restore\",\n ],\n restorePackageVersionForOrg: [\n \"POST /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}/restore\",\n ],\n restorePackageVersionForUser: [\n \"POST /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}/restore\",\n ],\n },\n projects: {\n addCollaborator: [\"PUT /projects/{project_id}/collaborators/{username}\"],\n createCard: [\"POST /projects/columns/{column_id}/cards\"],\n createColumn: [\"POST /projects/{project_id}/columns\"],\n createForAuthenticatedUser: [\"POST /user/projects\"],\n createForOrg: [\"POST /orgs/{org}/projects\"],\n createForRepo: [\"POST /repos/{owner}/{repo}/projects\"],\n delete: [\"DELETE /projects/{project_id}\"],\n deleteCard: [\"DELETE /projects/columns/cards/{card_id}\"],\n deleteColumn: [\"DELETE /projects/columns/{column_id}\"],\n get: [\"GET /projects/{project_id}\"],\n getCard: [\"GET /projects/columns/cards/{card_id}\"],\n getColumn: [\"GET /projects/columns/{column_id}\"],\n getPermissionForUser: [\n \"GET /projects/{project_id}/collaborators/{username}/permission\",\n ],\n listCards: [\"GET /projects/columns/{column_id}/cards\"],\n listCollaborators: [\"GET /projects/{project_id}/collaborators\"],\n listColumns: [\"GET /projects/{project_id}/columns\"],\n listForOrg: [\"GET /orgs/{org}/projects\"],\n listForRepo: [\"GET /repos/{owner}/{repo}/projects\"],\n listForUser: [\"GET /users/{username}/projects\"],\n moveCard: [\"POST /projects/columns/cards/{card_id}/moves\"],\n moveColumn: [\"POST /projects/columns/{column_id}/moves\"],\n removeCollaborator: [\n \"DELETE /projects/{project_id}/collaborators/{username}\",\n ],\n update: [\"PATCH /projects/{project_id}\"],\n updateCard: [\"PATCH /projects/columns/cards/{card_id}\"],\n updateColumn: [\"PATCH /projects/columns/{column_id}\"],\n },\n pulls: {\n checkIfMerged: [\"GET /repos/{owner}/{repo}/pulls/{pull_number}/merge\"],\n create: [\"POST /repos/{owner}/{repo}/pulls\"],\n createReplyForReviewComment: [\n \"POST /repos/{owner}/{repo}/pulls/{pull_number}/comments/{comment_id}/replies\",\n ],\n createReview: [\"POST /repos/{owner}/{repo}/pulls/{pull_number}/reviews\"],\n createReviewComment: [\n \"POST /repos/{owner}/{repo}/pulls/{pull_number}/comments\",\n ],\n deletePendingReview: [\n \"DELETE /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}\",\n ],\n deleteReviewComment: [\n \"DELETE /repos/{owner}/{repo}/pulls/comments/{comment_id}\",\n ],\n dismissReview: [\n \"PUT /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/dismissals\",\n ],\n get: [\"GET /repos/{owner}/{repo}/pulls/{pull_number}\"],\n getReview: [\n \"GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}\",\n ],\n getReviewComment: [\"GET /repos/{owner}/{repo}/pulls/comments/{comment_id}\"],\n list: [\"GET /repos/{owner}/{repo}/pulls\"],\n listCommentsForReview: [\n \"GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/comments\",\n ],\n listCommits: [\"GET /repos/{owner}/{repo}/pulls/{pull_number}/commits\"],\n listFiles: [\"GET /repos/{owner}/{repo}/pulls/{pull_number}/files\"],\n listRequestedReviewers: [\n \"GET /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers\",\n ],\n listReviewComments: [\n \"GET /repos/{owner}/{repo}/pulls/{pull_number}/comments\",\n ],\n listReviewCommentsForRepo: [\"GET /repos/{owner}/{repo}/pulls/comments\"],\n listReviews: [\"GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews\"],\n merge: [\"PUT /repos/{owner}/{repo}/pulls/{pull_number}/merge\"],\n removeRequestedReviewers: [\n \"DELETE /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers\",\n ],\n requestReviewers: [\n \"POST /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers\",\n ],\n submitReview: [\n \"POST /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/events\",\n ],\n update: [\"PATCH /repos/{owner}/{repo}/pulls/{pull_number}\"],\n updateBranch: [\n \"PUT /repos/{owner}/{repo}/pulls/{pull_number}/update-branch\",\n ],\n updateReview: [\n \"PUT /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}\",\n ],\n updateReviewComment: [\n \"PATCH /repos/{owner}/{repo}/pulls/comments/{comment_id}\",\n ],\n },\n rateLimit: { get: [\"GET /rate_limit\"] },\n reactions: {\n createForCommitComment: [\n \"POST /repos/{owner}/{repo}/comments/{comment_id}/reactions\",\n ],\n createForIssue: [\n \"POST /repos/{owner}/{repo}/issues/{issue_number}/reactions\",\n ],\n createForIssueComment: [\n \"POST /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions\",\n ],\n createForPullRequestReviewComment: [\n \"POST /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions\",\n ],\n createForRelease: [\n \"POST /repos/{owner}/{repo}/releases/{release_id}/reactions\",\n ],\n createForTeamDiscussionCommentInOrg: [\n \"POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions\",\n ],\n createForTeamDiscussionInOrg: [\n \"POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions\",\n ],\n deleteForCommitComment: [\n \"DELETE /repos/{owner}/{repo}/comments/{comment_id}/reactions/{reaction_id}\",\n ],\n deleteForIssue: [\n \"DELETE /repos/{owner}/{repo}/issues/{issue_number}/reactions/{reaction_id}\",\n ],\n deleteForIssueComment: [\n \"DELETE /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions/{reaction_id}\",\n ],\n deleteForPullRequestComment: [\n \"DELETE /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions/{reaction_id}\",\n ],\n deleteForRelease: [\n \"DELETE /repos/{owner}/{repo}/releases/{release_id}/reactions/{reaction_id}\",\n ],\n deleteForTeamDiscussion: [\n \"DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions/{reaction_id}\",\n ],\n deleteForTeamDiscussionComment: [\n \"DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions/{reaction_id}\",\n ],\n listForCommitComment: [\n \"GET /repos/{owner}/{repo}/comments/{comment_id}/reactions\",\n ],\n listForIssue: [\"GET /repos/{owner}/{repo}/issues/{issue_number}/reactions\"],\n listForIssueComment: [\n \"GET /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions\",\n ],\n listForPullRequestReviewComment: [\n \"GET /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions\",\n ],\n listForRelease: [\n \"GET /repos/{owner}/{repo}/releases/{release_id}/reactions\",\n ],\n listForTeamDiscussionCommentInOrg: [\n \"GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions\",\n ],\n listForTeamDiscussionInOrg: [\n \"GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions\",\n ],\n },\n repos: {\n acceptInvitation: [\n \"PATCH /user/repository_invitations/{invitation_id}\",\n {},\n { renamed: [\"repos\", \"acceptInvitationForAuthenticatedUser\"] },\n ],\n acceptInvitationForAuthenticatedUser: [\n \"PATCH /user/repository_invitations/{invitation_id}\",\n ],\n addAppAccessRestrictions: [\n \"POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps\",\n {},\n { mapToData: \"apps\" },\n ],\n addCollaborator: [\"PUT /repos/{owner}/{repo}/collaborators/{username}\"],\n addStatusCheckContexts: [\n \"POST /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts\",\n {},\n { mapToData: \"contexts\" },\n ],\n addTeamAccessRestrictions: [\n \"POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams\",\n {},\n { mapToData: \"teams\" },\n ],\n addUserAccessRestrictions: [\n \"POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users\",\n {},\n { mapToData: \"users\" },\n ],\n checkCollaborator: [\"GET /repos/{owner}/{repo}/collaborators/{username}\"],\n checkVulnerabilityAlerts: [\n \"GET /repos/{owner}/{repo}/vulnerability-alerts\",\n ],\n codeownersErrors: [\"GET /repos/{owner}/{repo}/codeowners/errors\"],\n compareCommits: [\"GET /repos/{owner}/{repo}/compare/{base}...{head}\"],\n compareCommitsWithBasehead: [\n \"GET /repos/{owner}/{repo}/compare/{basehead}\",\n ],\n createAutolink: [\"POST /repos/{owner}/{repo}/autolinks\"],\n createCommitComment: [\n \"POST /repos/{owner}/{repo}/commits/{commit_sha}/comments\",\n ],\n createCommitSignatureProtection: [\n \"POST /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures\",\n ],\n createCommitStatus: [\"POST /repos/{owner}/{repo}/statuses/{sha}\"],\n createDeployKey: [\"POST /repos/{owner}/{repo}/keys\"],\n createDeployment: [\"POST /repos/{owner}/{repo}/deployments\"],\n createDeploymentStatus: [\n \"POST /repos/{owner}/{repo}/deployments/{deployment_id}/statuses\",\n ],\n createDispatchEvent: [\"POST /repos/{owner}/{repo}/dispatches\"],\n createForAuthenticatedUser: [\"POST /user/repos\"],\n createFork: [\"POST /repos/{owner}/{repo}/forks\"],\n createInOrg: [\"POST /orgs/{org}/repos\"],\n createOrUpdateEnvironment: [\n \"PUT /repos/{owner}/{repo}/environments/{environment_name}\",\n ],\n createOrUpdateFileContents: [\"PUT /repos/{owner}/{repo}/contents/{path}\"],\n createPagesSite: [\"POST /repos/{owner}/{repo}/pages\"],\n createRelease: [\"POST /repos/{owner}/{repo}/releases\"],\n createTagProtection: [\"POST /repos/{owner}/{repo}/tags/protection\"],\n createUsingTemplate: [\n \"POST /repos/{template_owner}/{template_repo}/generate\",\n ],\n createWebhook: [\"POST /repos/{owner}/{repo}/hooks\"],\n declineInvitation: [\n \"DELETE /user/repository_invitations/{invitation_id}\",\n {},\n { renamed: [\"repos\", \"declineInvitationForAuthenticatedUser\"] },\n ],\n declineInvitationForAuthenticatedUser: [\n \"DELETE /user/repository_invitations/{invitation_id}\",\n ],\n delete: [\"DELETE /repos/{owner}/{repo}\"],\n deleteAccessRestrictions: [\n \"DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions\",\n ],\n deleteAdminBranchProtection: [\n \"DELETE /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins\",\n ],\n deleteAnEnvironment: [\n \"DELETE /repos/{owner}/{repo}/environments/{environment_name}\",\n ],\n deleteAutolink: [\"DELETE /repos/{owner}/{repo}/autolinks/{autolink_id}\"],\n deleteBranchProtection: [\n \"DELETE /repos/{owner}/{repo}/branches/{branch}/protection\",\n ],\n deleteCommitComment: [\"DELETE /repos/{owner}/{repo}/comments/{comment_id}\"],\n deleteCommitSignatureProtection: [\n \"DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures\",\n ],\n deleteDeployKey: [\"DELETE /repos/{owner}/{repo}/keys/{key_id}\"],\n deleteDeployment: [\n \"DELETE /repos/{owner}/{repo}/deployments/{deployment_id}\",\n ],\n deleteFile: [\"DELETE /repos/{owner}/{repo}/contents/{path}\"],\n deleteInvitation: [\n \"DELETE /repos/{owner}/{repo}/invitations/{invitation_id}\",\n ],\n deletePagesSite: [\"DELETE /repos/{owner}/{repo}/pages\"],\n deletePullRequestReviewProtection: [\n \"DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews\",\n ],\n deleteRelease: [\"DELETE /repos/{owner}/{repo}/releases/{release_id}\"],\n deleteReleaseAsset: [\n \"DELETE /repos/{owner}/{repo}/releases/assets/{asset_id}\",\n ],\n deleteTagProtection: [\n \"DELETE /repos/{owner}/{repo}/tags/protection/{tag_protection_id}\",\n ],\n deleteWebhook: [\"DELETE /repos/{owner}/{repo}/hooks/{hook_id}\"],\n disableAutomatedSecurityFixes: [\n \"DELETE /repos/{owner}/{repo}/automated-security-fixes\",\n ],\n disableLfsForRepo: [\"DELETE /repos/{owner}/{repo}/lfs\"],\n disableVulnerabilityAlerts: [\n \"DELETE /repos/{owner}/{repo}/vulnerability-alerts\",\n ],\n downloadArchive: [\n \"GET /repos/{owner}/{repo}/zipball/{ref}\",\n {},\n { renamed: [\"repos\", \"downloadZipballArchive\"] },\n ],\n downloadTarballArchive: [\"GET /repos/{owner}/{repo}/tarball/{ref}\"],\n downloadZipballArchive: [\"GET /repos/{owner}/{repo}/zipball/{ref}\"],\n enableAutomatedSecurityFixes: [\n \"PUT /repos/{owner}/{repo}/automated-security-fixes\",\n ],\n enableLfsForRepo: [\"PUT /repos/{owner}/{repo}/lfs\"],\n enableVulnerabilityAlerts: [\n \"PUT /repos/{owner}/{repo}/vulnerability-alerts\",\n ],\n generateReleaseNotes: [\n \"POST /repos/{owner}/{repo}/releases/generate-notes\",\n ],\n get: [\"GET /repos/{owner}/{repo}\"],\n getAccessRestrictions: [\n \"GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions\",\n ],\n getAdminBranchProtection: [\n \"GET /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins\",\n ],\n getAllEnvironments: [\"GET /repos/{owner}/{repo}/environments\"],\n getAllStatusCheckContexts: [\n \"GET /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts\",\n ],\n getAllTopics: [\"GET /repos/{owner}/{repo}/topics\"],\n getAppsWithAccessToProtectedBranch: [\n \"GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps\",\n ],\n getAutolink: [\"GET /repos/{owner}/{repo}/autolinks/{autolink_id}\"],\n getBranch: [\"GET /repos/{owner}/{repo}/branches/{branch}\"],\n getBranchProtection: [\n \"GET /repos/{owner}/{repo}/branches/{branch}/protection\",\n ],\n getClones: [\"GET /repos/{owner}/{repo}/traffic/clones\"],\n getCodeFrequencyStats: [\"GET /repos/{owner}/{repo}/stats/code_frequency\"],\n getCollaboratorPermissionLevel: [\n \"GET /repos/{owner}/{repo}/collaborators/{username}/permission\",\n ],\n getCombinedStatusForRef: [\"GET /repos/{owner}/{repo}/commits/{ref}/status\"],\n getCommit: [\"GET /repos/{owner}/{repo}/commits/{ref}\"],\n getCommitActivityStats: [\"GET /repos/{owner}/{repo}/stats/commit_activity\"],\n getCommitComment: [\"GET /repos/{owner}/{repo}/comments/{comment_id}\"],\n getCommitSignatureProtection: [\n \"GET /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures\",\n ],\n getCommunityProfileMetrics: [\"GET /repos/{owner}/{repo}/community/profile\"],\n getContent: [\"GET /repos/{owner}/{repo}/contents/{path}\"],\n getContributorsStats: [\"GET /repos/{owner}/{repo}/stats/contributors\"],\n getDeployKey: [\"GET /repos/{owner}/{repo}/keys/{key_id}\"],\n getDeployment: [\"GET /repos/{owner}/{repo}/deployments/{deployment_id}\"],\n getDeploymentStatus: [\n \"GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses/{status_id}\",\n ],\n getEnvironment: [\n \"GET /repos/{owner}/{repo}/environments/{environment_name}\",\n ],\n getLatestPagesBuild: [\"GET /repos/{owner}/{repo}/pages/builds/latest\"],\n getLatestRelease: [\"GET /repos/{owner}/{repo}/releases/latest\"],\n getPages: [\"GET /repos/{owner}/{repo}/pages\"],\n getPagesBuild: [\"GET /repos/{owner}/{repo}/pages/builds/{build_id}\"],\n getPagesHealthCheck: [\"GET /repos/{owner}/{repo}/pages/health\"],\n getParticipationStats: [\"GET /repos/{owner}/{repo}/stats/participation\"],\n getPullRequestReviewProtection: [\n \"GET /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews\",\n ],\n getPunchCardStats: [\"GET /repos/{owner}/{repo}/stats/punch_card\"],\n getReadme: [\"GET /repos/{owner}/{repo}/readme\"],\n getReadmeInDirectory: [\"GET /repos/{owner}/{repo}/readme/{dir}\"],\n getRelease: [\"GET /repos/{owner}/{repo}/releases/{release_id}\"],\n getReleaseAsset: [\"GET /repos/{owner}/{repo}/releases/assets/{asset_id}\"],\n getReleaseByTag: [\"GET /repos/{owner}/{repo}/releases/tags/{tag}\"],\n getStatusChecksProtection: [\n \"GET /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks\",\n ],\n getTeamsWithAccessToProtectedBranch: [\n \"GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams\",\n ],\n getTopPaths: [\"GET /repos/{owner}/{repo}/traffic/popular/paths\"],\n getTopReferrers: [\"GET /repos/{owner}/{repo}/traffic/popular/referrers\"],\n getUsersWithAccessToProtectedBranch: [\n \"GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users\",\n ],\n getViews: [\"GET /repos/{owner}/{repo}/traffic/views\"],\n getWebhook: [\"GET /repos/{owner}/{repo}/hooks/{hook_id}\"],\n getWebhookConfigForRepo: [\n \"GET /repos/{owner}/{repo}/hooks/{hook_id}/config\",\n ],\n getWebhookDelivery: [\n \"GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries/{delivery_id}\",\n ],\n listAutolinks: [\"GET /repos/{owner}/{repo}/autolinks\"],\n listBranches: [\"GET /repos/{owner}/{repo}/branches\"],\n listBranchesForHeadCommit: [\n \"GET /repos/{owner}/{repo}/commits/{commit_sha}/branches-where-head\",\n ],\n listCollaborators: [\"GET /repos/{owner}/{repo}/collaborators\"],\n listCommentsForCommit: [\n \"GET /repos/{owner}/{repo}/commits/{commit_sha}/comments\",\n ],\n listCommitCommentsForRepo: [\"GET /repos/{owner}/{repo}/comments\"],\n listCommitStatusesForRef: [\n \"GET /repos/{owner}/{repo}/commits/{ref}/statuses\",\n ],\n listCommits: [\"GET /repos/{owner}/{repo}/commits\"],\n listContributors: [\"GET /repos/{owner}/{repo}/contributors\"],\n listDeployKeys: [\"GET /repos/{owner}/{repo}/keys\"],\n listDeploymentStatuses: [\n \"GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses\",\n ],\n listDeployments: [\"GET /repos/{owner}/{repo}/deployments\"],\n listForAuthenticatedUser: [\"GET /user/repos\"],\n listForOrg: [\"GET /orgs/{org}/repos\"],\n listForUser: [\"GET /users/{username}/repos\"],\n listForks: [\"GET /repos/{owner}/{repo}/forks\"],\n listInvitations: [\"GET /repos/{owner}/{repo}/invitations\"],\n listInvitationsForAuthenticatedUser: [\"GET /user/repository_invitations\"],\n listLanguages: [\"GET /repos/{owner}/{repo}/languages\"],\n listPagesBuilds: [\"GET /repos/{owner}/{repo}/pages/builds\"],\n listPublic: [\"GET /repositories\"],\n listPullRequestsAssociatedWithCommit: [\n \"GET /repos/{owner}/{repo}/commits/{commit_sha}/pulls\",\n ],\n listReleaseAssets: [\n \"GET /repos/{owner}/{repo}/releases/{release_id}/assets\",\n ],\n listReleases: [\"GET /repos/{owner}/{repo}/releases\"],\n listTagProtection: [\"GET /repos/{owner}/{repo}/tags/protection\"],\n listTags: [\"GET /repos/{owner}/{repo}/tags\"],\n listTeams: [\"GET /repos/{owner}/{repo}/teams\"],\n listWebhookDeliveries: [\n \"GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries\",\n ],\n listWebhooks: [\"GET /repos/{owner}/{repo}/hooks\"],\n merge: [\"POST /repos/{owner}/{repo}/merges\"],\n mergeUpstream: [\"POST /repos/{owner}/{repo}/merge-upstream\"],\n pingWebhook: [\"POST /repos/{owner}/{repo}/hooks/{hook_id}/pings\"],\n redeliverWebhookDelivery: [\n \"POST /repos/{owner}/{repo}/hooks/{hook_id}/deliveries/{delivery_id}/attempts\",\n ],\n removeAppAccessRestrictions: [\n \"DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps\",\n {},\n { mapToData: \"apps\" },\n ],\n removeCollaborator: [\n \"DELETE /repos/{owner}/{repo}/collaborators/{username}\",\n ],\n removeStatusCheckContexts: [\n \"DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts\",\n {},\n { mapToData: \"contexts\" },\n ],\n removeStatusCheckProtection: [\n \"DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks\",\n ],\n removeTeamAccessRestrictions: [\n \"DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams\",\n {},\n { mapToData: \"teams\" },\n ],\n removeUserAccessRestrictions: [\n \"DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users\",\n {},\n { mapToData: \"users\" },\n ],\n renameBranch: [\"POST /repos/{owner}/{repo}/branches/{branch}/rename\"],\n replaceAllTopics: [\"PUT /repos/{owner}/{repo}/topics\"],\n requestPagesBuild: [\"POST /repos/{owner}/{repo}/pages/builds\"],\n setAdminBranchProtection: [\n \"POST /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins\",\n ],\n setAppAccessRestrictions: [\n \"PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps\",\n {},\n { mapToData: \"apps\" },\n ],\n setStatusCheckContexts: [\n \"PUT /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts\",\n {},\n { mapToData: \"contexts\" },\n ],\n setTeamAccessRestrictions: [\n \"PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams\",\n {},\n { mapToData: \"teams\" },\n ],\n setUserAccessRestrictions: [\n \"PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users\",\n {},\n { mapToData: \"users\" },\n ],\n testPushWebhook: [\"POST /repos/{owner}/{repo}/hooks/{hook_id}/tests\"],\n transfer: [\"POST /repos/{owner}/{repo}/transfer\"],\n update: [\"PATCH /repos/{owner}/{repo}\"],\n updateBranchProtection: [\n \"PUT /repos/{owner}/{repo}/branches/{branch}/protection\",\n ],\n updateCommitComment: [\"PATCH /repos/{owner}/{repo}/comments/{comment_id}\"],\n updateInformationAboutPagesSite: [\"PUT /repos/{owner}/{repo}/pages\"],\n updateInvitation: [\n \"PATCH /repos/{owner}/{repo}/invitations/{invitation_id}\",\n ],\n updatePullRequestReviewProtection: [\n \"PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews\",\n ],\n updateRelease: [\"PATCH /repos/{owner}/{repo}/releases/{release_id}\"],\n updateReleaseAsset: [\n \"PATCH /repos/{owner}/{repo}/releases/assets/{asset_id}\",\n ],\n updateStatusCheckPotection: [\n \"PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks\",\n {},\n { renamed: [\"repos\", \"updateStatusCheckProtection\"] },\n ],\n updateStatusCheckProtection: [\n \"PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks\",\n ],\n updateWebhook: [\"PATCH /repos/{owner}/{repo}/hooks/{hook_id}\"],\n updateWebhookConfigForRepo: [\n \"PATCH /repos/{owner}/{repo}/hooks/{hook_id}/config\",\n ],\n uploadReleaseAsset: [\n \"POST /repos/{owner}/{repo}/releases/{release_id}/assets{?name,label}\",\n { baseUrl: \"https://uploads.github.com\" },\n ],\n },\n search: {\n code: [\"GET /search/code\"],\n commits: [\"GET /search/commits\"],\n issuesAndPullRequests: [\"GET /search/issues\"],\n labels: [\"GET /search/labels\"],\n repos: [\"GET /search/repositories\"],\n topics: [\"GET /search/topics\"],\n users: [\"GET /search/users\"],\n },\n secretScanning: {\n getAlert: [\n \"GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}\",\n ],\n listAlertsForEnterprise: [\n \"GET /enterprises/{enterprise}/secret-scanning/alerts\",\n ],\n listAlertsForOrg: [\"GET /orgs/{org}/secret-scanning/alerts\"],\n listAlertsForRepo: [\"GET /repos/{owner}/{repo}/secret-scanning/alerts\"],\n listLocationsForAlert: [\n \"GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}/locations\",\n ],\n updateAlert: [\n \"PATCH /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}\",\n ],\n },\n teams: {\n addOrUpdateMembershipForUserInOrg: [\n \"PUT /orgs/{org}/teams/{team_slug}/memberships/{username}\",\n ],\n addOrUpdateProjectPermissionsInOrg: [\n \"PUT /orgs/{org}/teams/{team_slug}/projects/{project_id}\",\n ],\n addOrUpdateRepoPermissionsInOrg: [\n \"PUT /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}\",\n ],\n checkPermissionsForProjectInOrg: [\n \"GET /orgs/{org}/teams/{team_slug}/projects/{project_id}\",\n ],\n checkPermissionsForRepoInOrg: [\n \"GET /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}\",\n ],\n create: [\"POST /orgs/{org}/teams\"],\n createDiscussionCommentInOrg: [\n \"POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments\",\n ],\n createDiscussionInOrg: [\"POST /orgs/{org}/teams/{team_slug}/discussions\"],\n deleteDiscussionCommentInOrg: [\n \"DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}\",\n ],\n deleteDiscussionInOrg: [\n \"DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}\",\n ],\n deleteInOrg: [\"DELETE /orgs/{org}/teams/{team_slug}\"],\n getByName: [\"GET /orgs/{org}/teams/{team_slug}\"],\n getDiscussionCommentInOrg: [\n \"GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}\",\n ],\n getDiscussionInOrg: [\n \"GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}\",\n ],\n getMembershipForUserInOrg: [\n \"GET /orgs/{org}/teams/{team_slug}/memberships/{username}\",\n ],\n list: [\"GET /orgs/{org}/teams\"],\n listChildInOrg: [\"GET /orgs/{org}/teams/{team_slug}/teams\"],\n listDiscussionCommentsInOrg: [\n \"GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments\",\n ],\n listDiscussionsInOrg: [\"GET /orgs/{org}/teams/{team_slug}/discussions\"],\n listForAuthenticatedUser: [\"GET /user/teams\"],\n listMembersInOrg: [\"GET /orgs/{org}/teams/{team_slug}/members\"],\n listPendingInvitationsInOrg: [\n \"GET /orgs/{org}/teams/{team_slug}/invitations\",\n ],\n listProjectsInOrg: [\"GET /orgs/{org}/teams/{team_slug}/projects\"],\n listReposInOrg: [\"GET /orgs/{org}/teams/{team_slug}/repos\"],\n removeMembershipForUserInOrg: [\n \"DELETE /orgs/{org}/teams/{team_slug}/memberships/{username}\",\n ],\n removeProjectInOrg: [\n \"DELETE /orgs/{org}/teams/{team_slug}/projects/{project_id}\",\n ],\n removeRepoInOrg: [\n \"DELETE /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}\",\n ],\n updateDiscussionCommentInOrg: [\n \"PATCH /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}\",\n ],\n updateDiscussionInOrg: [\n \"PATCH /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}\",\n ],\n updateInOrg: [\"PATCH /orgs/{org}/teams/{team_slug}\"],\n },\n users: {\n addEmailForAuthenticated: [\n \"POST /user/emails\",\n {},\n { renamed: [\"users\", \"addEmailForAuthenticatedUser\"] },\n ],\n addEmailForAuthenticatedUser: [\"POST /user/emails\"],\n block: [\"PUT /user/blocks/{username}\"],\n checkBlocked: [\"GET /user/blocks/{username}\"],\n checkFollowingForUser: [\"GET /users/{username}/following/{target_user}\"],\n checkPersonIsFollowedByAuthenticated: [\"GET /user/following/{username}\"],\n createGpgKeyForAuthenticated: [\n \"POST /user/gpg_keys\",\n {},\n { renamed: [\"users\", \"createGpgKeyForAuthenticatedUser\"] },\n ],\n createGpgKeyForAuthenticatedUser: [\"POST /user/gpg_keys\"],\n createPublicSshKeyForAuthenticated: [\n \"POST /user/keys\",\n {},\n { renamed: [\"users\", \"createPublicSshKeyForAuthenticatedUser\"] },\n ],\n createPublicSshKeyForAuthenticatedUser: [\"POST /user/keys\"],\n deleteEmailForAuthenticated: [\n \"DELETE /user/emails\",\n {},\n { renamed: [\"users\", \"deleteEmailForAuthenticatedUser\"] },\n ],\n deleteEmailForAuthenticatedUser: [\"DELETE /user/emails\"],\n deleteGpgKeyForAuthenticated: [\n \"DELETE /user/gpg_keys/{gpg_key_id}\",\n {},\n { renamed: [\"users\", \"deleteGpgKeyForAuthenticatedUser\"] },\n ],\n deleteGpgKeyForAuthenticatedUser: [\"DELETE /user/gpg_keys/{gpg_key_id}\"],\n deletePublicSshKeyForAuthenticated: [\n \"DELETE /user/keys/{key_id}\",\n {},\n { renamed: [\"users\", \"deletePublicSshKeyForAuthenticatedUser\"] },\n ],\n deletePublicSshKeyForAuthenticatedUser: [\"DELETE /user/keys/{key_id}\"],\n follow: [\"PUT /user/following/{username}\"],\n getAuthenticated: [\"GET /user\"],\n getByUsername: [\"GET /users/{username}\"],\n getContextForUser: [\"GET /users/{username}/hovercard\"],\n getGpgKeyForAuthenticated: [\n \"GET /user/gpg_keys/{gpg_key_id}\",\n {},\n { renamed: [\"users\", \"getGpgKeyForAuthenticatedUser\"] },\n ],\n getGpgKeyForAuthenticatedUser: [\"GET /user/gpg_keys/{gpg_key_id}\"],\n getPublicSshKeyForAuthenticated: [\n \"GET /user/keys/{key_id}\",\n {},\n { renamed: [\"users\", \"getPublicSshKeyForAuthenticatedUser\"] },\n ],\n getPublicSshKeyForAuthenticatedUser: [\"GET /user/keys/{key_id}\"],\n list: [\"GET /users\"],\n listBlockedByAuthenticated: [\n \"GET /user/blocks\",\n {},\n { renamed: [\"users\", \"listBlockedByAuthenticatedUser\"] },\n ],\n listBlockedByAuthenticatedUser: [\"GET /user/blocks\"],\n listEmailsForAuthenticated: [\n \"GET /user/emails\",\n {},\n { renamed: [\"users\", \"listEmailsForAuthenticatedUser\"] },\n ],\n listEmailsForAuthenticatedUser: [\"GET /user/emails\"],\n listFollowedByAuthenticated: [\n \"GET /user/following\",\n {},\n { renamed: [\"users\", \"listFollowedByAuthenticatedUser\"] },\n ],\n listFollowedByAuthenticatedUser: [\"GET /user/following\"],\n listFollowersForAuthenticatedUser: [\"GET /user/followers\"],\n listFollowersForUser: [\"GET /users/{username}/followers\"],\n listFollowingForUser: [\"GET /users/{username}/following\"],\n listGpgKeysForAuthenticated: [\n \"GET /user/gpg_keys\",\n {},\n { renamed: [\"users\", \"listGpgKeysForAuthenticatedUser\"] },\n ],\n listGpgKeysForAuthenticatedUser: [\"GET /user/gpg_keys\"],\n listGpgKeysForUser: [\"GET /users/{username}/gpg_keys\"],\n listPublicEmailsForAuthenticated: [\n \"GET /user/public_emails\",\n {},\n { renamed: [\"users\", \"listPublicEmailsForAuthenticatedUser\"] },\n ],\n listPublicEmailsForAuthenticatedUser: [\"GET /user/public_emails\"],\n listPublicKeysForUser: [\"GET /users/{username}/keys\"],\n listPublicSshKeysForAuthenticated: [\n \"GET /user/keys\",\n {},\n { renamed: [\"users\", \"listPublicSshKeysForAuthenticatedUser\"] },\n ],\n listPublicSshKeysForAuthenticatedUser: [\"GET /user/keys\"],\n setPrimaryEmailVisibilityForAuthenticated: [\n \"PATCH /user/email/visibility\",\n {},\n { renamed: [\"users\", \"setPrimaryEmailVisibilityForAuthenticatedUser\"] },\n ],\n setPrimaryEmailVisibilityForAuthenticatedUser: [\n \"PATCH /user/email/visibility\",\n ],\n unblock: [\"DELETE /user/blocks/{username}\"],\n unfollow: [\"DELETE /user/following/{username}\"],\n updateAuthenticated: [\"PATCH /user\"],\n },\n};\nexport default Endpoints;\n","export const VERSION = \"5.16.2\";\n","export function endpointsToMethods(octokit, endpointsMap) {\n const newMethods = {};\n for (const [scope, endpoints] of Object.entries(endpointsMap)) {\n for (const [methodName, endpoint] of Object.entries(endpoints)) {\n const [route, defaults, decorations] = endpoint;\n const [method, url] = route.split(/ /);\n const endpointDefaults = Object.assign({ method, url }, defaults);\n if (!newMethods[scope]) {\n newMethods[scope] = {};\n }\n const scopeMethods = newMethods[scope];\n if (decorations) {\n scopeMethods[methodName] = decorate(octokit, scope, methodName, endpointDefaults, decorations);\n continue;\n }\n scopeMethods[methodName] = octokit.request.defaults(endpointDefaults);\n }\n }\n return newMethods;\n}\nfunction decorate(octokit, scope, methodName, defaults, decorations) {\n const requestWithDefaults = octokit.request.defaults(defaults);\n /* istanbul ignore next */\n function withDecorations(...args) {\n // @ts-ignore https://github.com/microsoft/TypeScript/issues/25488\n let options = requestWithDefaults.endpoint.merge(...args);\n // There are currently no other decorations than `.mapToData`\n if (decorations.mapToData) {\n options = Object.assign({}, options, {\n data: options[decorations.mapToData],\n [decorations.mapToData]: undefined,\n });\n return requestWithDefaults(options);\n }\n if (decorations.renamed) {\n const [newScope, newMethodName] = decorations.renamed;\n octokit.log.warn(`octokit.${scope}.${methodName}() has been renamed to octokit.${newScope}.${newMethodName}()`);\n }\n if (decorations.deprecated) {\n octokit.log.warn(decorations.deprecated);\n }\n if (decorations.renamedParameters) {\n // @ts-ignore https://github.com/microsoft/TypeScript/issues/25488\n const options = requestWithDefaults.endpoint.merge(...args);\n for (const [name, alias] of Object.entries(decorations.renamedParameters)) {\n if (name in options) {\n octokit.log.warn(`\"${name}\" parameter is deprecated for \"octokit.${scope}.${methodName}()\". Use \"${alias}\" instead`);\n if (!(alias in options)) {\n options[alias] = options[name];\n }\n delete options[name];\n }\n }\n return requestWithDefaults(options);\n }\n // @ts-ignore https://github.com/microsoft/TypeScript/issues/25488\n return requestWithDefaults(...args);\n }\n return Object.assign(withDecorations, requestWithDefaults);\n}\n","import ENDPOINTS from \"./generated/endpoints\";\nimport { VERSION } from \"./version\";\nimport { endpointsToMethods } from \"./endpoints-to-methods\";\nexport function restEndpointMethods(octokit) {\n const api = endpointsToMethods(octokit, ENDPOINTS);\n return {\n rest: api,\n };\n}\nrestEndpointMethods.VERSION = VERSION;\nexport function legacyRestEndpointMethods(octokit) {\n const api = endpointsToMethods(octokit, ENDPOINTS);\n return {\n ...api,\n rest: api,\n };\n}\nlegacyRestEndpointMethods.VERSION = VERSION;\n"],"names":["ENDPOINTS"],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@octokit/plugin-rest-endpoint-methods/package.json b/node_modules/@octokit/plugin-rest-endpoint-methods/package.json new file mode 100644 index 0000000..42c5ce3 --- /dev/null +++ b/node_modules/@octokit/plugin-rest-endpoint-methods/package.json @@ -0,0 +1,59 @@ +{ + "name": "@octokit/plugin-rest-endpoint-methods", + "description": "Octokit plugin adding one method for all of api.github.com REST API endpoints", + "version": "5.16.2", + "license": "MIT", + "files": [ + "dist-*/", + "bin/" + ], + "pika": true, + "sideEffects": false, + "keywords": [ + "github", + "api", + "sdk", + "toolkit" + ], + "repository": "github:octokit/plugin-rest-endpoint-methods.js", + "dependencies": { + "@octokit/types": "^6.39.0", + "deprecation": "^2.3.1" + }, + "peerDependencies": { + "@octokit/core": ">=3" + }, + "devDependencies": { + "@gimenete/type-writer": "^0.1.5", + "@octokit/core": "^3.0.0", + "@pika/pack": "^0.5.0", + "@pika/plugin-build-node": "^0.9.0", + "@pika/plugin-build-web": "^0.9.0", + "@pika/plugin-ts-standard-pkg": "^0.9.0", + "@types/fetch-mock": "^7.3.1", + "@types/jest": "^27.0.0", + "@types/node": "^16.0.0", + "fetch-mock": "^9.0.0", + "fs-extra": "^10.0.0", + "github-openapi-graphql-query": "^2.0.0", + "jest": "^27.0.0", + "lodash.camelcase": "^4.3.0", + "lodash.set": "^4.3.2", + "lodash.upperfirst": "^4.3.1", + "mustache": "^4.0.0", + "npm-run-all": "^4.1.5", + "prettier": "2.7.1", + "semantic-release-plugin-update-version-in-files": "^1.0.0", + "sort-keys": "^4.2.0", + "string-to-jsdoc-comment": "^1.0.0", + "ts-jest": "^27.0.0-next.12", + "typescript": "^4.0.2" + }, + "publishConfig": { + "access": "public" + }, + "source": "dist-src/index.js", + "types": "dist-types/index.d.ts", + "main": "dist-node/index.js", + "module": "dist-web/index.js" +} diff --git a/node_modules/@octokit/request-error/LICENSE b/node_modules/@octokit/request-error/LICENSE new file mode 100644 index 0000000..ef2c18e --- /dev/null +++ b/node_modules/@octokit/request-error/LICENSE @@ -0,0 +1,21 @@ +The MIT License + +Copyright (c) 2019 Octokit contributors + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/node_modules/@octokit/request-error/README.md b/node_modules/@octokit/request-error/README.md new file mode 100644 index 0000000..1bf5384 --- /dev/null +++ b/node_modules/@octokit/request-error/README.md @@ -0,0 +1,67 @@ +# http-error.js + +> Error class for Octokit request errors + +[![@latest](https://img.shields.io/npm/v/@octokit/request-error.svg)](https://www.npmjs.com/package/@octokit/request-error) +[![Build Status](https://github.com/octokit/request-error.js/workflows/Test/badge.svg)](https://github.com/octokit/request-error.js/actions?query=workflow%3ATest) + +## Usage + + + + + + +
        +Browsers + +Load @octokit/request-error directly from cdn.skypack.dev + +```html + +``` + +
        +Node + + +Install with npm install @octokit/request-error + +```js +const { RequestError } = require("@octokit/request-error"); +// or: import { RequestError } from "@octokit/request-error"; +``` + +
        + +```js +const error = new RequestError("Oops", 500, { + headers: { + "x-github-request-id": "1:2:3:4", + }, // response headers + request: { + method: "POST", + url: "https://api.github.com/foo", + body: { + bar: "baz", + }, + headers: { + authorization: "token secret123", + }, + }, +}); + +error.message; // Oops +error.status; // 500 +error.request.method; // POST +error.request.url; // https://api.github.com/foo +error.request.body; // { bar: 'baz' } +error.request.headers; // { authorization: 'token [REDACTED]' } +error.response; // { url, status, headers, data } +``` + +## LICENSE + +[MIT](LICENSE) diff --git a/node_modules/@octokit/request-error/dist-node/index.js b/node_modules/@octokit/request-error/dist-node/index.js new file mode 100644 index 0000000..619f462 --- /dev/null +++ b/node_modules/@octokit/request-error/dist-node/index.js @@ -0,0 +1,74 @@ +'use strict'; + +Object.defineProperty(exports, '__esModule', { value: true }); + +function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; } + +var deprecation = require('deprecation'); +var once = _interopDefault(require('once')); + +const logOnceCode = once(deprecation => console.warn(deprecation)); +const logOnceHeaders = once(deprecation => console.warn(deprecation)); +/** + * Error with extra properties to help with debugging + */ + +class RequestError extends Error { + constructor(message, statusCode, options) { + super(message); // Maintains proper stack trace (only available on V8) + + /* istanbul ignore next */ + + 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; + } // redact request credentials without mutating original request options + + + 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 // client_id & client_secret can be passed as URL query parameters to increase rate limit + // see https://developer.github.com/v3/#increasing-the-unauthenticated-rate-limit-for-oauth-applications + .replace(/\bclient_secret=\w+/g, "client_secret=[REDACTED]") // OAuth tokens can be passed as URL query parameters, although it is not recommended + // see https://developer.github.com/v3/#oauth2-token-sent-in-a-header + .replace(/\baccess_token=\w+/g, "access_token=[REDACTED]"); + this.request = requestCopy; // deprecations + + 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 || {}; + } + + }); + } + +} + +exports.RequestError = RequestError; +//# sourceMappingURL=index.js.map diff --git a/node_modules/@octokit/request-error/dist-node/index.js.map b/node_modules/@octokit/request-error/dist-node/index.js.map new file mode 100644 index 0000000..9134ddb --- /dev/null +++ b/node_modules/@octokit/request-error/dist-node/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sources":["../dist-src/index.js"],"sourcesContent":["import { Deprecation } from \"deprecation\";\nimport once from \"once\";\nconst logOnceCode = once((deprecation) => console.warn(deprecation));\nconst logOnceHeaders = once((deprecation) => console.warn(deprecation));\n/**\n * Error with extra properties to help with debugging\n */\nexport class RequestError extends Error {\n constructor(message, statusCode, options) {\n super(message);\n // Maintains proper stack trace (only available on V8)\n /* istanbul ignore next */\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n }\n this.name = \"HttpError\";\n this.status = statusCode;\n let headers;\n if (\"headers\" in options && typeof options.headers !== \"undefined\") {\n headers = options.headers;\n }\n if (\"response\" in options) {\n this.response = options.response;\n headers = options.response.headers;\n }\n // redact request credentials without mutating original request options\n const requestCopy = Object.assign({}, options.request);\n if (options.request.headers.authorization) {\n requestCopy.headers = Object.assign({}, options.request.headers, {\n authorization: options.request.headers.authorization.replace(/ .*$/, \" [REDACTED]\"),\n });\n }\n requestCopy.url = requestCopy.url\n // client_id & client_secret can be passed as URL query parameters to increase rate limit\n // see https://developer.github.com/v3/#increasing-the-unauthenticated-rate-limit-for-oauth-applications\n .replace(/\\bclient_secret=\\w+/g, \"client_secret=[REDACTED]\")\n // OAuth tokens can be passed as URL query parameters, although it is not recommended\n // see https://developer.github.com/v3/#oauth2-token-sent-in-a-header\n .replace(/\\baccess_token=\\w+/g, \"access_token=[REDACTED]\");\n this.request = requestCopy;\n // deprecations\n Object.defineProperty(this, \"code\", {\n get() {\n logOnceCode(new Deprecation(\"[@octokit/request-error] `error.code` is deprecated, use `error.status`.\"));\n return statusCode;\n },\n });\n Object.defineProperty(this, \"headers\", {\n get() {\n logOnceHeaders(new Deprecation(\"[@octokit/request-error] `error.headers` is deprecated, use `error.response.headers`.\"));\n return headers || {};\n },\n });\n }\n}\n"],"names":["logOnceCode","once","deprecation","console","warn","logOnceHeaders","RequestError","Error","constructor","message","statusCode","options","captureStackTrace","name","status","headers","response","requestCopy","Object","assign","request","authorization","replace","url","defineProperty","get","Deprecation"],"mappings":";;;;;;;;;AAEA,MAAMA,WAAW,GAAGC,IAAI,CAAEC,WAAD,IAAiBC,OAAO,CAACC,IAAR,CAAaF,WAAb,CAAlB,CAAxB;AACA,MAAMG,cAAc,GAAGJ,IAAI,CAAEC,WAAD,IAAiBC,OAAO,CAACC,IAAR,CAAaF,WAAb,CAAlB,CAA3B;AACA;AACA;AACA;;AACO,MAAMI,YAAN,SAA2BC,KAA3B,CAAiC;AACpCC,EAAAA,WAAW,CAACC,OAAD,EAAUC,UAAV,EAAsBC,OAAtB,EAA+B;AACtC,UAAMF,OAAN,EADsC;;AAGtC;;AACA,QAAIF,KAAK,CAACK,iBAAV,EAA6B;AACzBL,MAAAA,KAAK,CAACK,iBAAN,CAAwB,IAAxB,EAA8B,KAAKJ,WAAnC;AACH;;AACD,SAAKK,IAAL,GAAY,WAAZ;AACA,SAAKC,MAAL,GAAcJ,UAAd;AACA,QAAIK,OAAJ;;AACA,QAAI,aAAaJ,OAAb,IAAwB,OAAOA,OAAO,CAACI,OAAf,KAA2B,WAAvD,EAAoE;AAChEA,MAAAA,OAAO,GAAGJ,OAAO,CAACI,OAAlB;AACH;;AACD,QAAI,cAAcJ,OAAlB,EAA2B;AACvB,WAAKK,QAAL,GAAgBL,OAAO,CAACK,QAAxB;AACAD,MAAAA,OAAO,GAAGJ,OAAO,CAACK,QAAR,CAAiBD,OAA3B;AACH,KAhBqC;;;AAkBtC,UAAME,WAAW,GAAGC,MAAM,CAACC,MAAP,CAAc,EAAd,EAAkBR,OAAO,CAACS,OAA1B,CAApB;;AACA,QAAIT,OAAO,CAACS,OAAR,CAAgBL,OAAhB,CAAwBM,aAA5B,EAA2C;AACvCJ,MAAAA,WAAW,CAACF,OAAZ,GAAsBG,MAAM,CAACC,MAAP,CAAc,EAAd,EAAkBR,OAAO,CAACS,OAAR,CAAgBL,OAAlC,EAA2C;AAC7DM,QAAAA,aAAa,EAAEV,OAAO,CAACS,OAAR,CAAgBL,OAAhB,CAAwBM,aAAxB,CAAsCC,OAAtC,CAA8C,MAA9C,EAAsD,aAAtD;AAD8C,OAA3C,CAAtB;AAGH;;AACDL,IAAAA,WAAW,CAACM,GAAZ,GAAkBN,WAAW,CAACM,GAAZ;AAEd;AAFc,KAGbD,OAHa,CAGL,sBAHK,EAGmB,0BAHnB;AAKd;AALc,KAMbA,OANa,CAML,qBANK,EAMkB,yBANlB,CAAlB;AAOA,SAAKF,OAAL,GAAeH,WAAf,CA/BsC;;AAiCtCC,IAAAA,MAAM,CAACM,cAAP,CAAsB,IAAtB,EAA4B,MAA5B,EAAoC;AAChCC,MAAAA,GAAG,GAAG;AACFzB,QAAAA,WAAW,CAAC,IAAI0B,uBAAJ,CAAgB,0EAAhB,CAAD,CAAX;AACA,eAAOhB,UAAP;AACH;;AAJ+B,KAApC;AAMAQ,IAAAA,MAAM,CAACM,cAAP,CAAsB,IAAtB,EAA4B,SAA5B,EAAuC;AACnCC,MAAAA,GAAG,GAAG;AACFpB,QAAAA,cAAc,CAAC,IAAIqB,uBAAJ,CAAgB,uFAAhB,CAAD,CAAd;AACA,eAAOX,OAAO,IAAI,EAAlB;AACH;;AAJkC,KAAvC;AAMH;;AA9CmC;;;;"} \ No newline at end of file diff --git a/node_modules/@octokit/request-error/dist-src/index.js b/node_modules/@octokit/request-error/dist-src/index.js new file mode 100644 index 0000000..5eb1927 --- /dev/null +++ b/node_modules/@octokit/request-error/dist-src/index.js @@ -0,0 +1,55 @@ +import { Deprecation } from "deprecation"; +import once from "once"; +const logOnceCode = once((deprecation) => console.warn(deprecation)); +const logOnceHeaders = once((deprecation) => console.warn(deprecation)); +/** + * Error with extra properties to help with debugging + */ +export class RequestError extends Error { + constructor(message, statusCode, options) { + super(message); + // Maintains proper stack trace (only available on V8) + /* istanbul ignore next */ + 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; + } + // redact request credentials without mutating original request options + 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 + // client_id & client_secret can be passed as URL query parameters to increase rate limit + // see https://developer.github.com/v3/#increasing-the-unauthenticated-rate-limit-for-oauth-applications + .replace(/\bclient_secret=\w+/g, "client_secret=[REDACTED]") + // OAuth tokens can be passed as URL query parameters, although it is not recommended + // see https://developer.github.com/v3/#oauth2-token-sent-in-a-header + .replace(/\baccess_token=\w+/g, "access_token=[REDACTED]"); + this.request = requestCopy; + // deprecations + Object.defineProperty(this, "code", { + get() { + logOnceCode(new Deprecation("[@octokit/request-error] `error.code` is deprecated, use `error.status`.")); + return statusCode; + }, + }); + Object.defineProperty(this, "headers", { + get() { + logOnceHeaders(new Deprecation("[@octokit/request-error] `error.headers` is deprecated, use `error.response.headers`.")); + return headers || {}; + }, + }); + } +} diff --git a/node_modules/@octokit/request-error/dist-src/types.js b/node_modules/@octokit/request-error/dist-src/types.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/node_modules/@octokit/request-error/dist-src/types.js @@ -0,0 +1 @@ +export {}; diff --git a/node_modules/@octokit/request-error/dist-types/index.d.ts b/node_modules/@octokit/request-error/dist-types/index.d.ts new file mode 100644 index 0000000..d6e089c --- /dev/null +++ b/node_modules/@octokit/request-error/dist-types/index.d.ts @@ -0,0 +1,33 @@ +import { RequestOptions, ResponseHeaders, OctokitResponse } from "@octokit/types"; +import { RequestErrorOptions } from "./types"; +/** + * Error with extra properties to help with debugging + */ +export declare class RequestError extends Error { + name: "HttpError"; + /** + * http status code + */ + status: number; + /** + * http status code + * + * @deprecated `error.code` is deprecated in favor of `error.status` + */ + code: number; + /** + * Request options that lead to the error. + */ + request: RequestOptions; + /** + * error response headers + * + * @deprecated `error.headers` is deprecated in favor of `error.response.headers` + */ + headers: ResponseHeaders; + /** + * Response object if a response was received + */ + response?: OctokitResponse; + constructor(message: string, statusCode: number, options: RequestErrorOptions); +} diff --git a/node_modules/@octokit/request-error/dist-types/types.d.ts b/node_modules/@octokit/request-error/dist-types/types.d.ts new file mode 100644 index 0000000..7785231 --- /dev/null +++ b/node_modules/@octokit/request-error/dist-types/types.d.ts @@ -0,0 +1,9 @@ +import { RequestOptions, ResponseHeaders, OctokitResponse } from "@octokit/types"; +export declare type RequestErrorOptions = { + /** @deprecated set `response` instead */ + headers?: ResponseHeaders; + request: RequestOptions; +} | { + response: OctokitResponse; + request: RequestOptions; +}; diff --git a/node_modules/@octokit/request-error/dist-web/index.js b/node_modules/@octokit/request-error/dist-web/index.js new file mode 100644 index 0000000..0fb64be --- /dev/null +++ b/node_modules/@octokit/request-error/dist-web/index.js @@ -0,0 +1,59 @@ +import { Deprecation } from 'deprecation'; +import once from 'once'; + +const logOnceCode = once((deprecation) => console.warn(deprecation)); +const logOnceHeaders = once((deprecation) => console.warn(deprecation)); +/** + * Error with extra properties to help with debugging + */ +class RequestError extends Error { + constructor(message, statusCode, options) { + super(message); + // Maintains proper stack trace (only available on V8) + /* istanbul ignore next */ + 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; + } + // redact request credentials without mutating original request options + 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 + // client_id & client_secret can be passed as URL query parameters to increase rate limit + // see https://developer.github.com/v3/#increasing-the-unauthenticated-rate-limit-for-oauth-applications + .replace(/\bclient_secret=\w+/g, "client_secret=[REDACTED]") + // OAuth tokens can be passed as URL query parameters, although it is not recommended + // see https://developer.github.com/v3/#oauth2-token-sent-in-a-header + .replace(/\baccess_token=\w+/g, "access_token=[REDACTED]"); + this.request = requestCopy; + // deprecations + Object.defineProperty(this, "code", { + get() { + logOnceCode(new Deprecation("[@octokit/request-error] `error.code` is deprecated, use `error.status`.")); + return statusCode; + }, + }); + Object.defineProperty(this, "headers", { + get() { + logOnceHeaders(new Deprecation("[@octokit/request-error] `error.headers` is deprecated, use `error.response.headers`.")); + return headers || {}; + }, + }); + } +} + +export { RequestError }; +//# sourceMappingURL=index.js.map diff --git a/node_modules/@octokit/request-error/dist-web/index.js.map b/node_modules/@octokit/request-error/dist-web/index.js.map new file mode 100644 index 0000000..78f677f --- /dev/null +++ b/node_modules/@octokit/request-error/dist-web/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sources":["../dist-src/index.js"],"sourcesContent":["import { Deprecation } from \"deprecation\";\nimport once from \"once\";\nconst logOnceCode = once((deprecation) => console.warn(deprecation));\nconst logOnceHeaders = once((deprecation) => console.warn(deprecation));\n/**\n * Error with extra properties to help with debugging\n */\nexport class RequestError extends Error {\n constructor(message, statusCode, options) {\n super(message);\n // Maintains proper stack trace (only available on V8)\n /* istanbul ignore next */\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n }\n this.name = \"HttpError\";\n this.status = statusCode;\n let headers;\n if (\"headers\" in options && typeof options.headers !== \"undefined\") {\n headers = options.headers;\n }\n if (\"response\" in options) {\n this.response = options.response;\n headers = options.response.headers;\n }\n // redact request credentials without mutating original request options\n const requestCopy = Object.assign({}, options.request);\n if (options.request.headers.authorization) {\n requestCopy.headers = Object.assign({}, options.request.headers, {\n authorization: options.request.headers.authorization.replace(/ .*$/, \" [REDACTED]\"),\n });\n }\n requestCopy.url = requestCopy.url\n // client_id & client_secret can be passed as URL query parameters to increase rate limit\n // see https://developer.github.com/v3/#increasing-the-unauthenticated-rate-limit-for-oauth-applications\n .replace(/\\bclient_secret=\\w+/g, \"client_secret=[REDACTED]\")\n // OAuth tokens can be passed as URL query parameters, although it is not recommended\n // see https://developer.github.com/v3/#oauth2-token-sent-in-a-header\n .replace(/\\baccess_token=\\w+/g, \"access_token=[REDACTED]\");\n this.request = requestCopy;\n // deprecations\n Object.defineProperty(this, \"code\", {\n get() {\n logOnceCode(new Deprecation(\"[@octokit/request-error] `error.code` is deprecated, use `error.status`.\"));\n return statusCode;\n },\n });\n Object.defineProperty(this, \"headers\", {\n get() {\n logOnceHeaders(new Deprecation(\"[@octokit/request-error] `error.headers` is deprecated, use `error.response.headers`.\"));\n return headers || {};\n },\n });\n }\n}\n"],"names":[],"mappings":";;;AAEA,MAAM,WAAW,GAAG,IAAI,CAAC,CAAC,WAAW,KAAK,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;AACrE,MAAM,cAAc,GAAG,IAAI,CAAC,CAAC,WAAW,KAAK,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;AACxE;AACA;AACA;AACO,MAAM,YAAY,SAAS,KAAK,CAAC;AACxC,IAAI,WAAW,CAAC,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE;AAC9C,QAAQ,KAAK,CAAC,OAAO,CAAC,CAAC;AACvB;AACA;AACA,QAAQ,IAAI,KAAK,CAAC,iBAAiB,EAAE;AACrC,YAAY,KAAK,CAAC,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;AAC5D,SAAS;AACT,QAAQ,IAAI,CAAC,IAAI,GAAG,WAAW,CAAC;AAChC,QAAQ,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC;AACjC,QAAQ,IAAI,OAAO,CAAC;AACpB,QAAQ,IAAI,SAAS,IAAI,OAAO,IAAI,OAAO,OAAO,CAAC,OAAO,KAAK,WAAW,EAAE;AAC5E,YAAY,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;AACtC,SAAS;AACT,QAAQ,IAAI,UAAU,IAAI,OAAO,EAAE;AACnC,YAAY,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;AAC7C,YAAY,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;AAC/C,SAAS;AACT;AACA,QAAQ,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;AAC/D,QAAQ,IAAI,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,aAAa,EAAE;AACnD,YAAY,WAAW,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE;AAC7E,gBAAgB,aAAa,EAAE,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,MAAM,EAAE,aAAa,CAAC;AACnG,aAAa,CAAC,CAAC;AACf,SAAS;AACT,QAAQ,WAAW,CAAC,GAAG,GAAG,WAAW,CAAC,GAAG;AACzC;AACA;AACA,aAAa,OAAO,CAAC,sBAAsB,EAAE,0BAA0B,CAAC;AACxE;AACA;AACA,aAAa,OAAO,CAAC,qBAAqB,EAAE,yBAAyB,CAAC,CAAC;AACvE,QAAQ,IAAI,CAAC,OAAO,GAAG,WAAW,CAAC;AACnC;AACA,QAAQ,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE;AAC5C,YAAY,GAAG,GAAG;AAClB,gBAAgB,WAAW,CAAC,IAAI,WAAW,CAAC,0EAA0E,CAAC,CAAC,CAAC;AACzH,gBAAgB,OAAO,UAAU,CAAC;AAClC,aAAa;AACb,SAAS,CAAC,CAAC;AACX,QAAQ,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,SAAS,EAAE;AAC/C,YAAY,GAAG,GAAG;AAClB,gBAAgB,cAAc,CAAC,IAAI,WAAW,CAAC,uFAAuF,CAAC,CAAC,CAAC;AACzI,gBAAgB,OAAO,OAAO,IAAI,EAAE,CAAC;AACrC,aAAa;AACb,SAAS,CAAC,CAAC;AACX,KAAK;AACL;;;;"} \ No newline at end of file diff --git a/node_modules/@octokit/request-error/package.json b/node_modules/@octokit/request-error/package.json new file mode 100644 index 0000000..2f5b239 --- /dev/null +++ b/node_modules/@octokit/request-error/package.json @@ -0,0 +1,47 @@ +{ + "name": "@octokit/request-error", + "description": "Error class for Octokit request errors", + "version": "2.1.0", + "license": "MIT", + "files": [ + "dist-*/", + "bin/" + ], + "pika": true, + "sideEffects": false, + "keywords": [ + "octokit", + "github", + "api", + "error" + ], + "repository": "github:octokit/request-error.js", + "dependencies": { + "@octokit/types": "^6.0.3", + "deprecation": "^2.0.0", + "once": "^1.4.0" + }, + "devDependencies": { + "@pika/pack": "^0.5.0", + "@pika/plugin-build-node": "^0.9.0", + "@pika/plugin-build-web": "^0.9.0", + "@pika/plugin-bundle-web": "^0.9.0", + "@pika/plugin-ts-standard-pkg": "^0.9.0", + "@types/jest": "^26.0.0", + "@types/node": "^14.0.4", + "@types/once": "^1.4.0", + "jest": "^27.0.0", + "pika-plugin-unpkg-field": "^1.1.0", + "prettier": "2.3.1", + "semantic-release": "^17.0.0", + "ts-jest": "^27.0.0-next.12", + "typescript": "^4.0.0" + }, + "publishConfig": { + "access": "public" + }, + "source": "dist-src/index.js", + "types": "dist-types/index.d.ts", + "main": "dist-node/index.js", + "module": "dist-web/index.js" +} diff --git a/node_modules/@octokit/request/LICENSE b/node_modules/@octokit/request/LICENSE new file mode 100644 index 0000000..af5366d --- /dev/null +++ b/node_modules/@octokit/request/LICENSE @@ -0,0 +1,21 @@ +The MIT License + +Copyright (c) 2018 Octokit contributors + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/node_modules/@octokit/request/README.md b/node_modules/@octokit/request/README.md new file mode 100644 index 0000000..747a670 --- /dev/null +++ b/node_modules/@octokit/request/README.md @@ -0,0 +1,551 @@ +# request.js + +> Send parameterized requests to GitHub’s APIs with sensible defaults in browsers and Node + +[![@latest](https://img.shields.io/npm/v/@octokit/request.svg)](https://www.npmjs.com/package/@octokit/request) +[![Build Status](https://github.com/octokit/request.js/workflows/Test/badge.svg)](https://github.com/octokit/request.js/actions?query=workflow%3ATest+branch%3Amaster) + +`@octokit/request` is a request library for browsers & node that makes it easier +to interact with [GitHub’s REST API](https://developer.github.com/v3/) and +[GitHub’s GraphQL API](https://developer.github.com/v4/guides/forming-calls/#the-graphql-endpoint). + +It uses [`@octokit/endpoint`](https://github.com/octokit/endpoint.js) to parse +the passed options and sends the request using [fetch](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) +([node-fetch](https://github.com/bitinn/node-fetch) in Node). + + + + + +- [Features](#features) +- [Usage](#usage) + - [REST API example](#rest-api-example) + - [GraphQL example](#graphql-example) + - [Alternative: pass `method` & `url` as part of options](#alternative-pass-method--url-as-part-of-options) +- [Authentication](#authentication) +- [request()](#request) +- [`request.defaults()`](#requestdefaults) +- [`request.endpoint`](#requestendpoint) +- [Special cases](#special-cases) + - [The `data` parameter – set request body directly](#the-data-parameter-%E2%80%93-set-request-body-directly) + - [Set parameters for both the URL/query and the request body](#set-parameters-for-both-the-urlquery-and-the-request-body) +- [LICENSE](#license) + + + +## Features + +🤩 1:1 mapping of REST API endpoint documentation, e.g. [Add labels to an issue](https://developer.github.com/v3/issues/labels/#add-labels-to-an-issue) becomes + +```js +request("POST /repos/{owner}/{repo}/issues/{number}/labels", { + mediaType: { + previews: ["symmetra"], + }, + owner: "octokit", + repo: "request.js", + number: 1, + labels: ["🐛 bug"], +}); +``` + +👶 [Small bundle size](https://bundlephobia.com/result?p=@octokit/request@5.0.3) (\<4kb minified + gzipped) + +😎 [Authenticate](#authentication) with any of [GitHubs Authentication Strategies](https://github.com/octokit/auth.js). + +👍 Sensible defaults + +- `baseUrl`: `https://api.github.com` +- `headers.accept`: `application/vnd.github.v3+json` +- `headers.agent`: `octokit-request.js/ `, e.g. `octokit-request.js/1.2.3 Node.js/10.15.0 (macOS Mojave; x64)` + +👌 Simple to test: mock requests by passing a custom fetch method. + +🧐 Simple to debug: Sets `error.request` to request options causing the error (with redacted credentials). + +## Usage + + + + + + +
        +Browsers + +Load @octokit/request directly from cdn.skypack.dev + +```html + +``` + +
        +Node + + +Install with npm install @octokit/request + +```js +const { request } = require("@octokit/request"); +// or: import { request } from "@octokit/request"; +``` + +
        + +### REST API example + +```js +// Following GitHub docs formatting: +// https://developer.github.com/v3/repos/#list-organization-repositories +const result = await request("GET /orgs/{org}/repos", { + headers: { + authorization: "token 0000000000000000000000000000000000000001", + }, + org: "octokit", + type: "private", +}); + +console.log(`${result.data.length} repos found.`); +``` + +### GraphQL example + +For GraphQL request we recommend using [`@octokit/graphql`](https://github.com/octokit/graphql.js#readme) + +```js +const result = await request("POST /graphql", { + headers: { + authorization: "token 0000000000000000000000000000000000000001", + }, + query: `query ($login: String!) { + organization(login: $login) { + repositories(privacy: PRIVATE) { + totalCount + } + } + }`, + variables: { + login: "octokit", + }, +}); +``` + +### Alternative: pass `method` & `url` as part of options + +Alternatively, pass in a method and a url + +```js +const result = await request({ + method: "GET", + url: "/orgs/{org}/repos", + headers: { + authorization: "token 0000000000000000000000000000000000000001", + }, + org: "octokit", + type: "private", +}); +``` + +## Authentication + +The simplest way to authenticate a request is to set the `Authorization` header directly, e.g. to a [personal access token](https://github.com/settings/tokens/). + +```js +const requestWithAuth = request.defaults({ + headers: { + authorization: "token 0000000000000000000000000000000000000001", + }, +}); +const result = await requestWithAuth("GET /user"); +``` + +For more complex authentication strategies such as GitHub Apps or Basic, we recommend the according authentication library exported by [`@octokit/auth`](https://github.com/octokit/auth.js). + +```js +const { createAppAuth } = require("@octokit/auth-app"); +const auth = createAppAuth({ + appId: process.env.APP_ID, + privateKey: process.env.PRIVATE_KEY, + installationId: 123, +}); +const requestWithAuth = request.defaults({ + request: { + hook: auth.hook, + }, + mediaType: { + previews: ["machine-man"], + }, +}); + +const { data: app } = await requestWithAuth("GET /app"); +const { data: app } = await requestWithAuth( + "POST /repos/{owner}/{repo}/issues", + { + owner: "octocat", + repo: "hello-world", + title: "Hello from the engine room", + } +); +``` + +## request() + +`request(route, options)` or `request(options)`. + +**Options** + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        + name + + type + + description +
        + route + + String + + **Required**. If route is set it has to be a string consisting of the request method and URL, e.g. GET /orgs/{org} +
        + options.baseUrl + + String + + The base URL that route or url will be prefixed with, if they use relative paths. Defaults to https://api.github.com. +
        + options.headers + + Object + + Custom headers. Passed headers are merged with defaults:
        + headers['user-agent'] defaults to octokit-rest.js/1.2.3 (where 1.2.3 is the released version).
        + headers['accept'] defaults to application/vnd.github.v3+json.
        Use options.mediaType.{format,previews} to request API previews and custom media types. +
        + options.mediaType.format + + String + + Media type param, such as `raw`, `html`, or `full`. See Media Types. +
        + options.mediaType.previews + + Array of strings + + Name of previews, such as `mercy`, `symmetra`, or `scarlet-witch`. See API Previews. +
        + options.method + + String + + Any supported http verb, case insensitive. Defaults to Get. +
        + options.url + + String + + **Required**. A path or full URL which may contain :variable or {variable} placeholders, + e.g. /orgs/{org}/repos. The url is parsed using url-template. +
        + options.data + + Any + + Set request body directly instead of setting it to JSON based on additional parameters. See "The `data` parameter" below. +
        + options.request.agent + + http(s).Agent instance + + Node only. Useful for custom proxy, certificate, or dns lookup. +
        + options.request.fetch + + Function + + Custom replacement for built-in fetch method. Useful for testing or request hooks. +
        + options.request.hook + + Function + + Function with the signature hook(request, endpointOptions), where endpointOptions are the parsed options as returned by endpoint.merge(), and request is request(). This option works great in conjuction with before-after-hook. +
        + options.request.signal + + new AbortController().signal + + Use an AbortController instance to cancel a request. In node you can only cancel streamed requests. +
        + options.request.log + + object + + Used for internal logging. Defaults to console. +
        + options.request.timeout + + Number + + Node only. Request/response timeout in ms, it resets on redirect. 0 to disable (OS limit applies). options.request.signal is recommended instead. +
        + +All other options except `options.request.*` will be passed depending on the `method` and `url` options. + +1. If the option key is a placeholder in the `url`, it will be used as replacement. For example, if the passed options are `{url: '/orgs/{org}/repos', org: 'foo'}` the returned `options.url` is `https://api.github.com/orgs/foo/repos` +2. If the `method` is `GET` or `HEAD`, the option is passed as query parameter +3. Otherwise the parameter is passed in the request body as JSON key. + +**Result** + +`request` returns a promise and resolves with 4 keys + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        + key + + type + + description +
        statusIntegerResponse status status
        urlStringURL of response. If a request results in redirects, this is the final URL. You can send a HEAD request to retrieve it without loading the full response body.
        headersObjectAll response headers
        dataAnyThe response body as returned from server. If the response is JSON then it will be parsed into an object
        + +If an error occurs, the `error` instance has additional properties to help with debugging + +- `error.status` The http response status code +- `error.request` The request options such as `method`, `url` and `data` +- `error.response` The http response object with `url`, `headers`, and `data` + +## `request.defaults()` + +Override or set default options. Example: + +```js +const myrequest = require("@octokit/request").defaults({ + baseUrl: "https://github-enterprise.acme-inc.com/api/v3", + headers: { + "user-agent": "myApp/1.2.3", + authorization: `token 0000000000000000000000000000000000000001`, + }, + org: "my-project", + per_page: 100, +}); + +myrequest(`GET /orgs/{org}/repos`); +``` + +You can call `.defaults()` again on the returned method, the defaults will cascade. + +```js +const myProjectRequest = request.defaults({ + baseUrl: "https://github-enterprise.acme-inc.com/api/v3", + headers: { + "user-agent": "myApp/1.2.3", + }, + org: "my-project", +}); +const myProjectRequestWithAuth = myProjectRequest.defaults({ + headers: { + authorization: `token 0000000000000000000000000000000000000001`, + }, +}); +``` + +`myProjectRequest` now defaults the `baseUrl`, `headers['user-agent']`, +`org` and `headers['authorization']` on top of `headers['accept']` that is set +by the global default. + +## `request.endpoint` + +See https://github.com/octokit/endpoint.js. Example + +```js +const options = request.endpoint("GET /orgs/{org}/repos", { + org: "my-project", + type: "private", +}); + +// { +// method: 'GET', +// url: 'https://api.github.com/orgs/my-project/repos?type=private', +// headers: { +// accept: 'application/vnd.github.v3+json', +// authorization: 'token 0000000000000000000000000000000000000001', +// 'user-agent': 'octokit/endpoint.js v1.2.3' +// } +// } +``` + +All of the [`@octokit/endpoint`](https://github.com/octokit/endpoint.js) API can be used: + +- [`octokitRequest.endpoint()`](#endpoint) +- [`octokitRequest.endpoint.defaults()`](#endpointdefaults) +- [`octokitRequest.endpoint.merge()`](#endpointdefaults) +- [`octokitRequest.endpoint.parse()`](#endpointmerge) + +## Special cases + + + +### The `data` parameter – set request body directly + +Some endpoints such as [Render a Markdown document in raw mode](https://developer.github.com/v3/markdown/#render-a-markdown-document-in-raw-mode) don’t have parameters that are sent as request body keys, instead the request body needs to be set directly. In these cases, set the `data` parameter. + +```js +const response = await request("POST /markdown/raw", { + data: "Hello world github/linguist#1 **cool**, and #1!", + headers: { + accept: "text/html;charset=utf-8", + "content-type": "text/plain", + }, +}); + +// Request is sent as +// +// { +// method: 'post', +// url: 'https://api.github.com/markdown/raw', +// headers: { +// accept: 'text/html;charset=utf-8', +// 'content-type': 'text/plain', +// 'user-agent': userAgent +// }, +// body: 'Hello world github/linguist#1 **cool**, and #1!' +// } +// +// not as +// +// { +// ... +// body: '{"data": "Hello world github/linguist#1 **cool**, and #1!"}' +// } +``` + +### Set parameters for both the URL/query and the request body + +There are API endpoints that accept both query parameters as well as a body. In that case you need to add the query parameters as templates to `options.url`, as defined in the [RFC 6570 URI Template specification](https://tools.ietf.org/html/rfc6570). + +Example + +```js +request( + "POST https://uploads.github.com/repos/octocat/Hello-World/releases/1/assets{?name,label}", + { + name: "example.zip", + label: "short description", + headers: { + "content-type": "text/plain", + "content-length": 14, + authorization: `token 0000000000000000000000000000000000000001`, + }, + data: "Hello, world!", + } +); +``` + +## LICENSE + +[MIT](LICENSE) diff --git a/node_modules/@octokit/request/dist-node/index.js b/node_modules/@octokit/request/dist-node/index.js new file mode 100644 index 0000000..685e2f5 --- /dev/null +++ b/node_modules/@octokit/request/dist-node/index.js @@ -0,0 +1,177 @@ +'use strict'; + +Object.defineProperty(exports, '__esModule', { value: true }); + +function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; } + +var endpoint = require('@octokit/endpoint'); +var universalUserAgent = require('universal-user-agent'); +var isPlainObject = require('is-plain-object'); +var nodeFetch = _interopDefault(require('node-fetch')); +var requestError = require('@octokit/request-error'); + +const 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.agent` type is incompatible + // see https://github.com/octokit/types.ts/pull/264 + 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; + } // GitHub API returns 200 for HEAD requests + + + if (requestOptions.method === "HEAD") { + if (status < 400) { + return; + } + + throw new requestError.RequestError(response.statusText, status, { + response: { + url, + status, + headers, + data: undefined + }, + 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 getBufferResponse(response); +} + +function toErrorMessage(data) { + if (typeof data === "string") return data; // istanbul ignore else - just in case + + if ("message" in data) { + if (Array.isArray(data.errors)) { + return `${data.message}: ${data.errors.map(JSON.stringify).join(", ")}`; + } + + return data.message; + } // istanbul ignore next - just in case + + + return `Unknown error: ${JSON.stringify(data)}`; +} + +function withDefaults(oldEndpoint, newDefaults) { + const endpoint = oldEndpoint.defaults(newDefaults); + + const newApi = function (route, parameters) { + const endpointOptions = endpoint.merge(route, parameters); + + if (!endpointOptions.request || !endpointOptions.request.hook) { + return fetchWrapper(endpoint.parse(endpointOptions)); + } + + const request = (route, parameters) => { + return fetchWrapper(endpoint.parse(endpoint.merge(route, parameters))); + }; + + Object.assign(request, { + endpoint, + defaults: withDefaults.bind(null, endpoint) + }); + return endpointOptions.request.hook(request, endpointOptions); + }; + + return Object.assign(newApi, { + endpoint, + defaults: withDefaults.bind(null, endpoint) + }); +} + +const request = withDefaults(endpoint.endpoint, { + headers: { + "user-agent": `octokit-request.js/${VERSION} ${universalUserAgent.getUserAgent()}` + } +}); + +exports.request = request; +//# sourceMappingURL=index.js.map diff --git a/node_modules/@octokit/request/dist-node/index.js.map b/node_modules/@octokit/request/dist-node/index.js.map new file mode 100644 index 0000000..9a51ed1 --- /dev/null +++ b/node_modules/@octokit/request/dist-node/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sources":["../dist-src/version.js","../dist-src/get-buffer-response.js","../dist-src/fetch-wrapper.js","../dist-src/with-defaults.js","../dist-src/index.js"],"sourcesContent":["export const VERSION = \"5.6.3\";\n","export default function getBufferResponse(response) {\n return response.arrayBuffer();\n}\n","import { isPlainObject } from \"is-plain-object\";\nimport nodeFetch from \"node-fetch\";\nimport { RequestError } from \"@octokit/request-error\";\nimport getBuffer from \"./get-buffer-response\";\nexport default function fetchWrapper(requestOptions) {\n const log = requestOptions.request && requestOptions.request.log\n ? requestOptions.request.log\n : console;\n if (isPlainObject(requestOptions.body) ||\n Array.isArray(requestOptions.body)) {\n requestOptions.body = JSON.stringify(requestOptions.body);\n }\n let headers = {};\n let status;\n let url;\n const fetch = (requestOptions.request && requestOptions.request.fetch) || nodeFetch;\n return fetch(requestOptions.url, Object.assign({\n method: requestOptions.method,\n body: requestOptions.body,\n headers: requestOptions.headers,\n redirect: requestOptions.redirect,\n }, \n // `requestOptions.request.agent` type is incompatible\n // see https://github.com/octokit/types.ts/pull/264\n requestOptions.request))\n .then(async (response) => {\n url = response.url;\n status = response.status;\n for (const keyAndValue of response.headers) {\n headers[keyAndValue[0]] = keyAndValue[1];\n }\n if (\"deprecation\" in headers) {\n const matches = headers.link && headers.link.match(/<([^>]+)>; rel=\"deprecation\"/);\n const deprecationLink = matches && matches.pop();\n log.warn(`[@octokit/request] \"${requestOptions.method} ${requestOptions.url}\" is deprecated. It is scheduled to be removed on ${headers.sunset}${deprecationLink ? `. See ${deprecationLink}` : \"\"}`);\n }\n if (status === 204 || status === 205) {\n return;\n }\n // GitHub API returns 200 for HEAD requests\n if (requestOptions.method === \"HEAD\") {\n if (status < 400) {\n return;\n }\n throw new RequestError(response.statusText, status, {\n response: {\n url,\n status,\n headers,\n data: undefined,\n },\n request: requestOptions,\n });\n }\n if (status === 304) {\n throw new RequestError(\"Not modified\", status, {\n response: {\n url,\n status,\n headers,\n data: await getResponseData(response),\n },\n request: requestOptions,\n });\n }\n if (status >= 400) {\n const data = await getResponseData(response);\n const error = new RequestError(toErrorMessage(data), status, {\n response: {\n url,\n status,\n headers,\n data,\n },\n request: requestOptions,\n });\n throw error;\n }\n return getResponseData(response);\n })\n .then((data) => {\n return {\n status,\n url,\n headers,\n data,\n };\n })\n .catch((error) => {\n if (error instanceof RequestError)\n throw error;\n throw new RequestError(error.message, 500, {\n request: requestOptions,\n });\n });\n}\nasync function getResponseData(response) {\n const contentType = response.headers.get(\"content-type\");\n if (/application\\/json/.test(contentType)) {\n return response.json();\n }\n if (!contentType || /^text\\/|charset=utf-8$/.test(contentType)) {\n return response.text();\n }\n return getBuffer(response);\n}\nfunction toErrorMessage(data) {\n if (typeof data === \"string\")\n return data;\n // istanbul ignore else - just in case\n if (\"message\" in data) {\n if (Array.isArray(data.errors)) {\n return `${data.message}: ${data.errors.map(JSON.stringify).join(\", \")}`;\n }\n return data.message;\n }\n // istanbul ignore next - just in case\n return `Unknown error: ${JSON.stringify(data)}`;\n}\n","import fetchWrapper from \"./fetch-wrapper\";\nexport default function withDefaults(oldEndpoint, newDefaults) {\n const endpoint = oldEndpoint.defaults(newDefaults);\n const newApi = function (route, parameters) {\n const endpointOptions = endpoint.merge(route, parameters);\n if (!endpointOptions.request || !endpointOptions.request.hook) {\n return fetchWrapper(endpoint.parse(endpointOptions));\n }\n const request = (route, parameters) => {\n return fetchWrapper(endpoint.parse(endpoint.merge(route, parameters)));\n };\n Object.assign(request, {\n endpoint,\n defaults: withDefaults.bind(null, endpoint),\n });\n return endpointOptions.request.hook(request, endpointOptions);\n };\n return Object.assign(newApi, {\n endpoint,\n defaults: withDefaults.bind(null, endpoint),\n });\n}\n","import { endpoint } from \"@octokit/endpoint\";\nimport { getUserAgent } from \"universal-user-agent\";\nimport { VERSION } from \"./version\";\nimport withDefaults from \"./with-defaults\";\nexport const request = withDefaults(endpoint, {\n headers: {\n \"user-agent\": `octokit-request.js/${VERSION} ${getUserAgent()}`,\n },\n});\n"],"names":["VERSION","getBufferResponse","response","arrayBuffer","fetchWrapper","requestOptions","log","request","console","isPlainObject","body","Array","isArray","JSON","stringify","headers","status","url","fetch","nodeFetch","Object","assign","method","redirect","then","keyAndValue","matches","link","match","deprecationLink","pop","warn","sunset","RequestError","statusText","data","undefined","getResponseData","error","toErrorMessage","catch","message","contentType","get","test","json","text","getBuffer","errors","map","join","withDefaults","oldEndpoint","newDefaults","endpoint","defaults","newApi","route","parameters","endpointOptions","merge","hook","parse","bind","getUserAgent"],"mappings":";;;;;;;;;;;;AAAO,MAAMA,OAAO,GAAG,mBAAhB;;ACAQ,SAASC,iBAAT,CAA2BC,QAA3B,EAAqC;AAChD,SAAOA,QAAQ,CAACC,WAAT,EAAP;AACH;;ACEc,SAASC,YAAT,CAAsBC,cAAtB,EAAsC;AACjD,QAAMC,GAAG,GAAGD,cAAc,CAACE,OAAf,IAA0BF,cAAc,CAACE,OAAf,CAAuBD,GAAjD,GACND,cAAc,CAACE,OAAf,CAAuBD,GADjB,GAENE,OAFN;;AAGA,MAAIC,2BAAa,CAACJ,cAAc,CAACK,IAAhB,CAAb,IACAC,KAAK,CAACC,OAAN,CAAcP,cAAc,CAACK,IAA7B,CADJ,EACwC;AACpCL,IAAAA,cAAc,CAACK,IAAf,GAAsBG,IAAI,CAACC,SAAL,CAAeT,cAAc,CAACK,IAA9B,CAAtB;AACH;;AACD,MAAIK,OAAO,GAAG,EAAd;AACA,MAAIC,MAAJ;AACA,MAAIC,GAAJ;AACA,QAAMC,KAAK,GAAIb,cAAc,CAACE,OAAf,IAA0BF,cAAc,CAACE,OAAf,CAAuBW,KAAlD,IAA4DC,SAA1E;AACA,SAAOD,KAAK,CAACb,cAAc,CAACY,GAAhB,EAAqBG,MAAM,CAACC,MAAP,CAAc;AAC3CC,IAAAA,MAAM,EAAEjB,cAAc,CAACiB,MADoB;AAE3CZ,IAAAA,IAAI,EAAEL,cAAc,CAACK,IAFsB;AAG3CK,IAAAA,OAAO,EAAEV,cAAc,CAACU,OAHmB;AAI3CQ,IAAAA,QAAQ,EAAElB,cAAc,CAACkB;AAJkB,GAAd;AAOjC;AACAlB,EAAAA,cAAc,CAACE,OARkB,CAArB,CAAL,CASFiB,IATE,CASG,MAAOtB,QAAP,IAAoB;AAC1Be,IAAAA,GAAG,GAAGf,QAAQ,CAACe,GAAf;AACAD,IAAAA,MAAM,GAAGd,QAAQ,CAACc,MAAlB;;AACA,SAAK,MAAMS,WAAX,IAA0BvB,QAAQ,CAACa,OAAnC,EAA4C;AACxCA,MAAAA,OAAO,CAACU,WAAW,CAAC,CAAD,CAAZ,CAAP,GAA0BA,WAAW,CAAC,CAAD,CAArC;AACH;;AACD,QAAI,iBAAiBV,OAArB,EAA8B;AAC1B,YAAMW,OAAO,GAAGX,OAAO,CAACY,IAAR,IAAgBZ,OAAO,CAACY,IAAR,CAAaC,KAAb,CAAmB,8BAAnB,CAAhC;AACA,YAAMC,eAAe,GAAGH,OAAO,IAAIA,OAAO,CAACI,GAAR,EAAnC;AACAxB,MAAAA,GAAG,CAACyB,IAAJ,CAAU,uBAAsB1B,cAAc,CAACiB,MAAO,IAAGjB,cAAc,CAACY,GAAI,qDAAoDF,OAAO,CAACiB,MAAO,GAAEH,eAAe,GAAI,SAAQA,eAAgB,EAA5B,GAAgC,EAAG,EAAnM;AACH;;AACD,QAAIb,MAAM,KAAK,GAAX,IAAkBA,MAAM,KAAK,GAAjC,EAAsC;AAClC;AACH,KAbyB;;;AAe1B,QAAIX,cAAc,CAACiB,MAAf,KAA0B,MAA9B,EAAsC;AAClC,UAAIN,MAAM,GAAG,GAAb,EAAkB;AACd;AACH;;AACD,YAAM,IAAIiB,yBAAJ,CAAiB/B,QAAQ,CAACgC,UAA1B,EAAsClB,MAAtC,EAA8C;AAChDd,QAAAA,QAAQ,EAAE;AACNe,UAAAA,GADM;AAEND,UAAAA,MAFM;AAGND,UAAAA,OAHM;AAINoB,UAAAA,IAAI,EAAEC;AAJA,SADsC;AAOhD7B,QAAAA,OAAO,EAAEF;AAPuC,OAA9C,CAAN;AASH;;AACD,QAAIW,MAAM,KAAK,GAAf,EAAoB;AAChB,YAAM,IAAIiB,yBAAJ,CAAiB,cAAjB,EAAiCjB,MAAjC,EAAyC;AAC3Cd,QAAAA,QAAQ,EAAE;AACNe,UAAAA,GADM;AAEND,UAAAA,MAFM;AAGND,UAAAA,OAHM;AAINoB,UAAAA,IAAI,EAAE,MAAME,eAAe,CAACnC,QAAD;AAJrB,SADiC;AAO3CK,QAAAA,OAAO,EAAEF;AAPkC,OAAzC,CAAN;AASH;;AACD,QAAIW,MAAM,IAAI,GAAd,EAAmB;AACf,YAAMmB,IAAI,GAAG,MAAME,eAAe,CAACnC,QAAD,CAAlC;AACA,YAAMoC,KAAK,GAAG,IAAIL,yBAAJ,CAAiBM,cAAc,CAACJ,IAAD,CAA/B,EAAuCnB,MAAvC,EAA+C;AACzDd,QAAAA,QAAQ,EAAE;AACNe,UAAAA,GADM;AAEND,UAAAA,MAFM;AAGND,UAAAA,OAHM;AAINoB,UAAAA;AAJM,SAD+C;AAOzD5B,QAAAA,OAAO,EAAEF;AAPgD,OAA/C,CAAd;AASA,YAAMiC,KAAN;AACH;;AACD,WAAOD,eAAe,CAACnC,QAAD,CAAtB;AACH,GA/DM,EAgEFsB,IAhEE,CAgEIW,IAAD,IAAU;AAChB,WAAO;AACHnB,MAAAA,MADG;AAEHC,MAAAA,GAFG;AAGHF,MAAAA,OAHG;AAIHoB,MAAAA;AAJG,KAAP;AAMH,GAvEM,EAwEFK,KAxEE,CAwEKF,KAAD,IAAW;AAClB,QAAIA,KAAK,YAAYL,yBAArB,EACI,MAAMK,KAAN;AACJ,UAAM,IAAIL,yBAAJ,CAAiBK,KAAK,CAACG,OAAvB,EAAgC,GAAhC,EAAqC;AACvClC,MAAAA,OAAO,EAAEF;AAD8B,KAArC,CAAN;AAGH,GA9EM,CAAP;AA+EH;;AACD,eAAegC,eAAf,CAA+BnC,QAA/B,EAAyC;AACrC,QAAMwC,WAAW,GAAGxC,QAAQ,CAACa,OAAT,CAAiB4B,GAAjB,CAAqB,cAArB,CAApB;;AACA,MAAI,oBAAoBC,IAApB,CAAyBF,WAAzB,CAAJ,EAA2C;AACvC,WAAOxC,QAAQ,CAAC2C,IAAT,EAAP;AACH;;AACD,MAAI,CAACH,WAAD,IAAgB,yBAAyBE,IAAzB,CAA8BF,WAA9B,CAApB,EAAgE;AAC5D,WAAOxC,QAAQ,CAAC4C,IAAT,EAAP;AACH;;AACD,SAAOC,iBAAS,CAAC7C,QAAD,CAAhB;AACH;;AACD,SAASqC,cAAT,CAAwBJ,IAAxB,EAA8B;AAC1B,MAAI,OAAOA,IAAP,KAAgB,QAApB,EACI,OAAOA,IAAP,CAFsB;;AAI1B,MAAI,aAAaA,IAAjB,EAAuB;AACnB,QAAIxB,KAAK,CAACC,OAAN,CAAcuB,IAAI,CAACa,MAAnB,CAAJ,EAAgC;AAC5B,aAAQ,GAAEb,IAAI,CAACM,OAAQ,KAAIN,IAAI,CAACa,MAAL,CAAYC,GAAZ,CAAgBpC,IAAI,CAACC,SAArB,EAAgCoC,IAAhC,CAAqC,IAArC,CAA2C,EAAtE;AACH;;AACD,WAAOf,IAAI,CAACM,OAAZ;AACH,GATyB;;;AAW1B,SAAQ,kBAAiB5B,IAAI,CAACC,SAAL,CAAeqB,IAAf,CAAqB,EAA9C;AACH;;ACrHc,SAASgB,YAAT,CAAsBC,WAAtB,EAAmCC,WAAnC,EAAgD;AAC3D,QAAMC,QAAQ,GAAGF,WAAW,CAACG,QAAZ,CAAqBF,WAArB,CAAjB;;AACA,QAAMG,MAAM,GAAG,UAAUC,KAAV,EAAiBC,UAAjB,EAA6B;AACxC,UAAMC,eAAe,GAAGL,QAAQ,CAACM,KAAT,CAAeH,KAAf,EAAsBC,UAAtB,CAAxB;;AACA,QAAI,CAACC,eAAe,CAACpD,OAAjB,IAA4B,CAACoD,eAAe,CAACpD,OAAhB,CAAwBsD,IAAzD,EAA+D;AAC3D,aAAOzD,YAAY,CAACkD,QAAQ,CAACQ,KAAT,CAAeH,eAAf,CAAD,CAAnB;AACH;;AACD,UAAMpD,OAAO,GAAG,CAACkD,KAAD,EAAQC,UAAR,KAAuB;AACnC,aAAOtD,YAAY,CAACkD,QAAQ,CAACQ,KAAT,CAAeR,QAAQ,CAACM,KAAT,CAAeH,KAAf,EAAsBC,UAAtB,CAAf,CAAD,CAAnB;AACH,KAFD;;AAGAtC,IAAAA,MAAM,CAACC,MAAP,CAAcd,OAAd,EAAuB;AACnB+C,MAAAA,QADmB;AAEnBC,MAAAA,QAAQ,EAAEJ,YAAY,CAACY,IAAb,CAAkB,IAAlB,EAAwBT,QAAxB;AAFS,KAAvB;AAIA,WAAOK,eAAe,CAACpD,OAAhB,CAAwBsD,IAAxB,CAA6BtD,OAA7B,EAAsCoD,eAAtC,CAAP;AACH,GAbD;;AAcA,SAAOvC,MAAM,CAACC,MAAP,CAAcmC,MAAd,EAAsB;AACzBF,IAAAA,QADyB;AAEzBC,IAAAA,QAAQ,EAAEJ,YAAY,CAACY,IAAb,CAAkB,IAAlB,EAAwBT,QAAxB;AAFe,GAAtB,CAAP;AAIH;;MCjBY/C,OAAO,GAAG4C,YAAY,CAACG,iBAAD,EAAW;AAC1CvC,EAAAA,OAAO,EAAE;AACL,kBAAe,sBAAqBf,OAAQ,IAAGgE,+BAAY,EAAG;AADzD;AADiC,CAAX,CAA5B;;;;"} \ No newline at end of file diff --git a/node_modules/@octokit/request/dist-src/fetch-wrapper.js b/node_modules/@octokit/request/dist-src/fetch-wrapper.js new file mode 100644 index 0000000..79653c4 --- /dev/null +++ b/node_modules/@octokit/request/dist-src/fetch-wrapper.js @@ -0,0 +1,119 @@ +import { isPlainObject } from "is-plain-object"; +import nodeFetch from "node-fetch"; +import { RequestError } from "@octokit/request-error"; +import getBuffer from "./get-buffer-response"; +export default function fetchWrapper(requestOptions) { + const log = requestOptions.request && requestOptions.request.log + ? requestOptions.request.log + : console; + if (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.agent` type is incompatible + // see https://github.com/octokit/types.ts/pull/264 + 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; + } + // GitHub API returns 200 for HEAD requests + if (requestOptions.method === "HEAD") { + if (status < 400) { + return; + } + throw new RequestError(response.statusText, status, { + response: { + url, + status, + headers, + data: undefined, + }, + request: requestOptions, + }); + } + if (status === 304) { + throw new 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(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) + throw error; + throw new 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 getBuffer(response); +} +function toErrorMessage(data) { + if (typeof data === "string") + return data; + // istanbul ignore else - just in case + if ("message" in data) { + if (Array.isArray(data.errors)) { + return `${data.message}: ${data.errors.map(JSON.stringify).join(", ")}`; + } + return data.message; + } + // istanbul ignore next - just in case + return `Unknown error: ${JSON.stringify(data)}`; +} diff --git a/node_modules/@octokit/request/dist-src/get-buffer-response.js b/node_modules/@octokit/request/dist-src/get-buffer-response.js new file mode 100644 index 0000000..845a394 --- /dev/null +++ b/node_modules/@octokit/request/dist-src/get-buffer-response.js @@ -0,0 +1,3 @@ +export default function getBufferResponse(response) { + return response.arrayBuffer(); +} diff --git a/node_modules/@octokit/request/dist-src/index.js b/node_modules/@octokit/request/dist-src/index.js new file mode 100644 index 0000000..2460e99 --- /dev/null +++ b/node_modules/@octokit/request/dist-src/index.js @@ -0,0 +1,9 @@ +import { endpoint } from "@octokit/endpoint"; +import { getUserAgent } from "universal-user-agent"; +import { VERSION } from "./version"; +import withDefaults from "./with-defaults"; +export const request = withDefaults(endpoint, { + headers: { + "user-agent": `octokit-request.js/${VERSION} ${getUserAgent()}`, + }, +}); diff --git a/node_modules/@octokit/request/dist-src/version.js b/node_modules/@octokit/request/dist-src/version.js new file mode 100644 index 0000000..a068c68 --- /dev/null +++ b/node_modules/@octokit/request/dist-src/version.js @@ -0,0 +1 @@ +export const VERSION = "5.6.3"; diff --git a/node_modules/@octokit/request/dist-src/with-defaults.js b/node_modules/@octokit/request/dist-src/with-defaults.js new file mode 100644 index 0000000..e206429 --- /dev/null +++ b/node_modules/@octokit/request/dist-src/with-defaults.js @@ -0,0 +1,22 @@ +import fetchWrapper from "./fetch-wrapper"; +export default function withDefaults(oldEndpoint, newDefaults) { + const endpoint = oldEndpoint.defaults(newDefaults); + const newApi = function (route, parameters) { + const endpointOptions = endpoint.merge(route, parameters); + if (!endpointOptions.request || !endpointOptions.request.hook) { + return fetchWrapper(endpoint.parse(endpointOptions)); + } + const request = (route, parameters) => { + return fetchWrapper(endpoint.parse(endpoint.merge(route, parameters))); + }; + Object.assign(request, { + endpoint, + defaults: withDefaults.bind(null, endpoint), + }); + return endpointOptions.request.hook(request, endpointOptions); + }; + return Object.assign(newApi, { + endpoint, + defaults: withDefaults.bind(null, endpoint), + }); +} diff --git a/node_modules/@octokit/request/dist-types/fetch-wrapper.d.ts b/node_modules/@octokit/request/dist-types/fetch-wrapper.d.ts new file mode 100644 index 0000000..4901c79 --- /dev/null +++ b/node_modules/@octokit/request/dist-types/fetch-wrapper.d.ts @@ -0,0 +1,11 @@ +import { EndpointInterface } from "@octokit/types"; +export default function fetchWrapper(requestOptions: ReturnType & { + redirect?: "error" | "follow" | "manual"; +}): Promise<{ + status: number; + url: string; + headers: { + [header: string]: string; + }; + data: any; +}>; diff --git a/node_modules/@octokit/request/dist-types/get-buffer-response.d.ts b/node_modules/@octokit/request/dist-types/get-buffer-response.d.ts new file mode 100644 index 0000000..915b705 --- /dev/null +++ b/node_modules/@octokit/request/dist-types/get-buffer-response.d.ts @@ -0,0 +1,2 @@ +import { Response } from "node-fetch"; +export default function getBufferResponse(response: Response): Promise; diff --git a/node_modules/@octokit/request/dist-types/index.d.ts b/node_modules/@octokit/request/dist-types/index.d.ts new file mode 100644 index 0000000..1030809 --- /dev/null +++ b/node_modules/@octokit/request/dist-types/index.d.ts @@ -0,0 +1 @@ +export declare const request: import("@octokit/types").RequestInterface; diff --git a/node_modules/@octokit/request/dist-types/version.d.ts b/node_modules/@octokit/request/dist-types/version.d.ts new file mode 100644 index 0000000..5629807 --- /dev/null +++ b/node_modules/@octokit/request/dist-types/version.d.ts @@ -0,0 +1 @@ +export declare const VERSION = "5.6.3"; diff --git a/node_modules/@octokit/request/dist-types/with-defaults.d.ts b/node_modules/@octokit/request/dist-types/with-defaults.d.ts new file mode 100644 index 0000000..0080469 --- /dev/null +++ b/node_modules/@octokit/request/dist-types/with-defaults.d.ts @@ -0,0 +1,2 @@ +import { EndpointInterface, RequestInterface, RequestParameters } from "@octokit/types"; +export default function withDefaults(oldEndpoint: EndpointInterface, newDefaults: RequestParameters): RequestInterface; diff --git a/node_modules/@octokit/request/dist-web/index.js b/node_modules/@octokit/request/dist-web/index.js new file mode 100644 index 0000000..44359f8 --- /dev/null +++ b/node_modules/@octokit/request/dist-web/index.js @@ -0,0 +1,158 @@ +import { endpoint } from '@octokit/endpoint'; +import { getUserAgent } from 'universal-user-agent'; +import { isPlainObject } from 'is-plain-object'; +import nodeFetch from 'node-fetch'; +import { RequestError } from '@octokit/request-error'; + +const 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(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.agent` type is incompatible + // see https://github.com/octokit/types.ts/pull/264 + 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; + } + // GitHub API returns 200 for HEAD requests + if (requestOptions.method === "HEAD") { + if (status < 400) { + return; + } + throw new RequestError(response.statusText, status, { + response: { + url, + status, + headers, + data: undefined, + }, + request: requestOptions, + }); + } + if (status === 304) { + throw new 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(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) + throw error; + throw new 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 getBufferResponse(response); +} +function toErrorMessage(data) { + if (typeof data === "string") + return data; + // istanbul ignore else - just in case + if ("message" in data) { + if (Array.isArray(data.errors)) { + return `${data.message}: ${data.errors.map(JSON.stringify).join(", ")}`; + } + return data.message; + } + // istanbul ignore next - just in case + return `Unknown error: ${JSON.stringify(data)}`; +} + +function withDefaults(oldEndpoint, newDefaults) { + const endpoint = oldEndpoint.defaults(newDefaults); + const newApi = function (route, parameters) { + const endpointOptions = endpoint.merge(route, parameters); + if (!endpointOptions.request || !endpointOptions.request.hook) { + return fetchWrapper(endpoint.parse(endpointOptions)); + } + const request = (route, parameters) => { + return fetchWrapper(endpoint.parse(endpoint.merge(route, parameters))); + }; + Object.assign(request, { + endpoint, + defaults: withDefaults.bind(null, endpoint), + }); + return endpointOptions.request.hook(request, endpointOptions); + }; + return Object.assign(newApi, { + endpoint, + defaults: withDefaults.bind(null, endpoint), + }); +} + +const request = withDefaults(endpoint, { + headers: { + "user-agent": `octokit-request.js/${VERSION} ${getUserAgent()}`, + }, +}); + +export { request }; +//# sourceMappingURL=index.js.map diff --git a/node_modules/@octokit/request/dist-web/index.js.map b/node_modules/@octokit/request/dist-web/index.js.map new file mode 100644 index 0000000..b3cda51 --- /dev/null +++ b/node_modules/@octokit/request/dist-web/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sources":["../dist-src/version.js","../dist-src/get-buffer-response.js","../dist-src/fetch-wrapper.js","../dist-src/with-defaults.js","../dist-src/index.js"],"sourcesContent":["export const VERSION = \"5.6.3\";\n","export default function getBufferResponse(response) {\n return response.arrayBuffer();\n}\n","import { isPlainObject } from \"is-plain-object\";\nimport nodeFetch from \"node-fetch\";\nimport { RequestError } from \"@octokit/request-error\";\nimport getBuffer from \"./get-buffer-response\";\nexport default function fetchWrapper(requestOptions) {\n const log = requestOptions.request && requestOptions.request.log\n ? requestOptions.request.log\n : console;\n if (isPlainObject(requestOptions.body) ||\n Array.isArray(requestOptions.body)) {\n requestOptions.body = JSON.stringify(requestOptions.body);\n }\n let headers = {};\n let status;\n let url;\n const fetch = (requestOptions.request && requestOptions.request.fetch) || nodeFetch;\n return fetch(requestOptions.url, Object.assign({\n method: requestOptions.method,\n body: requestOptions.body,\n headers: requestOptions.headers,\n redirect: requestOptions.redirect,\n }, \n // `requestOptions.request.agent` type is incompatible\n // see https://github.com/octokit/types.ts/pull/264\n requestOptions.request))\n .then(async (response) => {\n url = response.url;\n status = response.status;\n for (const keyAndValue of response.headers) {\n headers[keyAndValue[0]] = keyAndValue[1];\n }\n if (\"deprecation\" in headers) {\n const matches = headers.link && headers.link.match(/<([^>]+)>; rel=\"deprecation\"/);\n const deprecationLink = matches && matches.pop();\n log.warn(`[@octokit/request] \"${requestOptions.method} ${requestOptions.url}\" is deprecated. It is scheduled to be removed on ${headers.sunset}${deprecationLink ? `. See ${deprecationLink}` : \"\"}`);\n }\n if (status === 204 || status === 205) {\n return;\n }\n // GitHub API returns 200 for HEAD requests\n if (requestOptions.method === \"HEAD\") {\n if (status < 400) {\n return;\n }\n throw new RequestError(response.statusText, status, {\n response: {\n url,\n status,\n headers,\n data: undefined,\n },\n request: requestOptions,\n });\n }\n if (status === 304) {\n throw new RequestError(\"Not modified\", status, {\n response: {\n url,\n status,\n headers,\n data: await getResponseData(response),\n },\n request: requestOptions,\n });\n }\n if (status >= 400) {\n const data = await getResponseData(response);\n const error = new RequestError(toErrorMessage(data), status, {\n response: {\n url,\n status,\n headers,\n data,\n },\n request: requestOptions,\n });\n throw error;\n }\n return getResponseData(response);\n })\n .then((data) => {\n return {\n status,\n url,\n headers,\n data,\n };\n })\n .catch((error) => {\n if (error instanceof RequestError)\n throw error;\n throw new RequestError(error.message, 500, {\n request: requestOptions,\n });\n });\n}\nasync function getResponseData(response) {\n const contentType = response.headers.get(\"content-type\");\n if (/application\\/json/.test(contentType)) {\n return response.json();\n }\n if (!contentType || /^text\\/|charset=utf-8$/.test(contentType)) {\n return response.text();\n }\n return getBuffer(response);\n}\nfunction toErrorMessage(data) {\n if (typeof data === \"string\")\n return data;\n // istanbul ignore else - just in case\n if (\"message\" in data) {\n if (Array.isArray(data.errors)) {\n return `${data.message}: ${data.errors.map(JSON.stringify).join(\", \")}`;\n }\n return data.message;\n }\n // istanbul ignore next - just in case\n return `Unknown error: ${JSON.stringify(data)}`;\n}\n","import fetchWrapper from \"./fetch-wrapper\";\nexport default function withDefaults(oldEndpoint, newDefaults) {\n const endpoint = oldEndpoint.defaults(newDefaults);\n const newApi = function (route, parameters) {\n const endpointOptions = endpoint.merge(route, parameters);\n if (!endpointOptions.request || !endpointOptions.request.hook) {\n return fetchWrapper(endpoint.parse(endpointOptions));\n }\n const request = (route, parameters) => {\n return fetchWrapper(endpoint.parse(endpoint.merge(route, parameters)));\n };\n Object.assign(request, {\n endpoint,\n defaults: withDefaults.bind(null, endpoint),\n });\n return endpointOptions.request.hook(request, endpointOptions);\n };\n return Object.assign(newApi, {\n endpoint,\n defaults: withDefaults.bind(null, endpoint),\n });\n}\n","import { endpoint } from \"@octokit/endpoint\";\nimport { getUserAgent } from \"universal-user-agent\";\nimport { VERSION } from \"./version\";\nimport withDefaults from \"./with-defaults\";\nexport const request = withDefaults(endpoint, {\n headers: {\n \"user-agent\": `octokit-request.js/${VERSION} ${getUserAgent()}`,\n },\n});\n"],"names":["getBuffer"],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@octokit/request/package.json b/node_modules/@octokit/request/package.json new file mode 100644 index 0000000..e38c955 --- /dev/null +++ b/node_modules/@octokit/request/package.json @@ -0,0 +1,56 @@ +{ + "name": "@octokit/request", + "description": "Send parameterized requests to GitHub's APIs with sensible defaults in browsers and Node", + "version": "5.6.3", + "license": "MIT", + "files": [ + "dist-*/", + "bin/" + ], + "pika": true, + "sideEffects": false, + "keywords": [ + "octokit", + "github", + "api", + "request" + ], + "repository": "github:octokit/request.js", + "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" + }, + "devDependencies": { + "@octokit/auth-app": "^3.0.0", + "@pika/pack": "^0.5.0", + "@pika/plugin-build-node": "^0.9.0", + "@pika/plugin-build-web": "^0.9.0", + "@pika/plugin-ts-standard-pkg": "^0.9.0", + "@types/fetch-mock": "^7.2.4", + "@types/jest": "^27.0.0", + "@types/lolex": "^5.1.0", + "@types/node": "^14.0.0", + "@types/node-fetch": "^2.3.3", + "@types/once": "^1.4.0", + "fetch-mock": "^9.3.1", + "jest": "^27.0.0", + "lolex": "^6.0.0", + "prettier": "2.4.1", + "semantic-release": "^18.0.0", + "semantic-release-plugin-update-version-in-files": "^1.0.0", + "string-to-arraybuffer": "^1.0.2", + "ts-jest": "^27.0.0", + "typescript": "^4.0.2" + }, + "publishConfig": { + "access": "public" + }, + "source": "dist-src/index.js", + "types": "dist-types/index.d.ts", + "main": "dist-node/index.js", + "module": "dist-web/index.js" +} diff --git a/node_modules/@octokit/types/LICENSE b/node_modules/@octokit/types/LICENSE new file mode 100644 index 0000000..57bee5f --- /dev/null +++ b/node_modules/@octokit/types/LICENSE @@ -0,0 +1,7 @@ +MIT License Copyright (c) 2019 Octokit contributors + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice (including the next paragraph) shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/@octokit/types/README.md b/node_modules/@octokit/types/README.md new file mode 100644 index 0000000..c48ce42 --- /dev/null +++ b/node_modules/@octokit/types/README.md @@ -0,0 +1,65 @@ +# types.ts + +> Shared TypeScript definitions for Octokit projects + +[![@latest](https://img.shields.io/npm/v/@octokit/types.svg)](https://www.npmjs.com/package/@octokit/types) +[![Build Status](https://github.com/octokit/types.ts/workflows/Test/badge.svg)](https://github.com/octokit/types.ts/actions?workflow=Test) + + + +- [Usage](#usage) +- [Examples](#examples) + - [Get parameter and response data types for a REST API endpoint](#get-parameter-and-response-data-types-for-a-rest-api-endpoint) + - [Get response types from endpoint methods](#get-response-types-from-endpoint-methods) +- [Contributing](#contributing) +- [License](#license) + + + +## Usage + +See all exported types at https://octokit.github.io/types.ts + +## Examples + +### Get parameter and response data types for a REST API endpoint + +```ts +import { Endpoints } from "@octokit/types"; + +type listUserReposParameters = + Endpoints["GET /repos/{owner}/{repo}"]["parameters"]; +type listUserReposResponse = Endpoints["GET /repos/{owner}/{repo}"]["response"]; + +async function listRepos( + options: listUserReposParameters +): listUserReposResponse["data"] { + // ... +} +``` + +### Get response types from endpoint methods + +```ts +import { + GetResponseTypeFromEndpointMethod, + GetResponseDataTypeFromEndpointMethod, +} from "@octokit/types"; +import { Octokit } from "@octokit/rest"; + +const octokit = new Octokit(); +type CreateLabelResponseType = GetResponseTypeFromEndpointMethod< + typeof octokit.issues.createLabel +>; +type CreateLabelResponseDataType = GetResponseDataTypeFromEndpointMethod< + typeof octokit.issues.createLabel +>; +``` + +## Contributing + +See [CONTRIBUTING.md](CONTRIBUTING.md) + +## License + +[MIT](LICENSE) diff --git a/node_modules/@octokit/types/dist-node/index.js b/node_modules/@octokit/types/dist-node/index.js new file mode 100644 index 0000000..b3c252b --- /dev/null +++ b/node_modules/@octokit/types/dist-node/index.js @@ -0,0 +1,8 @@ +'use strict'; + +Object.defineProperty(exports, '__esModule', { value: true }); + +const VERSION = "6.41.0"; + +exports.VERSION = VERSION; +//# sourceMappingURL=index.js.map diff --git a/node_modules/@octokit/types/dist-node/index.js.map b/node_modules/@octokit/types/dist-node/index.js.map new file mode 100644 index 0000000..2d148d3 --- /dev/null +++ b/node_modules/@octokit/types/dist-node/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sources":["../dist-src/VERSION.js"],"sourcesContent":["export const VERSION = \"0.0.0-development\";\n"],"names":["VERSION"],"mappings":";;;;MAAaA,OAAO,GAAG;;;;"} \ No newline at end of file diff --git a/node_modules/@octokit/types/dist-src/AuthInterface.js b/node_modules/@octokit/types/dist-src/AuthInterface.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/node_modules/@octokit/types/dist-src/AuthInterface.js @@ -0,0 +1 @@ +export {}; diff --git a/node_modules/@octokit/types/dist-src/EndpointDefaults.js b/node_modules/@octokit/types/dist-src/EndpointDefaults.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/node_modules/@octokit/types/dist-src/EndpointDefaults.js @@ -0,0 +1 @@ +export {}; diff --git a/node_modules/@octokit/types/dist-src/EndpointInterface.js b/node_modules/@octokit/types/dist-src/EndpointInterface.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/node_modules/@octokit/types/dist-src/EndpointInterface.js @@ -0,0 +1 @@ +export {}; diff --git a/node_modules/@octokit/types/dist-src/EndpointOptions.js b/node_modules/@octokit/types/dist-src/EndpointOptions.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/node_modules/@octokit/types/dist-src/EndpointOptions.js @@ -0,0 +1 @@ +export {}; diff --git a/node_modules/@octokit/types/dist-src/Fetch.js b/node_modules/@octokit/types/dist-src/Fetch.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/node_modules/@octokit/types/dist-src/Fetch.js @@ -0,0 +1 @@ +export {}; diff --git a/node_modules/@octokit/types/dist-src/GetResponseTypeFromEndpointMethod.js b/node_modules/@octokit/types/dist-src/GetResponseTypeFromEndpointMethod.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/node_modules/@octokit/types/dist-src/GetResponseTypeFromEndpointMethod.js @@ -0,0 +1 @@ +export {}; diff --git a/node_modules/@octokit/types/dist-src/OctokitResponse.js b/node_modules/@octokit/types/dist-src/OctokitResponse.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/node_modules/@octokit/types/dist-src/OctokitResponse.js @@ -0,0 +1 @@ +export {}; diff --git a/node_modules/@octokit/types/dist-src/RequestError.js b/node_modules/@octokit/types/dist-src/RequestError.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/node_modules/@octokit/types/dist-src/RequestError.js @@ -0,0 +1 @@ +export {}; diff --git a/node_modules/@octokit/types/dist-src/RequestHeaders.js b/node_modules/@octokit/types/dist-src/RequestHeaders.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/node_modules/@octokit/types/dist-src/RequestHeaders.js @@ -0,0 +1 @@ +export {}; diff --git a/node_modules/@octokit/types/dist-src/RequestInterface.js b/node_modules/@octokit/types/dist-src/RequestInterface.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/node_modules/@octokit/types/dist-src/RequestInterface.js @@ -0,0 +1 @@ +export {}; diff --git a/node_modules/@octokit/types/dist-src/RequestMethod.js b/node_modules/@octokit/types/dist-src/RequestMethod.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/node_modules/@octokit/types/dist-src/RequestMethod.js @@ -0,0 +1 @@ +export {}; diff --git a/node_modules/@octokit/types/dist-src/RequestOptions.js b/node_modules/@octokit/types/dist-src/RequestOptions.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/node_modules/@octokit/types/dist-src/RequestOptions.js @@ -0,0 +1 @@ +export {}; diff --git a/node_modules/@octokit/types/dist-src/RequestParameters.js b/node_modules/@octokit/types/dist-src/RequestParameters.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/node_modules/@octokit/types/dist-src/RequestParameters.js @@ -0,0 +1 @@ +export {}; diff --git a/node_modules/@octokit/types/dist-src/RequestRequestOptions.js b/node_modules/@octokit/types/dist-src/RequestRequestOptions.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/node_modules/@octokit/types/dist-src/RequestRequestOptions.js @@ -0,0 +1 @@ +export {}; diff --git a/node_modules/@octokit/types/dist-src/ResponseHeaders.js b/node_modules/@octokit/types/dist-src/ResponseHeaders.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/node_modules/@octokit/types/dist-src/ResponseHeaders.js @@ -0,0 +1 @@ +export {}; diff --git a/node_modules/@octokit/types/dist-src/Route.js b/node_modules/@octokit/types/dist-src/Route.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/node_modules/@octokit/types/dist-src/Route.js @@ -0,0 +1 @@ +export {}; diff --git a/node_modules/@octokit/types/dist-src/Signal.js b/node_modules/@octokit/types/dist-src/Signal.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/node_modules/@octokit/types/dist-src/Signal.js @@ -0,0 +1 @@ +export {}; diff --git a/node_modules/@octokit/types/dist-src/StrategyInterface.js b/node_modules/@octokit/types/dist-src/StrategyInterface.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/node_modules/@octokit/types/dist-src/StrategyInterface.js @@ -0,0 +1 @@ +export {}; diff --git a/node_modules/@octokit/types/dist-src/Url.js b/node_modules/@octokit/types/dist-src/Url.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/node_modules/@octokit/types/dist-src/Url.js @@ -0,0 +1 @@ +export {}; diff --git a/node_modules/@octokit/types/dist-src/VERSION.js b/node_modules/@octokit/types/dist-src/VERSION.js new file mode 100644 index 0000000..45a11b8 --- /dev/null +++ b/node_modules/@octokit/types/dist-src/VERSION.js @@ -0,0 +1 @@ +export const VERSION = "6.41.0"; diff --git a/node_modules/@octokit/types/dist-src/generated/Endpoints.js b/node_modules/@octokit/types/dist-src/generated/Endpoints.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/node_modules/@octokit/types/dist-src/generated/Endpoints.js @@ -0,0 +1 @@ +export {}; diff --git a/node_modules/@octokit/types/dist-src/index.js b/node_modules/@octokit/types/dist-src/index.js new file mode 100644 index 0000000..004ae9b --- /dev/null +++ b/node_modules/@octokit/types/dist-src/index.js @@ -0,0 +1,21 @@ +export * from "./AuthInterface"; +export * from "./EndpointDefaults"; +export * from "./EndpointInterface"; +export * from "./EndpointOptions"; +export * from "./Fetch"; +export * from "./OctokitResponse"; +export * from "./RequestError"; +export * from "./RequestHeaders"; +export * from "./RequestInterface"; +export * from "./RequestMethod"; +export * from "./RequestOptions"; +export * from "./RequestParameters"; +export * from "./RequestRequestOptions"; +export * from "./ResponseHeaders"; +export * from "./Route"; +export * from "./Signal"; +export * from "./StrategyInterface"; +export * from "./Url"; +export * from "./VERSION"; +export * from "./GetResponseTypeFromEndpointMethod"; +export * from "./generated/Endpoints"; diff --git a/node_modules/@octokit/types/dist-types/AuthInterface.d.ts b/node_modules/@octokit/types/dist-types/AuthInterface.d.ts new file mode 100644 index 0000000..8b39d61 --- /dev/null +++ b/node_modules/@octokit/types/dist-types/AuthInterface.d.ts @@ -0,0 +1,31 @@ +import { EndpointOptions } from "./EndpointOptions"; +import { OctokitResponse } from "./OctokitResponse"; +import { RequestInterface } from "./RequestInterface"; +import { RequestParameters } from "./RequestParameters"; +import { Route } from "./Route"; +/** + * Interface to implement complex authentication strategies for Octokit. + * An object Implementing the AuthInterface can directly be passed as the + * `auth` option in the Octokit constructor. + * + * For the official implementations of the most common authentication + * strategies, see https://github.com/octokit/auth.js + */ +export interface AuthInterface { + (...args: AuthOptions): Promise; + hook: { + /** + * Sends a request using the passed `request` instance + * + * @param {object} endpoint Must set `method` and `url`. Plus URL, query or body parameters, as well as `headers`, `mediaType.{format|previews}`, `request`, or `baseUrl`. + */ + (request: RequestInterface, options: EndpointOptions): Promise>; + /** + * Sends a request using the passed `request` instance + * + * @param {string} route Request method + URL. Example: `'GET /orgs/{org}'` + * @param {object} [parameters] URL, query or body parameters, as well as `headers`, `mediaType.{format|previews}`, `request`, or `baseUrl`. + */ + (request: RequestInterface, route: Route, parameters?: RequestParameters): Promise>; + }; +} diff --git a/node_modules/@octokit/types/dist-types/EndpointDefaults.d.ts b/node_modules/@octokit/types/dist-types/EndpointDefaults.d.ts new file mode 100644 index 0000000..a2c2307 --- /dev/null +++ b/node_modules/@octokit/types/dist-types/EndpointDefaults.d.ts @@ -0,0 +1,21 @@ +import { RequestHeaders } from "./RequestHeaders"; +import { RequestMethod } from "./RequestMethod"; +import { RequestParameters } from "./RequestParameters"; +import { Url } from "./Url"; +/** + * The `.endpoint()` method is guaranteed to set all keys defined by RequestParameters + * as well as the method property. + */ +export declare type EndpointDefaults = RequestParameters & { + baseUrl: Url; + method: RequestMethod; + url?: Url; + headers: RequestHeaders & { + accept: string; + "user-agent": string; + }; + mediaType: { + format: string; + previews: string[]; + }; +}; diff --git a/node_modules/@octokit/types/dist-types/EndpointInterface.d.ts b/node_modules/@octokit/types/dist-types/EndpointInterface.d.ts new file mode 100644 index 0000000..d7b4009 --- /dev/null +++ b/node_modules/@octokit/types/dist-types/EndpointInterface.d.ts @@ -0,0 +1,65 @@ +import { EndpointDefaults } from "./EndpointDefaults"; +import { RequestOptions } from "./RequestOptions"; +import { RequestParameters } from "./RequestParameters"; +import { Route } from "./Route"; +import { Endpoints } from "./generated/Endpoints"; +export interface EndpointInterface { + /** + * Transforms a GitHub REST API endpoint into generic request options + * + * @param {object} endpoint Must set `url` unless it's set defaults. Plus URL, query or body parameters, as well as `headers`, `mediaType.{format|previews}`, `request`, or `baseUrl`. + */ + (options: O & { + method?: string; + } & ("url" extends keyof D ? { + url?: string; + } : { + url: string; + })): RequestOptions & Pick; + /** + * Transforms a GitHub REST API endpoint into generic request options + * + * @param {string} route Request method + URL. Example: `'GET /orgs/{org}'` + * @param {object} [parameters] URL, query or body parameters, as well as `headers`, `mediaType.{format|previews}`, `request`, or `baseUrl`. + */ + (route: keyof Endpoints | R, parameters?: P): (R extends keyof Endpoints ? Endpoints[R]["request"] : RequestOptions) & Pick; + /** + * Object with current default route and parameters + */ + DEFAULTS: D & EndpointDefaults; + /** + * Returns a new `endpoint` interface with new defaults + */ + defaults: (newDefaults: O) => EndpointInterface; + merge: { + /** + * Merges current endpoint defaults with passed route and parameters, + * without transforming them into request options. + * + * @param {string} route Request method + URL. Example: `'GET /orgs/{org}'` + * @param {object} [parameters] URL, query or body parameters, as well as `headers`, `mediaType.{format|previews}`, `request`, or `baseUrl`. + * + */ + (route: keyof Endpoints | R, parameters?: P): D & (R extends keyof Endpoints ? Endpoints[R]["request"] & Endpoints[R]["parameters"] : EndpointDefaults) & P; + /** + * Merges current endpoint defaults with passed route and parameters, + * without transforming them into request options. + * + * @param {object} endpoint Must set `method` and `url`. Plus URL, query or body parameters, as well as `headers`, `mediaType.{format|previews}`, `request`, or `baseUrl`. + */ +

        (options: P): EndpointDefaults & D & P; + /** + * Returns current default options. + * + * @deprecated use endpoint.DEFAULTS instead + */ + (): D & EndpointDefaults; + }; + /** + * Stateless method to turn endpoint options into request options. + * Calling `endpoint(options)` is the same as calling `endpoint.parse(endpoint.merge(options))`. + * + * @param {object} options `method`, `url`. Plus URL, query or body parameters, as well as `headers`, `mediaType.{format|previews}`, `request`, or `baseUrl`. + */ + parse: (options: O) => RequestOptions & Pick; +} diff --git a/node_modules/@octokit/types/dist-types/EndpointOptions.d.ts b/node_modules/@octokit/types/dist-types/EndpointOptions.d.ts new file mode 100644 index 0000000..b1b91f1 --- /dev/null +++ b/node_modules/@octokit/types/dist-types/EndpointOptions.d.ts @@ -0,0 +1,7 @@ +import { RequestMethod } from "./RequestMethod"; +import { Url } from "./Url"; +import { RequestParameters } from "./RequestParameters"; +export declare type EndpointOptions = RequestParameters & { + method: RequestMethod; + url: Url; +}; diff --git a/node_modules/@octokit/types/dist-types/Fetch.d.ts b/node_modules/@octokit/types/dist-types/Fetch.d.ts new file mode 100644 index 0000000..cbbd5e8 --- /dev/null +++ b/node_modules/@octokit/types/dist-types/Fetch.d.ts @@ -0,0 +1,4 @@ +/** + * Browser's fetch method (or compatible such as fetch-mock) + */ +export declare type Fetch = any; diff --git a/node_modules/@octokit/types/dist-types/GetResponseTypeFromEndpointMethod.d.ts b/node_modules/@octokit/types/dist-types/GetResponseTypeFromEndpointMethod.d.ts new file mode 100644 index 0000000..70e1a8d --- /dev/null +++ b/node_modules/@octokit/types/dist-types/GetResponseTypeFromEndpointMethod.d.ts @@ -0,0 +1,5 @@ +declare type Unwrap = T extends Promise ? U : T; +declare type AnyFunction = (...args: any[]) => any; +export declare type GetResponseTypeFromEndpointMethod = Unwrap>; +export declare type GetResponseDataTypeFromEndpointMethod = Unwrap>["data"]; +export {}; diff --git a/node_modules/@octokit/types/dist-types/OctokitResponse.d.ts b/node_modules/@octokit/types/dist-types/OctokitResponse.d.ts new file mode 100644 index 0000000..28fdfb8 --- /dev/null +++ b/node_modules/@octokit/types/dist-types/OctokitResponse.d.ts @@ -0,0 +1,17 @@ +import { ResponseHeaders } from "./ResponseHeaders"; +import { Url } from "./Url"; +export declare type OctokitResponse = { + headers: ResponseHeaders; + /** + * http response code + */ + status: S; + /** + * URL of response after all redirects + */ + url: Url; + /** + * Response data as documented in the REST API reference documentation at https://docs.github.com/rest/reference + */ + data: T; +}; diff --git a/node_modules/@octokit/types/dist-types/RequestError.d.ts b/node_modules/@octokit/types/dist-types/RequestError.d.ts new file mode 100644 index 0000000..89174e6 --- /dev/null +++ b/node_modules/@octokit/types/dist-types/RequestError.d.ts @@ -0,0 +1,11 @@ +export declare type RequestError = { + name: string; + status: number; + documentation_url: string; + errors?: Array<{ + resource: string; + code: string; + field: string; + message?: string; + }>; +}; diff --git a/node_modules/@octokit/types/dist-types/RequestHeaders.d.ts b/node_modules/@octokit/types/dist-types/RequestHeaders.d.ts new file mode 100644 index 0000000..ac5aae0 --- /dev/null +++ b/node_modules/@octokit/types/dist-types/RequestHeaders.d.ts @@ -0,0 +1,15 @@ +export declare type RequestHeaders = { + /** + * Avoid setting `headers.accept`, use `mediaType.{format|previews}` option instead. + */ + accept?: string; + /** + * Use `authorization` to send authenticated request, remember `token ` / `bearer ` prefixes. Example: `token 1234567890abcdef1234567890abcdef12345678` + */ + authorization?: string; + /** + * `user-agent` is set do a default and can be overwritten as needed. + */ + "user-agent"?: string; + [header: string]: string | number | undefined; +}; diff --git a/node_modules/@octokit/types/dist-types/RequestInterface.d.ts b/node_modules/@octokit/types/dist-types/RequestInterface.d.ts new file mode 100644 index 0000000..851811f --- /dev/null +++ b/node_modules/@octokit/types/dist-types/RequestInterface.d.ts @@ -0,0 +1,34 @@ +import { EndpointInterface } from "./EndpointInterface"; +import { OctokitResponse } from "./OctokitResponse"; +import { RequestParameters } from "./RequestParameters"; +import { Route } from "./Route"; +import { Endpoints } from "./generated/Endpoints"; +export interface RequestInterface { + /** + * Sends a request based on endpoint options + * + * @param {object} endpoint Must set `method` and `url`. Plus URL, query or body parameters, as well as `headers`, `mediaType.{format|previews}`, `request`, or `baseUrl`. + */ + (options: O & { + method?: string; + } & ("url" extends keyof D ? { + url?: string; + } : { + url: string; + })): Promise>; + /** + * Sends a request based on endpoint options + * + * @param {string} route Request method + URL. Example: `'GET /orgs/{org}'` + * @param {object} [parameters] URL, query or body parameters, as well as `headers`, `mediaType.{format|previews}`, `request`, or `baseUrl`. + */ + (route: keyof Endpoints | R, options?: R extends keyof Endpoints ? Endpoints[R]["parameters"] & RequestParameters : RequestParameters): R extends keyof Endpoints ? Promise : Promise>; + /** + * Returns a new `request` with updated route and parameters + */ + defaults: (newDefaults: O) => RequestInterface; + /** + * Octokit endpoint API, see {@link https://github.com/octokit/endpoint.js|@octokit/endpoint} + */ + endpoint: EndpointInterface; +} diff --git a/node_modules/@octokit/types/dist-types/RequestMethod.d.ts b/node_modules/@octokit/types/dist-types/RequestMethod.d.ts new file mode 100644 index 0000000..e999c8d --- /dev/null +++ b/node_modules/@octokit/types/dist-types/RequestMethod.d.ts @@ -0,0 +1,4 @@ +/** + * HTTP Verb supported by GitHub's REST API + */ +export declare type RequestMethod = "DELETE" | "GET" | "HEAD" | "PATCH" | "POST" | "PUT"; diff --git a/node_modules/@octokit/types/dist-types/RequestOptions.d.ts b/node_modules/@octokit/types/dist-types/RequestOptions.d.ts new file mode 100644 index 0000000..97e2181 --- /dev/null +++ b/node_modules/@octokit/types/dist-types/RequestOptions.d.ts @@ -0,0 +1,14 @@ +import { RequestHeaders } from "./RequestHeaders"; +import { RequestMethod } from "./RequestMethod"; +import { RequestRequestOptions } from "./RequestRequestOptions"; +import { Url } from "./Url"; +/** + * Generic request options as they are returned by the `endpoint()` method + */ +export declare type RequestOptions = { + method: RequestMethod; + url: Url; + headers: RequestHeaders; + body?: any; + request?: RequestRequestOptions; +}; diff --git a/node_modules/@octokit/types/dist-types/RequestParameters.d.ts b/node_modules/@octokit/types/dist-types/RequestParameters.d.ts new file mode 100644 index 0000000..b056a0e --- /dev/null +++ b/node_modules/@octokit/types/dist-types/RequestParameters.d.ts @@ -0,0 +1,45 @@ +import { RequestRequestOptions } from "./RequestRequestOptions"; +import { RequestHeaders } from "./RequestHeaders"; +import { Url } from "./Url"; +/** + * Parameters that can be passed into `request(route, parameters)` or `endpoint(route, parameters)` methods + */ +export declare type RequestParameters = { + /** + * Base URL to be used when a relative URL is passed, such as `/orgs/{org}`. + * If `baseUrl` is `https://enterprise.acme-inc.com/api/v3`, then the request + * will be sent to `https://enterprise.acme-inc.com/api/v3/orgs/{org}`. + */ + baseUrl?: Url; + /** + * HTTP headers. Use lowercase keys. + */ + headers?: RequestHeaders; + /** + * Media type options, see {@link https://developer.github.com/v3/media/|GitHub Developer Guide} + */ + mediaType?: { + /** + * `json` by default. Can be `raw`, `text`, `html`, `full`, `diff`, `patch`, `sha`, `base64`. Depending on endpoint + */ + format?: string; + /** + * Custom media type names of {@link https://developer.github.com/v3/media/|API Previews} without the `-preview` suffix. + * Example for single preview: `['squirrel-girl']`. + * Example for multiple previews: `['squirrel-girl', 'mister-fantastic']`. + */ + previews?: string[]; + }; + /** + * Pass custom meta information for the request. The `request` object will be returned as is. + */ + request?: RequestRequestOptions; + /** + * Any additional parameter will be passed as follows + * 1. URL parameter if `':parameter'` or `{parameter}` is part of `url` + * 2. Query parameter if `method` is `'GET'` or `'HEAD'` + * 3. Request body if `parameter` is `'data'` + * 4. JSON in the request body in the form of `body[parameter]` unless `parameter` key is `'data'` + */ + [parameter: string]: unknown; +}; diff --git a/node_modules/@octokit/types/dist-types/RequestRequestOptions.d.ts b/node_modules/@octokit/types/dist-types/RequestRequestOptions.d.ts new file mode 100644 index 0000000..8f5c43a --- /dev/null +++ b/node_modules/@octokit/types/dist-types/RequestRequestOptions.d.ts @@ -0,0 +1,26 @@ +import { Fetch } from "./Fetch"; +import { Signal } from "./Signal"; +/** + * Octokit-specific request options which are ignored for the actual request, but can be used by Octokit or plugins to manipulate how the request is sent or how a response is handled + */ +export declare type RequestRequestOptions = { + /** + * Node only. Useful for custom proxy, certificate, or dns lookup. + * + * @see https://nodejs.org/api/http.html#http_class_http_agent + */ + agent?: unknown; + /** + * Custom replacement for built-in fetch method. Useful for testing or request hooks. + */ + fetch?: Fetch; + /** + * Use an `AbortController` instance to cancel a request. In node you can only cancel streamed requests. + */ + signal?: Signal; + /** + * Node only. Request/response timeout in ms, it resets on redirect. 0 to disable (OS limit applies). `options.request.signal` is recommended instead. + */ + timeout?: number; + [option: string]: any; +}; diff --git a/node_modules/@octokit/types/dist-types/ResponseHeaders.d.ts b/node_modules/@octokit/types/dist-types/ResponseHeaders.d.ts new file mode 100644 index 0000000..c8fbe43 --- /dev/null +++ b/node_modules/@octokit/types/dist-types/ResponseHeaders.d.ts @@ -0,0 +1,20 @@ +export declare type ResponseHeaders = { + "cache-control"?: string; + "content-length"?: number; + "content-type"?: string; + date?: string; + etag?: string; + "last-modified"?: string; + link?: string; + location?: string; + server?: string; + status?: string; + vary?: string; + "x-github-mediatype"?: string; + "x-github-request-id"?: string; + "x-oauth-scopes"?: string; + "x-ratelimit-limit"?: string; + "x-ratelimit-remaining"?: string; + "x-ratelimit-reset"?: string; + [header: string]: string | number | undefined; +}; diff --git a/node_modules/@octokit/types/dist-types/Route.d.ts b/node_modules/@octokit/types/dist-types/Route.d.ts new file mode 100644 index 0000000..dcaac75 --- /dev/null +++ b/node_modules/@octokit/types/dist-types/Route.d.ts @@ -0,0 +1,4 @@ +/** + * String consisting of an optional HTTP method and relative path or absolute URL. Examples: `'/orgs/{org}'`, `'PUT /orgs/{org}'`, `GET https://example.com/foo/bar` + */ +export declare type Route = string; diff --git a/node_modules/@octokit/types/dist-types/Signal.d.ts b/node_modules/@octokit/types/dist-types/Signal.d.ts new file mode 100644 index 0000000..4ebcf24 --- /dev/null +++ b/node_modules/@octokit/types/dist-types/Signal.d.ts @@ -0,0 +1,6 @@ +/** + * Abort signal + * + * @see https://developer.mozilla.org/en-US/docs/Web/API/AbortSignal + */ +export declare type Signal = any; diff --git a/node_modules/@octokit/types/dist-types/StrategyInterface.d.ts b/node_modules/@octokit/types/dist-types/StrategyInterface.d.ts new file mode 100644 index 0000000..405cbd2 --- /dev/null +++ b/node_modules/@octokit/types/dist-types/StrategyInterface.d.ts @@ -0,0 +1,4 @@ +import { AuthInterface } from "./AuthInterface"; +export interface StrategyInterface { + (...args: StrategyOptions): AuthInterface; +} diff --git a/node_modules/@octokit/types/dist-types/Url.d.ts b/node_modules/@octokit/types/dist-types/Url.d.ts new file mode 100644 index 0000000..3e69916 --- /dev/null +++ b/node_modules/@octokit/types/dist-types/Url.d.ts @@ -0,0 +1,4 @@ +/** + * Relative or absolute URL. Examples: `'/orgs/{org}'`, `https://example.com/foo/bar` + */ +export declare type Url = string; diff --git a/node_modules/@octokit/types/dist-types/VERSION.d.ts b/node_modules/@octokit/types/dist-types/VERSION.d.ts new file mode 100644 index 0000000..dc24575 --- /dev/null +++ b/node_modules/@octokit/types/dist-types/VERSION.d.ts @@ -0,0 +1 @@ +export declare const VERSION = "6.41.0"; diff --git a/node_modules/@octokit/types/dist-types/generated/Endpoints.d.ts b/node_modules/@octokit/types/dist-types/generated/Endpoints.d.ts new file mode 100644 index 0000000..3fe7cf8 --- /dev/null +++ b/node_modules/@octokit/types/dist-types/generated/Endpoints.d.ts @@ -0,0 +1,3571 @@ +import { paths } from "@octokit/openapi-types"; +import { OctokitResponse } from "../OctokitResponse"; +import { RequestHeaders } from "../RequestHeaders"; +import { RequestRequestOptions } from "../RequestRequestOptions"; +declare type UnionToIntersection = (U extends any ? (k: U) => void : never) extends (k: infer I) => void ? I : never; +declare type ExtractParameters = "parameters" extends keyof T ? UnionToIntersection<{ + [K in keyof T["parameters"]]: T["parameters"][K]; +}[keyof T["parameters"]]> : {}; +declare type ExtractRequestBody = "requestBody" extends keyof T ? "content" extends keyof T["requestBody"] ? "application/json" extends keyof T["requestBody"]["content"] ? T["requestBody"]["content"]["application/json"] : { + data: { + [K in keyof T["requestBody"]["content"]]: T["requestBody"]["content"][K]; + }[keyof T["requestBody"]["content"]]; +} : "application/json" extends keyof T["requestBody"] ? T["requestBody"]["application/json"] : { + data: { + [K in keyof T["requestBody"]]: T["requestBody"][K]; + }[keyof T["requestBody"]]; +} : {}; +declare type ToOctokitParameters = ExtractParameters & ExtractRequestBody; +declare type RequiredPreview = T extends string ? { + mediaType: { + previews: [T, ...string[]]; + }; +} : {}; +declare type Operation = { + parameters: ToOctokitParameters & RequiredPreview; + request: { + method: Method extends keyof MethodsMap ? MethodsMap[Method] : never; + url: Url; + headers: RequestHeaders; + request: RequestRequestOptions; + }; + response: ExtractOctokitResponse; +}; +declare type MethodsMap = { + delete: "DELETE"; + get: "GET"; + patch: "PATCH"; + post: "POST"; + put: "PUT"; +}; +declare type SuccessStatuses = 200 | 201 | 202 | 204; +declare type RedirectStatuses = 301 | 302; +declare type EmptyResponseStatuses = 201 | 204; +declare type KnownJsonResponseTypes = "application/json" | "application/scim+json" | "text/html"; +declare type SuccessResponseDataType = { + [K in SuccessStatuses & keyof Responses]: GetContentKeyIfPresent extends never ? never : OctokitResponse, K>; +}[SuccessStatuses & keyof Responses]; +declare type RedirectResponseDataType = { + [K in RedirectStatuses & keyof Responses]: OctokitResponse; +}[RedirectStatuses & keyof Responses]; +declare type EmptyResponseDataType = { + [K in EmptyResponseStatuses & keyof Responses]: OctokitResponse; +}[EmptyResponseStatuses & keyof Responses]; +declare type GetContentKeyIfPresent = "content" extends keyof T ? DataType : DataType; +declare type DataType = { + [K in KnownJsonResponseTypes & keyof T]: T[K]; +}[KnownJsonResponseTypes & keyof T]; +declare type ExtractOctokitResponse = "responses" extends keyof R ? SuccessResponseDataType extends never ? RedirectResponseDataType extends never ? EmptyResponseDataType : RedirectResponseDataType : SuccessResponseDataType : unknown; +export interface Endpoints { + /** + * @see https://docs.github.com/rest/reference/apps#delete-an-installation-for-the-authenticated-app + */ + "DELETE /app/installations/{installation_id}": Operation<"/app/installations/{installation_id}", "delete">; + /** + * @see https://docs.github.com/rest/reference/apps#unsuspend-an-app-installation + */ + "DELETE /app/installations/{installation_id}/suspended": Operation<"/app/installations/{installation_id}/suspended", "delete">; + /** + * @see https://docs.github.com/rest/reference/oauth-authorizations#delete-a-grant + */ + "DELETE /applications/grants/{grant_id}": Operation<"/applications/grants/{grant_id}", "delete">; + /** + * @see https://docs.github.com/rest/reference/apps#delete-an-app-authorization + */ + "DELETE /applications/{client_id}/grant": Operation<"/applications/{client_id}/grant", "delete">; + /** + * @see https://docs.github.com/rest/reference/apps#delete-an-app-token + */ + "DELETE /applications/{client_id}/token": Operation<"/applications/{client_id}/token", "delete">; + /** + * @see https://docs.github.com/rest/reference/oauth-authorizations#delete-an-authorization + */ + "DELETE /authorizations/{authorization_id}": Operation<"/authorizations/{authorization_id}", "delete">; + /** + * @see https://docs.github.com/rest/reference/actions#disable-a-selected-organization-for-github-actions-in-an-enterprise + */ + "DELETE /enterprises/{enterprise}/actions/permissions/organizations/{org_id}": Operation<"/enterprises/{enterprise}/actions/permissions/organizations/{org_id}", "delete">; + /** + * @see https://docs.github.com/rest/reference/actions#delete-a-self-hosted-runner-group-from-an-enterprise + */ + "DELETE /enterprises/{enterprise}/actions/runner-groups/{runner_group_id}": Operation<"/enterprises/{enterprise}/actions/runner-groups/{runner_group_id}", "delete">; + /** + * @see https://docs.github.com/rest/reference/actions#remove-organization-access-to-a-self-hosted-runner-group-in-an-enterprise + */ + "DELETE /enterprises/{enterprise}/actions/runner-groups/{runner_group_id}/organizations/{org_id}": Operation<"/enterprises/{enterprise}/actions/runner-groups/{runner_group_id}/organizations/{org_id}", "delete">; + /** + * @see https://docs.github.com/rest/reference/actions#remove-a-self-hosted-runner-from-a-group-for-an-enterprise + */ + "DELETE /enterprises/{enterprise}/actions/runner-groups/{runner_group_id}/runners/{runner_id}": Operation<"/enterprises/{enterprise}/actions/runner-groups/{runner_group_id}/runners/{runner_id}", "delete">; + /** + * @see https://docs.github.com/rest/reference/actions#delete-self-hosted-runner-from-an-enterprise + */ + "DELETE /enterprises/{enterprise}/actions/runners/{runner_id}": Operation<"/enterprises/{enterprise}/actions/runners/{runner_id}", "delete">; + /** + * @see https://docs.github.com/rest/reference/actions#remove-all-custom-labels-from-a-self-hosted-runner-for-an-enterprise + */ + "DELETE /enterprises/{enterprise}/actions/runners/{runner_id}/labels": Operation<"/enterprises/{enterprise}/actions/runners/{runner_id}/labels", "delete">; + /** + * @see https://docs.github.com/rest/reference/actions#remove-a-custom-label-from-a-self-hosted-runner-for-an-enterprise + */ + "DELETE /enterprises/{enterprise}/actions/runners/{runner_id}/labels/{name}": Operation<"/enterprises/{enterprise}/actions/runners/{runner_id}/labels/{name}", "delete">; + /** + * @see https://docs.github.com/rest/reference/gists#delete-a-gist + */ + "DELETE /gists/{gist_id}": Operation<"/gists/{gist_id}", "delete">; + /** + * @see https://docs.github.com/rest/reference/gists#delete-a-gist-comment + */ + "DELETE /gists/{gist_id}/comments/{comment_id}": Operation<"/gists/{gist_id}/comments/{comment_id}", "delete">; + /** + * @see https://docs.github.com/rest/reference/gists#unstar-a-gist + */ + "DELETE /gists/{gist_id}/star": Operation<"/gists/{gist_id}/star", "delete">; + /** + * @see https://docs.github.com/rest/reference/apps#revoke-an-installation-access-token + */ + "DELETE /installation/token": Operation<"/installation/token", "delete">; + /** + * @see https://docs.github.com/rest/reference/activity#delete-a-thread-subscription + */ + "DELETE /notifications/threads/{thread_id}/subscription": Operation<"/notifications/threads/{thread_id}/subscription", "delete">; + /** + * @see https://docs.github.com/rest/reference/actions#disable-a-selected-repository-for-github-actions-in-an-organization + */ + "DELETE /orgs/{org}/actions/permissions/repositories/{repository_id}": Operation<"/orgs/{org}/actions/permissions/repositories/{repository_id}", "delete">; + /** + * @see https://docs.github.com/rest/reference/actions#delete-a-self-hosted-runner-group-from-an-organization + */ + "DELETE /orgs/{org}/actions/runner-groups/{runner_group_id}": Operation<"/orgs/{org}/actions/runner-groups/{runner_group_id}", "delete">; + /** + * @see https://docs.github.com/rest/reference/actions#remove-repository-access-to-a-self-hosted-runner-group-in-an-organization + */ + "DELETE /orgs/{org}/actions/runner-groups/{runner_group_id}/repositories/{repository_id}": Operation<"/orgs/{org}/actions/runner-groups/{runner_group_id}/repositories/{repository_id}", "delete">; + /** + * @see https://docs.github.com/rest/reference/actions#remove-a-self-hosted-runner-from-a-group-for-an-organization + */ + "DELETE /orgs/{org}/actions/runner-groups/{runner_group_id}/runners/{runner_id}": Operation<"/orgs/{org}/actions/runner-groups/{runner_group_id}/runners/{runner_id}", "delete">; + /** + * @see https://docs.github.com/rest/reference/actions#delete-a-self-hosted-runner-from-an-organization + */ + "DELETE /orgs/{org}/actions/runners/{runner_id}": Operation<"/orgs/{org}/actions/runners/{runner_id}", "delete">; + /** + * @see https://docs.github.com/rest/reference/actions#remove-all-custom-labels-from-a-self-hosted-runner-for-an-organization + */ + "DELETE /orgs/{org}/actions/runners/{runner_id}/labels": Operation<"/orgs/{org}/actions/runners/{runner_id}/labels", "delete">; + /** + * @see https://docs.github.com/rest/reference/actions#remove-a-custom-label-from-a-self-hosted-runner-for-an-organization + */ + "DELETE /orgs/{org}/actions/runners/{runner_id}/labels/{name}": Operation<"/orgs/{org}/actions/runners/{runner_id}/labels/{name}", "delete">; + /** + * @see https://docs.github.com/rest/reference/actions#delete-an-organization-secret + */ + "DELETE /orgs/{org}/actions/secrets/{secret_name}": Operation<"/orgs/{org}/actions/secrets/{secret_name}", "delete">; + /** + * @see https://docs.github.com/rest/reference/actions#remove-selected-repository-from-an-organization-secret + */ + "DELETE /orgs/{org}/actions/secrets/{secret_name}/repositories/{repository_id}": Operation<"/orgs/{org}/actions/secrets/{secret_name}/repositories/{repository_id}", "delete">; + /** + * @see https://docs.github.com/rest/reference/orgs#unblock-a-user-from-an-organization + */ + "DELETE /orgs/{org}/blocks/{username}": Operation<"/orgs/{org}/blocks/{username}", "delete">; + /** + * @see https://docs.github.com/rest/reference/orgs#remove-a-saml-sso-authorization-for-an-organization + */ + "DELETE /orgs/{org}/credential-authorizations/{credential_id}": Operation<"/orgs/{org}/credential-authorizations/{credential_id}", "delete">; + /** + * @see https://docs.github.com/rest/reference/dependabot#delete-an-organization-secret + */ + "DELETE /orgs/{org}/dependabot/secrets/{secret_name}": Operation<"/orgs/{org}/dependabot/secrets/{secret_name}", "delete">; + /** + * @see https://docs.github.com/rest/reference/dependabot#remove-selected-repository-from-an-organization-secret + */ + "DELETE /orgs/{org}/dependabot/secrets/{secret_name}/repositories/{repository_id}": Operation<"/orgs/{org}/dependabot/secrets/{secret_name}/repositories/{repository_id}", "delete">; + /** + * @see https://docs.github.com/rest/reference/orgs#delete-an-organization-webhook + */ + "DELETE /orgs/{org}/hooks/{hook_id}": Operation<"/orgs/{org}/hooks/{hook_id}", "delete">; + /** + * @see https://docs.github.com/rest/reference/interactions#remove-interaction-restrictions-for-an-organization + */ + "DELETE /orgs/{org}/interaction-limits": Operation<"/orgs/{org}/interaction-limits", "delete">; + /** + * @see https://docs.github.com/rest/reference/orgs#cancel-an-organization-invitation + */ + "DELETE /orgs/{org}/invitations/{invitation_id}": Operation<"/orgs/{org}/invitations/{invitation_id}", "delete">; + /** + * @see https://docs.github.com/rest/reference/orgs#remove-an-organization-member + */ + "DELETE /orgs/{org}/members/{username}": Operation<"/orgs/{org}/members/{username}", "delete">; + /** + * @see https://docs.github.com/rest/reference/codespaces + */ + "DELETE /orgs/{org}/members/{username}/codespaces/{codespace_name}": Operation<"/orgs/{org}/members/{username}/codespaces/{codespace_name}", "delete">; + /** + * @see https://docs.github.com/rest/reference/orgs#remove-organization-membership-for-a-user + */ + "DELETE /orgs/{org}/memberships/{username}": Operation<"/orgs/{org}/memberships/{username}", "delete">; + /** + * @see https://docs.github.com/rest/reference/migrations#delete-an-organization-migration-archive + */ + "DELETE /orgs/{org}/migrations/{migration_id}/archive": Operation<"/orgs/{org}/migrations/{migration_id}/archive", "delete">; + /** + * @see https://docs.github.com/rest/reference/migrations#unlock-an-organization-repository + */ + "DELETE /orgs/{org}/migrations/{migration_id}/repos/{repo_name}/lock": Operation<"/orgs/{org}/migrations/{migration_id}/repos/{repo_name}/lock", "delete">; + /** + * @see https://docs.github.com/rest/reference/orgs#remove-outside-collaborator-from-an-organization + */ + "DELETE /orgs/{org}/outside_collaborators/{username}": Operation<"/orgs/{org}/outside_collaborators/{username}", "delete">; + /** + * @see https://docs.github.com/rest/reference/packages#delete-a-package-for-an-organization + */ + "DELETE /orgs/{org}/packages/{package_type}/{package_name}": Operation<"/orgs/{org}/packages/{package_type}/{package_name}", "delete">; + /** + * @see https://docs.github.com/rest/reference/packages#delete-a-package-version-for-an-organization + */ + "DELETE /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}": Operation<"/orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}", "delete">; + /** + * @see https://docs.github.com/rest/reference/orgs#remove-public-organization-membership-for-the-authenticated-user + */ + "DELETE /orgs/{org}/public_members/{username}": Operation<"/orgs/{org}/public_members/{username}", "delete">; + /** + * @see https://docs.github.com/rest/reference/teams#delete-a-team + */ + "DELETE /orgs/{org}/teams/{team_slug}": Operation<"/orgs/{org}/teams/{team_slug}", "delete">; + /** + * @see https://docs.github.com/rest/reference/teams#delete-a-discussion + */ + "DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}": Operation<"/orgs/{org}/teams/{team_slug}/discussions/{discussion_number}", "delete">; + /** + * @see https://docs.github.com/rest/reference/teams#delete-a-discussion-comment + */ + "DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}": Operation<"/orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}", "delete">; + /** + * @see https://docs.github.com/rest/reference/reactions#delete-team-discussion-comment-reaction + */ + "DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions/{reaction_id}": Operation<"/orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions/{reaction_id}", "delete">; + /** + * @see https://docs.github.com/rest/reference/reactions#delete-team-discussion-reaction + */ + "DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions/{reaction_id}": Operation<"/orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions/{reaction_id}", "delete">; + /** + * @see https://docs.github.com/rest/reference/teams#unlink-external-idp-group-team-connection + */ + "DELETE /orgs/{org}/teams/{team_slug}/external-groups": Operation<"/orgs/{org}/teams/{team_slug}/external-groups", "delete">; + /** + * @see https://docs.github.com/rest/reference/teams#remove-team-membership-for-a-user + */ + "DELETE /orgs/{org}/teams/{team_slug}/memberships/{username}": Operation<"/orgs/{org}/teams/{team_slug}/memberships/{username}", "delete">; + /** + * @see https://docs.github.com/rest/reference/teams#remove-a-project-from-a-team + */ + "DELETE /orgs/{org}/teams/{team_slug}/projects/{project_id}": Operation<"/orgs/{org}/teams/{team_slug}/projects/{project_id}", "delete">; + /** + * @see https://docs.github.com/rest/reference/teams/#remove-a-repository-from-a-team + */ + "DELETE /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}": Operation<"/orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}", "delete">; + /** + * @see https://docs.github.com/rest/reference/projects#delete-a-project-card + */ + "DELETE /projects/columns/cards/{card_id}": Operation<"/projects/columns/cards/{card_id}", "delete">; + /** + * @see https://docs.github.com/rest/reference/projects#delete-a-project-column + */ + "DELETE /projects/columns/{column_id}": Operation<"/projects/columns/{column_id}", "delete">; + /** + * @see https://docs.github.com/rest/reference/projects#delete-a-project + */ + "DELETE /projects/{project_id}": Operation<"/projects/{project_id}", "delete">; + /** + * @see https://docs.github.com/rest/reference/projects#remove-project-collaborator + */ + "DELETE /projects/{project_id}/collaborators/{username}": Operation<"/projects/{project_id}/collaborators/{username}", "delete">; + /** + * @see https://docs.github.com/rest/reference/repos#delete-a-repository + */ + "DELETE /repos/{owner}/{repo}": Operation<"/repos/{owner}/{repo}", "delete">; + /** + * @see https://docs.github.com/rest/reference/actions#delete-an-artifact + */ + "DELETE /repos/{owner}/{repo}/actions/artifacts/{artifact_id}": Operation<"/repos/{owner}/{repo}/actions/artifacts/{artifact_id}", "delete">; + /** + * @see https://docs.github.com/rest/actions/cache#delete-a-github-actions-cache-for-a-repository-using-a-cache-id + */ + "DELETE /repos/{owner}/{repo}/actions/caches/{cache_id}": Operation<"/repos/{owner}/{repo}/actions/caches/{cache_id}", "delete">; + /** + * @see https://docs.github.com/rest/actions/cache#delete-github-actions-caches-for-a-repository-using-a-cache-key + */ + "DELETE /repos/{owner}/{repo}/actions/caches{?key,ref}": Operation<"/repos/{owner}/{repo}/actions/caches", "delete">; + /** + * @see https://docs.github.com/rest/reference/actions#delete-a-self-hosted-runner-from-a-repository + */ + "DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}": Operation<"/repos/{owner}/{repo}/actions/runners/{runner_id}", "delete">; + /** + * @see https://docs.github.com/rest/reference/actions#remove-all-custom-labels-from-a-self-hosted-runner-for-a-repository + */ + "DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}/labels": Operation<"/repos/{owner}/{repo}/actions/runners/{runner_id}/labels", "delete">; + /** + * @see https://docs.github.com/rest/reference/actions#remove-a-custom-label-from-a-self-hosted-runner-for-a-repository + */ + "DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}/labels/{name}": Operation<"/repos/{owner}/{repo}/actions/runners/{runner_id}/labels/{name}", "delete">; + /** + * @see https://docs.github.com/rest/reference/actions#delete-a-workflow-run + */ + "DELETE /repos/{owner}/{repo}/actions/runs/{run_id}": Operation<"/repos/{owner}/{repo}/actions/runs/{run_id}", "delete">; + /** + * @see https://docs.github.com/rest/reference/actions#delete-workflow-run-logs + */ + "DELETE /repos/{owner}/{repo}/actions/runs/{run_id}/logs": Operation<"/repos/{owner}/{repo}/actions/runs/{run_id}/logs", "delete">; + /** + * @see https://docs.github.com/rest/reference/actions#delete-a-repository-secret + */ + "DELETE /repos/{owner}/{repo}/actions/secrets/{secret_name}": Operation<"/repos/{owner}/{repo}/actions/secrets/{secret_name}", "delete">; + /** + * @see https://docs.github.com/v3/repos#delete-autolink + */ + "DELETE /repos/{owner}/{repo}/autolinks/{autolink_id}": Operation<"/repos/{owner}/{repo}/autolinks/{autolink_id}", "delete">; + /** + * @see https://docs.github.com/rest/reference/repos#disable-automated-security-fixes + */ + "DELETE /repos/{owner}/{repo}/automated-security-fixes": Operation<"/repos/{owner}/{repo}/automated-security-fixes", "delete">; + /** + * @see https://docs.github.com/rest/reference/repos#delete-branch-protection + */ + "DELETE /repos/{owner}/{repo}/branches/{branch}/protection": Operation<"/repos/{owner}/{repo}/branches/{branch}/protection", "delete">; + /** + * @see https://docs.github.com/rest/reference/repos#delete-admin-branch-protection + */ + "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins": Operation<"/repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins", "delete">; + /** + * @see https://docs.github.com/rest/reference/repos#delete-pull-request-review-protection + */ + "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews": Operation<"/repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews", "delete">; + /** + * @see https://docs.github.com/rest/reference/repos#delete-commit-signature-protection + */ + "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures": Operation<"/repos/{owner}/{repo}/branches/{branch}/protection/required_signatures", "delete">; + /** + * @see https://docs.github.com/rest/reference/repos#remove-status-check-protection + */ + "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks": Operation<"/repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks", "delete">; + /** + * @see https://docs.github.com/rest/reference/repos#remove-status-check-contexts + */ + "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts": Operation<"/repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts", "delete">; + /** + * @see https://docs.github.com/rest/reference/repos#delete-access-restrictions + */ + "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions": Operation<"/repos/{owner}/{repo}/branches/{branch}/protection/restrictions", "delete">; + /** + * @see https://docs.github.com/rest/reference/repos#remove-app-access-restrictions + */ + "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps": Operation<"/repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps", "delete">; + /** + * @see https://docs.github.com/rest/reference/repos#remove-team-access-restrictions + */ + "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams": Operation<"/repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams", "delete">; + /** + * @see https://docs.github.com/rest/reference/repos#remove-user-access-restrictions + */ + "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users": Operation<"/repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users", "delete">; + /** + * @see https://docs.github.com/rest/reference/code-scanning#delete-a-code-scanning-analysis-from-a-repository + */ + "DELETE /repos/{owner}/{repo}/code-scanning/analyses/{analysis_id}{?confirm_delete}": Operation<"/repos/{owner}/{repo}/code-scanning/analyses/{analysis_id}", "delete">; + /** + * @see https://docs.github.com/rest/reference/codespaces#delete-a-repository-secret + */ + "DELETE /repos/{owner}/{repo}/codespaces/secrets/{secret_name}": Operation<"/repos/{owner}/{repo}/codespaces/secrets/{secret_name}", "delete">; + /** + * @see https://docs.github.com/rest/reference/repos#remove-a-repository-collaborator + */ + "DELETE /repos/{owner}/{repo}/collaborators/{username}": Operation<"/repos/{owner}/{repo}/collaborators/{username}", "delete">; + /** + * @see https://docs.github.com/rest/reference/repos#delete-a-commit-comment + */ + "DELETE /repos/{owner}/{repo}/comments/{comment_id}": Operation<"/repos/{owner}/{repo}/comments/{comment_id}", "delete">; + /** + * @see https://docs.github.com/rest/reference/reactions#delete-a-commit-comment-reaction + */ + "DELETE /repos/{owner}/{repo}/comments/{comment_id}/reactions/{reaction_id}": Operation<"/repos/{owner}/{repo}/comments/{comment_id}/reactions/{reaction_id}", "delete">; + /** + * @see https://docs.github.com/rest/reference/repos#delete-a-file + */ + "DELETE /repos/{owner}/{repo}/contents/{path}": Operation<"/repos/{owner}/{repo}/contents/{path}", "delete">; + /** + * @see https://docs.github.com/rest/reference/dependabot#delete-a-repository-secret + */ + "DELETE /repos/{owner}/{repo}/dependabot/secrets/{secret_name}": Operation<"/repos/{owner}/{repo}/dependabot/secrets/{secret_name}", "delete">; + /** + * @see https://docs.github.com/rest/reference/repos#delete-a-deployment + */ + "DELETE /repos/{owner}/{repo}/deployments/{deployment_id}": Operation<"/repos/{owner}/{repo}/deployments/{deployment_id}", "delete">; + /** + * @see https://docs.github.com/rest/reference/repos#delete-an-environment + */ + "DELETE /repos/{owner}/{repo}/environments/{environment_name}": Operation<"/repos/{owner}/{repo}/environments/{environment_name}", "delete">; + /** + * @see https://docs.github.com/rest/reference/git#delete-a-reference + */ + "DELETE /repos/{owner}/{repo}/git/refs/{ref}": Operation<"/repos/{owner}/{repo}/git/refs/{ref}", "delete">; + /** + * @see https://docs.github.com/rest/reference/repos#delete-a-repository-webhook + */ + "DELETE /repos/{owner}/{repo}/hooks/{hook_id}": Operation<"/repos/{owner}/{repo}/hooks/{hook_id}", "delete">; + /** + * @see https://docs.github.com/rest/reference/migrations#cancel-an-import + */ + "DELETE /repos/{owner}/{repo}/import": Operation<"/repos/{owner}/{repo}/import", "delete">; + /** + * @see https://docs.github.com/rest/reference/interactions#remove-interaction-restrictions-for-a-repository + */ + "DELETE /repos/{owner}/{repo}/interaction-limits": Operation<"/repos/{owner}/{repo}/interaction-limits", "delete">; + /** + * @see https://docs.github.com/rest/reference/repos#delete-a-repository-invitation + */ + "DELETE /repos/{owner}/{repo}/invitations/{invitation_id}": Operation<"/repos/{owner}/{repo}/invitations/{invitation_id}", "delete">; + /** + * @see https://docs.github.com/rest/reference/issues#delete-an-issue-comment + */ + "DELETE /repos/{owner}/{repo}/issues/comments/{comment_id}": Operation<"/repos/{owner}/{repo}/issues/comments/{comment_id}", "delete">; + /** + * @see https://docs.github.com/rest/reference/reactions#delete-an-issue-comment-reaction + */ + "DELETE /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions/{reaction_id}": Operation<"/repos/{owner}/{repo}/issues/comments/{comment_id}/reactions/{reaction_id}", "delete">; + /** + * @see https://docs.github.com/rest/reference/issues#remove-assignees-from-an-issue + */ + "DELETE /repos/{owner}/{repo}/issues/{issue_number}/assignees": Operation<"/repos/{owner}/{repo}/issues/{issue_number}/assignees", "delete">; + /** + * @see https://docs.github.com/rest/reference/issues#remove-all-labels-from-an-issue + */ + "DELETE /repos/{owner}/{repo}/issues/{issue_number}/labels": Operation<"/repos/{owner}/{repo}/issues/{issue_number}/labels", "delete">; + /** + * @see https://docs.github.com/rest/reference/issues#remove-a-label-from-an-issue + */ + "DELETE /repos/{owner}/{repo}/issues/{issue_number}/labels/{name}": Operation<"/repos/{owner}/{repo}/issues/{issue_number}/labels/{name}", "delete">; + /** + * @see https://docs.github.com/rest/reference/issues#unlock-an-issue + */ + "DELETE /repos/{owner}/{repo}/issues/{issue_number}/lock": Operation<"/repos/{owner}/{repo}/issues/{issue_number}/lock", "delete">; + /** + * @see https://docs.github.com/rest/reference/reactions#delete-an-issue-reaction + */ + "DELETE /repos/{owner}/{repo}/issues/{issue_number}/reactions/{reaction_id}": Operation<"/repos/{owner}/{repo}/issues/{issue_number}/reactions/{reaction_id}", "delete">; + /** + * @see https://docs.github.com/rest/reference/repos#delete-a-deploy-key + */ + "DELETE /repos/{owner}/{repo}/keys/{key_id}": Operation<"/repos/{owner}/{repo}/keys/{key_id}", "delete">; + /** + * @see https://docs.github.com/rest/reference/issues#delete-a-label + */ + "DELETE /repos/{owner}/{repo}/labels/{name}": Operation<"/repos/{owner}/{repo}/labels/{name}", "delete">; + /** + * @see https://docs.github.com/rest/reference/repos#disable-git-lfs-for-a-repository + */ + "DELETE /repos/{owner}/{repo}/lfs": Operation<"/repos/{owner}/{repo}/lfs", "delete">; + /** + * @see https://docs.github.com/rest/reference/issues#delete-a-milestone + */ + "DELETE /repos/{owner}/{repo}/milestones/{milestone_number}": Operation<"/repos/{owner}/{repo}/milestones/{milestone_number}", "delete">; + /** + * @see https://docs.github.com/rest/reference/repos#delete-a-github-pages-site + */ + "DELETE /repos/{owner}/{repo}/pages": Operation<"/repos/{owner}/{repo}/pages", "delete">; + /** + * @see https://docs.github.com/rest/reference/pulls#delete-a-review-comment-for-a-pull-request + */ + "DELETE /repos/{owner}/{repo}/pulls/comments/{comment_id}": Operation<"/repos/{owner}/{repo}/pulls/comments/{comment_id}", "delete">; + /** + * @see https://docs.github.com/rest/reference/reactions#delete-a-pull-request-comment-reaction + */ + "DELETE /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions/{reaction_id}": Operation<"/repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions/{reaction_id}", "delete">; + /** + * @see https://docs.github.com/rest/reference/pulls#remove-requested-reviewers-from-a-pull-request + */ + "DELETE /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers": Operation<"/repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers", "delete">; + /** + * @see https://docs.github.com/rest/reference/pulls#delete-a-pending-review-for-a-pull-request + */ + "DELETE /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}": Operation<"/repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}", "delete">; + /** + * @see https://docs.github.com/rest/reference/repos#delete-a-release-asset + */ + "DELETE /repos/{owner}/{repo}/releases/assets/{asset_id}": Operation<"/repos/{owner}/{repo}/releases/assets/{asset_id}", "delete">; + /** + * @see https://docs.github.com/rest/reference/repos#delete-a-release + */ + "DELETE /repos/{owner}/{repo}/releases/{release_id}": Operation<"/repos/{owner}/{repo}/releases/{release_id}", "delete">; + /** + * @see https://docs.github.com/rest/reference/reactions/#delete-a-release-reaction + */ + "DELETE /repos/{owner}/{repo}/releases/{release_id}/reactions/{reaction_id}": Operation<"/repos/{owner}/{repo}/releases/{release_id}/reactions/{reaction_id}", "delete">; + /** + * @see https://docs.github.com/rest/reference/activity#delete-a-repository-subscription + */ + "DELETE /repos/{owner}/{repo}/subscription": Operation<"/repos/{owner}/{repo}/subscription", "delete">; + /** + * @see https://docs.github.com/rest/reference/repos#delete-tag-protection-state-for-a-repository + */ + "DELETE /repos/{owner}/{repo}/tags/protection/{tag_protection_id}": Operation<"/repos/{owner}/{repo}/tags/protection/{tag_protection_id}", "delete">; + /** + * @see https://docs.github.com/rest/reference/repos#disable-vulnerability-alerts + */ + "DELETE /repos/{owner}/{repo}/vulnerability-alerts": Operation<"/repos/{owner}/{repo}/vulnerability-alerts", "delete">; + /** + * @see https://docs.github.com/rest/reference/actions#delete-an-environment-secret + */ + "DELETE /repositories/{repository_id}/environments/{environment_name}/secrets/{secret_name}": Operation<"/repositories/{repository_id}/environments/{environment_name}/secrets/{secret_name}", "delete">; + /** + * @see https://docs.github.com/rest/reference/enterprise-admin#delete-a-scim-group-from-an-enterprise + */ + "DELETE /scim/v2/enterprises/{enterprise}/Groups/{scim_group_id}": Operation<"/scim/v2/enterprises/{enterprise}/Groups/{scim_group_id}", "delete">; + /** + * @see https://docs.github.com/rest/reference/enterprise-admin#delete-a-scim-user-from-an-enterprise + */ + "DELETE /scim/v2/enterprises/{enterprise}/Users/{scim_user_id}": Operation<"/scim/v2/enterprises/{enterprise}/Users/{scim_user_id}", "delete">; + /** + * @see https://docs.github.com/rest/reference/scim#delete-a-scim-user-from-an-organization + */ + "DELETE /scim/v2/organizations/{org}/Users/{scim_user_id}": Operation<"/scim/v2/organizations/{org}/Users/{scim_user_id}", "delete">; + /** + * @see https://docs.github.com/rest/reference/teams/#delete-a-team-legacy + */ + "DELETE /teams/{team_id}": Operation<"/teams/{team_id}", "delete">; + /** + * @see https://docs.github.com/rest/reference/teams#delete-a-discussion-legacy + */ + "DELETE /teams/{team_id}/discussions/{discussion_number}": Operation<"/teams/{team_id}/discussions/{discussion_number}", "delete">; + /** + * @see https://docs.github.com/rest/reference/teams#delete-a-discussion-comment-legacy + */ + "DELETE /teams/{team_id}/discussions/{discussion_number}/comments/{comment_number}": Operation<"/teams/{team_id}/discussions/{discussion_number}/comments/{comment_number}", "delete">; + /** + * @see https://docs.github.com/rest/reference/teams#remove-team-member-legacy + */ + "DELETE /teams/{team_id}/members/{username}": Operation<"/teams/{team_id}/members/{username}", "delete">; + /** + * @see https://docs.github.com/rest/reference/teams#remove-team-membership-for-a-user-legacy + */ + "DELETE /teams/{team_id}/memberships/{username}": Operation<"/teams/{team_id}/memberships/{username}", "delete">; + /** + * @see https://docs.github.com/rest/reference/teams/#remove-a-project-from-a-team-legacy + */ + "DELETE /teams/{team_id}/projects/{project_id}": Operation<"/teams/{team_id}/projects/{project_id}", "delete">; + /** + * @see https://docs.github.com/rest/reference/teams/#remove-a-repository-from-a-team-legacy + */ + "DELETE /teams/{team_id}/repos/{owner}/{repo}": Operation<"/teams/{team_id}/repos/{owner}/{repo}", "delete">; + /** + * @see https://docs.github.com/rest/reference/users#unblock-a-user + */ + "DELETE /user/blocks/{username}": Operation<"/user/blocks/{username}", "delete">; + /** + * @see https://docs.github.com/rest/reference/codespaces#delete-a-secret-for-the-authenticated-user + */ + "DELETE /user/codespaces/secrets/{secret_name}": Operation<"/user/codespaces/secrets/{secret_name}", "delete">; + /** + * @see https://docs.github.com/rest/reference/codespaces#remove-a-selected-repository-from-a-user-secret + */ + "DELETE /user/codespaces/secrets/{secret_name}/repositories/{repository_id}": Operation<"/user/codespaces/secrets/{secret_name}/repositories/{repository_id}", "delete">; + /** + * @see https://docs.github.com/rest/reference/codespaces#delete-a-codespace-for-the-authenticated-user + */ + "DELETE /user/codespaces/{codespace_name}": Operation<"/user/codespaces/{codespace_name}", "delete">; + /** + * @see https://docs.github.com/rest/reference/users#delete-an-email-address-for-the-authenticated-user + */ + "DELETE /user/emails": Operation<"/user/emails", "delete">; + /** + * @see https://docs.github.com/rest/reference/users#unfollow-a-user + */ + "DELETE /user/following/{username}": Operation<"/user/following/{username}", "delete">; + /** + * @see https://docs.github.com/rest/reference/users#delete-a-gpg-key-for-the-authenticated-user + */ + "DELETE /user/gpg_keys/{gpg_key_id}": Operation<"/user/gpg_keys/{gpg_key_id}", "delete">; + /** + * @see https://docs.github.com/rest/reference/apps#remove-a-repository-from-an-app-installation + */ + "DELETE /user/installations/{installation_id}/repositories/{repository_id}": Operation<"/user/installations/{installation_id}/repositories/{repository_id}", "delete">; + /** + * @see https://docs.github.com/rest/reference/interactions#remove-interaction-restrictions-from-your-public-repositories + */ + "DELETE /user/interaction-limits": Operation<"/user/interaction-limits", "delete">; + /** + * @see https://docs.github.com/rest/reference/users#delete-a-public-ssh-key-for-the-authenticated-user + */ + "DELETE /user/keys/{key_id}": Operation<"/user/keys/{key_id}", "delete">; + /** + * @see https://docs.github.com/rest/reference/migrations#delete-a-user-migration-archive + */ + "DELETE /user/migrations/{migration_id}/archive": Operation<"/user/migrations/{migration_id}/archive", "delete">; + /** + * @see https://docs.github.com/rest/reference/migrations#unlock-a-user-repository + */ + "DELETE /user/migrations/{migration_id}/repos/{repo_name}/lock": Operation<"/user/migrations/{migration_id}/repos/{repo_name}/lock", "delete">; + /** + * @see https://docs.github.com/rest/reference/packages#delete-a-package-for-the-authenticated-user + */ + "DELETE /user/packages/{package_type}/{package_name}": Operation<"/user/packages/{package_type}/{package_name}", "delete">; + /** + * @see https://docs.github.com/rest/reference/packages#delete-a-package-version-for-the-authenticated-user + */ + "DELETE /user/packages/{package_type}/{package_name}/versions/{package_version_id}": Operation<"/user/packages/{package_type}/{package_name}/versions/{package_version_id}", "delete">; + /** + * @see https://docs.github.com/rest/reference/repos#decline-a-repository-invitation + */ + "DELETE /user/repository_invitations/{invitation_id}": Operation<"/user/repository_invitations/{invitation_id}", "delete">; + /** + * @see https://docs.github.com/rest/reference/activity#unstar-a-repository-for-the-authenticated-user + */ + "DELETE /user/starred/{owner}/{repo}": Operation<"/user/starred/{owner}/{repo}", "delete">; + /** + * @see https://docs.github.com/rest/reference/packages#delete-a-package-for-a-user + */ + "DELETE /users/{username}/packages/{package_type}/{package_name}": Operation<"/users/{username}/packages/{package_type}/{package_name}", "delete">; + /** + * @see https://docs.github.com/rest/reference/packages#delete-a-package-version-for-a-user + */ + "DELETE /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}": Operation<"/users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}", "delete">; + /** + * @see https://docs.github.com/rest/overview/resources-in-the-rest-api#root-endpoint + */ + "GET /": Operation<"/", "get">; + /** + * @see https://docs.github.com/rest/reference/apps#get-the-authenticated-app + */ + "GET /app": Operation<"/app", "get">; + /** + * @see https://docs.github.com/rest/reference/apps#get-a-webhook-configuration-for-an-app + */ + "GET /app/hook/config": Operation<"/app/hook/config", "get">; + /** + * @see https://docs.github.com/rest/reference/apps#list-deliveries-for-an-app-webhook + */ + "GET /app/hook/deliveries": Operation<"/app/hook/deliveries", "get">; + /** + * @see https://docs.github.com/rest/reference/apps#get-a-delivery-for-an-app-webhook + */ + "GET /app/hook/deliveries/{delivery_id}": Operation<"/app/hook/deliveries/{delivery_id}", "get">; + /** + * @see https://docs.github.com/rest/reference/apps#list-installations-for-the-authenticated-app + */ + "GET /app/installations": Operation<"/app/installations", "get">; + /** + * @see https://docs.github.com/rest/reference/apps#get-an-installation-for-the-authenticated-app + */ + "GET /app/installations/{installation_id}": Operation<"/app/installations/{installation_id}", "get">; + /** + * @see https://docs.github.com/rest/reference/oauth-authorizations#list-your-grants + */ + "GET /applications/grants": Operation<"/applications/grants", "get">; + /** + * @see https://docs.github.com/rest/reference/oauth-authorizations#get-a-single-grant + */ + "GET /applications/grants/{grant_id}": Operation<"/applications/grants/{grant_id}", "get">; + /** + * @see https://docs.github.com/rest/reference/apps/#get-an-app + */ + "GET /apps/{app_slug}": Operation<"/apps/{app_slug}", "get">; + /** + * @see https://docs.github.com/rest/reference/oauth-authorizations#list-your-authorizations + */ + "GET /authorizations": Operation<"/authorizations", "get">; + /** + * @see https://docs.github.com/rest/reference/oauth-authorizations#get-a-single-authorization + */ + "GET /authorizations/{authorization_id}": Operation<"/authorizations/{authorization_id}", "get">; + /** + * @see https://docs.github.com/rest/reference/codes-of-conduct#get-all-codes-of-conduct + */ + "GET /codes_of_conduct": Operation<"/codes_of_conduct", "get">; + /** + * @see https://docs.github.com/rest/reference/codes-of-conduct#get-a-code-of-conduct + */ + "GET /codes_of_conduct/{key}": Operation<"/codes_of_conduct/{key}", "get">; + /** + * @see https://docs.github.com/rest/reference/emojis#get-emojis + */ + "GET /emojis": Operation<"/emojis", "get">; + /** + * @see https://docs.github.com/rest/reference/enterprise-admin#get-github-enterprise-server-statistics + */ + "GET /enterprise-installation/{enterprise_or_org}/server-statistics": Operation<"/enterprise-installation/{enterprise_or_org}/server-statistics", "get">; + /** + * @see https://docs.github.com/rest/reference/actions#get-github-actions-cache-usage-for-an-enterprise + */ + "GET /enterprises/{enterprise}/actions/cache/usage": Operation<"/enterprises/{enterprise}/actions/cache/usage", "get">; + /** + * @see https://docs.github.com/rest/reference/actions#get-github-actions-permissions-for-an-enterprise + */ + "GET /enterprises/{enterprise}/actions/permissions": Operation<"/enterprises/{enterprise}/actions/permissions", "get">; + /** + * @see https://docs.github.com/rest/reference/actions#list-selected-organizations-enabled-for-github-actions-in-an-enterprise + */ + "GET /enterprises/{enterprise}/actions/permissions/organizations": Operation<"/enterprises/{enterprise}/actions/permissions/organizations", "get">; + /** + * @see https://docs.github.com/rest/reference/actions#get-allowed-actions-for-an-enterprise + */ + "GET /enterprises/{enterprise}/actions/permissions/selected-actions": Operation<"/enterprises/{enterprise}/actions/permissions/selected-actions", "get">; + /** + * @see https://docs.github.com/rest/reference/actions#get-default-workflow-permissions-for-an-enterprise + */ + "GET /enterprises/{enterprise}/actions/permissions/workflow": Operation<"/enterprises/{enterprise}/actions/permissions/workflow", "get">; + /** + * @see https://docs.github.com/rest/reference/actions#list-self-hosted-runner-groups-for-an-enterprise + */ + "GET /enterprises/{enterprise}/actions/runner-groups": Operation<"/enterprises/{enterprise}/actions/runner-groups", "get">; + /** + * @see https://docs.github.com/rest/reference/actions#get-a-self-hosted-runner-group-for-an-enterprise + */ + "GET /enterprises/{enterprise}/actions/runner-groups/{runner_group_id}": Operation<"/enterprises/{enterprise}/actions/runner-groups/{runner_group_id}", "get">; + /** + * @see https://docs.github.com/rest/reference/actions#list-organization-access-to-a-self-hosted-runner-group-in-a-enterprise + */ + "GET /enterprises/{enterprise}/actions/runner-groups/{runner_group_id}/organizations": Operation<"/enterprises/{enterprise}/actions/runner-groups/{runner_group_id}/organizations", "get">; + /** + * @see https://docs.github.com/rest/reference/actions#list-self-hosted-runners-in-a-group-for-an-enterprise + */ + "GET /enterprises/{enterprise}/actions/runner-groups/{runner_group_id}/runners": Operation<"/enterprises/{enterprise}/actions/runner-groups/{runner_group_id}/runners", "get">; + /** + * @see https://docs.github.com/rest/reference/actions#list-self-hosted-runners-for-an-enterprise + */ + "GET /enterprises/{enterprise}/actions/runners": Operation<"/enterprises/{enterprise}/actions/runners", "get">; + /** + * @see https://docs.github.com/rest/reference/actions#list-runner-applications-for-an-enterprise + */ + "GET /enterprises/{enterprise}/actions/runners/downloads": Operation<"/enterprises/{enterprise}/actions/runners/downloads", "get">; + /** + * @see https://docs.github.com/rest/reference/actions#get-a-self-hosted-runner-for-an-enterprise + */ + "GET /enterprises/{enterprise}/actions/runners/{runner_id}": Operation<"/enterprises/{enterprise}/actions/runners/{runner_id}", "get">; + /** + * @see https://docs.github.com/rest/reference/actions#list-labels-for-a-self-hosted-runner-for-an-enterprise + */ + "GET /enterprises/{enterprise}/actions/runners/{runner_id}/labels": Operation<"/enterprises/{enterprise}/actions/runners/{runner_id}/labels", "get">; + /** + * @see https://docs.github.com/rest/reference/enterprise-admin#get-the-audit-log-for-an-enterprise + */ + "GET /enterprises/{enterprise}/audit-log": Operation<"/enterprises/{enterprise}/audit-log", "get">; + /** + * @see https://docs.github.com/rest/reference/code-scanning#list-code-scanning-alerts-for-an-enterprise + */ + "GET /enterprises/{enterprise}/code-scanning/alerts": Operation<"/enterprises/{enterprise}/code-scanning/alerts", "get">; + /** + * @see https://docs.github.com/rest/reference/secret-scanning#list-secret-scanning-alerts-for-an-enterprise + */ + "GET /enterprises/{enterprise}/secret-scanning/alerts": Operation<"/enterprises/{enterprise}/secret-scanning/alerts", "get">; + /** + * @see https://docs.github.com/rest/reference/billing#get-github-actions-billing-for-an-enterprise + */ + "GET /enterprises/{enterprise}/settings/billing/actions": Operation<"/enterprises/{enterprise}/settings/billing/actions", "get">; + /** + * @see https://docs.github.com/rest/reference/billing#export-advanced-security-active-committers-data-for-enterprise + */ + "GET /enterprises/{enterprise}/settings/billing/advanced-security": Operation<"/enterprises/{enterprise}/settings/billing/advanced-security", "get">; + /** + * @see https://docs.github.com/rest/reference/billing#get-github-packages-billing-for-an-enterprise + */ + "GET /enterprises/{enterprise}/settings/billing/packages": Operation<"/enterprises/{enterprise}/settings/billing/packages", "get">; + /** + * @see https://docs.github.com/rest/reference/billing#get-shared-storage-billing-for-an-enterprise + */ + "GET /enterprises/{enterprise}/settings/billing/shared-storage": Operation<"/enterprises/{enterprise}/settings/billing/shared-storage", "get">; + /** + * @see https://docs.github.com/rest/reference/activity#list-public-events + */ + "GET /events": Operation<"/events", "get">; + /** + * @see https://docs.github.com/rest/reference/activity#get-feeds + */ + "GET /feeds": Operation<"/feeds", "get">; + /** + * @see https://docs.github.com/rest/reference/gists#list-gists-for-the-authenticated-user + */ + "GET /gists": Operation<"/gists", "get">; + /** + * @see https://docs.github.com/rest/reference/gists#list-public-gists + */ + "GET /gists/public": Operation<"/gists/public", "get">; + /** + * @see https://docs.github.com/rest/reference/gists#list-starred-gists + */ + "GET /gists/starred": Operation<"/gists/starred", "get">; + /** + * @see https://docs.github.com/rest/reference/gists#get-a-gist + */ + "GET /gists/{gist_id}": Operation<"/gists/{gist_id}", "get">; + /** + * @see https://docs.github.com/rest/reference/gists#list-gist-comments + */ + "GET /gists/{gist_id}/comments": Operation<"/gists/{gist_id}/comments", "get">; + /** + * @see https://docs.github.com/rest/reference/gists#get-a-gist-comment + */ + "GET /gists/{gist_id}/comments/{comment_id}": Operation<"/gists/{gist_id}/comments/{comment_id}", "get">; + /** + * @see https://docs.github.com/rest/reference/gists#list-gist-commits + */ + "GET /gists/{gist_id}/commits": Operation<"/gists/{gist_id}/commits", "get">; + /** + * @see https://docs.github.com/rest/reference/gists#list-gist-forks + */ + "GET /gists/{gist_id}/forks": Operation<"/gists/{gist_id}/forks", "get">; + /** + * @see https://docs.github.com/rest/reference/gists#check-if-a-gist-is-starred + */ + "GET /gists/{gist_id}/star": Operation<"/gists/{gist_id}/star", "get">; + /** + * @see https://docs.github.com/rest/reference/gists#get-a-gist-revision + */ + "GET /gists/{gist_id}/{sha}": Operation<"/gists/{gist_id}/{sha}", "get">; + /** + * @see https://docs.github.com/rest/reference/gitignore#get-all-gitignore-templates + */ + "GET /gitignore/templates": Operation<"/gitignore/templates", "get">; + /** + * @see https://docs.github.com/rest/reference/gitignore#get-a-gitignore-template + */ + "GET /gitignore/templates/{name}": Operation<"/gitignore/templates/{name}", "get">; + /** + * @see https://docs.github.com/rest/reference/apps#list-repositories-accessible-to-the-app-installation + */ + "GET /installation/repositories": Operation<"/installation/repositories", "get">; + /** + * @see https://docs.github.com/rest/reference/issues#list-issues-assigned-to-the-authenticated-user + */ + "GET /issues": Operation<"/issues", "get">; + /** + * @see https://docs.github.com/rest/reference/licenses#get-all-commonly-used-licenses + */ + "GET /licenses": Operation<"/licenses", "get">; + /** + * @see https://docs.github.com/rest/reference/licenses#get-a-license + */ + "GET /licenses/{license}": Operation<"/licenses/{license}", "get">; + /** + * @see https://docs.github.com/rest/reference/apps#get-a-subscription-plan-for-an-account + */ + "GET /marketplace_listing/accounts/{account_id}": Operation<"/marketplace_listing/accounts/{account_id}", "get">; + /** + * @see https://docs.github.com/rest/reference/apps#list-plans + */ + "GET /marketplace_listing/plans": Operation<"/marketplace_listing/plans", "get">; + /** + * @see https://docs.github.com/rest/reference/apps#list-accounts-for-a-plan + */ + "GET /marketplace_listing/plans/{plan_id}/accounts": Operation<"/marketplace_listing/plans/{plan_id}/accounts", "get">; + /** + * @see https://docs.github.com/rest/reference/apps#get-a-subscription-plan-for-an-account-stubbed + */ + "GET /marketplace_listing/stubbed/accounts/{account_id}": Operation<"/marketplace_listing/stubbed/accounts/{account_id}", "get">; + /** + * @see https://docs.github.com/rest/reference/apps#list-plans-stubbed + */ + "GET /marketplace_listing/stubbed/plans": Operation<"/marketplace_listing/stubbed/plans", "get">; + /** + * @see https://docs.github.com/rest/reference/apps#list-accounts-for-a-plan-stubbed + */ + "GET /marketplace_listing/stubbed/plans/{plan_id}/accounts": Operation<"/marketplace_listing/stubbed/plans/{plan_id}/accounts", "get">; + /** + * @see https://docs.github.com/rest/reference/meta#get-github-meta-information + */ + "GET /meta": Operation<"/meta", "get">; + /** + * @see https://docs.github.com/rest/reference/activity#list-public-events-for-a-network-of-repositories + */ + "GET /networks/{owner}/{repo}/events": Operation<"/networks/{owner}/{repo}/events", "get">; + /** + * @see https://docs.github.com/rest/reference/activity#list-notifications-for-the-authenticated-user + */ + "GET /notifications": Operation<"/notifications", "get">; + /** + * @see https://docs.github.com/rest/reference/activity#get-a-thread + */ + "GET /notifications/threads/{thread_id}": Operation<"/notifications/threads/{thread_id}", "get">; + /** + * @see https://docs.github.com/rest/reference/activity#get-a-thread-subscription-for-the-authenticated-user + */ + "GET /notifications/threads/{thread_id}/subscription": Operation<"/notifications/threads/{thread_id}/subscription", "get">; + /** + * @see https://docs.github.com/rest/reference/meta#get-octocat + */ + "GET /octocat": Operation<"/octocat", "get">; + /** + * @see https://docs.github.com/rest/reference/orgs#list-organizations + */ + "GET /organizations": Operation<"/organizations", "get">; + /** + * @see https://docs.github.com/rest/reference/orgs#list-custom-repository-roles-in-an-organization + */ + "GET /organizations/{organization_id}/custom_roles": Operation<"/organizations/{organization_id}/custom_roles", "get">; + /** + * @see https://docs.github.com/rest/reference/codespaces#list-in-organization + * @deprecated "org_id" is now "org" + */ + "GET /orgs/{org_id}/codespaces": Operation<"/orgs/{org}/codespaces", "get">; + /** + * @see https://docs.github.com/rest/reference/orgs#get-an-organization + */ + "GET /orgs/{org}": Operation<"/orgs/{org}", "get">; + /** + * @see https://docs.github.com/rest/reference/actions#get-github-actions-cache-usage-for-an-organization + */ + "GET /orgs/{org}/actions/cache/usage": Operation<"/orgs/{org}/actions/cache/usage", "get">; + /** + * @see https://docs.github.com/rest/reference/actions#list-repositories-with-github-actions-cache-usage-for-an-organization + */ + "GET /orgs/{org}/actions/cache/usage-by-repository": Operation<"/orgs/{org}/actions/cache/usage-by-repository", "get">; + /** + * @see https://docs.github.com/rest/actions/oidc#get-the-customization-template-for-an-oidc-subject-claim-for-an-organization + */ + "GET /orgs/{org}/actions/oidc/customization/sub": Operation<"/orgs/{org}/actions/oidc/customization/sub", "get">; + /** + * @see https://docs.github.com/rest/reference/actions#get-github-actions-permissions-for-an-organization + */ + "GET /orgs/{org}/actions/permissions": Operation<"/orgs/{org}/actions/permissions", "get">; + /** + * @see https://docs.github.com/rest/reference/actions#list-selected-repositories-enabled-for-github-actions-in-an-organization + */ + "GET /orgs/{org}/actions/permissions/repositories": Operation<"/orgs/{org}/actions/permissions/repositories", "get">; + /** + * @see https://docs.github.com/rest/reference/actions#get-allowed-actions-for-an-organization + */ + "GET /orgs/{org}/actions/permissions/selected-actions": Operation<"/orgs/{org}/actions/permissions/selected-actions", "get">; + /** + * @see https://docs.github.com/rest/reference/actions#get-default-workflow-permissions + */ + "GET /orgs/{org}/actions/permissions/workflow": Operation<"/orgs/{org}/actions/permissions/workflow", "get">; + /** + * @see https://docs.github.com/rest/reference/actions#list-self-hosted-runner-groups-for-an-organization + */ + "GET /orgs/{org}/actions/runner-groups": Operation<"/orgs/{org}/actions/runner-groups", "get">; + /** + * @see https://docs.github.com/rest/reference/actions#get-a-self-hosted-runner-group-for-an-organization + */ + "GET /orgs/{org}/actions/runner-groups/{runner_group_id}": Operation<"/orgs/{org}/actions/runner-groups/{runner_group_id}", "get">; + /** + * @see https://docs.github.com/rest/reference/actions#list-repository-access-to-a-self-hosted-runner-group-in-an-organization + */ + "GET /orgs/{org}/actions/runner-groups/{runner_group_id}/repositories": Operation<"/orgs/{org}/actions/runner-groups/{runner_group_id}/repositories", "get">; + /** + * @see https://docs.github.com/rest/reference/actions#list-self-hosted-runners-in-a-group-for-an-organization + */ + "GET /orgs/{org}/actions/runner-groups/{runner_group_id}/runners": Operation<"/orgs/{org}/actions/runner-groups/{runner_group_id}/runners", "get">; + /** + * @see https://docs.github.com/rest/reference/actions#list-self-hosted-runners-for-an-organization + */ + "GET /orgs/{org}/actions/runners": Operation<"/orgs/{org}/actions/runners", "get">; + /** + * @see https://docs.github.com/rest/reference/actions#list-runner-applications-for-an-organization + */ + "GET /orgs/{org}/actions/runners/downloads": Operation<"/orgs/{org}/actions/runners/downloads", "get">; + /** + * @see https://docs.github.com/rest/reference/actions#get-a-self-hosted-runner-for-an-organization + */ + "GET /orgs/{org}/actions/runners/{runner_id}": Operation<"/orgs/{org}/actions/runners/{runner_id}", "get">; + /** + * @see https://docs.github.com/rest/reference/actions#list-labels-for-a-self-hosted-runner-for-an-organization + */ + "GET /orgs/{org}/actions/runners/{runner_id}/labels": Operation<"/orgs/{org}/actions/runners/{runner_id}/labels", "get">; + /** + * @see https://docs.github.com/rest/reference/actions#list-organization-secrets + */ + "GET /orgs/{org}/actions/secrets": Operation<"/orgs/{org}/actions/secrets", "get">; + /** + * @see https://docs.github.com/rest/reference/actions#get-an-organization-public-key + */ + "GET /orgs/{org}/actions/secrets/public-key": Operation<"/orgs/{org}/actions/secrets/public-key", "get">; + /** + * @see https://docs.github.com/rest/reference/actions#get-an-organization-secret + */ + "GET /orgs/{org}/actions/secrets/{secret_name}": Operation<"/orgs/{org}/actions/secrets/{secret_name}", "get">; + /** + * @see https://docs.github.com/rest/reference/actions#list-selected-repositories-for-an-organization-secret + */ + "GET /orgs/{org}/actions/secrets/{secret_name}/repositories": Operation<"/orgs/{org}/actions/secrets/{secret_name}/repositories", "get">; + /** + * @see https://docs.github.com/rest/reference/orgs#get-audit-log + */ + "GET /orgs/{org}/audit-log": Operation<"/orgs/{org}/audit-log", "get">; + /** + * @see https://docs.github.com/rest/reference/orgs#list-users-blocked-by-an-organization + */ + "GET /orgs/{org}/blocks": Operation<"/orgs/{org}/blocks", "get">; + /** + * @see https://docs.github.com/rest/reference/orgs#check-if-a-user-is-blocked-by-an-organization + */ + "GET /orgs/{org}/blocks/{username}": Operation<"/orgs/{org}/blocks/{username}", "get">; + /** + * @see https://docs.github.com/rest/reference/code-scanning#list-code-scanning-alerts-by-organization + */ + "GET /orgs/{org}/code-scanning/alerts": Operation<"/orgs/{org}/code-scanning/alerts", "get">; + /** + * @see https://docs.github.com/rest/reference/codespaces#list-in-organization + */ + "GET /orgs/{org}/codespaces": Operation<"/orgs/{org}/codespaces", "get">; + /** + * @see https://docs.github.com/rest/reference/orgs#list-saml-sso-authorizations-for-an-organization + */ + "GET /orgs/{org}/credential-authorizations": Operation<"/orgs/{org}/credential-authorizations", "get">; + /** + * @see https://docs.github.com/rest/reference/dependabot#list-organization-secrets + */ + "GET /orgs/{org}/dependabot/secrets": Operation<"/orgs/{org}/dependabot/secrets", "get">; + /** + * @see https://docs.github.com/rest/reference/dependabot#get-an-organization-public-key + */ + "GET /orgs/{org}/dependabot/secrets/public-key": Operation<"/orgs/{org}/dependabot/secrets/public-key", "get">; + /** + * @see https://docs.github.com/rest/reference/dependabot#get-an-organization-secret + */ + "GET /orgs/{org}/dependabot/secrets/{secret_name}": Operation<"/orgs/{org}/dependabot/secrets/{secret_name}", "get">; + /** + * @see https://docs.github.com/rest/reference/dependabot#list-selected-repositories-for-an-organization-secret + */ + "GET /orgs/{org}/dependabot/secrets/{secret_name}/repositories": Operation<"/orgs/{org}/dependabot/secrets/{secret_name}/repositories", "get">; + /** + * @see https://docs.github.com/rest/reference/activity#list-public-organization-events + */ + "GET /orgs/{org}/events": Operation<"/orgs/{org}/events", "get">; + /** + * @see https://docs.github.com/rest/reference/teams#external-idp-group-info-for-an-organization + */ + "GET /orgs/{org}/external-group/{group_id}": Operation<"/orgs/{org}/external-group/{group_id}", "get">; + /** + * @see https://docs.github.com/rest/reference/teams#list-external-idp-groups-for-an-organization + */ + "GET /orgs/{org}/external-groups": Operation<"/orgs/{org}/external-groups", "get">; + /** + * @see https://docs.github.com/rest/reference/orgs#list-failed-organization-invitations + */ + "GET /orgs/{org}/failed_invitations": Operation<"/orgs/{org}/failed_invitations", "get">; + /** + * @see https://docs.github.com/rest/reference/orgs#list-organization-webhooks + */ + "GET /orgs/{org}/hooks": Operation<"/orgs/{org}/hooks", "get">; + /** + * @see https://docs.github.com/rest/reference/orgs#get-an-organization-webhook + */ + "GET /orgs/{org}/hooks/{hook_id}": Operation<"/orgs/{org}/hooks/{hook_id}", "get">; + /** + * @see https://docs.github.com/rest/reference/orgs#get-a-webhook-configuration-for-an-organization + */ + "GET /orgs/{org}/hooks/{hook_id}/config": Operation<"/orgs/{org}/hooks/{hook_id}/config", "get">; + /** + * @see https://docs.github.com/rest/reference/orgs#list-deliveries-for-an-organization-webhook + */ + "GET /orgs/{org}/hooks/{hook_id}/deliveries": Operation<"/orgs/{org}/hooks/{hook_id}/deliveries", "get">; + /** + * @see https://docs.github.com/rest/reference/orgs#get-a-webhook-delivery-for-an-organization-webhook + */ + "GET /orgs/{org}/hooks/{hook_id}/deliveries/{delivery_id}": Operation<"/orgs/{org}/hooks/{hook_id}/deliveries/{delivery_id}", "get">; + /** + * @see https://docs.github.com/rest/reference/apps#get-an-organization-installation-for-the-authenticated-app + */ + "GET /orgs/{org}/installation": Operation<"/orgs/{org}/installation", "get">; + /** + * @see https://docs.github.com/rest/reference/orgs#list-app-installations-for-an-organization + */ + "GET /orgs/{org}/installations": Operation<"/orgs/{org}/installations", "get">; + /** + * @see https://docs.github.com/rest/reference/interactions#get-interaction-restrictions-for-an-organization + */ + "GET /orgs/{org}/interaction-limits": Operation<"/orgs/{org}/interaction-limits", "get">; + /** + * @see https://docs.github.com/rest/reference/orgs#list-pending-organization-invitations + */ + "GET /orgs/{org}/invitations": Operation<"/orgs/{org}/invitations", "get">; + /** + * @see https://docs.github.com/rest/reference/orgs#list-organization-invitation-teams + */ + "GET /orgs/{org}/invitations/{invitation_id}/teams": Operation<"/orgs/{org}/invitations/{invitation_id}/teams", "get">; + /** + * @see https://docs.github.com/rest/reference/issues#list-organization-issues-assigned-to-the-authenticated-user + */ + "GET /orgs/{org}/issues": Operation<"/orgs/{org}/issues", "get">; + /** + * @see https://docs.github.com/rest/reference/orgs#list-organization-members + */ + "GET /orgs/{org}/members": Operation<"/orgs/{org}/members", "get">; + /** + * @see https://docs.github.com/rest/reference/orgs#check-organization-membership-for-a-user + */ + "GET /orgs/{org}/members/{username}": Operation<"/orgs/{org}/members/{username}", "get">; + /** + * @see https://docs.github.com/rest/reference/orgs#get-organization-membership-for-a-user + */ + "GET /orgs/{org}/memberships/{username}": Operation<"/orgs/{org}/memberships/{username}", "get">; + /** + * @see https://docs.github.com/rest/reference/migrations#list-organization-migrations + */ + "GET /orgs/{org}/migrations": Operation<"/orgs/{org}/migrations", "get">; + /** + * @see https://docs.github.com/rest/reference/migrations#get-an-organization-migration-status + */ + "GET /orgs/{org}/migrations/{migration_id}": Operation<"/orgs/{org}/migrations/{migration_id}", "get">; + /** + * @see https://docs.github.com/rest/reference/migrations#download-an-organization-migration-archive + */ + "GET /orgs/{org}/migrations/{migration_id}/archive": Operation<"/orgs/{org}/migrations/{migration_id}/archive", "get">; + /** + * @see https://docs.github.com/rest/reference/migrations#list-repositories-in-an-organization-migration + */ + "GET /orgs/{org}/migrations/{migration_id}/repositories": Operation<"/orgs/{org}/migrations/{migration_id}/repositories", "get">; + /** + * @see https://docs.github.com/rest/reference/orgs#list-outside-collaborators-for-an-organization + */ + "GET /orgs/{org}/outside_collaborators": Operation<"/orgs/{org}/outside_collaborators", "get">; + /** + * @see https://docs.github.com/rest/reference/packages#list-packages-for-an-organization + */ + "GET /orgs/{org}/packages": Operation<"/orgs/{org}/packages", "get">; + /** + * @see https://docs.github.com/rest/reference/packages#get-a-package-for-an-organization + */ + "GET /orgs/{org}/packages/{package_type}/{package_name}": Operation<"/orgs/{org}/packages/{package_type}/{package_name}", "get">; + /** + * @see https://docs.github.com/rest/reference/packages#get-all-package-versions-for-a-package-owned-by-an-organization + */ + "GET /orgs/{org}/packages/{package_type}/{package_name}/versions": Operation<"/orgs/{org}/packages/{package_type}/{package_name}/versions", "get">; + /** + * @see https://docs.github.com/rest/reference/packages#get-a-package-version-for-an-organization + */ + "GET /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}": Operation<"/orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}", "get">; + /** + * @see https://docs.github.com/rest/reference/projects#list-organization-projects + */ + "GET /orgs/{org}/projects": Operation<"/orgs/{org}/projects", "get">; + /** + * @see https://docs.github.com/rest/reference/orgs#list-public-organization-members + */ + "GET /orgs/{org}/public_members": Operation<"/orgs/{org}/public_members", "get">; + /** + * @see https://docs.github.com/rest/reference/orgs#check-public-organization-membership-for-a-user + */ + "GET /orgs/{org}/public_members/{username}": Operation<"/orgs/{org}/public_members/{username}", "get">; + /** + * @see https://docs.github.com/rest/reference/repos#list-organization-repositories + */ + "GET /orgs/{org}/repos": Operation<"/orgs/{org}/repos", "get">; + /** + * @see https://docs.github.com/rest/reference/secret-scanning#list-secret-scanning-alerts-for-an-organization + */ + "GET /orgs/{org}/secret-scanning/alerts": Operation<"/orgs/{org}/secret-scanning/alerts", "get">; + /** + * @see https://docs.github.com/rest/reference/billing#get-github-actions-billing-for-an-organization + */ + "GET /orgs/{org}/settings/billing/actions": Operation<"/orgs/{org}/settings/billing/actions", "get">; + /** + * @see https://docs.github.com/rest/reference/billing#get-github-advanced-security-active-committers-for-an-organization + */ + "GET /orgs/{org}/settings/billing/advanced-security": Operation<"/orgs/{org}/settings/billing/advanced-security", "get">; + /** + * @see https://docs.github.com/rest/reference/billing#get-github-packages-billing-for-an-organization + */ + "GET /orgs/{org}/settings/billing/packages": Operation<"/orgs/{org}/settings/billing/packages", "get">; + /** + * @see https://docs.github.com/rest/reference/billing#get-shared-storage-billing-for-an-organization + */ + "GET /orgs/{org}/settings/billing/shared-storage": Operation<"/orgs/{org}/settings/billing/shared-storage", "get">; + /** + * @see https://docs.github.com/rest/reference/teams#list-idp-groups-for-an-organization + */ + "GET /orgs/{org}/team-sync/groups": Operation<"/orgs/{org}/team-sync/groups", "get">; + /** + * @see https://docs.github.com/rest/reference/teams#list-teams + */ + "GET /orgs/{org}/teams": Operation<"/orgs/{org}/teams", "get">; + /** + * @see https://docs.github.com/rest/reference/teams#get-a-team-by-name + */ + "GET /orgs/{org}/teams/{team_slug}": Operation<"/orgs/{org}/teams/{team_slug}", "get">; + /** + * @see https://docs.github.com/rest/reference/teams#list-discussions + */ + "GET /orgs/{org}/teams/{team_slug}/discussions": Operation<"/orgs/{org}/teams/{team_slug}/discussions", "get">; + /** + * @see https://docs.github.com/rest/reference/teams#get-a-discussion + */ + "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}": Operation<"/orgs/{org}/teams/{team_slug}/discussions/{discussion_number}", "get">; + /** + * @see https://docs.github.com/rest/reference/teams#list-discussion-comments + */ + "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments": Operation<"/orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments", "get">; + /** + * @see https://docs.github.com/rest/reference/teams#get-a-discussion-comment + */ + "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}": Operation<"/orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}", "get">; + /** + * @see https://docs.github.com/rest/reference/reactions#list-reactions-for-a-team-discussion-comment + */ + "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions": Operation<"/orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions", "get">; + /** + * @see https://docs.github.com/rest/reference/reactions#list-reactions-for-a-team-discussion + */ + "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions": Operation<"/orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions", "get">; + /** + * @see https://docs.github.com/rest/reference/teams#list-external-idp-group-team-connection + */ + "GET /orgs/{org}/teams/{team_slug}/external-groups": Operation<"/orgs/{org}/teams/{team_slug}/external-groups", "get">; + /** + * @see https://docs.github.com/rest/reference/teams#list-pending-team-invitations + */ + "GET /orgs/{org}/teams/{team_slug}/invitations": Operation<"/orgs/{org}/teams/{team_slug}/invitations", "get">; + /** + * @see https://docs.github.com/rest/reference/teams#list-team-members + */ + "GET /orgs/{org}/teams/{team_slug}/members": Operation<"/orgs/{org}/teams/{team_slug}/members", "get">; + /** + * @see https://docs.github.com/rest/reference/teams#get-team-membership-for-a-user + */ + "GET /orgs/{org}/teams/{team_slug}/memberships/{username}": Operation<"/orgs/{org}/teams/{team_slug}/memberships/{username}", "get">; + /** + * @see https://docs.github.com/rest/reference/teams#list-team-projects + */ + "GET /orgs/{org}/teams/{team_slug}/projects": Operation<"/orgs/{org}/teams/{team_slug}/projects", "get">; + /** + * @see https://docs.github.com/rest/reference/teams#check-team-permissions-for-a-project + */ + "GET /orgs/{org}/teams/{team_slug}/projects/{project_id}": Operation<"/orgs/{org}/teams/{team_slug}/projects/{project_id}", "get">; + /** + * @see https://docs.github.com/rest/reference/teams#list-team-repositories + */ + "GET /orgs/{org}/teams/{team_slug}/repos": Operation<"/orgs/{org}/teams/{team_slug}/repos", "get">; + /** + * @see https://docs.github.com/rest/reference/teams/#check-team-permissions-for-a-repository + */ + "GET /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}": Operation<"/orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}", "get">; + /** + * @see https://docs.github.com/rest/reference/teams#list-idp-groups-for-a-team + */ + "GET /orgs/{org}/teams/{team_slug}/team-sync/group-mappings": Operation<"/orgs/{org}/teams/{team_slug}/team-sync/group-mappings", "get">; + /** + * @see https://docs.github.com/rest/reference/teams#list-child-teams + */ + "GET /orgs/{org}/teams/{team_slug}/teams": Operation<"/orgs/{org}/teams/{team_slug}/teams", "get">; + /** + * @see https://docs.github.com/rest/reference/projects#get-a-project-card + */ + "GET /projects/columns/cards/{card_id}": Operation<"/projects/columns/cards/{card_id}", "get">; + /** + * @see https://docs.github.com/rest/reference/projects#get-a-project-column + */ + "GET /projects/columns/{column_id}": Operation<"/projects/columns/{column_id}", "get">; + /** + * @see https://docs.github.com/rest/reference/projects#list-project-cards + */ + "GET /projects/columns/{column_id}/cards": Operation<"/projects/columns/{column_id}/cards", "get">; + /** + * @see https://docs.github.com/rest/reference/projects#get-a-project + */ + "GET /projects/{project_id}": Operation<"/projects/{project_id}", "get">; + /** + * @see https://docs.github.com/rest/reference/projects#list-project-collaborators + */ + "GET /projects/{project_id}/collaborators": Operation<"/projects/{project_id}/collaborators", "get">; + /** + * @see https://docs.github.com/rest/reference/projects#get-project-permission-for-a-user + */ + "GET /projects/{project_id}/collaborators/{username}/permission": Operation<"/projects/{project_id}/collaborators/{username}/permission", "get">; + /** + * @see https://docs.github.com/rest/reference/projects#list-project-columns + */ + "GET /projects/{project_id}/columns": Operation<"/projects/{project_id}/columns", "get">; + /** + * @see https://docs.github.com/rest/reference/rate-limit#get-rate-limit-status-for-the-authenticated-user + */ + "GET /rate_limit": Operation<"/rate_limit", "get">; + /** + * @see https://docs.github.com/rest/reference/repos#get-a-repository + */ + "GET /repos/{owner}/{repo}": Operation<"/repos/{owner}/{repo}", "get">; + /** + * @see https://docs.github.com/rest/reference/actions#list-artifacts-for-a-repository + */ + "GET /repos/{owner}/{repo}/actions/artifacts": Operation<"/repos/{owner}/{repo}/actions/artifacts", "get">; + /** + * @see https://docs.github.com/rest/reference/actions#get-an-artifact + */ + "GET /repos/{owner}/{repo}/actions/artifacts/{artifact_id}": Operation<"/repos/{owner}/{repo}/actions/artifacts/{artifact_id}", "get">; + /** + * @see https://docs.github.com/rest/reference/actions#download-an-artifact + */ + "GET /repos/{owner}/{repo}/actions/artifacts/{artifact_id}/{archive_format}": Operation<"/repos/{owner}/{repo}/actions/artifacts/{artifact_id}/{archive_format}", "get">; + /** + * @see https://docs.github.com/rest/reference/actions#get-github-actions-cache-usage-for-a-repository + */ + "GET /repos/{owner}/{repo}/actions/cache/usage": Operation<"/repos/{owner}/{repo}/actions/cache/usage", "get">; + /** + * @see https://docs.github.com/rest/actions/cache#list-github-actions-caches-for-a-repository + */ + "GET /repos/{owner}/{repo}/actions/caches": Operation<"/repos/{owner}/{repo}/actions/caches", "get">; + /** + * @see https://docs.github.com/rest/reference/actions#get-a-job-for-a-workflow-run + */ + "GET /repos/{owner}/{repo}/actions/jobs/{job_id}": Operation<"/repos/{owner}/{repo}/actions/jobs/{job_id}", "get">; + /** + * @see https://docs.github.com/rest/reference/actions#download-job-logs-for-a-workflow-run + */ + "GET /repos/{owner}/{repo}/actions/jobs/{job_id}/logs": Operation<"/repos/{owner}/{repo}/actions/jobs/{job_id}/logs", "get">; + /** + * @see https://docs.github.com/rest/actions/oidc#get-the-opt-out-flag-of-an-oidc-subject-claim-customization-for-a-repository + */ + "GET /repos/{owner}/{repo}/actions/oidc/customization/sub": Operation<"/repos/{owner}/{repo}/actions/oidc/customization/sub", "get">; + /** + * @see https://docs.github.com/rest/reference/actions#get-github-actions-permissions-for-a-repository + */ + "GET /repos/{owner}/{repo}/actions/permissions": Operation<"/repos/{owner}/{repo}/actions/permissions", "get">; + /** + * @see https://docs.github.com/rest/reference/actions#get-workflow-access-level-to-a-repository + */ + "GET /repos/{owner}/{repo}/actions/permissions/access": Operation<"/repos/{owner}/{repo}/actions/permissions/access", "get">; + /** + * @see https://docs.github.com/rest/reference/actions#get-allowed-actions-for-a-repository + */ + "GET /repos/{owner}/{repo}/actions/permissions/selected-actions": Operation<"/repos/{owner}/{repo}/actions/permissions/selected-actions", "get">; + /** + * @see https://docs.github.com/rest/reference/actions#get-default-workflow-permissions-for-a-repository + */ + "GET /repos/{owner}/{repo}/actions/permissions/workflow": Operation<"/repos/{owner}/{repo}/actions/permissions/workflow", "get">; + /** + * @see https://docs.github.com/rest/reference/actions#list-self-hosted-runners-for-a-repository + */ + "GET /repos/{owner}/{repo}/actions/runners": Operation<"/repos/{owner}/{repo}/actions/runners", "get">; + /** + * @see https://docs.github.com/rest/reference/actions#list-runner-applications-for-a-repository + */ + "GET /repos/{owner}/{repo}/actions/runners/downloads": Operation<"/repos/{owner}/{repo}/actions/runners/downloads", "get">; + /** + * @see https://docs.github.com/rest/reference/actions#get-a-self-hosted-runner-for-a-repository + */ + "GET /repos/{owner}/{repo}/actions/runners/{runner_id}": Operation<"/repos/{owner}/{repo}/actions/runners/{runner_id}", "get">; + /** + * @see https://docs.github.com/rest/reference/actions#list-labels-for-a-self-hosted-runner-for-a-repository + */ + "GET /repos/{owner}/{repo}/actions/runners/{runner_id}/labels": Operation<"/repos/{owner}/{repo}/actions/runners/{runner_id}/labels", "get">; + /** + * @see https://docs.github.com/rest/reference/actions#list-workflow-runs-for-a-repository + */ + "GET /repos/{owner}/{repo}/actions/runs": Operation<"/repos/{owner}/{repo}/actions/runs", "get">; + /** + * @see https://docs.github.com/rest/reference/actions#get-a-workflow-run + */ + "GET /repos/{owner}/{repo}/actions/runs/{run_id}": Operation<"/repos/{owner}/{repo}/actions/runs/{run_id}", "get">; + /** + * @see https://docs.github.com/rest/reference/actions#get-the-review-history-for-a-workflow-run + */ + "GET /repos/{owner}/{repo}/actions/runs/{run_id}/approvals": Operation<"/repos/{owner}/{repo}/actions/runs/{run_id}/approvals", "get">; + /** + * @see https://docs.github.com/rest/reference/actions#list-workflow-run-artifacts + */ + "GET /repos/{owner}/{repo}/actions/runs/{run_id}/artifacts": Operation<"/repos/{owner}/{repo}/actions/runs/{run_id}/artifacts", "get">; + /** + * @see https://docs.github.com/rest/reference/actions#get-a-workflow-run-attempt + */ + "GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}": Operation<"/repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}", "get">; + /** + * @see https://docs.github.com/rest/reference/actions#list-jobs-for-a-workflow-run-attempt + */ + "GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/jobs": Operation<"/repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/jobs", "get">; + /** + * @see https://docs.github.com/rest/reference/actions#download-workflow-run-attempt-logs + */ + "GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/logs": Operation<"/repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/logs", "get">; + /** + * @see https://docs.github.com/rest/reference/actions#list-jobs-for-a-workflow-run + */ + "GET /repos/{owner}/{repo}/actions/runs/{run_id}/jobs": Operation<"/repos/{owner}/{repo}/actions/runs/{run_id}/jobs", "get">; + /** + * @see https://docs.github.com/rest/reference/actions#download-workflow-run-logs + */ + "GET /repos/{owner}/{repo}/actions/runs/{run_id}/logs": Operation<"/repos/{owner}/{repo}/actions/runs/{run_id}/logs", "get">; + /** + * @see https://docs.github.com/rest/reference/actions#get-pending-deployments-for-a-workflow-run + */ + "GET /repos/{owner}/{repo}/actions/runs/{run_id}/pending_deployments": Operation<"/repos/{owner}/{repo}/actions/runs/{run_id}/pending_deployments", "get">; + /** + * @see https://docs.github.com/rest/reference/actions#get-workflow-run-usage + */ + "GET /repos/{owner}/{repo}/actions/runs/{run_id}/timing": Operation<"/repos/{owner}/{repo}/actions/runs/{run_id}/timing", "get">; + /** + * @see https://docs.github.com/rest/reference/actions#list-repository-secrets + */ + "GET /repos/{owner}/{repo}/actions/secrets": Operation<"/repos/{owner}/{repo}/actions/secrets", "get">; + /** + * @see https://docs.github.com/rest/reference/actions#get-a-repository-public-key + */ + "GET /repos/{owner}/{repo}/actions/secrets/public-key": Operation<"/repos/{owner}/{repo}/actions/secrets/public-key", "get">; + /** + * @see https://docs.github.com/rest/reference/actions#get-a-repository-secret + */ + "GET /repos/{owner}/{repo}/actions/secrets/{secret_name}": Operation<"/repos/{owner}/{repo}/actions/secrets/{secret_name}", "get">; + /** + * @see https://docs.github.com/rest/reference/actions#list-repository-workflows + */ + "GET /repos/{owner}/{repo}/actions/workflows": Operation<"/repos/{owner}/{repo}/actions/workflows", "get">; + /** + * @see https://docs.github.com/rest/reference/actions#get-a-workflow + */ + "GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}": Operation<"/repos/{owner}/{repo}/actions/workflows/{workflow_id}", "get">; + /** + * @see https://docs.github.com/rest/reference/actions#list-workflow-runs + */ + "GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/runs": Operation<"/repos/{owner}/{repo}/actions/workflows/{workflow_id}/runs", "get">; + /** + * @see https://docs.github.com/rest/reference/actions#get-workflow-usage + */ + "GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/timing": Operation<"/repos/{owner}/{repo}/actions/workflows/{workflow_id}/timing", "get">; + /** + * @see https://docs.github.com/rest/reference/issues#list-assignees + */ + "GET /repos/{owner}/{repo}/assignees": Operation<"/repos/{owner}/{repo}/assignees", "get">; + /** + * @see https://docs.github.com/rest/reference/issues#check-if-a-user-can-be-assigned + */ + "GET /repos/{owner}/{repo}/assignees/{assignee}": Operation<"/repos/{owner}/{repo}/assignees/{assignee}", "get">; + /** + * @see https://docs.github.com/v3/repos#list-autolinks + */ + "GET /repos/{owner}/{repo}/autolinks": Operation<"/repos/{owner}/{repo}/autolinks", "get">; + /** + * @see https://docs.github.com/v3/repos#get-autolink + */ + "GET /repos/{owner}/{repo}/autolinks/{autolink_id}": Operation<"/repos/{owner}/{repo}/autolinks/{autolink_id}", "get">; + /** + * @see https://docs.github.com/rest/reference/repos#list-branches + */ + "GET /repos/{owner}/{repo}/branches": Operation<"/repos/{owner}/{repo}/branches", "get">; + /** + * @see https://docs.github.com/rest/reference/repos#get-a-branch + */ + "GET /repos/{owner}/{repo}/branches/{branch}": Operation<"/repos/{owner}/{repo}/branches/{branch}", "get">; + /** + * @see https://docs.github.com/rest/reference/repos#get-branch-protection + */ + "GET /repos/{owner}/{repo}/branches/{branch}/protection": Operation<"/repos/{owner}/{repo}/branches/{branch}/protection", "get">; + /** + * @see https://docs.github.com/rest/reference/repos#get-admin-branch-protection + */ + "GET /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins": Operation<"/repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins", "get">; + /** + * @see https://docs.github.com/rest/reference/repos#get-pull-request-review-protection + */ + "GET /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews": Operation<"/repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews", "get">; + /** + * @see https://docs.github.com/rest/reference/repos#get-commit-signature-protection + */ + "GET /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures": Operation<"/repos/{owner}/{repo}/branches/{branch}/protection/required_signatures", "get">; + /** + * @see https://docs.github.com/rest/reference/repos#get-status-checks-protection + */ + "GET /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks": Operation<"/repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks", "get">; + /** + * @see https://docs.github.com/rest/reference/repos#get-all-status-check-contexts + */ + "GET /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts": Operation<"/repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts", "get">; + /** + * @see https://docs.github.com/rest/reference/repos#get-access-restrictions + */ + "GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions": Operation<"/repos/{owner}/{repo}/branches/{branch}/protection/restrictions", "get">; + /** + * @see https://docs.github.com/rest/reference/repos#list-apps-with-access-to-the-protected-branch + */ + "GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps": Operation<"/repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps", "get">; + /** + * @see https://docs.github.com/rest/reference/repos#list-teams-with-access-to-the-protected-branch + */ + "GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams": Operation<"/repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams", "get">; + /** + * @see https://docs.github.com/rest/reference/repos#list-users-with-access-to-the-protected-branch + */ + "GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users": Operation<"/repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users", "get">; + /** + * @see https://docs.github.com/rest/reference/checks#get-a-check-run + */ + "GET /repos/{owner}/{repo}/check-runs/{check_run_id}": Operation<"/repos/{owner}/{repo}/check-runs/{check_run_id}", "get">; + /** + * @see https://docs.github.com/rest/reference/checks#list-check-run-annotations + */ + "GET /repos/{owner}/{repo}/check-runs/{check_run_id}/annotations": Operation<"/repos/{owner}/{repo}/check-runs/{check_run_id}/annotations", "get">; + /** + * @see https://docs.github.com/rest/reference/checks#get-a-check-suite + */ + "GET /repos/{owner}/{repo}/check-suites/{check_suite_id}": Operation<"/repos/{owner}/{repo}/check-suites/{check_suite_id}", "get">; + /** + * @see https://docs.github.com/rest/reference/checks#list-check-runs-in-a-check-suite + */ + "GET /repos/{owner}/{repo}/check-suites/{check_suite_id}/check-runs": Operation<"/repos/{owner}/{repo}/check-suites/{check_suite_id}/check-runs", "get">; + /** + * @see https://docs.github.com/rest/reference/code-scanning#list-code-scanning-alerts-for-a-repository + */ + "GET /repos/{owner}/{repo}/code-scanning/alerts": Operation<"/repos/{owner}/{repo}/code-scanning/alerts", "get">; + /** + * @see https://docs.github.com/rest/reference/code-scanning#get-a-code-scanning-alert + * @deprecated "alert_id" is now "alert_number" + */ + "GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_id}": Operation<"/repos/{owner}/{repo}/code-scanning/alerts/{alert_number}", "get">; + /** + * @see https://docs.github.com/rest/reference/code-scanning#get-a-code-scanning-alert + */ + "GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}": Operation<"/repos/{owner}/{repo}/code-scanning/alerts/{alert_number}", "get">; + /** + * @see https://docs.github.com/rest/reference/code-scanning#list-instances-of-a-code-scanning-alert + */ + "GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances": Operation<"/repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances", "get">; + /** + * @see https://docs.github.com/rest/reference/code-scanning#list-code-scanning-analyses-for-a-repository + */ + "GET /repos/{owner}/{repo}/code-scanning/analyses": Operation<"/repos/{owner}/{repo}/code-scanning/analyses", "get">; + /** + * @see https://docs.github.com/rest/reference/code-scanning#get-a-code-scanning-analysis-for-a-repository + */ + "GET /repos/{owner}/{repo}/code-scanning/analyses/{analysis_id}": Operation<"/repos/{owner}/{repo}/code-scanning/analyses/{analysis_id}", "get">; + /** + * @see https://docs.github.com/rest/reference/code-scanning#list-recent-code-scanning-analyses-for-a-repository + */ + "GET /repos/{owner}/{repo}/code-scanning/sarifs/{sarif_id}": Operation<"/repos/{owner}/{repo}/code-scanning/sarifs/{sarif_id}", "get">; + /** + * @see https://docs.github.com/rest/reference/repos#list-codeowners-errors + */ + "GET /repos/{owner}/{repo}/codeowners/errors": Operation<"/repos/{owner}/{repo}/codeowners/errors", "get">; + /** + * @see https://docs.github.com/rest/reference/codespaces#list-codespaces-in-a-repository-for-the-authenticated-user + */ + "GET /repos/{owner}/{repo}/codespaces": Operation<"/repos/{owner}/{repo}/codespaces", "get">; + /** + * @see https://docs.github.com/rest/reference/codespaces#list-devcontainers-in-a-repository-for-the-authenticated-user + */ + "GET /repos/{owner}/{repo}/codespaces/devcontainers": Operation<"/repos/{owner}/{repo}/codespaces/devcontainers", "get">; + /** + * @see https://docs.github.com/rest/reference/codespaces#list-available-machine-types-for-a-repository + */ + "GET /repos/{owner}/{repo}/codespaces/machines": Operation<"/repos/{owner}/{repo}/codespaces/machines", "get">; + /** + * @see https://docs.github.com/rest/reference/codespaces#preview-attributes-for-a-new-codespace + */ + "GET /repos/{owner}/{repo}/codespaces/new": Operation<"/repos/{owner}/{repo}/codespaces/new", "get">; + /** + * @see https://docs.github.com/rest/reference/codespaces#list-repository-secrets + */ + "GET /repos/{owner}/{repo}/codespaces/secrets": Operation<"/repos/{owner}/{repo}/codespaces/secrets", "get">; + /** + * @see https://docs.github.com/rest/reference/codespaces#get-a-repository-public-key + */ + "GET /repos/{owner}/{repo}/codespaces/secrets/public-key": Operation<"/repos/{owner}/{repo}/codespaces/secrets/public-key", "get">; + /** + * @see https://docs.github.com/rest/reference/codespaces#get-a-repository-secret + */ + "GET /repos/{owner}/{repo}/codespaces/secrets/{secret_name}": Operation<"/repos/{owner}/{repo}/codespaces/secrets/{secret_name}", "get">; + /** + * @see https://docs.github.com/rest/reference/repos#list-repository-collaborators + */ + "GET /repos/{owner}/{repo}/collaborators": Operation<"/repos/{owner}/{repo}/collaborators", "get">; + /** + * @see https://docs.github.com/rest/reference/repos#check-if-a-user-is-a-repository-collaborator + */ + "GET /repos/{owner}/{repo}/collaborators/{username}": Operation<"/repos/{owner}/{repo}/collaborators/{username}", "get">; + /** + * @see https://docs.github.com/rest/reference/repos#get-repository-permissions-for-a-user + */ + "GET /repos/{owner}/{repo}/collaborators/{username}/permission": Operation<"/repos/{owner}/{repo}/collaborators/{username}/permission", "get">; + /** + * @see https://docs.github.com/rest/reference/repos#list-commit-comments-for-a-repository + */ + "GET /repos/{owner}/{repo}/comments": Operation<"/repos/{owner}/{repo}/comments", "get">; + /** + * @see https://docs.github.com/rest/reference/repos#get-a-commit-comment + */ + "GET /repos/{owner}/{repo}/comments/{comment_id}": Operation<"/repos/{owner}/{repo}/comments/{comment_id}", "get">; + /** + * @see https://docs.github.com/rest/reference/reactions#list-reactions-for-a-commit-comment + */ + "GET /repos/{owner}/{repo}/comments/{comment_id}/reactions": Operation<"/repos/{owner}/{repo}/comments/{comment_id}/reactions", "get">; + /** + * @see https://docs.github.com/rest/reference/repos#list-commits + */ + "GET /repos/{owner}/{repo}/commits": Operation<"/repos/{owner}/{repo}/commits", "get">; + /** + * @see https://docs.github.com/rest/reference/repos#list-branches-for-head-commit + */ + "GET /repos/{owner}/{repo}/commits/{commit_sha}/branches-where-head": Operation<"/repos/{owner}/{repo}/commits/{commit_sha}/branches-where-head", "get">; + /** + * @see https://docs.github.com/rest/reference/repos#list-commit-comments + */ + "GET /repos/{owner}/{repo}/commits/{commit_sha}/comments": Operation<"/repos/{owner}/{repo}/commits/{commit_sha}/comments", "get">; + /** + * @see https://docs.github.com/rest/reference/repos#list-pull-requests-associated-with-a-commit + */ + "GET /repos/{owner}/{repo}/commits/{commit_sha}/pulls": Operation<"/repos/{owner}/{repo}/commits/{commit_sha}/pulls", "get">; + /** + * @see https://docs.github.com/rest/reference/repos#get-a-commit + */ + "GET /repos/{owner}/{repo}/commits/{ref}": Operation<"/repos/{owner}/{repo}/commits/{ref}", "get">; + /** + * @see https://docs.github.com/rest/reference/checks#list-check-runs-for-a-git-reference + */ + "GET /repos/{owner}/{repo}/commits/{ref}/check-runs": Operation<"/repos/{owner}/{repo}/commits/{ref}/check-runs", "get">; + /** + * @see https://docs.github.com/rest/reference/checks#list-check-suites-for-a-git-reference + */ + "GET /repos/{owner}/{repo}/commits/{ref}/check-suites": Operation<"/repos/{owner}/{repo}/commits/{ref}/check-suites", "get">; + /** + * @see https://docs.github.com/rest/reference/repos#get-the-combined-status-for-a-specific-reference + */ + "GET /repos/{owner}/{repo}/commits/{ref}/status": Operation<"/repos/{owner}/{repo}/commits/{ref}/status", "get">; + /** + * @see https://docs.github.com/rest/reference/repos#list-commit-statuses-for-a-reference + */ + "GET /repos/{owner}/{repo}/commits/{ref}/statuses": Operation<"/repos/{owner}/{repo}/commits/{ref}/statuses", "get">; + /** + * @see https://docs.github.com/rest/reference/repos#get-community-profile-metrics + */ + "GET /repos/{owner}/{repo}/community/profile": Operation<"/repos/{owner}/{repo}/community/profile", "get">; + /** + * @see https://docs.github.com/rest/reference/repos#compare-two-commits + */ + "GET /repos/{owner}/{repo}/compare/{basehead}": Operation<"/repos/{owner}/{repo}/compare/{basehead}", "get">; + /** + * @see https://docs.github.com/rest/reference/repos#compare-two-commits + */ + "GET /repos/{owner}/{repo}/compare/{base}...{head}": Operation<"/repos/{owner}/{repo}/compare/{base}...{head}", "get">; + /** + * @see https://docs.github.com/rest/reference/repos#get-repository-content + */ + "GET /repos/{owner}/{repo}/contents/{path}": Operation<"/repos/{owner}/{repo}/contents/{path}", "get">; + /** + * @see https://docs.github.com/rest/reference/repos#list-repository-contributors + */ + "GET /repos/{owner}/{repo}/contributors": Operation<"/repos/{owner}/{repo}/contributors", "get">; + /** + * @see https://docs.github.com/rest/reference/dependabot#list-repository-secrets + */ + "GET /repos/{owner}/{repo}/dependabot/secrets": Operation<"/repos/{owner}/{repo}/dependabot/secrets", "get">; + /** + * @see https://docs.github.com/rest/reference/dependabot#get-a-repository-public-key + */ + "GET /repos/{owner}/{repo}/dependabot/secrets/public-key": Operation<"/repos/{owner}/{repo}/dependabot/secrets/public-key", "get">; + /** + * @see https://docs.github.com/rest/reference/dependabot#get-a-repository-secret + */ + "GET /repos/{owner}/{repo}/dependabot/secrets/{secret_name}": Operation<"/repos/{owner}/{repo}/dependabot/secrets/{secret_name}", "get">; + /** + * @see https://docs.github.com/rest/reference/dependency-graph#get-a-diff-of-the-dependencies-between-commits + */ + "GET /repos/{owner}/{repo}/dependency-graph/compare/{basehead}": Operation<"/repos/{owner}/{repo}/dependency-graph/compare/{basehead}", "get">; + /** + * @see https://docs.github.com/rest/reference/repos#list-deployments + */ + "GET /repos/{owner}/{repo}/deployments": Operation<"/repos/{owner}/{repo}/deployments", "get">; + /** + * @see https://docs.github.com/rest/reference/repos#get-a-deployment + */ + "GET /repos/{owner}/{repo}/deployments/{deployment_id}": Operation<"/repos/{owner}/{repo}/deployments/{deployment_id}", "get">; + /** + * @see https://docs.github.com/rest/reference/repos#list-deployment-statuses + */ + "GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses": Operation<"/repos/{owner}/{repo}/deployments/{deployment_id}/statuses", "get">; + /** + * @see https://docs.github.com/rest/reference/repos#get-a-deployment-status + */ + "GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses/{status_id}": Operation<"/repos/{owner}/{repo}/deployments/{deployment_id}/statuses/{status_id}", "get">; + /** + * @see https://docs.github.com/rest/reference/repos#get-all-environments + */ + "GET /repos/{owner}/{repo}/environments": Operation<"/repos/{owner}/{repo}/environments", "get">; + /** + * @see https://docs.github.com/rest/reference/repos#get-an-environment + */ + "GET /repos/{owner}/{repo}/environments/{environment_name}": Operation<"/repos/{owner}/{repo}/environments/{environment_name}", "get">; + /** + * @see https://docs.github.com/rest/reference/activity#list-repository-events + */ + "GET /repos/{owner}/{repo}/events": Operation<"/repos/{owner}/{repo}/events", "get">; + /** + * @see https://docs.github.com/rest/reference/repos#list-forks + */ + "GET /repos/{owner}/{repo}/forks": Operation<"/repos/{owner}/{repo}/forks", "get">; + /** + * @see https://docs.github.com/rest/reference/git#get-a-blob + */ + "GET /repos/{owner}/{repo}/git/blobs/{file_sha}": Operation<"/repos/{owner}/{repo}/git/blobs/{file_sha}", "get">; + /** + * @see https://docs.github.com/rest/reference/git#get-a-commit + */ + "GET /repos/{owner}/{repo}/git/commits/{commit_sha}": Operation<"/repos/{owner}/{repo}/git/commits/{commit_sha}", "get">; + /** + * @see https://docs.github.com/rest/reference/git#list-matching-references + */ + "GET /repos/{owner}/{repo}/git/matching-refs/{ref}": Operation<"/repos/{owner}/{repo}/git/matching-refs/{ref}", "get">; + /** + * @see https://docs.github.com/rest/reference/git#get-a-reference + */ + "GET /repos/{owner}/{repo}/git/ref/{ref}": Operation<"/repos/{owner}/{repo}/git/ref/{ref}", "get">; + /** + * @see https://docs.github.com/rest/reference/git#get-a-tag + */ + "GET /repos/{owner}/{repo}/git/tags/{tag_sha}": Operation<"/repos/{owner}/{repo}/git/tags/{tag_sha}", "get">; + /** + * @see https://docs.github.com/rest/reference/git#get-a-tree + */ + "GET /repos/{owner}/{repo}/git/trees/{tree_sha}": Operation<"/repos/{owner}/{repo}/git/trees/{tree_sha}", "get">; + /** + * @see https://docs.github.com/rest/reference/repos#list-repository-webhooks + */ + "GET /repos/{owner}/{repo}/hooks": Operation<"/repos/{owner}/{repo}/hooks", "get">; + /** + * @see https://docs.github.com/rest/reference/repos#get-a-repository-webhook + */ + "GET /repos/{owner}/{repo}/hooks/{hook_id}": Operation<"/repos/{owner}/{repo}/hooks/{hook_id}", "get">; + /** + * @see https://docs.github.com/rest/reference/repos#get-a-webhook-configuration-for-a-repository + */ + "GET /repos/{owner}/{repo}/hooks/{hook_id}/config": Operation<"/repos/{owner}/{repo}/hooks/{hook_id}/config", "get">; + /** + * @see https://docs.github.com/rest/reference/repos#list-deliveries-for-a-repository-webhook + */ + "GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries": Operation<"/repos/{owner}/{repo}/hooks/{hook_id}/deliveries", "get">; + /** + * @see https://docs.github.com/rest/reference/repos#get-a-delivery-for-a-repository-webhook + */ + "GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries/{delivery_id}": Operation<"/repos/{owner}/{repo}/hooks/{hook_id}/deliveries/{delivery_id}", "get">; + /** + * @see https://docs.github.com/rest/reference/migrations#get-an-import-status + */ + "GET /repos/{owner}/{repo}/import": Operation<"/repos/{owner}/{repo}/import", "get">; + /** + * @see https://docs.github.com/rest/reference/migrations#get-commit-authors + */ + "GET /repos/{owner}/{repo}/import/authors": Operation<"/repos/{owner}/{repo}/import/authors", "get">; + /** + * @see https://docs.github.com/rest/reference/migrations#get-large-files + */ + "GET /repos/{owner}/{repo}/import/large_files": Operation<"/repos/{owner}/{repo}/import/large_files", "get">; + /** + * @see https://docs.github.com/rest/reference/apps#get-a-repository-installation-for-the-authenticated-app + */ + "GET /repos/{owner}/{repo}/installation": Operation<"/repos/{owner}/{repo}/installation", "get">; + /** + * @see https://docs.github.com/rest/reference/interactions#get-interaction-restrictions-for-a-repository + */ + "GET /repos/{owner}/{repo}/interaction-limits": Operation<"/repos/{owner}/{repo}/interaction-limits", "get">; + /** + * @see https://docs.github.com/rest/reference/repos#list-repository-invitations + */ + "GET /repos/{owner}/{repo}/invitations": Operation<"/repos/{owner}/{repo}/invitations", "get">; + /** + * @see https://docs.github.com/rest/reference/issues#list-repository-issues + */ + "GET /repos/{owner}/{repo}/issues": Operation<"/repos/{owner}/{repo}/issues", "get">; + /** + * @see https://docs.github.com/rest/reference/issues#list-issue-comments-for-a-repository + */ + "GET /repos/{owner}/{repo}/issues/comments": Operation<"/repos/{owner}/{repo}/issues/comments", "get">; + /** + * @see https://docs.github.com/rest/reference/issues#get-an-issue-comment + */ + "GET /repos/{owner}/{repo}/issues/comments/{comment_id}": Operation<"/repos/{owner}/{repo}/issues/comments/{comment_id}", "get">; + /** + * @see https://docs.github.com/rest/reference/reactions#list-reactions-for-an-issue-comment + */ + "GET /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions": Operation<"/repos/{owner}/{repo}/issues/comments/{comment_id}/reactions", "get">; + /** + * @see https://docs.github.com/rest/reference/issues#list-issue-events-for-a-repository + */ + "GET /repos/{owner}/{repo}/issues/events": Operation<"/repos/{owner}/{repo}/issues/events", "get">; + /** + * @see https://docs.github.com/rest/reference/issues#get-an-issue-event + */ + "GET /repos/{owner}/{repo}/issues/events/{event_id}": Operation<"/repos/{owner}/{repo}/issues/events/{event_id}", "get">; + /** + * @see https://docs.github.com/rest/reference/issues#get-an-issue + */ + "GET /repos/{owner}/{repo}/issues/{issue_number}": Operation<"/repos/{owner}/{repo}/issues/{issue_number}", "get">; + /** + * @see https://docs.github.com/rest/reference/issues#list-issue-comments + */ + "GET /repos/{owner}/{repo}/issues/{issue_number}/comments": Operation<"/repos/{owner}/{repo}/issues/{issue_number}/comments", "get">; + /** + * @see https://docs.github.com/rest/reference/issues#list-issue-events + */ + "GET /repos/{owner}/{repo}/issues/{issue_number}/events": Operation<"/repos/{owner}/{repo}/issues/{issue_number}/events", "get">; + /** + * @see https://docs.github.com/rest/reference/issues#list-labels-for-an-issue + */ + "GET /repos/{owner}/{repo}/issues/{issue_number}/labels": Operation<"/repos/{owner}/{repo}/issues/{issue_number}/labels", "get">; + /** + * @see https://docs.github.com/rest/reference/reactions#list-reactions-for-an-issue + */ + "GET /repos/{owner}/{repo}/issues/{issue_number}/reactions": Operation<"/repos/{owner}/{repo}/issues/{issue_number}/reactions", "get">; + /** + * @see https://docs.github.com/rest/reference/issues#list-timeline-events-for-an-issue + */ + "GET /repos/{owner}/{repo}/issues/{issue_number}/timeline": Operation<"/repos/{owner}/{repo}/issues/{issue_number}/timeline", "get">; + /** + * @see https://docs.github.com/rest/reference/repos#list-deploy-keys + */ + "GET /repos/{owner}/{repo}/keys": Operation<"/repos/{owner}/{repo}/keys", "get">; + /** + * @see https://docs.github.com/rest/reference/repos#get-a-deploy-key + */ + "GET /repos/{owner}/{repo}/keys/{key_id}": Operation<"/repos/{owner}/{repo}/keys/{key_id}", "get">; + /** + * @see https://docs.github.com/rest/reference/issues#list-labels-for-a-repository + */ + "GET /repos/{owner}/{repo}/labels": Operation<"/repos/{owner}/{repo}/labels", "get">; + /** + * @see https://docs.github.com/rest/reference/issues#get-a-label + */ + "GET /repos/{owner}/{repo}/labels/{name}": Operation<"/repos/{owner}/{repo}/labels/{name}", "get">; + /** + * @see https://docs.github.com/rest/reference/repos#list-repository-languages + */ + "GET /repos/{owner}/{repo}/languages": Operation<"/repos/{owner}/{repo}/languages", "get">; + /** + * @see https://docs.github.com/rest/reference/licenses/#get-the-license-for-a-repository + */ + "GET /repos/{owner}/{repo}/license": Operation<"/repos/{owner}/{repo}/license", "get">; + /** + * @see https://docs.github.com/rest/reference/issues#list-milestones + */ + "GET /repos/{owner}/{repo}/milestones": Operation<"/repos/{owner}/{repo}/milestones", "get">; + /** + * @see https://docs.github.com/rest/reference/issues#get-a-milestone + */ + "GET /repos/{owner}/{repo}/milestones/{milestone_number}": Operation<"/repos/{owner}/{repo}/milestones/{milestone_number}", "get">; + /** + * @see https://docs.github.com/rest/reference/issues#list-labels-for-issues-in-a-milestone + */ + "GET /repos/{owner}/{repo}/milestones/{milestone_number}/labels": Operation<"/repos/{owner}/{repo}/milestones/{milestone_number}/labels", "get">; + /** + * @see https://docs.github.com/rest/reference/activity#list-repository-notifications-for-the-authenticated-user + */ + "GET /repos/{owner}/{repo}/notifications": Operation<"/repos/{owner}/{repo}/notifications", "get">; + /** + * @see https://docs.github.com/rest/reference/repos#get-a-github-pages-site + */ + "GET /repos/{owner}/{repo}/pages": Operation<"/repos/{owner}/{repo}/pages", "get">; + /** + * @see https://docs.github.com/rest/reference/repos#list-github-pages-builds + */ + "GET /repos/{owner}/{repo}/pages/builds": Operation<"/repos/{owner}/{repo}/pages/builds", "get">; + /** + * @see https://docs.github.com/rest/reference/repos#get-latest-pages-build + */ + "GET /repos/{owner}/{repo}/pages/builds/latest": Operation<"/repos/{owner}/{repo}/pages/builds/latest", "get">; + /** + * @see https://docs.github.com/rest/reference/repos#get-github-pages-build + */ + "GET /repos/{owner}/{repo}/pages/builds/{build_id}": Operation<"/repos/{owner}/{repo}/pages/builds/{build_id}", "get">; + /** + * @see https://docs.github.com/rest/reference/repos#get-a-dns-health-check-for-github-pages + */ + "GET /repos/{owner}/{repo}/pages/health": Operation<"/repos/{owner}/{repo}/pages/health", "get">; + /** + * @see https://docs.github.com/rest/reference/projects#list-repository-projects + */ + "GET /repos/{owner}/{repo}/projects": Operation<"/repos/{owner}/{repo}/projects", "get">; + /** + * @see https://docs.github.com/rest/reference/pulls#list-pull-requests + */ + "GET /repos/{owner}/{repo}/pulls": Operation<"/repos/{owner}/{repo}/pulls", "get">; + /** + * @see https://docs.github.com/rest/reference/pulls#list-review-comments-in-a-repository + */ + "GET /repos/{owner}/{repo}/pulls/comments": Operation<"/repos/{owner}/{repo}/pulls/comments", "get">; + /** + * @see https://docs.github.com/rest/reference/pulls#get-a-review-comment-for-a-pull-request + */ + "GET /repos/{owner}/{repo}/pulls/comments/{comment_id}": Operation<"/repos/{owner}/{repo}/pulls/comments/{comment_id}", "get">; + /** + * @see https://docs.github.com/rest/reference/reactions#list-reactions-for-a-pull-request-review-comment + */ + "GET /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions": Operation<"/repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions", "get">; + /** + * @see https://docs.github.com/rest/reference/pulls#get-a-pull-request + */ + "GET /repos/{owner}/{repo}/pulls/{pull_number}": Operation<"/repos/{owner}/{repo}/pulls/{pull_number}", "get">; + /** + * @see https://docs.github.com/rest/reference/pulls#list-review-comments-on-a-pull-request + */ + "GET /repos/{owner}/{repo}/pulls/{pull_number}/comments": Operation<"/repos/{owner}/{repo}/pulls/{pull_number}/comments", "get">; + /** + * @see https://docs.github.com/rest/reference/pulls#list-commits-on-a-pull-request + */ + "GET /repos/{owner}/{repo}/pulls/{pull_number}/commits": Operation<"/repos/{owner}/{repo}/pulls/{pull_number}/commits", "get">; + /** + * @see https://docs.github.com/rest/reference/pulls#list-pull-requests-files + */ + "GET /repos/{owner}/{repo}/pulls/{pull_number}/files": Operation<"/repos/{owner}/{repo}/pulls/{pull_number}/files", "get">; + /** + * @see https://docs.github.com/rest/reference/pulls#check-if-a-pull-request-has-been-merged + */ + "GET /repos/{owner}/{repo}/pulls/{pull_number}/merge": Operation<"/repos/{owner}/{repo}/pulls/{pull_number}/merge", "get">; + /** + * @see https://docs.github.com/rest/reference/pulls#list-requested-reviewers-for-a-pull-request + */ + "GET /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers": Operation<"/repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers", "get">; + /** + * @see https://docs.github.com/rest/reference/pulls#list-reviews-for-a-pull-request + */ + "GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews": Operation<"/repos/{owner}/{repo}/pulls/{pull_number}/reviews", "get">; + /** + * @see https://docs.github.com/rest/reference/pulls#get-a-review-for-a-pull-request + */ + "GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}": Operation<"/repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}", "get">; + /** + * @see https://docs.github.com/rest/reference/pulls#list-comments-for-a-pull-request-review + */ + "GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/comments": Operation<"/repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/comments", "get">; + /** + * @see https://docs.github.com/rest/reference/repos#get-a-repository-readme + */ + "GET /repos/{owner}/{repo}/readme": Operation<"/repos/{owner}/{repo}/readme", "get">; + /** + * @see https://docs.github.com/rest/reference/repos#get-a-repository-directory-readme + */ + "GET /repos/{owner}/{repo}/readme/{dir}": Operation<"/repos/{owner}/{repo}/readme/{dir}", "get">; + /** + * @see https://docs.github.com/rest/reference/repos#list-releases + */ + "GET /repos/{owner}/{repo}/releases": Operation<"/repos/{owner}/{repo}/releases", "get">; + /** + * @see https://docs.github.com/rest/reference/repos#get-a-release-asset + */ + "GET /repos/{owner}/{repo}/releases/assets/{asset_id}": Operation<"/repos/{owner}/{repo}/releases/assets/{asset_id}", "get">; + /** + * @see https://docs.github.com/rest/reference/repos#get-the-latest-release + */ + "GET /repos/{owner}/{repo}/releases/latest": Operation<"/repos/{owner}/{repo}/releases/latest", "get">; + /** + * @see https://docs.github.com/rest/reference/repos#get-a-release-by-tag-name + */ + "GET /repos/{owner}/{repo}/releases/tags/{tag}": Operation<"/repos/{owner}/{repo}/releases/tags/{tag}", "get">; + /** + * @see https://docs.github.com/rest/reference/repos#get-a-release + */ + "GET /repos/{owner}/{repo}/releases/{release_id}": Operation<"/repos/{owner}/{repo}/releases/{release_id}", "get">; + /** + * @see https://docs.github.com/rest/reference/repos#list-release-assets + */ + "GET /repos/{owner}/{repo}/releases/{release_id}/assets": Operation<"/repos/{owner}/{repo}/releases/{release_id}/assets", "get">; + /** + * @see https://docs.github.com/rest/reference/reactions/#list-reactions-for-a-release + */ + "GET /repos/{owner}/{repo}/releases/{release_id}/reactions": Operation<"/repos/{owner}/{repo}/releases/{release_id}/reactions", "get">; + /** + * @see https://docs.github.com/rest/reference/secret-scanning#list-secret-scanning-alerts-for-a-repository + */ + "GET /repos/{owner}/{repo}/secret-scanning/alerts": Operation<"/repos/{owner}/{repo}/secret-scanning/alerts", "get">; + /** + * @see https://docs.github.com/rest/reference/secret-scanning#get-a-secret-scanning-alert + */ + "GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}": Operation<"/repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}", "get">; + /** + * @see https://docs.github.com/rest/reference/secret-scanning#list-locations-for-a-secret-scanning-alert + */ + "GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}/locations": Operation<"/repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}/locations", "get">; + /** + * @see https://docs.github.com/rest/reference/activity#list-stargazers + */ + "GET /repos/{owner}/{repo}/stargazers": Operation<"/repos/{owner}/{repo}/stargazers", "get">; + /** + * @see https://docs.github.com/rest/reference/repos#get-the-weekly-commit-activity + */ + "GET /repos/{owner}/{repo}/stats/code_frequency": Operation<"/repos/{owner}/{repo}/stats/code_frequency", "get">; + /** + * @see https://docs.github.com/rest/reference/repos#get-the-last-year-of-commit-activity + */ + "GET /repos/{owner}/{repo}/stats/commit_activity": Operation<"/repos/{owner}/{repo}/stats/commit_activity", "get">; + /** + * @see https://docs.github.com/rest/reference/repos#get-all-contributor-commit-activity + */ + "GET /repos/{owner}/{repo}/stats/contributors": Operation<"/repos/{owner}/{repo}/stats/contributors", "get">; + /** + * @see https://docs.github.com/rest/reference/repos#get-the-weekly-commit-count + */ + "GET /repos/{owner}/{repo}/stats/participation": Operation<"/repos/{owner}/{repo}/stats/participation", "get">; + /** + * @see https://docs.github.com/rest/reference/repos#get-the-hourly-commit-count-for-each-day + */ + "GET /repos/{owner}/{repo}/stats/punch_card": Operation<"/repos/{owner}/{repo}/stats/punch_card", "get">; + /** + * @see https://docs.github.com/rest/reference/activity#list-watchers + */ + "GET /repos/{owner}/{repo}/subscribers": Operation<"/repos/{owner}/{repo}/subscribers", "get">; + /** + * @see https://docs.github.com/rest/reference/activity#get-a-repository-subscription + */ + "GET /repos/{owner}/{repo}/subscription": Operation<"/repos/{owner}/{repo}/subscription", "get">; + /** + * @see https://docs.github.com/rest/reference/repos#list-repository-tags + */ + "GET /repos/{owner}/{repo}/tags": Operation<"/repos/{owner}/{repo}/tags", "get">; + /** + * @see https://docs.github.com/rest/reference/repos#list-tag-protection-state-of-a-repository + */ + "GET /repos/{owner}/{repo}/tags/protection": Operation<"/repos/{owner}/{repo}/tags/protection", "get">; + /** + * @see https://docs.github.com/rest/reference/repos#download-a-repository-archive + */ + "GET /repos/{owner}/{repo}/tarball/{ref}": Operation<"/repos/{owner}/{repo}/tarball/{ref}", "get">; + /** + * @see https://docs.github.com/rest/reference/repos#list-repository-teams + */ + "GET /repos/{owner}/{repo}/teams": Operation<"/repos/{owner}/{repo}/teams", "get">; + /** + * @see https://docs.github.com/rest/reference/repos#get-all-repository-topics + */ + "GET /repos/{owner}/{repo}/topics": Operation<"/repos/{owner}/{repo}/topics", "get">; + /** + * @see https://docs.github.com/rest/reference/repos#get-repository-clones + */ + "GET /repos/{owner}/{repo}/traffic/clones": Operation<"/repos/{owner}/{repo}/traffic/clones", "get">; + /** + * @see https://docs.github.com/rest/reference/repos#get-top-referral-paths + */ + "GET /repos/{owner}/{repo}/traffic/popular/paths": Operation<"/repos/{owner}/{repo}/traffic/popular/paths", "get">; + /** + * @see https://docs.github.com/rest/reference/repos#get-top-referral-sources + */ + "GET /repos/{owner}/{repo}/traffic/popular/referrers": Operation<"/repos/{owner}/{repo}/traffic/popular/referrers", "get">; + /** + * @see https://docs.github.com/rest/reference/repos#get-page-views + */ + "GET /repos/{owner}/{repo}/traffic/views": Operation<"/repos/{owner}/{repo}/traffic/views", "get">; + /** + * @see https://docs.github.com/rest/reference/repos#check-if-vulnerability-alerts-are-enabled-for-a-repository + */ + "GET /repos/{owner}/{repo}/vulnerability-alerts": Operation<"/repos/{owner}/{repo}/vulnerability-alerts", "get">; + /** + * @see https://docs.github.com/rest/reference/repos#download-a-repository-archive + */ + "GET /repos/{owner}/{repo}/zipball/{ref}": Operation<"/repos/{owner}/{repo}/zipball/{ref}", "get">; + /** + * @see https://docs.github.com/rest/reference/repos#list-public-repositories + */ + "GET /repositories": Operation<"/repositories", "get">; + /** + * @see https://docs.github.com/rest/reference/actions#list-environment-secrets + */ + "GET /repositories/{repository_id}/environments/{environment_name}/secrets": Operation<"/repositories/{repository_id}/environments/{environment_name}/secrets", "get">; + /** + * @see https://docs.github.com/rest/reference/actions#get-an-environment-public-key + */ + "GET /repositories/{repository_id}/environments/{environment_name}/secrets/public-key": Operation<"/repositories/{repository_id}/environments/{environment_name}/secrets/public-key", "get">; + /** + * @see https://docs.github.com/rest/reference/actions#get-an-environment-secret + */ + "GET /repositories/{repository_id}/environments/{environment_name}/secrets/{secret_name}": Operation<"/repositories/{repository_id}/environments/{environment_name}/secrets/{secret_name}", "get">; + /** + * @see https://docs.github.com/rest/reference/enterprise-admin#list-provisioned-scim-groups-for-an-enterprise + */ + "GET /scim/v2/enterprises/{enterprise}/Groups": Operation<"/scim/v2/enterprises/{enterprise}/Groups", "get">; + /** + * @see https://docs.github.com/rest/reference/enterprise-admin#get-scim-provisioning-information-for-an-enterprise-group + */ + "GET /scim/v2/enterprises/{enterprise}/Groups/{scim_group_id}": Operation<"/scim/v2/enterprises/{enterprise}/Groups/{scim_group_id}", "get">; + /** + * @see https://docs.github.com/rest/reference/enterprise-admin#list-scim-provisioned-identities-for-an-enterprise + */ + "GET /scim/v2/enterprises/{enterprise}/Users": Operation<"/scim/v2/enterprises/{enterprise}/Users", "get">; + /** + * @see https://docs.github.com/rest/reference/enterprise-admin#get-scim-provisioning-information-for-an-enterprise-user + */ + "GET /scim/v2/enterprises/{enterprise}/Users/{scim_user_id}": Operation<"/scim/v2/enterprises/{enterprise}/Users/{scim_user_id}", "get">; + /** + * @see https://docs.github.com/rest/reference/scim#list-scim-provisioned-identities + */ + "GET /scim/v2/organizations/{org}/Users": Operation<"/scim/v2/organizations/{org}/Users", "get">; + /** + * @see https://docs.github.com/rest/reference/scim#get-scim-provisioning-information-for-a-user + */ + "GET /scim/v2/organizations/{org}/Users/{scim_user_id}": Operation<"/scim/v2/organizations/{org}/Users/{scim_user_id}", "get">; + /** + * @see https://docs.github.com/rest/reference/search#search-code + */ + "GET /search/code": Operation<"/search/code", "get">; + /** + * @see https://docs.github.com/rest/reference/search#search-commits + */ + "GET /search/commits": Operation<"/search/commits", "get">; + /** + * @see https://docs.github.com/rest/reference/search#search-issues-and-pull-requests + */ + "GET /search/issues": Operation<"/search/issues", "get">; + /** + * @see https://docs.github.com/rest/reference/search#search-labels + */ + "GET /search/labels": Operation<"/search/labels", "get">; + /** + * @see https://docs.github.com/rest/reference/search#search-repositories + */ + "GET /search/repositories": Operation<"/search/repositories", "get">; + /** + * @see https://docs.github.com/rest/reference/search#search-topics + */ + "GET /search/topics": Operation<"/search/topics", "get">; + /** + * @see https://docs.github.com/rest/reference/search#search-users + */ + "GET /search/users": Operation<"/search/users", "get">; + /** + * @see https://docs.github.com/rest/reference/teams/#get-a-team-legacy + */ + "GET /teams/{team_id}": Operation<"/teams/{team_id}", "get">; + /** + * @see https://docs.github.com/rest/reference/teams#list-discussions-legacy + */ + "GET /teams/{team_id}/discussions": Operation<"/teams/{team_id}/discussions", "get">; + /** + * @see https://docs.github.com/rest/reference/teams#get-a-discussion-legacy + */ + "GET /teams/{team_id}/discussions/{discussion_number}": Operation<"/teams/{team_id}/discussions/{discussion_number}", "get">; + /** + * @see https://docs.github.com/rest/reference/teams#list-discussion-comments-legacy + */ + "GET /teams/{team_id}/discussions/{discussion_number}/comments": Operation<"/teams/{team_id}/discussions/{discussion_number}/comments", "get">; + /** + * @see https://docs.github.com/rest/reference/teams#get-a-discussion-comment-legacy + */ + "GET /teams/{team_id}/discussions/{discussion_number}/comments/{comment_number}": Operation<"/teams/{team_id}/discussions/{discussion_number}/comments/{comment_number}", "get">; + /** + * @see https://docs.github.com/rest/reference/reactions/#list-reactions-for-a-team-discussion-comment-legacy + */ + "GET /teams/{team_id}/discussions/{discussion_number}/comments/{comment_number}/reactions": Operation<"/teams/{team_id}/discussions/{discussion_number}/comments/{comment_number}/reactions", "get">; + /** + * @see https://docs.github.com/rest/reference/reactions/#list-reactions-for-a-team-discussion-legacy + */ + "GET /teams/{team_id}/discussions/{discussion_number}/reactions": Operation<"/teams/{team_id}/discussions/{discussion_number}/reactions", "get">; + /** + * @see https://docs.github.com/rest/reference/teams#list-pending-team-invitations-legacy + */ + "GET /teams/{team_id}/invitations": Operation<"/teams/{team_id}/invitations", "get">; + /** + * @see https://docs.github.com/rest/reference/teams#list-team-members-legacy + */ + "GET /teams/{team_id}/members": Operation<"/teams/{team_id}/members", "get">; + /** + * @see https://docs.github.com/rest/reference/teams#get-team-member-legacy + */ + "GET /teams/{team_id}/members/{username}": Operation<"/teams/{team_id}/members/{username}", "get">; + /** + * @see https://docs.github.com/rest/reference/teams#get-team-membership-for-a-user-legacy + */ + "GET /teams/{team_id}/memberships/{username}": Operation<"/teams/{team_id}/memberships/{username}", "get">; + /** + * @see https://docs.github.com/rest/reference/teams/#list-team-projects-legacy + */ + "GET /teams/{team_id}/projects": Operation<"/teams/{team_id}/projects", "get">; + /** + * @see https://docs.github.com/rest/reference/teams/#check-team-permissions-for-a-project-legacy + */ + "GET /teams/{team_id}/projects/{project_id}": Operation<"/teams/{team_id}/projects/{project_id}", "get">; + /** + * @see https://docs.github.com/rest/reference/teams/#list-team-repositories-legacy + */ + "GET /teams/{team_id}/repos": Operation<"/teams/{team_id}/repos", "get">; + /** + * @see https://docs.github.com/rest/reference/teams/#check-team-permissions-for-a-repository-legacy + */ + "GET /teams/{team_id}/repos/{owner}/{repo}": Operation<"/teams/{team_id}/repos/{owner}/{repo}", "get">; + /** + * @see https://docs.github.com/rest/reference/teams#list-idp-groups-for-a-team-legacy + */ + "GET /teams/{team_id}/team-sync/group-mappings": Operation<"/teams/{team_id}/team-sync/group-mappings", "get">; + /** + * @see https://docs.github.com/rest/reference/teams/#list-child-teams-legacy + */ + "GET /teams/{team_id}/teams": Operation<"/teams/{team_id}/teams", "get">; + /** + * @see https://docs.github.com/rest/reference/users#get-the-authenticated-user + */ + "GET /user": Operation<"/user", "get">; + /** + * @see https://docs.github.com/rest/reference/users#list-users-blocked-by-the-authenticated-user + */ + "GET /user/blocks": Operation<"/user/blocks", "get">; + /** + * @see https://docs.github.com/rest/reference/users#check-if-a-user-is-blocked-by-the-authenticated-user + */ + "GET /user/blocks/{username}": Operation<"/user/blocks/{username}", "get">; + /** + * @see https://docs.github.com/rest/reference/codespaces#list-codespaces-for-the-authenticated-user + */ + "GET /user/codespaces": Operation<"/user/codespaces", "get">; + /** + * @see https://docs.github.com/rest/reference/codespaces#list-secrets-for-the-authenticated-user + */ + "GET /user/codespaces/secrets": Operation<"/user/codespaces/secrets", "get">; + /** + * @see https://docs.github.com/rest/reference/codespaces#get-public-key-for-the-authenticated-user + */ + "GET /user/codespaces/secrets/public-key": Operation<"/user/codespaces/secrets/public-key", "get">; + /** + * @see https://docs.github.com/rest/reference/codespaces#get-a-secret-for-the-authenticated-user + */ + "GET /user/codespaces/secrets/{secret_name}": Operation<"/user/codespaces/secrets/{secret_name}", "get">; + /** + * @see https://docs.github.com/rest/reference/codespaces#list-selected-repositories-for-a-user-secret + */ + "GET /user/codespaces/secrets/{secret_name}/repositories": Operation<"/user/codespaces/secrets/{secret_name}/repositories", "get">; + /** + * @see https://docs.github.com/rest/reference/codespaces#get-a-codespace-for-the-authenticated-user + */ + "GET /user/codespaces/{codespace_name}": Operation<"/user/codespaces/{codespace_name}", "get">; + /** + * @see + */ + "GET /user/codespaces/{codespace_name}/exports/{export_id}": Operation<"/user/codespaces/{codespace_name}/exports/{export_id}", "get">; + /** + * @see https://docs.github.com/rest/reference/codespaces#list-machine-types-for-a-codespace + */ + "GET /user/codespaces/{codespace_name}/machines": Operation<"/user/codespaces/{codespace_name}/machines", "get">; + /** + * @see https://docs.github.com/rest/reference/users#list-email-addresses-for-the-authenticated-user + */ + "GET /user/emails": Operation<"/user/emails", "get">; + /** + * @see https://docs.github.com/rest/reference/users#list-followers-of-the-authenticated-user + */ + "GET /user/followers": Operation<"/user/followers", "get">; + /** + * @see https://docs.github.com/rest/reference/users#list-the-people-the-authenticated-user-follows + */ + "GET /user/following": Operation<"/user/following", "get">; + /** + * @see https://docs.github.com/rest/reference/users#check-if-a-person-is-followed-by-the-authenticated-user + */ + "GET /user/following/{username}": Operation<"/user/following/{username}", "get">; + /** + * @see https://docs.github.com/rest/reference/users#list-gpg-keys-for-the-authenticated-user + */ + "GET /user/gpg_keys": Operation<"/user/gpg_keys", "get">; + /** + * @see https://docs.github.com/rest/reference/users#get-a-gpg-key-for-the-authenticated-user + */ + "GET /user/gpg_keys/{gpg_key_id}": Operation<"/user/gpg_keys/{gpg_key_id}", "get">; + /** + * @see https://docs.github.com/rest/reference/apps#list-app-installations-accessible-to-the-user-access-token + */ + "GET /user/installations": Operation<"/user/installations", "get">; + /** + * @see https://docs.github.com/rest/reference/apps#list-repositories-accessible-to-the-user-access-token + */ + "GET /user/installations/{installation_id}/repositories": Operation<"/user/installations/{installation_id}/repositories", "get">; + /** + * @see https://docs.github.com/rest/reference/interactions#get-interaction-restrictions-for-your-public-repositories + */ + "GET /user/interaction-limits": Operation<"/user/interaction-limits", "get">; + /** + * @see https://docs.github.com/rest/reference/issues#list-user-account-issues-assigned-to-the-authenticated-user + */ + "GET /user/issues": Operation<"/user/issues", "get">; + /** + * @see https://docs.github.com/rest/reference/users#list-public-ssh-keys-for-the-authenticated-user + */ + "GET /user/keys": Operation<"/user/keys", "get">; + /** + * @see https://docs.github.com/rest/reference/users#get-a-public-ssh-key-for-the-authenticated-user + */ + "GET /user/keys/{key_id}": Operation<"/user/keys/{key_id}", "get">; + /** + * @see https://docs.github.com/rest/reference/apps#list-subscriptions-for-the-authenticated-user + */ + "GET /user/marketplace_purchases": Operation<"/user/marketplace_purchases", "get">; + /** + * @see https://docs.github.com/rest/reference/apps#list-subscriptions-for-the-authenticated-user-stubbed + */ + "GET /user/marketplace_purchases/stubbed": Operation<"/user/marketplace_purchases/stubbed", "get">; + /** + * @see https://docs.github.com/rest/reference/orgs#list-organization-memberships-for-the-authenticated-user + */ + "GET /user/memberships/orgs": Operation<"/user/memberships/orgs", "get">; + /** + * @see https://docs.github.com/rest/reference/orgs#get-an-organization-membership-for-the-authenticated-user + */ + "GET /user/memberships/orgs/{org}": Operation<"/user/memberships/orgs/{org}", "get">; + /** + * @see https://docs.github.com/rest/reference/migrations#list-user-migrations + */ + "GET /user/migrations": Operation<"/user/migrations", "get">; + /** + * @see https://docs.github.com/rest/reference/migrations#get-a-user-migration-status + */ + "GET /user/migrations/{migration_id}": Operation<"/user/migrations/{migration_id}", "get">; + /** + * @see https://docs.github.com/rest/reference/migrations#download-a-user-migration-archive + */ + "GET /user/migrations/{migration_id}/archive": Operation<"/user/migrations/{migration_id}/archive", "get">; + /** + * @see https://docs.github.com/rest/reference/migrations#list-repositories-for-a-user-migration + */ + "GET /user/migrations/{migration_id}/repositories": Operation<"/user/migrations/{migration_id}/repositories", "get">; + /** + * @see https://docs.github.com/rest/reference/orgs#list-organizations-for-the-authenticated-user + */ + "GET /user/orgs": Operation<"/user/orgs", "get">; + /** + * @see https://docs.github.com/rest/reference/packages#list-packages-for-the-authenticated-user + */ + "GET /user/packages": Operation<"/user/packages", "get">; + /** + * @see https://docs.github.com/rest/reference/packages#get-a-package-for-the-authenticated-user + */ + "GET /user/packages/{package_type}/{package_name}": Operation<"/user/packages/{package_type}/{package_name}", "get">; + /** + * @see https://docs.github.com/rest/reference/packages#get-all-package-versions-for-a-package-owned-by-the-authenticated-user + */ + "GET /user/packages/{package_type}/{package_name}/versions": Operation<"/user/packages/{package_type}/{package_name}/versions", "get">; + /** + * @see https://docs.github.com/rest/reference/packages#get-a-package-version-for-the-authenticated-user + */ + "GET /user/packages/{package_type}/{package_name}/versions/{package_version_id}": Operation<"/user/packages/{package_type}/{package_name}/versions/{package_version_id}", "get">; + /** + * @see https://docs.github.com/rest/reference/users#list-public-email-addresses-for-the-authenticated-user + */ + "GET /user/public_emails": Operation<"/user/public_emails", "get">; + /** + * @see https://docs.github.com/rest/reference/repos#list-repositories-for-the-authenticated-user + */ + "GET /user/repos": Operation<"/user/repos", "get">; + /** + * @see https://docs.github.com/rest/reference/repos#list-repository-invitations-for-the-authenticated-user + */ + "GET /user/repository_invitations": Operation<"/user/repository_invitations", "get">; + /** + * @see https://docs.github.com/rest/reference/activity#list-repositories-starred-by-the-authenticated-user + */ + "GET /user/starred": Operation<"/user/starred", "get">; + /** + * @see https://docs.github.com/rest/reference/activity#check-if-a-repository-is-starred-by-the-authenticated-user + */ + "GET /user/starred/{owner}/{repo}": Operation<"/user/starred/{owner}/{repo}", "get">; + /** + * @see https://docs.github.com/rest/reference/activity#list-repositories-watched-by-the-authenticated-user + */ + "GET /user/subscriptions": Operation<"/user/subscriptions", "get">; + /** + * @see https://docs.github.com/rest/reference/teams#list-teams-for-the-authenticated-user + */ + "GET /user/teams": Operation<"/user/teams", "get">; + /** + * @see https://docs.github.com/rest/reference/users#list-users + */ + "GET /users": Operation<"/users", "get">; + /** + * @see https://docs.github.com/rest/reference/users#get-a-user + */ + "GET /users/{username}": Operation<"/users/{username}", "get">; + /** + * @see https://docs.github.com/rest/reference/activity#list-events-for-the-authenticated-user + */ + "GET /users/{username}/events": Operation<"/users/{username}/events", "get">; + /** + * @see https://docs.github.com/rest/reference/activity#list-organization-events-for-the-authenticated-user + */ + "GET /users/{username}/events/orgs/{org}": Operation<"/users/{username}/events/orgs/{org}", "get">; + /** + * @see https://docs.github.com/rest/reference/activity#list-public-events-for-a-user + */ + "GET /users/{username}/events/public": Operation<"/users/{username}/events/public", "get">; + /** + * @see https://docs.github.com/rest/reference/users#list-followers-of-a-user + */ + "GET /users/{username}/followers": Operation<"/users/{username}/followers", "get">; + /** + * @see https://docs.github.com/rest/reference/users#list-the-people-a-user-follows + */ + "GET /users/{username}/following": Operation<"/users/{username}/following", "get">; + /** + * @see https://docs.github.com/rest/reference/users#check-if-a-user-follows-another-user + */ + "GET /users/{username}/following/{target_user}": Operation<"/users/{username}/following/{target_user}", "get">; + /** + * @see https://docs.github.com/rest/reference/gists#list-gists-for-a-user + */ + "GET /users/{username}/gists": Operation<"/users/{username}/gists", "get">; + /** + * @see https://docs.github.com/rest/reference/users#list-gpg-keys-for-a-user + */ + "GET /users/{username}/gpg_keys": Operation<"/users/{username}/gpg_keys", "get">; + /** + * @see https://docs.github.com/rest/reference/users#get-contextual-information-for-a-user + */ + "GET /users/{username}/hovercard": Operation<"/users/{username}/hovercard", "get">; + /** + * @see https://docs.github.com/rest/reference/apps#get-a-user-installation-for-the-authenticated-app + */ + "GET /users/{username}/installation": Operation<"/users/{username}/installation", "get">; + /** + * @see https://docs.github.com/rest/reference/users#list-public-keys-for-a-user + */ + "GET /users/{username}/keys": Operation<"/users/{username}/keys", "get">; + /** + * @see https://docs.github.com/rest/reference/orgs#list-organizations-for-a-user + */ + "GET /users/{username}/orgs": Operation<"/users/{username}/orgs", "get">; + /** + * @see https://docs.github.com/rest/reference/packages#list-packages-for-user + */ + "GET /users/{username}/packages": Operation<"/users/{username}/packages", "get">; + /** + * @see https://docs.github.com/rest/reference/packages#get-a-package-for-a-user + */ + "GET /users/{username}/packages/{package_type}/{package_name}": Operation<"/users/{username}/packages/{package_type}/{package_name}", "get">; + /** + * @see https://docs.github.com/rest/reference/packages#get-all-package-versions-for-a-package-owned-by-a-user + */ + "GET /users/{username}/packages/{package_type}/{package_name}/versions": Operation<"/users/{username}/packages/{package_type}/{package_name}/versions", "get">; + /** + * @see https://docs.github.com/rest/reference/packages#get-a-package-version-for-a-user + */ + "GET /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}": Operation<"/users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}", "get">; + /** + * @see https://docs.github.com/rest/reference/projects#list-user-projects + */ + "GET /users/{username}/projects": Operation<"/users/{username}/projects", "get">; + /** + * @see https://docs.github.com/rest/reference/activity#list-events-received-by-the-authenticated-user + */ + "GET /users/{username}/received_events": Operation<"/users/{username}/received_events", "get">; + /** + * @see https://docs.github.com/rest/reference/activity#list-public-events-received-by-a-user + */ + "GET /users/{username}/received_events/public": Operation<"/users/{username}/received_events/public", "get">; + /** + * @see https://docs.github.com/rest/reference/repos#list-repositories-for-a-user + */ + "GET /users/{username}/repos": Operation<"/users/{username}/repos", "get">; + /** + * @see https://docs.github.com/rest/reference/billing#get-github-actions-billing-for-a-user + */ + "GET /users/{username}/settings/billing/actions": Operation<"/users/{username}/settings/billing/actions", "get">; + /** + * @see https://docs.github.com/rest/reference/billing#get-github-packages-billing-for-a-user + */ + "GET /users/{username}/settings/billing/packages": Operation<"/users/{username}/settings/billing/packages", "get">; + /** + * @see https://docs.github.com/rest/reference/billing#get-shared-storage-billing-for-a-user + */ + "GET /users/{username}/settings/billing/shared-storage": Operation<"/users/{username}/settings/billing/shared-storage", "get">; + /** + * @see https://docs.github.com/rest/reference/activity#list-repositories-starred-by-a-user + */ + "GET /users/{username}/starred": Operation<"/users/{username}/starred", "get">; + /** + * @see https://docs.github.com/rest/reference/activity#list-repositories-watched-by-a-user + */ + "GET /users/{username}/subscriptions": Operation<"/users/{username}/subscriptions", "get">; + /** + * @see + */ + "GET /zen": Operation<"/zen", "get">; + /** + * @see https://docs.github.com/rest/reference/apps#update-a-webhook-configuration-for-an-app + */ + "PATCH /app/hook/config": Operation<"/app/hook/config", "patch">; + /** + * @see https://docs.github.com/rest/reference/apps#reset-a-token + */ + "PATCH /applications/{client_id}/token": Operation<"/applications/{client_id}/token", "patch">; + /** + * @see https://docs.github.com/rest/reference/oauth-authorizations#update-an-existing-authorization + */ + "PATCH /authorizations/{authorization_id}": Operation<"/authorizations/{authorization_id}", "patch">; + /** + * @see https://docs.github.com/rest/reference/actions#update-a-self-hosted-runner-group-for-an-enterprise + */ + "PATCH /enterprises/{enterprise}/actions/runner-groups/{runner_group_id}": Operation<"/enterprises/{enterprise}/actions/runner-groups/{runner_group_id}", "patch">; + /** + * @see https://docs.github.com/rest/reference/gists/#update-a-gist + */ + "PATCH /gists/{gist_id}": Operation<"/gists/{gist_id}", "patch">; + /** + * @see https://docs.github.com/rest/reference/gists#update-a-gist-comment + */ + "PATCH /gists/{gist_id}/comments/{comment_id}": Operation<"/gists/{gist_id}/comments/{comment_id}", "patch">; + /** + * @see https://docs.github.com/rest/reference/activity#mark-a-thread-as-read + */ + "PATCH /notifications/threads/{thread_id}": Operation<"/notifications/threads/{thread_id}", "patch">; + /** + * @see https://docs.github.com/rest/reference/orgs/#update-an-organization + */ + "PATCH /orgs/{org}": Operation<"/orgs/{org}", "patch">; + /** + * @see https://docs.github.com/rest/reference/actions#update-a-self-hosted-runner-group-for-an-organization + */ + "PATCH /orgs/{org}/actions/runner-groups/{runner_group_id}": Operation<"/orgs/{org}/actions/runner-groups/{runner_group_id}", "patch">; + /** + * @see https://docs.github.com/rest/reference/orgs#update-an-organization-webhook + */ + "PATCH /orgs/{org}/hooks/{hook_id}": Operation<"/orgs/{org}/hooks/{hook_id}", "patch">; + /** + * @see https://docs.github.com/rest/reference/orgs#update-a-webhook-configuration-for-an-organization + */ + "PATCH /orgs/{org}/hooks/{hook_id}/config": Operation<"/orgs/{org}/hooks/{hook_id}/config", "patch">; + /** + * @see https://docs.github.com/rest/reference/teams#update-a-team + */ + "PATCH /orgs/{org}/teams/{team_slug}": Operation<"/orgs/{org}/teams/{team_slug}", "patch">; + /** + * @see https://docs.github.com/rest/reference/teams#update-a-discussion + */ + "PATCH /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}": Operation<"/orgs/{org}/teams/{team_slug}/discussions/{discussion_number}", "patch">; + /** + * @see https://docs.github.com/rest/reference/teams#update-a-discussion-comment + */ + "PATCH /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}": Operation<"/orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}", "patch">; + /** + * @see https://docs.github.com/rest/reference/teams#link-external-idp-group-team-connection + */ + "PATCH /orgs/{org}/teams/{team_slug}/external-groups": Operation<"/orgs/{org}/teams/{team_slug}/external-groups", "patch">; + /** + * @see https://docs.github.com/rest/reference/teams#create-or-update-idp-group-connections + */ + "PATCH /orgs/{org}/teams/{team_slug}/team-sync/group-mappings": Operation<"/orgs/{org}/teams/{team_slug}/team-sync/group-mappings", "patch">; + /** + * @see https://docs.github.com/rest/reference/projects#update-a-project-card + */ + "PATCH /projects/columns/cards/{card_id}": Operation<"/projects/columns/cards/{card_id}", "patch">; + /** + * @see https://docs.github.com/rest/reference/projects#update-a-project-column + */ + "PATCH /projects/columns/{column_id}": Operation<"/projects/columns/{column_id}", "patch">; + /** + * @see https://docs.github.com/rest/reference/projects#update-a-project + */ + "PATCH /projects/{project_id}": Operation<"/projects/{project_id}", "patch">; + /** + * @see https://docs.github.com/rest/reference/repos/#update-a-repository + */ + "PATCH /repos/{owner}/{repo}": Operation<"/repos/{owner}/{repo}", "patch">; + /** + * @see https://docs.github.com/rest/reference/repos#update-pull-request-review-protection + */ + "PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews": Operation<"/repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews", "patch">; + /** + * @see https://docs.github.com/rest/reference/repos#update-status-check-protection + */ + "PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks": Operation<"/repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks", "patch">; + /** + * @see https://docs.github.com/rest/reference/checks#update-a-check-run + */ + "PATCH /repos/{owner}/{repo}/check-runs/{check_run_id}": Operation<"/repos/{owner}/{repo}/check-runs/{check_run_id}", "patch">; + /** + * @see https://docs.github.com/rest/reference/checks#update-repository-preferences-for-check-suites + */ + "PATCH /repos/{owner}/{repo}/check-suites/preferences": Operation<"/repos/{owner}/{repo}/check-suites/preferences", "patch">; + /** + * @see https://docs.github.com/rest/reference/code-scanning#update-a-code-scanning-alert + */ + "PATCH /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}": Operation<"/repos/{owner}/{repo}/code-scanning/alerts/{alert_number}", "patch">; + /** + * @see https://docs.github.com/rest/reference/repos#update-a-commit-comment + */ + "PATCH /repos/{owner}/{repo}/comments/{comment_id}": Operation<"/repos/{owner}/{repo}/comments/{comment_id}", "patch">; + /** + * @see https://docs.github.com/rest/reference/git#update-a-reference + */ + "PATCH /repos/{owner}/{repo}/git/refs/{ref}": Operation<"/repos/{owner}/{repo}/git/refs/{ref}", "patch">; + /** + * @see https://docs.github.com/rest/reference/repos#update-a-repository-webhook + */ + "PATCH /repos/{owner}/{repo}/hooks/{hook_id}": Operation<"/repos/{owner}/{repo}/hooks/{hook_id}", "patch">; + /** + * @see https://docs.github.com/rest/reference/repos#update-a-webhook-configuration-for-a-repository + */ + "PATCH /repos/{owner}/{repo}/hooks/{hook_id}/config": Operation<"/repos/{owner}/{repo}/hooks/{hook_id}/config", "patch">; + /** + * @see https://docs.github.com/rest/reference/migrations#update-an-import + */ + "PATCH /repos/{owner}/{repo}/import": Operation<"/repos/{owner}/{repo}/import", "patch">; + /** + * @see https://docs.github.com/rest/reference/migrations#map-a-commit-author + */ + "PATCH /repos/{owner}/{repo}/import/authors/{author_id}": Operation<"/repos/{owner}/{repo}/import/authors/{author_id}", "patch">; + /** + * @see https://docs.github.com/rest/reference/migrations#update-git-lfs-preference + */ + "PATCH /repos/{owner}/{repo}/import/lfs": Operation<"/repos/{owner}/{repo}/import/lfs", "patch">; + /** + * @see https://docs.github.com/rest/reference/repos#update-a-repository-invitation + */ + "PATCH /repos/{owner}/{repo}/invitations/{invitation_id}": Operation<"/repos/{owner}/{repo}/invitations/{invitation_id}", "patch">; + /** + * @see https://docs.github.com/rest/reference/issues#update-an-issue-comment + */ + "PATCH /repos/{owner}/{repo}/issues/comments/{comment_id}": Operation<"/repos/{owner}/{repo}/issues/comments/{comment_id}", "patch">; + /** + * @see https://docs.github.com/rest/reference/issues/#update-an-issue + */ + "PATCH /repos/{owner}/{repo}/issues/{issue_number}": Operation<"/repos/{owner}/{repo}/issues/{issue_number}", "patch">; + /** + * @see https://docs.github.com/rest/reference/issues#update-a-label + */ + "PATCH /repos/{owner}/{repo}/labels/{name}": Operation<"/repos/{owner}/{repo}/labels/{name}", "patch">; + /** + * @see https://docs.github.com/rest/reference/issues#update-a-milestone + */ + "PATCH /repos/{owner}/{repo}/milestones/{milestone_number}": Operation<"/repos/{owner}/{repo}/milestones/{milestone_number}", "patch">; + /** + * @see https://docs.github.com/rest/reference/pulls#update-a-review-comment-for-a-pull-request + */ + "PATCH /repos/{owner}/{repo}/pulls/comments/{comment_id}": Operation<"/repos/{owner}/{repo}/pulls/comments/{comment_id}", "patch">; + /** + * @see https://docs.github.com/rest/reference/pulls/#update-a-pull-request + */ + "PATCH /repos/{owner}/{repo}/pulls/{pull_number}": Operation<"/repos/{owner}/{repo}/pulls/{pull_number}", "patch">; + /** + * @see https://docs.github.com/rest/reference/repos#update-a-release-asset + */ + "PATCH /repos/{owner}/{repo}/releases/assets/{asset_id}": Operation<"/repos/{owner}/{repo}/releases/assets/{asset_id}", "patch">; + /** + * @see https://docs.github.com/rest/reference/repos#update-a-release + */ + "PATCH /repos/{owner}/{repo}/releases/{release_id}": Operation<"/repos/{owner}/{repo}/releases/{release_id}", "patch">; + /** + * @see https://docs.github.com/rest/reference/secret-scanning#update-a-secret-scanning-alert + */ + "PATCH /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}": Operation<"/repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}", "patch">; + /** + * @see https://docs.github.com/rest/reference/enterprise-admin#update-an-attribute-for-a-scim-enterprise-group + */ + "PATCH /scim/v2/enterprises/{enterprise}/Groups/{scim_group_id}": Operation<"/scim/v2/enterprises/{enterprise}/Groups/{scim_group_id}", "patch">; + /** + * @see https://docs.github.com/rest/reference/enterprise-admin#update-an-attribute-for-a-scim-enterprise-user + */ + "PATCH /scim/v2/enterprises/{enterprise}/Users/{scim_user_id}": Operation<"/scim/v2/enterprises/{enterprise}/Users/{scim_user_id}", "patch">; + /** + * @see https://docs.github.com/rest/reference/scim#update-an-attribute-for-a-scim-user + */ + "PATCH /scim/v2/organizations/{org}/Users/{scim_user_id}": Operation<"/scim/v2/organizations/{org}/Users/{scim_user_id}", "patch">; + /** + * @see https://docs.github.com/rest/reference/teams/#update-a-team-legacy + */ + "PATCH /teams/{team_id}": Operation<"/teams/{team_id}", "patch">; + /** + * @see https://docs.github.com/rest/reference/teams#update-a-discussion-legacy + */ + "PATCH /teams/{team_id}/discussions/{discussion_number}": Operation<"/teams/{team_id}/discussions/{discussion_number}", "patch">; + /** + * @see https://docs.github.com/rest/reference/teams#update-a-discussion-comment-legacy + */ + "PATCH /teams/{team_id}/discussions/{discussion_number}/comments/{comment_number}": Operation<"/teams/{team_id}/discussions/{discussion_number}/comments/{comment_number}", "patch">; + /** + * @see https://docs.github.com/rest/reference/teams#create-or-update-idp-group-connections-legacy + */ + "PATCH /teams/{team_id}/team-sync/group-mappings": Operation<"/teams/{team_id}/team-sync/group-mappings", "patch">; + /** + * @see https://docs.github.com/rest/reference/users/#update-the-authenticated-user + */ + "PATCH /user": Operation<"/user", "patch">; + /** + * @see https://docs.github.com/rest/reference/codespaces#update-a-codespace-for-the-authenticated-user + */ + "PATCH /user/codespaces/{codespace_name}": Operation<"/user/codespaces/{codespace_name}", "patch">; + /** + * @see https://docs.github.com/rest/reference/users#set-primary-email-visibility-for-the-authenticated-user + */ + "PATCH /user/email/visibility": Operation<"/user/email/visibility", "patch">; + /** + * @see https://docs.github.com/rest/reference/orgs#update-an-organization-membership-for-the-authenticated-user + */ + "PATCH /user/memberships/orgs/{org}": Operation<"/user/memberships/orgs/{org}", "patch">; + /** + * @see https://docs.github.com/rest/reference/repos#accept-a-repository-invitation + */ + "PATCH /user/repository_invitations/{invitation_id}": Operation<"/user/repository_invitations/{invitation_id}", "patch">; + /** + * @see https://docs.github.com/rest/reference/apps#create-a-github-app-from-a-manifest + */ + "POST /app-manifests/{code}/conversions": Operation<"/app-manifests/{code}/conversions", "post">; + /** + * @see https://docs.github.com/rest/reference/apps#redeliver-a-delivery-for-an-app-webhook + */ + "POST /app/hook/deliveries/{delivery_id}/attempts": Operation<"/app/hook/deliveries/{delivery_id}/attempts", "post">; + /** + * @see https://docs.github.com/rest/reference/apps/#create-an-installation-access-token-for-an-app + */ + "POST /app/installations/{installation_id}/access_tokens": Operation<"/app/installations/{installation_id}/access_tokens", "post">; + /** + * @see https://docs.github.com/rest/reference/apps#check-a-token + */ + "POST /applications/{client_id}/token": Operation<"/applications/{client_id}/token", "post">; + /** + * @see https://docs.github.com/rest/reference/apps#create-a-scoped-access-token + */ + "POST /applications/{client_id}/token/scoped": Operation<"/applications/{client_id}/token/scoped", "post">; + /** + * @see https://docs.github.com/rest/reference/oauth-authorizations#create-a-new-authorization + */ + "POST /authorizations": Operation<"/authorizations", "post">; + /** + * @see https://docs.github.com/rest/reference/actions#create-self-hosted-runner-group-for-an-enterprise + */ + "POST /enterprises/{enterprise}/actions/runner-groups": Operation<"/enterprises/{enterprise}/actions/runner-groups", "post">; + /** + * @see https://docs.github.com/rest/reference/actions#create-a-registration-token-for-an-enterprise + */ + "POST /enterprises/{enterprise}/actions/runners/registration-token": Operation<"/enterprises/{enterprise}/actions/runners/registration-token", "post">; + /** + * @see https://docs.github.com/rest/reference/actions#create-a-remove-token-for-an-enterprise + */ + "POST /enterprises/{enterprise}/actions/runners/remove-token": Operation<"/enterprises/{enterprise}/actions/runners/remove-token", "post">; + /** + * @see https://docs.github.com/rest/reference/actions#add-custom-labels-to-a-self-hosted-runner-for-an-enterprise + */ + "POST /enterprises/{enterprise}/actions/runners/{runner_id}/labels": Operation<"/enterprises/{enterprise}/actions/runners/{runner_id}/labels", "post">; + /** + * @see https://docs.github.com/rest/reference/gists#create-a-gist + */ + "POST /gists": Operation<"/gists", "post">; + /** + * @see https://docs.github.com/rest/reference/gists#create-a-gist-comment + */ + "POST /gists/{gist_id}/comments": Operation<"/gists/{gist_id}/comments", "post">; + /** + * @see https://docs.github.com/rest/reference/gists#fork-a-gist + */ + "POST /gists/{gist_id}/forks": Operation<"/gists/{gist_id}/forks", "post">; + /** + * @see https://docs.github.com/rest/reference/markdown#render-a-markdown-document + */ + "POST /markdown": Operation<"/markdown", "post">; + /** + * @see https://docs.github.com/rest/reference/markdown#render-a-markdown-document-in-raw-mode + */ + "POST /markdown/raw": Operation<"/markdown/raw", "post">; + /** + * @see https://docs.github.com/rest/reference/actions#create-a-self-hosted-runner-group-for-an-organization + */ + "POST /orgs/{org}/actions/runner-groups": Operation<"/orgs/{org}/actions/runner-groups", "post">; + /** + * @see https://docs.github.com/rest/reference/actions#create-a-registration-token-for-an-organization + */ + "POST /orgs/{org}/actions/runners/registration-token": Operation<"/orgs/{org}/actions/runners/registration-token", "post">; + /** + * @see https://docs.github.com/rest/reference/actions#create-a-remove-token-for-an-organization + */ + "POST /orgs/{org}/actions/runners/remove-token": Operation<"/orgs/{org}/actions/runners/remove-token", "post">; + /** + * @see https://docs.github.com/rest/reference/actions#add-custom-labels-to-a-self-hosted-runner-for-an-organization + */ + "POST /orgs/{org}/actions/runners/{runner_id}/labels": Operation<"/orgs/{org}/actions/runners/{runner_id}/labels", "post">; + /** + * @see https://docs.github.com/rest/reference/orgs#create-an-organization-webhook + */ + "POST /orgs/{org}/hooks": Operation<"/orgs/{org}/hooks", "post">; + /** + * @see https://docs.github.com/rest/reference/orgs#redeliver-a-delivery-for-an-organization-webhook + */ + "POST /orgs/{org}/hooks/{hook_id}/deliveries/{delivery_id}/attempts": Operation<"/orgs/{org}/hooks/{hook_id}/deliveries/{delivery_id}/attempts", "post">; + /** + * @see https://docs.github.com/rest/reference/orgs#ping-an-organization-webhook + */ + "POST /orgs/{org}/hooks/{hook_id}/pings": Operation<"/orgs/{org}/hooks/{hook_id}/pings", "post">; + /** + * @see https://docs.github.com/rest/reference/orgs#create-an-organization-invitation + */ + "POST /orgs/{org}/invitations": Operation<"/orgs/{org}/invitations", "post">; + /** + * @see https://docs.github.com/rest/reference/codespaces + */ + "POST /orgs/{org}/members/{username}/codespaces/{codespace_name}/stop": Operation<"/orgs/{org}/members/{username}/codespaces/{codespace_name}/stop", "post">; + /** + * @see https://docs.github.com/rest/reference/migrations#start-an-organization-migration + */ + "POST /orgs/{org}/migrations": Operation<"/orgs/{org}/migrations", "post">; + /** + * @see https://docs.github.com/rest/reference/packages#restore-a-package-for-an-organization + */ + "POST /orgs/{org}/packages/{package_type}/{package_name}/restore{?token}": Operation<"/orgs/{org}/packages/{package_type}/{package_name}/restore", "post">; + /** + * @see https://docs.github.com/rest/reference/packages#restore-a-package-version-for-an-organization + */ + "POST /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}/restore": Operation<"/orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}/restore", "post">; + /** + * @see https://docs.github.com/rest/reference/projects#create-an-organization-project + */ + "POST /orgs/{org}/projects": Operation<"/orgs/{org}/projects", "post">; + /** + * @see https://docs.github.com/rest/reference/repos#create-an-organization-repository + */ + "POST /orgs/{org}/repos": Operation<"/orgs/{org}/repos", "post">; + /** + * @see https://docs.github.com/rest/reference/teams#create-a-team + */ + "POST /orgs/{org}/teams": Operation<"/orgs/{org}/teams", "post">; + /** + * @see https://docs.github.com/rest/reference/teams#create-a-discussion + */ + "POST /orgs/{org}/teams/{team_slug}/discussions": Operation<"/orgs/{org}/teams/{team_slug}/discussions", "post">; + /** + * @see https://docs.github.com/rest/reference/teams#create-a-discussion-comment + */ + "POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments": Operation<"/orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments", "post">; + /** + * @see https://docs.github.com/rest/reference/reactions#create-reaction-for-a-team-discussion-comment + */ + "POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions": Operation<"/orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions", "post">; + /** + * @see https://docs.github.com/rest/reference/reactions#create-reaction-for-a-team-discussion + */ + "POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions": Operation<"/orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions", "post">; + /** + * @see https://docs.github.com/rest/reference/projects#move-a-project-card + */ + "POST /projects/columns/cards/{card_id}/moves": Operation<"/projects/columns/cards/{card_id}/moves", "post">; + /** + * @see https://docs.github.com/rest/reference/projects#create-a-project-card + */ + "POST /projects/columns/{column_id}/cards": Operation<"/projects/columns/{column_id}/cards", "post">; + /** + * @see https://docs.github.com/rest/reference/projects#move-a-project-column + */ + "POST /projects/columns/{column_id}/moves": Operation<"/projects/columns/{column_id}/moves", "post">; + /** + * @see https://docs.github.com/rest/reference/projects#create-a-project-column + */ + "POST /projects/{project_id}/columns": Operation<"/projects/{project_id}/columns", "post">; + /** + * @see https://docs.github.com/rest/reference/actions#re-run-job-for-workflow-run + */ + "POST /repos/{owner}/{repo}/actions/jobs/{job_id}/rerun": Operation<"/repos/{owner}/{repo}/actions/jobs/{job_id}/rerun", "post">; + /** + * @see https://docs.github.com/rest/reference/actions#create-a-registration-token-for-a-repository + */ + "POST /repos/{owner}/{repo}/actions/runners/registration-token": Operation<"/repos/{owner}/{repo}/actions/runners/registration-token", "post">; + /** + * @see https://docs.github.com/rest/reference/actions#create-a-remove-token-for-a-repository + */ + "POST /repos/{owner}/{repo}/actions/runners/remove-token": Operation<"/repos/{owner}/{repo}/actions/runners/remove-token", "post">; + /** + * @see https://docs.github.com/rest/reference/actions#add-custom-labels-to-a-self-hosted-runner-for-a-repository + */ + "POST /repos/{owner}/{repo}/actions/runners/{runner_id}/labels": Operation<"/repos/{owner}/{repo}/actions/runners/{runner_id}/labels", "post">; + /** + * @see https://docs.github.com/rest/reference/actions#approve-a-workflow-run-for-a-fork-pull-request + */ + "POST /repos/{owner}/{repo}/actions/runs/{run_id}/approve": Operation<"/repos/{owner}/{repo}/actions/runs/{run_id}/approve", "post">; + /** + * @see https://docs.github.com/rest/reference/actions#cancel-a-workflow-run + */ + "POST /repos/{owner}/{repo}/actions/runs/{run_id}/cancel": Operation<"/repos/{owner}/{repo}/actions/runs/{run_id}/cancel", "post">; + /** + * @see https://docs.github.com/rest/reference/actions#review-pending-deployments-for-a-workflow-run + */ + "POST /repos/{owner}/{repo}/actions/runs/{run_id}/pending_deployments": Operation<"/repos/{owner}/{repo}/actions/runs/{run_id}/pending_deployments", "post">; + /** + * @see https://docs.github.com/rest/reference/actions#re-run-a-workflow + */ + "POST /repos/{owner}/{repo}/actions/runs/{run_id}/rerun": Operation<"/repos/{owner}/{repo}/actions/runs/{run_id}/rerun", "post">; + /** + * @see https://docs.github.com/rest/reference/actions#re-run-workflow-failed-jobs + */ + "POST /repos/{owner}/{repo}/actions/runs/{run_id}/rerun-failed-jobs": Operation<"/repos/{owner}/{repo}/actions/runs/{run_id}/rerun-failed-jobs", "post">; + /** + * @see https://docs.github.com/rest/reference/actions#create-a-workflow-dispatch-event + */ + "POST /repos/{owner}/{repo}/actions/workflows/{workflow_id}/dispatches": Operation<"/repos/{owner}/{repo}/actions/workflows/{workflow_id}/dispatches", "post">; + /** + * @see https://docs.github.com/v3/repos#create-an-autolink + */ + "POST /repos/{owner}/{repo}/autolinks": Operation<"/repos/{owner}/{repo}/autolinks", "post">; + /** + * @see https://docs.github.com/rest/reference/repos#set-admin-branch-protection + */ + "POST /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins": Operation<"/repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins", "post">; + /** + * @see https://docs.github.com/rest/reference/repos#create-commit-signature-protection + */ + "POST /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures": Operation<"/repos/{owner}/{repo}/branches/{branch}/protection/required_signatures", "post">; + /** + * @see https://docs.github.com/rest/reference/repos#add-status-check-contexts + */ + "POST /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts": Operation<"/repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts", "post">; + /** + * @see https://docs.github.com/rest/reference/repos#add-app-access-restrictions + */ + "POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps": Operation<"/repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps", "post">; + /** + * @see https://docs.github.com/rest/reference/repos#add-team-access-restrictions + */ + "POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams": Operation<"/repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams", "post">; + /** + * @see https://docs.github.com/rest/reference/repos#add-user-access-restrictions + */ + "POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users": Operation<"/repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users", "post">; + /** + * @see https://docs.github.com/rest/reference/repos#rename-a-branch + */ + "POST /repos/{owner}/{repo}/branches/{branch}/rename": Operation<"/repos/{owner}/{repo}/branches/{branch}/rename", "post">; + /** + * @see https://docs.github.com/rest/reference/checks#create-a-check-run + */ + "POST /repos/{owner}/{repo}/check-runs": Operation<"/repos/{owner}/{repo}/check-runs", "post">; + /** + * @see https://docs.github.com/rest/reference/checks#rerequest-a-check-run + */ + "POST /repos/{owner}/{repo}/check-runs/{check_run_id}/rerequest": Operation<"/repos/{owner}/{repo}/check-runs/{check_run_id}/rerequest", "post">; + /** + * @see https://docs.github.com/rest/reference/checks#create-a-check-suite + */ + "POST /repos/{owner}/{repo}/check-suites": Operation<"/repos/{owner}/{repo}/check-suites", "post">; + /** + * @see https://docs.github.com/rest/reference/checks#rerequest-a-check-suite + */ + "POST /repos/{owner}/{repo}/check-suites/{check_suite_id}/rerequest": Operation<"/repos/{owner}/{repo}/check-suites/{check_suite_id}/rerequest", "post">; + /** + * @see https://docs.github.com/rest/reference/code-scanning#upload-a-sarif-file + */ + "POST /repos/{owner}/{repo}/code-scanning/sarifs": Operation<"/repos/{owner}/{repo}/code-scanning/sarifs", "post">; + /** + * @see https://docs.github.com/rest/reference/codespaces#create-a-codespace-in-a-repository + */ + "POST /repos/{owner}/{repo}/codespaces": Operation<"/repos/{owner}/{repo}/codespaces", "post">; + /** + * @see https://docs.github.com/rest/reference/reactions#create-reaction-for-a-commit-comment + */ + "POST /repos/{owner}/{repo}/comments/{comment_id}/reactions": Operation<"/repos/{owner}/{repo}/comments/{comment_id}/reactions", "post">; + /** + * @see https://docs.github.com/rest/reference/repos#create-a-commit-comment + */ + "POST /repos/{owner}/{repo}/commits/{commit_sha}/comments": Operation<"/repos/{owner}/{repo}/commits/{commit_sha}/comments", "post">; + /** + * @see https://docs.github.com/rest/reference/dependency-graph#create-a-snapshot-of-dependencies-for-a-repository + */ + "POST /repos/{owner}/{repo}/dependency-graph/snapshots": Operation<"/repos/{owner}/{repo}/dependency-graph/snapshots", "post">; + /** + * @see https://docs.github.com/rest/reference/repos#create-a-deployment + */ + "POST /repos/{owner}/{repo}/deployments": Operation<"/repos/{owner}/{repo}/deployments", "post">; + /** + * @see https://docs.github.com/rest/reference/repos#create-a-deployment-status + */ + "POST /repos/{owner}/{repo}/deployments/{deployment_id}/statuses": Operation<"/repos/{owner}/{repo}/deployments/{deployment_id}/statuses", "post">; + /** + * @see https://docs.github.com/rest/reference/repos#create-a-repository-dispatch-event + */ + "POST /repos/{owner}/{repo}/dispatches": Operation<"/repos/{owner}/{repo}/dispatches", "post">; + /** + * @see https://docs.github.com/rest/reference/repos#create-a-fork + */ + "POST /repos/{owner}/{repo}/forks": Operation<"/repos/{owner}/{repo}/forks", "post">; + /** + * @see https://docs.github.com/rest/reference/git#create-a-blob + */ + "POST /repos/{owner}/{repo}/git/blobs": Operation<"/repos/{owner}/{repo}/git/blobs", "post">; + /** + * @see https://docs.github.com/rest/reference/git#create-a-commit + */ + "POST /repos/{owner}/{repo}/git/commits": Operation<"/repos/{owner}/{repo}/git/commits", "post">; + /** + * @see https://docs.github.com/rest/reference/git#create-a-reference + */ + "POST /repos/{owner}/{repo}/git/refs": Operation<"/repos/{owner}/{repo}/git/refs", "post">; + /** + * @see https://docs.github.com/rest/reference/git#create-a-tag-object + */ + "POST /repos/{owner}/{repo}/git/tags": Operation<"/repos/{owner}/{repo}/git/tags", "post">; + /** + * @see https://docs.github.com/rest/reference/git#create-a-tree + */ + "POST /repos/{owner}/{repo}/git/trees": Operation<"/repos/{owner}/{repo}/git/trees", "post">; + /** + * @see https://docs.github.com/rest/reference/repos#create-a-repository-webhook + */ + "POST /repos/{owner}/{repo}/hooks": Operation<"/repos/{owner}/{repo}/hooks", "post">; + /** + * @see https://docs.github.com/rest/reference/repos#redeliver-a-delivery-for-a-repository-webhook + */ + "POST /repos/{owner}/{repo}/hooks/{hook_id}/deliveries/{delivery_id}/attempts": Operation<"/repos/{owner}/{repo}/hooks/{hook_id}/deliveries/{delivery_id}/attempts", "post">; + /** + * @see https://docs.github.com/rest/reference/repos#ping-a-repository-webhook + */ + "POST /repos/{owner}/{repo}/hooks/{hook_id}/pings": Operation<"/repos/{owner}/{repo}/hooks/{hook_id}/pings", "post">; + /** + * @see https://docs.github.com/rest/reference/repos#test-the-push-repository-webhook + */ + "POST /repos/{owner}/{repo}/hooks/{hook_id}/tests": Operation<"/repos/{owner}/{repo}/hooks/{hook_id}/tests", "post">; + /** + * @see https://docs.github.com/rest/reference/issues#create-an-issue + */ + "POST /repos/{owner}/{repo}/issues": Operation<"/repos/{owner}/{repo}/issues", "post">; + /** + * @see https://docs.github.com/rest/reference/reactions#create-reaction-for-an-issue-comment + */ + "POST /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions": Operation<"/repos/{owner}/{repo}/issues/comments/{comment_id}/reactions", "post">; + /** + * @see https://docs.github.com/rest/reference/issues#add-assignees-to-an-issue + */ + "POST /repos/{owner}/{repo}/issues/{issue_number}/assignees": Operation<"/repos/{owner}/{repo}/issues/{issue_number}/assignees", "post">; + /** + * @see https://docs.github.com/rest/reference/issues#create-an-issue-comment + */ + "POST /repos/{owner}/{repo}/issues/{issue_number}/comments": Operation<"/repos/{owner}/{repo}/issues/{issue_number}/comments", "post">; + /** + * @see https://docs.github.com/rest/reference/issues#add-labels-to-an-issue + */ + "POST /repos/{owner}/{repo}/issues/{issue_number}/labels": Operation<"/repos/{owner}/{repo}/issues/{issue_number}/labels", "post">; + /** + * @see https://docs.github.com/rest/reference/reactions#create-reaction-for-an-issue + */ + "POST /repos/{owner}/{repo}/issues/{issue_number}/reactions": Operation<"/repos/{owner}/{repo}/issues/{issue_number}/reactions", "post">; + /** + * @see https://docs.github.com/rest/reference/repos#create-a-deploy-key + */ + "POST /repos/{owner}/{repo}/keys": Operation<"/repos/{owner}/{repo}/keys", "post">; + /** + * @see https://docs.github.com/rest/reference/issues#create-a-label + */ + "POST /repos/{owner}/{repo}/labels": Operation<"/repos/{owner}/{repo}/labels", "post">; + /** + * @see https://docs.github.com/rest/reference/repos#sync-a-fork-branch-with-the-upstream-repository + */ + "POST /repos/{owner}/{repo}/merge-upstream": Operation<"/repos/{owner}/{repo}/merge-upstream", "post">; + /** + * @see https://docs.github.com/rest/reference/repos#merge-a-branch + */ + "POST /repos/{owner}/{repo}/merges": Operation<"/repos/{owner}/{repo}/merges", "post">; + /** + * @see https://docs.github.com/rest/reference/issues#create-a-milestone + */ + "POST /repos/{owner}/{repo}/milestones": Operation<"/repos/{owner}/{repo}/milestones", "post">; + /** + * @see https://docs.github.com/rest/reference/repos#create-a-github-pages-site + */ + "POST /repos/{owner}/{repo}/pages": Operation<"/repos/{owner}/{repo}/pages", "post">; + /** + * @see https://docs.github.com/rest/reference/repos#request-a-github-pages-build + */ + "POST /repos/{owner}/{repo}/pages/builds": Operation<"/repos/{owner}/{repo}/pages/builds", "post">; + /** + * @see https://docs.github.com/rest/reference/projects#create-a-repository-project + */ + "POST /repos/{owner}/{repo}/projects": Operation<"/repos/{owner}/{repo}/projects", "post">; + /** + * @see https://docs.github.com/rest/reference/pulls#create-a-pull-request + */ + "POST /repos/{owner}/{repo}/pulls": Operation<"/repos/{owner}/{repo}/pulls", "post">; + /** + * @see https://docs.github.com/rest/reference/reactions#create-reaction-for-a-pull-request-review-comment + */ + "POST /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions": Operation<"/repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions", "post">; + /** + * @see https://docs.github.com/rest/reference/codespaces#create-a-codespace-from-a-pull-request + */ + "POST /repos/{owner}/{repo}/pulls/{pull_number}/codespaces": Operation<"/repos/{owner}/{repo}/pulls/{pull_number}/codespaces", "post">; + /** + * @see https://docs.github.com/rest/reference/pulls#create-a-review-comment-for-a-pull-request + */ + "POST /repos/{owner}/{repo}/pulls/{pull_number}/comments": Operation<"/repos/{owner}/{repo}/pulls/{pull_number}/comments", "post">; + /** + * @see https://docs.github.com/rest/reference/pulls#create-a-reply-for-a-review-comment + */ + "POST /repos/{owner}/{repo}/pulls/{pull_number}/comments/{comment_id}/replies": Operation<"/repos/{owner}/{repo}/pulls/{pull_number}/comments/{comment_id}/replies", "post">; + /** + * @see https://docs.github.com/rest/reference/pulls#request-reviewers-for-a-pull-request + */ + "POST /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers": Operation<"/repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers", "post">; + /** + * @see https://docs.github.com/rest/reference/pulls#create-a-review-for-a-pull-request + */ + "POST /repos/{owner}/{repo}/pulls/{pull_number}/reviews": Operation<"/repos/{owner}/{repo}/pulls/{pull_number}/reviews", "post">; + /** + * @see https://docs.github.com/rest/reference/pulls#submit-a-review-for-a-pull-request + */ + "POST /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/events": Operation<"/repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/events", "post">; + /** + * @see https://docs.github.com/rest/reference/repos#create-a-release + */ + "POST /repos/{owner}/{repo}/releases": Operation<"/repos/{owner}/{repo}/releases", "post">; + /** + * @see https://docs.github.com/rest/reference/repos#generate-release-notes + */ + "POST /repos/{owner}/{repo}/releases/generate-notes": Operation<"/repos/{owner}/{repo}/releases/generate-notes", "post">; + /** + * @see https://docs.github.com/rest/reference/reactions/#create-reaction-for-a-release + */ + "POST /repos/{owner}/{repo}/releases/{release_id}/reactions": Operation<"/repos/{owner}/{repo}/releases/{release_id}/reactions", "post">; + /** + * @see https://docs.github.com/rest/reference/repos#create-a-commit-status + */ + "POST /repos/{owner}/{repo}/statuses/{sha}": Operation<"/repos/{owner}/{repo}/statuses/{sha}", "post">; + /** + * @see https://docs.github.com/rest/reference/repos#create-tag-protection-state-for-a-repository + */ + "POST /repos/{owner}/{repo}/tags/protection": Operation<"/repos/{owner}/{repo}/tags/protection", "post">; + /** + * @see https://docs.github.com/rest/reference/repos#transfer-a-repository + */ + "POST /repos/{owner}/{repo}/transfer": Operation<"/repos/{owner}/{repo}/transfer", "post">; + /** + * @see https://docs.github.com/rest/reference/repos#create-a-repository-using-a-template + */ + "POST /repos/{template_owner}/{template_repo}/generate": Operation<"/repos/{template_owner}/{template_repo}/generate", "post">; + /** + * @see https://docs.github.com/rest/reference/enterprise-admin#provision-a-scim-enterprise-group-and-invite-users + */ + "POST /scim/v2/enterprises/{enterprise}/Groups": Operation<"/scim/v2/enterprises/{enterprise}/Groups", "post">; + /** + * @see https://docs.github.com/rest/reference/enterprise-admin#provision-and-invite-a-scim-enterprise-user + */ + "POST /scim/v2/enterprises/{enterprise}/Users": Operation<"/scim/v2/enterprises/{enterprise}/Users", "post">; + /** + * @see https://docs.github.com/rest/reference/scim#provision-and-invite-a-scim-user + */ + "POST /scim/v2/organizations/{org}/Users": Operation<"/scim/v2/organizations/{org}/Users", "post">; + /** + * @see https://docs.github.com/rest/reference/teams#create-a-discussion-legacy + */ + "POST /teams/{team_id}/discussions": Operation<"/teams/{team_id}/discussions", "post">; + /** + * @see https://docs.github.com/rest/reference/teams#create-a-discussion-comment-legacy + */ + "POST /teams/{team_id}/discussions/{discussion_number}/comments": Operation<"/teams/{team_id}/discussions/{discussion_number}/comments", "post">; + /** + * @see https://docs.github.com/rest/reference/reactions/#create-reaction-for-a-team-discussion-comment-legacy + */ + "POST /teams/{team_id}/discussions/{discussion_number}/comments/{comment_number}/reactions": Operation<"/teams/{team_id}/discussions/{discussion_number}/comments/{comment_number}/reactions", "post">; + /** + * @see https://docs.github.com/rest/reference/reactions/#create-reaction-for-a-team-discussion-legacy + */ + "POST /teams/{team_id}/discussions/{discussion_number}/reactions": Operation<"/teams/{team_id}/discussions/{discussion_number}/reactions", "post">; + /** + * @see https://docs.github.com/rest/reference/codespaces#create-a-codespace-for-the-authenticated-user + */ + "POST /user/codespaces": Operation<"/user/codespaces", "post">; + /** + * @see + */ + "POST /user/codespaces/{codespace_name}/exports": Operation<"/user/codespaces/{codespace_name}/exports", "post">; + /** + * @see https://docs.github.com/rest/reference/codespaces#start-a-codespace-for-the-authenticated-user + */ + "POST /user/codespaces/{codespace_name}/start": Operation<"/user/codespaces/{codespace_name}/start", "post">; + /** + * @see https://docs.github.com/rest/reference/codespaces#stop-a-codespace-for-the-authenticated-user + */ + "POST /user/codespaces/{codespace_name}/stop": Operation<"/user/codespaces/{codespace_name}/stop", "post">; + /** + * @see https://docs.github.com/rest/reference/users#add-an-email-address-for-the-authenticated-user + */ + "POST /user/emails": Operation<"/user/emails", "post">; + /** + * @see https://docs.github.com/rest/reference/users#create-a-gpg-key-for-the-authenticated-user + */ + "POST /user/gpg_keys": Operation<"/user/gpg_keys", "post">; + /** + * @see https://docs.github.com/rest/reference/users#create-a-public-ssh-key-for-the-authenticated-user + */ + "POST /user/keys": Operation<"/user/keys", "post">; + /** + * @see https://docs.github.com/rest/reference/migrations#start-a-user-migration + */ + "POST /user/migrations": Operation<"/user/migrations", "post">; + /** + * @see https://docs.github.com/rest/reference/packages#restore-a-package-for-the-authenticated-user + */ + "POST /user/packages/{package_type}/{package_name}/restore{?token}": Operation<"/user/packages/{package_type}/{package_name}/restore", "post">; + /** + * @see https://docs.github.com/rest/reference/packages#restore-a-package-version-for-the-authenticated-user + */ + "POST /user/packages/{package_type}/{package_name}/versions/{package_version_id}/restore": Operation<"/user/packages/{package_type}/{package_name}/versions/{package_version_id}/restore", "post">; + /** + * @see https://docs.github.com/rest/reference/projects#create-a-user-project + */ + "POST /user/projects": Operation<"/user/projects", "post">; + /** + * @see https://docs.github.com/rest/reference/repos#create-a-repository-for-the-authenticated-user + */ + "POST /user/repos": Operation<"/user/repos", "post">; + /** + * @see https://docs.github.com/rest/reference/packages#restore-a-package-for-a-user + */ + "POST /users/{username}/packages/{package_type}/{package_name}/restore{?token}": Operation<"/users/{username}/packages/{package_type}/{package_name}/restore", "post">; + /** + * @see https://docs.github.com/rest/reference/packages#restore-a-package-version-for-a-user + */ + "POST /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}/restore": Operation<"/users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}/restore", "post">; + /** + * @see https://docs.github.com/rest/reference/repos#upload-a-release-asset + */ + "POST {origin}/repos/{owner}/{repo}/releases/{release_id}/assets{?name,label}": Operation<"/repos/{owner}/{repo}/releases/{release_id}/assets", "post">; + /** + * @see https://docs.github.com/rest/reference/apps#suspend-an-app-installation + */ + "PUT /app/installations/{installation_id}/suspended": Operation<"/app/installations/{installation_id}/suspended", "put">; + /** + * @see https://docs.github.com/rest/reference/oauth-authorizations#get-or-create-an-authorization-for-a-specific-app + */ + "PUT /authorizations/clients/{client_id}": Operation<"/authorizations/clients/{client_id}", "put">; + /** + * @see https://docs.github.com/rest/reference/oauth-authorizations#get-or-create-an-authorization-for-a-specific-app-and-fingerprint + */ + "PUT /authorizations/clients/{client_id}/{fingerprint}": Operation<"/authorizations/clients/{client_id}/{fingerprint}", "put">; + /** + * @see https://docs.github.com/rest/reference/actions/oidc#set-actions-oidc-custom-issuer-policy-for-enterprise + */ + "PUT /enterprises/{enterprise}/actions/oidc/customization/issuer": Operation<"/enterprises/{enterprise}/actions/oidc/customization/issuer", "put">; + /** + * @see https://docs.github.com/rest/reference/actions#set-github-actions-permissions-for-an-enterprise + */ + "PUT /enterprises/{enterprise}/actions/permissions": Operation<"/enterprises/{enterprise}/actions/permissions", "put">; + /** + * @see https://docs.github.com/rest/reference/actions#set-selected-organizations-enabled-for-github-actions-in-an-enterprise + */ + "PUT /enterprises/{enterprise}/actions/permissions/organizations": Operation<"/enterprises/{enterprise}/actions/permissions/organizations", "put">; + /** + * @see https://docs.github.com/rest/reference/actions#enable-a-selected-organization-for-github-actions-in-an-enterprise + */ + "PUT /enterprises/{enterprise}/actions/permissions/organizations/{org_id}": Operation<"/enterprises/{enterprise}/actions/permissions/organizations/{org_id}", "put">; + /** + * @see https://docs.github.com/rest/reference/actions#set-allowed-actions-for-an-enterprise + */ + "PUT /enterprises/{enterprise}/actions/permissions/selected-actions": Operation<"/enterprises/{enterprise}/actions/permissions/selected-actions", "put">; + /** + * @see https://docs.github.com/rest/reference/actions#set-default-workflow-permissions-for-an-enterprise + */ + "PUT /enterprises/{enterprise}/actions/permissions/workflow": Operation<"/enterprises/{enterprise}/actions/permissions/workflow", "put">; + /** + * @see https://docs.github.com/rest/reference/actions#set-organization-access-to-a-self-hosted-runner-group-in-an-enterprise + */ + "PUT /enterprises/{enterprise}/actions/runner-groups/{runner_group_id}/organizations": Operation<"/enterprises/{enterprise}/actions/runner-groups/{runner_group_id}/organizations", "put">; + /** + * @see https://docs.github.com/rest/reference/actions#add-organization-access-to-a-self-hosted-runner-group-in-an-enterprise + */ + "PUT /enterprises/{enterprise}/actions/runner-groups/{runner_group_id}/organizations/{org_id}": Operation<"/enterprises/{enterprise}/actions/runner-groups/{runner_group_id}/organizations/{org_id}", "put">; + /** + * @see https://docs.github.com/rest/reference/actions#set-self-hosted-runners-in-a-group-for-an-enterprise + */ + "PUT /enterprises/{enterprise}/actions/runner-groups/{runner_group_id}/runners": Operation<"/enterprises/{enterprise}/actions/runner-groups/{runner_group_id}/runners", "put">; + /** + * @see https://docs.github.com/rest/reference/actions#add-a-self-hosted-runner-to-a-group-for-an-enterprise + */ + "PUT /enterprises/{enterprise}/actions/runner-groups/{runner_group_id}/runners/{runner_id}": Operation<"/enterprises/{enterprise}/actions/runner-groups/{runner_group_id}/runners/{runner_id}", "put">; + /** + * @see https://docs.github.com/rest/reference/actions#set-custom-labels-for-a-self-hosted-runner-for-an-enterprise + */ + "PUT /enterprises/{enterprise}/actions/runners/{runner_id}/labels": Operation<"/enterprises/{enterprise}/actions/runners/{runner_id}/labels", "put">; + /** + * @see https://docs.github.com/rest/reference/gists#star-a-gist + */ + "PUT /gists/{gist_id}/star": Operation<"/gists/{gist_id}/star", "put">; + /** + * @see https://docs.github.com/rest/reference/activity#mark-notifications-as-read + */ + "PUT /notifications": Operation<"/notifications", "put">; + /** + * @see https://docs.github.com/rest/reference/activity#set-a-thread-subscription + */ + "PUT /notifications/threads/{thread_id}/subscription": Operation<"/notifications/threads/{thread_id}/subscription", "put">; + /** + * @see https://docs.github.com/rest/actions/oidc#set-the-customization-template-for-an-oidc-subject-claim-for-an-organization + */ + "PUT /orgs/{org}/actions/oidc/customization/sub": Operation<"/orgs/{org}/actions/oidc/customization/sub", "put">; + /** + * @see https://docs.github.com/rest/reference/actions#set-github-actions-permissions-for-an-organization + */ + "PUT /orgs/{org}/actions/permissions": Operation<"/orgs/{org}/actions/permissions", "put">; + /** + * @see https://docs.github.com/rest/reference/actions#set-selected-repositories-enabled-for-github-actions-in-an-organization + */ + "PUT /orgs/{org}/actions/permissions/repositories": Operation<"/orgs/{org}/actions/permissions/repositories", "put">; + /** + * @see https://docs.github.com/rest/reference/actions#enable-a-selected-repository-for-github-actions-in-an-organization + */ + "PUT /orgs/{org}/actions/permissions/repositories/{repository_id}": Operation<"/orgs/{org}/actions/permissions/repositories/{repository_id}", "put">; + /** + * @see https://docs.github.com/rest/reference/actions#set-allowed-actions-for-an-organization + */ + "PUT /orgs/{org}/actions/permissions/selected-actions": Operation<"/orgs/{org}/actions/permissions/selected-actions", "put">; + /** + * @see https://docs.github.com/rest/reference/actions#set-default-workflow-permissions + */ + "PUT /orgs/{org}/actions/permissions/workflow": Operation<"/orgs/{org}/actions/permissions/workflow", "put">; + /** + * @see https://docs.github.com/rest/reference/actions#set-repository-access-to-a-self-hosted-runner-group-in-an-organization + */ + "PUT /orgs/{org}/actions/runner-groups/{runner_group_id}/repositories": Operation<"/orgs/{org}/actions/runner-groups/{runner_group_id}/repositories", "put">; + /** + * @see https://docs.github.com/rest/reference/actions#add-repository-acess-to-a-self-hosted-runner-group-in-an-organization + */ + "PUT /orgs/{org}/actions/runner-groups/{runner_group_id}/repositories/{repository_id}": Operation<"/orgs/{org}/actions/runner-groups/{runner_group_id}/repositories/{repository_id}", "put">; + /** + * @see https://docs.github.com/rest/reference/actions#set-self-hosted-runners-in-a-group-for-an-organization + */ + "PUT /orgs/{org}/actions/runner-groups/{runner_group_id}/runners": Operation<"/orgs/{org}/actions/runner-groups/{runner_group_id}/runners", "put">; + /** + * @see https://docs.github.com/rest/reference/actions#add-a-self-hosted-runner-to-a-group-for-an-organization + */ + "PUT /orgs/{org}/actions/runner-groups/{runner_group_id}/runners/{runner_id}": Operation<"/orgs/{org}/actions/runner-groups/{runner_group_id}/runners/{runner_id}", "put">; + /** + * @see https://docs.github.com/rest/reference/actions#set-custom-labels-for-a-self-hosted-runner-for-an-organization + */ + "PUT /orgs/{org}/actions/runners/{runner_id}/labels": Operation<"/orgs/{org}/actions/runners/{runner_id}/labels", "put">; + /** + * @see https://docs.github.com/rest/reference/actions#create-or-update-an-organization-secret + */ + "PUT /orgs/{org}/actions/secrets/{secret_name}": Operation<"/orgs/{org}/actions/secrets/{secret_name}", "put">; + /** + * @see https://docs.github.com/rest/reference/actions#set-selected-repositories-for-an-organization-secret + */ + "PUT /orgs/{org}/actions/secrets/{secret_name}/repositories": Operation<"/orgs/{org}/actions/secrets/{secret_name}/repositories", "put">; + /** + * @see https://docs.github.com/rest/reference/actions#add-selected-repository-to-an-organization-secret + */ + "PUT /orgs/{org}/actions/secrets/{secret_name}/repositories/{repository_id}": Operation<"/orgs/{org}/actions/secrets/{secret_name}/repositories/{repository_id}", "put">; + /** + * @see https://docs.github.com/rest/reference/orgs#block-a-user-from-an-organization + */ + "PUT /orgs/{org}/blocks/{username}": Operation<"/orgs/{org}/blocks/{username}", "put">; + /** + * @see https://docs.github.com/rest/reference/dependabot#create-or-update-an-organization-secret + */ + "PUT /orgs/{org}/dependabot/secrets/{secret_name}": Operation<"/orgs/{org}/dependabot/secrets/{secret_name}", "put">; + /** + * @see https://docs.github.com/rest/reference/dependabot#set-selected-repositories-for-an-organization-secret + */ + "PUT /orgs/{org}/dependabot/secrets/{secret_name}/repositories": Operation<"/orgs/{org}/dependabot/secrets/{secret_name}/repositories", "put">; + /** + * @see https://docs.github.com/rest/reference/dependabot#add-selected-repository-to-an-organization-secret + */ + "PUT /orgs/{org}/dependabot/secrets/{secret_name}/repositories/{repository_id}": Operation<"/orgs/{org}/dependabot/secrets/{secret_name}/repositories/{repository_id}", "put">; + /** + * @see https://docs.github.com/rest/reference/interactions#set-interaction-restrictions-for-an-organization + */ + "PUT /orgs/{org}/interaction-limits": Operation<"/orgs/{org}/interaction-limits", "put">; + /** + * @see https://docs.github.com/rest/reference/orgs#set-organization-membership-for-a-user + */ + "PUT /orgs/{org}/memberships/{username}": Operation<"/orgs/{org}/memberships/{username}", "put">; + /** + * @see https://docs.github.com/rest/reference/orgs#convert-an-organization-member-to-outside-collaborator + */ + "PUT /orgs/{org}/outside_collaborators/{username}": Operation<"/orgs/{org}/outside_collaborators/{username}", "put">; + /** + * @see https://docs.github.com/rest/reference/orgs#set-public-organization-membership-for-the-authenticated-user + */ + "PUT /orgs/{org}/public_members/{username}": Operation<"/orgs/{org}/public_members/{username}", "put">; + /** + * @see https://docs.github.com/rest/reference/teams#add-or-update-team-membership-for-a-user + */ + "PUT /orgs/{org}/teams/{team_slug}/memberships/{username}": Operation<"/orgs/{org}/teams/{team_slug}/memberships/{username}", "put">; + /** + * @see https://docs.github.com/rest/reference/teams#add-or-update-team-project-permissions + */ + "PUT /orgs/{org}/teams/{team_slug}/projects/{project_id}": Operation<"/orgs/{org}/teams/{team_slug}/projects/{project_id}", "put">; + /** + * @see https://docs.github.com/rest/reference/teams/#add-or-update-team-repository-permissions + */ + "PUT /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}": Operation<"/orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}", "put">; + /** + * @see https://docs.github.com/rest/reference/projects#add-project-collaborator + */ + "PUT /projects/{project_id}/collaborators/{username}": Operation<"/projects/{project_id}/collaborators/{username}", "put">; + /** + * @see https://docs.github.com/rest/actions/oidc#set-the-opt-out-flag-of-an-oidc-subject-claim-customization-for-a-repository + */ + "PUT /repos/{owner}/{repo}/actions/oidc/customization/sub": Operation<"/repos/{owner}/{repo}/actions/oidc/customization/sub", "put">; + /** + * @see https://docs.github.com/rest/reference/actions#set-github-actions-permissions-for-a-repository + */ + "PUT /repos/{owner}/{repo}/actions/permissions": Operation<"/repos/{owner}/{repo}/actions/permissions", "put">; + /** + * @see https://docs.github.com/rest/reference/actions#set-workflow-access-to-a-repository + */ + "PUT /repos/{owner}/{repo}/actions/permissions/access": Operation<"/repos/{owner}/{repo}/actions/permissions/access", "put">; + /** + * @see https://docs.github.com/rest/reference/actions#set-allowed-actions-for-a-repository + */ + "PUT /repos/{owner}/{repo}/actions/permissions/selected-actions": Operation<"/repos/{owner}/{repo}/actions/permissions/selected-actions", "put">; + /** + * @see https://docs.github.com/rest/reference/actions#set-default-workflow-permissions-for-a-repository + */ + "PUT /repos/{owner}/{repo}/actions/permissions/workflow": Operation<"/repos/{owner}/{repo}/actions/permissions/workflow", "put">; + /** + * @see https://docs.github.com/rest/reference/actions#set-custom-labels-for-a-self-hosted-runner-for-a-repository + */ + "PUT /repos/{owner}/{repo}/actions/runners/{runner_id}/labels": Operation<"/repos/{owner}/{repo}/actions/runners/{runner_id}/labels", "put">; + /** + * @see https://docs.github.com/rest/reference/actions#create-or-update-a-repository-secret + */ + "PUT /repos/{owner}/{repo}/actions/secrets/{secret_name}": Operation<"/repos/{owner}/{repo}/actions/secrets/{secret_name}", "put">; + /** + * @see https://docs.github.com/rest/reference/actions#disable-a-workflow + */ + "PUT /repos/{owner}/{repo}/actions/workflows/{workflow_id}/disable": Operation<"/repos/{owner}/{repo}/actions/workflows/{workflow_id}/disable", "put">; + /** + * @see https://docs.github.com/rest/reference/actions#enable-a-workflow + */ + "PUT /repos/{owner}/{repo}/actions/workflows/{workflow_id}/enable": Operation<"/repos/{owner}/{repo}/actions/workflows/{workflow_id}/enable", "put">; + /** + * @see https://docs.github.com/rest/reference/repos#enable-automated-security-fixes + */ + "PUT /repos/{owner}/{repo}/automated-security-fixes": Operation<"/repos/{owner}/{repo}/automated-security-fixes", "put">; + /** + * @see https://docs.github.com/rest/reference/repos#update-branch-protection + */ + "PUT /repos/{owner}/{repo}/branches/{branch}/protection": Operation<"/repos/{owner}/{repo}/branches/{branch}/protection", "put">; + /** + * @see https://docs.github.com/rest/reference/repos#set-status-check-contexts + */ + "PUT /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts": Operation<"/repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts", "put">; + /** + * @see https://docs.github.com/rest/reference/repos#set-app-access-restrictions + */ + "PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps": Operation<"/repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps", "put">; + /** + * @see https://docs.github.com/rest/reference/repos#set-team-access-restrictions + */ + "PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams": Operation<"/repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams", "put">; + /** + * @see https://docs.github.com/rest/reference/repos#set-user-access-restrictions + */ + "PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users": Operation<"/repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users", "put">; + /** + * @see https://docs.github.com/rest/reference/codespaces#create-or-update-a-repository-secret + */ + "PUT /repos/{owner}/{repo}/codespaces/secrets/{secret_name}": Operation<"/repos/{owner}/{repo}/codespaces/secrets/{secret_name}", "put">; + /** + * @see https://docs.github.com/rest/reference/repos#add-a-repository-collaborator + */ + "PUT /repos/{owner}/{repo}/collaborators/{username}": Operation<"/repos/{owner}/{repo}/collaborators/{username}", "put">; + /** + * @see https://docs.github.com/rest/reference/repos#create-or-update-file-contents + */ + "PUT /repos/{owner}/{repo}/contents/{path}": Operation<"/repos/{owner}/{repo}/contents/{path}", "put">; + /** + * @see https://docs.github.com/rest/reference/dependabot#create-or-update-a-repository-secret + */ + "PUT /repos/{owner}/{repo}/dependabot/secrets/{secret_name}": Operation<"/repos/{owner}/{repo}/dependabot/secrets/{secret_name}", "put">; + /** + * @see https://docs.github.com/rest/reference/repos#create-or-update-an-environment + */ + "PUT /repos/{owner}/{repo}/environments/{environment_name}": Operation<"/repos/{owner}/{repo}/environments/{environment_name}", "put">; + /** + * @see https://docs.github.com/rest/reference/migrations#start-an-import + */ + "PUT /repos/{owner}/{repo}/import": Operation<"/repos/{owner}/{repo}/import", "put">; + /** + * @see https://docs.github.com/rest/reference/interactions#set-interaction-restrictions-for-a-repository + */ + "PUT /repos/{owner}/{repo}/interaction-limits": Operation<"/repos/{owner}/{repo}/interaction-limits", "put">; + /** + * @see https://docs.github.com/rest/reference/issues#set-labels-for-an-issue + */ + "PUT /repos/{owner}/{repo}/issues/{issue_number}/labels": Operation<"/repos/{owner}/{repo}/issues/{issue_number}/labels", "put">; + /** + * @see https://docs.github.com/rest/reference/issues#lock-an-issue + */ + "PUT /repos/{owner}/{repo}/issues/{issue_number}/lock": Operation<"/repos/{owner}/{repo}/issues/{issue_number}/lock", "put">; + /** + * @see https://docs.github.com/rest/reference/repos#enable-git-lfs-for-a-repository + */ + "PUT /repos/{owner}/{repo}/lfs": Operation<"/repos/{owner}/{repo}/lfs", "put">; + /** + * @see https://docs.github.com/rest/reference/activity#mark-repository-notifications-as-read + */ + "PUT /repos/{owner}/{repo}/notifications": Operation<"/repos/{owner}/{repo}/notifications", "put">; + /** + * @see https://docs.github.com/rest/reference/repos#update-information-about-a-github-pages-site + */ + "PUT /repos/{owner}/{repo}/pages": Operation<"/repos/{owner}/{repo}/pages", "put">; + /** + * @see https://docs.github.com/rest/reference/pulls#merge-a-pull-request + */ + "PUT /repos/{owner}/{repo}/pulls/{pull_number}/merge": Operation<"/repos/{owner}/{repo}/pulls/{pull_number}/merge", "put">; + /** + * @see https://docs.github.com/rest/reference/pulls#update-a-review-for-a-pull-request + */ + "PUT /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}": Operation<"/repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}", "put">; + /** + * @see https://docs.github.com/rest/reference/pulls#dismiss-a-review-for-a-pull-request + */ + "PUT /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/dismissals": Operation<"/repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/dismissals", "put">; + /** + * @see https://docs.github.com/rest/reference/pulls#update-a-pull-request-branch + */ + "PUT /repos/{owner}/{repo}/pulls/{pull_number}/update-branch": Operation<"/repos/{owner}/{repo}/pulls/{pull_number}/update-branch", "put">; + /** + * @see https://docs.github.com/rest/reference/activity#set-a-repository-subscription + */ + "PUT /repos/{owner}/{repo}/subscription": Operation<"/repos/{owner}/{repo}/subscription", "put">; + /** + * @see https://docs.github.com/rest/reference/repos#replace-all-repository-topics + */ + "PUT /repos/{owner}/{repo}/topics": Operation<"/repos/{owner}/{repo}/topics", "put">; + /** + * @see https://docs.github.com/rest/reference/repos#enable-vulnerability-alerts + */ + "PUT /repos/{owner}/{repo}/vulnerability-alerts": Operation<"/repos/{owner}/{repo}/vulnerability-alerts", "put">; + /** + * @see https://docs.github.com/rest/reference/actions#create-or-update-an-environment-secret + */ + "PUT /repositories/{repository_id}/environments/{environment_name}/secrets/{secret_name}": Operation<"/repositories/{repository_id}/environments/{environment_name}/secrets/{secret_name}", "put">; + /** + * @see https://docs.github.com/rest/reference/enterprise-admin#set-scim-information-for-a-provisioned-enterprise-group + */ + "PUT /scim/v2/enterprises/{enterprise}/Groups/{scim_group_id}": Operation<"/scim/v2/enterprises/{enterprise}/Groups/{scim_group_id}", "put">; + /** + * @see https://docs.github.com/rest/reference/enterprise-admin#set-scim-information-for-a-provisioned-enterprise-user + */ + "PUT /scim/v2/enterprises/{enterprise}/Users/{scim_user_id}": Operation<"/scim/v2/enterprises/{enterprise}/Users/{scim_user_id}", "put">; + /** + * @see https://docs.github.com/rest/reference/scim#set-scim-information-for-a-provisioned-user + */ + "PUT /scim/v2/organizations/{org}/Users/{scim_user_id}": Operation<"/scim/v2/organizations/{org}/Users/{scim_user_id}", "put">; + /** + * @see https://docs.github.com/rest/reference/teams#add-team-member-legacy + */ + "PUT /teams/{team_id}/members/{username}": Operation<"/teams/{team_id}/members/{username}", "put">; + /** + * @see https://docs.github.com/rest/reference/teams#add-or-update-team-membership-for-a-user-legacy + */ + "PUT /teams/{team_id}/memberships/{username}": Operation<"/teams/{team_id}/memberships/{username}", "put">; + /** + * @see https://docs.github.com/rest/reference/teams/#add-or-update-team-project-permissions-legacy + */ + "PUT /teams/{team_id}/projects/{project_id}": Operation<"/teams/{team_id}/projects/{project_id}", "put">; + /** + * @see https://docs.github.com/rest/reference/teams/#add-or-update-team-repository-permissions-legacy + */ + "PUT /teams/{team_id}/repos/{owner}/{repo}": Operation<"/teams/{team_id}/repos/{owner}/{repo}", "put">; + /** + * @see https://docs.github.com/rest/reference/users#block-a-user + */ + "PUT /user/blocks/{username}": Operation<"/user/blocks/{username}", "put">; + /** + * @see https://docs.github.com/rest/reference/codespaces#create-or-update-a-secret-for-the-authenticated-user + */ + "PUT /user/codespaces/secrets/{secret_name}": Operation<"/user/codespaces/secrets/{secret_name}", "put">; + /** + * @see https://docs.github.com/rest/reference/codespaces#set-selected-repositories-for-a-user-secret + */ + "PUT /user/codespaces/secrets/{secret_name}/repositories": Operation<"/user/codespaces/secrets/{secret_name}/repositories", "put">; + /** + * @see https://docs.github.com/rest/reference/codespaces#add-a-selected-repository-to-a-user-secret + */ + "PUT /user/codespaces/secrets/{secret_name}/repositories/{repository_id}": Operation<"/user/codespaces/secrets/{secret_name}/repositories/{repository_id}", "put">; + /** + * @see https://docs.github.com/rest/reference/users#follow-a-user + */ + "PUT /user/following/{username}": Operation<"/user/following/{username}", "put">; + /** + * @see https://docs.github.com/rest/reference/apps#add-a-repository-to-an-app-installation + */ + "PUT /user/installations/{installation_id}/repositories/{repository_id}": Operation<"/user/installations/{installation_id}/repositories/{repository_id}", "put">; + /** + * @see https://docs.github.com/rest/reference/interactions#set-interaction-restrictions-for-your-public-repositories + */ + "PUT /user/interaction-limits": Operation<"/user/interaction-limits", "put">; + /** + * @see https://docs.github.com/rest/reference/activity#star-a-repository-for-the-authenticated-user + */ + "PUT /user/starred/{owner}/{repo}": Operation<"/user/starred/{owner}/{repo}", "put">; +} +export {}; diff --git a/node_modules/@octokit/types/dist-types/index.d.ts b/node_modules/@octokit/types/dist-types/index.d.ts new file mode 100644 index 0000000..004ae9b --- /dev/null +++ b/node_modules/@octokit/types/dist-types/index.d.ts @@ -0,0 +1,21 @@ +export * from "./AuthInterface"; +export * from "./EndpointDefaults"; +export * from "./EndpointInterface"; +export * from "./EndpointOptions"; +export * from "./Fetch"; +export * from "./OctokitResponse"; +export * from "./RequestError"; +export * from "./RequestHeaders"; +export * from "./RequestInterface"; +export * from "./RequestMethod"; +export * from "./RequestOptions"; +export * from "./RequestParameters"; +export * from "./RequestRequestOptions"; +export * from "./ResponseHeaders"; +export * from "./Route"; +export * from "./Signal"; +export * from "./StrategyInterface"; +export * from "./Url"; +export * from "./VERSION"; +export * from "./GetResponseTypeFromEndpointMethod"; +export * from "./generated/Endpoints"; diff --git a/node_modules/@octokit/types/dist-web/index.js b/node_modules/@octokit/types/dist-web/index.js new file mode 100644 index 0000000..b1b47d5 --- /dev/null +++ b/node_modules/@octokit/types/dist-web/index.js @@ -0,0 +1,4 @@ +const VERSION = "6.41.0"; + +export { VERSION }; +//# sourceMappingURL=index.js.map diff --git a/node_modules/@octokit/types/dist-web/index.js.map b/node_modules/@octokit/types/dist-web/index.js.map new file mode 100644 index 0000000..cd0e254 --- /dev/null +++ b/node_modules/@octokit/types/dist-web/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sources":["../dist-src/VERSION.js"],"sourcesContent":["export const VERSION = \"0.0.0-development\";\n"],"names":[],"mappings":"AAAY,MAAC,OAAO,GAAG;;;;"} \ No newline at end of file diff --git a/node_modules/@octokit/types/package.json b/node_modules/@octokit/types/package.json new file mode 100644 index 0000000..960747f --- /dev/null +++ b/node_modules/@octokit/types/package.json @@ -0,0 +1,54 @@ +{ + "name": "@octokit/types", + "description": "Shared TypeScript definitions for Octokit projects", + "version": "6.41.0", + "license": "MIT", + "files": [ + "dist-*/", + "bin/" + ], + "source": "dist-src/index.js", + "types": "dist-types/index.d.ts", + "octokit": { + "openapi-version": "6.8.0" + }, + "main": "dist-node/index.js", + "module": "dist-web/index.js", + "pika": true, + "sideEffects": false, + "keywords": [ + "github", + "api", + "sdk", + "toolkit", + "typescript" + ], + "repository": "github:octokit/types.ts", + "dependencies": { + "@octokit/openapi-types": "^12.11.0" + }, + "devDependencies": { + "@pika/pack": "^0.3.7", + "@pika/plugin-build-node": "^0.9.0", + "@pika/plugin-build-web": "^0.9.0", + "@pika/plugin-ts-standard-pkg": "^0.9.0", + "@types/node": ">= 8", + "github-openapi-graphql-query": "^2.0.0", + "handlebars": "^4.7.6", + "json-schema-to-typescript": "^11.0.0", + "lodash.set": "^4.3.2", + "npm-run-all": "^4.1.5", + "pascal-case": "^3.1.1", + "pika-plugin-merge-properties": "^1.0.6", + "prettier": "^2.0.0", + "semantic-release": "^19.0.3", + "semantic-release-plugin-update-version-in-files": "^1.0.0", + "sort-keys": "^4.2.0", + "string-to-jsdoc-comment": "^1.0.0", + "typedoc": "^0.23.0", + "typescript": "^4.0.2" + }, + "publishConfig": { + "access": "public" + } +} diff --git a/node_modules/balanced-match/.github/FUNDING.yml b/node_modules/balanced-match/.github/FUNDING.yml new file mode 100644 index 0000000..cea8b16 --- /dev/null +++ b/node_modules/balanced-match/.github/FUNDING.yml @@ -0,0 +1,2 @@ +tidelift: "npm/balanced-match" +patreon: juliangruber diff --git a/node_modules/balanced-match/LICENSE.md b/node_modules/balanced-match/LICENSE.md new file mode 100644 index 0000000..2cdc8e4 --- /dev/null +++ b/node_modules/balanced-match/LICENSE.md @@ -0,0 +1,21 @@ +(MIT) + +Copyright (c) 2013 Julian Gruber <julian@juliangruber.com> + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is furnished to do +so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/node_modules/balanced-match/README.md b/node_modules/balanced-match/README.md new file mode 100644 index 0000000..d2a48b6 --- /dev/null +++ b/node_modules/balanced-match/README.md @@ -0,0 +1,97 @@ +# balanced-match + +Match balanced string pairs, like `{` and `}` or `` and ``. Supports regular expressions as well! + +[![build status](https://secure.travis-ci.org/juliangruber/balanced-match.svg)](http://travis-ci.org/juliangruber/balanced-match) +[![downloads](https://img.shields.io/npm/dm/balanced-match.svg)](https://www.npmjs.org/package/balanced-match) + +[![testling badge](https://ci.testling.com/juliangruber/balanced-match.png)](https://ci.testling.com/juliangruber/balanced-match) + +## Example + +Get the first matching pair of braces: + +```js +var balanced = require('balanced-match'); + +console.log(balanced('{', '}', 'pre{in{nested}}post')); +console.log(balanced('{', '}', 'pre{first}between{second}post')); +console.log(balanced(/\s+\{\s+/, /\s+\}\s+/, 'pre { in{nest} } post')); +``` + +The matches are: + +```bash +$ node example.js +{ start: 3, end: 14, pre: 'pre', body: 'in{nested}', post: 'post' } +{ start: 3, + end: 9, + pre: 'pre', + body: 'first', + post: 'between{second}post' } +{ start: 3, end: 17, pre: 'pre', body: 'in{nest}', post: 'post' } +``` + +## API + +### var m = balanced(a, b, str) + +For the first non-nested matching pair of `a` and `b` in `str`, return an +object with those keys: + +* **start** the index of the first match of `a` +* **end** the index of the matching `b` +* **pre** the preamble, `a` and `b` not included +* **body** the match, `a` and `b` not included +* **post** the postscript, `a` and `b` not included + +If there's no match, `undefined` will be returned. + +If the `str` contains more `a` than `b` / there are unmatched pairs, the first match that was closed will be used. For example, `{{a}` will match `['{', 'a', '']` and `{a}}` will match `['', 'a', '}']`. + +### var r = balanced.range(a, b, str) + +For the first non-nested matching pair of `a` and `b` in `str`, return an +array with indexes: `[ , ]`. + +If there's no match, `undefined` will be returned. + +If the `str` contains more `a` than `b` / there are unmatched pairs, the first match that was closed will be used. For example, `{{a}` will match `[ 1, 3 ]` and `{a}}` will match `[0, 2]`. + +## Installation + +With [npm](https://npmjs.org) do: + +```bash +npm install balanced-match +``` + +## Security contact information + +To report a security vulnerability, please use the +[Tidelift security contact](https://tidelift.com/security). +Tidelift will coordinate the fix and disclosure. + +## License + +(MIT) + +Copyright (c) 2013 Julian Gruber <julian@juliangruber.com> + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is furnished to do +so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/node_modules/balanced-match/index.js b/node_modules/balanced-match/index.js new file mode 100644 index 0000000..c67a646 --- /dev/null +++ b/node_modules/balanced-match/index.js @@ -0,0 +1,62 @@ +'use strict'; +module.exports = balanced; +function balanced(a, b, str) { + if (a instanceof RegExp) a = maybeMatch(a, str); + if (b instanceof RegExp) b = maybeMatch(b, str); + + var r = range(a, b, str); + + return r && { + start: r[0], + end: r[1], + pre: str.slice(0, r[0]), + body: str.slice(r[0] + a.length, r[1]), + post: str.slice(r[1] + b.length) + }; +} + +function maybeMatch(reg, str) { + var m = str.match(reg); + return m ? m[0] : null; +} + +balanced.range = range; +function range(a, b, str) { + var begs, beg, left, right, result; + var ai = str.indexOf(a); + var bi = str.indexOf(b, ai + 1); + var i = ai; + + if (ai >= 0 && bi > 0) { + if(a===b) { + return [ai, bi]; + } + begs = []; + left = str.length; + + while (i >= 0 && !result) { + if (i == ai) { + begs.push(i); + ai = str.indexOf(a, i + 1); + } else if (begs.length == 1) { + result = [ begs.pop(), bi ]; + } else { + beg = begs.pop(); + if (beg < left) { + left = beg; + right = bi; + } + + bi = str.indexOf(b, i + 1); + } + + i = ai < bi && ai >= 0 ? ai : bi; + } + + if (begs.length) { + result = [ left, right ]; + } + } + + return result; +} diff --git a/node_modules/balanced-match/package.json b/node_modules/balanced-match/package.json new file mode 100644 index 0000000..ce6073e --- /dev/null +++ b/node_modules/balanced-match/package.json @@ -0,0 +1,48 @@ +{ + "name": "balanced-match", + "description": "Match balanced character pairs, like \"{\" and \"}\"", + "version": "1.0.2", + "repository": { + "type": "git", + "url": "git://github.com/juliangruber/balanced-match.git" + }, + "homepage": "https://github.com/juliangruber/balanced-match", + "main": "index.js", + "scripts": { + "test": "tape test/test.js", + "bench": "matcha test/bench.js" + }, + "devDependencies": { + "matcha": "^0.7.0", + "tape": "^4.6.0" + }, + "keywords": [ + "match", + "regexp", + "test", + "balanced", + "parse" + ], + "author": { + "name": "Julian Gruber", + "email": "mail@juliangruber.com", + "url": "http://juliangruber.com" + }, + "license": "MIT", + "testling": { + "files": "test/*.js", + "browsers": [ + "ie/8..latest", + "firefox/20..latest", + "firefox/nightly", + "chrome/25..latest", + "chrome/canary", + "opera/12..latest", + "opera/next", + "safari/5.1..latest", + "ipad/6.0..latest", + "iphone/6.0..latest", + "android-browser/4.2..latest" + ] + } +} diff --git a/node_modules/before-after-hook/LICENSE b/node_modules/before-after-hook/LICENSE new file mode 100644 index 0000000..225063c --- /dev/null +++ b/node_modules/before-after-hook/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2018 Gregor Martynus and other contributors. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/node_modules/before-after-hook/README.md b/node_modules/before-after-hook/README.md new file mode 100644 index 0000000..07d7756 --- /dev/null +++ b/node_modules/before-after-hook/README.md @@ -0,0 +1,653 @@ +# before-after-hook + +> asynchronous hooks for internal functionality + +[![npm downloads](https://img.shields.io/npm/dw/before-after-hook.svg)](https://www.npmjs.com/package/before-after-hook) +[![Test](https://github.com/gr2m/before-after-hook/actions/workflows/test.yml/badge.svg)](https://github.com/gr2m/before-after-hook/actions/workflows/test.yml) + +## Usage + +### Singular hook + +```js +// instantiate singular hook API +const hook = new Hook.Singular(); + +// Create a hook +function getData(options) { + return hook(fetchFromDatabase, options) + .then(handleData) + .catch(handleGetError); +} + +// register before/error/after hooks. +// The methods can be async or return a promise +hook.before(beforeHook); +hook.error(errorHook); +hook.after(afterHook); + +getData({ id: 123 }); +``` + +### Hook collection + +```js +// instantiate hook collection API +const hookCollection = new Hook.Collection(); + +// Create a hook +function getData(options) { + return hookCollection("get", fetchFromDatabase, options) + .then(handleData) + .catch(handleGetError); +} + +// register before/error/after hooks. +// The methods can be async or return a promise +hookCollection.before("get", beforeHook); +hookCollection.error("get", errorHook); +hookCollection.after("get", afterHook); + +getData({ id: 123 }); +``` + +### Hook.Singular vs Hook.Collection + +There's no fundamental difference between the `Hook.Singular` and `Hook.Collection` hooks except for the fact that a hook from a collection requires you to pass along the name. Therefore the following explanation applies to both code snippets as described above. + +The methods are executed in the following order + +1. `beforeHook` +2. `fetchFromDatabase` +3. `afterHook` +4. `handleData` + +`beforeHook` can mutate `options` before it’s passed to `fetchFromDatabase`. + +If an error is thrown in `beforeHook` or `fetchFromDatabase` then `errorHook` is +called next. + +If `afterHook` throws an error then `handleGetError` is called instead +of `handleData`. + +If `errorHook` throws an error then `handleGetError` is called next, otherwise +`afterHook` and `handleData`. + +You can also use `hook.wrap` to achieve the same thing as shown above (collection example): + +```js +hookCollection.wrap("get", async (getData, options) => { + await beforeHook(options); + + try { + const result = getData(options); + } catch (error) { + await errorHook(error, options); + } + + await afterHook(result, options); +}); +``` + +## Install + +``` +npm install before-after-hook +``` + +Or download [the latest `before-after-hook.min.js`](https://github.com/gr2m/before-after-hook/releases/latest). + +## API + +- [Singular Hook Constructor](#singular-hook-api) +- [Hook Collection Constructor](#hook-collection-api) + +## Singular hook API + +- [Singular constructor](#singular-constructor) +- [hook.api](#singular-api) +- [hook()](#singular-api) +- [hook.before()](#singular-api) +- [hook.error()](#singular-api) +- [hook.after()](#singular-api) +- [hook.wrap()](#singular-api) +- [hook.remove()](#singular-api) + +### Singular constructor + +The `Hook.Singular` constructor has no options and returns a `hook` instance with the +methods below: + +```js +const hook = new Hook.Singular(); +``` + +Using the singular hook is recommended for [TypeScript](#typescript) + +### Singular API + +The singular hook is a reference to a single hook. This means that there's no need to pass along any identifier (such as a `name` as can be seen in the [Hook.Collection API](#hookcollectionapi)). + +The API of a singular hook is exactly the same as a collection hook and we therefore suggest you read the [Hook.Collection API](#hookcollectionapi) and leave out any use of the `name` argument. Just skip it like described in this example: + +```js +const hook = new Hook.Singular(); + +// good +hook.before(beforeHook); +hook.after(afterHook); +hook(fetchFromDatabase, options); + +// bad +hook.before("get", beforeHook); +hook.after("get", afterHook); +hook("get", fetchFromDatabase, options); +``` + +## Hook collection API + +- [Collection constructor](#collection-constructor) +- [hookCollection.api](#hookcollectionapi) +- [hookCollection()](#hookcollection) +- [hookCollection.before()](#hookcollectionbefore) +- [hookCollection.error()](#hookcollectionerror) +- [hookCollection.after()](#hookcollectionafter) +- [hookCollection.wrap()](#hookcollectionwrap) +- [hookCollection.remove()](#hookcollectionremove) + +### Collection constructor + +The `Hook.Collection` constructor has no options and returns a `hookCollection` instance with the +methods below + +```js +const hookCollection = new Hook.Collection(); +``` + +### hookCollection.api + +Use the `api` property to return the public API: + +- [hookCollection.before()](#hookcollectionbefore) +- [hookCollection.after()](#hookcollectionafter) +- [hookCollection.error()](#hookcollectionerror) +- [hookCollection.wrap()](#hookcollectionwrap) +- [hookCollection.remove()](#hookcollectionremove) + +That way you don’t need to expose the [hookCollection()](#hookcollection) method to consumers of your library + +### hookCollection() + +Invoke before and after hooks. Returns a promise. + +```js +hookCollection(nameOrNames, method /*, options */); +``` + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        ArgumentTypeDescriptionRequired
        nameString or Array of StringsHook name, for example 'save'. Or an array of names, see example below.Yes
        methodFunctionCallback to be executed after all before hooks finished execution successfully. options is passed as first argumentYes
        optionsObjectWill be passed to all before hooks as reference, so they can mutate itNo, defaults to empty object ({})
        + +Resolves with whatever `method` returns or resolves with. +Rejects with error that is thrown or rejected with by + +1. Any of the before hooks, whichever rejects / throws first +2. `method` +3. Any of the after hooks, whichever rejects / throws first + +Simple Example + +```js +hookCollection( + "save", + function (record) { + return store.save(record); + }, + record +); +// shorter: hookCollection('save', store.save, record) + +hookCollection.before("save", function addTimestamps(record) { + const now = new Date().toISOString(); + if (record.createdAt) { + record.updatedAt = now; + } else { + record.createdAt = now; + } +}); +``` + +Example defining multiple hooks at once. + +```js +hookCollection( + ["add", "save"], + function (record) { + return store.save(record); + }, + record +); + +hookCollection.before("add", function addTimestamps(record) { + if (!record.type) { + throw new Error("type property is required"); + } +}); + +hookCollection.before("save", function addTimestamps(record) { + if (!record.type) { + throw new Error("type property is required"); + } +}); +``` + +Defining multiple hooks is helpful if you have similar methods for which you want to define separate hooks, but also an additional hook that gets called for all at once. The example above is equal to this: + +```js +hookCollection( + "add", + function (record) { + return hookCollection( + "save", + function (record) { + return store.save(record); + }, + record + ); + }, + record +); +``` + +### hookCollection.before() + +Add before hook for given name. + +```js +hookCollection.before(name, method); +``` + + + + + + + + + + + + + + + + + + + + + + +
        ArgumentTypeDescriptionRequired
        nameStringHook name, for example 'save'Yes
        methodFunction + Executed before the wrapped method. Called with the hook’s + options argument. Before hooks can mutate the passed options + before they are passed to the wrapped method. + Yes
        + +Example + +```js +hookCollection.before("save", function validate(record) { + if (!record.name) { + throw new Error("name property is required"); + } +}); +``` + +### hookCollection.error() + +Add error hook for given name. + +```js +hookCollection.error(name, method); +``` + + + + + + + + + + + + + + + + + + + + + + +
        ArgumentTypeDescriptionRequired
        nameStringHook name, for example 'save'Yes
        methodFunction + Executed when an error occurred in either the wrapped method or a + before hook. Called with the thrown error + and the hook’s options argument. The first method + which does not throw an error will set the result that the after hook + methods will receive. + Yes
        + +Example + +```js +hookCollection.error("save", function (error, options) { + if (error.ignore) return; + throw error; +}); +``` + +### hookCollection.after() + +Add after hook for given name. + +```js +hookCollection.after(name, method); +``` + + + + + + + + + + + + + + + + + + + + + + +
        ArgumentTypeDescriptionRequired
        nameStringHook name, for example 'save'Yes
        methodFunction + Executed after wrapped method. Called with what the wrapped method + resolves with the hook’s options argument. + Yes
        + +Example + +```js +hookCollection.after("save", function (result, options) { + if (result.updatedAt) { + app.emit("update", result); + } else { + app.emit("create", result); + } +}); +``` + +### hookCollection.wrap() + +Add wrap hook for given name. + +```js +hookCollection.wrap(name, method); +``` + + + + + + + + + + + + + + + + + + + + + + +
        ArgumentTypeDescriptionRequired
        nameStringHook name, for example 'save'Yes
        methodFunction + Receives both the wrapped method and the passed options as arguments so it can add logic before and after the wrapped method, it can handle errors and even replace the wrapped method altogether + Yes
        + +Example + +```js +hookCollection.wrap("save", async function (saveInDatabase, options) { + if (!record.name) { + throw new Error("name property is required"); + } + + try { + const result = await saveInDatabase(options); + + if (result.updatedAt) { + app.emit("update", result); + } else { + app.emit("create", result); + } + + return result; + } catch (error) { + if (error.ignore) return; + throw error; + } +}); +``` + +See also: [Test mock example](examples/test-mock-example.md) + +### hookCollection.remove() + +Removes hook for given name. + +```js +hookCollection.remove(name, hookMethod); +``` + + + + + + + + + + + + + + + + + + + + + + +
        ArgumentTypeDescriptionRequired
        nameStringHook name, for example 'save'Yes
        beforeHookMethodFunction + Same function that was previously passed to hookCollection.before(), hookCollection.error(), hookCollection.after() or hookCollection.wrap() + Yes
        + +Example + +```js +hookCollection.remove("save", validateRecord); +``` + +## TypeScript + +This library contains type definitions for TypeScript. + +### Type support for `Singular`: + +```ts +import { Hook } from "before-after-hook"; + +type TOptions = { foo: string }; // type for options +type TResult = { bar: number }; // type for result +type TError = Error; // type for error + +const hook = new Hook.Singular(); + +hook.before((options) => { + // `options.foo` has `string` type + + // not allowed + options.foo = 42; + + // allowed + options.foo = "Forty-Two"; +}); + +const hookedMethod = hook( + (options) => { + // `options.foo` has `string` type + + // not allowed, because it does not satisfy the `R` type + return { foo: 42 }; + + // allowed + return { bar: 42 }; + }, + { foo: "Forty-Two" } +); +``` + +You can choose not to pass the types for options, result or error. So, these are completely valid: + +```ts +const hook = new Hook.Singular(); +const hook = new Hook.Singular(); +const hook = new Hook.Singular(); +``` + +In these cases, the omitted types will implicitly be `any`. + +### Type support for `Collection`: + +`Collection` also has strict type support. You can use it like this: + +```ts +import { Hook } from "before-after-hook"; + +type HooksType = { + add: { + Options: { type: string }; + Result: { id: number }; + Error: Error; + }; + save: { + Options: { type: string }; + Result: { id: number }; + }; + read: { + Options: { id: number; foo: number }; + }; + destroy: { + Options: { id: number; foo: string }; + }; +}; + +const hooks = new Hook.Collection(); + +hooks.before("destroy", (options) => { + // `options.id` has `number` type +}); + +hooks.error("add", (err, options) => { + // `options.type` has `string` type + // `err` is `instanceof Error` +}); + +hooks.error("save", (err, options) => { + // `options.type` has `string` type + // `err` has type `any` +}); + +hooks.after("save", (result, options) => { + // `options.type` has `string` type + // `result.id` has `number` type +}); +``` + +You can choose not to pass the types altogether. In that case, everything will implicitly be `any`: + +```ts +const hook = new Hook.Collection(); +``` + +Alternative imports: + +```ts +import { Singular, Collection } from "before-after-hook"; + +const hook = new Singular(); +const hooks = new Collection(); +``` + +## Upgrading to 1.4 + +Since version 1.4 the `Hook` constructor has been deprecated in favor of returning `Hook.Singular` in an upcoming breaking release. + +Version 1.4 is still 100% backwards-compatible, but if you want to continue using hook collections, we recommend using the `Hook.Collection` constructor instead before the next release. + +For even more details, check out [the PR](https://github.com/gr2m/before-after-hook/pull/52). + +## See also + +If `before-after-hook` is not for you, have a look at one of these alternatives: + +- https://github.com/keystonejs/grappling-hook +- https://github.com/sebelga/promised-hooks +- https://github.com/bnoguchi/hooks-js +- https://github.com/cb1kenobi/hook-emitter + +## License + +[Apache 2.0](LICENSE) diff --git a/node_modules/before-after-hook/index.d.ts b/node_modules/before-after-hook/index.d.ts new file mode 100644 index 0000000..817bf93 --- /dev/null +++ b/node_modules/before-after-hook/index.d.ts @@ -0,0 +1,186 @@ +type HookMethod = ( + options: Options +) => Result | Promise; + +type BeforeHook = (options: Options) => void | Promise; +type ErrorHook = ( + error: Error, + options: Options +) => unknown | Promise; +type AfterHook = ( + result: Result, + options: Options +) => void | Promise; +type WrapHook = ( + hookMethod: HookMethod, + options: Options +) => Result | Promise; + +type AnyHook = + | BeforeHook + | ErrorHook + | AfterHook + | WrapHook; + +type TypeStoreKeyLong = "Options" | "Result" | "Error"; +type TypeStoreKeyShort = "O" | "R" | "E"; +type TypeStore = + | ({ [key in TypeStoreKeyLong]?: any } & + { [key in TypeStoreKeyShort]?: never }) + | ({ [key in TypeStoreKeyLong]?: never } & + { [key in TypeStoreKeyShort]?: any }); +type GetType< + Store extends TypeStore, + LongKey extends TypeStoreKeyLong, + ShortKey extends TypeStoreKeyShort +> = LongKey extends keyof Store + ? Store[LongKey] + : ShortKey extends keyof Store + ? Store[ShortKey] + : any; + +export interface HookCollection< + HooksType extends Record = Record< + string, + { Options: any; Result: any; Error: any } + >, + HookName extends keyof HooksType = keyof HooksType +> { + /** + * Invoke before and after hooks + */ + ( + name: Name | Name[], + hookMethod: HookMethod< + GetType, + GetType + >, + options?: GetType + ): Promise>; + /** + * Add `before` hook for given `name` + */ + before( + name: Name, + beforeHook: BeforeHook> + ): void; + /** + * Add `error` hook for given `name` + */ + error( + name: Name, + errorHook: ErrorHook< + GetType, + GetType + > + ): void; + /** + * Add `after` hook for given `name` + */ + after( + name: Name, + afterHook: AfterHook< + GetType, + GetType + > + ): void; + /** + * Add `wrap` hook for given `name` + */ + wrap( + name: Name, + wrapHook: WrapHook< + GetType, + GetType + > + ): void; + /** + * Remove added hook for given `name` + */ + remove( + name: Name, + hook: AnyHook< + GetType, + GetType, + GetType + > + ): void; + /** + * Public API + */ + api: Pick< + HookCollection, + "before" | "error" | "after" | "wrap" | "remove" + >; +} + +export interface HookSingular { + /** + * Invoke before and after hooks + */ + (hookMethod: HookMethod, options?: Options): Promise; + /** + * Add `before` hook + */ + before(beforeHook: BeforeHook): void; + /** + * Add `error` hook + */ + error(errorHook: ErrorHook): void; + /** + * Add `after` hook + */ + after(afterHook: AfterHook): void; + /** + * Add `wrap` hook + */ + wrap(wrapHook: WrapHook): void; + /** + * Remove added hook + */ + remove(hook: AnyHook): void; + /** + * Public API + */ + api: Pick< + HookSingular, + "before" | "error" | "after" | "wrap" | "remove" + >; +} + +type Collection = new < + HooksType extends Record = Record< + string, + { Options: any; Result: any; Error: any } + > +>() => HookCollection; +type Singular = new < + Options = any, + Result = any, + Error = any +>() => HookSingular; + +interface Hook { + new < + HooksType extends Record = Record< + string, + { Options: any; Result: any; Error: any } + > + >(): HookCollection; + + /** + * Creates a collection of hooks + */ + Collection: Collection; + + /** + * Creates a nameless hook that supports strict typings + */ + Singular: Singular; +} + +export const Hook: Hook; +export const Collection: Collection; +export const Singular: Singular; + +export default Hook; diff --git a/node_modules/before-after-hook/index.js b/node_modules/before-after-hook/index.js new file mode 100644 index 0000000..6b60d3c --- /dev/null +++ b/node_modules/before-after-hook/index.js @@ -0,0 +1,61 @@ +var register = require("./lib/register"); +var addHook = require("./lib/add"); +var removeHook = require("./lib/remove"); + +// bind with array of arguments: https://stackoverflow.com/a/21792913 +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); + }); +} + +function HookSingular() { + var singularHookName = "h"; + var singularHookState = { + registry: {}, + }; + var singularHook = register.bind(null, singularHookState, singularHookName); + bindApi(singularHook, singularHookState, singularHookName); + return singularHook; +} + +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; + } + return HookCollection(); +} + +Hook.Singular = HookSingular.bind(); +Hook.Collection = HookCollection.bind(); + +module.exports = Hook; +// expose constructors as a named property for TypeScript +module.exports.Hook = Hook; +module.exports.Singular = Hook.Singular; +module.exports.Collection = Hook.Collection; diff --git a/node_modules/before-after-hook/lib/add.js b/node_modules/before-after-hook/lib/add.js new file mode 100644 index 0000000..f379eab --- /dev/null +++ b/node_modules/before-after-hook/lib/add.js @@ -0,0 +1,46 @@ +module.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)); + }; + } + + 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; + }); + }; + } + + if (kind === "error") { + hook = function (method, options) { + return Promise.resolve() + .then(method.bind(null, options)) + .catch(function (error) { + return orig(error, options); + }); + }; + } + + state.registry[name].push({ + hook: hook, + orig: orig, + }); +} diff --git a/node_modules/before-after-hook/lib/register.js b/node_modules/before-after-hook/lib/register.js new file mode 100644 index 0000000..f0d3d4e --- /dev/null +++ b/node_modules/before-after-hook/lib/register.js @@ -0,0 +1,27 @@ +module.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, name) { + return register.bind(null, state, name, callback, options); + }, method)(); + } + + return Promise.resolve().then(function () { + if (!state.registry[name]) { + return method(options); + } + + return state.registry[name].reduce(function (method, registered) { + return registered.hook.bind(null, method, options); + }, method)(); + }); +} diff --git a/node_modules/before-after-hook/lib/remove.js b/node_modules/before-after-hook/lib/remove.js new file mode 100644 index 0000000..590b963 --- /dev/null +++ b/node_modules/before-after-hook/lib/remove.js @@ -0,0 +1,19 @@ +module.exports = removeHook; + +function removeHook(state, name, method) { + if (!state.registry[name]) { + return; + } + + var index = state.registry[name] + .map(function (registered) { + return registered.orig; + }) + .indexOf(method); + + if (index === -1) { + return; + } + + state.registry[name].splice(index, 1); +} diff --git a/node_modules/before-after-hook/package.json b/node_modules/before-after-hook/package.json new file mode 100644 index 0000000..533a3eb --- /dev/null +++ b/node_modules/before-after-hook/package.json @@ -0,0 +1,71 @@ +{ + "name": "before-after-hook", + "version": "2.2.3", + "description": "asynchronous before/error/after hooks for internal functionality", + "main": "index.js", + "files": [ + "index.js", + "index.d.ts", + "lib" + ], + "types": "./index.d.ts", + "scripts": { + "prebuild": "rimraf dist && mkdirp dist", + "build": "browserify index.js --standalone=Hook > dist/before-after-hook.js", + "postbuild": "uglifyjs dist/before-after-hook.js -mc > dist/before-after-hook.min.js", + "lint": "prettier --check '{lib,test,examples}/**/*' 'index.*' README.md package.json", + "lint:fix": "prettier --write '{lib,test,examples}/**/*' 'index.*' README.md package.json", + "pretest": "npm run -s lint", + "test": "npm run -s test:node | tap-spec", + "posttest": "npm run validate:ts", + "test:node": "node test", + "test:watch": "gaze 'clear && node test | tap-min' 'test/**/*.js' 'index.js' 'lib/**/*.js'", + "test:coverage": "istanbul cover test", + "test:coverage:upload": "istanbul-coveralls", + "validate:ts": "tsc --strict --target es6 index.d.ts", + "postvalidate:ts": "tsc --noEmit --strict --target es6 test/typescript-validate.ts", + "presemantic-release": "npm run build", + "semantic-release": "semantic-release" + }, + "repository": "github:gr2m/before-after-hook", + "keywords": [ + "hook", + "hooks", + "api" + ], + "author": "Gregor Martynus", + "license": "Apache-2.0", + "dependencies": {}, + "devDependencies": { + "browserify": "^16.0.0", + "gaze-cli": "^0.2.0", + "istanbul": "^0.4.0", + "istanbul-coveralls": "^1.0.3", + "mkdirp": "^1.0.3", + "prettier": "^2.0.0", + "rimraf": "^3.0.0", + "semantic-release": "^19.0.3", + "simple-mock": "^0.8.0", + "tap-min": "^2.0.0", + "tap-spec": "^5.0.0", + "tape": "^5.0.0", + "typescript": "^3.5.3", + "uglify-js": "^3.9.0" + }, + "release": { + "branches": [ + "+([0-9]).x", + "main", + "next", + { + "name": "beta", + "prerelease": true + } + ] + }, + "renovate": { + "extends": [ + "github>gr2m/.github" + ] + } +} diff --git a/node_modules/brace-expansion/LICENSE b/node_modules/brace-expansion/LICENSE new file mode 100644 index 0000000..de32266 --- /dev/null +++ b/node_modules/brace-expansion/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2013 Julian Gruber + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/node_modules/brace-expansion/README.md b/node_modules/brace-expansion/README.md new file mode 100644 index 0000000..6b4e0e1 --- /dev/null +++ b/node_modules/brace-expansion/README.md @@ -0,0 +1,129 @@ +# brace-expansion + +[Brace expansion](https://www.gnu.org/software/bash/manual/html_node/Brace-Expansion.html), +as known from sh/bash, in JavaScript. + +[![build status](https://secure.travis-ci.org/juliangruber/brace-expansion.svg)](http://travis-ci.org/juliangruber/brace-expansion) +[![downloads](https://img.shields.io/npm/dm/brace-expansion.svg)](https://www.npmjs.org/package/brace-expansion) +[![Greenkeeper badge](https://badges.greenkeeper.io/juliangruber/brace-expansion.svg)](https://greenkeeper.io/) + +[![testling badge](https://ci.testling.com/juliangruber/brace-expansion.png)](https://ci.testling.com/juliangruber/brace-expansion) + +## Example + +```js +var expand = require('brace-expansion'); + +expand('file-{a,b,c}.jpg') +// => ['file-a.jpg', 'file-b.jpg', 'file-c.jpg'] + +expand('-v{,,}') +// => ['-v', '-v', '-v'] + +expand('file{0..2}.jpg') +// => ['file0.jpg', 'file1.jpg', 'file2.jpg'] + +expand('file-{a..c}.jpg') +// => ['file-a.jpg', 'file-b.jpg', 'file-c.jpg'] + +expand('file{2..0}.jpg') +// => ['file2.jpg', 'file1.jpg', 'file0.jpg'] + +expand('file{0..4..2}.jpg') +// => ['file0.jpg', 'file2.jpg', 'file4.jpg'] + +expand('file-{a..e..2}.jpg') +// => ['file-a.jpg', 'file-c.jpg', 'file-e.jpg'] + +expand('file{00..10..5}.jpg') +// => ['file00.jpg', 'file05.jpg', 'file10.jpg'] + +expand('{{A..C},{a..c}}') +// => ['A', 'B', 'C', 'a', 'b', 'c'] + +expand('ppp{,config,oe{,conf}}') +// => ['ppp', 'pppconfig', 'pppoe', 'pppoeconf'] +``` + +## API + +```js +var expand = require('brace-expansion'); +``` + +### var expanded = expand(str) + +Return an array of all possible and valid expansions of `str`. If none are +found, `[str]` is returned. + +Valid expansions are: + +```js +/^(.*,)+(.+)?$/ +// {a,b,...} +``` + +A comma separated list of options, like `{a,b}` or `{a,{b,c}}` or `{,a,}`. + +```js +/^-?\d+\.\.-?\d+(\.\.-?\d+)?$/ +// {x..y[..incr]} +``` + +A numeric sequence from `x` to `y` inclusive, with optional increment. +If `x` or `y` start with a leading `0`, all the numbers will be padded +to have equal length. Negative numbers and backwards iteration work too. + +```js +/^-?\d+\.\.-?\d+(\.\.-?\d+)?$/ +// {x..y[..incr]} +``` + +An alphabetic sequence from `x` to `y` inclusive, with optional increment. +`x` and `y` must be exactly one character, and if given, `incr` must be a +number. + +For compatibility reasons, the string `${` is not eligible for brace expansion. + +## Installation + +With [npm](https://npmjs.org) do: + +```bash +npm install brace-expansion +``` + +## Contributors + +- [Julian Gruber](https://github.com/juliangruber) +- [Isaac Z. Schlueter](https://github.com/isaacs) + +## Sponsors + +This module is proudly supported by my [Sponsors](https://github.com/juliangruber/sponsors)! + +Do you want to support modules like this to improve their quality, stability and weigh in on new features? Then please consider donating to my [Patreon](https://www.patreon.com/juliangruber). Not sure how much of my modules you're using? Try [feross/thanks](https://github.com/feross/thanks)! + +## License + +(MIT) + +Copyright (c) 2013 Julian Gruber <julian@juliangruber.com> + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is furnished to do +so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/node_modules/brace-expansion/index.js b/node_modules/brace-expansion/index.js new file mode 100644 index 0000000..0478be8 --- /dev/null +++ b/node_modules/brace-expansion/index.js @@ -0,0 +1,201 @@ +var concatMap = require('concat-map'); +var balanced = require('balanced-match'); + +module.exports = expandTop; + +var escSlash = '\0SLASH'+Math.random()+'\0'; +var escOpen = '\0OPEN'+Math.random()+'\0'; +var escClose = '\0CLOSE'+Math.random()+'\0'; +var escComma = '\0COMMA'+Math.random()+'\0'; +var escPeriod = '\0PERIOD'+Math.random()+'\0'; + +function numeric(str) { + return parseInt(str, 10) == str + ? parseInt(str, 10) + : str.charCodeAt(0); +} + +function escapeBraces(str) { + return str.split('\\\\').join(escSlash) + .split('\\{').join(escOpen) + .split('\\}').join(escClose) + .split('\\,').join(escComma) + .split('\\.').join(escPeriod); +} + +function unescapeBraces(str) { + return str.split(escSlash).join('\\') + .split(escOpen).join('{') + .split(escClose).join('}') + .split(escComma).join(',') + .split(escPeriod).join('.'); +} + + +// Basically just str.split(","), but handling cases +// where we have nested braced sections, which should be +// treated as individual members, like {a,{b,c},d} +function parseCommaParts(str) { + if (!str) + return ['']; + + var parts = []; + var m = balanced('{', '}', str); + + if (!m) + return str.split(','); + + var pre = m.pre; + var body = m.body; + var post = m.post; + var p = pre.split(','); + + p[p.length-1] += '{' + body + '}'; + var postParts = parseCommaParts(post); + if (post.length) { + p[p.length-1] += postParts.shift(); + p.push.apply(p, postParts); + } + + parts.push.apply(parts, p); + + return parts; +} + +function expandTop(str) { + if (!str) + return []; + + // I don't know why Bash 4.3 does this, but it does. + // Anything starting with {} will have the first two bytes preserved + // but *only* at the top level, so {},a}b will not expand to anything, + // but a{},b}c will be expanded to [a}c,abc]. + // One could argue that this is a bug in Bash, but since the goal of + // this module is to match Bash's rules, we escape a leading {} + if (str.substr(0, 2) === '{}') { + str = '\\{\\}' + str.substr(2); + } + + return expand(escapeBraces(str), true).map(unescapeBraces); +} + +function identity(e) { + return e; +} + +function embrace(str) { + return '{' + str + '}'; +} +function isPadded(el) { + return /^-?0\d/.test(el); +} + +function lte(i, y) { + return i <= y; +} +function gte(i, y) { + return i >= y; +} + +function expand(str, isTop) { + var expansions = []; + + var m = balanced('{', '}', str); + if (!m || /\$$/.test(m.pre)) return [str]; + + var isNumericSequence = /^-?\d+\.\.-?\d+(?:\.\.-?\d+)?$/.test(m.body); + var isAlphaSequence = /^[a-zA-Z]\.\.[a-zA-Z](?:\.\.-?\d+)?$/.test(m.body); + var isSequence = isNumericSequence || isAlphaSequence; + var isOptions = m.body.indexOf(',') >= 0; + if (!isSequence && !isOptions) { + // {a},b} + if (m.post.match(/,.*\}/)) { + str = m.pre + '{' + m.body + escClose + m.post; + return expand(str); + } + return [str]; + } + + var n; + if (isSequence) { + n = m.body.split(/\.\./); + } else { + n = parseCommaParts(m.body); + if (n.length === 1) { + // x{{a,b}}y ==> x{a}y x{b}y + n = expand(n[0], false).map(embrace); + if (n.length === 1) { + var post = m.post.length + ? expand(m.post, false) + : ['']; + return post.map(function(p) { + return m.pre + n[0] + p; + }); + } + } + } + + // at this point, n is the parts, and we know it's not a comma set + // with a single entry. + + // no need to expand pre, since it is guaranteed to be free of brace-sets + var pre = m.pre; + var post = m.post.length + ? expand(m.post, false) + : ['']; + + var N; + + if (isSequence) { + var x = numeric(n[0]); + var y = numeric(n[1]); + var width = Math.max(n[0].length, n[1].length) + var incr = n.length == 3 + ? Math.abs(numeric(n[2])) + : 1; + var test = lte; + var reverse = y < x; + if (reverse) { + incr *= -1; + test = gte; + } + var pad = n.some(isPadded); + + N = []; + + for (var i = x; test(i, y); i += incr) { + var c; + if (isAlphaSequence) { + c = String.fromCharCode(i); + if (c === '\\') + c = ''; + } else { + c = String(i); + if (pad) { + var need = width - c.length; + if (need > 0) { + var z = new Array(need + 1).join('0'); + if (i < 0) + c = '-' + z + c.slice(1); + else + c = z + c; + } + } + } + N.push(c); + } + } else { + N = concatMap(n, function(el) { return expand(el, false) }); + } + + for (var j = 0; j < N.length; j++) { + for (var k = 0; k < post.length; k++) { + var expansion = pre + N[j] + post[k]; + if (!isTop || isSequence || expansion) + expansions.push(expansion); + } + } + + return expansions; +} + diff --git a/node_modules/brace-expansion/package.json b/node_modules/brace-expansion/package.json new file mode 100644 index 0000000..a18faa8 --- /dev/null +++ b/node_modules/brace-expansion/package.json @@ -0,0 +1,47 @@ +{ + "name": "brace-expansion", + "description": "Brace expansion as known from sh/bash", + "version": "1.1.11", + "repository": { + "type": "git", + "url": "git://github.com/juliangruber/brace-expansion.git" + }, + "homepage": "https://github.com/juliangruber/brace-expansion", + "main": "index.js", + "scripts": { + "test": "tape test/*.js", + "gentest": "bash test/generate.sh", + "bench": "matcha test/perf/bench.js" + }, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + }, + "devDependencies": { + "matcha": "^0.7.0", + "tape": "^4.6.0" + }, + "keywords": [], + "author": { + "name": "Julian Gruber", + "email": "mail@juliangruber.com", + "url": "http://juliangruber.com" + }, + "license": "MIT", + "testling": { + "files": "test/*.js", + "browsers": [ + "ie/8..latest", + "firefox/20..latest", + "firefox/nightly", + "chrome/25..latest", + "chrome/canary", + "opera/12..latest", + "opera/next", + "safari/5.1..latest", + "ipad/6.0..latest", + "iphone/6.0..latest", + "android-browser/4.2..latest" + ] + } +} diff --git a/node_modules/buffer-from/LICENSE b/node_modules/buffer-from/LICENSE new file mode 100644 index 0000000..e4bf1d6 --- /dev/null +++ b/node_modules/buffer-from/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2016, 2018 Linus Unnebäck + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/node_modules/buffer-from/index.js b/node_modules/buffer-from/index.js new file mode 100644 index 0000000..e1a58b5 --- /dev/null +++ b/node_modules/buffer-from/index.js @@ -0,0 +1,72 @@ +/* eslint-disable node/no-deprecated-api */ + +var toString = Object.prototype.toString + +var isModern = ( + typeof Buffer !== 'undefined' && + typeof Buffer.alloc === 'function' && + typeof Buffer.allocUnsafe === 'function' && + typeof Buffer.from === 'function' +) + +function isArrayBuffer (input) { + return toString.call(input).slice(8, -1) === 'ArrayBuffer' +} + +function fromArrayBuffer (obj, byteOffset, length) { + byteOffset >>>= 0 + + var maxLength = obj.byteLength - byteOffset + + if (maxLength < 0) { + throw new RangeError("'offset' is out of bounds") + } + + if (length === undefined) { + length = maxLength + } else { + length >>>= 0 + + if (length > maxLength) { + throw new RangeError("'length' is out of bounds") + } + } + + return isModern + ? Buffer.from(obj.slice(byteOffset, byteOffset + length)) + : new Buffer(new Uint8Array(obj.slice(byteOffset, byteOffset + length))) +} + +function fromString (string, encoding) { + if (typeof encoding !== 'string' || encoding === '') { + encoding = 'utf8' + } + + if (!Buffer.isEncoding(encoding)) { + throw new TypeError('"encoding" must be a valid string encoding') + } + + return isModern + ? Buffer.from(string, encoding) + : new Buffer(string, encoding) +} + +function bufferFrom (value, encodingOrOffset, length) { + if (typeof value === 'number') { + throw new TypeError('"value" argument must not be a number') + } + + if (isArrayBuffer(value)) { + return fromArrayBuffer(value, encodingOrOffset, length) + } + + if (typeof value === 'string') { + return fromString(value, encodingOrOffset) + } + + return isModern + ? Buffer.from(value) + : new Buffer(value) +} + +module.exports = bufferFrom diff --git a/node_modules/buffer-from/package.json b/node_modules/buffer-from/package.json new file mode 100644 index 0000000..6ac5327 --- /dev/null +++ b/node_modules/buffer-from/package.json @@ -0,0 +1,19 @@ +{ + "name": "buffer-from", + "version": "1.1.2", + "license": "MIT", + "repository": "LinusU/buffer-from", + "files": [ + "index.js" + ], + "scripts": { + "test": "standard && node test" + }, + "devDependencies": { + "standard": "^12.0.1" + }, + "keywords": [ + "buffer", + "buffer from" + ] +} diff --git a/node_modules/buffer-from/readme.md b/node_modules/buffer-from/readme.md new file mode 100644 index 0000000..9880a55 --- /dev/null +++ b/node_modules/buffer-from/readme.md @@ -0,0 +1,69 @@ +# Buffer From + +A [ponyfill](https://ponyfill.com) for `Buffer.from`, uses native implementation if available. + +## Installation + +```sh +npm install --save buffer-from +``` + +## Usage + +```js +const bufferFrom = require('buffer-from') + +console.log(bufferFrom([1, 2, 3, 4])) +//=> + +const arr = new Uint8Array([1, 2, 3, 4]) +console.log(bufferFrom(arr.buffer, 1, 2)) +//=> + +console.log(bufferFrom('test', 'utf8')) +//=> + +const buf = bufferFrom('test') +console.log(bufferFrom(buf)) +//=> +``` + +## API + +### bufferFrom(array) + +- `array` <Array> + +Allocates a new `Buffer` using an `array` of octets. + +### bufferFrom(arrayBuffer[, byteOffset[, length]]) + +- `arrayBuffer` <ArrayBuffer> The `.buffer` property of a TypedArray or ArrayBuffer +- `byteOffset` <Integer> Where to start copying from `arrayBuffer`. **Default:** `0` +- `length` <Integer> How many bytes to copy from `arrayBuffer`. **Default:** `arrayBuffer.length - byteOffset` + +When passed a reference to the `.buffer` property of a TypedArray instance, the +newly created `Buffer` will share the same allocated memory as the TypedArray. + +The optional `byteOffset` and `length` arguments specify a memory range within +the `arrayBuffer` that will be shared by the `Buffer`. + +### bufferFrom(buffer) + +- `buffer` <Buffer> An existing `Buffer` to copy data from + +Copies the passed `buffer` data onto a new `Buffer` instance. + +### bufferFrom(string[, encoding]) + +- `string` <String> A string to encode. +- `encoding` <String> The encoding of `string`. **Default:** `'utf8'` + +Creates a new `Buffer` containing the given JavaScript string `string`. If +provided, the `encoding` parameter identifies the character encoding of +`string`. + +## See also + +- [buffer-alloc](https://github.com/LinusU/buffer-alloc) A ponyfill for `Buffer.alloc` +- [buffer-alloc-unsafe](https://github.com/LinusU/buffer-alloc-unsafe) A ponyfill for `Buffer.allocUnsafe` diff --git a/node_modules/concat-map/.travis.yml b/node_modules/concat-map/.travis.yml new file mode 100644 index 0000000..f1d0f13 --- /dev/null +++ b/node_modules/concat-map/.travis.yml @@ -0,0 +1,4 @@ +language: node_js +node_js: + - 0.4 + - 0.6 diff --git a/node_modules/concat-map/LICENSE b/node_modules/concat-map/LICENSE new file mode 100644 index 0000000..ee27ba4 --- /dev/null +++ b/node_modules/concat-map/LICENSE @@ -0,0 +1,18 @@ +This software is released under the MIT license: + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/concat-map/README.markdown b/node_modules/concat-map/README.markdown new file mode 100644 index 0000000..408f70a --- /dev/null +++ b/node_modules/concat-map/README.markdown @@ -0,0 +1,62 @@ +concat-map +========== + +Concatenative mapdashery. + +[![browser support](http://ci.testling.com/substack/node-concat-map.png)](http://ci.testling.com/substack/node-concat-map) + +[![build status](https://secure.travis-ci.org/substack/node-concat-map.png)](http://travis-ci.org/substack/node-concat-map) + +example +======= + +``` js +var concatMap = require('concat-map'); +var xs = [ 1, 2, 3, 4, 5, 6 ]; +var ys = concatMap(xs, function (x) { + return x % 2 ? [ x - 0.1, x, x + 0.1 ] : []; +}); +console.dir(ys); +``` + +*** + +``` +[ 0.9, 1, 1.1, 2.9, 3, 3.1, 4.9, 5, 5.1 ] +``` + +methods +======= + +``` js +var concatMap = require('concat-map') +``` + +concatMap(xs, fn) +----------------- + +Return an array of concatenated elements by calling `fn(x, i)` for each element +`x` and each index `i` in the array `xs`. + +When `fn(x, i)` returns an array, its result will be concatenated with the +result array. If `fn(x, i)` returns anything else, that value will be pushed +onto the end of the result array. + +install +======= + +With [npm](http://npmjs.org) do: + +``` +npm install concat-map +``` + +license +======= + +MIT + +notes +===== + +This module was written while sitting high above the ground in a tree. diff --git a/node_modules/concat-map/example/map.js b/node_modules/concat-map/example/map.js new file mode 100644 index 0000000..3365621 --- /dev/null +++ b/node_modules/concat-map/example/map.js @@ -0,0 +1,6 @@ +var concatMap = require('../'); +var xs = [ 1, 2, 3, 4, 5, 6 ]; +var ys = concatMap(xs, function (x) { + return x % 2 ? [ x - 0.1, x, x + 0.1 ] : []; +}); +console.dir(ys); diff --git a/node_modules/concat-map/index.js b/node_modules/concat-map/index.js new file mode 100644 index 0000000..b29a781 --- /dev/null +++ b/node_modules/concat-map/index.js @@ -0,0 +1,13 @@ +module.exports = function (xs, fn) { + var res = []; + for (var i = 0; i < xs.length; i++) { + var x = fn(xs[i], i); + if (isArray(x)) res.push.apply(res, x); + else res.push(x); + } + return res; +}; + +var isArray = Array.isArray || function (xs) { + return Object.prototype.toString.call(xs) === '[object Array]'; +}; diff --git a/node_modules/concat-map/package.json b/node_modules/concat-map/package.json new file mode 100644 index 0000000..d3640e6 --- /dev/null +++ b/node_modules/concat-map/package.json @@ -0,0 +1,43 @@ +{ + "name" : "concat-map", + "description" : "concatenative mapdashery", + "version" : "0.0.1", + "repository" : { + "type" : "git", + "url" : "git://github.com/substack/node-concat-map.git" + }, + "main" : "index.js", + "keywords" : [ + "concat", + "concatMap", + "map", + "functional", + "higher-order" + ], + "directories" : { + "example" : "example", + "test" : "test" + }, + "scripts" : { + "test" : "tape test/*.js" + }, + "devDependencies" : { + "tape" : "~2.4.0" + }, + "license" : "MIT", + "author" : { + "name" : "James Halliday", + "email" : "mail@substack.net", + "url" : "http://substack.net" + }, + "testling" : { + "files" : "test/*.js", + "browsers" : { + "ie" : [ 6, 7, 8, 9 ], + "ff" : [ 3.5, 10, 15.0 ], + "chrome" : [ 10, 22 ], + "safari" : [ 5.1 ], + "opera" : [ 12 ] + } + } +} diff --git a/node_modules/concat-map/test/map.js b/node_modules/concat-map/test/map.js new file mode 100644 index 0000000..fdbd702 --- /dev/null +++ b/node_modules/concat-map/test/map.js @@ -0,0 +1,39 @@ +var concatMap = require('../'); +var test = require('tape'); + +test('empty or not', function (t) { + var xs = [ 1, 2, 3, 4, 5, 6 ]; + var ixes = []; + var ys = concatMap(xs, function (x, ix) { + ixes.push(ix); + return x % 2 ? [ x - 0.1, x, x + 0.1 ] : []; + }); + t.same(ys, [ 0.9, 1, 1.1, 2.9, 3, 3.1, 4.9, 5, 5.1 ]); + t.same(ixes, [ 0, 1, 2, 3, 4, 5 ]); + t.end(); +}); + +test('always something', function (t) { + var xs = [ 'a', 'b', 'c', 'd' ]; + var ys = concatMap(xs, function (x) { + return x === 'b' ? [ 'B', 'B', 'B' ] : [ x ]; + }); + t.same(ys, [ 'a', 'B', 'B', 'B', 'c', 'd' ]); + t.end(); +}); + +test('scalars', function (t) { + var xs = [ 'a', 'b', 'c', 'd' ]; + var ys = concatMap(xs, function (x) { + return x === 'b' ? [ 'B', 'B', 'B' ] : x; + }); + t.same(ys, [ 'a', 'B', 'B', 'B', 'c', 'd' ]); + t.end(); +}); + +test('undefs', function (t) { + var xs = [ 'a', 'b', 'c', 'd' ]; + var ys = concatMap(xs, function () {}); + t.same(ys, [ undefined, undefined, undefined, undefined ]); + t.end(); +}); diff --git a/node_modules/deprecation/LICENSE b/node_modules/deprecation/LICENSE new file mode 100644 index 0000000..1683b58 --- /dev/null +++ b/node_modules/deprecation/LICENSE @@ -0,0 +1,15 @@ +The ISC License + +Copyright (c) Gregor Martynus and contributors + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR +IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. diff --git a/node_modules/deprecation/README.md b/node_modules/deprecation/README.md new file mode 100644 index 0000000..648809d --- /dev/null +++ b/node_modules/deprecation/README.md @@ -0,0 +1,77 @@ +# deprecation + +> Log a deprecation message with stack + +![build](https://action-badges.now.sh/gr2m/deprecation) + +## Usage + + + + + + +
        +Browsers + + +Load `deprecation` directly from [cdn.pika.dev](https://cdn.pika.dev) + +```html + +``` + +
        +Node + + +Install with `npm install deprecation` + +```js +const { Deprecation } = require("deprecation"); +// or: import { Deprecation } from "deprecation"; +``` + +
        + +```js +function foo() { + bar(); +} + +function bar() { + baz(); +} + +function baz() { + console.warn(new Deprecation("[my-lib] foo() is deprecated, use bar()")); +} + +foo(); +// { Deprecation: [my-lib] foo() is deprecated, use bar() +// at baz (/path/to/file.js:12:15) +// at bar (/path/to/file.js:8:3) +// at foo (/path/to/file.js:4:3) +``` + +To log a deprecation message only once, you can use the [once](https://www.npmjs.com/package/once) module. + +```js +const Deprecation = require("deprecation"); +const once = require("once"); + +const deprecateFoo = once(console.warn); + +function foo() { + deprecateFoo(new Deprecation("[my-lib] foo() is deprecated, use bar()")); +} + +foo(); +foo(); // logs nothing +``` + +## License + +[ISC](LICENSE) diff --git a/node_modules/deprecation/dist-node/index.js b/node_modules/deprecation/dist-node/index.js new file mode 100644 index 0000000..9da1775 --- /dev/null +++ b/node_modules/deprecation/dist-node/index.js @@ -0,0 +1,20 @@ +'use strict'; + +Object.defineProperty(exports, '__esModule', { value: true }); + +class Deprecation extends Error { + constructor(message) { + super(message); // Maintains proper stack trace (only available on V8) + + /* istanbul ignore next */ + + if (Error.captureStackTrace) { + Error.captureStackTrace(this, this.constructor); + } + + this.name = 'Deprecation'; + } + +} + +exports.Deprecation = Deprecation; diff --git a/node_modules/deprecation/dist-src/index.js b/node_modules/deprecation/dist-src/index.js new file mode 100644 index 0000000..7950fdc --- /dev/null +++ b/node_modules/deprecation/dist-src/index.js @@ -0,0 +1,14 @@ +export class Deprecation extends Error { + constructor(message) { + super(message); // Maintains proper stack trace (only available on V8) + + /* istanbul ignore next */ + + if (Error.captureStackTrace) { + Error.captureStackTrace(this, this.constructor); + } + + this.name = 'Deprecation'; + } + +} \ No newline at end of file diff --git a/node_modules/deprecation/dist-types/index.d.ts b/node_modules/deprecation/dist-types/index.d.ts new file mode 100644 index 0000000..e3ae7ad --- /dev/null +++ b/node_modules/deprecation/dist-types/index.d.ts @@ -0,0 +1,3 @@ +export class Deprecation extends Error { + name: "Deprecation"; +} diff --git a/node_modules/deprecation/dist-web/index.js b/node_modules/deprecation/dist-web/index.js new file mode 100644 index 0000000..c6bbda7 --- /dev/null +++ b/node_modules/deprecation/dist-web/index.js @@ -0,0 +1,16 @@ +class Deprecation extends Error { + constructor(message) { + super(message); // Maintains proper stack trace (only available on V8) + + /* istanbul ignore next */ + + if (Error.captureStackTrace) { + Error.captureStackTrace(this, this.constructor); + } + + this.name = 'Deprecation'; + } + +} + +export { Deprecation }; diff --git a/node_modules/deprecation/package.json b/node_modules/deprecation/package.json new file mode 100644 index 0000000..a45fd51 --- /dev/null +++ b/node_modules/deprecation/package.json @@ -0,0 +1,34 @@ +{ + "name": "deprecation", + "description": "Log a deprecation message with stack", + "version": "2.3.1", + "license": "ISC", + "files": [ + "dist-*/", + "bin/" + ], + "esnext": "dist-src/index.js", + "main": "dist-node/index.js", + "module": "dist-web/index.js", + "types": "dist-types/index.d.ts", + "pika": true, + "sideEffects": false, + "keywords": [ + "deprecate", + "deprecated", + "deprecation" + ], + "repository": { + "type": "git", + "url": "https://github.com/gr2m/deprecation.git" + }, + "dependencies": {}, + "devDependencies": { + "@pika/pack": "^0.3.7", + "@pika/plugin-build-node": "^0.4.0", + "@pika/plugin-build-types": "^0.4.0", + "@pika/plugin-build-web": "^0.4.0", + "@pika/plugin-standard-pkg": "^0.4.0", + "semantic-release": "^15.13.3" + } +} diff --git a/node_modules/dom-walk/LICENCE b/node_modules/dom-walk/LICENCE new file mode 100644 index 0000000..a23e08a --- /dev/null +++ b/node_modules/dom-walk/LICENCE @@ -0,0 +1,19 @@ +Copyright (c) 2012 Raynos. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. \ No newline at end of file diff --git a/node_modules/dom-walk/Makefile b/node_modules/dom-walk/Makefile new file mode 100644 index 0000000..132d3a3 --- /dev/null +++ b/node_modules/dom-walk/Makefile @@ -0,0 +1,2 @@ +run: + ./node_modules/.bin/browserify-server --cwd example \ No newline at end of file diff --git a/node_modules/dom-walk/README.md b/node_modules/dom-walk/README.md new file mode 100644 index 0000000..9e33dd1 --- /dev/null +++ b/node_modules/dom-walk/README.md @@ -0,0 +1,23 @@ +# dom-walk + +iteratively walk a DOM node + +## Example + +``` js +var walk = require("dom-walk") + +walk(document.body.childNodes, function (node) { + console.log("node", node) +}) +``` + +## Installation + +`npm install dom-walk` + +## Contributors + + - Raynos + +## MIT Licenced \ No newline at end of file diff --git a/node_modules/dom-walk/example/index.js b/node_modules/dom-walk/example/index.js new file mode 100644 index 0000000..2c8162d --- /dev/null +++ b/node_modules/dom-walk/example/index.js @@ -0,0 +1,5 @@ +var walk = require("../index") + +walk(document, function (node) { + console.log("node", node) +}) diff --git a/node_modules/dom-walk/index.js b/node_modules/dom-walk/index.js new file mode 100644 index 0000000..9c2402d --- /dev/null +++ b/node_modules/dom-walk/index.js @@ -0,0 +1,24 @@ +var slice = Array.prototype.slice + +module.exports = iterativelyWalk + +function iterativelyWalk(nodes, cb) { + if (!('length' in nodes)) { + nodes = [nodes] + } + + nodes = slice.call(nodes) + + while(nodes.length) { + var node = nodes.shift(), + ret = cb(node) + + if (ret) { + return ret + } + + if (node.childNodes && node.childNodes.length) { + nodes = slice.call(node.childNodes).concat(nodes) + } + } +} diff --git a/node_modules/dom-walk/package.json b/node_modules/dom-walk/package.json new file mode 100644 index 0000000..c37c128 --- /dev/null +++ b/node_modules/dom-walk/package.json @@ -0,0 +1,32 @@ +{ + "name": "dom-walk", + "version": "0.1.2", + "description": "iteratively walk a DOM node", + "keywords": [], + "author": "Raynos ", + "repository": "git://github.com/Raynos/dom-walk.git", + "main": "index", + "homepage": "https://github.com/Raynos/dom-walk", + "contributors": [ + { + "name": "Jake Verbaten" + } + ], + "bugs": { + "url": "https://github.com/Raynos/dom-walk/issues", + "email": "raynos2@gmail.com" + }, + "dependencies": {}, + "devDependencies": { + "budo": "11.6.3" + }, + "licenses": [ + { + "type": "MIT", + "url": "http://github.com/Raynos/dom-walk/raw/master/LICENSE" + } + ], + "scripts": { + "example": "budo example/index.js" + } +} diff --git a/node_modules/esbuild/LICENSE.md b/node_modules/esbuild/LICENSE.md new file mode 100644 index 0000000..2027e8d --- /dev/null +++ b/node_modules/esbuild/LICENSE.md @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2020 Evan Wallace + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/node_modules/esbuild/README.md b/node_modules/esbuild/README.md new file mode 100644 index 0000000..93863d1 --- /dev/null +++ b/node_modules/esbuild/README.md @@ -0,0 +1,3 @@ +# esbuild + +This is a JavaScript bundler and minifier. See https://github.com/evanw/esbuild and the [JavaScript API documentation](https://esbuild.github.io/api/) for details. diff --git a/node_modules/esbuild/bin/esbuild b/node_modules/esbuild/bin/esbuild new file mode 100755 index 0000000..cfc84e7 --- /dev/null +++ b/node_modules/esbuild/bin/esbuild @@ -0,0 +1,221 @@ +#!/usr/bin/env node +"use strict"; +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 __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 +)); + +// lib/npm/node-platform.ts +var fs = require("fs"); +var os = require("os"); +var path = require("path"); +var ESBUILD_BINARY_PATH = process.env.ESBUILD_BINARY_PATH || ESBUILD_BINARY_PATH; +var isValidBinaryPath = (x) => !!x && x !== "/usr/bin/esbuild"; +var packageDarwin_arm64 = "@esbuild/darwin-arm64"; +var packageDarwin_x64 = "@esbuild/darwin-x64"; +var knownWindowsPackages = { + "win32 arm64 LE": "@esbuild/win32-arm64", + "win32 ia32 LE": "@esbuild/win32-ia32", + "win32 x64 LE": "@esbuild/win32-x64" +}; +var knownUnixlikePackages = { + "android arm64 LE": "@esbuild/android-arm64", + "darwin arm64 LE": "@esbuild/darwin-arm64", + "darwin x64 LE": "@esbuild/darwin-x64", + "freebsd arm64 LE": "@esbuild/freebsd-arm64", + "freebsd x64 LE": "@esbuild/freebsd-x64", + "linux arm LE": "@esbuild/linux-arm", + "linux arm64 LE": "@esbuild/linux-arm64", + "linux ia32 LE": "@esbuild/linux-ia32", + "linux mips64el LE": "@esbuild/linux-mips64el", + "linux ppc64 LE": "@esbuild/linux-ppc64", + "linux riscv64 LE": "@esbuild/linux-riscv64", + "linux s390x BE": "@esbuild/linux-s390x", + "linux x64 LE": "@esbuild/linux-x64", + "linux loong64 LE": "@esbuild/linux-loong64", + "netbsd x64 LE": "@esbuild/netbsd-x64", + "openbsd x64 LE": "@esbuild/openbsd-x64", + "sunos x64 LE": "@esbuild/sunos-x64" +}; +var knownWebAssemblyFallbackPackages = { + "android arm LE": "@esbuild/android-arm", + "android x64 LE": "@esbuild/android-x64" +}; +function pkgAndSubpathForCurrentPlatform() { + let pkg; + let subpath; + let isWASM2 = false; + let platformKey = `${process.platform} ${os.arch()} ${os.endianness()}`; + if (platformKey in knownWindowsPackages) { + pkg = knownWindowsPackages[platformKey]; + subpath = "esbuild.exe"; + } else if (platformKey in knownUnixlikePackages) { + pkg = knownUnixlikePackages[platformKey]; + subpath = "bin/esbuild"; + } else if (platformKey in knownWebAssemblyFallbackPackages) { + pkg = knownWebAssemblyFallbackPackages[platformKey]; + subpath = "bin/esbuild"; + isWASM2 = true; + } else { + throw new Error(`Unsupported platform: ${platformKey}`); + } + return { pkg, subpath, isWASM: isWASM2 }; +} +function pkgForSomeOtherPlatform() { + const libMainJS = require.resolve("esbuild"); + const nodeModulesDirectory = path.dirname(path.dirname(path.dirname(libMainJS))); + if (path.basename(nodeModulesDirectory) === "node_modules") { + for (const unixKey in knownUnixlikePackages) { + try { + const pkg = knownUnixlikePackages[unixKey]; + if (fs.existsSync(path.join(nodeModulesDirectory, pkg))) + return pkg; + } catch { + } + } + for (const windowsKey in knownWindowsPackages) { + try { + const pkg = knownWindowsPackages[windowsKey]; + if (fs.existsSync(path.join(nodeModulesDirectory, pkg))) + return pkg; + } catch { + } + } + } + return null; +} +function downloadedBinPath(pkg, subpath) { + const esbuildLibDir = path.dirname(require.resolve("esbuild")); + return path.join(esbuildLibDir, `downloaded-${pkg.replace("/", "-")}-${path.basename(subpath)}`); +} +function generateBinPath() { + if (isValidBinaryPath(ESBUILD_BINARY_PATH)) { + if (!fs.existsSync(ESBUILD_BINARY_PATH)) { + console.warn(`[esbuild] Ignoring bad configuration: ESBUILD_BINARY_PATH=${ESBUILD_BINARY_PATH}`); + } else { + return { binPath: ESBUILD_BINARY_PATH, isWASM: false }; + } + } + const { pkg, subpath, isWASM: isWASM2 } = pkgAndSubpathForCurrentPlatform(); + let binPath2; + try { + binPath2 = require.resolve(`${pkg}/${subpath}`); + } catch (e) { + binPath2 = downloadedBinPath(pkg, subpath); + if (!fs.existsSync(binPath2)) { + try { + require.resolve(pkg); + } catch { + const otherPkg = pkgForSomeOtherPlatform(); + if (otherPkg) { + let suggestions = ` +Specifically the "${otherPkg}" package is present but this platform +needs the "${pkg}" package instead. People often get into this +situation by installing esbuild on Windows or macOS and copying "node_modules" +into a Docker image that runs Linux, or by copying "node_modules" between +Windows and WSL environments. + +If you are installing with npm, you can try not copying the "node_modules" +directory when you copy the files over, and running "npm ci" or "npm install" +on the destination platform after the copy. Or you could consider using yarn +instead of npm which has built-in support for installing a package on multiple +platforms simultaneously. + +If you are installing with yarn, you can try listing both this platform and the +other platform in your ".yarnrc.yml" file using the "supportedArchitectures" +feature: https://yarnpkg.com/configuration/yarnrc/#supportedArchitectures +Keep in mind that this means multiple copies of esbuild will be present. +`; + if (pkg === packageDarwin_x64 && otherPkg === packageDarwin_arm64 || pkg === packageDarwin_arm64 && otherPkg === packageDarwin_x64) { + suggestions = ` +Specifically the "${otherPkg}" package is present but this platform +needs the "${pkg}" package instead. People often get into this +situation by installing esbuild with npm running inside of Rosetta 2 and then +trying to use it with node running outside of Rosetta 2, or vice versa (Rosetta +2 is Apple's on-the-fly x86_64-to-arm64 translation service). + +If you are installing with npm, you can try ensuring that both npm and node are +not running under Rosetta 2 and then reinstalling esbuild. This likely involves +changing how you installed npm and/or node. For example, installing node with +the universal installer here should work: https://nodejs.org/en/download/. Or +you could consider using yarn instead of npm which has built-in support for +installing a package on multiple platforms simultaneously. + +If you are installing with yarn, you can try listing both "arm64" and "x64" +in your ".yarnrc.yml" file using the "supportedArchitectures" feature: +https://yarnpkg.com/configuration/yarnrc/#supportedArchitectures +Keep in mind that this means multiple copies of esbuild will be present. +`; + } + throw new Error(` +You installed esbuild for another platform than the one you're currently using. +This won't work because esbuild is written with native code and needs to +install a platform-specific binary executable. +${suggestions} +Another alternative is to use the "esbuild-wasm" package instead, which works +the same way on all platforms. But it comes with a heavy performance cost and +can sometimes be 10x slower than the "esbuild" package, so you may also not +want to do that. +`); + } + throw new Error(`The package "${pkg}" could not be found, and is needed by esbuild. + +If you are installing esbuild with npm, make sure that you don't specify the +"--no-optional" or "--omit=optional" flags. The "optionalDependencies" feature +of "package.json" is used by esbuild to install the correct binary executable +for your current platform.`); + } + throw e; + } + } + if (/\.zip\//.test(binPath2)) { + let pnpapi; + try { + pnpapi = require("pnpapi"); + } catch (e) { + } + if (pnpapi) { + const root = pnpapi.getPackageInformation(pnpapi.topLevel).packageLocation; + const binTargetPath = path.join( + root, + "node_modules", + ".cache", + "esbuild", + `pnpapi-${pkg.replace("/", "-")}-${"0.17.10"}-${path.basename(subpath)}` + ); + if (!fs.existsSync(binTargetPath)) { + fs.mkdirSync(path.dirname(binTargetPath), { recursive: true }); + fs.copyFileSync(binPath2, binTargetPath); + fs.chmodSync(binTargetPath, 493); + } + return { binPath: binTargetPath, isWASM: isWASM2 }; + } + } + return { binPath: binPath2, isWASM: isWASM2 }; +} + +// lib/npm/node-shim.ts +var { binPath, isWASM } = generateBinPath(); +if (isWASM) { + require("child_process").execFileSync("node", [binPath].concat(process.argv.slice(2)), { stdio: "inherit" }); +} else { + require("child_process").execFileSync(binPath, process.argv.slice(2), { stdio: "inherit" }); +} diff --git a/node_modules/esbuild/install.js b/node_modules/esbuild/install.js new file mode 100644 index 0000000..b2fab4b --- /dev/null +++ b/node_modules/esbuild/install.js @@ -0,0 +1,286 @@ +"use strict"; +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 __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 +)); + +// lib/npm/node-platform.ts +var fs = require("fs"); +var os = require("os"); +var path = require("path"); +var ESBUILD_BINARY_PATH = process.env.ESBUILD_BINARY_PATH || ESBUILD_BINARY_PATH; +var isValidBinaryPath = (x) => !!x && x !== "/usr/bin/esbuild"; +var knownWindowsPackages = { + "win32 arm64 LE": "@esbuild/win32-arm64", + "win32 ia32 LE": "@esbuild/win32-ia32", + "win32 x64 LE": "@esbuild/win32-x64" +}; +var knownUnixlikePackages = { + "android arm64 LE": "@esbuild/android-arm64", + "darwin arm64 LE": "@esbuild/darwin-arm64", + "darwin x64 LE": "@esbuild/darwin-x64", + "freebsd arm64 LE": "@esbuild/freebsd-arm64", + "freebsd x64 LE": "@esbuild/freebsd-x64", + "linux arm LE": "@esbuild/linux-arm", + "linux arm64 LE": "@esbuild/linux-arm64", + "linux ia32 LE": "@esbuild/linux-ia32", + "linux mips64el LE": "@esbuild/linux-mips64el", + "linux ppc64 LE": "@esbuild/linux-ppc64", + "linux riscv64 LE": "@esbuild/linux-riscv64", + "linux s390x BE": "@esbuild/linux-s390x", + "linux x64 LE": "@esbuild/linux-x64", + "linux loong64 LE": "@esbuild/linux-loong64", + "netbsd x64 LE": "@esbuild/netbsd-x64", + "openbsd x64 LE": "@esbuild/openbsd-x64", + "sunos x64 LE": "@esbuild/sunos-x64" +}; +var knownWebAssemblyFallbackPackages = { + "android arm LE": "@esbuild/android-arm", + "android x64 LE": "@esbuild/android-x64" +}; +function pkgAndSubpathForCurrentPlatform() { + let pkg; + let subpath; + let isWASM = false; + let platformKey = `${process.platform} ${os.arch()} ${os.endianness()}`; + if (platformKey in knownWindowsPackages) { + pkg = knownWindowsPackages[platformKey]; + subpath = "esbuild.exe"; + } else if (platformKey in knownUnixlikePackages) { + pkg = knownUnixlikePackages[platformKey]; + subpath = "bin/esbuild"; + } else if (platformKey in knownWebAssemblyFallbackPackages) { + pkg = knownWebAssemblyFallbackPackages[platformKey]; + subpath = "bin/esbuild"; + isWASM = true; + } else { + throw new Error(`Unsupported platform: ${platformKey}`); + } + return { pkg, subpath, isWASM }; +} +function downloadedBinPath(pkg, subpath) { + const esbuildLibDir = path.dirname(require.resolve("esbuild")); + return path.join(esbuildLibDir, `downloaded-${pkg.replace("/", "-")}-${path.basename(subpath)}`); +} + +// lib/npm/node-install.ts +var fs2 = require("fs"); +var os2 = require("os"); +var path2 = require("path"); +var zlib = require("zlib"); +var https = require("https"); +var child_process = require("child_process"); +var toPath = path2.join(__dirname, "bin", "esbuild"); +var isToPathJS = true; +function validateBinaryVersion(...command) { + command.push("--version"); + let stdout; + try { + stdout = child_process.execFileSync(command.shift(), command, { + // Without this, this install script strangely crashes with the error + // "EACCES: permission denied, write" but only on Ubuntu Linux when node is + // installed from the Snap Store. This is not a problem when you download + // the official version of node. The problem appears to be that stderr + // (i.e. file descriptor 2) isn't writable? + // + // More info: + // - https://snapcraft.io/ (what the Snap Store is) + // - https://nodejs.org/dist/ (download the official version of node) + // - https://github.com/evanw/esbuild/issues/1711#issuecomment-1027554035 + // + stdio: "pipe" + }).toString().trim(); + } catch (err) { + if (os2.platform() === "darwin" && /_SecTrustEvaluateWithError/.test(err + "")) { + let os3 = "this version of macOS"; + try { + os3 = "macOS " + child_process.execFileSync("sw_vers", ["-productVersion"]).toString().trim(); + } catch { + } + throw new Error(`The "esbuild" package cannot be installed because ${os3} is too outdated. + +The Go compiler (which esbuild relies on) no longer supports ${os3}, +which means the "esbuild" binary executable can't be run. You can either: + + * Update your version of macOS to one that the Go compiler supports + * Use the "esbuild-wasm" package instead of the "esbuild" package + * Build esbuild yourself using an older version of the Go compiler +`); + } + throw err; + } + if (stdout !== "0.17.10") { + throw new Error(`Expected ${JSON.stringify("0.17.10")} but got ${JSON.stringify(stdout)}`); + } +} +function isYarn() { + const { npm_config_user_agent } = process.env; + if (npm_config_user_agent) { + return /\byarn\//.test(npm_config_user_agent); + } + return false; +} +function fetch(url) { + return new Promise((resolve, reject) => { + https.get(url, (res) => { + if ((res.statusCode === 301 || res.statusCode === 302) && res.headers.location) + return fetch(res.headers.location).then(resolve, reject); + if (res.statusCode !== 200) + return reject(new Error(`Server responded with ${res.statusCode}`)); + let chunks = []; + res.on("data", (chunk) => chunks.push(chunk)); + res.on("end", () => resolve(Buffer.concat(chunks))); + }).on("error", reject); + }); +} +function extractFileFromTarGzip(buffer, subpath) { + try { + buffer = zlib.unzipSync(buffer); + } catch (err) { + throw new Error(`Invalid gzip data in archive: ${err && err.message || err}`); + } + let str = (i, n) => String.fromCharCode(...buffer.subarray(i, i + n)).replace(/\0.*$/, ""); + let offset = 0; + subpath = `package/${subpath}`; + while (offset < buffer.length) { + let name = str(offset, 100); + let size = parseInt(str(offset + 124, 12), 8); + offset += 512; + if (!isNaN(size)) { + if (name === subpath) + return buffer.subarray(offset, offset + size); + offset += size + 511 & ~511; + } + } + throw new Error(`Could not find ${JSON.stringify(subpath)} in archive`); +} +function installUsingNPM(pkg, subpath, binPath) { + const env = { ...process.env, npm_config_global: void 0 }; + const esbuildLibDir = path2.dirname(require.resolve("esbuild")); + const installDir = path2.join(esbuildLibDir, "npm-install"); + fs2.mkdirSync(installDir); + try { + fs2.writeFileSync(path2.join(installDir, "package.json"), "{}"); + child_process.execSync( + `npm install --loglevel=error --prefer-offline --no-audit --progress=false ${pkg}@${"0.17.10"}`, + { cwd: installDir, stdio: "pipe", env } + ); + const installedBinPath = path2.join(installDir, "node_modules", pkg, subpath); + fs2.renameSync(installedBinPath, binPath); + } finally { + try { + removeRecursive(installDir); + } catch { + } + } +} +function removeRecursive(dir) { + for (const entry of fs2.readdirSync(dir)) { + const entryPath = path2.join(dir, entry); + let stats; + try { + stats = fs2.lstatSync(entryPath); + } catch { + continue; + } + if (stats.isDirectory()) + removeRecursive(entryPath); + else + fs2.unlinkSync(entryPath); + } + fs2.rmdirSync(dir); +} +function applyManualBinaryPathOverride(overridePath) { + const pathString = JSON.stringify(overridePath); + fs2.writeFileSync(toPath, `#!/usr/bin/env node +require('child_process').execFileSync(${pathString}, process.argv.slice(2), { stdio: 'inherit' }); +`); + const libMain = path2.join(__dirname, "lib", "main.js"); + const code = fs2.readFileSync(libMain, "utf8"); + fs2.writeFileSync(libMain, `var ESBUILD_BINARY_PATH = ${pathString}; +${code}`); +} +function maybeOptimizePackage(binPath) { + if (os2.platform() !== "win32" && !isYarn()) { + const tempPath = path2.join(__dirname, "bin-esbuild"); + try { + fs2.linkSync(binPath, tempPath); + fs2.renameSync(tempPath, toPath); + isToPathJS = false; + fs2.unlinkSync(tempPath); + } catch { + } + } +} +async function downloadDirectlyFromNPM(pkg, subpath, binPath) { + const url = `https://registry.npmjs.org/${pkg}/-/${pkg.replace("@esbuild/", "")}-${"0.17.10"}.tgz`; + console.error(`[esbuild] Trying to download ${JSON.stringify(url)}`); + try { + fs2.writeFileSync(binPath, extractFileFromTarGzip(await fetch(url), subpath)); + fs2.chmodSync(binPath, 493); + } catch (e) { + console.error(`[esbuild] Failed to download ${JSON.stringify(url)}: ${e && e.message || e}`); + throw e; + } +} +async function checkAndPreparePackage() { + if (isValidBinaryPath(ESBUILD_BINARY_PATH)) { + if (!fs2.existsSync(ESBUILD_BINARY_PATH)) { + console.warn(`[esbuild] Ignoring bad configuration: ESBUILD_BINARY_PATH=${ESBUILD_BINARY_PATH}`); + } else { + applyManualBinaryPathOverride(ESBUILD_BINARY_PATH); + return; + } + } + const { pkg, subpath } = pkgAndSubpathForCurrentPlatform(); + let binPath; + try { + binPath = require.resolve(`${pkg}/${subpath}`); + } catch (e) { + console.error(`[esbuild] Failed to find package "${pkg}" on the file system + +This can happen if you use the "--no-optional" flag. The "optionalDependencies" +package.json feature is used by esbuild to install the correct binary executable +for your current platform. This install script will now attempt to work around +this. If that fails, you need to remove the "--no-optional" flag to use esbuild. +`); + binPath = downloadedBinPath(pkg, subpath); + try { + console.error(`[esbuild] Trying to install package "${pkg}" using npm`); + installUsingNPM(pkg, subpath, binPath); + } catch (e2) { + console.error(`[esbuild] Failed to install package "${pkg}" using npm: ${e2 && e2.message || e2}`); + try { + await downloadDirectlyFromNPM(pkg, subpath, binPath); + } catch (e3) { + throw new Error(`Failed to install package "${pkg}"`); + } + } + } + maybeOptimizePackage(binPath); +} +checkAndPreparePackage().then(() => { + if (isToPathJS) { + validateBinaryVersion(process.execPath, toPath); + } else { + validateBinaryVersion(toPath); + } +}); diff --git a/node_modules/esbuild/lib/main.d.ts b/node_modules/esbuild/lib/main.d.ts new file mode 100644 index 0000000..215e98d --- /dev/null +++ b/node_modules/esbuild/lib/main.d.ts @@ -0,0 +1,642 @@ +export type Platform = 'browser' | 'node' | 'neutral' +export type Format = 'iife' | 'cjs' | 'esm' +export type Loader = 'base64' | 'binary' | 'copy' | 'css' | 'dataurl' | 'default' | 'empty' | 'file' | 'js' | 'json' | 'jsx' | 'text' | 'ts' | 'tsx' +export type LogLevel = 'verbose' | 'debug' | 'info' | 'warning' | 'error' | 'silent' +export type Charset = 'ascii' | 'utf8' +export type Drop = 'console' | 'debugger' + +interface CommonOptions { + /** Documentation: https://esbuild.github.io/api/#sourcemap */ + sourcemap?: boolean | 'linked' | 'inline' | 'external' | 'both' + /** Documentation: https://esbuild.github.io/api/#legal-comments */ + legalComments?: 'none' | 'inline' | 'eof' | 'linked' | 'external' + /** Documentation: https://esbuild.github.io/api/#source-root */ + sourceRoot?: string + /** Documentation: https://esbuild.github.io/api/#sources-content */ + sourcesContent?: boolean + + /** Documentation: https://esbuild.github.io/api/#format */ + format?: Format + /** Documentation: https://esbuild.github.io/api/#global-name */ + globalName?: string + /** Documentation: https://esbuild.github.io/api/#target */ + target?: string | string[] + /** Documentation: https://esbuild.github.io/api/#supported */ + supported?: Record + /** Documentation: https://esbuild.github.io/api/#platform */ + platform?: Platform + + /** Documentation: https://esbuild.github.io/api/#mangle-props */ + mangleProps?: RegExp + /** Documentation: https://esbuild.github.io/api/#mangle-props */ + reserveProps?: RegExp + /** Documentation: https://esbuild.github.io/api/#mangle-props */ + mangleQuoted?: boolean + /** Documentation: https://esbuild.github.io/api/#mangle-props */ + mangleCache?: Record + /** Documentation: https://esbuild.github.io/api/#drop */ + drop?: Drop[] + /** Documentation: https://esbuild.github.io/api/#minify */ + minify?: boolean + /** Documentation: https://esbuild.github.io/api/#minify */ + minifyWhitespace?: boolean + /** Documentation: https://esbuild.github.io/api/#minify */ + minifyIdentifiers?: boolean + /** Documentation: https://esbuild.github.io/api/#minify */ + minifySyntax?: boolean + /** Documentation: https://esbuild.github.io/api/#charset */ + charset?: Charset + /** Documentation: https://esbuild.github.io/api/#tree-shaking */ + treeShaking?: boolean + /** Documentation: https://esbuild.github.io/api/#ignore-annotations */ + ignoreAnnotations?: boolean + + /** Documentation: https://esbuild.github.io/api/#jsx */ + jsx?: 'transform' | 'preserve' | 'automatic' + /** Documentation: https://esbuild.github.io/api/#jsx-factory */ + jsxFactory?: string + /** Documentation: https://esbuild.github.io/api/#jsx-fragment */ + jsxFragment?: string + /** Documentation: https://esbuild.github.io/api/#jsx-import-source */ + jsxImportSource?: string + /** Documentation: https://esbuild.github.io/api/#jsx-development */ + jsxDev?: boolean + /** Documentation: https://esbuild.github.io/api/#jsx-side-effects */ + jsxSideEffects?: boolean + + /** Documentation: https://esbuild.github.io/api/#define */ + define?: { [key: string]: string } + /** Documentation: https://esbuild.github.io/api/#pure */ + pure?: string[] + /** Documentation: https://esbuild.github.io/api/#keep-names */ + keepNames?: boolean + + /** Documentation: https://esbuild.github.io/api/#color */ + color?: boolean + /** Documentation: https://esbuild.github.io/api/#log-level */ + logLevel?: LogLevel + /** Documentation: https://esbuild.github.io/api/#log-limit */ + logLimit?: number + /** Documentation: https://esbuild.github.io/api/#log-override */ + logOverride?: Record +} + +export interface BuildOptions extends CommonOptions { + /** Documentation: https://esbuild.github.io/api/#bundle */ + bundle?: boolean + /** Documentation: https://esbuild.github.io/api/#splitting */ + splitting?: boolean + /** Documentation: https://esbuild.github.io/api/#preserve-symlinks */ + preserveSymlinks?: boolean + /** Documentation: https://esbuild.github.io/api/#outfile */ + outfile?: string + /** Documentation: https://esbuild.github.io/api/#metafile */ + metafile?: boolean + /** Documentation: https://esbuild.github.io/api/#outdir */ + outdir?: string + /** Documentation: https://esbuild.github.io/api/#outbase */ + outbase?: string + /** Documentation: https://esbuild.github.io/api/#external */ + external?: string[] + /** Documentation: https://esbuild.github.io/api/#packages */ + packages?: 'external' + /** Documentation: https://esbuild.github.io/api/#alias */ + alias?: Record + /** Documentation: https://esbuild.github.io/api/#loader */ + loader?: { [ext: string]: Loader } + /** Documentation: https://esbuild.github.io/api/#resolve-extensions */ + resolveExtensions?: string[] + /** Documentation: https://esbuild.github.io/api/#main-fields */ + mainFields?: string[] + /** Documentation: https://esbuild.github.io/api/#conditions */ + conditions?: string[] + /** Documentation: https://esbuild.github.io/api/#write */ + write?: boolean + /** Documentation: https://esbuild.github.io/api/#allow-overwrite */ + allowOverwrite?: boolean + /** Documentation: https://esbuild.github.io/api/#tsconfig */ + tsconfig?: string + /** Documentation: https://esbuild.github.io/api/#out-extension */ + outExtension?: { [ext: string]: string } + /** Documentation: https://esbuild.github.io/api/#public-path */ + publicPath?: string + /** Documentation: https://esbuild.github.io/api/#entry-names */ + entryNames?: string + /** Documentation: https://esbuild.github.io/api/#chunk-names */ + chunkNames?: string + /** Documentation: https://esbuild.github.io/api/#asset-names */ + assetNames?: string + /** Documentation: https://esbuild.github.io/api/#inject */ + inject?: string[] + /** Documentation: https://esbuild.github.io/api/#banner */ + banner?: { [type: string]: string } + /** Documentation: https://esbuild.github.io/api/#footer */ + footer?: { [type: string]: string } + /** Documentation: https://esbuild.github.io/api/#entry-points */ + entryPoints?: string[] | Record | { in: string, out: string }[] + /** Documentation: https://esbuild.github.io/api/#stdin */ + stdin?: StdinOptions + /** Documentation: https://esbuild.github.io/plugins/ */ + plugins?: Plugin[] + /** Documentation: https://esbuild.github.io/api/#working-directory */ + absWorkingDir?: string + /** Documentation: https://esbuild.github.io/api/#node-paths */ + nodePaths?: string[]; // The "NODE_PATH" variable from Node.js +} + +export interface StdinOptions { + contents: string | Uint8Array + resolveDir?: string + sourcefile?: string + loader?: Loader +} + +export interface Message { + id: string + pluginName: string + text: string + location: Location | null + notes: Note[] + + /** + * Optional user-specified data that is passed through unmodified. You can + * use this to stash the original error, for example. + */ + detail: any +} + +export interface Note { + text: string + location: Location | null +} + +export interface Location { + file: string + namespace: string + /** 1-based */ + line: number + /** 0-based, in bytes */ + column: number + /** in bytes */ + length: number + lineText: string + suggestion: string +} + +export interface OutputFile { + path: string + /** "text" as bytes */ + contents: Uint8Array + /** "contents" as text (changes automatically with "contents") */ + readonly text: string +} + +export interface BuildResult { + errors: Message[] + warnings: Message[] + /** Only when "write: false" */ + outputFiles: OutputFile[] | (SpecificOptions['write'] extends false ? never : undefined) + /** Only when "metafile: true" */ + metafile: Metafile | (SpecificOptions['metafile'] extends true ? never : undefined) + /** Only when "mangleCache" is present */ + mangleCache: Record | (SpecificOptions['mangleCache'] extends Object ? never : undefined) +} + +export interface BuildFailure extends Error { + errors: Message[] + warnings: Message[] +} + +/** Documentation: https://esbuild.github.io/api/#serve-arguments */ +export interface ServeOptions { + port?: number + host?: string + servedir?: string + keyfile?: string + certfile?: string + onRequest?: (args: ServeOnRequestArgs) => void +} + +export interface ServeOnRequestArgs { + remoteAddress: string + method: string + path: string + status: number + /** The time to generate the response, not to send it */ + timeInMS: number +} + +/** Documentation: https://esbuild.github.io/api/#serve-return-values */ +export interface ServeResult { + port: number + host: string +} + +export interface TransformOptions extends CommonOptions { + tsconfigRaw?: string | { + compilerOptions?: { + alwaysStrict?: boolean, + importsNotUsedAsValues?: 'remove' | 'preserve' | 'error', + jsx?: 'react' | 'react-jsx' | 'react-jsxdev' | 'preserve', + jsxFactory?: string, + jsxFragmentFactory?: string, + jsxImportSource?: string, + preserveValueImports?: boolean, + target?: string, + useDefineForClassFields?: boolean, + }, + } + + sourcefile?: string + loader?: Loader + banner?: string + footer?: string +} + +export interface TransformResult { + code: string + map: string + warnings: Message[] + /** Only when "mangleCache" is present */ + mangleCache: Record | (SpecificOptions['mangleCache'] extends Object ? never : undefined) + /** Only when "legalComments" is "external" */ + legalComments: string | (SpecificOptions['legalComments'] extends 'external' ? never : undefined) +} + +export interface TransformFailure extends Error { + errors: Message[] + warnings: Message[] +} + +export interface Plugin { + name: string + setup: (build: PluginBuild) => (void | Promise) +} + +export interface PluginBuild { + /** Documentation: https://esbuild.github.io/plugins/#build-options */ + initialOptions: BuildOptions + + /** Documentation: https://esbuild.github.io/plugins/#resolve */ + resolve(path: string, options?: ResolveOptions): Promise + + /** Documentation: https://esbuild.github.io/plugins/#on-start */ + onStart(callback: () => + (OnStartResult | null | void | Promise)): void + + /** Documentation: https://esbuild.github.io/plugins/#on-end */ + onEnd(callback: (result: BuildResult) => + (OnEndResult | null | void | Promise)): void + + /** Documentation: https://esbuild.github.io/plugins/#on-resolve */ + onResolve(options: OnResolveOptions, callback: (args: OnResolveArgs) => + (OnResolveResult | null | undefined | Promise)): void + + /** Documentation: https://esbuild.github.io/plugins/#on-load */ + onLoad(options: OnLoadOptions, callback: (args: OnLoadArgs) => + (OnLoadResult | null | undefined | Promise)): void + + /** Documentation: https://esbuild.github.io/plugins/#on-dispose */ + onDispose(callback: () => void): void + + // This is a full copy of the esbuild library in case you need it + esbuild: { + context: typeof context, + build: typeof build, + buildSync: typeof buildSync, + transform: typeof transform, + transformSync: typeof transformSync, + formatMessages: typeof formatMessages, + formatMessagesSync: typeof formatMessagesSync, + analyzeMetafile: typeof analyzeMetafile, + analyzeMetafileSync: typeof analyzeMetafileSync, + initialize: typeof initialize, + version: typeof version, + } +} + +/** Documentation: https://esbuild.github.io/plugins/#resolve-options */ +export interface ResolveOptions { + pluginName?: string + importer?: string + namespace?: string + resolveDir?: string + kind?: ImportKind + pluginData?: any +} + +/** Documentation: https://esbuild.github.io/plugins/#resolve-results */ +export interface ResolveResult { + errors: Message[] + warnings: Message[] + + path: string + external: boolean + sideEffects: boolean + namespace: string + suffix: string + pluginData: any +} + +export interface OnStartResult { + errors?: PartialMessage[] + warnings?: PartialMessage[] +} + +export interface OnEndResult { + errors?: PartialMessage[] + warnings?: PartialMessage[] +} + +/** Documentation: https://esbuild.github.io/plugins/#on-resolve-options */ +export interface OnResolveOptions { + filter: RegExp + namespace?: string +} + +/** Documentation: https://esbuild.github.io/plugins/#on-resolve-arguments */ +export interface OnResolveArgs { + path: string + importer: string + namespace: string + resolveDir: string + kind: ImportKind + pluginData: any +} + +export type ImportKind = + | 'entry-point' + + // JS + | 'import-statement' + | 'require-call' + | 'dynamic-import' + | 'require-resolve' + + // CSS + | 'import-rule' + | 'url-token' + +/** Documentation: https://esbuild.github.io/plugins/#on-resolve-results */ +export interface OnResolveResult { + pluginName?: string + + errors?: PartialMessage[] + warnings?: PartialMessage[] + + path?: string + external?: boolean + sideEffects?: boolean + namespace?: string + suffix?: string + pluginData?: any + + watchFiles?: string[] + watchDirs?: string[] +} + +/** Documentation: https://esbuild.github.io/plugins/#on-load-options */ +export interface OnLoadOptions { + filter: RegExp + namespace?: string +} + +/** Documentation: https://esbuild.github.io/plugins/#on-load-arguments */ +export interface OnLoadArgs { + path: string + namespace: string + suffix: string + pluginData: any +} + +/** Documentation: https://esbuild.github.io/plugins/#on-load-results */ +export interface OnLoadResult { + pluginName?: string + + errors?: PartialMessage[] + warnings?: PartialMessage[] + + contents?: string | Uint8Array + resolveDir?: string + loader?: Loader + pluginData?: any + + watchFiles?: string[] + watchDirs?: string[] +} + +export interface PartialMessage { + id?: string + pluginName?: string + text?: string + location?: Partial | null + notes?: PartialNote[] + detail?: any +} + +export interface PartialNote { + text?: string + location?: Partial | null +} + +/** Documentation: https://esbuild.github.io/api/#metafile */ +export interface Metafile { + inputs: { + [path: string]: { + bytes: number + imports: { + path: string + kind: ImportKind + external?: boolean + original?: string + }[] + format?: 'cjs' | 'esm' + } + } + outputs: { + [path: string]: { + bytes: number + inputs: { + [path: string]: { + bytesInOutput: number + } + } + imports: { + path: string + kind: ImportKind | 'file-loader' + external?: boolean + }[] + exports: string[] + entryPoint?: string + cssBundle?: string + } + } +} + +export interface FormatMessagesOptions { + kind: 'error' | 'warning' + color?: boolean + terminalWidth?: number +} + +export interface AnalyzeMetafileOptions { + color?: boolean + verbose?: boolean +} + +export interface WatchOptions { +} + +export interface BuildContext { + /** Documentation: https://esbuild.github.io/api/#rebuild */ + rebuild(): Promise> + + /** Documentation: https://esbuild.github.io/api/#watch */ + watch(options?: WatchOptions): Promise + + /** Documentation: https://esbuild.github.io/api/#serve */ + serve(options?: ServeOptions): Promise + + cancel(): Promise + dispose(): Promise +} + +/** + * This function invokes the "esbuild" command-line tool for you. It returns a + * promise that either resolves with a "BuildResult" object or rejects with a + * "BuildFailure" object. + * + * - Works in node: yes + * - Works in browser: yes + * + * Documentation: https://esbuild.github.io/api/#build + */ +export declare function build(options: SpecificOptions): Promise> +export declare function build(options: BuildOptions): Promise + +/** + * This is the advanced long-running form of "build" that supports additional + * features such as watch mode and a local development server. + * + * - Works in node: yes + * - Works in browser: no + * + * Documentation: https://esbuild.github.io/api/#build + */ +export declare function context(options: T): Promise> +export declare function context(options: BuildOptions): Promise + +/** + * This function transforms a single JavaScript file. It can be used to minify + * JavaScript, convert TypeScript/JSX to JavaScript, or convert newer JavaScript + * to older JavaScript. It returns a promise that is either resolved with a + * "TransformResult" object or rejected with a "TransformFailure" object. + * + * - Works in node: yes + * - Works in browser: yes + * + * Documentation: https://esbuild.github.io/api/#transform + */ +export declare function transform(input: string | Uint8Array, options?: SpecificOptions): Promise> +export declare function transform(input: string | Uint8Array, options?: TransformOptions): Promise + +/** + * Converts log messages to formatted message strings suitable for printing in + * the terminal. This allows you to reuse the built-in behavior of esbuild's + * log message formatter. This is a batch-oriented API for efficiency. + * + * - Works in node: yes + * - Works in browser: yes + */ +export declare function formatMessages(messages: PartialMessage[], options: FormatMessagesOptions): Promise + +/** + * Pretty-prints an analysis of the metafile JSON to a string. This is just for + * convenience to be able to match esbuild's pretty-printing exactly. If you want + * to customize it, you can just inspect the data in the metafile yourself. + * + * - Works in node: yes + * - Works in browser: yes + * + * Documentation: https://esbuild.github.io/api/#analyze + */ +export declare function analyzeMetafile(metafile: Metafile | string, options?: AnalyzeMetafileOptions): Promise + +/** + * A synchronous version of "build". + * + * - Works in node: yes + * - Works in browser: no + * + * Documentation: https://esbuild.github.io/api/#build + */ +export declare function buildSync(options: SpecificOptions): BuildResult +export declare function buildSync(options: BuildOptions): BuildResult + +/** + * A synchronous version of "transform". + * + * - Works in node: yes + * - Works in browser: no + * + * Documentation: https://esbuild.github.io/api/#transform + */ +export declare function transformSync(input: string, options?: SpecificOptions): TransformResult +export declare function transformSync(input: string | Uint8Array, options?: TransformOptions): TransformResult + +/** + * A synchronous version of "formatMessages". + * + * - Works in node: yes + * - Works in browser: no + */ +export declare function formatMessagesSync(messages: PartialMessage[], options: FormatMessagesOptions): string[] + +/** + * A synchronous version of "analyzeMetafile". + * + * - Works in node: yes + * - Works in browser: no + * + * Documentation: https://esbuild.github.io/api/#analyze + */ +export declare function analyzeMetafileSync(metafile: Metafile | string, options?: AnalyzeMetafileOptions): string + +/** + * This configures the browser-based version of esbuild. It is necessary to + * call this first and wait for the returned promise to be resolved before + * making other API calls when using esbuild in the browser. + * + * - Works in node: yes + * - Works in browser: yes ("options" is required) + * + * Documentation: https://esbuild.github.io/api/#browser + */ +export declare function initialize(options: InitializeOptions): Promise + +export interface InitializeOptions { + /** + * The URL of the "esbuild.wasm" file. This must be provided when running + * esbuild in the browser. + */ + wasmURL?: string | URL + + /** + * The result of calling "new WebAssembly.Module(buffer)" where "buffer" + * is a typed array or ArrayBuffer containing the binary code of the + * "esbuild.wasm" file. + * + * You can use this as an alternative to "wasmURL" for environments where it's + * not possible to download the WebAssembly module. + */ + wasmModule?: WebAssembly.Module + + /** + * By default esbuild runs the WebAssembly-based browser API in a web worker + * to avoid blocking the UI thread. This can be disabled by setting "worker" + * to false. + */ + worker?: boolean +} + +export let version: string diff --git a/node_modules/esbuild/lib/main.js b/node_modules/esbuild/lib/main.js new file mode 100644 index 0000000..e942586 --- /dev/null +++ b/node_modules/esbuild/lib/main.js @@ -0,0 +1,2379 @@ +"use strict"; +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 __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// lib/npm/node.ts +var node_exports = {}; +__export(node_exports, { + analyzeMetafile: () => analyzeMetafile, + analyzeMetafileSync: () => analyzeMetafileSync, + build: () => build, + buildSync: () => buildSync, + context: () => context, + default: () => node_default, + formatMessages: () => formatMessages, + formatMessagesSync: () => formatMessagesSync, + initialize: () => initialize, + transform: () => transform, + transformSync: () => transformSync, + version: () => version +}); +module.exports = __toCommonJS(node_exports); + +// lib/shared/stdio_protocol.ts +function encodePacket(packet) { + let visit = (value) => { + if (value === null) { + bb.write8(0); + } else if (typeof value === "boolean") { + bb.write8(1); + bb.write8(+value); + } else if (typeof value === "number") { + bb.write8(2); + bb.write32(value | 0); + } else if (typeof value === "string") { + bb.write8(3); + bb.write(encodeUTF8(value)); + } else if (value instanceof Uint8Array) { + bb.write8(4); + bb.write(value); + } else if (value instanceof Array) { + bb.write8(5); + bb.write32(value.length); + for (let item of value) { + visit(item); + } + } else { + let keys = Object.keys(value); + bb.write8(6); + bb.write32(keys.length); + for (let key of keys) { + bb.write(encodeUTF8(key)); + visit(value[key]); + } + } + }; + let bb = new ByteBuffer(); + bb.write32(0); + bb.write32(packet.id << 1 | +!packet.isRequest); + visit(packet.value); + writeUInt32LE(bb.buf, bb.len - 4, 0); + return bb.buf.subarray(0, bb.len); +} +function decodePacket(bytes) { + let visit = () => { + switch (bb.read8()) { + case 0: + return null; + case 1: + return !!bb.read8(); + case 2: + return bb.read32(); + case 3: + return decodeUTF8(bb.read()); + case 4: + return bb.read(); + case 5: { + let count = bb.read32(); + let value2 = []; + for (let i = 0; i < count; i++) { + value2.push(visit()); + } + return value2; + } + case 6: { + let count = bb.read32(); + let value2 = {}; + for (let i = 0; i < count; i++) { + value2[decodeUTF8(bb.read())] = visit(); + } + return value2; + } + default: + throw new Error("Invalid packet"); + } + }; + let bb = new ByteBuffer(bytes); + let id = bb.read32(); + let isRequest = (id & 1) === 0; + id >>>= 1; + let value = visit(); + if (bb.ptr !== bytes.length) { + throw new Error("Invalid packet"); + } + return { id, isRequest, value }; +} +var ByteBuffer = class { + constructor(buf = new Uint8Array(1024)) { + this.buf = buf; + this.len = 0; + this.ptr = 0; + } + _write(delta) { + if (this.len + delta > this.buf.length) { + let clone = new Uint8Array((this.len + delta) * 2); + clone.set(this.buf); + this.buf = clone; + } + this.len += delta; + return this.len - delta; + } + write8(value) { + let offset = this._write(1); + this.buf[offset] = value; + } + write32(value) { + let offset = this._write(4); + writeUInt32LE(this.buf, value, offset); + } + write(bytes) { + let offset = this._write(4 + bytes.length); + writeUInt32LE(this.buf, bytes.length, offset); + this.buf.set(bytes, offset + 4); + } + _read(delta) { + if (this.ptr + delta > this.buf.length) { + throw new Error("Invalid packet"); + } + this.ptr += delta; + return this.ptr - delta; + } + read8() { + return this.buf[this._read(1)]; + } + read32() { + return readUInt32LE(this.buf, this._read(4)); + } + read() { + let length = this.read32(); + let bytes = new Uint8Array(length); + let ptr = this._read(bytes.length); + bytes.set(this.buf.subarray(ptr, ptr + length)); + return bytes; + } +}; +var encodeUTF8; +var decodeUTF8; +var encodeInvariant; +if (typeof TextEncoder !== "undefined" && typeof TextDecoder !== "undefined") { + let encoder = new TextEncoder(); + let decoder = new TextDecoder(); + encodeUTF8 = (text) => encoder.encode(text); + decodeUTF8 = (bytes) => decoder.decode(bytes); + encodeInvariant = 'new TextEncoder().encode("")'; +} else if (typeof Buffer !== "undefined") { + encodeUTF8 = (text) => Buffer.from(text); + decodeUTF8 = (bytes) => { + let { buffer, byteOffset, byteLength } = bytes; + return Buffer.from(buffer, byteOffset, byteLength).toString(); + }; + encodeInvariant = 'Buffer.from("")'; +} else { + throw new Error("No UTF-8 codec found"); +} +if (!(encodeUTF8("") instanceof Uint8Array)) + throw new Error(`Invariant violation: "${encodeInvariant} instanceof Uint8Array" is incorrectly false + +This indicates that your JavaScript environment is broken. You cannot use +esbuild in this environment because esbuild relies on this invariant. This +is not a problem with esbuild. You need to fix your environment instead. +`); +function readUInt32LE(buffer, offset) { + return buffer[offset++] | buffer[offset++] << 8 | buffer[offset++] << 16 | buffer[offset++] << 24; +} +function writeUInt32LE(buffer, value, offset) { + buffer[offset++] = value; + buffer[offset++] = value >> 8; + buffer[offset++] = value >> 16; + buffer[offset++] = value >> 24; +} + +// lib/shared/common.ts +var quote = JSON.stringify; +var buildLogLevelDefault = "warning"; +var transformLogLevelDefault = "silent"; +function validateTarget(target) { + validateStringValue(target, "target"); + if (target.indexOf(",") >= 0) + throw new Error(`Invalid target: ${target}`); + return target; +} +var canBeAnything = () => null; +var mustBeBoolean = (value) => typeof value === "boolean" ? null : "a boolean"; +var mustBeString = (value) => typeof value === "string" ? null : "a string"; +var mustBeRegExp = (value) => value instanceof RegExp ? null : "a RegExp object"; +var mustBeInteger = (value) => typeof value === "number" && value === (value | 0) ? null : "an integer"; +var mustBeFunction = (value) => typeof value === "function" ? null : "a function"; +var mustBeArray = (value) => Array.isArray(value) ? null : "an array"; +var mustBeObject = (value) => typeof value === "object" && value !== null && !Array.isArray(value) ? null : "an object"; +var mustBeEntryPoints = (value) => typeof value === "object" && value !== null ? null : "an array or an object"; +var mustBeWebAssemblyModule = (value) => value instanceof WebAssembly.Module ? null : "a WebAssembly.Module"; +var mustBeObjectOrNull = (value) => typeof value === "object" && !Array.isArray(value) ? null : "an object or null"; +var mustBeStringOrBoolean = (value) => typeof value === "string" || typeof value === "boolean" ? null : "a string or a boolean"; +var mustBeStringOrObject = (value) => typeof value === "string" || typeof value === "object" && value !== null && !Array.isArray(value) ? null : "a string or an object"; +var mustBeStringOrArray = (value) => typeof value === "string" || Array.isArray(value) ? null : "a string or an array"; +var mustBeStringOrUint8Array = (value) => typeof value === "string" || value instanceof Uint8Array ? null : "a string or a Uint8Array"; +var mustBeStringOrURL = (value) => typeof value === "string" || value instanceof URL ? null : "a string or a URL"; +function getFlag(object, keys, key, mustBeFn) { + let value = object[key]; + keys[key + ""] = true; + if (value === void 0) + return void 0; + let mustBe = mustBeFn(value); + if (mustBe !== null) + throw new Error(`${quote(key)} must be ${mustBe}`); + return value; +} +function checkForInvalidFlags(object, keys, where) { + for (let key in object) { + if (!(key in keys)) { + throw new Error(`Invalid option ${where}: ${quote(key)}`); + } + } +} +function validateInitializeOptions(options) { + let keys = /* @__PURE__ */ Object.create(null); + let wasmURL = getFlag(options, keys, "wasmURL", mustBeStringOrURL); + let wasmModule = getFlag(options, keys, "wasmModule", mustBeWebAssemblyModule); + let worker = getFlag(options, keys, "worker", mustBeBoolean); + checkForInvalidFlags(options, keys, "in initialize() call"); + return { + wasmURL, + wasmModule, + worker + }; +} +function validateMangleCache(mangleCache) { + let validated; + if (mangleCache !== void 0) { + validated = /* @__PURE__ */ Object.create(null); + for (let key in mangleCache) { + let value = mangleCache[key]; + if (typeof value === "string" || value === false) { + validated[key] = value; + } else { + throw new Error(`Expected ${quote(key)} in mangle cache to map to either a string or false`); + } + } + } + return validated; +} +function pushLogFlags(flags, options, keys, isTTY2, logLevelDefault) { + let color = getFlag(options, keys, "color", mustBeBoolean); + let logLevel = getFlag(options, keys, "logLevel", mustBeString); + let logLimit = getFlag(options, keys, "logLimit", mustBeInteger); + if (color !== void 0) + flags.push(`--color=${color}`); + else if (isTTY2) + flags.push(`--color=true`); + flags.push(`--log-level=${logLevel || logLevelDefault}`); + flags.push(`--log-limit=${logLimit || 0}`); +} +function validateStringValue(value, what, key) { + if (typeof value !== "string") { + throw new Error(`Expected value for ${what}${key !== void 0 ? " " + quote(key) : ""} to be a string, got ${typeof value} instead`); + } + return value; +} +function pushCommonFlags(flags, options, keys) { + let legalComments = getFlag(options, keys, "legalComments", mustBeString); + let sourceRoot = getFlag(options, keys, "sourceRoot", mustBeString); + let sourcesContent = getFlag(options, keys, "sourcesContent", mustBeBoolean); + let target = getFlag(options, keys, "target", mustBeStringOrArray); + let format = getFlag(options, keys, "format", mustBeString); + let globalName = getFlag(options, keys, "globalName", mustBeString); + let mangleProps = getFlag(options, keys, "mangleProps", mustBeRegExp); + let reserveProps = getFlag(options, keys, "reserveProps", mustBeRegExp); + let mangleQuoted = getFlag(options, keys, "mangleQuoted", mustBeBoolean); + let minify = getFlag(options, keys, "minify", mustBeBoolean); + let minifySyntax = getFlag(options, keys, "minifySyntax", mustBeBoolean); + let minifyWhitespace = getFlag(options, keys, "minifyWhitespace", mustBeBoolean); + let minifyIdentifiers = getFlag(options, keys, "minifyIdentifiers", mustBeBoolean); + let drop = getFlag(options, keys, "drop", mustBeArray); + let charset = getFlag(options, keys, "charset", mustBeString); + let treeShaking = getFlag(options, keys, "treeShaking", mustBeBoolean); + let ignoreAnnotations = getFlag(options, keys, "ignoreAnnotations", mustBeBoolean); + let jsx = getFlag(options, keys, "jsx", mustBeString); + let jsxFactory = getFlag(options, keys, "jsxFactory", mustBeString); + let jsxFragment = getFlag(options, keys, "jsxFragment", mustBeString); + let jsxImportSource = getFlag(options, keys, "jsxImportSource", mustBeString); + let jsxDev = getFlag(options, keys, "jsxDev", mustBeBoolean); + let jsxSideEffects = getFlag(options, keys, "jsxSideEffects", mustBeBoolean); + let define = getFlag(options, keys, "define", mustBeObject); + let logOverride = getFlag(options, keys, "logOverride", mustBeObject); + let supported = getFlag(options, keys, "supported", mustBeObject); + let pure = getFlag(options, keys, "pure", mustBeArray); + let keepNames = getFlag(options, keys, "keepNames", mustBeBoolean); + let platform = getFlag(options, keys, "platform", mustBeString); + if (legalComments) + flags.push(`--legal-comments=${legalComments}`); + if (sourceRoot !== void 0) + flags.push(`--source-root=${sourceRoot}`); + if (sourcesContent !== void 0) + flags.push(`--sources-content=${sourcesContent}`); + if (target) { + if (Array.isArray(target)) + flags.push(`--target=${Array.from(target).map(validateTarget).join(",")}`); + else + flags.push(`--target=${validateTarget(target)}`); + } + if (format) + flags.push(`--format=${format}`); + if (globalName) + flags.push(`--global-name=${globalName}`); + if (platform) + flags.push(`--platform=${platform}`); + if (minify) + flags.push("--minify"); + if (minifySyntax) + flags.push("--minify-syntax"); + if (minifyWhitespace) + flags.push("--minify-whitespace"); + if (minifyIdentifiers) + flags.push("--minify-identifiers"); + if (charset) + flags.push(`--charset=${charset}`); + if (treeShaking !== void 0) + flags.push(`--tree-shaking=${treeShaking}`); + if (ignoreAnnotations) + flags.push(`--ignore-annotations`); + if (drop) + for (let what of drop) + flags.push(`--drop:${validateStringValue(what, "drop")}`); + if (mangleProps) + flags.push(`--mangle-props=${mangleProps.source}`); + if (reserveProps) + flags.push(`--reserve-props=${reserveProps.source}`); + if (mangleQuoted !== void 0) + flags.push(`--mangle-quoted=${mangleQuoted}`); + if (jsx) + flags.push(`--jsx=${jsx}`); + if (jsxFactory) + flags.push(`--jsx-factory=${jsxFactory}`); + if (jsxFragment) + flags.push(`--jsx-fragment=${jsxFragment}`); + if (jsxImportSource) + flags.push(`--jsx-import-source=${jsxImportSource}`); + if (jsxDev) + flags.push(`--jsx-dev`); + if (jsxSideEffects) + flags.push(`--jsx-side-effects`); + if (define) { + for (let key in define) { + if (key.indexOf("=") >= 0) + throw new Error(`Invalid define: ${key}`); + flags.push(`--define:${key}=${validateStringValue(define[key], "define", key)}`); + } + } + if (logOverride) { + for (let key in logOverride) { + if (key.indexOf("=") >= 0) + throw new Error(`Invalid log override: ${key}`); + flags.push(`--log-override:${key}=${validateStringValue(logOverride[key], "log override", key)}`); + } + } + if (supported) { + for (let key in supported) { + if (key.indexOf("=") >= 0) + throw new Error(`Invalid supported: ${key}`); + const value = supported[key]; + if (typeof value !== "boolean") + throw new Error(`Expected value for supported ${quote(key)} to be a boolean, got ${typeof value} instead`); + flags.push(`--supported:${key}=${value}`); + } + } + if (pure) + for (let fn of pure) + flags.push(`--pure:${validateStringValue(fn, "pure")}`); + if (keepNames) + flags.push(`--keep-names`); +} +function flagsForBuildOptions(callName, options, isTTY2, logLevelDefault, writeDefault) { + var _a2; + let flags = []; + let entries = []; + let keys = /* @__PURE__ */ Object.create(null); + let stdinContents = null; + let stdinResolveDir = null; + pushLogFlags(flags, options, keys, isTTY2, logLevelDefault); + pushCommonFlags(flags, options, keys); + let sourcemap = getFlag(options, keys, "sourcemap", mustBeStringOrBoolean); + let bundle = getFlag(options, keys, "bundle", mustBeBoolean); + let splitting = getFlag(options, keys, "splitting", mustBeBoolean); + let preserveSymlinks = getFlag(options, keys, "preserveSymlinks", mustBeBoolean); + let metafile = getFlag(options, keys, "metafile", mustBeBoolean); + let outfile = getFlag(options, keys, "outfile", mustBeString); + let outdir = getFlag(options, keys, "outdir", mustBeString); + let outbase = getFlag(options, keys, "outbase", mustBeString); + let tsconfig = getFlag(options, keys, "tsconfig", mustBeString); + let resolveExtensions = getFlag(options, keys, "resolveExtensions", mustBeArray); + let nodePathsInput = getFlag(options, keys, "nodePaths", mustBeArray); + let mainFields = getFlag(options, keys, "mainFields", mustBeArray); + let conditions = getFlag(options, keys, "conditions", mustBeArray); + let external = getFlag(options, keys, "external", mustBeArray); + let packages = getFlag(options, keys, "packages", mustBeString); + let alias = getFlag(options, keys, "alias", mustBeObject); + let loader = getFlag(options, keys, "loader", mustBeObject); + let outExtension = getFlag(options, keys, "outExtension", mustBeObject); + let publicPath = getFlag(options, keys, "publicPath", mustBeString); + let entryNames = getFlag(options, keys, "entryNames", mustBeString); + let chunkNames = getFlag(options, keys, "chunkNames", mustBeString); + let assetNames = getFlag(options, keys, "assetNames", mustBeString); + let inject = getFlag(options, keys, "inject", mustBeArray); + let banner = getFlag(options, keys, "banner", mustBeObject); + let footer = getFlag(options, keys, "footer", mustBeObject); + let entryPoints = getFlag(options, keys, "entryPoints", mustBeEntryPoints); + let absWorkingDir = getFlag(options, keys, "absWorkingDir", mustBeString); + let stdin = getFlag(options, keys, "stdin", mustBeObject); + let write = (_a2 = getFlag(options, keys, "write", mustBeBoolean)) != null ? _a2 : writeDefault; + let allowOverwrite = getFlag(options, keys, "allowOverwrite", mustBeBoolean); + let mangleCache = getFlag(options, keys, "mangleCache", mustBeObject); + keys.plugins = true; + checkForInvalidFlags(options, keys, `in ${callName}() call`); + if (sourcemap) + flags.push(`--sourcemap${sourcemap === true ? "" : `=${sourcemap}`}`); + if (bundle) + flags.push("--bundle"); + if (allowOverwrite) + flags.push("--allow-overwrite"); + if (splitting) + flags.push("--splitting"); + if (preserveSymlinks) + flags.push("--preserve-symlinks"); + if (metafile) + flags.push(`--metafile`); + if (outfile) + flags.push(`--outfile=${outfile}`); + if (outdir) + flags.push(`--outdir=${outdir}`); + if (outbase) + flags.push(`--outbase=${outbase}`); + if (tsconfig) + flags.push(`--tsconfig=${tsconfig}`); + if (packages) + flags.push(`--packages=${packages}`); + if (resolveExtensions) { + let values = []; + for (let value of resolveExtensions) { + validateStringValue(value, "resolve extension"); + if (value.indexOf(",") >= 0) + throw new Error(`Invalid resolve extension: ${value}`); + values.push(value); + } + flags.push(`--resolve-extensions=${values.join(",")}`); + } + if (publicPath) + flags.push(`--public-path=${publicPath}`); + if (entryNames) + flags.push(`--entry-names=${entryNames}`); + if (chunkNames) + flags.push(`--chunk-names=${chunkNames}`); + if (assetNames) + flags.push(`--asset-names=${assetNames}`); + if (mainFields) { + let values = []; + for (let value of mainFields) { + validateStringValue(value, "main field"); + if (value.indexOf(",") >= 0) + throw new Error(`Invalid main field: ${value}`); + values.push(value); + } + flags.push(`--main-fields=${values.join(",")}`); + } + if (conditions) { + let values = []; + for (let value of conditions) { + validateStringValue(value, "condition"); + if (value.indexOf(",") >= 0) + throw new Error(`Invalid condition: ${value}`); + values.push(value); + } + flags.push(`--conditions=${values.join(",")}`); + } + if (external) + for (let name of external) + flags.push(`--external:${validateStringValue(name, "external")}`); + if (alias) { + for (let old in alias) { + if (old.indexOf("=") >= 0) + throw new Error(`Invalid package name in alias: ${old}`); + flags.push(`--alias:${old}=${validateStringValue(alias[old], "alias", old)}`); + } + } + if (banner) { + for (let type in banner) { + if (type.indexOf("=") >= 0) + throw new Error(`Invalid banner file type: ${type}`); + flags.push(`--banner:${type}=${validateStringValue(banner[type], "banner", type)}`); + } + } + if (footer) { + for (let type in footer) { + if (type.indexOf("=") >= 0) + throw new Error(`Invalid footer file type: ${type}`); + flags.push(`--footer:${type}=${validateStringValue(footer[type], "footer", type)}`); + } + } + if (inject) + for (let path3 of inject) + flags.push(`--inject:${validateStringValue(path3, "inject")}`); + if (loader) { + for (let ext in loader) { + if (ext.indexOf("=") >= 0) + throw new Error(`Invalid loader extension: ${ext}`); + flags.push(`--loader:${ext}=${validateStringValue(loader[ext], "loader", ext)}`); + } + } + if (outExtension) { + for (let ext in outExtension) { + if (ext.indexOf("=") >= 0) + throw new Error(`Invalid out extension: ${ext}`); + flags.push(`--out-extension:${ext}=${validateStringValue(outExtension[ext], "out extension", ext)}`); + } + } + if (entryPoints) { + if (Array.isArray(entryPoints)) { + for (let i = 0, n = entryPoints.length; i < n; i++) { + let entryPoint = entryPoints[i]; + if (typeof entryPoint === "object" && entryPoint !== null) { + let entryPointKeys = /* @__PURE__ */ Object.create(null); + let input = getFlag(entryPoint, entryPointKeys, "in", mustBeString); + let output = getFlag(entryPoint, entryPointKeys, "out", mustBeString); + checkForInvalidFlags(entryPoint, entryPointKeys, "in entry point at index " + i); + if (input === void 0) + throw new Error('Missing property "in" for entry point at index ' + i); + if (output === void 0) + throw new Error('Missing property "out" for entry point at index ' + i); + entries.push([output, input]); + } else { + entries.push(["", validateStringValue(entryPoint, "entry point at index " + i)]); + } + } + } else { + for (let key in entryPoints) { + entries.push([key, validateStringValue(entryPoints[key], "entry point", key)]); + } + } + } + if (stdin) { + let stdinKeys = /* @__PURE__ */ Object.create(null); + let contents = getFlag(stdin, stdinKeys, "contents", mustBeStringOrUint8Array); + let resolveDir = getFlag(stdin, stdinKeys, "resolveDir", mustBeString); + let sourcefile = getFlag(stdin, stdinKeys, "sourcefile", mustBeString); + let loader2 = getFlag(stdin, stdinKeys, "loader", mustBeString); + checkForInvalidFlags(stdin, stdinKeys, 'in "stdin" object'); + if (sourcefile) + flags.push(`--sourcefile=${sourcefile}`); + if (loader2) + flags.push(`--loader=${loader2}`); + if (resolveDir) + stdinResolveDir = resolveDir; + if (typeof contents === "string") + stdinContents = encodeUTF8(contents); + else if (contents instanceof Uint8Array) + stdinContents = contents; + } + let nodePaths = []; + if (nodePathsInput) { + for (let value of nodePathsInput) { + value += ""; + nodePaths.push(value); + } + } + return { + entries, + flags, + write, + stdinContents, + stdinResolveDir, + absWorkingDir, + nodePaths, + mangleCache: validateMangleCache(mangleCache) + }; +} +function flagsForTransformOptions(callName, options, isTTY2, logLevelDefault) { + let flags = []; + let keys = /* @__PURE__ */ Object.create(null); + pushLogFlags(flags, options, keys, isTTY2, logLevelDefault); + pushCommonFlags(flags, options, keys); + let sourcemap = getFlag(options, keys, "sourcemap", mustBeStringOrBoolean); + let tsconfigRaw = getFlag(options, keys, "tsconfigRaw", mustBeStringOrObject); + let sourcefile = getFlag(options, keys, "sourcefile", mustBeString); + let loader = getFlag(options, keys, "loader", mustBeString); + let banner = getFlag(options, keys, "banner", mustBeString); + let footer = getFlag(options, keys, "footer", mustBeString); + let mangleCache = getFlag(options, keys, "mangleCache", mustBeObject); + checkForInvalidFlags(options, keys, `in ${callName}() call`); + if (sourcemap) + flags.push(`--sourcemap=${sourcemap === true ? "external" : sourcemap}`); + if (tsconfigRaw) + flags.push(`--tsconfig-raw=${typeof tsconfigRaw === "string" ? tsconfigRaw : JSON.stringify(tsconfigRaw)}`); + if (sourcefile) + flags.push(`--sourcefile=${sourcefile}`); + if (loader) + flags.push(`--loader=${loader}`); + if (banner) + flags.push(`--banner=${banner}`); + if (footer) + flags.push(`--footer=${footer}`); + return { + flags, + mangleCache: validateMangleCache(mangleCache) + }; +} +function createChannel(streamIn) { + const requestCallbacksByKey = {}; + const closeData = { didClose: false, reason: "" }; + let responseCallbacks = {}; + let nextRequestID = 0; + let nextBuildKey = 0; + let stdout = new Uint8Array(16 * 1024); + let stdoutUsed = 0; + let readFromStdout = (chunk) => { + let limit = stdoutUsed + chunk.length; + if (limit > stdout.length) { + let swap = new Uint8Array(limit * 2); + swap.set(stdout); + stdout = swap; + } + stdout.set(chunk, stdoutUsed); + stdoutUsed += chunk.length; + let offset = 0; + while (offset + 4 <= stdoutUsed) { + let length = readUInt32LE(stdout, offset); + if (offset + 4 + length > stdoutUsed) { + break; + } + offset += 4; + handleIncomingPacket(stdout.subarray(offset, offset + length)); + offset += length; + } + if (offset > 0) { + stdout.copyWithin(0, offset, stdoutUsed); + stdoutUsed -= offset; + } + }; + let afterClose = (error) => { + closeData.didClose = true; + if (error) + closeData.reason = ": " + (error.message || error); + const text = "The service was stopped" + closeData.reason; + for (let id in responseCallbacks) { + responseCallbacks[id](text, null); + } + responseCallbacks = {}; + }; + let sendRequest = (refs, value, callback) => { + if (closeData.didClose) + return callback("The service is no longer running" + closeData.reason, null); + let id = nextRequestID++; + responseCallbacks[id] = (error, response) => { + try { + callback(error, response); + } finally { + if (refs) + refs.unref(); + } + }; + if (refs) + refs.ref(); + streamIn.writeToStdin(encodePacket({ id, isRequest: true, value })); + }; + let sendResponse = (id, value) => { + if (closeData.didClose) + throw new Error("The service is no longer running" + closeData.reason); + streamIn.writeToStdin(encodePacket({ id, isRequest: false, value })); + }; + let handleRequest = async (id, request) => { + try { + if (request.command === "ping") { + sendResponse(id, {}); + return; + } + if (typeof request.key === "number") { + const requestCallbacks = requestCallbacksByKey[request.key]; + if (requestCallbacks) { + const callback = requestCallbacks[request.command]; + if (callback) { + await callback(id, request); + return; + } + } + } + throw new Error(`Invalid command: ` + request.command); + } catch (e) { + sendResponse(id, { errors: [extractErrorMessageV8(e, streamIn, null, void 0, "")] }); + } + }; + let isFirstPacket = true; + let handleIncomingPacket = (bytes) => { + if (isFirstPacket) { + isFirstPacket = false; + let binaryVersion = String.fromCharCode(...bytes); + if (binaryVersion !== "0.17.10") { + throw new Error(`Cannot start service: Host version "${"0.17.10"}" does not match binary version ${quote(binaryVersion)}`); + } + return; + } + let packet = decodePacket(bytes); + if (packet.isRequest) { + handleRequest(packet.id, packet.value); + } else { + let callback = responseCallbacks[packet.id]; + delete responseCallbacks[packet.id]; + if (packet.value.error) + callback(packet.value.error, {}); + else + callback(null, packet.value); + } + }; + let buildOrContext = ({ callName, refs, options, isTTY: isTTY2, defaultWD: defaultWD2, callback }) => { + let refCount = 0; + const buildKey = nextBuildKey++; + const requestCallbacks = {}; + const buildRefs = { + ref() { + if (++refCount === 1) { + if (refs) + refs.ref(); + } + }, + unref() { + if (--refCount === 0) { + delete requestCallbacksByKey[buildKey]; + if (refs) + refs.unref(); + } + } + }; + requestCallbacksByKey[buildKey] = requestCallbacks; + buildRefs.ref(); + buildOrContextImpl( + callName, + buildKey, + sendRequest, + sendResponse, + buildRefs, + streamIn, + requestCallbacks, + options, + isTTY2, + defaultWD2, + (err, res) => { + try { + callback(err, res); + } finally { + buildRefs.unref(); + } + } + ); + }; + let transform2 = ({ callName, refs, input, options, isTTY: isTTY2, fs: fs3, callback }) => { + const details = createObjectStash(); + let start = (inputPath) => { + try { + if (typeof input !== "string" && !(input instanceof Uint8Array)) + throw new Error('The input to "transform" must be a string or a Uint8Array'); + let { + flags, + mangleCache + } = flagsForTransformOptions(callName, options, isTTY2, transformLogLevelDefault); + let request = { + command: "transform", + flags, + inputFS: inputPath !== null, + input: inputPath !== null ? encodeUTF8(inputPath) : typeof input === "string" ? encodeUTF8(input) : input + }; + if (mangleCache) + request.mangleCache = mangleCache; + sendRequest(refs, request, (error, response) => { + if (error) + return callback(new Error(error), null); + let errors = replaceDetailsInMessages(response.errors, details); + let warnings = replaceDetailsInMessages(response.warnings, details); + let outstanding = 1; + let next = () => { + if (--outstanding === 0) { + let result = { + warnings, + code: response.code, + map: response.map, + mangleCache: void 0, + legalComments: void 0 + }; + if ("legalComments" in response) + result.legalComments = response == null ? void 0 : response.legalComments; + if (response.mangleCache) + result.mangleCache = response == null ? void 0 : response.mangleCache; + callback(null, result); + } + }; + if (errors.length > 0) + return callback(failureErrorWithLog("Transform failed", errors, warnings), null); + if (response.codeFS) { + outstanding++; + fs3.readFile(response.code, (err, contents) => { + if (err !== null) { + callback(err, null); + } else { + response.code = contents; + next(); + } + }); + } + if (response.mapFS) { + outstanding++; + fs3.readFile(response.map, (err, contents) => { + if (err !== null) { + callback(err, null); + } else { + response.map = contents; + next(); + } + }); + } + next(); + }); + } catch (e) { + let flags = []; + try { + pushLogFlags(flags, options, {}, isTTY2, transformLogLevelDefault); + } catch { + } + const error = extractErrorMessageV8(e, streamIn, details, void 0, ""); + sendRequest(refs, { command: "error", flags, error }, () => { + error.detail = details.load(error.detail); + callback(failureErrorWithLog("Transform failed", [error], []), null); + }); + } + }; + if ((typeof input === "string" || input instanceof Uint8Array) && input.length > 1024 * 1024) { + let next = start; + start = () => fs3.writeFile(input, next); + } + start(null); + }; + let formatMessages2 = ({ callName, refs, messages, options, callback }) => { + let result = sanitizeMessages(messages, "messages", null, ""); + if (!options) + throw new Error(`Missing second argument in ${callName}() call`); + let keys = {}; + let kind = getFlag(options, keys, "kind", mustBeString); + let color = getFlag(options, keys, "color", mustBeBoolean); + let terminalWidth = getFlag(options, keys, "terminalWidth", mustBeInteger); + checkForInvalidFlags(options, keys, `in ${callName}() call`); + if (kind === void 0) + throw new Error(`Missing "kind" in ${callName}() call`); + if (kind !== "error" && kind !== "warning") + throw new Error(`Expected "kind" to be "error" or "warning" in ${callName}() call`); + let request = { + command: "format-msgs", + messages: result, + isWarning: kind === "warning" + }; + if (color !== void 0) + request.color = color; + if (terminalWidth !== void 0) + request.terminalWidth = terminalWidth; + sendRequest(refs, request, (error, response) => { + if (error) + return callback(new Error(error), null); + callback(null, response.messages); + }); + }; + let analyzeMetafile2 = ({ callName, refs, metafile, options, callback }) => { + if (options === void 0) + options = {}; + let keys = {}; + let color = getFlag(options, keys, "color", mustBeBoolean); + let verbose = getFlag(options, keys, "verbose", mustBeBoolean); + checkForInvalidFlags(options, keys, `in ${callName}() call`); + let request = { + command: "analyze-metafile", + metafile + }; + if (color !== void 0) + request.color = color; + if (verbose !== void 0) + request.verbose = verbose; + sendRequest(refs, request, (error, response) => { + if (error) + return callback(new Error(error), null); + callback(null, response.result); + }); + }; + return { + readFromStdout, + afterClose, + service: { + buildOrContext, + transform: transform2, + formatMessages: formatMessages2, + analyzeMetafile: analyzeMetafile2 + } + }; +} +function buildOrContextImpl(callName, buildKey, sendRequest, sendResponse, refs, streamIn, requestCallbacks, options, isTTY2, defaultWD2, callback) { + const details = createObjectStash(); + const isContext = callName === "context"; + const handleError = (e, pluginName) => { + const flags = []; + try { + pushLogFlags(flags, options, {}, isTTY2, buildLogLevelDefault); + } catch { + } + const message = extractErrorMessageV8(e, streamIn, details, void 0, pluginName); + sendRequest(refs, { command: "error", flags, error: message }, () => { + message.detail = details.load(message.detail); + callback(failureErrorWithLog(isContext ? "Context failed" : "Build failed", [message], []), null); + }); + }; + let plugins; + if (typeof options === "object") { + const value = options.plugins; + if (value !== void 0) { + if (!Array.isArray(value)) + return handleError(new Error(`"plugins" must be an array`), ""); + plugins = value; + } + } + if (plugins && plugins.length > 0) { + if (streamIn.isSync) + return handleError(new Error("Cannot use plugins in synchronous API calls"), ""); + handlePlugins( + buildKey, + sendRequest, + sendResponse, + refs, + streamIn, + requestCallbacks, + options, + plugins, + details + ).then( + (result) => { + if (!result.ok) + return handleError(result.error, result.pluginName); + try { + buildOrContextContinue(result.requestPlugins, result.runOnEndCallbacks, result.scheduleOnDisposeCallbacks); + } catch (e) { + handleError(e, ""); + } + }, + (e) => handleError(e, "") + ); + return; + } + try { + buildOrContextContinue(null, (result, done) => done([], []), () => { + }); + } catch (e) { + handleError(e, ""); + } + function buildOrContextContinue(requestPlugins, runOnEndCallbacks, scheduleOnDisposeCallbacks) { + const writeDefault = streamIn.hasFS; + const { + entries, + flags, + write, + stdinContents, + stdinResolveDir, + absWorkingDir, + nodePaths, + mangleCache + } = flagsForBuildOptions(callName, options, isTTY2, buildLogLevelDefault, writeDefault); + if (write && !streamIn.hasFS) + throw new Error(`The "write" option is unavailable in this environment`); + const request = { + command: "build", + key: buildKey, + entries, + flags, + write, + stdinContents, + stdinResolveDir, + absWorkingDir: absWorkingDir || defaultWD2, + nodePaths, + context: isContext + }; + if (requestPlugins) + request.plugins = requestPlugins; + if (mangleCache) + request.mangleCache = mangleCache; + const buildResponseToResult = (response, callback2) => { + const result = { + errors: replaceDetailsInMessages(response.errors, details), + warnings: replaceDetailsInMessages(response.warnings, details), + outputFiles: void 0, + metafile: void 0, + mangleCache: void 0 + }; + const originalErrors = result.errors.slice(); + const originalWarnings = result.warnings.slice(); + if (response.outputFiles) + result.outputFiles = response.outputFiles.map(convertOutputFiles); + if (response.metafile) + result.metafile = JSON.parse(response.metafile); + if (response.mangleCache) + result.mangleCache = response.mangleCache; + if (response.writeToStdout !== void 0) + console.log(decodeUTF8(response.writeToStdout).replace(/\n$/, "")); + runOnEndCallbacks(result, (onEndErrors, onEndWarnings) => { + if (originalErrors.length > 0 || onEndErrors.length > 0) { + const error = failureErrorWithLog("Build failed", originalErrors.concat(onEndErrors), originalWarnings.concat(onEndWarnings)); + return callback2(error, null, onEndErrors, onEndWarnings); + } + callback2(null, result, onEndErrors, onEndWarnings); + }); + }; + let latestResultPromise; + let provideLatestResult; + if (isContext) + requestCallbacks["on-end"] = (id, request2) => new Promise((resolve) => { + buildResponseToResult(request2, (err, result, onEndErrors, onEndWarnings) => { + const response = { + errors: onEndErrors, + warnings: onEndWarnings + }; + if (provideLatestResult) + provideLatestResult(err, result); + latestResultPromise = void 0; + provideLatestResult = void 0; + sendResponse(id, response); + resolve(); + }); + }); + sendRequest(refs, request, (error, response) => { + if (error) + return callback(new Error(error), null); + if (!isContext) { + return buildResponseToResult(response, (err, res) => { + scheduleOnDisposeCallbacks(); + return callback(err, res); + }); + } + if (response.errors.length > 0) { + return callback(failureErrorWithLog("Context failed", response.errors, response.warnings), null); + } + let didDispose = false; + const result = { + rebuild: () => { + if (!latestResultPromise) + latestResultPromise = new Promise((resolve, reject) => { + let settlePromise; + provideLatestResult = (err, result2) => { + if (!settlePromise) + settlePromise = () => err ? reject(err) : resolve(result2); + }; + const triggerAnotherBuild = () => { + const request2 = { + command: "rebuild", + key: buildKey + }; + sendRequest(refs, request2, (error2, response2) => { + if (error2) { + reject(new Error(error2)); + } else if (settlePromise) { + settlePromise(); + } else { + triggerAnotherBuild(); + } + }); + }; + triggerAnotherBuild(); + }); + return latestResultPromise; + }, + watch: (options2 = {}) => new Promise((resolve, reject) => { + if (!streamIn.hasFS) + throw new Error(`Cannot use the "watch" API in this environment`); + const keys = {}; + checkForInvalidFlags(options2, keys, `in watch() call`); + const request2 = { + command: "watch", + key: buildKey + }; + sendRequest(refs, request2, (error2) => { + if (error2) + reject(new Error(error2)); + else + resolve(void 0); + }); + }), + serve: (options2 = {}) => new Promise((resolve, reject) => { + if (!streamIn.hasFS) + throw new Error(`Cannot use the "serve" API in this environment`); + const keys = {}; + const port = getFlag(options2, keys, "port", mustBeInteger); + const host = getFlag(options2, keys, "host", mustBeString); + const servedir = getFlag(options2, keys, "servedir", mustBeString); + const keyfile = getFlag(options2, keys, "keyfile", mustBeString); + const certfile = getFlag(options2, keys, "certfile", mustBeString); + const onRequest = getFlag(options2, keys, "onRequest", mustBeFunction); + checkForInvalidFlags(options2, keys, `in serve() call`); + const request2 = { + command: "serve", + key: buildKey, + onRequest: !!onRequest + }; + if (port !== void 0) + request2.port = port; + if (host !== void 0) + request2.host = host; + if (servedir !== void 0) + request2.servedir = servedir; + if (keyfile !== void 0) + request2.keyfile = keyfile; + if (certfile !== void 0) + request2.certfile = certfile; + sendRequest(refs, request2, (error2, response2) => { + if (error2) + return reject(new Error(error2)); + if (onRequest) { + requestCallbacks["serve-request"] = (id, request3) => { + onRequest(request3.args); + sendResponse(id, {}); + }; + } + resolve(response2); + }); + }), + cancel: () => new Promise((resolve) => { + if (didDispose) + return resolve(); + const request2 = { + command: "cancel", + key: buildKey + }; + sendRequest(refs, request2, () => { + resolve(); + }); + }), + dispose: () => new Promise((resolve) => { + if (didDispose) + return resolve(); + didDispose = true; + const request2 = { + command: "dispose", + key: buildKey + }; + sendRequest(refs, request2, () => { + resolve(); + scheduleOnDisposeCallbacks(); + refs.unref(); + }); + }) + }; + refs.ref(); + callback(null, result); + }); + } +} +var handlePlugins = async (buildKey, sendRequest, sendResponse, refs, streamIn, requestCallbacks, initialOptions, plugins, details) => { + let onStartCallbacks = []; + let onEndCallbacks = []; + let onResolveCallbacks = {}; + let onLoadCallbacks = {}; + let onDisposeCallbacks = []; + let nextCallbackID = 0; + let i = 0; + let requestPlugins = []; + let isSetupDone = false; + plugins = [...plugins]; + for (let item of plugins) { + let keys = {}; + if (typeof item !== "object") + throw new Error(`Plugin at index ${i} must be an object`); + const name = getFlag(item, keys, "name", mustBeString); + if (typeof name !== "string" || name === "") + throw new Error(`Plugin at index ${i} is missing a name`); + try { + let setup = getFlag(item, keys, "setup", mustBeFunction); + if (typeof setup !== "function") + throw new Error(`Plugin is missing a setup function`); + checkForInvalidFlags(item, keys, `on plugin ${quote(name)}`); + let plugin = { + name, + onStart: false, + onEnd: false, + onResolve: [], + onLoad: [] + }; + i++; + let resolve = (path3, options = {}) => { + if (!isSetupDone) + throw new Error('Cannot call "resolve" before plugin setup has completed'); + if (typeof path3 !== "string") + throw new Error(`The path to resolve must be a string`); + let keys2 = /* @__PURE__ */ Object.create(null); + let pluginName = getFlag(options, keys2, "pluginName", mustBeString); + let importer = getFlag(options, keys2, "importer", mustBeString); + let namespace = getFlag(options, keys2, "namespace", mustBeString); + let resolveDir = getFlag(options, keys2, "resolveDir", mustBeString); + let kind = getFlag(options, keys2, "kind", mustBeString); + let pluginData = getFlag(options, keys2, "pluginData", canBeAnything); + checkForInvalidFlags(options, keys2, "in resolve() call"); + return new Promise((resolve2, reject) => { + const request = { + command: "resolve", + path: path3, + key: buildKey, + pluginName: name + }; + if (pluginName != null) + request.pluginName = pluginName; + if (importer != null) + request.importer = importer; + if (namespace != null) + request.namespace = namespace; + if (resolveDir != null) + request.resolveDir = resolveDir; + if (kind != null) + request.kind = kind; + else + throw new Error(`Must specify "kind" when calling "resolve"`); + if (pluginData != null) + request.pluginData = details.store(pluginData); + sendRequest(refs, request, (error, response) => { + if (error !== null) + reject(new Error(error)); + else + resolve2({ + errors: replaceDetailsInMessages(response.errors, details), + warnings: replaceDetailsInMessages(response.warnings, details), + path: response.path, + external: response.external, + sideEffects: response.sideEffects, + namespace: response.namespace, + suffix: response.suffix, + pluginData: details.load(response.pluginData) + }); + }); + }); + }; + let promise = setup({ + initialOptions, + resolve, + onStart(callback) { + let registeredText = `This error came from the "onStart" callback registered here:`; + let registeredNote = extractCallerV8(new Error(registeredText), streamIn, "onStart"); + onStartCallbacks.push({ name, callback, note: registeredNote }); + plugin.onStart = true; + }, + onEnd(callback) { + let registeredText = `This error came from the "onEnd" callback registered here:`; + let registeredNote = extractCallerV8(new Error(registeredText), streamIn, "onEnd"); + onEndCallbacks.push({ name, callback, note: registeredNote }); + plugin.onEnd = true; + }, + onResolve(options, callback) { + let registeredText = `This error came from the "onResolve" callback registered here:`; + let registeredNote = extractCallerV8(new Error(registeredText), streamIn, "onResolve"); + let keys2 = {}; + let filter = getFlag(options, keys2, "filter", mustBeRegExp); + let namespace = getFlag(options, keys2, "namespace", mustBeString); + checkForInvalidFlags(options, keys2, `in onResolve() call for plugin ${quote(name)}`); + if (filter == null) + throw new Error(`onResolve() call is missing a filter`); + let id = nextCallbackID++; + onResolveCallbacks[id] = { name, callback, note: registeredNote }; + plugin.onResolve.push({ id, filter: filter.source, namespace: namespace || "" }); + }, + onLoad(options, callback) { + let registeredText = `This error came from the "onLoad" callback registered here:`; + let registeredNote = extractCallerV8(new Error(registeredText), streamIn, "onLoad"); + let keys2 = {}; + let filter = getFlag(options, keys2, "filter", mustBeRegExp); + let namespace = getFlag(options, keys2, "namespace", mustBeString); + checkForInvalidFlags(options, keys2, `in onLoad() call for plugin ${quote(name)}`); + if (filter == null) + throw new Error(`onLoad() call is missing a filter`); + let id = nextCallbackID++; + onLoadCallbacks[id] = { name, callback, note: registeredNote }; + plugin.onLoad.push({ id, filter: filter.source, namespace: namespace || "" }); + }, + onDispose(callback) { + onDisposeCallbacks.push(callback); + }, + esbuild: streamIn.esbuild + }); + if (promise) + await promise; + requestPlugins.push(plugin); + } catch (e) { + return { ok: false, error: e, pluginName: name }; + } + } + requestCallbacks["on-start"] = async (id, request) => { + let response = { errors: [], warnings: [] }; + await Promise.all(onStartCallbacks.map(async ({ name, callback, note }) => { + try { + let result = await callback(); + if (result != null) { + if (typeof result !== "object") + throw new Error(`Expected onStart() callback in plugin ${quote(name)} to return an object`); + let keys = {}; + let errors = getFlag(result, keys, "errors", mustBeArray); + let warnings = getFlag(result, keys, "warnings", mustBeArray); + checkForInvalidFlags(result, keys, `from onStart() callback in plugin ${quote(name)}`); + if (errors != null) + response.errors.push(...sanitizeMessages(errors, "errors", details, name)); + if (warnings != null) + response.warnings.push(...sanitizeMessages(warnings, "warnings", details, name)); + } + } catch (e) { + response.errors.push(extractErrorMessageV8(e, streamIn, details, note && note(), name)); + } + })); + sendResponse(id, response); + }; + requestCallbacks["on-resolve"] = async (id, request) => { + let response = {}, name = "", callback, note; + for (let id2 of request.ids) { + try { + ({ name, callback, note } = onResolveCallbacks[id2]); + let result = await callback({ + path: request.path, + importer: request.importer, + namespace: request.namespace, + resolveDir: request.resolveDir, + kind: request.kind, + pluginData: details.load(request.pluginData) + }); + if (result != null) { + if (typeof result !== "object") + throw new Error(`Expected onResolve() callback in plugin ${quote(name)} to return an object`); + let keys = {}; + let pluginName = getFlag(result, keys, "pluginName", mustBeString); + let path3 = getFlag(result, keys, "path", mustBeString); + let namespace = getFlag(result, keys, "namespace", mustBeString); + let suffix = getFlag(result, keys, "suffix", mustBeString); + let external = getFlag(result, keys, "external", mustBeBoolean); + let sideEffects = getFlag(result, keys, "sideEffects", mustBeBoolean); + let pluginData = getFlag(result, keys, "pluginData", canBeAnything); + let errors = getFlag(result, keys, "errors", mustBeArray); + let warnings = getFlag(result, keys, "warnings", mustBeArray); + let watchFiles = getFlag(result, keys, "watchFiles", mustBeArray); + let watchDirs = getFlag(result, keys, "watchDirs", mustBeArray); + checkForInvalidFlags(result, keys, `from onResolve() callback in plugin ${quote(name)}`); + response.id = id2; + if (pluginName != null) + response.pluginName = pluginName; + if (path3 != null) + response.path = path3; + if (namespace != null) + response.namespace = namespace; + if (suffix != null) + response.suffix = suffix; + if (external != null) + response.external = external; + if (sideEffects != null) + response.sideEffects = sideEffects; + if (pluginData != null) + response.pluginData = details.store(pluginData); + if (errors != null) + response.errors = sanitizeMessages(errors, "errors", details, name); + if (warnings != null) + response.warnings = sanitizeMessages(warnings, "warnings", details, name); + if (watchFiles != null) + response.watchFiles = sanitizeStringArray(watchFiles, "watchFiles"); + if (watchDirs != null) + response.watchDirs = sanitizeStringArray(watchDirs, "watchDirs"); + break; + } + } catch (e) { + response = { id: id2, errors: [extractErrorMessageV8(e, streamIn, details, note && note(), name)] }; + break; + } + } + sendResponse(id, response); + }; + requestCallbacks["on-load"] = async (id, request) => { + let response = {}, name = "", callback, note; + for (let id2 of request.ids) { + try { + ({ name, callback, note } = onLoadCallbacks[id2]); + let result = await callback({ + path: request.path, + namespace: request.namespace, + suffix: request.suffix, + pluginData: details.load(request.pluginData) + }); + if (result != null) { + if (typeof result !== "object") + throw new Error(`Expected onLoad() callback in plugin ${quote(name)} to return an object`); + let keys = {}; + let pluginName = getFlag(result, keys, "pluginName", mustBeString); + let contents = getFlag(result, keys, "contents", mustBeStringOrUint8Array); + let resolveDir = getFlag(result, keys, "resolveDir", mustBeString); + let pluginData = getFlag(result, keys, "pluginData", canBeAnything); + let loader = getFlag(result, keys, "loader", mustBeString); + let errors = getFlag(result, keys, "errors", mustBeArray); + let warnings = getFlag(result, keys, "warnings", mustBeArray); + let watchFiles = getFlag(result, keys, "watchFiles", mustBeArray); + let watchDirs = getFlag(result, keys, "watchDirs", mustBeArray); + checkForInvalidFlags(result, keys, `from onLoad() callback in plugin ${quote(name)}`); + response.id = id2; + if (pluginName != null) + response.pluginName = pluginName; + if (contents instanceof Uint8Array) + response.contents = contents; + else if (contents != null) + response.contents = encodeUTF8(contents); + if (resolveDir != null) + response.resolveDir = resolveDir; + if (pluginData != null) + response.pluginData = details.store(pluginData); + if (loader != null) + response.loader = loader; + if (errors != null) + response.errors = sanitizeMessages(errors, "errors", details, name); + if (warnings != null) + response.warnings = sanitizeMessages(warnings, "warnings", details, name); + if (watchFiles != null) + response.watchFiles = sanitizeStringArray(watchFiles, "watchFiles"); + if (watchDirs != null) + response.watchDirs = sanitizeStringArray(watchDirs, "watchDirs"); + break; + } + } catch (e) { + response = { id: id2, errors: [extractErrorMessageV8(e, streamIn, details, note && note(), name)] }; + break; + } + } + sendResponse(id, response); + }; + let runOnEndCallbacks = (result, done) => done([], []); + if (onEndCallbacks.length > 0) { + runOnEndCallbacks = (result, done) => { + (async () => { + const onEndErrors = []; + const onEndWarnings = []; + for (const { name, callback, note } of onEndCallbacks) { + let newErrors; + let newWarnings; + try { + const value = await callback(result); + if (value != null) { + if (typeof value !== "object") + throw new Error(`Expected onEnd() callback in plugin ${quote(name)} to return an object`); + let keys = {}; + let errors = getFlag(value, keys, "errors", mustBeArray); + let warnings = getFlag(value, keys, "warnings", mustBeArray); + checkForInvalidFlags(value, keys, `from onEnd() callback in plugin ${quote(name)}`); + if (errors != null) + newErrors = sanitizeMessages(errors, "errors", details, name); + if (warnings != null) + newWarnings = sanitizeMessages(warnings, "warnings", details, name); + } + } catch (e) { + newErrors = [extractErrorMessageV8(e, streamIn, details, note && note(), name)]; + } + if (newErrors) { + onEndErrors.push(...newErrors); + try { + result.errors.push(...newErrors); + } catch { + } + } + if (newWarnings) { + onEndWarnings.push(...newWarnings); + try { + result.warnings.push(...newWarnings); + } catch { + } + } + } + done(onEndErrors, onEndWarnings); + })(); + }; + } + let scheduleOnDisposeCallbacks = () => { + for (const cb of onDisposeCallbacks) { + setTimeout(() => cb(), 0); + } + }; + isSetupDone = true; + return { + ok: true, + requestPlugins, + runOnEndCallbacks, + scheduleOnDisposeCallbacks + }; +}; +function createObjectStash() { + const map = /* @__PURE__ */ new Map(); + let nextID = 0; + return { + load(id) { + return map.get(id); + }, + store(value) { + if (value === void 0) + return -1; + const id = nextID++; + map.set(id, value); + return id; + } + }; +} +function extractCallerV8(e, streamIn, ident) { + let note; + let tried = false; + return () => { + if (tried) + return note; + tried = true; + try { + let lines = (e.stack + "").split("\n"); + lines.splice(1, 1); + let location = parseStackLinesV8(streamIn, lines, ident); + if (location) { + note = { text: e.message, location }; + return note; + } + } catch { + } + }; +} +function extractErrorMessageV8(e, streamIn, stash, note, pluginName) { + let text = "Internal error"; + let location = null; + try { + text = (e && e.message || e) + ""; + } catch { + } + try { + location = parseStackLinesV8(streamIn, (e.stack + "").split("\n"), ""); + } catch { + } + return { id: "", pluginName, text, location, notes: note ? [note] : [], detail: stash ? stash.store(e) : -1 }; +} +function parseStackLinesV8(streamIn, lines, ident) { + let at = " at "; + if (streamIn.readFileSync && !lines[0].startsWith(at) && lines[1].startsWith(at)) { + for (let i = 1; i < lines.length; i++) { + let line = lines[i]; + if (!line.startsWith(at)) + continue; + line = line.slice(at.length); + while (true) { + let match = /^(?:new |async )?\S+ \((.*)\)$/.exec(line); + if (match) { + line = match[1]; + continue; + } + match = /^eval at \S+ \((.*)\)(?:, \S+:\d+:\d+)?$/.exec(line); + if (match) { + line = match[1]; + continue; + } + match = /^(\S+):(\d+):(\d+)$/.exec(line); + if (match) { + let contents; + try { + contents = streamIn.readFileSync(match[1], "utf8"); + } catch { + break; + } + let lineText = contents.split(/\r\n|\r|\n|\u2028|\u2029/)[+match[2] - 1] || ""; + let column = +match[3] - 1; + let length = lineText.slice(column, column + ident.length) === ident ? ident.length : 0; + return { + file: match[1], + namespace: "file", + line: +match[2], + column: encodeUTF8(lineText.slice(0, column)).length, + length: encodeUTF8(lineText.slice(column, column + length)).length, + lineText: lineText + "\n" + lines.slice(1).join("\n"), + suggestion: "" + }; + } + break; + } + } + } + return null; +} +function failureErrorWithLog(text, errors, warnings) { + let limit = 5; + let summary = errors.length < 1 ? "" : ` with ${errors.length} error${errors.length < 2 ? "" : "s"}:` + errors.slice(0, limit + 1).map((e, i) => { + if (i === limit) + return "\n..."; + if (!e.location) + return ` +error: ${e.text}`; + let { file, line, column } = e.location; + let pluginText = e.pluginName ? `[plugin: ${e.pluginName}] ` : ""; + return ` +${file}:${line}:${column}: ERROR: ${pluginText}${e.text}`; + }).join(""); + let error = new Error(`${text}${summary}`); + error.errors = errors; + error.warnings = warnings; + return error; +} +function replaceDetailsInMessages(messages, stash) { + for (const message of messages) { + message.detail = stash.load(message.detail); + } + return messages; +} +function sanitizeLocation(location, where) { + if (location == null) + return null; + let keys = {}; + let file = getFlag(location, keys, "file", mustBeString); + let namespace = getFlag(location, keys, "namespace", mustBeString); + let line = getFlag(location, keys, "line", mustBeInteger); + let column = getFlag(location, keys, "column", mustBeInteger); + let length = getFlag(location, keys, "length", mustBeInteger); + let lineText = getFlag(location, keys, "lineText", mustBeString); + let suggestion = getFlag(location, keys, "suggestion", mustBeString); + checkForInvalidFlags(location, keys, where); + return { + file: file || "", + namespace: namespace || "", + line: line || 0, + column: column || 0, + length: length || 0, + lineText: lineText || "", + suggestion: suggestion || "" + }; +} +function sanitizeMessages(messages, property, stash, fallbackPluginName) { + let messagesClone = []; + let index = 0; + for (const message of messages) { + let keys = {}; + let id = getFlag(message, keys, "id", mustBeString); + let pluginName = getFlag(message, keys, "pluginName", mustBeString); + let text = getFlag(message, keys, "text", mustBeString); + let location = getFlag(message, keys, "location", mustBeObjectOrNull); + let notes = getFlag(message, keys, "notes", mustBeArray); + let detail = getFlag(message, keys, "detail", canBeAnything); + let where = `in element ${index} of "${property}"`; + checkForInvalidFlags(message, keys, where); + let notesClone = []; + if (notes) { + for (const note of notes) { + let noteKeys = {}; + let noteText = getFlag(note, noteKeys, "text", mustBeString); + let noteLocation = getFlag(note, noteKeys, "location", mustBeObjectOrNull); + checkForInvalidFlags(note, noteKeys, where); + notesClone.push({ + text: noteText || "", + location: sanitizeLocation(noteLocation, where) + }); + } + } + messagesClone.push({ + id: id || "", + pluginName: pluginName || fallbackPluginName, + text: text || "", + location: sanitizeLocation(location, where), + notes: notesClone, + detail: stash ? stash.store(detail) : -1 + }); + index++; + } + return messagesClone; +} +function sanitizeStringArray(values, property) { + const result = []; + for (const value of values) { + if (typeof value !== "string") + throw new Error(`${quote(property)} must be an array of strings`); + result.push(value); + } + return result; +} +function convertOutputFiles({ path: path3, contents }) { + let text = null; + return { + path: path3, + contents, + get text() { + const binary = this.contents; + if (text === null || binary !== contents) { + contents = binary; + text = decodeUTF8(binary); + } + return text; + } + }; +} + +// lib/npm/node-platform.ts +var fs = require("fs"); +var os = require("os"); +var path = require("path"); +var ESBUILD_BINARY_PATH = process.env.ESBUILD_BINARY_PATH || ESBUILD_BINARY_PATH; +var isValidBinaryPath = (x) => !!x && x !== "/usr/bin/esbuild"; +var packageDarwin_arm64 = "@esbuild/darwin-arm64"; +var packageDarwin_x64 = "@esbuild/darwin-x64"; +var knownWindowsPackages = { + "win32 arm64 LE": "@esbuild/win32-arm64", + "win32 ia32 LE": "@esbuild/win32-ia32", + "win32 x64 LE": "@esbuild/win32-x64" +}; +var knownUnixlikePackages = { + "android arm64 LE": "@esbuild/android-arm64", + "darwin arm64 LE": "@esbuild/darwin-arm64", + "darwin x64 LE": "@esbuild/darwin-x64", + "freebsd arm64 LE": "@esbuild/freebsd-arm64", + "freebsd x64 LE": "@esbuild/freebsd-x64", + "linux arm LE": "@esbuild/linux-arm", + "linux arm64 LE": "@esbuild/linux-arm64", + "linux ia32 LE": "@esbuild/linux-ia32", + "linux mips64el LE": "@esbuild/linux-mips64el", + "linux ppc64 LE": "@esbuild/linux-ppc64", + "linux riscv64 LE": "@esbuild/linux-riscv64", + "linux s390x BE": "@esbuild/linux-s390x", + "linux x64 LE": "@esbuild/linux-x64", + "linux loong64 LE": "@esbuild/linux-loong64", + "netbsd x64 LE": "@esbuild/netbsd-x64", + "openbsd x64 LE": "@esbuild/openbsd-x64", + "sunos x64 LE": "@esbuild/sunos-x64" +}; +var knownWebAssemblyFallbackPackages = { + "android arm LE": "@esbuild/android-arm", + "android x64 LE": "@esbuild/android-x64" +}; +function pkgAndSubpathForCurrentPlatform() { + let pkg; + let subpath; + let isWASM = false; + let platformKey = `${process.platform} ${os.arch()} ${os.endianness()}`; + if (platformKey in knownWindowsPackages) { + pkg = knownWindowsPackages[platformKey]; + subpath = "esbuild.exe"; + } else if (platformKey in knownUnixlikePackages) { + pkg = knownUnixlikePackages[platformKey]; + subpath = "bin/esbuild"; + } else if (platformKey in knownWebAssemblyFallbackPackages) { + pkg = knownWebAssemblyFallbackPackages[platformKey]; + subpath = "bin/esbuild"; + isWASM = true; + } else { + throw new Error(`Unsupported platform: ${platformKey}`); + } + return { pkg, subpath, isWASM }; +} +function pkgForSomeOtherPlatform() { + const libMainJS = require.resolve("esbuild"); + const nodeModulesDirectory = path.dirname(path.dirname(path.dirname(libMainJS))); + if (path.basename(nodeModulesDirectory) === "node_modules") { + for (const unixKey in knownUnixlikePackages) { + try { + const pkg = knownUnixlikePackages[unixKey]; + if (fs.existsSync(path.join(nodeModulesDirectory, pkg))) + return pkg; + } catch { + } + } + for (const windowsKey in knownWindowsPackages) { + try { + const pkg = knownWindowsPackages[windowsKey]; + if (fs.existsSync(path.join(nodeModulesDirectory, pkg))) + return pkg; + } catch { + } + } + } + return null; +} +function downloadedBinPath(pkg, subpath) { + const esbuildLibDir = path.dirname(require.resolve("esbuild")); + return path.join(esbuildLibDir, `downloaded-${pkg.replace("/", "-")}-${path.basename(subpath)}`); +} +function generateBinPath() { + if (isValidBinaryPath(ESBUILD_BINARY_PATH)) { + if (!fs.existsSync(ESBUILD_BINARY_PATH)) { + console.warn(`[esbuild] Ignoring bad configuration: ESBUILD_BINARY_PATH=${ESBUILD_BINARY_PATH}`); + } else { + return { binPath: ESBUILD_BINARY_PATH, isWASM: false }; + } + } + const { pkg, subpath, isWASM } = pkgAndSubpathForCurrentPlatform(); + let binPath; + try { + binPath = require.resolve(`${pkg}/${subpath}`); + } catch (e) { + binPath = downloadedBinPath(pkg, subpath); + if (!fs.existsSync(binPath)) { + try { + require.resolve(pkg); + } catch { + const otherPkg = pkgForSomeOtherPlatform(); + if (otherPkg) { + let suggestions = ` +Specifically the "${otherPkg}" package is present but this platform +needs the "${pkg}" package instead. People often get into this +situation by installing esbuild on Windows or macOS and copying "node_modules" +into a Docker image that runs Linux, or by copying "node_modules" between +Windows and WSL environments. + +If you are installing with npm, you can try not copying the "node_modules" +directory when you copy the files over, and running "npm ci" or "npm install" +on the destination platform after the copy. Or you could consider using yarn +instead of npm which has built-in support for installing a package on multiple +platforms simultaneously. + +If you are installing with yarn, you can try listing both this platform and the +other platform in your ".yarnrc.yml" file using the "supportedArchitectures" +feature: https://yarnpkg.com/configuration/yarnrc/#supportedArchitectures +Keep in mind that this means multiple copies of esbuild will be present. +`; + if (pkg === packageDarwin_x64 && otherPkg === packageDarwin_arm64 || pkg === packageDarwin_arm64 && otherPkg === packageDarwin_x64) { + suggestions = ` +Specifically the "${otherPkg}" package is present but this platform +needs the "${pkg}" package instead. People often get into this +situation by installing esbuild with npm running inside of Rosetta 2 and then +trying to use it with node running outside of Rosetta 2, or vice versa (Rosetta +2 is Apple's on-the-fly x86_64-to-arm64 translation service). + +If you are installing with npm, you can try ensuring that both npm and node are +not running under Rosetta 2 and then reinstalling esbuild. This likely involves +changing how you installed npm and/or node. For example, installing node with +the universal installer here should work: https://nodejs.org/en/download/. Or +you could consider using yarn instead of npm which has built-in support for +installing a package on multiple platforms simultaneously. + +If you are installing with yarn, you can try listing both "arm64" and "x64" +in your ".yarnrc.yml" file using the "supportedArchitectures" feature: +https://yarnpkg.com/configuration/yarnrc/#supportedArchitectures +Keep in mind that this means multiple copies of esbuild will be present. +`; + } + throw new Error(` +You installed esbuild for another platform than the one you're currently using. +This won't work because esbuild is written with native code and needs to +install a platform-specific binary executable. +${suggestions} +Another alternative is to use the "esbuild-wasm" package instead, which works +the same way on all platforms. But it comes with a heavy performance cost and +can sometimes be 10x slower than the "esbuild" package, so you may also not +want to do that. +`); + } + throw new Error(`The package "${pkg}" could not be found, and is needed by esbuild. + +If you are installing esbuild with npm, make sure that you don't specify the +"--no-optional" or "--omit=optional" flags. The "optionalDependencies" feature +of "package.json" is used by esbuild to install the correct binary executable +for your current platform.`); + } + throw e; + } + } + if (/\.zip\//.test(binPath)) { + let pnpapi; + try { + pnpapi = require("pnpapi"); + } catch (e) { + } + if (pnpapi) { + const root = pnpapi.getPackageInformation(pnpapi.topLevel).packageLocation; + const binTargetPath = path.join( + root, + "node_modules", + ".cache", + "esbuild", + `pnpapi-${pkg.replace("/", "-")}-${"0.17.10"}-${path.basename(subpath)}` + ); + if (!fs.existsSync(binTargetPath)) { + fs.mkdirSync(path.dirname(binTargetPath), { recursive: true }); + fs.copyFileSync(binPath, binTargetPath); + fs.chmodSync(binTargetPath, 493); + } + return { binPath: binTargetPath, isWASM }; + } + } + return { binPath, isWASM }; +} + +// lib/npm/node.ts +var child_process = require("child_process"); +var crypto = require("crypto"); +var path2 = require("path"); +var fs2 = require("fs"); +var os2 = require("os"); +var tty = require("tty"); +var worker_threads; +if (process.env.ESBUILD_WORKER_THREADS !== "0") { + try { + worker_threads = require("worker_threads"); + } catch { + } + let [major, minor] = process.versions.node.split("."); + if ( + // { + if ((!ESBUILD_BINARY_PATH || false) && (path2.basename(__filename) !== "main.js" || path2.basename(__dirname) !== "lib")) { + throw new Error( + `The esbuild JavaScript API cannot be bundled. Please mark the "esbuild" package as external so it's not included in the bundle. + +More information: The file containing the code for esbuild's JavaScript API (${__filename}) does not appear to be inside the esbuild package on the file system, which usually means that the esbuild package was bundled into another file. This is problematic because the API needs to run a binary executable inside the esbuild package which is located using a relative path from the API code to the executable. If the esbuild package is bundled, the relative path will be incorrect and the executable won't be found.` + ); + } + if (false) { + return ["node", [path2.join(__dirname, "..", "bin", "esbuild")]]; + } else { + const { binPath, isWASM } = generateBinPath(); + if (isWASM) { + return ["node", [binPath]]; + } else { + return [binPath, []]; + } + } +}; +var isTTY = () => tty.isatty(2); +var fsSync = { + readFile(tempFile, callback) { + try { + let contents = fs2.readFileSync(tempFile, "utf8"); + try { + fs2.unlinkSync(tempFile); + } catch { + } + callback(null, contents); + } catch (err) { + callback(err, null); + } + }, + writeFile(contents, callback) { + try { + let tempFile = randomFileName(); + fs2.writeFileSync(tempFile, contents); + callback(tempFile); + } catch { + callback(null); + } + } +}; +var fsAsync = { + readFile(tempFile, callback) { + try { + fs2.readFile(tempFile, "utf8", (err, contents) => { + try { + fs2.unlink(tempFile, () => callback(err, contents)); + } catch { + callback(err, contents); + } + }); + } catch (err) { + callback(err, null); + } + }, + writeFile(contents, callback) { + try { + let tempFile = randomFileName(); + fs2.writeFile(tempFile, contents, (err) => err !== null ? callback(null) : callback(tempFile)); + } catch { + callback(null); + } + } +}; +var version = "0.17.10"; +var build = (options) => ensureServiceIsRunning().build(options); +var context = (buildOptions) => ensureServiceIsRunning().context(buildOptions); +var transform = (input, options) => ensureServiceIsRunning().transform(input, options); +var formatMessages = (messages, options) => ensureServiceIsRunning().formatMessages(messages, options); +var analyzeMetafile = (messages, options) => ensureServiceIsRunning().analyzeMetafile(messages, options); +var buildSync = (options) => { + if (worker_threads && !isInternalWorkerThread) { + if (!workerThreadService) + workerThreadService = startWorkerThreadService(worker_threads); + return workerThreadService.buildSync(options); + } + let result; + runServiceSync((service) => service.buildOrContext({ + callName: "buildSync", + refs: null, + options, + isTTY: isTTY(), + defaultWD, + callback: (err, res) => { + if (err) + throw err; + result = res; + } + })); + return result; +}; +var transformSync = (input, options) => { + if (worker_threads && !isInternalWorkerThread) { + if (!workerThreadService) + workerThreadService = startWorkerThreadService(worker_threads); + return workerThreadService.transformSync(input, options); + } + let result; + runServiceSync((service) => service.transform({ + callName: "transformSync", + refs: null, + input, + options: options || {}, + isTTY: isTTY(), + fs: fsSync, + callback: (err, res) => { + if (err) + throw err; + result = res; + } + })); + return result; +}; +var formatMessagesSync = (messages, options) => { + if (worker_threads && !isInternalWorkerThread) { + if (!workerThreadService) + workerThreadService = startWorkerThreadService(worker_threads); + return workerThreadService.formatMessagesSync(messages, options); + } + let result; + runServiceSync((service) => service.formatMessages({ + callName: "formatMessagesSync", + refs: null, + messages, + options, + callback: (err, res) => { + if (err) + throw err; + result = res; + } + })); + return result; +}; +var analyzeMetafileSync = (metafile, options) => { + if (worker_threads && !isInternalWorkerThread) { + if (!workerThreadService) + workerThreadService = startWorkerThreadService(worker_threads); + return workerThreadService.analyzeMetafileSync(metafile, options); + } + let result; + runServiceSync((service) => service.analyzeMetafile({ + callName: "analyzeMetafileSync", + refs: null, + metafile: typeof metafile === "string" ? metafile : JSON.stringify(metafile), + options, + callback: (err, res) => { + if (err) + throw err; + result = res; + } + })); + return result; +}; +var initializeWasCalled = false; +var initialize = (options) => { + options = validateInitializeOptions(options || {}); + if (options.wasmURL) + throw new Error(`The "wasmURL" option only works in the browser`); + if (options.wasmModule) + throw new Error(`The "wasmModule" option only works in the browser`); + if (options.worker) + throw new Error(`The "worker" option only works in the browser`); + if (initializeWasCalled) + throw new Error('Cannot call "initialize" more than once'); + ensureServiceIsRunning(); + initializeWasCalled = true; + return Promise.resolve(); +}; +var defaultWD = process.cwd(); +var longLivedService; +var ensureServiceIsRunning = () => { + if (longLivedService) + return longLivedService; + let [command, args] = esbuildCommandAndArgs(); + let child = child_process.spawn(command, args.concat(`--service=${"0.17.10"}`, "--ping"), { + windowsHide: true, + stdio: ["pipe", "pipe", "inherit"], + cwd: defaultWD + }); + let { readFromStdout, afterClose, service } = createChannel({ + writeToStdin(bytes) { + child.stdin.write(bytes, (err) => { + if (err) + afterClose(err); + }); + }, + readFileSync: fs2.readFileSync, + isSync: false, + hasFS: true, + esbuild: node_exports + }); + child.stdin.on("error", afterClose); + child.on("error", afterClose); + const stdin = child.stdin; + const stdout = child.stdout; + stdout.on("data", readFromStdout); + stdout.on("end", afterClose); + let refCount = 0; + child.unref(); + if (stdin.unref) { + stdin.unref(); + } + if (stdout.unref) { + stdout.unref(); + } + const refs = { + ref() { + if (++refCount === 1) + child.ref(); + }, + unref() { + if (--refCount === 0) + child.unref(); + } + }; + longLivedService = { + build: (options) => new Promise((resolve, reject) => { + service.buildOrContext({ + callName: "build", + refs, + options, + isTTY: isTTY(), + defaultWD, + callback: (err, res) => err ? reject(err) : resolve(res) + }); + }), + context: (options) => new Promise((resolve, reject) => service.buildOrContext({ + callName: "context", + refs, + options, + isTTY: isTTY(), + defaultWD, + callback: (err, res) => err ? reject(err) : resolve(res) + })), + transform: (input, options) => new Promise((resolve, reject) => service.transform({ + callName: "transform", + refs, + input, + options: options || {}, + isTTY: isTTY(), + fs: fsAsync, + callback: (err, res) => err ? reject(err) : resolve(res) + })), + formatMessages: (messages, options) => new Promise((resolve, reject) => service.formatMessages({ + callName: "formatMessages", + refs, + messages, + options, + callback: (err, res) => err ? reject(err) : resolve(res) + })), + analyzeMetafile: (metafile, options) => new Promise((resolve, reject) => service.analyzeMetafile({ + callName: "analyzeMetafile", + refs, + metafile: typeof metafile === "string" ? metafile : JSON.stringify(metafile), + options, + callback: (err, res) => err ? reject(err) : resolve(res) + })) + }; + return longLivedService; +}; +var runServiceSync = (callback) => { + let [command, args] = esbuildCommandAndArgs(); + let stdin = new Uint8Array(); + let { readFromStdout, afterClose, service } = createChannel({ + writeToStdin(bytes) { + if (stdin.length !== 0) + throw new Error("Must run at most one command"); + stdin = bytes; + }, + isSync: true, + hasFS: true, + esbuild: node_exports + }); + callback(service); + let stdout = child_process.execFileSync(command, args.concat(`--service=${"0.17.10"}`), { + cwd: defaultWD, + windowsHide: true, + input: stdin, + // We don't know how large the output could be. If it's too large, the + // command will fail with ENOBUFS. Reserve 16mb for now since that feels + // like it should be enough. Also allow overriding this with an environment + // variable. + maxBuffer: +process.env.ESBUILD_MAX_BUFFER || 16 * 1024 * 1024 + }); + readFromStdout(stdout); + afterClose(null); +}; +var randomFileName = () => { + return path2.join(os2.tmpdir(), `esbuild-${crypto.randomBytes(32).toString("hex")}`); +}; +var workerThreadService = null; +var startWorkerThreadService = (worker_threads2) => { + let { port1: mainPort, port2: workerPort } = new worker_threads2.MessageChannel(); + let worker = new worker_threads2.Worker(__filename, { + workerData: { workerPort, defaultWD, esbuildVersion: "0.17.10" }, + transferList: [workerPort], + // From node's documentation: https://nodejs.org/api/worker_threads.html + // + // Take care when launching worker threads from preload scripts (scripts loaded + // and run using the `-r` command line flag). Unless the `execArgv` option is + // explicitly set, new Worker threads automatically inherit the command line flags + // from the running process and will preload the same preload scripts as the main + // thread. If the preload script unconditionally launches a worker thread, every + // thread spawned will spawn another until the application crashes. + // + execArgv: [] + }); + let nextID = 0; + let fakeBuildError = (text) => { + let error = new Error(`Build failed with 1 error: +error: ${text}`); + let errors = [{ id: "", pluginName: "", text, location: null, notes: [], detail: void 0 }]; + error.errors = errors; + error.warnings = []; + return error; + }; + let validateBuildSyncOptions = (options) => { + if (!options) + return; + let plugins = options.plugins; + if (plugins && plugins.length > 0) + throw fakeBuildError(`Cannot use plugins in synchronous API calls`); + }; + let applyProperties = (object, properties) => { + for (let key in properties) { + object[key] = properties[key]; + } + }; + let runCallSync = (command, args) => { + let id = nextID++; + let sharedBuffer = new SharedArrayBuffer(8); + let sharedBufferView = new Int32Array(sharedBuffer); + let msg = { sharedBuffer, id, command, args }; + worker.postMessage(msg); + let status = Atomics.wait(sharedBufferView, 0, 0); + if (status !== "ok" && status !== "not-equal") + throw new Error("Internal error: Atomics.wait() failed: " + status); + let { message: { id: id2, resolve, reject, properties } } = worker_threads2.receiveMessageOnPort(mainPort); + if (id !== id2) + throw new Error(`Internal error: Expected id ${id} but got id ${id2}`); + if (reject) { + applyProperties(reject, properties); + throw reject; + } + return resolve; + }; + worker.unref(); + return { + buildSync(options) { + validateBuildSyncOptions(options); + return runCallSync("build", [options]); + }, + transformSync(input, options) { + return runCallSync("transform", [input, options]); + }, + formatMessagesSync(messages, options) { + return runCallSync("formatMessages", [messages, options]); + }, + analyzeMetafileSync(metafile, options) { + return runCallSync("analyzeMetafile", [metafile, options]); + } + }; +}; +var startSyncServiceWorker = () => { + let workerPort = worker_threads.workerData.workerPort; + let parentPort = worker_threads.parentPort; + let extractProperties = (object) => { + let properties = {}; + if (object && typeof object === "object") { + for (let key in object) { + properties[key] = object[key]; + } + } + return properties; + }; + try { + let service = ensureServiceIsRunning(); + defaultWD = worker_threads.workerData.defaultWD; + parentPort.on("message", (msg) => { + (async () => { + let { sharedBuffer, id, command, args } = msg; + let sharedBufferView = new Int32Array(sharedBuffer); + try { + switch (command) { + case "build": + workerPort.postMessage({ id, resolve: await service.build(args[0]) }); + break; + case "transform": + workerPort.postMessage({ id, resolve: await service.transform(args[0], args[1]) }); + break; + case "formatMessages": + workerPort.postMessage({ id, resolve: await service.formatMessages(args[0], args[1]) }); + break; + case "analyzeMetafile": + workerPort.postMessage({ id, resolve: await service.analyzeMetafile(args[0], args[1]) }); + break; + default: + throw new Error(`Invalid command: ${command}`); + } + } catch (reject) { + workerPort.postMessage({ id, reject, properties: extractProperties(reject) }); + } + Atomics.add(sharedBufferView, 0, 1); + Atomics.notify(sharedBufferView, 0, Infinity); + })(); + }); + } catch (reject) { + parentPort.on("message", (msg) => { + let { sharedBuffer, id } = msg; + let sharedBufferView = new Int32Array(sharedBuffer); + workerPort.postMessage({ id, reject, properties: extractProperties(reject) }); + Atomics.add(sharedBufferView, 0, 1); + Atomics.notify(sharedBufferView, 0, Infinity); + }); + } +}; +if (isInternalWorkerThread) { + startSyncServiceWorker(); +} +var node_default = node_exports; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + analyzeMetafile, + analyzeMetafileSync, + build, + buildSync, + context, + formatMessages, + formatMessagesSync, + initialize, + transform, + transformSync, + version +}); diff --git a/node_modules/esbuild/package.json b/node_modules/esbuild/package.json new file mode 100644 index 0000000..ed8f429 --- /dev/null +++ b/node_modules/esbuild/package.json @@ -0,0 +1,42 @@ +{ + "name": "esbuild", + "version": "0.17.10", + "description": "An extremely fast JavaScript and CSS bundler and minifier.", + "repository": "https://github.com/evanw/esbuild", + "scripts": { + "postinstall": "node install.js" + }, + "main": "lib/main.js", + "types": "lib/main.d.ts", + "engines": { + "node": ">=12" + }, + "bin": { + "esbuild": "bin/esbuild" + }, + "optionalDependencies": { + "@esbuild/android-arm": "0.17.10", + "@esbuild/android-arm64": "0.17.10", + "@esbuild/android-x64": "0.17.10", + "@esbuild/darwin-arm64": "0.17.10", + "@esbuild/darwin-x64": "0.17.10", + "@esbuild/freebsd-arm64": "0.17.10", + "@esbuild/freebsd-x64": "0.17.10", + "@esbuild/linux-arm": "0.17.10", + "@esbuild/linux-arm64": "0.17.10", + "@esbuild/linux-ia32": "0.17.10", + "@esbuild/linux-loong64": "0.17.10", + "@esbuild/linux-mips64el": "0.17.10", + "@esbuild/linux-ppc64": "0.17.10", + "@esbuild/linux-riscv64": "0.17.10", + "@esbuild/linux-s390x": "0.17.10", + "@esbuild/linux-x64": "0.17.10", + "@esbuild/netbsd-x64": "0.17.10", + "@esbuild/openbsd-x64": "0.17.10", + "@esbuild/sunos-x64": "0.17.10", + "@esbuild/win32-arm64": "0.17.10", + "@esbuild/win32-ia32": "0.17.10", + "@esbuild/win32-x64": "0.17.10" + }, + "license": "MIT" +} diff --git a/node_modules/fast-xml-parser/CHANGELOG.md b/node_modules/fast-xml-parser/CHANGELOG.md new file mode 100644 index 0000000..bf10cf8 --- /dev/null +++ b/node_modules/fast-xml-parser/CHANGELOG.md @@ -0,0 +1,531 @@ +Note: If you find missing information about particular minor version, that version must have been changed without any functional change in this library. + +**4.1.3 / 2023-02-26** +* fix #546: Support complex entity value + +**4.1.2 / 2023-02-12** +* Security Fix + +**4.1.1 / 2023-02-03** +* Fix #540: ignoreAttributes breaks unpairedTags +* Refactor XML builder code + +**4.1.0 / 2023-02-02** +* Fix '<' or '>' in DTD comment throwing an error. (#533) (By [Adam Baker](https://github.com/Cwazywierdo)) +* Set "eNotation" to 'true' as default + +**4.0.15 / 2023-01-25** +* make "eNotation" optional + +**4.0.14 / 2023-01-22** +* fixed: add missed typing "eNotation" to parse values + +**4.0.13 / 2023-01-07** +* preserveorder formatting (By [mdeknowis](https://github.com/mdeknowis)) +* support `transformAttributeName` (By [Erik Rothoff Andersson](https://github.com/erkie)) + +**4.0.12 / 2022-11-19** +* fix typescript + +**4.0.11 / 2022-10-05** +* fix #501: parse for entities only once + +**4.0.10 / 2022-09-14** +* fix broken links in demo site (By [Yannick Lang](https://github.com/layaxx)) +* fix #491: tagValueProcessor type definition (By [Andrea Francesco Speziale](https://github.com/andreafspeziale)) +* Add jsdocs for tagValueProcessor + + +**4.0.9 / 2022-07-10** +* fix #470: stop-tag can have self-closing tag with same name +* fix #472: stopNode can have any special tag inside +* Allow !ATTLIST and !NOTATION with DOCTYPE +* Add transformTagName option to transform tag names when parsing (#469) (By [Erik Rothoff Andersson](https://github.com/erkie)) + +**4.0.8 / 2022-05-28** +* Fix CDATA parsing returning empty string when value = 0 (#451) (By [ndelanou](https://github.com/ndelanou)) +* Fix stopNodes when same tag appears inside node (#456) (By [patrickshipe](https://github.com/patrickshipe)) +* fix #468: prettify own properties only + +**4.0.7 / 2022-03-18** +* support CDATA even if tag order is not preserved +* support Comments even if tag order is not preserved +* fix #446: XMLbuilder should not indent XML declaration + +**4.0.6 / 2022-03-08** +* fix: call tagValueProcessor only once for array items +* fix: missing changed for #437 + +**4.0.5 / 2022-03-06** +* fix #437: call tagValueProcessor from XML builder + +**4.0.4 / 2022-03-03** +* fix #435: should skip unpaired and self-closing nodes when set as stopnodes + +**4.0.3 / 2022-02-15** +* fix: ReferenceError when Bundled with Strict (#431) (By [Andreas Heissenberger](https://github.com/aheissenberger)) + + +**4.0.2 / 2022-02-04** +* builder supports `suppressUnpairedNode` +* parser supports `ignoreDeclaration` and `ignorePiTags` +* fix: when comment is parsed as text value if given as ` ...` #423 +* builder supports decoding `&` + +**4.0.1 / 2022-01-08** +* fix builder for pi tag +* fix: support suppressBooleanAttrs by builder + +**4.0.0 / 2022-01-06** +* Generating different combined, parser only, builder only, validator only browser bundles +* Keeping cjs modules as they can be imported in cjs and esm modules both. Otherwise refer `esm` branch. + +**4.0.0-beta.8 / 2021-12-13** +* call tagValueProcessor for stop nodes + +**4.0.0-beta.7 / 2021-12-09** +* fix Validator bug when an attribute has no value but '=' only +* XML Builder should suppress unpaired tags by default. +* documents update for missing features +* refactoring to use Object.assign +* refactoring to remove repeated code + +**4.0.0-beta.6 / 2021-12-05** +* Support PI Tags processing +* Support `suppressBooleanAttributes` by XML Builder for attributes with value `true`. + +**4.0.0-beta.5 / 2021-12-04** +* fix: when a tag with name "attributes" + +**4.0.0-beta.4 / 2021-12-02** +* Support HTML document parsing +* skip stop nodes parsing when building the XML from JS object +* Support external entites without DOCTYPE +* update dev dependency: strnum v1.0.5 to fix long number issue + +**4.0.0-beta.3 / 2021-11-30** +* support global stopNodes expression like "*.stop" +* support self-closing and paired unpaired tags +* fix: CDATA should not be parsed. +* Fix typings for XMLBuilder (#396)(By [Anders Emil Salvesen](https://github.com/andersem)) +* supports XML entities, HTML entities, DOCTYPE entities + +**⚠️ 4.0.0-beta.2 / 2021-11-19** +* rename `attrMap` to `attibutes` in parser output when `preserveOrder:true` +* supports unpairedTags + +**⚠️ 4.0.0-beta.1 / 2021-11-18** +* Parser returns an array now + * to make the structure common + * and to return root level detail +* renamed `cdataTagName` to `cdataPropName` +* Added `commentPropName` +* fix typings + +**⚠️ 4.0.0-beta.0 / 2021-11-16** +* Name change of many configuration properties. + * `attrNodeName` to `attributesGroupName` + * `attrValueProcessor` to `attributeValueProcessor` + * `parseNodeValue` to `parseTagValue` + * `ignoreNameSpace` to `removeNSPrefix` + * `numParseOptions` to `numberParseOptions` + * spelling correction for `suppressEmptyNode` +* Name change of cli and browser bundle to **fxparser** +* `isArray` option is added to parse a tag into array +* `preserveOrder` option is added to render XML in such a way that the result js Object maintains the order of properties same as in XML. +* Processing behaviour of `tagValueProcessor` and `attributeValueProcessor` are changes with extra input parameters +* j2xparser is renamed to XMLBuilder. +* You need to build XML parser instance for given options first before parsing XML. +* fix #327, #336: throw error when extra text after XML content +* fix #330: attribute value can have '\n', +* fix #350: attrbiutes can be separated by '\n' from tagname + +3.21.1 / 2021-10-31 +* Correctly format JSON elements with a text prop but no attribute props ( By [haddadnj](https://github.com/haddadnj) ) + +3.21.0 / 2021-10-25 + * feat: added option `rootNodeName` to set tag name for array input when converting js object to XML. + * feat: added option `alwaysCreateTextNode` to force text node creation (by: *@massimo-ua*) + * ⚠️ feat: Better error location for unclosed tags. (by *@Gei0r*) + * Some error messages would be changed when validating XML. Eg + * `{ InvalidXml: "Invalid '[ \"rootNode\"]' found." }` → `{InvalidTag: "Unclosed tag 'rootNode'."}` + * `{ InvalidTag: "Closing tag 'rootNode' is expected inplace of 'rootnode'." }` → `{ InvalidTag: "Expected closing tag 'rootNode' (opened in line 1) instead of closing tag 'rootnode'."}` + * ⚠️ feat: Column in error response when validating XML +```js +{ + "code": "InvalidAttr", + "msg": "Attribute 'abc' is repeated.", + "line": 1, + "col": 22 +} +``` + +3.20.1 / 2021-09-25 + * update strnum package + +3.20.0 / 2021-09-10 + * Use strnum npm package to parse string to number + * breaking change: long number will be parsed to scientific notation. + +3.19.0 / 2021-03-14 + * License changed to MIT original + * Fix #321 : namespace tag parsing + +3.18.0 / 2021-02-05 + * Support RegEx and function in arrayMode option + * Fix #317 : validate nested PI tags + +3.17.4 / 2020-06-07 + * Refactor some code to support IE11 + * Fix: `` space as attribute string + +3.17.3 / 2020-05-23 + * Fix: tag name separated by \n \t + * Fix: throw error for unclosed tags + +3.17.2 / 2020-05-23 + * Fixed an issue in processing doctype tag + * Fixed tagName where it should not have whitespace chars + +3.17.1 / 2020-05-19 + * Fixed an issue in checking opening tag + +3.17.0 / 2020-05-18 + * parser: fix '<' issue when it comes in aatr value + * parser: refactoring to remove dependency from regex + * validator: fix IE 11 issue for error messages + * updated dev dependencies + * separated benchmark module to sub-module + * breaking change: comments will not be removed from CDATA data + +3.16.0 / 2020-01-12 + * validaor: fix for ampersand characters (#215) + * refactoring to support unicode chars in tag name + * update typing for validator error + +3.15.1 / 2019-12-09 + * validaor: fix multiple roots are not allowed + +3.15.0 / 2019-11-23 + * validaor: improve error messaging + * validator: add line number in case of error + * validator: add more error scenarios to make it more descriptive + +3.14.0 / 2019-10-25 + * arrayMode for XML to JS obj parsing + +3.13.0 / 2019-10-02 + * pass tag/attr name to tag/attr value processor + * inbuilt optional validation with XML parser + +3.12.21 / 2019-10-02 + * Fix validator for unclosed XMLs + * move nimnjs dependency to dev dependency + * update dependencies + +3.12.20 / 2019-08-16 + * Revert: Fix #167: '>' in attribute value as it is causing high performance degrade. + +3.12.19 / 2019-07-28 + * Fix js to xml parser should work for date values. (broken: `tagValueProcessor` will receive the original value instead of string always) (breaking change) + +3.12.18 / 2019-07-27 + * remove configstore dependency + +3.12.17 / 2019-07-14 + * Fix #167: '>' in attribute value + +3.12.16 / 2019-03-23 + * Support a new option "stopNodes". (#150) +Accept the list of tags which are not required to be parsed. Instead, all the nested tag and data will be assigned as string. + * Don't show post-install message + +3.12.12 / 2019-01-11 + * fix : IE parseInt, parseFloat error + +3.12.11 / 2018-12-24 + * fix #132: "/" should not be parsed as boolean attr in case of self closing tags + +3.12.9 / 2018-11-23 + * fix #129 : validator should not fail when an atrribute name is 'length' + +3.12.8 / 2018-11-22 + * fix #128 : use 'attrValueProcessor' to process attribute value in json2xml parser + +3.12.6 / 2018-11-10 + * Fix #126: check for type + +3.12.4 / 2018-09-12 + * Fix: include tasks in npm package + +3.12.3 / 2018-09-12 + * Fix CLI issue raised in last PR + +3.12.2 / 2018-09-11 + * Fix formatting for JSON to XML output + * Migrate to webpack (PR merged) + * fix cli (PR merged) + +3.12.0 / 2018-08-06 + * Support hexadecimal values + * Support true number parsing + +3.11.2 / 2018-07-23 + * Update Demo for more options + * Update license information + * Update readme for formatting, users, and spelling mistakes + * Add missing typescript definition for j2xParser + * refactoring: change filenames + +3.11.1 / 2018-06-05 + * fix #93: read the text after self closing tag + +3.11.0 / 2018-05-20 + * return defaultOptions if there are not options in buildOptions function + * added localeRange declaration in parser.d.ts + * Added support of cyrillic characters in validator XML + * fixed bug in validator work when XML data with byte order marker + +3.10.0 / 2018-05-13 + * Added support of cyrillic characters in parsing XML to JSON + +3.9.11 / 2018-05-09 + * fix https://github.com/NaturalIntelligence/fast-xml-parser/issues/80 fix nimn chars + * update package information + * fix https://github.com/NaturalIntelligence/fast-xml-parser/issues/86: json 2 xml parser : property with null value should be parsed to self closing tag. + * update online demo + * revert zombiejs to old version to support old version of node + * update dependencies + +3.3.10 / 2018-04-23 + * fix #77 : parse even if closing tag has space before '>' + * include all css & js lib in demo app + * remove babel dependencies until needed + +3.3.9 / 2018-04-18 + * fix #74 : TS2314 TypeScript compiler error + +3.3.8 / 2018-04-17 + * fix #73 : IE doesn't support Object.assign + +3.3.7 / 2018-04-14 + * fix: use let insted of const in for loop of validator + * Merge pull request + https://github.com/NaturalIntelligence/fast-xml-parser/issues/71 from bb/master + first draft of typings for typescript + https://github.com/NaturalIntelligence/fast-xml-parser/issues/69 + * Merge pull request + https://github.com/NaturalIntelligence/fast-xml-parser/issues/70 from bb/patch-1 + fix some typos in readme + +3.3.6 / 2018-03-21 + * change arrow functions to full notation for IE compatibility + +3.3.5 / 2018-03-15 + * fix https://github.com/NaturalIntelligence/fast-xml-parser/issues/67 : attrNodeName invalid behavior + * fix: remove decodeHTML char condition + +3.3.4 / 2018-03-14 + * remove dependency on "he" package + * refactor code to separate methods in separate files. + * draft code for transforming XML to json string. It is not officially documented due to performance issue. + +3.3.0 / 2018-03-05 + * use common default options for XML parsing for consistency. And add `parseToNimn` method. + * update nexttodo + * update README about XML to Nimn transformation and remove special notes about 3.x release + * update CONTRIBUTING.ms mentioning nexttodo + * add negative case for XML PIs + * validate xml processing instruction tags https://github.com/NaturalIntelligence/fast-xml-parser/issues/62 + * nimndata: handle array with object + * nimndata: node with nested node and text node + * nimndata: handle attributes and text node + * nimndata: add options, handle array + * add xml to nimn data converter + * x2j: direct access property with tagname + * update changelog + * fix validator when single quote presents in value enclosed with double quotes or vice versa + * Revert "remove unneded nimnjs dependency, move opencollective to devDependencies and replace it + with more light opencollective-postinstall" + This reverts commit d47aa7181075d82db4fee97fd8ea32b056fe3f46. + * Merge pull request: https://github.com/NaturalIntelligence/fast-xml-parser/issues/63 from HaroldPutman/suppress-undefined + Keep undefined nodes out of the XML output : This is useful when you are deleting nodes from the JSON and rewriting XML. + +3.2.4 / 2018-03-01 + * fix #59 fix in validator when open quote presents in attribute value + * Create nexttodo.md + * exclude static from bitHound tests + * add package lock + +3.2.3 / 2018-02-28 + * Merge pull request from Delagen/master: fix namespaces can contain the same characters as xml names + +3.2.2 / 2018-02-22 + * fix: attribute xmlns should not be removed if ignoreNameSpace is false + * create CONTRIBUTING.md + +3.2.1 / 2018-02-17 + * fix: empty attribute should be parsed + +3.2.0 / 2018-02-16 + * Merge pull request : Dev to Master + * Update README and version + * j2x:add performance test + * j2x: Remove extra empty line before closing tag + * j2x: suppress empty nodes to self closing node if configured + * j2x: provide option to give indentation depth + * j2x: make optional formatting + * j2x: encodeHTMLchat + * j2x: handle cdata tag + * j2x: handle grouped attributes + * convert json to xml + - nested object + - array + - attributes + - text value + * small refactoring + * Merge pull request: Update cli.js to let user validate XML file or data + * Add option for rendering CDATA as separate property + +3.0.1 / 2018-02-09 + * fix CRLF: replace it with single space in attributes value only. + +3.0.0 / 2018-02-08 + * change online tool with new changes + * update info about new options + * separate tag value processing to separate function + * make HTML decoding optional + * give an option to allow boolean attributes + * change cli options as per v3 + * Correct comparison table format on README + * update v3 information + * some performance improvement changes + * Make regex object local to the method and move some common methods to util + * Change parser to + - handle multiple instances of CDATA + - make triming of value optionals + - HTML decode attribute and text value + - refactor code to separate files + * Ignore newline chars without RE (in validator) + * validate for XML prolog + * Validate DOCTYPE without RE + * Update validator to return error response + * Update README to add detail about V3 + * Separate xmlNode model class + * include vscode debug config + * fix for repeated object + * fix attribute regex for boolean attributes + * Fix validator for invalid attributes +2.9.4 / 2018-02-02 + * Merge pull request: Decode HTML characters + * refactor source folder name + * ignore bundle / browser js to be published to npm +2.9.3 / 2018-01-26 + * Merge pull request: Correctly remove CRLF line breaks + * Enable to parse attribute in online editor + * Fix testing demo app test + * Describe parsing options + * Add options for online demo +2.9.2 / 2018-01-18 + * Remove check if tag starting with "XML" + * Fix: when there are spaces before / after CDATA + +2.9.1 / 2018-01-16 + * Fix: newline should be replaced with single space + * Fix: for single and multiline comments + * validate xml with CDATA + * Fix: the issue when there is no space between 2 attributes + * Fix: https://github.com/NaturalIntelligence/fast-xml-parser/issues/33: when there is newline char in attr val, it doesn't parse + * Merge pull request: fix ignoreNamespace + * fix: don't wrap attributes if only namespace attrs + * fix: use portfinder for run tests, update deps + * fix: don't treat namespaces as attributes when ignoreNamespace enabled + +2.9.0 / 2018-01-10 + * Rewrite the validator to handle large files. + Ignore DOCTYPE validation. + * Fix: When attribute value has equal sign + +2.8.3 / 2017-12-15 + * Fix: when a tag has value along with subtags + +2.8.2 / 2017-12-04 + * Fix value parsing for IE + +2.8.1 / 2017-12-01 + * fix: validator should return false instead of err when invalid XML + +2.8.0 / 2017-11-29 + * Add CLI option to ignore value conversion + * Fix variable name when filename is given on CLI + * Update CLI help text + * Merge pull request: xml2js: Accept standard input + * Test Node 8 + * Update dependencies + * Bundle readToEnd + * Add ability to read from standard input + +2.7.4 / 2017-09-22 + * Merge pull request: Allow wrap attributes with subobject to compatible with other parsers output + +2.7.3 / 2017-08-02 + * fix: handle CDATA with regx + +2.7.2 / 2017-07-30 + * Change travis config for yarn caching + * fix validator: when tag property is same as array property + * Merge pull request: Failing test case in validator for valid SVG + +2.7.1 / 2017-07-26 + * Fix: Handle val 0 + +2.7.0 / 2017-07-25 + * Fix test for arrayMode + * Merge pull request: Add arrayMode option to parse any nodes as arrays + +2.6.0 / 2017-07-14 + * code improvement + * Add unit tests for value conversion for attr + * Merge pull request: option of an attribute value conversion to a number (textAttrConversion) the same way as the textNodeConversion option does. Default value is false. + +2.5.1 / 2017-07-01 + * Fix XML element name pattern + * Fix XML element name pattern while parsing + * Fix validation for xml tag element + +2.5.0 / 2017-06-25 + * Improve Validator performance + * update attr matching regex + * Add perf tests + * Improve atrr regex to handle all cases + +2.4.4 / 2017-06-08 + * Bug fix: when an attribute has single or double quote in value + +2.4.3 / 2017-06-05 + * Bug fix: when multiple CDATA tags are given + * Merge pull request: add option "textNodeConversion" + * add option "textNodeConversion" + +2.4.1 / 2017-04-14 + * fix tests + * Bug fix: preserve initial space of node value + * Handle CDATA + +2.3.1 / 2017-03-15 + * Bug fix: when single self closing tag + * Merge pull request: fix .codeclimate.yml + * Update .codeclimate.yml - Fixed config so it does not error anymore. + * Update .codeclimate.yml + +2.3.0 / 2017-02-26 + * Code improvement + * add bithound config + * Update usage + * Update travis to generate bundle js before running tests + * 1.Browserify, 2. add more tests for validator + * Add validator + * Fix CLI default parameter bug + +2.2.1 / 2017-02-05 + * Bug fix: CLI default option diff --git a/node_modules/fast-xml-parser/LICENSE b/node_modules/fast-xml-parser/LICENSE new file mode 100644 index 0000000..d7da622 --- /dev/null +++ b/node_modules/fast-xml-parser/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2017 Amit Kumar Gupta + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/node_modules/fast-xml-parser/README.md b/node_modules/fast-xml-parser/README.md new file mode 100644 index 0000000..58111b7 --- /dev/null +++ b/node_modules/fast-xml-parser/README.md @@ -0,0 +1,203 @@ +# [fast-xml-parser](https://www.npmjs.com/package/fast-xml-parser) +[![Backers on Open Collective](https://opencollective.com/fast-xml-parser/backers/badge.svg)](#backers) [![Sponsors on Open Collective](https://opencollective.com/fast-xml-parser/sponsors/badge.svg)](#sponsors) [![Known Vulnerabilities](https://snyk.io/test/github/naturalintelligence/fast-xml-parser/badge.svg)](https://snyk.io/test/github/naturalintelligence/fast-xml-parser) +[![NPM quality][quality-image]][quality-url] +[![Coverage Status](https://coveralls.io/repos/github/NaturalIntelligence/fast-xml-parser/badge.svg?branch=master)](https://coveralls.io/github/NaturalIntelligence/fast-xml-parser?branch=master) +[Try me](https://naturalintelligence.github.io/fast-xml-parser/) +[![NPM total downloads](https://img.shields.io/npm/dt/fast-xml-parser.svg)](https://npm.im/fast-xml-parser) + +[quality-image]: http://npm.packagequality.com/shield/fast-xml-parser.svg?style=flat-square +[quality-url]: http://packagequality.com/#?package=fast-xml-parser + + +Validate XML, Parse XML to JS Object, or Build XML from JS Object without C/C++ based libraries and no callback. + +> Looking for maintainers + +Support this project by becoming a **Sponsor**. + +Click on Sponsor button above or +
        + + + Stubmatic donate button + + +### Sponsors + + + + + + + + + + + + + + +Check [ThankYouBackers](https://github.com/NaturalIntelligence/ThankYouBackers) for our supporters + +## Users + + + + + + + + + + + + + + + +Check the list of all known users [here](./USERs.md); + +The list of users is collected either from the list published by Github, cummunicated directly through mails/chat , or from other resources. If you feel that your name in the above list is incorrectly published or you're not the user of this library anymore then you can inform us to remove it. We'll do the necessary changes ASAP. + +## Main Features + +FXP logo + +* Validate XML data syntactically +* Parse XML to JS Object +* Build XML from JS Object +* Works with node packages, in browser, and in CLI (press try me button above for demo) +* Faster than any other pure JS implementation. +* It can handle big files (tested up to 100mb). +* Controlled parsing using various options +* XML Entities, HTML entities, and DOCTYPE entites are supported. +* unpaired tags (Eg `
        ` in HTML), stop nodes (Eg ` +: + +``` + +Check lib folder for different browser bundles + +| Bundle Name | Size | +| ------------------ | ---- | +| fxbuilder.min.js | 5.2K | +| fxparser.js | 50K | +| fxparser.min.js | 17K | +| fxp.min.js | 22K | +| fxvalidator.min.js | 5.7K | + +### Documents +**v3** +* [documents](./docs/v3/docs.md) + +**v4** +1. [GettingStarted.md](./docs/v4/1.GettingStarted.md) +2. [XML Parser](./docs/v4/2.XMLparseOptions.md) +3. [XML Builder](./docs/v4/3.XMLBuilder.md) +4. [XML Validator](./docs/v4/4.XMLValidator.md) +5. [Entities](./docs/v4/5.Entities.md) +6. [HTML Document Parsing](./docs/v4/6.HTMLParsing.md) +7. [PI Tag processing](./docs/v4/7.PITags.md) +## Performance + +### XML Parser + +![](./docs/imgs/XMLParser_v4.png) +* Y-axis: requests per second +* X-axis: File size + +**Large files** +![](./docs/imgs/XMLParser_large_v4.png) +* Y-axis: requests per second +* X-axis: File size +### XML Builder + +![](./docs/imgs/XMLBuilder_v4.png) +* Y-axis: requests per second + +negative means error + +[![](static/img/ni_ads_ads.gif)](https://github.com/NaturalIntelligence/ads/) + +## Our other projects and research you must try + +* **[BigBit standard](https://github.com/amitguptagwl/bigbit)** : + * Single text encoding to replace UTF-8, UTF-16, UTF-32 and more with less memory. + * Single Numeric datatype alternative of integer, float, double, long, decimal and more without precision loss. +* **[Cytorus](https://github.com/NaturalIntelligence/cytorus)**: Be specific and flexible while running E2E tests. + * Run tests only for a particular User Story + * Run tests for a route or from a route + * Customizable reporting + * Central dashboard for better monitoring + * Options to integrate E2E tests with Jira, Github etc using Central dashboard `Tian`. +* **[Stubmatic](https://github.com/NaturalIntelligence/Stubmatic)** : Create fake webservices, DynamoDB or S3 servers, Manage fake/mock stub data, Or fake any HTTP(s) call. + + +## Supporters +### Contributors + +This project exists thanks to [all](graphs/contributors) the people who contribute. [[Contribute](docs/CONTRIBUTING.md)]. + + + + +### Backers + +Thank you to all our backers! 🙏 [[Become a backer](https://opencollective.com/fast-xml-parser#backer)] + + + + + +# License +* MIT License + +![Donate $5](static/img/donation_quote.png) diff --git a/node_modules/fast-xml-parser/package.json b/node_modules/fast-xml-parser/package.json new file mode 100644 index 0000000..ba09d1f --- /dev/null +++ b/node_modules/fast-xml-parser/package.json @@ -0,0 +1,68 @@ +{ + "name": "fast-xml-parser", + "version": "4.1.3", + "description": "Validate XML, Parse XML, Build XML without C/C++ based libraries", + "main": "./src/fxp.js", + "scripts": { + "test": "nyc --reporter=lcov --reporter=text jasmine spec/*spec.js", + "unit": "jasmine", + "coverage": "nyc report --reporter html --reporter text -t .nyc_output --report-dir .nyc_output/summary", + "perf": "node ./benchmark/perfTest3.js", + "lint": "eslint src/*.js spec/*.js", + "bundle": "webpack --config webpack-prod.config.js", + "prettier": "prettier --write src/**/*.js", + "publish-please": "publish-please", + "checkReadiness": "publish-please --dry-run" + }, + "bin": { + "fxparser": "./src/cli/cli.js" + }, + "repository": { + "type": "git", + "url": "https://github.com/NaturalIntelligence/fast-xml-parser" + }, + "keywords": [ + "fast", + "xml", + "json", + "parser", + "xml2js", + "x2js", + "xml2json", + "js", + "cli", + "validator", + "validate", + "transformer", + "assert", + "js2xml", + "json2xml", + "html" + ], + "author": "Amit Gupta (https://amitkumargupta.work/)", + "license": "MIT", + "devDependencies": { + "@babel/core": "^7.13.10", + "@babel/plugin-transform-runtime": "^7.13.10", + "@babel/preset-env": "^7.13.10", + "@babel/register": "^7.13.8", + "babel-loader": "^8.2.2", + "cytorus": "^0.2.9", + "eslint": "^8.3.0", + "he": "^1.2.0", + "jasmine": "^3.6.4", + "nyc": "^15.1.0", + "prettier": "^1.19.1", + "publish-please": "^5.5.2", + "webpack": "^5.64.4", + "webpack-cli": "^4.9.1" + }, + "typings": "src/fxp.d.ts", + "funding": { + "type": "paypal", + "url": "https://paypal.me/naturalintelligence" + }, + "dependencies": { + "strnum": "^1.0.5" + } +} diff --git a/node_modules/fast-xml-parser/src/cli/cli.js b/node_modules/fast-xml-parser/src/cli/cli.js new file mode 100755 index 0000000..984534c --- /dev/null +++ b/node_modules/fast-xml-parser/src/cli/cli.js @@ -0,0 +1,93 @@ +#!/usr/bin/env node +'use strict'; +/*eslint-disable no-console*/ +const fs = require('fs'); +const path = require('path'); +const {XMLParser, XMLValidator} = require("../fxp"); +const readToEnd = require('./read').readToEnd; + +const version = require('./../../package.json').version; +if (process.argv[2] === '--help' || process.argv[2] === '-h') { + console.log(require("./man")); +} else if (process.argv[2] === '--version') { + console.log(version); +} else { + const options = { + removeNSPrefix: true, + ignoreAttributes: false, + parseTagValue: true, + parseAttributeValue: true, + }; + let fileName = ''; + let outputFileName; + let validate = false; + let validateOnly = false; + for (let i = 2; i < process.argv.length; i++) { + if (process.argv[i] === '-ns') { + options.removeNSPrefix = false; + } else if (process.argv[i] === '-a') { + options.ignoreAttributes = true; + } else if (process.argv[i] === '-c') { + options.parseTagValue = false; + options.parseAttributeValue = false; + } else if (process.argv[i] === '-o') { + outputFileName = process.argv[++i]; + } else if (process.argv[i] === '-v') { + validate = true; + } else if (process.argv[i] === '-V') { + validateOnly = true; + } else { + //filename + fileName = process.argv[i]; + } + } + + const callback = function(xmlData) { + let output = ''; + if (validate) { + const parser = new XMLParser(options); + output = parser.parse(xmlData,validate); + } else if (validateOnly) { + output = XMLValidator.validate(xmlData); + process.exitCode = output === true ? 0 : 1; + } else { + const parser = new XMLParser(options); + output = JSON.stringify(parser.parse(xmlData,validate), null, 4); + } + if (outputFileName) { + writeToFile(outputFileName, output); + } else { + console.log(output); + } + }; + + try { + + if (!fileName) { + readToEnd(process.stdin, function(err, data) { + if (err) { + throw err; + } + callback(data.toString()); + }); + } else { + fs.readFile(fileName, function(err, data) { + if (err) { + throw err; + } + callback(data.toString()); + }); + } + } catch (e) { + console.log('Seems an invalid file or stream.' + e); + } +} + +function writeToFile(fileName, data) { + fs.writeFile(fileName, data, function(err) { + if (err) { + throw err; + } + console.log('JSON output has been written to ' + fileName); + }); +} diff --git a/node_modules/fast-xml-parser/src/cli/man.js b/node_modules/fast-xml-parser/src/cli/man.js new file mode 100644 index 0000000..89947cc --- /dev/null +++ b/node_modules/fast-xml-parser/src/cli/man.js @@ -0,0 +1,12 @@ +module.exports = `Fast XML Parser 4.0.0 +---------------- +$ fxparser [-ns|-a|-c|-v|-V] [-o outputfile.json] +$ cat xmlfile.xml | fxparser [-ns|-a|-c|-v|-V] [-o outputfile.json] + +Options +---------------- +-ns: remove namespace from tag and atrribute name. +-a: don't parse attributes. +-c: parse values to premitive type. +-v: validate before parsing. +-V: validate only.` \ No newline at end of file diff --git a/node_modules/fast-xml-parser/src/cli/read.js b/node_modules/fast-xml-parser/src/cli/read.js new file mode 100644 index 0000000..642da52 --- /dev/null +++ b/node_modules/fast-xml-parser/src/cli/read.js @@ -0,0 +1,92 @@ +'use strict'; + +// Copyright 2013 Timothy J Fontaine +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the 'Software'), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE + +/* + +Read any stream all the way to the end and trigger a single cb + +const http = require('http'); + +const rte = require('readtoend'); + +http.get('http://nodejs.org', function(response) { + rte.readToEnd(response, function(err, body) { + console.log(body); + }); +}); + +*/ + +let stream = require('stream'); +const util = require('util'); + +if (!stream.Transform) { + stream = require('readable-stream'); +} + +function ReadToEnd(opts) { + if (!(this instanceof ReadToEnd)) { + return new ReadToEnd(opts); + } + + stream.Transform.call(this, opts); + + this._rte_encoding = opts.encoding || 'utf8'; + + this._buff = ''; +} + +module.exports = ReadToEnd; +util.inherits(ReadToEnd, stream.Transform); + +ReadToEnd.prototype._transform = function(chunk, encoding, done) { + this._buff += chunk.toString(this._rte_encoding); + this.push(chunk); + done(); +}; + +ReadToEnd.prototype._flush = function(done) { + this.emit('complete', undefined, this._buff); + done(); +}; + +ReadToEnd.readToEnd = function(stream, options, cb) { + if (!cb) { + cb = options; + options = {}; + } + + const dest = new ReadToEnd(options); + + stream.pipe(dest); + + stream.on('error', function(err) { + stream.unpipe(dest); + cb(err); + }); + + dest.on('complete', cb); + + dest.resume(); + + return dest; +}; diff --git a/node_modules/fast-xml-parser/src/fxp.d.ts b/node_modules/fast-xml-parser/src/fxp.d.ts new file mode 100644 index 0000000..62237e5 --- /dev/null +++ b/node_modules/fast-xml-parser/src/fxp.d.ts @@ -0,0 +1,99 @@ +type X2jOptions = { + preserveOrder: boolean; + attributeNamePrefix: string; + attributesGroupName: false | string; + textNodeName: string; + ignoreAttributes: boolean; + removeNSPrefix: boolean; + allowBooleanAttributes: boolean; + parseTagValue: boolean; + parseAttributeValue: boolean; + trimValues: boolean; + cdataPropName: false | string; + commentPropName: false | string; + /** +Control how tag value should be parsed. Called only if tag value is not empty + +@returns {undefined|null} `undefined` or `null` to set original value. +@returns {unknown} +1. Different value or value with different data type to set new value.
        +2. Same value to set parsed value if `parseTagValue: true`. + */ + tagValueProcessor: (tagName: string, tagValue: string, jPath: string, hasAttributes: boolean, isLeafNode: boolean) => unknown; + attributeValueProcessor: (attrName: string, attrValue: string, jPath: string) => unknown; + numberParseOptions: strnumOptions; + stopNodes: string[]; + unpairedTags: string[]; + alwaysCreateTextNode: boolean; + isArray: (tagName: string, jPath: string, isLeafNode: boolean, isAttribute: boolean) => boolean; + processEntities: boolean; + htmlEntities: boolean; + ignoreDeclaration: boolean; + ignorePiTags: boolean; + transformTagName: ((tagName: string) => string) | false; + transformAttributeName: ((attributeName: string) => string) | false; +}; +type strnumOptions = { + hex: boolean; + leadingZeros: boolean, + skipLike?: RegExp, + eNotation?: boolean +} +type X2jOptionsOptional = Partial; +type validationOptions = { + allowBooleanAttributes: boolean; + unpairedTags: string[]; +}; +type validationOptionsOptional = Partial; + +type XmlBuilderOptions = { + attributeNamePrefix: string; + attributesGroupName: false | string; + textNodeName: string; + ignoreAttributes: boolean; + cdataPropName: false | string; + commentPropName: false | string; + format: boolean; + indentBy: string; + arrayNodeName: string; + suppressEmptyNode: boolean; + suppressUnpairedNode: boolean; + suppressBooleanAttributes: boolean; + preserveOrder: boolean; + unpairedTags: string[]; + stopNodes: string[]; + tagValueProcessor: (name: string, value: unknown) => string; + attributeValueProcessor: (name: string, value: unknown) => string; + processEntities: boolean; +}; +type XmlBuilderOptionsOptional = Partial; + +type ESchema = string | object | Array; + +type ValidationError = { + err: { + code: string; + msg: string, + line: number, + col: number + }; +}; + +export class XMLParser { + constructor(options?: X2jOptionsOptional); + parse(xmlData: string | Buffer ,validationOptions?: validationOptionsOptional | boolean): any; + /** + * Add Entity which is not by default supported by this library + * @param entityIndentifier {string} Eg: 'ent' for &ent; + * @param entityValue {string} Eg: '\r' + */ + addEntity(entityIndentifier: string, entityValue: string): void; +} + +export class XMLValidator{ + static validate( xmlData: string, options?: validationOptionsOptional): true | ValidationError; +} +export class XMLBuilder { + constructor(options: XmlBuilderOptionsOptional); + build(jObj: any): any; +} diff --git a/node_modules/fast-xml-parser/src/fxp.js b/node_modules/fast-xml-parser/src/fxp.js new file mode 100644 index 0000000..9cfa0ac --- /dev/null +++ b/node_modules/fast-xml-parser/src/fxp.js @@ -0,0 +1,11 @@ +'use strict'; + +const validator = require('./validator'); +const XMLParser = require('./xmlparser/XMLParser'); +const XMLBuilder = require('./xmlbuilder/json2xml'); + +module.exports = { + XMLParser: XMLParser, + XMLValidator: validator, + XMLBuilder: XMLBuilder +} \ No newline at end of file diff --git a/node_modules/fast-xml-parser/src/util.js b/node_modules/fast-xml-parser/src/util.js new file mode 100644 index 0000000..df0a60d --- /dev/null +++ b/node_modules/fast-xml-parser/src/util.js @@ -0,0 +1,72 @@ +'use strict'; + +const nameStartChar = ':A-Za-z_\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD'; +const nameChar = nameStartChar + '\\-.\\d\\u00B7\\u0300-\\u036F\\u203F-\\u2040'; +const nameRegexp = '[' + nameStartChar + '][' + nameChar + ']*' +const regexName = new RegExp('^' + nameRegexp + '$'); + +const getAllMatches = function(string, regex) { + const matches = []; + let match = regex.exec(string); + while (match) { + const allmatches = []; + allmatches.startIndex = regex.lastIndex - match[0].length; + const len = match.length; + for (let index = 0; index < len; index++) { + allmatches.push(match[index]); + } + matches.push(allmatches); + match = regex.exec(string); + } + return matches; +}; + +const isName = function(string) { + const match = regexName.exec(string); + return !(match === null || typeof match === 'undefined'); +}; + +exports.isExist = function(v) { + return typeof v !== 'undefined'; +}; + +exports.isEmptyObject = function(obj) { + return Object.keys(obj).length === 0; +}; + +/** + * Copy all the properties of a into b. + * @param {*} target + * @param {*} a + */ +exports.merge = function(target, a, arrayMode) { + if (a) { + const keys = Object.keys(a); // will return an array of own properties + const len = keys.length; //don't make it inline + for (let i = 0; i < len; i++) { + if (arrayMode === 'strict') { + target[keys[i]] = [ a[keys[i]] ]; + } else { + target[keys[i]] = a[keys[i]]; + } + } + } +}; +/* exports.merge =function (b,a){ + return Object.assign(b,a); +} */ + +exports.getValue = function(v) { + if (exports.isExist(v)) { + return v; + } else { + return ''; + } +}; + +// const fakeCall = function(a) {return a;}; +// const fakeCallNoReturn = function() {}; + +exports.isName = isName; +exports.getAllMatches = getAllMatches; +exports.nameRegexp = nameRegexp; diff --git a/node_modules/fast-xml-parser/src/validator.js b/node_modules/fast-xml-parser/src/validator.js new file mode 100644 index 0000000..11b051b --- /dev/null +++ b/node_modules/fast-xml-parser/src/validator.js @@ -0,0 +1,423 @@ +'use strict'; + +const util = require('./util'); + +const defaultOptions = { + allowBooleanAttributes: false, //A tag can have attributes without any value + unpairedTags: [] +}; + +//const tagsPattern = new RegExp("<\\/?([\\w:\\-_\.]+)\\s*\/?>","g"); +exports.validate = function (xmlData, options) { + options = Object.assign({}, defaultOptions, options); + + //xmlData = xmlData.replace(/(\r\n|\n|\r)/gm,"");//make it single line + //xmlData = xmlData.replace(/(^\s*<\?xml.*?\?>)/g,"");//Remove XML starting tag + //xmlData = xmlData.replace(/()/g,"");//Remove DOCTYPE + const tags = []; + let tagFound = false; + + //indicates that the root tag has been closed (aka. depth 0 has been reached) + let reachedRoot = false; + + if (xmlData[0] === '\ufeff') { + // check for byte order mark (BOM) + xmlData = xmlData.substr(1); + } + + for (let i = 0; i < xmlData.length; i++) { + + if (xmlData[i] === '<' && xmlData[i+1] === '?') { + i+=2; + i = readPI(xmlData,i); + if (i.err) return i; + }else if (xmlData[i] === '<') { + //starting of tag + //read until you reach to '>' avoiding any '>' in attribute value + let tagStartPos = i; + i++; + + if (xmlData[i] === '!') { + i = readCommentAndCDATA(xmlData, i); + continue; + } else { + let closingTag = false; + if (xmlData[i] === '/') { + //closing tag + closingTag = true; + i++; + } + //read tagname + let tagName = ''; + for (; i < xmlData.length && + xmlData[i] !== '>' && + xmlData[i] !== ' ' && + xmlData[i] !== '\t' && + xmlData[i] !== '\n' && + xmlData[i] !== '\r'; i++ + ) { + tagName += xmlData[i]; + } + tagName = tagName.trim(); + //console.log(tagName); + + if (tagName[tagName.length - 1] === '/') { + //self closing tag without attributes + tagName = tagName.substring(0, tagName.length - 1); + //continue; + i--; + } + if (!validateTagName(tagName)) { + let msg; + if (tagName.trim().length === 0) { + msg = "Invalid space after '<'."; + } else { + msg = "Tag '"+tagName+"' is an invalid name."; + } + return getErrorObject('InvalidTag', msg, getLineNumberForPosition(xmlData, i)); + } + + const result = readAttributeStr(xmlData, i); + if (result === false) { + return getErrorObject('InvalidAttr', "Attributes for '"+tagName+"' have open quote.", getLineNumberForPosition(xmlData, i)); + } + let attrStr = result.value; + i = result.index; + + if (attrStr[attrStr.length - 1] === '/') { + //self closing tag + const attrStrStart = i - attrStr.length; + attrStr = attrStr.substring(0, attrStr.length - 1); + const isValid = validateAttributeString(attrStr, options); + if (isValid === true) { + tagFound = true; + //continue; //text may presents after self closing tag + } else { + //the result from the nested function returns the position of the error within the attribute + //in order to get the 'true' error line, we need to calculate the position where the attribute begins (i - attrStr.length) and then add the position within the attribute + //this gives us the absolute index in the entire xml, which we can use to find the line at last + return getErrorObject(isValid.err.code, isValid.err.msg, getLineNumberForPosition(xmlData, attrStrStart + isValid.err.line)); + } + } else if (closingTag) { + if (!result.tagClosed) { + return getErrorObject('InvalidTag', "Closing tag '"+tagName+"' doesn't have proper closing.", getLineNumberForPosition(xmlData, i)); + } else if (attrStr.trim().length > 0) { + return getErrorObject('InvalidTag', "Closing tag '"+tagName+"' can't have attributes or invalid starting.", getLineNumberForPosition(xmlData, tagStartPos)); + } else { + const otg = tags.pop(); + if (tagName !== otg.tagName) { + let openPos = getLineNumberForPosition(xmlData, otg.tagStartPos); + return getErrorObject('InvalidTag', + "Expected closing tag '"+otg.tagName+"' (opened in line "+openPos.line+", col "+openPos.col+") instead of closing tag '"+tagName+"'.", + getLineNumberForPosition(xmlData, tagStartPos)); + } + + //when there are no more tags, we reached the root level. + if (tags.length == 0) { + reachedRoot = true; + } + } + } else { + const isValid = validateAttributeString(attrStr, options); + if (isValid !== true) { + //the result from the nested function returns the position of the error within the attribute + //in order to get the 'true' error line, we need to calculate the position where the attribute begins (i - attrStr.length) and then add the position within the attribute + //this gives us the absolute index in the entire xml, which we can use to find the line at last + return getErrorObject(isValid.err.code, isValid.err.msg, getLineNumberForPosition(xmlData, i - attrStr.length + isValid.err.line)); + } + + //if the root level has been reached before ... + if (reachedRoot === true) { + return getErrorObject('InvalidXml', 'Multiple possible root nodes found.', getLineNumberForPosition(xmlData, i)); + } else if(options.unpairedTags.indexOf(tagName) !== -1){ + //don't push into stack + } else { + tags.push({tagName, tagStartPos}); + } + tagFound = true; + } + + //skip tag text value + //It may include comments and CDATA value + for (i++; i < xmlData.length; i++) { + if (xmlData[i] === '<') { + if (xmlData[i + 1] === '!') { + //comment or CADATA + i++; + i = readCommentAndCDATA(xmlData, i); + continue; + } else if (xmlData[i+1] === '?') { + i = readPI(xmlData, ++i); + if (i.err) return i; + } else{ + break; + } + } else if (xmlData[i] === '&') { + const afterAmp = validateAmpersand(xmlData, i); + if (afterAmp == -1) + return getErrorObject('InvalidChar', "char '&' is not expected.", getLineNumberForPosition(xmlData, i)); + i = afterAmp; + }else{ + if (reachedRoot === true && !isWhiteSpace(xmlData[i])) { + return getErrorObject('InvalidXml', "Extra text at the end", getLineNumberForPosition(xmlData, i)); + } + } + } //end of reading tag text value + if (xmlData[i] === '<') { + i--; + } + } + } else { + if ( isWhiteSpace(xmlData[i])) { + continue; + } + return getErrorObject('InvalidChar', "char '"+xmlData[i]+"' is not expected.", getLineNumberForPosition(xmlData, i)); + } + } + + if (!tagFound) { + return getErrorObject('InvalidXml', 'Start tag expected.', 1); + }else if (tags.length == 1) { + return getErrorObject('InvalidTag', "Unclosed tag '"+tags[0].tagName+"'.", getLineNumberForPosition(xmlData, tags[0].tagStartPos)); + }else if (tags.length > 0) { + return getErrorObject('InvalidXml', "Invalid '"+ + JSON.stringify(tags.map(t => t.tagName), null, 4).replace(/\r?\n/g, '')+ + "' found.", {line: 1, col: 1}); + } + + return true; +}; + +function isWhiteSpace(char){ + return char === ' ' || char === '\t' || char === '\n' || char === '\r'; +} +/** + * Read Processing insstructions and skip + * @param {*} xmlData + * @param {*} i + */ +function readPI(xmlData, i) { + const start = i; + for (; i < xmlData.length; i++) { + if (xmlData[i] == '?' || xmlData[i] == ' ') { + //tagname + const tagname = xmlData.substr(start, i - start); + if (i > 5 && tagname === 'xml') { + return getErrorObject('InvalidXml', 'XML declaration allowed only at the start of the document.', getLineNumberForPosition(xmlData, i)); + } else if (xmlData[i] == '?' && xmlData[i + 1] == '>') { + //check if valid attribut string + i++; + break; + } else { + continue; + } + } + } + return i; +} + +function readCommentAndCDATA(xmlData, i) { + if (xmlData.length > i + 5 && xmlData[i + 1] === '-' && xmlData[i + 2] === '-') { + //comment + for (i += 3; i < xmlData.length; i++) { + if (xmlData[i] === '-' && xmlData[i + 1] === '-' && xmlData[i + 2] === '>') { + i += 2; + break; + } + } + } else if ( + xmlData.length > i + 8 && + xmlData[i + 1] === 'D' && + xmlData[i + 2] === 'O' && + xmlData[i + 3] === 'C' && + xmlData[i + 4] === 'T' && + xmlData[i + 5] === 'Y' && + xmlData[i + 6] === 'P' && + xmlData[i + 7] === 'E' + ) { + let angleBracketsCount = 1; + for (i += 8; i < xmlData.length; i++) { + if (xmlData[i] === '<') { + angleBracketsCount++; + } else if (xmlData[i] === '>') { + angleBracketsCount--; + if (angleBracketsCount === 0) { + break; + } + } + } + } else if ( + xmlData.length > i + 9 && + xmlData[i + 1] === '[' && + xmlData[i + 2] === 'C' && + xmlData[i + 3] === 'D' && + xmlData[i + 4] === 'A' && + xmlData[i + 5] === 'T' && + xmlData[i + 6] === 'A' && + xmlData[i + 7] === '[' + ) { + for (i += 8; i < xmlData.length; i++) { + if (xmlData[i] === ']' && xmlData[i + 1] === ']' && xmlData[i + 2] === '>') { + i += 2; + break; + } + } + } + + return i; +} + +const doubleQuote = '"'; +const singleQuote = "'"; + +/** + * Keep reading xmlData until '<' is found outside the attribute value. + * @param {string} xmlData + * @param {number} i + */ +function readAttributeStr(xmlData, i) { + let attrStr = ''; + let startChar = ''; + let tagClosed = false; + for (; i < xmlData.length; i++) { + if (xmlData[i] === doubleQuote || xmlData[i] === singleQuote) { + if (startChar === '') { + startChar = xmlData[i]; + } else if (startChar !== xmlData[i]) { + //if vaue is enclosed with double quote then single quotes are allowed inside the value and vice versa + } else { + startChar = ''; + } + } else if (xmlData[i] === '>') { + if (startChar === '') { + tagClosed = true; + break; + } + } + attrStr += xmlData[i]; + } + if (startChar !== '') { + return false; + } + + return { + value: attrStr, + index: i, + tagClosed: tagClosed + }; +} + +/** + * Select all the attributes whether valid or invalid. + */ +const validAttrStrRegxp = new RegExp('(\\s*)([^\\s=]+)(\\s*=)?(\\s*([\'"])(([\\s\\S])*?)\\5)?', 'g'); + +//attr, ="sd", a="amit's", a="sd"b="saf", ab cd="" + +function validateAttributeString(attrStr, options) { + //console.log("start:"+attrStr+":end"); + + //if(attrStr.trim().length === 0) return true; //empty string + + const matches = util.getAllMatches(attrStr, validAttrStrRegxp); + const attrNames = {}; + + for (let i = 0; i < matches.length; i++) { + if (matches[i][1].length === 0) { + //nospace before attribute name: a="sd"b="saf" + return getErrorObject('InvalidAttr', "Attribute '"+matches[i][2]+"' has no space in starting.", getPositionFromMatch(matches[i])) + } else if (matches[i][3] !== undefined && matches[i][4] === undefined) { + return getErrorObject('InvalidAttr', "Attribute '"+matches[i][2]+"' is without value.", getPositionFromMatch(matches[i])); + } else if (matches[i][3] === undefined && !options.allowBooleanAttributes) { + //independent attribute: ab + return getErrorObject('InvalidAttr', "boolean attribute '"+matches[i][2]+"' is not allowed.", getPositionFromMatch(matches[i])); + } + /* else if(matches[i][6] === undefined){//attribute without value: ab= + return { err: { code:"InvalidAttr",msg:"attribute " + matches[i][2] + " has no value assigned."}}; + } */ + const attrName = matches[i][2]; + if (!validateAttrName(attrName)) { + return getErrorObject('InvalidAttr', "Attribute '"+attrName+"' is an invalid name.", getPositionFromMatch(matches[i])); + } + if (!attrNames.hasOwnProperty(attrName)) { + //check for duplicate attribute. + attrNames[attrName] = 1; + } else { + return getErrorObject('InvalidAttr', "Attribute '"+attrName+"' is repeated.", getPositionFromMatch(matches[i])); + } + } + + return true; +} + +function validateNumberAmpersand(xmlData, i) { + let re = /\d/; + if (xmlData[i] === 'x') { + i++; + re = /[\da-fA-F]/; + } + for (; i < xmlData.length; i++) { + if (xmlData[i] === ';') + return i; + if (!xmlData[i].match(re)) + break; + } + return -1; +} + +function validateAmpersand(xmlData, i) { + // https://www.w3.org/TR/xml/#dt-charref + i++; + if (xmlData[i] === ';') + return -1; + if (xmlData[i] === '#') { + i++; + return validateNumberAmpersand(xmlData, i); + } + let count = 0; + for (; i < xmlData.length; i++, count++) { + if (xmlData[i].match(/\w/) && count < 20) + continue; + if (xmlData[i] === ';') + break; + return -1; + } + return i; +} + +function getErrorObject(code, message, lineNumber) { + return { + err: { + code: code, + msg: message, + line: lineNumber.line || lineNumber, + col: lineNumber.col, + }, + }; +} + +function validateAttrName(attrName) { + return util.isName(attrName); +} + +// const startsWithXML = /^xml/i; + +function validateTagName(tagname) { + return util.isName(tagname) /* && !tagname.match(startsWithXML) */; +} + +//this function returns the line number for the character at the given index +function getLineNumberForPosition(xmlData, index) { + const lines = xmlData.substring(0, index).split(/\r?\n/); + return { + line: lines.length, + + // column number is last line's length + 1, because column numbering starts at 1: + col: lines[lines.length - 1].length + 1 + }; +} + +//this function returns the position of the first character of match within attrStr +function getPositionFromMatch(match) { + return match.startIndex + match[1].length; +} diff --git a/node_modules/fast-xml-parser/src/xmlbuilder/json2xml.js b/node_modules/fast-xml-parser/src/xmlbuilder/json2xml.js new file mode 100644 index 0000000..8539655 --- /dev/null +++ b/node_modules/fast-xml-parser/src/xmlbuilder/json2xml.js @@ -0,0 +1,249 @@ +'use strict'; +//parse Empty Node as self closing node +const buildFromOrderedJs = require('./orderedJs2Xml'); + +const defaultOptions = { + attributeNamePrefix: '@_', + attributesGroupName: false, + textNodeName: '#text', + ignoreAttributes: true, + cdataPropName: false, + format: false, + indentBy: ' ', + suppressEmptyNode: false, + suppressUnpairedNode: true, + suppressBooleanAttributes: true, + tagValueProcessor: function(key, a) { + return a; + }, + attributeValueProcessor: function(attrName, a) { + return a; + }, + preserveOrder: false, + commentPropName: false, + unpairedTags: [], + entities: [ + { regex: new RegExp("&", "g"), val: "&" },//it must be on top + { regex: new RegExp(">", "g"), val: ">" }, + { regex: new RegExp("<", "g"), val: "<" }, + { regex: new RegExp("\'", "g"), val: "'" }, + { regex: new RegExp("\"", "g"), val: """ } + ], + processEntities: true, + stopNodes: [], + // transformTagName: false, + // transformAttributeName: false, +}; + +function Builder(options) { + this.options = Object.assign({}, defaultOptions, options); + if (this.options.ignoreAttributes || this.options.attributesGroupName) { + this.isAttribute = function(/*a*/) { + return false; + }; + } else { + this.attrPrefixLen = this.options.attributeNamePrefix.length; + this.isAttribute = isAttribute; + } + + this.processTextOrObjNode = processTextOrObjNode + + if (this.options.format) { + this.indentate = indentate; + this.tagEndChar = '>\n'; + this.newLine = '\n'; + } else { + this.indentate = function() { + return ''; + }; + this.tagEndChar = '>'; + this.newLine = ''; + } +} + +Builder.prototype.build = function(jObj) { + if(this.options.preserveOrder){ + return buildFromOrderedJs(jObj, this.options); + }else { + if(Array.isArray(jObj) && this.options.arrayNodeName && this.options.arrayNodeName.length > 1){ + jObj = { + [this.options.arrayNodeName] : jObj + } + } + return this.j2x(jObj, 0).val; + } +}; + +Builder.prototype.j2x = function(jObj, level) { + let attrStr = ''; + let val = ''; + for (let key in jObj) { + if (typeof jObj[key] === 'undefined') { + // supress undefined node + } else if (jObj[key] === null) { + if(key[0] === "?") val += this.indentate(level) + '<' + key + '?' + this.tagEndChar; + else val += this.indentate(level) + '<' + key + '/' + this.tagEndChar; + // val += this.indentate(level) + '<' + key + '/' + this.tagEndChar; + } else if (jObj[key] instanceof Date) { + val += this.buildTextValNode(jObj[key], key, '', level); + } else if (typeof jObj[key] !== 'object') { + //premitive type + const attr = this.isAttribute(key); + if (attr) { + attrStr += this.buildAttrPairStr(attr, '' + jObj[key]); + }else { + //tag value + if (key === this.options.textNodeName) { + let newval = this.options.tagValueProcessor(key, '' + jObj[key]); + val += this.replaceEntitiesValue(newval); + } else { + val += this.buildTextValNode(jObj[key], key, '', level); + } + } + } else if (Array.isArray(jObj[key])) { + //repeated nodes + const arrLen = jObj[key].length; + for (let j = 0; j < arrLen; j++) { + const item = jObj[key][j]; + if (typeof item === 'undefined') { + // supress undefined node + } else if (item === null) { + if(key[0] === "?") val += this.indentate(level) + '<' + key + '?' + this.tagEndChar; + else val += this.indentate(level) + '<' + key + '/' + this.tagEndChar; + // val += this.indentate(level) + '<' + key + '/' + this.tagEndChar; + } else if (typeof item === 'object') { + val += this.processTextOrObjNode(item, key, level) + } else { + val += this.buildTextValNode(item, key, '', level); + } + } + } else { + //nested node + if (this.options.attributesGroupName && key === this.options.attributesGroupName) { + const Ks = Object.keys(jObj[key]); + const L = Ks.length; + for (let j = 0; j < L; j++) { + attrStr += this.buildAttrPairStr(Ks[j], '' + jObj[key][Ks[j]]); + } + } else { + val += this.processTextOrObjNode(jObj[key], key, level) + } + } + } + return {attrStr: attrStr, val: val}; +}; + +Builder.prototype.buildAttrPairStr = function(attrName, val){ + val = this.options.attributeValueProcessor(attrName, '' + val); + val = this.replaceEntitiesValue(val); + if (this.options.suppressBooleanAttributes && val === "true") { + return ' ' + attrName; + } else return ' ' + attrName + '="' + val + '"'; +} + +function processTextOrObjNode (object, key, level) { + const result = this.j2x(object, level + 1); + if (object[this.options.textNodeName] !== undefined && Object.keys(object).length === 1) { + return this.buildTextValNode(object[this.options.textNodeName], key, result.attrStr, level); + } else { + return this.buildObjectNode(result.val, key, result.attrStr, level); + } +} + +Builder.prototype.buildObjectNode = function(val, key, attrStr, level) { + if(val === ""){ + if(key[0] === "?") return this.indentate(level) + '<' + key + attrStr+ '?' + this.tagEndChar; + else { + return this.indentate(level) + '<' + key + attrStr + this.closeTag(key) + this.tagEndChar; + } + }else{ + + let tagEndExp = '' + val + tagEndExp ); + } else if (this.options.commentPropName !== false && key === this.options.commentPropName && piClosingChar.length === 0) { + return this.indentate(level) + `` + this.newLine; + }else { + return ( + this.indentate(level) + '<' + key + attrStr + piClosingChar + this.tagEndChar + + val + + this.indentate(level) + tagEndExp ); + } + } +} + +Builder.prototype.closeTag = function(key){ + let closeTag = ""; + if(this.options.unpairedTags.indexOf(key) !== -1){ //unpaired + if(!this.options.suppressUnpairedNode) closeTag = "/" + }else if(this.options.suppressEmptyNode){ //empty + closeTag = "/"; + }else{ + closeTag = `>` + this.newLine; + }else if (this.options.commentPropName !== false && key === this.options.commentPropName) { + return this.indentate(level) + `` + this.newLine; + }else if(key[0] === "?") {//PI tag + return this.indentate(level) + '<' + key + attrStr+ '?' + this.tagEndChar; + }else{ + let textValue = this.options.tagValueProcessor(key, val); + textValue = this.replaceEntitiesValue(textValue); + + if( textValue === ''){ + return this.indentate(level) + '<' + key + attrStr + this.closeTag(key) + this.tagEndChar; + }else{ + return this.indentate(level) + '<' + key + attrStr + '>' + + textValue + + ' 0 && this.options.processEntities){ + for (let i=0; i 0) { + indentation = EOL; + } + return arrToStr(jArray, options, "", indentation); +} + +function arrToStr(arr, options, jPath, indentation) { + let xmlStr = ""; + let isPreviousElementTag = false; + + for (let i = 0; i < arr.length; i++) { + const tagObj = arr[i]; + const tagName = propName(tagObj); + let newJPath = ""; + if (jPath.length === 0) newJPath = tagName + else newJPath = `${jPath}.${tagName}`; + + if (tagName === options.textNodeName) { + let tagText = tagObj[tagName]; + if (!isStopNode(newJPath, options)) { + tagText = options.tagValueProcessor(tagName, tagText); + tagText = replaceEntitiesValue(tagText, options); + } + if (isPreviousElementTag) { + xmlStr += indentation; + } + xmlStr += tagText; + isPreviousElementTag = false; + continue; + } else if (tagName === options.cdataPropName) { + if (isPreviousElementTag) { + xmlStr += indentation; + } + xmlStr += ``; + isPreviousElementTag = false; + continue; + } else if (tagName === options.commentPropName) { + xmlStr += indentation + ``; + isPreviousElementTag = true; + continue; + } else if (tagName[0] === "?") { + const attStr = attr_to_str(tagObj[":@"], options); + const tempInd = tagName === "?xml" ? "" : indentation; + let piTextNodeName = tagObj[tagName][0][options.textNodeName]; + piTextNodeName = piTextNodeName.length !== 0 ? " " + piTextNodeName : ""; //remove extra spacing + xmlStr += tempInd + `<${tagName}${piTextNodeName}${attStr}?>`; + isPreviousElementTag = true; + continue; + } + let newIdentation = indentation; + if (newIdentation !== "") { + newIdentation += options.indentBy; + } + const attStr = attr_to_str(tagObj[":@"], options); + const tagStart = indentation + `<${tagName}${attStr}`; + const tagValue = arrToStr(tagObj[tagName], options, newJPath, newIdentation); + if (options.unpairedTags.indexOf(tagName) !== -1) { + if (options.suppressUnpairedNode) xmlStr += tagStart + ">"; + else xmlStr += tagStart + "/>"; + } else if ((!tagValue || tagValue.length === 0) && options.suppressEmptyNode) { + xmlStr += tagStart + "/>"; + } else if (tagValue && tagValue.endsWith(">")) { + xmlStr += tagStart + `>${tagValue}${indentation}`; + } else { + xmlStr += tagStart + ">"; + if (tagValue && indentation !== "" && (tagValue.includes("/>") || tagValue.includes("`; + } + isPreviousElementTag = true; + } + + return xmlStr; +} + +function propName(obj) { + const keys = Object.keys(obj); + for (let i = 0; i < keys.length; i++) { + const key = keys[i]; + if (key !== ":@") return key; + } +} + +function attr_to_str(attrMap, options) { + let attrStr = ""; + if (attrMap && !options.ignoreAttributes) { + for (let attr in attrMap) { + let attrVal = options.attributeValueProcessor(attr, attrMap[attr]); + attrVal = replaceEntitiesValue(attrVal, options); + if (attrVal === true && options.suppressBooleanAttributes) { + attrStr += ` ${attr.substr(options.attributeNamePrefix.length)}`; + } else { + attrStr += ` ${attr.substr(options.attributeNamePrefix.length)}="${attrVal}"`; + } + } + } + return attrStr; +} + +function isStopNode(jPath, options) { + jPath = jPath.substr(0, jPath.length - options.textNodeName.length - 1); + let tagName = jPath.substr(jPath.lastIndexOf(".") + 1); + for (let index in options.stopNodes) { + if (options.stopNodes[index] === jPath || options.stopNodes[index] === "*." + tagName) return true; + } + return false; +} + +function replaceEntitiesValue(textValue, options) { + if (textValue && textValue.length > 0 && options.processEntities) { + for (let i = 0; i < options.entities.length; i++) { + const entity = options.entities[i]; + textValue = textValue.replace(entity.regex, entity.val); + } + } + return textValue; +} +module.exports = toXml; diff --git a/node_modules/fast-xml-parser/src/xmlbuilder/prettifyJs2Xml.js b/node_modules/fast-xml-parser/src/xmlbuilder/prettifyJs2Xml.js new file mode 100644 index 0000000..e69de29 diff --git a/node_modules/fast-xml-parser/src/xmlparser/DocTypeReader.js b/node_modules/fast-xml-parser/src/xmlparser/DocTypeReader.js new file mode 100644 index 0000000..32d92f8 --- /dev/null +++ b/node_modules/fast-xml-parser/src/xmlparser/DocTypeReader.js @@ -0,0 +1,143 @@ +//TODO: handle comments +function readDocType(xmlData, i){ + + const entities = {}; + if( xmlData[i + 3] === 'O' && + xmlData[i + 4] === 'C' && + xmlData[i + 5] === 'T' && + xmlData[i + 6] === 'Y' && + xmlData[i + 7] === 'P' && + xmlData[i + 8] === 'E') + { + i = i+9; + let angleBracketsCount = 1; + let hasBody = false, comment = false; + let exp = ""; + for(;i') { //Read tag content + if(comment){ + if( xmlData[i - 1] === "-" && xmlData[i - 2] === "-"){ + comment = false; + angleBracketsCount--; + } + }else{ + angleBracketsCount--; + } + if (angleBracketsCount === 0) { + break; + } + }else if( xmlData[i] === '['){ + hasBody = true; + }else{ + exp += xmlData[i]; + } + } + if(angleBracketsCount !== 0){ + throw new Error(`Unclosed DOCTYPE`); + } + }else{ + throw new Error(`Invalid Tag instead of DOCTYPE`); + } + return {entities, i}; +} + +function readEntityExp(xmlData,i){ + //External entities are not supported + // + + //Parameter entities are not supported + // + + //Internal entities are supported + // + + //read EntityName + let entityName = ""; + for (; i < xmlData.length && (xmlData[i] !== "'" && xmlData[i] !== '"' ); i++) { + // if(xmlData[i] === " ") continue; + // else + entityName += xmlData[i]; + } + entityName = entityName.trim(); + if(entityName.indexOf(" ") !== -1) throw new Error("External entites are not supported"); + + //read Entity Value + const startChar = xmlData[i++]; + let val = "" + for (; i < xmlData.length && xmlData[i] !== startChar ; i++) { + val += xmlData[i]; + } + return [entityName, val, i]; +} + +function isComment(xmlData, i){ + if(xmlData[i+1] === '!' && + xmlData[i+2] === '-' && + xmlData[i+3] === '-') return true + return false +} +function isEntity(xmlData, i){ + if(xmlData[i+1] === '!' && + xmlData[i+2] === 'E' && + xmlData[i+3] === 'N' && + xmlData[i+4] === 'T' && + xmlData[i+5] === 'I' && + xmlData[i+6] === 'T' && + xmlData[i+7] === 'Y') return true + return false +} +function isElement(xmlData, i){ + if(xmlData[i+1] === '!' && + xmlData[i+2] === 'E' && + xmlData[i+3] === 'L' && + xmlData[i+4] === 'E' && + xmlData[i+5] === 'M' && + xmlData[i+6] === 'E' && + xmlData[i+7] === 'N' && + xmlData[i+8] === 'T') return true + return false +} + +function isAttlist(xmlData, i){ + if(xmlData[i+1] === '!' && + xmlData[i+2] === 'A' && + xmlData[i+3] === 'T' && + xmlData[i+4] === 'T' && + xmlData[i+5] === 'L' && + xmlData[i+6] === 'I' && + xmlData[i+7] === 'S' && + xmlData[i+8] === 'T') return true + return false +} +function isNotation(xmlData, i){ + if(xmlData[i+1] === '!' && + xmlData[i+2] === 'N' && + xmlData[i+3] === 'O' && + xmlData[i+4] === 'T' && + xmlData[i+5] === 'A' && + xmlData[i+6] === 'T' && + xmlData[i+7] === 'I' && + xmlData[i+8] === 'O' && + xmlData[i+9] === 'N') return true + return false +} + +module.exports = readDocType; \ No newline at end of file diff --git a/node_modules/fast-xml-parser/src/xmlparser/OptionsBuilder.js b/node_modules/fast-xml-parser/src/xmlparser/OptionsBuilder.js new file mode 100644 index 0000000..681a06d --- /dev/null +++ b/node_modules/fast-xml-parser/src/xmlparser/OptionsBuilder.js @@ -0,0 +1,44 @@ + +const defaultOptions = { + preserveOrder: false, + attributeNamePrefix: '@_', + attributesGroupName: false, + textNodeName: '#text', + ignoreAttributes: true, + removeNSPrefix: false, // remove NS from tag name or attribute name if true + allowBooleanAttributes: false, //a tag can have attributes without any value + //ignoreRootElement : false, + parseTagValue: true, + parseAttributeValue: false, + trimValues: true, //Trim string values of tag and attributes + cdataPropName: false, + numberParseOptions: { + hex: true, + leadingZeros: true, + eNotation: true + }, + tagValueProcessor: function(tagName, val) { + return val; + }, + attributeValueProcessor: function(attrName, val) { + return val; + }, + stopNodes: [], //nested tags will not be parsed even for errors + alwaysCreateTextNode: false, + isArray: () => false, + commentPropName: false, + unpairedTags: [], + processEntities: true, + htmlEntities: false, + ignoreDeclaration: false, + ignorePiTags: false, + transformTagName: false, + transformAttributeName: false, +}; + +const buildOptions = function(options) { + return Object.assign({}, defaultOptions, options); +}; + +exports.buildOptions = buildOptions; +exports.defaultOptions = defaultOptions; \ No newline at end of file diff --git a/node_modules/fast-xml-parser/src/xmlparser/OrderedObjParser.js b/node_modules/fast-xml-parser/src/xmlparser/OrderedObjParser.js new file mode 100644 index 0000000..b4c9f6c --- /dev/null +++ b/node_modules/fast-xml-parser/src/xmlparser/OrderedObjParser.js @@ -0,0 +1,565 @@ +'use strict'; +///@ts-check + +const util = require('../util'); +const xmlNode = require('./xmlNode'); +const readDocType = require("./DocTypeReader"); +const toNumber = require("strnum"); + +const regx = + '<((!\\[CDATA\\[([\\s\\S]*?)(]]>))|((NAME:)?(NAME))([^>]*)>|((\\/)(NAME)\\s*>))([^<]*)' + .replace(/NAME/g, util.nameRegexp); + +//const tagsRegx = new RegExp("<(\\/?[\\w:\\-\._]+)([^>]*)>(\\s*"+cdataRegx+")*([^<]+)?","g"); +//const tagsRegx = new RegExp("<(\\/?)((\\w*:)?([\\w:\\-\._]+))([^>]*)>([^<]*)("+cdataRegx+"([^<]*))*([^<]+)?","g"); + +class OrderedObjParser{ + constructor(options){ + this.options = options; + this.currentNode = null; + this.tagsNodeStack = []; + this.docTypeEntities = {}; + this.lastEntities = { + "apos" : { regex: /&(apos|#39|#x27);/g, val : "'"}, + "gt" : { regex: /&(gt|#62|#x3E);/g, val : ">"}, + "lt" : { regex: /&(lt|#60|#x3C);/g, val : "<"}, + "quot" : { regex: /&(quot|#34|#x22);/g, val : "\""}, + }; + this.ampEntity = { regex: /&(amp|#38|#x26);/g, val : "&"}; + this.htmlEntities = { + "space": { regex: /&(nbsp|#160);/g, val: " " }, + // "lt" : { regex: /&(lt|#60);/g, val: "<" }, + // "gt" : { regex: /&(gt|#62);/g, val: ">" }, + // "amp" : { regex: /&(amp|#38);/g, val: "&" }, + // "quot" : { regex: /&(quot|#34);/g, val: "\"" }, + // "apos" : { regex: /&(apos|#39);/g, val: "'" }, + "cent" : { regex: /&(cent|#162);/g, val: "¢" }, + "pound" : { regex: /&(pound|#163);/g, val: "£" }, + "yen" : { regex: /&(yen|#165);/g, val: "¥" }, + "euro" : { regex: /&(euro|#8364);/g, val: "€" }, + "copyright" : { regex: /&(copy|#169);/g, val: "©" }, + "reg" : { regex: /&(reg|#174);/g, val: "®" }, + "inr" : { regex: /&(inr|#8377);/g, val: "₹" }, + }; + this.addExternalEntities = addExternalEntities; + this.parseXml = parseXml; + this.parseTextData = parseTextData; + this.resolveNameSpace = resolveNameSpace; + this.buildAttributesMap = buildAttributesMap; + this.isItStopNode = isItStopNode; + this.replaceEntitiesValue = replaceEntitiesValue; + this.readStopNodeData = readStopNodeData; + this.saveTextToParentTag = saveTextToParentTag; + } + +} + +function addExternalEntities(externalEntities){ + const entKeys = Object.keys(externalEntities); + for (let i = 0; i < entKeys.length; i++) { + const ent = entKeys[i]; + this.lastEntities[ent] = { + regex: new RegExp("&"+ent+";","g"), + val : externalEntities[ent] + } + } +} + +/** + * @param {string} val + * @param {string} tagName + * @param {string} jPath + * @param {boolean} dontTrim + * @param {boolean} hasAttributes + * @param {boolean} isLeafNode + * @param {boolean} escapeEntities + */ +function parseTextData(val, tagName, jPath, dontTrim, hasAttributes, isLeafNode, escapeEntities) { + if (val !== undefined) { + if (this.options.trimValues && !dontTrim) { + val = val.trim(); + } + if(val.length > 0){ + if(!escapeEntities) val = this.replaceEntitiesValue(val); + + const newval = this.options.tagValueProcessor(tagName, val, jPath, hasAttributes, isLeafNode); + if(newval === null || newval === undefined){ + //don't parse + return val; + }else if(typeof newval !== typeof val || newval !== val){ + //overwrite + return newval; + }else if(this.options.trimValues){ + return parseValue(val, this.options.parseTagValue, this.options.numberParseOptions); + }else{ + const trimmedVal = val.trim(); + if(trimmedVal === val){ + return parseValue(val, this.options.parseTagValue, this.options.numberParseOptions); + }else{ + return val; + } + } + } + } +} + +function resolveNameSpace(tagname) { + if (this.options.removeNSPrefix) { + const tags = tagname.split(':'); + const prefix = tagname.charAt(0) === '/' ? '/' : ''; + if (tags[0] === 'xmlns') { + return ''; + } + if (tags.length === 2) { + tagname = prefix + tags[1]; + } + } + return tagname; +} + +//TODO: change regex to capture NS +//const attrsRegx = new RegExp("([\\w\\-\\.\\:]+)\\s*=\\s*(['\"])((.|\n)*?)\\2","gm"); +const attrsRegx = new RegExp('([^\\s=]+)\\s*(=\\s*([\'"])([\\s\\S]*?)\\3)?', 'gm'); + +function buildAttributesMap(attrStr, jPath) { + if (!this.options.ignoreAttributes && typeof attrStr === 'string') { + // attrStr = attrStr.replace(/\r?\n/g, ' '); + //attrStr = attrStr || attrStr.trim(); + + const matches = util.getAllMatches(attrStr, attrsRegx); + const len = matches.length; //don't make it inline + const attrs = {}; + for (let i = 0; i < len; i++) { + const attrName = this.resolveNameSpace(matches[i][1]); + let oldVal = matches[i][4]; + let aName = this.options.attributeNamePrefix + attrName; + if (attrName.length) { + if (this.options.transformAttributeName) { + aName = this.options.transformAttributeName(aName); + } + if(aName === "__proto__") aName = "#__proto__"; + if (oldVal !== undefined) { + if (this.options.trimValues) { + oldVal = oldVal.trim(); + } + oldVal = this.replaceEntitiesValue(oldVal); + const newVal = this.options.attributeValueProcessor(attrName, oldVal, jPath); + if(newVal === null || newVal === undefined){ + //don't parse + attrs[aName] = oldVal; + }else if(typeof newVal !== typeof oldVal || newVal !== oldVal){ + //overwrite + attrs[aName] = newVal; + }else{ + //parse + attrs[aName] = parseValue( + oldVal, + this.options.parseAttributeValue, + this.options.numberParseOptions + ); + } + } else if (this.options.allowBooleanAttributes) { + attrs[aName] = true; + } + } + } + if (!Object.keys(attrs).length) { + return; + } + if (this.options.attributesGroupName) { + const attrCollection = {}; + attrCollection[this.options.attributesGroupName] = attrs; + return attrCollection; + } + return attrs; + } +} + +const parseXml = function(xmlData) { + xmlData = xmlData.replace(/\r\n?/g, "\n"); //TODO: remove this line + const xmlObj = new xmlNode('!xml'); + let currentNode = xmlObj; + let textData = ""; + let jPath = ""; + for(let i=0; i< xmlData.length; i++){//for each char in XML data + const ch = xmlData[i]; + if(ch === '<'){ + // const nextIndex = i+1; + // const _2ndChar = xmlData[nextIndex]; + if( xmlData[i+1] === '/') {//Closing Tag + const closeIndex = findClosingIndex(xmlData, ">", i, "Closing Tag is not closed.") + let tagName = xmlData.substring(i+2,closeIndex).trim(); + + if(this.options.removeNSPrefix){ + const colonIndex = tagName.indexOf(":"); + if(colonIndex !== -1){ + tagName = tagName.substr(colonIndex+1); + } + } + + if(this.options.transformTagName) { + tagName = this.options.transformTagName(tagName); + } + + if(currentNode){ + textData = this.saveTextToParentTag(textData, currentNode, jPath); + } + + jPath = jPath.substr(0, jPath.lastIndexOf(".")); + + currentNode = this.tagsNodeStack.pop();//avoid recurssion, set the parent tag scope + textData = ""; + i = closeIndex; + } else if( xmlData[i+1] === '?') { + + let tagData = readTagExp(xmlData,i, false, "?>"); + if(!tagData) throw new Error("Pi Tag is not closed."); + + textData = this.saveTextToParentTag(textData, currentNode, jPath); + if( (this.options.ignoreDeclaration && tagData.tagName === "?xml") || this.options.ignorePiTags){ + + }else{ + + const childNode = new xmlNode(tagData.tagName); + childNode.add(this.options.textNodeName, ""); + + if(tagData.tagName !== tagData.tagExp && tagData.attrExpPresent){ + childNode[":@"] = this.buildAttributesMap(tagData.tagExp, jPath); + } + currentNode.addChild(childNode); + + } + + + i = tagData.closeIndex + 1; + } else if(xmlData.substr(i + 1, 3) === '!--') { + const endIndex = findClosingIndex(xmlData, "-->", i+4, "Comment is not closed.") + if(this.options.commentPropName){ + const comment = xmlData.substring(i + 4, endIndex - 2); + + textData = this.saveTextToParentTag(textData, currentNode, jPath); + + currentNode.add(this.options.commentPropName, [ { [this.options.textNodeName] : comment } ]); + } + i = endIndex; + } else if( xmlData.substr(i + 1, 2) === '!D') { + const result = readDocType(xmlData, i); + this.docTypeEntities = result.entities; + i = result.i; + }else if(xmlData.substr(i + 1, 2) === '![') { + const closeIndex = findClosingIndex(xmlData, "]]>", i, "CDATA is not closed.") - 2; + const tagExp = xmlData.substring(i + 9,closeIndex); + + textData = this.saveTextToParentTag(textData, currentNode, jPath); + + //cdata should be set even if it is 0 length string + if(this.options.cdataPropName){ + // let val = this.parseTextData(tagExp, this.options.cdataPropName, jPath + "." + this.options.cdataPropName, true, false, true); + // if(!val) val = ""; + currentNode.add(this.options.cdataPropName, [ { [this.options.textNodeName] : tagExp } ]); + }else{ + let val = this.parseTextData(tagExp, currentNode.tagname, jPath, true, false, true); + if(val == undefined) val = ""; + currentNode.add(this.options.textNodeName, val); + } + + i = closeIndex + 2; + }else {//Opening tag + let result = readTagExp(xmlData,i, this.options.removeNSPrefix); + let tagName= result.tagName; + let tagExp = result.tagExp; + let attrExpPresent = result.attrExpPresent; + let closeIndex = result.closeIndex; + + if (this.options.transformTagName) { + tagName = this.options.transformTagName(tagName); + } + + //save text as child node + if (currentNode && textData) { + if(currentNode.tagname !== '!xml'){ + //when nested tag is found + textData = this.saveTextToParentTag(textData, currentNode, jPath, false); + } + } + + if(tagName !== xmlObj.tagname){ + jPath += jPath ? "." + tagName : tagName; + } + + //check if last tag was unpaired tag + const lastTag = currentNode; + if(lastTag && this.options.unpairedTags.indexOf(lastTag.tagname) !== -1 ){ + currentNode = this.tagsNodeStack.pop(); + } + + if (this.isItStopNode(this.options.stopNodes, jPath, tagName)) { //TODO: namespace + let tagContent = ""; + //self-closing tag + if(tagExp.length > 0 && tagExp.lastIndexOf("/") === tagExp.length - 1){ + i = result.closeIndex; + } + //boolean tag + else if(this.options.unpairedTags.indexOf(tagName) !== -1){ + i = result.closeIndex; + } + //normal tag + else{ + //read until closing tag is found + const result = this.readStopNodeData(xmlData, tagName, closeIndex + 1); + if(!result) throw new Error(`Unexpected end of ${tagName}`); + i = result.i; + tagContent = result.tagContent; + } + + const childNode = new xmlNode(tagName); + if(tagName !== tagExp && attrExpPresent){ + childNode[":@"] = this.buildAttributesMap(tagExp, jPath); + } + if(tagContent) { + tagContent = this.parseTextData(tagContent, tagName, jPath, true, attrExpPresent, true, true); + } + + jPath = jPath.substr(0, jPath.lastIndexOf(".")); + childNode.add(this.options.textNodeName, tagContent); + + currentNode.addChild(childNode); + }else{ + //selfClosing tag + if(tagExp.length > 0 && tagExp.lastIndexOf("/") === tagExp.length - 1){ + if(tagName[tagName.length - 1] === "/"){ //remove trailing '/' + tagName = tagName.substr(0, tagName.length - 1); + tagExp = tagName; + }else{ + tagExp = tagExp.substr(0, tagExp.length - 1); + } + + if(this.options.transformTagName) { + tagName = this.options.transformTagName(tagName); + } + + const childNode = new xmlNode(tagName); + if(tagName !== tagExp && attrExpPresent){ + childNode[":@"] = this.buildAttributesMap(tagExp, jPath); + } + jPath = jPath.substr(0, jPath.lastIndexOf(".")); + currentNode.addChild(childNode); + } + //opening tag + else{ + const childNode = new xmlNode( tagName); + this.tagsNodeStack.push(currentNode); + + if(tagName !== tagExp && attrExpPresent){ + childNode[":@"] = this.buildAttributesMap(tagExp, jPath); + } + currentNode.addChild(childNode); + currentNode = childNode; + } + textData = ""; + i = closeIndex; + } + } + }else{ + textData += xmlData[i]; + } + } + return xmlObj.child; +} + +const replaceEntitiesValue = function(val){ + + if(this.options.processEntities){ + for(let entityName in this.docTypeEntities){ + const entity = this.docTypeEntities[entityName]; + val = val.replace( entity.regx, entity.val); + } + for(let entityName in this.lastEntities){ + const entity = this.lastEntities[entityName]; + val = val.replace( entity.regex, entity.val); + } + if(this.options.htmlEntities){ + for(let entityName in this.htmlEntities){ + const entity = this.htmlEntities[entityName]; + val = val.replace( entity.regex, entity.val); + } + } + val = val.replace( this.ampEntity.regex, this.ampEntity.val); + } + return val; +} +function saveTextToParentTag(textData, currentNode, jPath, isLeafNode) { + if (textData) { //store previously collected data as textNode + if(isLeafNode === undefined) isLeafNode = Object.keys(currentNode.child).length === 0 + + textData = this.parseTextData(textData, + currentNode.tagname, + jPath, + false, + currentNode[":@"] ? Object.keys(currentNode[":@"]).length !== 0 : false, + isLeafNode); + + if (textData !== undefined && textData !== "") + currentNode.add(this.options.textNodeName, textData); + textData = ""; + } + return textData; +} + +//TODO: use jPath to simplify the logic +/** + * + * @param {string[]} stopNodes + * @param {string} jPath + * @param {string} currentTagName + */ +function isItStopNode(stopNodes, jPath, currentTagName){ + const allNodesExp = "*." + currentTagName; + for (const stopNodePath in stopNodes) { + const stopNodeExp = stopNodes[stopNodePath]; + if( allNodesExp === stopNodeExp || jPath === stopNodeExp ) return true; + } + return false; +} + +/** + * Returns the tag Expression and where it is ending handling single-dobule quotes situation + * @param {string} xmlData + * @param {number} i starting index + * @returns + */ +function tagExpWithClosingIndex(xmlData, i, closingChar = ">"){ + let attrBoundary; + let tagExp = ""; + for (let index = i; index < xmlData.length; index++) { + let ch = xmlData[index]; + if (attrBoundary) { + if (ch === attrBoundary) attrBoundary = "";//reset + } else if (ch === '"' || ch === "'") { + attrBoundary = ch; + } else if (ch === closingChar[0]) { + if(closingChar[1]){ + if(xmlData[index + 1] === closingChar[1]){ + return { + data: tagExp, + index: index + } + } + }else{ + return { + data: tagExp, + index: index + } + } + } else if (ch === '\t') { + ch = " " + } + tagExp += ch; + } +} + +function findClosingIndex(xmlData, str, i, errMsg){ + const closingIndex = xmlData.indexOf(str, i); + if(closingIndex === -1){ + throw new Error(errMsg) + }else{ + return closingIndex + str.length - 1; + } +} + +function readTagExp(xmlData,i, removeNSPrefix, closingChar = ">"){ + const result = tagExpWithClosingIndex(xmlData, i+1, closingChar); + if(!result) return; + let tagExp = result.data; + const closeIndex = result.index; + const separatorIndex = tagExp.search(/\s/); + let tagName = tagExp; + let attrExpPresent = true; + if(separatorIndex !== -1){//separate tag name and attributes expression + tagName = tagExp.substr(0, separatorIndex).replace(/\s\s*$/, ''); + tagExp = tagExp.substr(separatorIndex + 1); + } + + if(removeNSPrefix){ + const colonIndex = tagName.indexOf(":"); + if(colonIndex !== -1){ + tagName = tagName.substr(colonIndex+1); + attrExpPresent = tagName !== result.data.substr(colonIndex + 1); + } + } + + return { + tagName: tagName, + tagExp: tagExp, + closeIndex: closeIndex, + attrExpPresent: attrExpPresent, + } +} +/** + * find paired tag for a stop node + * @param {string} xmlData + * @param {string} tagName + * @param {number} i + */ +function readStopNodeData(xmlData, tagName, i){ + const startIndex = i; + // Starting at 1 since we already have an open tag + let openTagCount = 1; + + for (; i < xmlData.length; i++) { + if( xmlData[i] === "<"){ + if (xmlData[i+1] === "/") {//close tag + const closeIndex = findClosingIndex(xmlData, ">", i, `${tagName} is not closed`); + let closeTagName = xmlData.substring(i+2,closeIndex).trim(); + if(closeTagName === tagName){ + openTagCount--; + if (openTagCount === 0) { + return { + tagContent: xmlData.substring(startIndex, i), + i : closeIndex + } + } + } + i=closeIndex; + } else if(xmlData[i+1] === '?') { + const closeIndex = findClosingIndex(xmlData, "?>", i+1, "StopNode is not closed.") + i=closeIndex; + } else if(xmlData.substr(i + 1, 3) === '!--') { + const closeIndex = findClosingIndex(xmlData, "-->", i+3, "StopNode is not closed.") + i=closeIndex; + } else if(xmlData.substr(i + 1, 2) === '![') { + const closeIndex = findClosingIndex(xmlData, "]]>", i, "StopNode is not closed.") - 2; + i=closeIndex; + } else { + const tagData = readTagExp(xmlData, i, '>') + + if (tagData) { + const openTagName = tagData && tagData.tagName; + if (openTagName === tagName && tagData.tagExp[tagData.tagExp.length-1] !== "/") { + openTagCount++; + } + i=tagData.closeIndex; + } + } + } + }//end for loop +} + +function parseValue(val, shouldParse, options) { + if (shouldParse && typeof val === 'string') { + //console.log(options) + const newval = val.trim(); + if(newval === 'true' ) return true; + else if(newval === 'false' ) return false; + else return toNumber(val, options); + } else { + if (util.isExist(val)) { + return val; + } else { + return ''; + } + } +} + + +module.exports = OrderedObjParser; diff --git a/node_modules/fast-xml-parser/src/xmlparser/XMLParser.js b/node_modules/fast-xml-parser/src/xmlparser/XMLParser.js new file mode 100644 index 0000000..ffaf59b --- /dev/null +++ b/node_modules/fast-xml-parser/src/xmlparser/XMLParser.js @@ -0,0 +1,58 @@ +const { buildOptions} = require("./OptionsBuilder"); +const OrderedObjParser = require("./OrderedObjParser"); +const { prettify} = require("./node2json"); +const validator = require('../validator'); + +class XMLParser{ + + constructor(options){ + this.externalEntities = {}; + this.options = buildOptions(options); + + } + /** + * Parse XML dats to JS object + * @param {string|Buffer} xmlData + * @param {boolean|Object} validationOption + */ + parse(xmlData,validationOption){ + if(typeof xmlData === "string"){ + }else if( xmlData.toString){ + xmlData = xmlData.toString(); + }else{ + throw new Error("XML data is accepted in String or Bytes[] form.") + } + if( validationOption){ + if(validationOption === true) validationOption = {}; //validate with default options + + const result = validator.validate(xmlData, validationOption); + if (result !== true) { + throw Error( `${result.err.msg}:${result.err.line}:${result.err.col}` ) + } + } + const orderedObjParser = new OrderedObjParser(this.options); + orderedObjParser.addExternalEntities(this.externalEntities); + const orderedResult = orderedObjParser.parseXml(xmlData); + if(this.options.preserveOrder || orderedResult === undefined) return orderedResult; + else return prettify(orderedResult, this.options); + } + + /** + * Add Entity which is not by default supported by this library + * @param {string} key + * @param {string} value + */ + addEntity(key, value){ + if(value.indexOf("&") !== -1){ + throw new Error("Entity value can't have '&'") + }else if(key.indexOf("&") !== -1 || key.indexOf(";") !== -1){ + throw new Error("An entity must be set without '&' and ';'. Eg. use '#xD' for ' '") + }else if(value === "&"){ + throw new Error("An entity with value '&' is not permitted"); + }else{ + this.externalEntities[key] = value; + } + } +} + +module.exports = XMLParser; \ No newline at end of file diff --git a/node_modules/fast-xml-parser/src/xmlparser/node2json.js b/node_modules/fast-xml-parser/src/xmlparser/node2json.js new file mode 100644 index 0000000..9320fac --- /dev/null +++ b/node_modules/fast-xml-parser/src/xmlparser/node2json.js @@ -0,0 +1,101 @@ +'use strict'; + +/** + * + * @param {array} node + * @param {any} options + * @returns + */ +function prettify(node, options){ + return compress( node, options); +} + +/** + * + * @param {array} arr + * @param {object} options + * @param {string} jPath + * @returns object + */ +function compress(arr, options, jPath){ + let text; + const compressedObj = {}; + for (let i = 0; i < arr.length; i++) { + const tagObj = arr[i]; + const property = propName(tagObj); + let newJpath = ""; + if(jPath === undefined) newJpath = property; + else newJpath = jPath + "." + property; + + if(property === options.textNodeName){ + if(text === undefined) text = tagObj[property]; + else text += "" + tagObj[property]; + }else if(property === undefined){ + continue; + }else if(tagObj[property]){ + + let val = compress(tagObj[property], options, newJpath); + const isLeaf = isLeafTag(val, options); + + if(tagObj[":@"]){ + assignAttributes( val, tagObj[":@"], newJpath, options); + }else if(Object.keys(val).length === 1 && val[options.textNodeName] !== undefined && !options.alwaysCreateTextNode){ + val = val[options.textNodeName]; + }else if(Object.keys(val).length === 0){ + if(options.alwaysCreateTextNode) val[options.textNodeName] = ""; + else val = ""; + } + + if(compressedObj[property] !== undefined && compressedObj.hasOwnProperty(property)) { + if(!Array.isArray(compressedObj[property])) { + compressedObj[property] = [ compressedObj[property] ]; + } + compressedObj[property].push(val); + }else{ + //TODO: if a node is not an array, then check if it should be an array + //also determine if it is a leaf node + if (options.isArray(property, newJpath, isLeaf )) { + compressedObj[property] = [val]; + }else{ + compressedObj[property] = val; + } + } + } + + } + // if(text && text.length > 0) compressedObj[options.textNodeName] = text; + if(typeof text === "string"){ + if(text.length > 0) compressedObj[options.textNodeName] = text; + }else if(text !== undefined) compressedObj[options.textNodeName] = text; + return compressedObj; +} + +function propName(obj){ + const keys = Object.keys(obj); + for (let i = 0; i < keys.length; i++) { + const key = keys[i]; + if(key !== ":@") return key; + } +} + +function assignAttributes(obj, attrMap, jpath, options){ + if (attrMap) { + const keys = Object.keys(attrMap); + const len = keys.length; //don't make it inline + for (let i = 0; i < len; i++) { + const atrrName = keys[i]; + if (options.isArray(atrrName, jpath + "." + atrrName, true, true)) { + obj[atrrName] = [ attrMap[atrrName] ]; + } else { + obj[atrrName] = attrMap[atrrName]; + } + } + } +} + +function isLeafTag(obj, options){ + const propCount = Object.keys(obj).length; + if( propCount === 0 || (propCount === 1 && obj[options.textNodeName]) ) return true; + return false; +} +exports.prettify = prettify; diff --git a/node_modules/fast-xml-parser/src/xmlparser/xmlNode.js b/node_modules/fast-xml-parser/src/xmlparser/xmlNode.js new file mode 100644 index 0000000..9319524 --- /dev/null +++ b/node_modules/fast-xml-parser/src/xmlparser/xmlNode.js @@ -0,0 +1,25 @@ +'use strict'; + +class XmlNode{ + constructor(tagname) { + this.tagname = tagname; + this.child = []; //nested tags, text, cdata, comments in order + this[":@"] = {}; //attributes map + } + add(key,val){ + // this.child.push( {name : key, val: val, isCdata: isCdata }); + if(key === "__proto__") key = "#__proto__"; + this.child.push( {[key]: val }); + } + addChild(node) { + if(node.tagname === "__proto__") node.tagname = "#__proto__"; + if(node[":@"] && Object.keys(node[":@"]).length > 0){ + this.child.push( { [node.tagname]: node.child, [":@"]: node[":@"] }); + }else{ + this.child.push( { [node.tagname]: node.child }); + } + }; +}; + + +module.exports = XmlNode; \ No newline at end of file diff --git a/node_modules/get-tsconfig/LICENSE b/node_modules/get-tsconfig/LICENSE new file mode 100644 index 0000000..51e4fd8 --- /dev/null +++ b/node_modules/get-tsconfig/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) Hiroki Osame + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/node_modules/get-tsconfig/README.md b/node_modules/get-tsconfig/README.md new file mode 100644 index 0000000..4b09047 --- /dev/null +++ b/node_modules/get-tsconfig/README.md @@ -0,0 +1,196 @@ +# get-tsconfig [![Latest version](https://badgen.net/npm/v/get-tsconfig)](https://npm.im/get-tsconfig) + +Find and parse `tsconfig.json` files. + +### Features +- Zero dependency (not even TypeScript) +- Tested against TypeScript for correctness +- Supports comments & dangling commas in `tsconfig.json` +- Resolves [`extends`](https://www.typescriptlang.org/tsconfig/#extends) +- Fully typed `tsconfig.json` +- Validates and throws parsing errors +- Tiny! `3.6 kB` Minified + Gzipped + +## 🚀 Install + +```bash +npm install get-tsconfig +``` + +## 🙋‍♀️ Why? +For TypeScript related tooling to correctly parse `tsconfig.json` file without depending on TypeScript. + +## ⚙️ API + +### getTsconfig(searchPath?, configName?) +Searches for a `tsconfig.json` file and parses it. Returns `null` if a config file cannot be found, or an object containing the path and parsed TSConfig object if found. + +Returns: + +```ts +type TsconfigResult = { + /** + * The path to the tsconfig.json file + */ + path: string + + /** + * The resolved tsconfig.json file + */ + config: TsConfigJsonResolved +} +``` + +#### searchPath +Type: `string` + +Default: `process.cwd()` + +Accepts a path to a file or directory to search up for a `tsconfig.json` file. + +#### configName +Type: `string` + +Default: `tsconfig.json` + +The file name of the TypeScript config file. + +#### Example + +```ts +import { getTsconfig } from 'get-tsconfig' + +// Searches for tsconfig.json starting in the current directory +console.log(getTsconfig()) + +// Find tsconfig.json from a TypeScript file path +console.log(getTsconfig('./path/to/index.ts')) + +// Find tsconfig.json from a directory file path +console.log(getTsconfig('./path/to/directory')) + +// Explicitly pass in tsconfig.json path +console.log(getTsconfig('./path/to/tsconfig.json')) + +// Search for jsconfig.json - https://code.visualstudio.com/docs/languages/jsconfig +console.log(getTsconfig('.', 'jsconfig.json')) +``` + +--- + +### parseTsconfig(tsconfigPath) +The `tsconfig.json` parser used internally by `getTsconfig`. Returns the parsed tsconfig as `TsConfigJsonResolved`. + +#### tsconfigPath +Type: `string` + +Required path to the tsconfig file. + +#### Example + +```ts +import { parseTsconfig } from 'get-tsconfig' + +// Must pass in a path to an existing tsconfig.json file +console.log(parseTsconfig('./path/to/tsconfig.custom.json')) +``` + +--- + +### createFileMatcher(tsconfig: TsconfigResult, caseSensitivePaths?: boolean) + +Given a `tsconfig.json` file, it returns a file-matcher function that determines whether it should apply to a file path. + +```ts +type FileMatcher = (filePath: string) => TsconfigResult['config'] | undefined +``` + +#### tsconfig +Type: `TsconfigResult` + +Pass in the return value from `getTsconfig`, or a `TsconfigResult` object. + +#### caseSensitivePaths +Type: `boolean` + +By default, it uses [`is-fs-case-sensitive`](https://github.com/privatenumber/is-fs-case-sensitive) to detect whether the file-system is case-sensitive. + +Pass in `true` to make it case-sensitive. + +#### Example + +For example, if it's called with a `tsconfig.json` file that has `include`/`exclude`/`files` defined, the file-matcher will return the config for files that match `include`/`files`, and return `undefined` for files that don't match or match `exclude`. + +```ts +const tsconfig = getTsconfig() +const fileMatcher = tsconfig && createFileMatcher(tsconfig) + +/* + * Returns tsconfig.json if it matches the file, + * undefined if not + */ +const configForFile = fileMatcher?.('/path/to/file.ts') +const distCode = compileTypescript({ + code: sourceCode, + tsconfig: configForFile +}) +``` + +--- + +### createPathsMatcher(tsconfig: TsconfigResult) + +Given a tsconfig with [`compilerOptions.paths`](https://www.typescriptlang.org/tsconfig#paths) defined, it returns a matcher function. + +The matcher function accepts an [import specifier (the path to resolve)](https://nodejs.org/api/esm.html#terminology), checks it against `compilerOptions.paths`, and returns an array of possible paths to check: +```ts +function pathsMatcher(specifier: string): string[] +``` + +This function only returns possible paths and doesn't actually do any resolution. This helps increase compatibility wtih file/build systems which usually have their own resolvers. + +#### Example + +```ts +import { getTsconfig, createPathsMatcher } from 'get-tsconfig' + +const tsconfig = getTsconfig() +const pathsMatcher = createPathsMatcher(tsconfig) + +function exampleResolver(request: string) { + if (pathsMatcher) { + const tryPaths = pathsMatcher(request) + + // Check if paths in `tryPaths` exist + } +} +``` + +## FAQ + +### How can I use TypeScript to parse `tsconfig.json`? +This package is a re-implementation of TypeScript's `tsconfig.json` parser. + +However, if you already have TypeScript as a dependency, you can simply use it's API: + +```ts +import { + sys as tsSys, + findConfigFile, + readConfigFile, + parseJsonConfigFileContent +} from 'typescript' + +// Find tsconfig.json file +const tsconfigPath = findConfigFile(process.cwd(), tsSys.fileExists, 'tsconfig.json') + +// Read tsconfig.json file +const tsconfigFile = readConfigFile(tsconfigPath, tsSys.readFile) + +// Resolve extends +const parsedTsconfig = parseJsonConfigFileContent( + tsconfigFile.config, + tsSys, + path.dirname(tsconfigPath) +) +``` diff --git a/node_modules/get-tsconfig/dist/index.cjs b/node_modules/get-tsconfig/dist/index.cjs new file mode 100755 index 0000000..88dfacc --- /dev/null +++ b/node_modules/get-tsconfig/dist/index.cjs @@ -0,0 +1,3 @@ +"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var ue=require("path"),fe=require("fs"),ce=require("module");function M(e){return e&&typeof e=="object"&&"default"in e?e:{default:e}}var a=M(ue),L=M(fe),re=M(ce);function _(e){return/^\\\\\?\\/.test(e)?e:e.replace(/\\/g,"/")}function S(e,l){for(;;){const t=a.default.posix.join(e,l);if(L.default.existsSync(t))return t;const n=a.default.dirname(e);if(n===e)return;e=n}}const W=/^\.{1,2}(\/.*)?$/,x=e=>_(W.test(e)?e:`./${e}`);function pe(e,l=!1){const t=e.length;let n=0,i="",s=0,o=16,m=0,f=0,v=0,k=0,p=0;function $(u,r){let c=0,j=0;for(;c=48&&T<=57)j=j*16+T-48;else if(T>=65&&T<=70)j=j*16+T-65+10;else if(T>=97&&T<=102)j=j*16+T-97+10;else break;n++,c++}return c=t){u+=e.substring(r,n),p=2;break}const c=e.charCodeAt(n);if(c===34){u+=e.substring(r,n),n++;break}if(c===92){if(u+=e.substring(r,n),n++,n>=t){p=2;break}switch(e.charCodeAt(n++)){case 34:u+='"';break;case 92:u+="\\";break;case 47:u+="/";break;case 98:u+="\b";break;case 102:u+="\f";break;case 110:u+=` +`;break;case 114:u+="\r";break;case 116:u+=" ";break;case 117:const T=$(4,!0);T>=0?u+=String.fromCharCode(T):p=4;break;default:p=5}r=n;continue}if(c>=0&&c<=31)if(F(c)){u+=e.substring(r,n),p=2;break}else p=6;n++}return u}function O(){if(i="",p=0,s=n,f=m,k=v,n>=t)return s=t,o=17;let u=e.charCodeAt(n);if(R(u)){do n++,i+=String.fromCharCode(u),u=e.charCodeAt(n);while(R(u));return o=15}if(F(u))return n++,i+=String.fromCharCode(u),u===13&&e.charCodeAt(n)===10&&(n++,i+=` +`),m++,v=n,o=14;switch(u){case 123:return n++,o=1;case 125:return n++,o=2;case 91:return n++,o=3;case 93:return n++,o=4;case 58:return n++,o=6;case 44:return n++,o=5;case 34:return n++,i=b(),o=10;case 47:const r=n-1;if(e.charCodeAt(n+1)===47){for(n+=2;n=12&&u<=15);return u}return{setPosition:B,getPosition:()=>n,scan:l?E:O,getToken:()=>o,getTokenValue:()=>i,getTokenOffset:()=>s,getTokenLength:()=>n-s,getTokenStartLine:()=>f,getTokenStartCharacter:()=>s-k,getTokenError:()=>p}}function R(e){return e===32||e===9}function F(e){return e===10||e===13}function U(e){return e>=48&&e<=57}var H;(function(e){e[e.lineFeed=10]="lineFeed",e[e.carriageReturn=13]="carriageReturn",e[e.space=32]="space",e[e._0=48]="_0",e[e._1=49]="_1",e[e._2=50]="_2",e[e._3=51]="_3",e[e._4=52]="_4",e[e._5=53]="_5",e[e._6=54]="_6",e[e._7=55]="_7",e[e._8=56]="_8",e[e._9=57]="_9",e[e.a=97]="a",e[e.b=98]="b",e[e.c=99]="c",e[e.d=100]="d",e[e.e=101]="e",e[e.f=102]="f",e[e.g=103]="g",e[e.h=104]="h",e[e.i=105]="i",e[e.j=106]="j",e[e.k=107]="k",e[e.l=108]="l",e[e.m=109]="m",e[e.n=110]="n",e[e.o=111]="o",e[e.p=112]="p",e[e.q=113]="q",e[e.r=114]="r",e[e.s=115]="s",e[e.t=116]="t",e[e.u=117]="u",e[e.v=118]="v",e[e.w=119]="w",e[e.x=120]="x",e[e.y=121]="y",e[e.z=122]="z",e[e.A=65]="A",e[e.B=66]="B",e[e.C=67]="C",e[e.D=68]="D",e[e.E=69]="E",e[e.F=70]="F",e[e.G=71]="G",e[e.H=72]="H",e[e.I=73]="I",e[e.J=74]="J",e[e.K=75]="K",e[e.L=76]="L",e[e.M=77]="M",e[e.N=78]="N",e[e.O=79]="O",e[e.P=80]="P",e[e.Q=81]="Q",e[e.R=82]="R",e[e.S=83]="S",e[e.T=84]="T",e[e.U=85]="U",e[e.V=86]="V",e[e.W=87]="W",e[e.X=88]="X",e[e.Y=89]="Y",e[e.Z=90]="Z",e[e.asterisk=42]="asterisk",e[e.backslash=92]="backslash",e[e.closeBrace=125]="closeBrace",e[e.closeBracket=93]="closeBracket",e[e.colon=58]="colon",e[e.comma=44]="comma",e[e.dot=46]="dot",e[e.doubleQuote=34]="doubleQuote",e[e.minus=45]="minus",e[e.openBrace=123]="openBrace",e[e.openBracket=91]="openBracket",e[e.plus=43]="plus",e[e.slash=47]="slash",e[e.formFeed=12]="formFeed",e[e.tab=9]="tab"})(H||(H={}));var y;(function(e){e.DEFAULT={allowTrailingComma:!1}})(y||(y={}));function ae(e,l=[],t=y.DEFAULT){let n=null,i=[];const s=[];function o(f){Array.isArray(i)?i.push(f):n!==null&&(i[n]=f)}return ge(e,{onObjectBegin:()=>{const f={};o(f),s.push(i),i=f,n=null},onObjectProperty:f=>{n=f},onObjectEnd:()=>{i=s.pop()},onArrayBegin:()=>{const f=[];o(f),s.push(i),i=f,n=null},onArrayEnd:()=>{i=s.pop()},onLiteralValue:o,onError:(f,v,k)=>{l.push({error:f,offset:v,length:k})}},t),i[0]}function ge(e,l,t=y.DEFAULT){const n=pe(e,!1),i=[];function s(g){return g?()=>g(n.getTokenOffset(),n.getTokenLength(),n.getTokenStartLine(),n.getTokenStartCharacter()):()=>!0}function o(g){return g?()=>g(n.getTokenOffset(),n.getTokenLength(),n.getTokenStartLine(),n.getTokenStartCharacter(),()=>i.slice()):()=>!0}function m(g){return g?w=>g(w,n.getTokenOffset(),n.getTokenLength(),n.getTokenStartLine(),n.getTokenStartCharacter()):()=>!0}function f(g){return g?w=>g(w,n.getTokenOffset(),n.getTokenLength(),n.getTokenStartLine(),n.getTokenStartCharacter(),()=>i.slice()):()=>!0}const v=o(l.onObjectBegin),k=f(l.onObjectProperty),p=s(l.onObjectEnd),$=o(l.onArrayBegin),B=s(l.onArrayEnd),A=f(l.onLiteralValue),b=m(l.onSeparator),O=s(l.onComment),d=m(l.onError),E=t&&t.disallowComments,u=t&&t.allowTrailingComma;function r(){for(;;){const g=n.scan();switch(n.getTokenError()){case 4:c(14);break;case 5:c(15);break;case 3:c(13);break;case 1:E||c(11);break;case 2:c(12);break;case 6:c(16);break}switch(g){case 12:case 13:E?c(10):O();break;case 16:c(1);break;case 15:case 14:break;default:return g}}}function c(g,w=[],z=[]){if(d(g),w.length+z.length>0){let h=n.getToken();for(;h!==17;){if(w.indexOf(h)!==-1){r();break}else if(z.indexOf(h)!==-1)break;h=r()}}}function j(g){const w=n.getTokenValue();return g?A(w):(k(w),i.push(w)),r(),!0}function T(){switch(n.getToken()){case 11:const g=n.getTokenValue();let w=Number(g);isNaN(w)&&(c(2),w=0),A(w);break;case 7:A(null);break;case 8:A(!0);break;case 9:A(!1);break;default:return!1}return r(),!0}function le(){return n.getToken()!==10?(c(3,[],[2,5]),!1):(j(!1),n.getToken()===6?(b(":"),r(),V()||c(4,[],[2,5])):c(5,[],[2,5]),i.pop(),!0)}function oe(){v(),r();let g=!1;for(;n.getToken()!==2&&n.getToken()!==17;){if(n.getToken()===5){if(g||c(4,[],[]),b(","),r(),n.getToken()===2&&u)break}else g&&c(6,[],[]);le()||c(4,[],[2,5]),g=!0}return p(),n.getToken()!==2?c(7,[2],[]):r(),!0}function se(){$(),r();let g=!0,w=!1;for(;n.getToken()!==4&&n.getToken()!==17;){if(n.getToken()===5){if(w||c(4,[],[]),b(","),r(),n.getToken()===4&&u)break}else w&&c(6,[],[]);g?(i.push(0),g=!1):i[i.length-1]++,V()||c(4,[],[4,5]),w=!0}return B(),g||i.pop(),n.getToken()!==4?c(8,[4],[]):r(),!0}function V(){switch(n.getToken()){case 3:return se();case 1:return oe();case 10:return j(!0);default:return T()}}return r(),n.getToken()===17?t.allowEmptyContent?!0:(c(4,[],[]),!1):V()?(n.getToken()!==17&&c(9,[],[]),!0):(c(4,[],[]),!1)}var X;(function(e){e[e.None=0]="None",e[e.UnexpectedEndOfComment=1]="UnexpectedEndOfComment",e[e.UnexpectedEndOfString=2]="UnexpectedEndOfString",e[e.UnexpectedEndOfNumber=3]="UnexpectedEndOfNumber",e[e.InvalidUnicode=4]="InvalidUnicode",e[e.InvalidEscapeCharacter=5]="InvalidEscapeCharacter",e[e.InvalidCharacter=6]="InvalidCharacter"})(X||(X={}));var Y;(function(e){e[e.OpenBraceToken=1]="OpenBraceToken",e[e.CloseBraceToken=2]="CloseBraceToken",e[e.OpenBracketToken=3]="OpenBracketToken",e[e.CloseBracketToken=4]="CloseBracketToken",e[e.CommaToken=5]="CommaToken",e[e.ColonToken=6]="ColonToken",e[e.NullKeyword=7]="NullKeyword",e[e.TrueKeyword=8]="TrueKeyword",e[e.FalseKeyword=9]="FalseKeyword",e[e.StringLiteral=10]="StringLiteral",e[e.NumericLiteral=11]="NumericLiteral",e[e.LineCommentTrivia=12]="LineCommentTrivia",e[e.BlockCommentTrivia=13]="BlockCommentTrivia",e[e.LineBreakTrivia=14]="LineBreakTrivia",e[e.Trivia=15]="Trivia",e[e.Unknown=16]="Unknown",e[e.EOF=17]="EOF"})(Y||(Y={}));const me=ae;var Z;(function(e){e[e.InvalidSymbol=1]="InvalidSymbol",e[e.InvalidNumberFormat=2]="InvalidNumberFormat",e[e.PropertyNameExpected=3]="PropertyNameExpected",e[e.ValueExpected=4]="ValueExpected",e[e.ColonExpected=5]="ColonExpected",e[e.CommaExpected=6]="CommaExpected",e[e.CloseBraceExpected=7]="CloseBraceExpected",e[e.CloseBracketExpected=8]="CloseBracketExpected",e[e.EndOfFileExpected=9]="EndOfFileExpected",e[e.InvalidCommentToken=10]="InvalidCommentToken",e[e.UnexpectedEndOfComment=11]="UnexpectedEndOfComment",e[e.UnexpectedEndOfString=12]="UnexpectedEndOfString",e[e.UnexpectedEndOfNumber=13]="UnexpectedEndOfNumber",e[e.InvalidUnicode=14]="InvalidUnicode",e[e.InvalidEscapeCharacter=15]="InvalidEscapeCharacter",e[e.InvalidCharacter=16]="InvalidCharacter"})(Z||(Z={}));const q=e=>me(L.default.readFileSync(e,"utf8")),{existsSync:N}=L.default,ke=()=>{const{findPnpApi:e}=re.default;return e&&e(process.cwd())};function K(e){const l=q(e);return a.default.join(e,"..",l&&"tsconfig"in l?l.tsconfig:"tsconfig.json")}function be(e,l){let t=e;const n=e[0]===".";if(n||a.default.isAbsolute(e)){if(n&&(t===".."&&(t+="/tsconfig.json"),t=a.default.resolve(l,t)),N(t)&&L.default.statSync(t).isFile()||!t.endsWith(".json")&&(t+=".json",N(t)))return t;throw new Error(`File '${e}' not found.`)}const i=ke();if(i){const{resolveRequest:o}=i,[m,f]=e.split("/"),v=m.startsWith("@")?`${m}/${f}`:m;try{if(v===e){const k=o(a.default.join(v,"package.json"),l);if(k){const p=K(k);if(N(p))return p}}else{let k;try{k=o(e,l,{extensions:[".json"]})}catch{k=o(a.default.join(e,"tsconfig.json"),l)}if(k)return k}}catch{}}let s=S(l,a.default.join("node_modules",t));if(s){if(L.default.statSync(s).isDirectory()){const o=a.default.join(s,"package.json");if(N(o)?s=K(o):s=a.default.join(s,"tsconfig.json"),N(s))return s}else if(s.endsWith(".json"))return s}if(!t.endsWith(".json")&&(t+=".json",s=S(l,a.default.join("node_modules",t)),s))return s;throw new Error(`File '${e}' not found.`)}function J(e){var l;let t;try{t=L.default.realpathSync(e)}catch{throw new Error(`Cannot resolve tsconfig at path: ${e}`)}const n=a.default.dirname(t);let i=q(t)||{};if(typeof i!="object")throw new SyntaxError(`Failed to parse tsconfig at: ${e}`);if(i.extends){const s=be(i.extends,n),o=J(s);if(delete o.references,(l=o.compilerOptions)!=null&&l.baseUrl){const{compilerOptions:f}=o;f.baseUrl=a.default.relative(n,a.default.join(a.default.dirname(s),f.baseUrl))||"./"}o.files&&(o.files=o.files.map(f=>a.default.relative(n,a.default.join(a.default.dirname(s),f)))),o.include&&(o.include=o.include.map(f=>a.default.relative(n,a.default.join(a.default.dirname(s),f)))),delete i.extends;const m={...o,...i,compilerOptions:{...o.compilerOptions,...i.compilerOptions}};o.watchOptions&&(m.watchOptions={...o.watchOptions,...i.watchOptions}),i=m}if(i.compilerOptions){const{compilerOptions:s}=i;s.baseUrl&&(s.baseUrl=x(s.baseUrl)),s.outDir&&(Array.isArray(i.exclude)||(i.exclude=[]),i.exclude.push(s.outDir),s.outDir=x(s.outDir))}else i.compilerOptions={};if(i.files&&(i.files=i.files.map(x)),i.include&&(i.include=i.include.map(_)),i.watchOptions){const{watchOptions:s}=i;s.excludeDirectories&&(s.excludeDirectories=s.excludeDirectories.map(o=>_(a.default.resolve(n,o))))}return i}function Te(e=process.cwd(),l="tsconfig.json"){const t=S(_(e),l);if(!t)return null;const n=J(t);return{path:t,config:n}}const we=/\*/g,C=(e,l)=>{const t=e.match(we);if(t&&t.length>1)throw new Error(l)};function Oe(e){if(e.includes("*")){const[l,t]=e.split("*");return{prefix:l,suffix:t}}return e}const ve=({prefix:e,suffix:l},t)=>t.startsWith(e)&&t.endsWith(l);function je(e,l,t){return Object.entries(e).map(([n,i])=>(C(n,`Pattern '${n}' can have at most one '*' character.`),{pattern:Oe(n),substitutions:i.map(s=>{if(C(s,`Substitution '${s}' in pattern '${n}' can have at most one '*' character.`),!l&&!W.test(s))throw new Error("Non-relative paths are not allowed when 'baseUrl' is not set. Did you forget a leading './'?");return a.default.join(t,s)})}))}function Ae(e){if(!e.config.compilerOptions)return null;const{baseUrl:l,paths:t}=e.config.compilerOptions;if(!l&&!t)return null;const n=a.default.resolve(a.default.dirname(e.path),l||"."),i=t?je(t,l,n):[];return function(o){if(W.test(o))return[];const m=[];for(const p of i){if(p.pattern===o)return p.substitutions.map(_);typeof p.pattern!="string"&&m.push(p)}let f,v=-1;for(const p of m)ve(p.pattern,o)&&p.pattern.prefix.length>v&&(v=p.pattern.prefix.length,f=p);if(!f)return l?[_(a.default.join(n,o))]:[];const k=o.slice(f.pattern.prefix.length,o.length-f.pattern.suffix.length);return f.substitutions.map(p=>_(p.replace("*",k)))}}const ee=e=>{let l="";for(let t=0;tMath.floor(Math.random()*26),Be=e=>Array.from({length:e},()=>String.fromCodePoint(Le()+(Math.random()>.5?_e:de))).join(""),Ee=(e=L.default)=>{const l=process.execPath;if(e.existsSync(l))return!e.existsSync(ee(l));const t=`/${Be(10)}`;e.writeFileSync(t,"");const n=!e.existsSync(ee(t));return e.unlinkSync(t),n},{join:D}=a.default.posix,G={ts:[".ts",".tsx",".d.ts"],cts:[".cts",".d.cts"],mts:[".mts",".d.mts"]},Ue=e=>{const l=[...G.ts],t=[...G.cts],n=[...G.mts];return e!=null&&e.allowJs&&(l.push(".js",".jsx"),t.push(".cjs"),n.push(".mjs")),[...l,...t,...n]},$e=e=>{const l=[];if(!e)return l;const{outDir:t,declarationDir:n}=e;return t&&l.push(t),n&&l.push(n),l},ne=e=>e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),Fe=["node_modules","bower_components","jspm_packages"],P=`(?!(${Fe.join("|")})(/|$))`,Ne=/(?:^|\/)[^.*?]+$/,te="**/*",I="[^/]",Q="[^./]",ie=process.platform==="win32",he=({config:e,path:l},t=Ee())=>{if("extends"in e)throw new Error("tsconfig#extends must be resolved. Use getTsconfig or parseTsconfig to resolve it.");if(!a.default.isAbsolute(l))throw new Error("The tsconfig path must be absolute");ie&&(l=_(l));const n=a.default.dirname(l),{files:i,include:s,exclude:o,compilerOptions:m}=e,f=i==null?void 0:i.map(b=>D(n,b)),v=Ue(m),k=t?"":"i",$=(o||$e(m)).map(b=>{const O=D(n,b),d=ne(O).replace(/\\\*\\\*\//g,"(.+/)?").replace(/\\\*/g,`${I}*`).replace(/\\\?/g,I);return new RegExp(`^${d}($|/)`,k)}),B=i||s?s:[te],A=B?B.map(b=>{let O=D(n,b);Ne.test(O)&&(O=D(O,te));const d=ne(O).replace(/\/\\\*\\\*/g,`(/${P}${Q}${I}*)*?`).replace(/(\/)?\\\*/g,(E,u)=>{const r=`(${Q}|(\\.(?!min\\.js$))?)*`;return u?`/${P}${Q}${r}`:r}).replace(/(\/)?\\\?/g,(E,u)=>{const r=I;return u?`/${P}${r}`:r});return new RegExp(`^${d}$`,k)}):void 0;return b=>{if(!a.default.isAbsolute(b))throw new Error("filePath must be absolute");if(ie&&(b=_(b)),f!=null&&f.includes(b))return e;if(!(!v.some(O=>b.endsWith(O))||$.some(O=>O.test(b)))&&A&&A.some(O=>O.test(b)))return e}};exports.createFilesMatcher=he,exports.createPathsMatcher=Ae,exports.getTsconfig=Te,exports.parseTsconfig=J; diff --git a/node_modules/get-tsconfig/dist/index.d.cts b/node_modules/get-tsconfig/dist/index.d.cts new file mode 100644 index 0000000..eaf7fba --- /dev/null +++ b/node_modules/get-tsconfig/dist/index.d.cts @@ -0,0 +1,1278 @@ +declare global { + // eslint-disable-next-line @typescript-eslint/consistent-type-definitions -- It has to be an `interface` so that it can be merged. + interface SymbolConstructor { + readonly observable: symbol; + } +} + +/** +Returns a boolean for whether the two given types are equal. + +@link https://github.com/microsoft/TypeScript/issues/27024#issuecomment-421529650 +@link https://stackoverflow.com/questions/68961864/how-does-the-equals-work-in-typescript/68963796#68963796 +*/ +type IsEqual = + (() => G extends T ? 1 : 2) extends + (() => G extends U ? 1 : 2) + ? true + : false; + +/** +Filter out keys from an object. + +Returns `never` if `Exclude` is strictly equal to `Key`. +Returns `never` if `Key` extends `Exclude`. +Returns `Key` otherwise. + +@example +``` +type Filtered = Filter<'foo', 'foo'>; +//=> never +``` + +@example +``` +type Filtered = Filter<'bar', string>; +//=> never +``` + +@example +``` +type Filtered = Filter<'bar', 'foo'>; +//=> 'bar' +``` + +@see {Except} +*/ +type Filter = IsEqual extends true ? never : (KeyType extends ExcludeType ? never : KeyType); + +/** +Create a type from an object type without certain keys. + +This type is a stricter version of [`Omit`](https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-5.html#the-omit-helper-type). The `Omit` type does not restrict the omitted keys to be keys present on the given type, while `Except` does. The benefits of a stricter type are avoiding typos and allowing the compiler to pick up on rename refactors automatically. + +This type was proposed to the TypeScript team, which declined it, saying they prefer that libraries implement stricter versions of the built-in types ([microsoft/TypeScript#30825](https://github.com/microsoft/TypeScript/issues/30825#issuecomment-523668235)). + +@example +``` +import type {Except} from 'type-fest'; + +type Foo = { + a: number; + b: string; + c: boolean; +}; + +type FooWithoutA = Except; +//=> {b: string}; +``` + +@category Object +*/ +type Except = { + [KeyType in keyof ObjectType as Filter]: ObjectType[KeyType]; +}; + +declare namespace TsConfigJson { + namespace CompilerOptions { + export type JSX = + | 'preserve' + | 'react' + | 'react-jsx' + | 'react-jsxdev' + | 'react-native'; + + export type Module = + | 'CommonJS' + | 'AMD' + | 'System' + | 'UMD' + | 'ES6' + | 'ES2015' + | 'ES2020' + | 'ES2022' + | 'ESNext' + | 'Node16' + | 'NodeNext' + | 'None' + // Lowercase alternatives + | 'commonjs' + | 'amd' + | 'system' + | 'umd' + | 'es6' + | 'es2015' + | 'es2020' + | 'es2022' + | 'esnext' + | 'node16' + | 'nodenext' + | 'none'; + + export type NewLine = + | 'CRLF' + | 'LF' + // Lowercase alternatives + | 'crlf' + | 'lf'; + + export type Target = + | 'ES3' + | 'ES5' + | 'ES6' + | 'ES2015' + | 'ES2016' + | 'ES2017' + | 'ES2018' + | 'ES2019' + | 'ES2020' + | 'ES2021' + | 'ESNext' + // Lowercase alternatives + | 'es3' + | 'es5' + | 'es6' + | 'es2015' + | 'es2016' + | 'es2017' + | 'es2018' + | 'es2019' + | 'es2020' + | 'es2021' + | 'esnext'; + + export type Lib = + | 'ES5' + | 'ES6' + | 'ES7' + | 'ES2015' + | 'ES2015.Collection' + | 'ES2015.Core' + | 'ES2015.Generator' + | 'ES2015.Iterable' + | 'ES2015.Promise' + | 'ES2015.Proxy' + | 'ES2015.Reflect' + | 'ES2015.Symbol.WellKnown' + | 'ES2015.Symbol' + | 'ES2016' + | 'ES2016.Array.Include' + | 'ES2017' + | 'ES2017.Intl' + | 'ES2017.Object' + | 'ES2017.SharedMemory' + | 'ES2017.String' + | 'ES2017.TypedArrays' + | 'ES2018' + | 'ES2018.AsyncGenerator' + | 'ES2018.AsyncIterable' + | 'ES2018.Intl' + | 'ES2018.Promise' + | 'ES2018.Regexp' + | 'ES2019' + | 'ES2019.Array' + | 'ES2019.Object' + | 'ES2019.String' + | 'ES2019.Symbol' + | 'ES2020' + | 'ES2020.BigInt' + | 'ES2020.Promise' + | 'ES2020.String' + | 'ES2020.Symbol.WellKnown' + | 'ES2020.SharedMemory' + | 'ES2020.Intl' + | 'ES2021' + | 'ES2021.Promise' + | 'ES2021.String' + | 'ES2021.WeakRef' + | 'ESNext' + | 'ESNext.Array' + | 'ESNext.AsyncIterable' + | 'ESNext.BigInt' + | 'ESNext.Intl' + | 'ESNext.Promise' + | 'ESNext.String' + | 'ESNext.Symbol' + | 'ESNext.WeakRef' + | 'DOM' + | 'DOM.Iterable' + | 'ScriptHost' + | 'WebWorker' + | 'WebWorker.ImportScripts' + | 'WebWorker.Iterable' + // Lowercase alternatives + | 'es5' + | 'es6' + | 'es7' + | 'es2015' + | 'es2015.collection' + | 'es2015.core' + | 'es2015.generator' + | 'es2015.iterable' + | 'es2015.promise' + | 'es2015.proxy' + | 'es2015.reflect' + | 'es2015.symbol.wellknown' + | 'es2015.symbol' + | 'es2016' + | 'es2016.array.include' + | 'es2017' + | 'es2017.intl' + | 'es2017.object' + | 'es2017.sharedmemory' + | 'es2017.string' + | 'es2017.typedarrays' + | 'es2018' + | 'es2018.asyncgenerator' + | 'es2018.asynciterable' + | 'es2018.intl' + | 'es2018.promise' + | 'es2018.regexp' + | 'es2019' + | 'es2019.array' + | 'es2019.object' + | 'es2019.string' + | 'es2019.symbol' + | 'es2020' + | 'es2020.bigint' + | 'es2020.promise' + | 'es2020.string' + | 'es2020.symbol.wellknown' + | 'es2020.sharedmemory' + | 'es2020.intl' + | 'es2021' + | 'es2021.promise' + | 'es2021.string' + | 'es2021.weakref' + | 'esnext' + | 'esnext.array' + | 'esnext.asynciterable' + | 'esnext.bigint' + | 'esnext.intl' + | 'esnext.promise' + | 'esnext.string' + | 'esnext.symbol' + | 'esnext.weakref' + | 'dom' + | 'dom.iterable' + | 'scripthost' + | 'webworker' + | 'webworker.importscripts' + | 'webworker.iterable'; + + export type Plugin = { + [key: string]: unknown; + /** + Plugin name. + */ + name?: string; + }; + + export type ImportsNotUsedAsValues = + | 'remove' + | 'preserve' + | 'error'; + + export type FallbackPolling = + | 'fixedPollingInterval' + | 'priorityPollingInterval' + | 'dynamicPriorityPolling' + | 'fixedInterval' + | 'priorityInterval' + | 'dynamicPriority' + | 'fixedChunkSize'; + + export type WatchDirectory = + | 'useFsEvents' + | 'fixedPollingInterval' + | 'dynamicPriorityPolling' + | 'fixedChunkSizePolling'; + + export type WatchFile = + | 'fixedPollingInterval' + | 'priorityPollingInterval' + | 'dynamicPriorityPolling' + | 'useFsEvents' + | 'useFsEventsOnParentDirectory' + | 'fixedChunkSizePolling'; + + } + + export type CompilerOptions = { + /** + The character set of the input files. + + @default 'utf8' + */ + charset?: string; + + /** + Enables building for project references. + + @default true + */ + composite?: boolean; + + /** + Generates corresponding d.ts files. + + @default false + */ + declaration?: boolean; + + /** + Specify output directory for generated declaration files. + + Requires TypeScript version 2.0 or later. + */ + declarationDir?: string; + + /** + Show diagnostic information. + + @default false + */ + diagnostics?: boolean; + + /** + Reduce the number of projects loaded automatically by TypeScript. + + Requires TypeScript version 4.0 or later. + + @default false + */ + disableReferencedProjectLoad?: boolean; + + /** + Enforces using indexed accessors for keys declared using an indexed type. + + Requires TypeScript version 4.2 or later. + + @default false + */ + noPropertyAccessFromIndexSignature?: boolean; + + /** + Emit a UTF-8 Byte Order Mark (BOM) in the beginning of output files. + + @default false + */ + emitBOM?: boolean; + + /** + Only emit `.d.ts` declaration files. + + @default false + */ + emitDeclarationOnly?: boolean; + + /** + Differentiate between undefined and not present when type checking. + + Requires TypeScript version 4.4 or later. + + @default false + */ + exactOptionalPropertyTypes?: boolean; + + /** + Enable incremental compilation. + + @default `composite` + */ + incremental?: boolean; + + /** + Specify file to store incremental compilation information. + + @default '.tsbuildinfo' + */ + tsBuildInfoFile?: string; + + /** + Emit a single file with source maps instead of having a separate file. + + @default false + */ + inlineSourceMap?: boolean; + + /** + Emit the source alongside the sourcemaps within a single file. + + Requires `--inlineSourceMap` to be set. + + @default false + */ + inlineSources?: boolean; + + /** + Specify what JSX code is generated. + + @default 'preserve' + */ + jsx?: CompilerOptions.JSX; + + /** + Specifies the object invoked for `createElement` and `__spread` when targeting `'react'` JSX emit. + + @default 'React' + */ + reactNamespace?: string; + + /** + Specify the JSX factory function to use when targeting React JSX emit, e.g. `React.createElement` or `h`. + + Requires TypeScript version 2.1 or later. + + @default 'React.createElement' + */ + jsxFactory?: string; + + /** + Specify the JSX Fragment reference used for fragments when targeting React JSX emit e.g. 'React.Fragment' or 'Fragment'. + + Requires TypeScript version 4.0 or later. + + @default 'React.Fragment' + */ + jsxFragmentFactory?: string; + + /** + Specify module specifier used to import the JSX factory functions when using `jsx: react-jsx*`. + + Requires TypeScript version 4.1 or later. + + @default 'react' + */ + jsxImportSource?: string; + + /** + Print names of files part of the compilation. + + @default false + */ + listFiles?: boolean; + + /** + Specifies the location where debugger should locate map files instead of generated locations. + */ + mapRoot?: string; + + /** + Specify module code generation: 'None', 'CommonJS', 'AMD', 'System', 'UMD', 'ES6', 'ES2015' or 'ESNext'. Only 'AMD' and 'System' can be used in conjunction with `--outFile`. 'ES6' and 'ES2015' values may be used when targeting 'ES5' or lower. + + @default ['ES3', 'ES5'].includes(target) ? 'CommonJS' : 'ES6' + */ + module?: CompilerOptions.Module; + + /** + Specifies module resolution strategy: 'node' (Node) or 'classic' (TypeScript pre 1.6). + + @default ['AMD', 'System', 'ES6'].includes(module) ? 'classic' : 'node' + */ + moduleResolution?: 'classic' | 'node'; + + /** + Specifies the end of line sequence to be used when emitting files: 'crlf' (Windows) or 'lf' (Unix). + + Default: Platform specific + */ + newLine?: CompilerOptions.NewLine; + + /** + Do not emit output. + + @default false + */ + noEmit?: boolean; + + /** + Do not generate custom helper functions like `__extends` in compiled output. + + @default false + */ + noEmitHelpers?: boolean; + + /** + Do not emit outputs if any type checking errors were reported. + + @default false + */ + noEmitOnError?: boolean; + + /** + Warn on expressions and declarations with an implied 'any' type. + + @default false + */ + noImplicitAny?: boolean; + + /** + Raise error on 'this' expressions with an implied any type. + + @default false + */ + noImplicitThis?: boolean; + + /** + Report errors on unused locals. + + Requires TypeScript version 2.0 or later. + + @default false + */ + noUnusedLocals?: boolean; + + /** + Report errors on unused parameters. + + Requires TypeScript version 2.0 or later. + + @default false + */ + noUnusedParameters?: boolean; + + /** + Do not include the default library file (lib.d.ts). + + @default false + */ + noLib?: boolean; + + /** + Do not add triple-slash references or module import targets to the list of compiled files. + + @default false + */ + noResolve?: boolean; + + /** + Disable strict checking of generic signatures in function types. + + @default false + */ + noStrictGenericChecks?: boolean; + + /** + @deprecated use `skipLibCheck` instead. + */ + skipDefaultLibCheck?: boolean; + + /** + Skip type checking of declaration files. + + Requires TypeScript version 2.0 or later. + + @default false + */ + skipLibCheck?: boolean; + + /** + Concatenate and emit output to single file. + */ + outFile?: string; + + /** + Redirect output structure to the directory. + */ + outDir?: string; + + /** + Do not erase const enum declarations in generated code. + + @default false + */ + preserveConstEnums?: boolean; + + /** + Do not resolve symlinks to their real path; treat a symlinked file like a real one. + + @default false + */ + preserveSymlinks?: boolean; + + /** + Keep outdated console output in watch mode instead of clearing the screen. + + @default false + */ + preserveWatchOutput?: boolean; + + /** + Stylize errors and messages using color and context (experimental). + + @default true // Unless piping to another program or redirecting output to a file. + */ + pretty?: boolean; + + /** + Do not emit comments to output. + + @default false + */ + removeComments?: boolean; + + /** + Specifies the root directory of input files. + + Use to control the output directory structure with `--outDir`. + */ + rootDir?: string; + + /** + Unconditionally emit imports for unresolved files. + + @default false + */ + isolatedModules?: boolean; + + /** + Generates corresponding '.map' file. + + @default false + */ + sourceMap?: boolean; + + /** + Specifies the location where debugger should locate TypeScript files instead of source locations. + */ + sourceRoot?: string; + + /** + Suppress excess property checks for object literals. + + @default false + */ + suppressExcessPropertyErrors?: boolean; + + /** + Suppress noImplicitAny errors for indexing objects lacking index signatures. + + @default false + */ + suppressImplicitAnyIndexErrors?: boolean; + + /** + Do not emit declarations for code that has an `@internal` annotation. + */ + stripInternal?: boolean; + + /** + Specify ECMAScript target version. + + @default 'es3' + */ + target?: CompilerOptions.Target; + + /** + Default catch clause variables as `unknown` instead of `any`. + + Requires TypeScript version 4.4 or later. + + @default false + */ + useUnknownInCatchVariables?: boolean; + + /** + Watch input files. + + @default false + @deprecated Use watchOptions instead. + */ + watch?: boolean; + + /** + Specify the polling strategy to use when the system runs out of or doesn't support native file watchers. + + Requires TypeScript version 3.8 or later. + + @deprecated Use watchOptions.fallbackPolling instead. + */ + fallbackPolling?: CompilerOptions.FallbackPolling; + + /** + Specify the strategy for watching directories under systems that lack recursive file-watching functionality. + + Requires TypeScript version 3.8 or later. + + @default 'useFsEvents' + @deprecated Use watchOptions.watchDirectory instead. + */ + watchDirectory?: CompilerOptions.WatchDirectory; + + /** + Specify the strategy for watching individual files. + + Requires TypeScript version 3.8 or later. + + @default 'useFsEvents' + @deprecated Use watchOptions.watchFile instead. + */ + watchFile?: CompilerOptions.WatchFile; + + /** + Enables experimental support for ES7 decorators. + + @default false + */ + experimentalDecorators?: boolean; + + /** + Emit design-type metadata for decorated declarations in source. + + @default false + */ + emitDecoratorMetadata?: boolean; + + /** + Do not report errors on unused labels. + + @default false + */ + allowUnusedLabels?: boolean; + + /** + Report error when not all code paths in function return a value. + + @default false + */ + noImplicitReturns?: boolean; + + /** + Add `undefined` to a type when accessed using an index. + + Requires TypeScript version 4.1 or later. + + @default false + */ + noUncheckedIndexedAccess?: boolean; + + /** + Report errors for fallthrough cases in switch statement. + + @default false + */ + noFallthroughCasesInSwitch?: boolean; + + /** + Ensure overriding members in derived classes are marked with an override modifier. + + @default false + */ + noImplicitOverride?: boolean; + + /** + Do not report errors on unreachable code. + + @default false + */ + allowUnreachableCode?: boolean; + + /** + Disallow inconsistently-cased references to the same file. + + @default false + */ + forceConsistentCasingInFileNames?: boolean; + + /** + Emit a v8 CPU profile of the compiler run for debugging. + + Requires TypeScript version 3.7 or later. + + @default 'profile.cpuprofile' + */ + generateCpuProfile?: string; + + /** + Base directory to resolve non-relative module names. + */ + baseUrl?: string; + + /** + Specify path mapping to be computed relative to baseUrl option. + */ + paths?: Record; + + /** + List of TypeScript language server plugins to load. + + Requires TypeScript version 2.3 or later. + */ + plugins?: CompilerOptions.Plugin[]; + + /** + Specify list of root directories to be used when resolving modules. + */ + rootDirs?: string[]; + + /** + Specify list of directories for type definition files to be included. + + Requires TypeScript version 2.0 or later. + */ + typeRoots?: string[]; + + /** + Type declaration files to be included in compilation. + + Requires TypeScript version 2.0 or later. + */ + types?: string[]; + + /** + Enable tracing of the name resolution process. + + @default false + */ + traceResolution?: boolean; + + /** + Allow javascript files to be compiled. + + @default false + */ + allowJs?: boolean; + + /** + Do not truncate error messages. + + @default false + */ + noErrorTruncation?: boolean; + + /** + Allow default imports from modules with no default export. This does not affect code emit, just typechecking. + + @default module === 'system' || esModuleInterop + */ + allowSyntheticDefaultImports?: boolean; + + /** + Do not emit `'use strict'` directives in module output. + + @default false + */ + noImplicitUseStrict?: boolean; + + /** + Enable to list all emitted files. + + Requires TypeScript version 2.0 or later. + + @default false + */ + listEmittedFiles?: boolean; + + /** + Disable size limit for JavaScript project. + + Requires TypeScript version 2.0 or later. + + @default false + */ + disableSizeLimit?: boolean; + + /** + List of library files to be included in the compilation. + + Requires TypeScript version 2.0 or later. + */ + lib?: CompilerOptions.Lib[]; + + /** + Enable strict null checks. + + Requires TypeScript version 2.0 or later. + + @default false + */ + strictNullChecks?: boolean; + + /** + The maximum dependency depth to search under `node_modules` and load JavaScript files. Only applicable with `--allowJs`. + + @default 0 + */ + maxNodeModuleJsDepth?: number; + + /** + Import emit helpers (e.g. `__extends`, `__rest`, etc..) from tslib. + + Requires TypeScript version 2.1 or later. + + @default false + */ + importHelpers?: boolean; + + /** + Specify emit/checking behavior for imports that are only used for types. + + @default 'remove' + */ + importsNotUsedAsValues?: CompilerOptions.ImportsNotUsedAsValues; + + /** + Parse in strict mode and emit `'use strict'` for each source file. + + Requires TypeScript version 2.1 or later. + + @default false + */ + alwaysStrict?: boolean; + + /** + Enable all strict type checking options. + + Requires TypeScript version 2.3 or later. + + @default false + */ + strict?: boolean; + + /** + Enable stricter checking of of the `bind`, `call`, and `apply` methods on functions. + + @default false + */ + strictBindCallApply?: boolean; + + /** + Provide full support for iterables in `for-of`, spread, and destructuring when targeting `ES5` or `ES3`. + + Requires TypeScript version 2.3 or later. + + @default false + */ + downlevelIteration?: boolean; + + /** + Report errors in `.js` files. + + Requires TypeScript version 2.3 or later. + + @default false + */ + checkJs?: boolean; + + /** + Disable bivariant parameter checking for function types. + + Requires TypeScript version 2.6 or later. + + @default false + */ + strictFunctionTypes?: boolean; + + /** + Ensure non-undefined class properties are initialized in the constructor. + + Requires TypeScript version 2.7 or later. + + @default false + */ + strictPropertyInitialization?: boolean; + + /** + Emit `__importStar` and `__importDefault` helpers for runtime Babel ecosystem compatibility and enable `--allowSyntheticDefaultImports` for typesystem compatibility. + + Requires TypeScript version 2.7 or later. + + @default false + */ + esModuleInterop?: boolean; + + /** + Allow accessing UMD globals from modules. + + @default false + */ + allowUmdGlobalAccess?: boolean; + + /** + Resolve `keyof` to string valued property names only (no numbers or symbols). + + Requires TypeScript version 2.9 or later. + + @default false + */ + keyofStringsOnly?: boolean; + + /** + Emit ECMAScript standard class fields. + + Requires TypeScript version 3.7 or later. + + @default false + */ + useDefineForClassFields?: boolean; + + /** + Generates a sourcemap for each corresponding `.d.ts` file. + + Requires TypeScript version 2.9 or later. + + @default false + */ + declarationMap?: boolean; + + /** + Include modules imported with `.json` extension. + + Requires TypeScript version 2.9 or later. + + @default false + */ + resolveJsonModule?: boolean; + + /** + Have recompiles in '--incremental' and '--watch' assume that changes within a file will only affect files directly depending on it. + + Requires TypeScript version 3.8 or later. + + @default false + */ + assumeChangesOnlyAffectDirectDependencies?: boolean; + + /** + Output more detailed compiler performance information after building. + + @default false + */ + extendedDiagnostics?: boolean; + + /** + Print names of files that are part of the compilation and then stop processing. + + @default false + */ + listFilesOnly?: boolean; + + /** + Disable preferring source files instead of declaration files when referencing composite projects. + + @default true if composite, false otherwise + */ + disableSourceOfProjectReferenceRedirect?: boolean; + + /** + Opt a project out of multi-project reference checking when editing. + + Requires TypeScript version 3.8 or later. + + @default false + */ + disableSolutionSearching?: boolean; + + /** + Print names of files which TypeScript sees as a part of your project and the reason they are part of the compilation. + + Requires TypeScript version 4.2 or later. + + @default false + */ + explainFiles?: boolean; + }; + + namespace WatchOptions { + export type WatchFileKind = + | 'FixedPollingInterval' + | 'PriorityPollingInterval' + | 'DynamicPriorityPolling' + | 'FixedChunkSizePolling' + | 'UseFsEvents' + | 'UseFsEventsOnParentDirectory'; + + export type WatchDirectoryKind = + | 'UseFsEvents' + | 'FixedPollingInterval' + | 'DynamicPriorityPolling' + | 'FixedChunkSizePolling'; + + export type PollingWatchKind = + | 'FixedInterval' + | 'PriorityInterval' + | 'DynamicPriority' + | 'FixedChunkSize'; + } + + export type WatchOptions = { + + /** + Specify the strategy for watching individual files. + + Requires TypeScript version 3.8 or later. + + @default 'UseFsEvents' + */ + watchFile?: WatchOptions.WatchFileKind | Lowercase; + + /** + Specify the strategy for watching directories under systems that lack recursive file-watching functionality. + + Requires TypeScript version 3.8 or later. + + @default 'UseFsEvents' + */ + watchDirectory?: WatchOptions.WatchDirectoryKind | Lowercase; + + /** + Specify the polling strategy to use when the system runs out of or doesn't support native file watchers. + + Requires TypeScript version 3.8 or later. + */ + fallbackPolling?: WatchOptions.PollingWatchKind | Lowercase; + + /** + Enable synchronous updates on directory watchers for platforms that don't support recursive watching natively. + */ + synchronousWatchDirectory?: boolean; + + /** + Specifies a list of directories to exclude from watch + */ + excludeDirectories?: string[]; + + /** + Specifies a list of files to exclude from watch + */ + excludeFiles?: string[]; + }; + + /** + Auto type (.d.ts) acquisition options for this project. + + Requires TypeScript version 2.1 or later. + */ + export type TypeAcquisition = { + /** + Enable auto type acquisition. + */ + enable?: boolean; + + /** + Specifies a list of type declarations to be included in auto type acquisition. For example, `['jquery', 'lodash']`. + */ + include?: string[]; + + /** + Specifies a list of type declarations to be excluded from auto type acquisition. For example, `['jquery', 'lodash']`. + */ + exclude?: string[]; + }; + + export type References = { + /** + A normalized path on disk. + */ + path: string; + + /** + The path as the user originally wrote it. + */ + originalPath?: string; + + /** + True if the output of this reference should be prepended to the output of this project. + + Only valid for `--outFile` compilations. + */ + prepend?: boolean; + + /** + True if it is intended that this reference form a circularity. + */ + circular?: boolean; + }; +} + +/** +Type for [TypeScript's `tsconfig.json` file](https://www.typescriptlang.org/docs/handbook/tsconfig-json.html) (TypeScript 3.7). + +@category File +*/ +type TsConfigJson = { + /** + Instructs the TypeScript compiler how to compile `.ts` files. + */ + compilerOptions?: TsConfigJson.CompilerOptions; + + /** + Instructs the TypeScript compiler how to watch files. + */ + watchOptions?: TsConfigJson.WatchOptions; + + /** + Auto type (.d.ts) acquisition options for this project. + + Requires TypeScript version 2.1 or later. + */ + typeAcquisition?: TsConfigJson.TypeAcquisition; + + /** + Enable Compile-on-Save for this project. + */ + compileOnSave?: boolean; + + /** + Path to base configuration file to inherit from. + + Requires TypeScript version 2.1 or later. + */ + extends?: string; + + /** + If no `files` or `include` property is present in a `tsconfig.json`, the compiler defaults to including all files in the containing directory and subdirectories except those specified by `exclude`. When a `files` property is specified, only those files and those specified by `include` are included. + */ + files?: string[]; + + /** + Specifies a list of files to be excluded from compilation. The `exclude` property only affects the files included via the `include` property and not the `files` property. + + Glob patterns require TypeScript version 2.0 or later. + */ + exclude?: string[]; + + /** + Specifies a list of glob patterns that match files to be included in compilation. + + If no `files` or `include` property is present in a `tsconfig.json`, the compiler defaults to including all files in the containing directory and subdirectories except those specified by `exclude`. + + Requires TypeScript version 2.0 or later. + */ + include?: string[]; + + /** + Referenced projects. + + Requires TypeScript version 3.0 or later. + */ + references?: TsConfigJson.References[]; +}; + +type TsConfigJsonResolved = Except; +type TsConfigResult = { + /** + * The path to the tsconfig.json file + */ + path: string; + /** + * The resolved tsconfig.json file + */ + config: TsConfigJsonResolved; +}; + +declare function getTsconfig(searchPath?: string, configName?: string): TsConfigResult | null; + +declare function parseTsconfig(tsconfigPath: string): TsConfigJsonResolved; + +/** + * Reference: + * https://github.com/microsoft/TypeScript/blob/3ccbe804f850f40d228d3c875be952d94d39aa1d/src/compiler/moduleNameResolver.ts#L2465 + */ +declare function createPathsMatcher(tsconfig: TsConfigResult): ((specifier: string) => string[]) | null; + +type FileMatcher = (filePath: string) => (TsConfigJsonResolved | undefined); +declare const createFilesMatcher: ({ config, path: tsconfigPath, }: TsConfigResult, caseSensitivePaths?: boolean) => FileMatcher; + +export { FileMatcher, TsConfigJson, TsConfigJsonResolved, TsConfigResult, createFilesMatcher, createPathsMatcher, getTsconfig, parseTsconfig }; diff --git a/node_modules/get-tsconfig/dist/index.d.mts b/node_modules/get-tsconfig/dist/index.d.mts new file mode 100644 index 0000000..eaf7fba --- /dev/null +++ b/node_modules/get-tsconfig/dist/index.d.mts @@ -0,0 +1,1278 @@ +declare global { + // eslint-disable-next-line @typescript-eslint/consistent-type-definitions -- It has to be an `interface` so that it can be merged. + interface SymbolConstructor { + readonly observable: symbol; + } +} + +/** +Returns a boolean for whether the two given types are equal. + +@link https://github.com/microsoft/TypeScript/issues/27024#issuecomment-421529650 +@link https://stackoverflow.com/questions/68961864/how-does-the-equals-work-in-typescript/68963796#68963796 +*/ +type IsEqual = + (() => G extends T ? 1 : 2) extends + (() => G extends U ? 1 : 2) + ? true + : false; + +/** +Filter out keys from an object. + +Returns `never` if `Exclude` is strictly equal to `Key`. +Returns `never` if `Key` extends `Exclude`. +Returns `Key` otherwise. + +@example +``` +type Filtered = Filter<'foo', 'foo'>; +//=> never +``` + +@example +``` +type Filtered = Filter<'bar', string>; +//=> never +``` + +@example +``` +type Filtered = Filter<'bar', 'foo'>; +//=> 'bar' +``` + +@see {Except} +*/ +type Filter = IsEqual extends true ? never : (KeyType extends ExcludeType ? never : KeyType); + +/** +Create a type from an object type without certain keys. + +This type is a stricter version of [`Omit`](https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-5.html#the-omit-helper-type). The `Omit` type does not restrict the omitted keys to be keys present on the given type, while `Except` does. The benefits of a stricter type are avoiding typos and allowing the compiler to pick up on rename refactors automatically. + +This type was proposed to the TypeScript team, which declined it, saying they prefer that libraries implement stricter versions of the built-in types ([microsoft/TypeScript#30825](https://github.com/microsoft/TypeScript/issues/30825#issuecomment-523668235)). + +@example +``` +import type {Except} from 'type-fest'; + +type Foo = { + a: number; + b: string; + c: boolean; +}; + +type FooWithoutA = Except; +//=> {b: string}; +``` + +@category Object +*/ +type Except = { + [KeyType in keyof ObjectType as Filter]: ObjectType[KeyType]; +}; + +declare namespace TsConfigJson { + namespace CompilerOptions { + export type JSX = + | 'preserve' + | 'react' + | 'react-jsx' + | 'react-jsxdev' + | 'react-native'; + + export type Module = + | 'CommonJS' + | 'AMD' + | 'System' + | 'UMD' + | 'ES6' + | 'ES2015' + | 'ES2020' + | 'ES2022' + | 'ESNext' + | 'Node16' + | 'NodeNext' + | 'None' + // Lowercase alternatives + | 'commonjs' + | 'amd' + | 'system' + | 'umd' + | 'es6' + | 'es2015' + | 'es2020' + | 'es2022' + | 'esnext' + | 'node16' + | 'nodenext' + | 'none'; + + export type NewLine = + | 'CRLF' + | 'LF' + // Lowercase alternatives + | 'crlf' + | 'lf'; + + export type Target = + | 'ES3' + | 'ES5' + | 'ES6' + | 'ES2015' + | 'ES2016' + | 'ES2017' + | 'ES2018' + | 'ES2019' + | 'ES2020' + | 'ES2021' + | 'ESNext' + // Lowercase alternatives + | 'es3' + | 'es5' + | 'es6' + | 'es2015' + | 'es2016' + | 'es2017' + | 'es2018' + | 'es2019' + | 'es2020' + | 'es2021' + | 'esnext'; + + export type Lib = + | 'ES5' + | 'ES6' + | 'ES7' + | 'ES2015' + | 'ES2015.Collection' + | 'ES2015.Core' + | 'ES2015.Generator' + | 'ES2015.Iterable' + | 'ES2015.Promise' + | 'ES2015.Proxy' + | 'ES2015.Reflect' + | 'ES2015.Symbol.WellKnown' + | 'ES2015.Symbol' + | 'ES2016' + | 'ES2016.Array.Include' + | 'ES2017' + | 'ES2017.Intl' + | 'ES2017.Object' + | 'ES2017.SharedMemory' + | 'ES2017.String' + | 'ES2017.TypedArrays' + | 'ES2018' + | 'ES2018.AsyncGenerator' + | 'ES2018.AsyncIterable' + | 'ES2018.Intl' + | 'ES2018.Promise' + | 'ES2018.Regexp' + | 'ES2019' + | 'ES2019.Array' + | 'ES2019.Object' + | 'ES2019.String' + | 'ES2019.Symbol' + | 'ES2020' + | 'ES2020.BigInt' + | 'ES2020.Promise' + | 'ES2020.String' + | 'ES2020.Symbol.WellKnown' + | 'ES2020.SharedMemory' + | 'ES2020.Intl' + | 'ES2021' + | 'ES2021.Promise' + | 'ES2021.String' + | 'ES2021.WeakRef' + | 'ESNext' + | 'ESNext.Array' + | 'ESNext.AsyncIterable' + | 'ESNext.BigInt' + | 'ESNext.Intl' + | 'ESNext.Promise' + | 'ESNext.String' + | 'ESNext.Symbol' + | 'ESNext.WeakRef' + | 'DOM' + | 'DOM.Iterable' + | 'ScriptHost' + | 'WebWorker' + | 'WebWorker.ImportScripts' + | 'WebWorker.Iterable' + // Lowercase alternatives + | 'es5' + | 'es6' + | 'es7' + | 'es2015' + | 'es2015.collection' + | 'es2015.core' + | 'es2015.generator' + | 'es2015.iterable' + | 'es2015.promise' + | 'es2015.proxy' + | 'es2015.reflect' + | 'es2015.symbol.wellknown' + | 'es2015.symbol' + | 'es2016' + | 'es2016.array.include' + | 'es2017' + | 'es2017.intl' + | 'es2017.object' + | 'es2017.sharedmemory' + | 'es2017.string' + | 'es2017.typedarrays' + | 'es2018' + | 'es2018.asyncgenerator' + | 'es2018.asynciterable' + | 'es2018.intl' + | 'es2018.promise' + | 'es2018.regexp' + | 'es2019' + | 'es2019.array' + | 'es2019.object' + | 'es2019.string' + | 'es2019.symbol' + | 'es2020' + | 'es2020.bigint' + | 'es2020.promise' + | 'es2020.string' + | 'es2020.symbol.wellknown' + | 'es2020.sharedmemory' + | 'es2020.intl' + | 'es2021' + | 'es2021.promise' + | 'es2021.string' + | 'es2021.weakref' + | 'esnext' + | 'esnext.array' + | 'esnext.asynciterable' + | 'esnext.bigint' + | 'esnext.intl' + | 'esnext.promise' + | 'esnext.string' + | 'esnext.symbol' + | 'esnext.weakref' + | 'dom' + | 'dom.iterable' + | 'scripthost' + | 'webworker' + | 'webworker.importscripts' + | 'webworker.iterable'; + + export type Plugin = { + [key: string]: unknown; + /** + Plugin name. + */ + name?: string; + }; + + export type ImportsNotUsedAsValues = + | 'remove' + | 'preserve' + | 'error'; + + export type FallbackPolling = + | 'fixedPollingInterval' + | 'priorityPollingInterval' + | 'dynamicPriorityPolling' + | 'fixedInterval' + | 'priorityInterval' + | 'dynamicPriority' + | 'fixedChunkSize'; + + export type WatchDirectory = + | 'useFsEvents' + | 'fixedPollingInterval' + | 'dynamicPriorityPolling' + | 'fixedChunkSizePolling'; + + export type WatchFile = + | 'fixedPollingInterval' + | 'priorityPollingInterval' + | 'dynamicPriorityPolling' + | 'useFsEvents' + | 'useFsEventsOnParentDirectory' + | 'fixedChunkSizePolling'; + + } + + export type CompilerOptions = { + /** + The character set of the input files. + + @default 'utf8' + */ + charset?: string; + + /** + Enables building for project references. + + @default true + */ + composite?: boolean; + + /** + Generates corresponding d.ts files. + + @default false + */ + declaration?: boolean; + + /** + Specify output directory for generated declaration files. + + Requires TypeScript version 2.0 or later. + */ + declarationDir?: string; + + /** + Show diagnostic information. + + @default false + */ + diagnostics?: boolean; + + /** + Reduce the number of projects loaded automatically by TypeScript. + + Requires TypeScript version 4.0 or later. + + @default false + */ + disableReferencedProjectLoad?: boolean; + + /** + Enforces using indexed accessors for keys declared using an indexed type. + + Requires TypeScript version 4.2 or later. + + @default false + */ + noPropertyAccessFromIndexSignature?: boolean; + + /** + Emit a UTF-8 Byte Order Mark (BOM) in the beginning of output files. + + @default false + */ + emitBOM?: boolean; + + /** + Only emit `.d.ts` declaration files. + + @default false + */ + emitDeclarationOnly?: boolean; + + /** + Differentiate between undefined and not present when type checking. + + Requires TypeScript version 4.4 or later. + + @default false + */ + exactOptionalPropertyTypes?: boolean; + + /** + Enable incremental compilation. + + @default `composite` + */ + incremental?: boolean; + + /** + Specify file to store incremental compilation information. + + @default '.tsbuildinfo' + */ + tsBuildInfoFile?: string; + + /** + Emit a single file with source maps instead of having a separate file. + + @default false + */ + inlineSourceMap?: boolean; + + /** + Emit the source alongside the sourcemaps within a single file. + + Requires `--inlineSourceMap` to be set. + + @default false + */ + inlineSources?: boolean; + + /** + Specify what JSX code is generated. + + @default 'preserve' + */ + jsx?: CompilerOptions.JSX; + + /** + Specifies the object invoked for `createElement` and `__spread` when targeting `'react'` JSX emit. + + @default 'React' + */ + reactNamespace?: string; + + /** + Specify the JSX factory function to use when targeting React JSX emit, e.g. `React.createElement` or `h`. + + Requires TypeScript version 2.1 or later. + + @default 'React.createElement' + */ + jsxFactory?: string; + + /** + Specify the JSX Fragment reference used for fragments when targeting React JSX emit e.g. 'React.Fragment' or 'Fragment'. + + Requires TypeScript version 4.0 or later. + + @default 'React.Fragment' + */ + jsxFragmentFactory?: string; + + /** + Specify module specifier used to import the JSX factory functions when using `jsx: react-jsx*`. + + Requires TypeScript version 4.1 or later. + + @default 'react' + */ + jsxImportSource?: string; + + /** + Print names of files part of the compilation. + + @default false + */ + listFiles?: boolean; + + /** + Specifies the location where debugger should locate map files instead of generated locations. + */ + mapRoot?: string; + + /** + Specify module code generation: 'None', 'CommonJS', 'AMD', 'System', 'UMD', 'ES6', 'ES2015' or 'ESNext'. Only 'AMD' and 'System' can be used in conjunction with `--outFile`. 'ES6' and 'ES2015' values may be used when targeting 'ES5' or lower. + + @default ['ES3', 'ES5'].includes(target) ? 'CommonJS' : 'ES6' + */ + module?: CompilerOptions.Module; + + /** + Specifies module resolution strategy: 'node' (Node) or 'classic' (TypeScript pre 1.6). + + @default ['AMD', 'System', 'ES6'].includes(module) ? 'classic' : 'node' + */ + moduleResolution?: 'classic' | 'node'; + + /** + Specifies the end of line sequence to be used when emitting files: 'crlf' (Windows) or 'lf' (Unix). + + Default: Platform specific + */ + newLine?: CompilerOptions.NewLine; + + /** + Do not emit output. + + @default false + */ + noEmit?: boolean; + + /** + Do not generate custom helper functions like `__extends` in compiled output. + + @default false + */ + noEmitHelpers?: boolean; + + /** + Do not emit outputs if any type checking errors were reported. + + @default false + */ + noEmitOnError?: boolean; + + /** + Warn on expressions and declarations with an implied 'any' type. + + @default false + */ + noImplicitAny?: boolean; + + /** + Raise error on 'this' expressions with an implied any type. + + @default false + */ + noImplicitThis?: boolean; + + /** + Report errors on unused locals. + + Requires TypeScript version 2.0 or later. + + @default false + */ + noUnusedLocals?: boolean; + + /** + Report errors on unused parameters. + + Requires TypeScript version 2.0 or later. + + @default false + */ + noUnusedParameters?: boolean; + + /** + Do not include the default library file (lib.d.ts). + + @default false + */ + noLib?: boolean; + + /** + Do not add triple-slash references or module import targets to the list of compiled files. + + @default false + */ + noResolve?: boolean; + + /** + Disable strict checking of generic signatures in function types. + + @default false + */ + noStrictGenericChecks?: boolean; + + /** + @deprecated use `skipLibCheck` instead. + */ + skipDefaultLibCheck?: boolean; + + /** + Skip type checking of declaration files. + + Requires TypeScript version 2.0 or later. + + @default false + */ + skipLibCheck?: boolean; + + /** + Concatenate and emit output to single file. + */ + outFile?: string; + + /** + Redirect output structure to the directory. + */ + outDir?: string; + + /** + Do not erase const enum declarations in generated code. + + @default false + */ + preserveConstEnums?: boolean; + + /** + Do not resolve symlinks to their real path; treat a symlinked file like a real one. + + @default false + */ + preserveSymlinks?: boolean; + + /** + Keep outdated console output in watch mode instead of clearing the screen. + + @default false + */ + preserveWatchOutput?: boolean; + + /** + Stylize errors and messages using color and context (experimental). + + @default true // Unless piping to another program or redirecting output to a file. + */ + pretty?: boolean; + + /** + Do not emit comments to output. + + @default false + */ + removeComments?: boolean; + + /** + Specifies the root directory of input files. + + Use to control the output directory structure with `--outDir`. + */ + rootDir?: string; + + /** + Unconditionally emit imports for unresolved files. + + @default false + */ + isolatedModules?: boolean; + + /** + Generates corresponding '.map' file. + + @default false + */ + sourceMap?: boolean; + + /** + Specifies the location where debugger should locate TypeScript files instead of source locations. + */ + sourceRoot?: string; + + /** + Suppress excess property checks for object literals. + + @default false + */ + suppressExcessPropertyErrors?: boolean; + + /** + Suppress noImplicitAny errors for indexing objects lacking index signatures. + + @default false + */ + suppressImplicitAnyIndexErrors?: boolean; + + /** + Do not emit declarations for code that has an `@internal` annotation. + */ + stripInternal?: boolean; + + /** + Specify ECMAScript target version. + + @default 'es3' + */ + target?: CompilerOptions.Target; + + /** + Default catch clause variables as `unknown` instead of `any`. + + Requires TypeScript version 4.4 or later. + + @default false + */ + useUnknownInCatchVariables?: boolean; + + /** + Watch input files. + + @default false + @deprecated Use watchOptions instead. + */ + watch?: boolean; + + /** + Specify the polling strategy to use when the system runs out of or doesn't support native file watchers. + + Requires TypeScript version 3.8 or later. + + @deprecated Use watchOptions.fallbackPolling instead. + */ + fallbackPolling?: CompilerOptions.FallbackPolling; + + /** + Specify the strategy for watching directories under systems that lack recursive file-watching functionality. + + Requires TypeScript version 3.8 or later. + + @default 'useFsEvents' + @deprecated Use watchOptions.watchDirectory instead. + */ + watchDirectory?: CompilerOptions.WatchDirectory; + + /** + Specify the strategy for watching individual files. + + Requires TypeScript version 3.8 or later. + + @default 'useFsEvents' + @deprecated Use watchOptions.watchFile instead. + */ + watchFile?: CompilerOptions.WatchFile; + + /** + Enables experimental support for ES7 decorators. + + @default false + */ + experimentalDecorators?: boolean; + + /** + Emit design-type metadata for decorated declarations in source. + + @default false + */ + emitDecoratorMetadata?: boolean; + + /** + Do not report errors on unused labels. + + @default false + */ + allowUnusedLabels?: boolean; + + /** + Report error when not all code paths in function return a value. + + @default false + */ + noImplicitReturns?: boolean; + + /** + Add `undefined` to a type when accessed using an index. + + Requires TypeScript version 4.1 or later. + + @default false + */ + noUncheckedIndexedAccess?: boolean; + + /** + Report errors for fallthrough cases in switch statement. + + @default false + */ + noFallthroughCasesInSwitch?: boolean; + + /** + Ensure overriding members in derived classes are marked with an override modifier. + + @default false + */ + noImplicitOverride?: boolean; + + /** + Do not report errors on unreachable code. + + @default false + */ + allowUnreachableCode?: boolean; + + /** + Disallow inconsistently-cased references to the same file. + + @default false + */ + forceConsistentCasingInFileNames?: boolean; + + /** + Emit a v8 CPU profile of the compiler run for debugging. + + Requires TypeScript version 3.7 or later. + + @default 'profile.cpuprofile' + */ + generateCpuProfile?: string; + + /** + Base directory to resolve non-relative module names. + */ + baseUrl?: string; + + /** + Specify path mapping to be computed relative to baseUrl option. + */ + paths?: Record; + + /** + List of TypeScript language server plugins to load. + + Requires TypeScript version 2.3 or later. + */ + plugins?: CompilerOptions.Plugin[]; + + /** + Specify list of root directories to be used when resolving modules. + */ + rootDirs?: string[]; + + /** + Specify list of directories for type definition files to be included. + + Requires TypeScript version 2.0 or later. + */ + typeRoots?: string[]; + + /** + Type declaration files to be included in compilation. + + Requires TypeScript version 2.0 or later. + */ + types?: string[]; + + /** + Enable tracing of the name resolution process. + + @default false + */ + traceResolution?: boolean; + + /** + Allow javascript files to be compiled. + + @default false + */ + allowJs?: boolean; + + /** + Do not truncate error messages. + + @default false + */ + noErrorTruncation?: boolean; + + /** + Allow default imports from modules with no default export. This does not affect code emit, just typechecking. + + @default module === 'system' || esModuleInterop + */ + allowSyntheticDefaultImports?: boolean; + + /** + Do not emit `'use strict'` directives in module output. + + @default false + */ + noImplicitUseStrict?: boolean; + + /** + Enable to list all emitted files. + + Requires TypeScript version 2.0 or later. + + @default false + */ + listEmittedFiles?: boolean; + + /** + Disable size limit for JavaScript project. + + Requires TypeScript version 2.0 or later. + + @default false + */ + disableSizeLimit?: boolean; + + /** + List of library files to be included in the compilation. + + Requires TypeScript version 2.0 or later. + */ + lib?: CompilerOptions.Lib[]; + + /** + Enable strict null checks. + + Requires TypeScript version 2.0 or later. + + @default false + */ + strictNullChecks?: boolean; + + /** + The maximum dependency depth to search under `node_modules` and load JavaScript files. Only applicable with `--allowJs`. + + @default 0 + */ + maxNodeModuleJsDepth?: number; + + /** + Import emit helpers (e.g. `__extends`, `__rest`, etc..) from tslib. + + Requires TypeScript version 2.1 or later. + + @default false + */ + importHelpers?: boolean; + + /** + Specify emit/checking behavior for imports that are only used for types. + + @default 'remove' + */ + importsNotUsedAsValues?: CompilerOptions.ImportsNotUsedAsValues; + + /** + Parse in strict mode and emit `'use strict'` for each source file. + + Requires TypeScript version 2.1 or later. + + @default false + */ + alwaysStrict?: boolean; + + /** + Enable all strict type checking options. + + Requires TypeScript version 2.3 or later. + + @default false + */ + strict?: boolean; + + /** + Enable stricter checking of of the `bind`, `call`, and `apply` methods on functions. + + @default false + */ + strictBindCallApply?: boolean; + + /** + Provide full support for iterables in `for-of`, spread, and destructuring when targeting `ES5` or `ES3`. + + Requires TypeScript version 2.3 or later. + + @default false + */ + downlevelIteration?: boolean; + + /** + Report errors in `.js` files. + + Requires TypeScript version 2.3 or later. + + @default false + */ + checkJs?: boolean; + + /** + Disable bivariant parameter checking for function types. + + Requires TypeScript version 2.6 or later. + + @default false + */ + strictFunctionTypes?: boolean; + + /** + Ensure non-undefined class properties are initialized in the constructor. + + Requires TypeScript version 2.7 or later. + + @default false + */ + strictPropertyInitialization?: boolean; + + /** + Emit `__importStar` and `__importDefault` helpers for runtime Babel ecosystem compatibility and enable `--allowSyntheticDefaultImports` for typesystem compatibility. + + Requires TypeScript version 2.7 or later. + + @default false + */ + esModuleInterop?: boolean; + + /** + Allow accessing UMD globals from modules. + + @default false + */ + allowUmdGlobalAccess?: boolean; + + /** + Resolve `keyof` to string valued property names only (no numbers or symbols). + + Requires TypeScript version 2.9 or later. + + @default false + */ + keyofStringsOnly?: boolean; + + /** + Emit ECMAScript standard class fields. + + Requires TypeScript version 3.7 or later. + + @default false + */ + useDefineForClassFields?: boolean; + + /** + Generates a sourcemap for each corresponding `.d.ts` file. + + Requires TypeScript version 2.9 or later. + + @default false + */ + declarationMap?: boolean; + + /** + Include modules imported with `.json` extension. + + Requires TypeScript version 2.9 or later. + + @default false + */ + resolveJsonModule?: boolean; + + /** + Have recompiles in '--incremental' and '--watch' assume that changes within a file will only affect files directly depending on it. + + Requires TypeScript version 3.8 or later. + + @default false + */ + assumeChangesOnlyAffectDirectDependencies?: boolean; + + /** + Output more detailed compiler performance information after building. + + @default false + */ + extendedDiagnostics?: boolean; + + /** + Print names of files that are part of the compilation and then stop processing. + + @default false + */ + listFilesOnly?: boolean; + + /** + Disable preferring source files instead of declaration files when referencing composite projects. + + @default true if composite, false otherwise + */ + disableSourceOfProjectReferenceRedirect?: boolean; + + /** + Opt a project out of multi-project reference checking when editing. + + Requires TypeScript version 3.8 or later. + + @default false + */ + disableSolutionSearching?: boolean; + + /** + Print names of files which TypeScript sees as a part of your project and the reason they are part of the compilation. + + Requires TypeScript version 4.2 or later. + + @default false + */ + explainFiles?: boolean; + }; + + namespace WatchOptions { + export type WatchFileKind = + | 'FixedPollingInterval' + | 'PriorityPollingInterval' + | 'DynamicPriorityPolling' + | 'FixedChunkSizePolling' + | 'UseFsEvents' + | 'UseFsEventsOnParentDirectory'; + + export type WatchDirectoryKind = + | 'UseFsEvents' + | 'FixedPollingInterval' + | 'DynamicPriorityPolling' + | 'FixedChunkSizePolling'; + + export type PollingWatchKind = + | 'FixedInterval' + | 'PriorityInterval' + | 'DynamicPriority' + | 'FixedChunkSize'; + } + + export type WatchOptions = { + + /** + Specify the strategy for watching individual files. + + Requires TypeScript version 3.8 or later. + + @default 'UseFsEvents' + */ + watchFile?: WatchOptions.WatchFileKind | Lowercase; + + /** + Specify the strategy for watching directories under systems that lack recursive file-watching functionality. + + Requires TypeScript version 3.8 or later. + + @default 'UseFsEvents' + */ + watchDirectory?: WatchOptions.WatchDirectoryKind | Lowercase; + + /** + Specify the polling strategy to use when the system runs out of or doesn't support native file watchers. + + Requires TypeScript version 3.8 or later. + */ + fallbackPolling?: WatchOptions.PollingWatchKind | Lowercase; + + /** + Enable synchronous updates on directory watchers for platforms that don't support recursive watching natively. + */ + synchronousWatchDirectory?: boolean; + + /** + Specifies a list of directories to exclude from watch + */ + excludeDirectories?: string[]; + + /** + Specifies a list of files to exclude from watch + */ + excludeFiles?: string[]; + }; + + /** + Auto type (.d.ts) acquisition options for this project. + + Requires TypeScript version 2.1 or later. + */ + export type TypeAcquisition = { + /** + Enable auto type acquisition. + */ + enable?: boolean; + + /** + Specifies a list of type declarations to be included in auto type acquisition. For example, `['jquery', 'lodash']`. + */ + include?: string[]; + + /** + Specifies a list of type declarations to be excluded from auto type acquisition. For example, `['jquery', 'lodash']`. + */ + exclude?: string[]; + }; + + export type References = { + /** + A normalized path on disk. + */ + path: string; + + /** + The path as the user originally wrote it. + */ + originalPath?: string; + + /** + True if the output of this reference should be prepended to the output of this project. + + Only valid for `--outFile` compilations. + */ + prepend?: boolean; + + /** + True if it is intended that this reference form a circularity. + */ + circular?: boolean; + }; +} + +/** +Type for [TypeScript's `tsconfig.json` file](https://www.typescriptlang.org/docs/handbook/tsconfig-json.html) (TypeScript 3.7). + +@category File +*/ +type TsConfigJson = { + /** + Instructs the TypeScript compiler how to compile `.ts` files. + */ + compilerOptions?: TsConfigJson.CompilerOptions; + + /** + Instructs the TypeScript compiler how to watch files. + */ + watchOptions?: TsConfigJson.WatchOptions; + + /** + Auto type (.d.ts) acquisition options for this project. + + Requires TypeScript version 2.1 or later. + */ + typeAcquisition?: TsConfigJson.TypeAcquisition; + + /** + Enable Compile-on-Save for this project. + */ + compileOnSave?: boolean; + + /** + Path to base configuration file to inherit from. + + Requires TypeScript version 2.1 or later. + */ + extends?: string; + + /** + If no `files` or `include` property is present in a `tsconfig.json`, the compiler defaults to including all files in the containing directory and subdirectories except those specified by `exclude`. When a `files` property is specified, only those files and those specified by `include` are included. + */ + files?: string[]; + + /** + Specifies a list of files to be excluded from compilation. The `exclude` property only affects the files included via the `include` property and not the `files` property. + + Glob patterns require TypeScript version 2.0 or later. + */ + exclude?: string[]; + + /** + Specifies a list of glob patterns that match files to be included in compilation. + + If no `files` or `include` property is present in a `tsconfig.json`, the compiler defaults to including all files in the containing directory and subdirectories except those specified by `exclude`. + + Requires TypeScript version 2.0 or later. + */ + include?: string[]; + + /** + Referenced projects. + + Requires TypeScript version 3.0 or later. + */ + references?: TsConfigJson.References[]; +}; + +type TsConfigJsonResolved = Except; +type TsConfigResult = { + /** + * The path to the tsconfig.json file + */ + path: string; + /** + * The resolved tsconfig.json file + */ + config: TsConfigJsonResolved; +}; + +declare function getTsconfig(searchPath?: string, configName?: string): TsConfigResult | null; + +declare function parseTsconfig(tsconfigPath: string): TsConfigJsonResolved; + +/** + * Reference: + * https://github.com/microsoft/TypeScript/blob/3ccbe804f850f40d228d3c875be952d94d39aa1d/src/compiler/moduleNameResolver.ts#L2465 + */ +declare function createPathsMatcher(tsconfig: TsConfigResult): ((specifier: string) => string[]) | null; + +type FileMatcher = (filePath: string) => (TsConfigJsonResolved | undefined); +declare const createFilesMatcher: ({ config, path: tsconfigPath, }: TsConfigResult, caseSensitivePaths?: boolean) => FileMatcher; + +export { FileMatcher, TsConfigJson, TsConfigJsonResolved, TsConfigResult, createFilesMatcher, createPathsMatcher, getTsconfig, parseTsconfig }; diff --git a/node_modules/get-tsconfig/dist/index.mjs b/node_modules/get-tsconfig/dist/index.mjs new file mode 100755 index 0000000..d609fbf --- /dev/null +++ b/node_modules/get-tsconfig/dist/index.mjs @@ -0,0 +1,3 @@ +import g from"path";import E from"fs";import cn from"module";function L(n){return/^\\\\\?\\/.test(n)?n:n.replace(/\\/g,"/")}function W(n,o){for(;;){const t=g.posix.join(n,o);if(E.existsSync(t))return t;const e=g.dirname(n);if(e===n)return;n=e}}const x=/^\.{1,2}(\/.*)?$/,M=n=>L(x.test(n)?n:`./${n}`);function un(n,o=!1){const t=n.length;let e=0,i="",s=0,l=16,a=0,u=0,j=0,k=0,p=0;function F(c,r){let f=0,v=0;for(;f=48&&T<=57)v=v*16+T-48;else if(T>=65&&T<=70)v=v*16+T-65+10;else if(T>=97&&T<=102)v=v*16+T-97+10;else break;e++,f++}return f=t){c+=n.substring(r,e),p=2;break}const f=n.charCodeAt(e);if(f===34){c+=n.substring(r,e),e++;break}if(f===92){if(c+=n.substring(r,e),e++,e>=t){p=2;break}switch(n.charCodeAt(e++)){case 34:c+='"';break;case 92:c+="\\";break;case 47:c+="/";break;case 98:c+="\b";break;case 102:c+="\f";break;case 110:c+=` +`;break;case 114:c+="\r";break;case 116:c+=" ";break;case 117:const T=F(4,!0);T>=0?c+=String.fromCharCode(T):p=4;break;default:p=5}r=e;continue}if(f>=0&&f<=31)if(N(f)){c+=n.substring(r,e),p=2;break}else p=6;e++}return c}function O(){if(i="",p=0,s=e,u=a,k=j,e>=t)return s=t,l=17;let c=n.charCodeAt(e);if(R(c)){do e++,i+=String.fromCharCode(c),c=n.charCodeAt(e);while(R(c));return l=15}if(N(c))return e++,i+=String.fromCharCode(c),c===13&&n.charCodeAt(e)===10&&(e++,i+=` +`),a++,j=e,l=14;switch(c){case 123:return e++,l=1;case 125:return e++,l=2;case 91:return e++,l=3;case 93:return e++,l=4;case 58:return e++,l=6;case 44:return e++,l=5;case 34:return e++,i=b(),l=10;case 47:const r=e-1;if(n.charCodeAt(e+1)===47){for(e+=2;e=12&&c<=15);return c}return{setPosition:U,getPosition:()=>e,scan:o?$:O,getToken:()=>l,getTokenValue:()=>i,getTokenOffset:()=>s,getTokenLength:()=>e-s,getTokenStartLine:()=>u,getTokenStartCharacter:()=>s-k,getTokenError:()=>p}}function R(n){return n===32||n===9}function N(n){return n===10||n===13}function _(n){return n>=48&&n<=57}var P;(function(n){n[n.lineFeed=10]="lineFeed",n[n.carriageReturn=13]="carriageReturn",n[n.space=32]="space",n[n._0=48]="_0",n[n._1=49]="_1",n[n._2=50]="_2",n[n._3=51]="_3",n[n._4=52]="_4",n[n._5=53]="_5",n[n._6=54]="_6",n[n._7=55]="_7",n[n._8=56]="_8",n[n._9=57]="_9",n[n.a=97]="a",n[n.b=98]="b",n[n.c=99]="c",n[n.d=100]="d",n[n.e=101]="e",n[n.f=102]="f",n[n.g=103]="g",n[n.h=104]="h",n[n.i=105]="i",n[n.j=106]="j",n[n.k=107]="k",n[n.l=108]="l",n[n.m=109]="m",n[n.n=110]="n",n[n.o=111]="o",n[n.p=112]="p",n[n.q=113]="q",n[n.r=114]="r",n[n.s=115]="s",n[n.t=116]="t",n[n.u=117]="u",n[n.v=118]="v",n[n.w=119]="w",n[n.x=120]="x",n[n.y=121]="y",n[n.z=122]="z",n[n.A=65]="A",n[n.B=66]="B",n[n.C=67]="C",n[n.D=68]="D",n[n.E=69]="E",n[n.F=70]="F",n[n.G=71]="G",n[n.H=72]="H",n[n.I=73]="I",n[n.J=74]="J",n[n.K=75]="K",n[n.L=76]="L",n[n.M=77]="M",n[n.N=78]="N",n[n.O=79]="O",n[n.P=80]="P",n[n.Q=81]="Q",n[n.R=82]="R",n[n.S=83]="S",n[n.T=84]="T",n[n.U=85]="U",n[n.V=86]="V",n[n.W=87]="W",n[n.X=88]="X",n[n.Y=89]="Y",n[n.Z=90]="Z",n[n.asterisk=42]="asterisk",n[n.backslash=92]="backslash",n[n.closeBrace=125]="closeBrace",n[n.closeBracket=93]="closeBracket",n[n.colon=58]="colon",n[n.comma=44]="comma",n[n.dot=46]="dot",n[n.doubleQuote=34]="doubleQuote",n[n.minus=45]="minus",n[n.openBrace=123]="openBrace",n[n.openBracket=91]="openBracket",n[n.plus=43]="plus",n[n.slash=47]="slash",n[n.formFeed=12]="formFeed",n[n.tab=9]="tab"})(P||(P={}));var h;(function(n){n.DEFAULT={allowTrailingComma:!1}})(h||(h={}));function fn(n,o=[],t=h.DEFAULT){let e=null,i=[];const s=[];function l(u){Array.isArray(i)?i.push(u):e!==null&&(i[e]=u)}return rn(n,{onObjectBegin:()=>{const u={};l(u),s.push(i),i=u,e=null},onObjectProperty:u=>{e=u},onObjectEnd:()=>{i=s.pop()},onArrayBegin:()=>{const u=[];l(u),s.push(i),i=u,e=null},onArrayEnd:()=>{i=s.pop()},onLiteralValue:l,onError:(u,j,k)=>{o.push({error:u,offset:j,length:k})}},t),i[0]}function rn(n,o,t=h.DEFAULT){const e=un(n,!1),i=[];function s(m){return m?()=>m(e.getTokenOffset(),e.getTokenLength(),e.getTokenStartLine(),e.getTokenStartCharacter()):()=>!0}function l(m){return m?()=>m(e.getTokenOffset(),e.getTokenLength(),e.getTokenStartLine(),e.getTokenStartCharacter(),()=>i.slice()):()=>!0}function a(m){return m?w=>m(w,e.getTokenOffset(),e.getTokenLength(),e.getTokenStartLine(),e.getTokenStartCharacter()):()=>!0}function u(m){return m?w=>m(w,e.getTokenOffset(),e.getTokenLength(),e.getTokenStartLine(),e.getTokenStartCharacter(),()=>i.slice()):()=>!0}const j=l(o.onObjectBegin),k=u(o.onObjectProperty),p=s(o.onObjectEnd),F=l(o.onArrayBegin),U=s(o.onArrayEnd),A=u(o.onLiteralValue),b=a(o.onSeparator),O=s(o.onComment),B=a(o.onError),$=t&&t.disallowComments,c=t&&t.allowTrailingComma;function r(){for(;;){const m=e.scan();switch(e.getTokenError()){case 4:f(14);break;case 5:f(15);break;case 3:f(13);break;case 1:$||f(11);break;case 2:f(12);break;case 6:f(16);break}switch(m){case 12:case 13:$?f(10):O();break;case 16:f(1);break;case 15:case 14:break;default:return m}}}function f(m,w=[],H=[]){if(B(m),w.length+H.length>0){let I=e.getToken();for(;I!==17;){if(w.indexOf(I)!==-1){r();break}else if(H.indexOf(I)!==-1)break;I=r()}}}function v(m){const w=e.getTokenValue();return m?A(w):(k(w),i.push(w)),r(),!0}function T(){switch(e.getToken()){case 11:const m=e.getTokenValue();let w=Number(m);isNaN(w)&&(f(2),w=0),A(w);break;case 7:A(null);break;case 8:A(!0);break;case 9:A(!1);break;default:return!1}return r(),!0}function on(){return e.getToken()!==10?(f(3,[],[2,5]),!1):(v(!1),e.getToken()===6?(b(":"),r(),S()||f(4,[],[2,5])):f(5,[],[2,5]),i.pop(),!0)}function ln(){j(),r();let m=!1;for(;e.getToken()!==2&&e.getToken()!==17;){if(e.getToken()===5){if(m||f(4,[],[]),b(","),r(),e.getToken()===2&&c)break}else m&&f(6,[],[]);on()||f(4,[],[2,5]),m=!0}return p(),e.getToken()!==2?f(7,[2],[]):r(),!0}function sn(){F(),r();let m=!0,w=!1;for(;e.getToken()!==4&&e.getToken()!==17;){if(e.getToken()===5){if(w||f(4,[],[]),b(","),r(),e.getToken()===4&&c)break}else w&&f(6,[],[]);m?(i.push(0),m=!1):i[i.length-1]++,S()||f(4,[],[4,5]),w=!0}return U(),m||i.pop(),e.getToken()!==4?f(8,[4],[]):r(),!0}function S(){switch(e.getToken()){case 3:return sn();case 1:return ln();case 10:return v(!0);default:return T()}}return r(),e.getToken()===17?t.allowEmptyContent?!0:(f(4,[],[]),!1):S()?(e.getToken()!==17&&f(9,[],[]),!0):(f(4,[],[]),!1)}var X;(function(n){n[n.None=0]="None",n[n.UnexpectedEndOfComment=1]="UnexpectedEndOfComment",n[n.UnexpectedEndOfString=2]="UnexpectedEndOfString",n[n.UnexpectedEndOfNumber=3]="UnexpectedEndOfNumber",n[n.InvalidUnicode=4]="InvalidUnicode",n[n.InvalidEscapeCharacter=5]="InvalidEscapeCharacter",n[n.InvalidCharacter=6]="InvalidCharacter"})(X||(X={}));var Y;(function(n){n[n.OpenBraceToken=1]="OpenBraceToken",n[n.CloseBraceToken=2]="CloseBraceToken",n[n.OpenBracketToken=3]="OpenBracketToken",n[n.CloseBracketToken=4]="CloseBracketToken",n[n.CommaToken=5]="CommaToken",n[n.ColonToken=6]="ColonToken",n[n.NullKeyword=7]="NullKeyword",n[n.TrueKeyword=8]="TrueKeyword",n[n.FalseKeyword=9]="FalseKeyword",n[n.StringLiteral=10]="StringLiteral",n[n.NumericLiteral=11]="NumericLiteral",n[n.LineCommentTrivia=12]="LineCommentTrivia",n[n.BlockCommentTrivia=13]="BlockCommentTrivia",n[n.LineBreakTrivia=14]="LineBreakTrivia",n[n.Trivia=15]="Trivia",n[n.Unknown=16]="Unknown",n[n.EOF=17]="EOF"})(Y||(Y={}));const pn=fn;var Z;(function(n){n[n.InvalidSymbol=1]="InvalidSymbol",n[n.InvalidNumberFormat=2]="InvalidNumberFormat",n[n.PropertyNameExpected=3]="PropertyNameExpected",n[n.ValueExpected=4]="ValueExpected",n[n.ColonExpected=5]="ColonExpected",n[n.CommaExpected=6]="CommaExpected",n[n.CloseBraceExpected=7]="CloseBraceExpected",n[n.CloseBracketExpected=8]="CloseBracketExpected",n[n.EndOfFileExpected=9]="EndOfFileExpected",n[n.InvalidCommentToken=10]="InvalidCommentToken",n[n.UnexpectedEndOfComment=11]="UnexpectedEndOfComment",n[n.UnexpectedEndOfString=12]="UnexpectedEndOfString",n[n.UnexpectedEndOfNumber=13]="UnexpectedEndOfNumber",n[n.InvalidUnicode=14]="InvalidUnicode",n[n.InvalidEscapeCharacter=15]="InvalidEscapeCharacter",n[n.InvalidCharacter=16]="InvalidCharacter"})(Z||(Z={}));const q=n=>pn(E.readFileSync(n,"utf8")),{existsSync:D}=E,gn=()=>{const{findPnpApi:n}=cn;return n&&n(process.cwd())};function d(n){const o=q(n);return g.join(n,"..",o&&"tsconfig"in o?o.tsconfig:"tsconfig.json")}function mn(n,o){let t=n;const e=n[0]===".";if(e||g.isAbsolute(n)){if(e&&(t===".."&&(t+="/tsconfig.json"),t=g.resolve(o,t)),D(t)&&E.statSync(t).isFile()||!t.endsWith(".json")&&(t+=".json",D(t)))return t;throw new Error(`File '${n}' not found.`)}const i=gn();if(i){const{resolveRequest:l}=i,[a,u]=n.split("/"),j=a.startsWith("@")?`${a}/${u}`:a;try{if(j===n){const k=l(g.join(j,"package.json"),o);if(k){const p=d(k);if(D(p))return p}}else{let k;try{k=l(n,o,{extensions:[".json"]})}catch{k=l(g.join(n,"tsconfig.json"),o)}if(k)return k}}catch{}}let s=W(o,g.join("node_modules",t));if(s){if(E.statSync(s).isDirectory()){const l=g.join(s,"package.json");if(D(l)?s=d(l):s=g.join(s,"tsconfig.json"),D(s))return s}else if(s.endsWith(".json"))return s}if(!t.endsWith(".json")&&(t+=".json",s=W(o,g.join("node_modules",t)),s))return s;throw new Error(`File '${n}' not found.`)}function J(n){var o;let t;try{t=E.realpathSync(n)}catch{throw new Error(`Cannot resolve tsconfig at path: ${n}`)}const e=g.dirname(t);let i=q(t)||{};if(typeof i!="object")throw new SyntaxError(`Failed to parse tsconfig at: ${n}`);if(i.extends){const s=mn(i.extends,e),l=J(s);if(delete l.references,(o=l.compilerOptions)!=null&&o.baseUrl){const{compilerOptions:u}=l;u.baseUrl=g.relative(e,g.join(g.dirname(s),u.baseUrl))||"./"}l.files&&(l.files=l.files.map(u=>g.relative(e,g.join(g.dirname(s),u)))),l.include&&(l.include=l.include.map(u=>g.relative(e,g.join(g.dirname(s),u)))),delete i.extends;const a={...l,...i,compilerOptions:{...l.compilerOptions,...i.compilerOptions}};l.watchOptions&&(a.watchOptions={...l.watchOptions,...i.watchOptions}),i=a}if(i.compilerOptions){const{compilerOptions:s}=i;s.baseUrl&&(s.baseUrl=M(s.baseUrl)),s.outDir&&(Array.isArray(i.exclude)||(i.exclude=[]),i.exclude.push(s.outDir),s.outDir=M(s.outDir))}else i.compilerOptions={};if(i.files&&(i.files=i.files.map(M)),i.include&&(i.include=i.include.map(L)),i.watchOptions){const{watchOptions:s}=i;s.excludeDirectories&&(s.excludeDirectories=s.excludeDirectories.map(l=>L(g.resolve(e,l))))}return i}function an(n=process.cwd(),o="tsconfig.json"){const t=W(L(n),o);if(!t)return null;const e=J(t);return{path:t,config:e}}const kn=/\*/g,K=(n,o)=>{const t=n.match(kn);if(t&&t.length>1)throw new Error(o)};function bn(n){if(n.includes("*")){const[o,t]=n.split("*");return{prefix:o,suffix:t}}return n}const Tn=({prefix:n,suffix:o},t)=>t.startsWith(n)&&t.endsWith(o);function wn(n,o,t){return Object.entries(n).map(([e,i])=>(K(e,`Pattern '${e}' can have at most one '*' character.`),{pattern:bn(e),substitutions:i.map(s=>{if(K(s,`Substitution '${s}' in pattern '${e}' can have at most one '*' character.`),!o&&!x.test(s))throw new Error("Non-relative paths are not allowed when 'baseUrl' is not set. Did you forget a leading './'?");return g.join(t,s)})}))}function On(n){if(!n.config.compilerOptions)return null;const{baseUrl:o,paths:t}=n.config.compilerOptions;if(!o&&!t)return null;const e=g.resolve(g.dirname(n.path),o||"."),i=t?wn(t,o,e):[];return function(l){if(x.test(l))return[];const a=[];for(const p of i){if(p.pattern===l)return p.substitutions.map(L);typeof p.pattern!="string"&&a.push(p)}let u,j=-1;for(const p of a)Tn(p.pattern,l)&&p.pattern.prefix.length>j&&(j=p.pattern.prefix.length,u=p);if(!u)return o?[L(g.join(e,l))]:[];const k=l.slice(u.pattern.prefix.length,l.length-u.pattern.suffix.length);return u.substitutions.map(p=>L(p.replace("*",k)))}}const C=n=>{let o="";for(let t=0;tMath.floor(Math.random()*26),Ln=n=>Array.from({length:n},()=>String.fromCodePoint(An()+(Math.random()>.5?jn:vn))).join(""),Bn=(n=E)=>{const o=process.execPath;if(n.existsSync(o))return!n.existsSync(C(o));const t=`/${Ln(10)}`;n.writeFileSync(t,"");const e=!n.existsSync(C(t));return n.unlinkSync(t),e},{join:y}=g.posix,G={ts:[".ts",".tsx",".d.ts"],cts:[".cts",".d.cts"],mts:[".mts",".d.mts"]},En=n=>{const o=[...G.ts],t=[...G.cts],e=[...G.mts];return n!=null&&n.allowJs&&(o.push(".js",".jsx"),t.push(".cjs"),e.push(".mjs")),[...o,...t,...e]},Un=n=>{const o=[];if(!n)return o;const{outDir:t,declarationDir:e}=n;return t&&o.push(t),e&&o.push(e),o},nn=n=>n.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),$n=["node_modules","bower_components","jspm_packages"],Q=`(?!(${$n.join("|")})(/|$))`,_n=/(?:^|\/)[^.*?]+$/,en="**/*",V="[^/]",z="[^./]",tn=process.platform==="win32",Fn=({config:n,path:o},t=Bn())=>{if("extends"in n)throw new Error("tsconfig#extends must be resolved. Use getTsconfig or parseTsconfig to resolve it.");if(!g.isAbsolute(o))throw new Error("The tsconfig path must be absolute");tn&&(o=L(o));const e=g.dirname(o),{files:i,include:s,exclude:l,compilerOptions:a}=n,u=i==null?void 0:i.map(b=>y(e,b)),j=En(a),k=t?"":"i",F=(l||Un(a)).map(b=>{const O=y(e,b),B=nn(O).replace(/\\\*\\\*\//g,"(.+/)?").replace(/\\\*/g,`${V}*`).replace(/\\\?/g,V);return new RegExp(`^${B}($|/)`,k)}),U=i||s?s:[en],A=U?U.map(b=>{let O=y(e,b);_n.test(O)&&(O=y(O,en));const B=nn(O).replace(/\/\\\*\\\*/g,`(/${Q}${z}${V}*)*?`).replace(/(\/)?\\\*/g,($,c)=>{const r=`(${z}|(\\.(?!min\\.js$))?)*`;return c?`/${Q}${z}${r}`:r}).replace(/(\/)?\\\?/g,($,c)=>{const r=V;return c?`/${Q}${r}`:r});return new RegExp(`^${B}$`,k)}):void 0;return b=>{if(!g.isAbsolute(b))throw new Error("filePath must be absolute");if(tn&&(b=L(b)),u!=null&&u.includes(b))return n;if(!(!j.some(O=>b.endsWith(O))||F.some(O=>O.test(b)))&&A&&A.some(O=>O.test(b)))return n}};export{Fn as createFilesMatcher,On as createPathsMatcher,an as getTsconfig,J as parseTsconfig}; diff --git a/node_modules/get-tsconfig/package.json b/node_modules/get-tsconfig/package.json new file mode 100644 index 0000000..b10038d --- /dev/null +++ b/node_modules/get-tsconfig/package.json @@ -0,0 +1,43 @@ +{ + "name": "get-tsconfig", + "version": "4.4.0", + "description": "Find and parse the tsconfig.json file from a directory path", + "keywords": [ + "get-tsconfig", + "get", + "typescript", + "tsconfig", + "tsconfig.json" + ], + "license": "MIT", + "repository": "privatenumber/get-tsconfig", + "funding": "https://github.com/privatenumber/get-tsconfig?sponsor=1", + "author": { + "name": "Hiroki Osame", + "email": "hiroki.osame@gmail.com" + }, + "type": "module", + "files": [ + "dist" + ], + "main": "./dist/index.cjs", + "module": "./dist/index.mjs", + "types": "./dist/index.d.cts", + "exports": { + "require": { + "types": "./dist/index.d.cts", + "default": "./dist/index.cjs" + }, + "import": { + "types": "./dist/index.d.mts", + "default": "./dist/index.mjs" + } + }, + "imports": { + "#get-tsconfig": { + "types": "./src/index.ts", + "development": "./src/index.ts", + "default": "./dist/index.mjs" + } + } +} \ No newline at end of file diff --git a/node_modules/global/.travis.yml b/node_modules/global/.travis.yml new file mode 100644 index 0000000..ed178f6 --- /dev/null +++ b/node_modules/global/.travis.yml @@ -0,0 +1,4 @@ +language: node_js +node_js: + - 0.8 + - 0.9 diff --git a/node_modules/global/LICENSE b/node_modules/global/LICENSE new file mode 100644 index 0000000..822d880 --- /dev/null +++ b/node_modules/global/LICENSE @@ -0,0 +1,19 @@ +Copyright (c) 2012 Colingo. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/node_modules/global/README.md b/node_modules/global/README.md new file mode 100644 index 0000000..289d305 --- /dev/null +++ b/node_modules/global/README.md @@ -0,0 +1,30 @@ +# global + + + +Require global variables + +## Example + +```js +var global = require("global") +var document = require("global/document") +var window = require("global/window") +``` + +## Installation + +`npm install global` + +## Contributors + + - Raynos + +## MIT Licenced + + [1]: https://secure.travis-ci.org/Colingo/global.png + [2]: http://travis-ci.org/Colingo/global + [3]: http://ci.testling.com/Colingo/global.png + [4]: http://ci.testling.com/Colingo/global diff --git a/node_modules/global/console.js b/node_modules/global/console.js new file mode 100644 index 0000000..5cb1dfa --- /dev/null +++ b/node_modules/global/console.js @@ -0,0 +1 @@ +module.exports = console; diff --git a/node_modules/global/document.js b/node_modules/global/document.js new file mode 100644 index 0000000..7c0f50d --- /dev/null +++ b/node_modules/global/document.js @@ -0,0 +1,17 @@ +var topLevel = typeof global !== 'undefined' ? global : + typeof window !== 'undefined' ? window : {} +var minDoc = require('min-document'); + +var doccy; + +if (typeof document !== 'undefined') { + doccy = document; +} else { + doccy = topLevel['__GLOBAL_DOCUMENT_CACHE@4']; + + if (!doccy) { + doccy = topLevel['__GLOBAL_DOCUMENT_CACHE@4'] = minDoc; + } +} + +module.exports = doccy; diff --git a/node_modules/global/package.json b/node_modules/global/package.json new file mode 100644 index 0000000..052726a --- /dev/null +++ b/node_modules/global/package.json @@ -0,0 +1,63 @@ +{ + "name": "global", + "version": "4.4.0", + "description": "Require global variables", + "keywords": [], + "author": "Raynos ", + "repository": "git://github.com/Raynos/global.git", + "main": "window.js", + "homepage": "https://github.com/Raynos/global", + "contributors": [ + { + "name": "Raynos" + } + ], + "bugs": { + "url": "https://github.com/Raynos/global/issues", + "email": "raynos2@gmail.com" + }, + "browser": { + "min-document": false, + "individual": false + }, + "dependencies": { + "min-document": "^2.19.0", + "process": "^0.11.10" + }, + "devDependencies": { + "tape": "^2.12.0" + }, + "license": "MIT", + "scripts": { + "test": "node ./test", + "build": "browserify test/index.js -o test/static/bundle.js", + "testem": "testem" + }, + "testling": { + "files": "test/index.js", + "browsers": { + "ie": [ + "8", + "9", + "10" + ], + "firefox": [ + "16", + "17", + "nightly" + ], + "chrome": [ + "22", + "23", + "canary" + ], + "opera": [ + "12", + "next" + ], + "safari": [ + "5.1" + ] + } + } +} diff --git a/node_modules/global/process.js b/node_modules/global/process.js new file mode 100644 index 0000000..00a8e37 --- /dev/null +++ b/node_modules/global/process.js @@ -0,0 +1 @@ +module.exports = require('process'); diff --git a/node_modules/global/window.js b/node_modules/global/window.js new file mode 100644 index 0000000..ae6c11c --- /dev/null +++ b/node_modules/global/window.js @@ -0,0 +1,13 @@ +var win; + +if (typeof window !== "undefined") { + win = window; +} else if (typeof global !== "undefined") { + win = global; +} else if (typeof self !== "undefined"){ + win = self; +} else { + win = {}; +} + +module.exports = win; diff --git a/node_modules/is-plain-object/LICENSE b/node_modules/is-plain-object/LICENSE new file mode 100644 index 0000000..3f2eca1 --- /dev/null +++ b/node_modules/is-plain-object/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2014-2017, Jon Schlinkert. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/node_modules/is-plain-object/README.md b/node_modules/is-plain-object/README.md new file mode 100644 index 0000000..5c074ab --- /dev/null +++ b/node_modules/is-plain-object/README.md @@ -0,0 +1,125 @@ +# is-plain-object [![NPM version](https://img.shields.io/npm/v/is-plain-object.svg?style=flat)](https://www.npmjs.com/package/is-plain-object) [![NPM monthly downloads](https://img.shields.io/npm/dm/is-plain-object.svg?style=flat)](https://npmjs.org/package/is-plain-object) [![NPM total downloads](https://img.shields.io/npm/dt/is-plain-object.svg?style=flat)](https://npmjs.org/package/is-plain-object) [![Linux Build Status](https://img.shields.io/travis/jonschlinkert/is-plain-object.svg?style=flat&label=Travis)](https://travis-ci.org/jonschlinkert/is-plain-object) + +> Returns true if an object was created by the `Object` constructor, or Object.create(null). + +Please consider following this project's author, [Jon Schlinkert](https://github.com/jonschlinkert), and consider starring the project to show your :heart: and support. + +## Install + +Install with [npm](https://www.npmjs.com/): + +```sh +$ npm install --save is-plain-object +``` + +Use [isobject](https://github.com/jonschlinkert/isobject) if you only want to check if the value is an object and not an array or null. + +## Usage + +with es modules +```js +import { isPlainObject } from 'is-plain-object'; +``` + +or with commonjs +```js +const { isPlainObject } = require('is-plain-object'); +``` + +**true** when created by the `Object` constructor, or Object.create(null). + +```js +isPlainObject(Object.create({})); +//=> true +isPlainObject(Object.create(Object.prototype)); +//=> true +isPlainObject({foo: 'bar'}); +//=> true +isPlainObject({}); +//=> true +isPlainObject(null); +//=> true +``` + +**false** when not created by the `Object` constructor. + +```js +isPlainObject(1); +//=> false +isPlainObject(['foo', 'bar']); +//=> false +isPlainObject([]); +//=> false +isPlainObject(new Foo); +//=> false +isPlainObject(Object.create(null)); +//=> false +``` + +## About + +

        +Contributing + +Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](../../issues/new). + +
        + +
        +Running Tests + +Running and reviewing unit tests is a great way to get familiarized with a library and its API. You can install dependencies and run tests with the following command: + +```sh +$ npm install && npm test +``` + +
        + +
        +Building docs + +_(This project's readme.md is generated by [verb](https://github.com/verbose/verb-generate-readme), please don't edit the readme directly. Any changes to the readme must be made in the [.verb.md](.verb.md) readme template.)_ + +To generate the readme, run the following command: + +```sh +$ npm install -g verbose/verb#dev verb-generate-readme && verb +``` + +
        + +### Related projects + +You might also be interested in these projects: + +* [is-number](https://www.npmjs.com/package/is-number): Returns true if a number or string value is a finite number. Useful for regex… [more](https://github.com/jonschlinkert/is-number) | [homepage](https://github.com/jonschlinkert/is-number "Returns true if a number or string value is a finite number. Useful for regex matches, parsing, user input, etc.") +* [isobject](https://www.npmjs.com/package/isobject): Returns true if the value is an object and not an array or null. | [homepage](https://github.com/jonschlinkert/isobject "Returns true if the value is an object and not an array or null.") +* [kind-of](https://www.npmjs.com/package/kind-of): Get the native type of a value. | [homepage](https://github.com/jonschlinkert/kind-of "Get the native type of a value.") + +### Contributors + +| **Commits** | **Contributor** | +| --- | --- | +| 19 | [jonschlinkert](https://github.com/jonschlinkert) | +| 6 | [TrySound](https://github.com/TrySound) | +| 6 | [stevenvachon](https://github.com/stevenvachon) | +| 3 | [onokumus](https://github.com/onokumus) | +| 1 | [wtgtybhertgeghgtwtg](https://github.com/wtgtybhertgeghgtwtg) | + +### Author + +**Jon Schlinkert** + +* [GitHub Profile](https://github.com/jonschlinkert) +* [Twitter Profile](https://twitter.com/jonschlinkert) +* [LinkedIn Profile](https://linkedin.com/in/jonschlinkert) + +### License + +Copyright © 2019, [Jon Schlinkert](https://github.com/jonschlinkert). +Released under the [MIT License](LICENSE). + +*** + +_This file was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme), v0.8.0, on April 28, 2019._ diff --git a/node_modules/is-plain-object/dist/is-plain-object.js b/node_modules/is-plain-object/dist/is-plain-object.js new file mode 100644 index 0000000..d134e4f --- /dev/null +++ b/node_modules/is-plain-object/dist/is-plain-object.js @@ -0,0 +1,38 @@ +'use strict'; + +Object.defineProperty(exports, '__esModule', { value: true }); + +/*! + * is-plain-object + * + * Copyright (c) 2014-2017, Jon Schlinkert. + * Released under the MIT License. + */ + +function isObject(o) { + return Object.prototype.toString.call(o) === '[object Object]'; +} + +function isPlainObject(o) { + var ctor,prot; + + if (isObject(o) === false) return false; + + // If has modified constructor + ctor = o.constructor; + if (ctor === undefined) return true; + + // If has modified prototype + prot = ctor.prototype; + if (isObject(prot) === false) return false; + + // If constructor does not have an Object-specific method + if (prot.hasOwnProperty('isPrototypeOf') === false) { + return false; + } + + // Most likely a plain Object + return true; +} + +exports.isPlainObject = isPlainObject; diff --git a/node_modules/is-plain-object/dist/is-plain-object.mjs b/node_modules/is-plain-object/dist/is-plain-object.mjs new file mode 100644 index 0000000..c2d9f35 --- /dev/null +++ b/node_modules/is-plain-object/dist/is-plain-object.mjs @@ -0,0 +1,34 @@ +/*! + * is-plain-object + * + * Copyright (c) 2014-2017, Jon Schlinkert. + * Released under the MIT License. + */ + +function isObject(o) { + return Object.prototype.toString.call(o) === '[object Object]'; +} + +function isPlainObject(o) { + var ctor,prot; + + if (isObject(o) === false) return false; + + // If has modified constructor + ctor = o.constructor; + if (ctor === undefined) return true; + + // If has modified prototype + prot = ctor.prototype; + if (isObject(prot) === false) return false; + + // If constructor does not have an Object-specific method + if (prot.hasOwnProperty('isPrototypeOf') === false) { + return false; + } + + // Most likely a plain Object + return true; +} + +export { isPlainObject }; diff --git a/node_modules/is-plain-object/is-plain-object.d.ts b/node_modules/is-plain-object/is-plain-object.d.ts new file mode 100644 index 0000000..a359940 --- /dev/null +++ b/node_modules/is-plain-object/is-plain-object.d.ts @@ -0,0 +1 @@ +export function isPlainObject(o: any): boolean; diff --git a/node_modules/is-plain-object/package.json b/node_modules/is-plain-object/package.json new file mode 100644 index 0000000..3ea169a --- /dev/null +++ b/node_modules/is-plain-object/package.json @@ -0,0 +1,85 @@ +{ + "name": "is-plain-object", + "description": "Returns true if an object was created by the `Object` constructor, or Object.create(null).", + "version": "5.0.0", + "homepage": "https://github.com/jonschlinkert/is-plain-object", + "author": "Jon Schlinkert (https://github.com/jonschlinkert)", + "contributors": [ + "Jon Schlinkert (http://twitter.com/jonschlinkert)", + "Osman Nuri Okumuş (http://onokumus.com)", + "Steven Vachon (https://svachon.com)", + "(https://github.com/wtgtybhertgeghgtwtg)", + "Bogdan Chadkin (https://github.com/TrySound)" + ], + "repository": "jonschlinkert/is-plain-object", + "bugs": { + "url": "https://github.com/jonschlinkert/is-plain-object/issues" + }, + "license": "MIT", + "main": "dist/is-plain-object.js", + "module": "dist/is-plain-object.mjs", + "types": "is-plain-object.d.ts", + "files": [ + "is-plain-object.d.ts", + "dist" + ], + "exports": { + ".": { + "import": "./dist/is-plain-object.mjs", + "require": "./dist/is-plain-object.js" + }, + "./package.json": "./package.json" + }, + "engines": { + "node": ">=0.10.0" + }, + "scripts": { + "build": "rollup -c", + "test_browser": "mocha-headless-chrome --args=disable-web-security -f test/browser.html", + "test_node": "mocha -r esm", + "test": "npm run test_node && npm run build && npm run test_browser", + "prepare": "rollup -c" + }, + "devDependencies": { + "chai": "^4.2.0", + "esm": "^3.2.22", + "gulp-format-md": "^1.0.0", + "mocha": "^6.1.4", + "mocha-headless-chrome": "^3.1.0", + "rollup": "^2.22.1" + }, + "keywords": [ + "check", + "is", + "is-object", + "isobject", + "javascript", + "kind", + "kind-of", + "object", + "plain", + "type", + "typeof", + "value" + ], + "verb": { + "toc": false, + "layout": "default", + "tasks": [ + "readme" + ], + "plugins": [ + "gulp-format-md" + ], + "related": { + "list": [ + "is-number", + "isobject", + "kind-of" + ] + }, + "lint": { + "reflinks": true + } + } +} diff --git a/node_modules/min-document/.jshintrc b/node_modules/min-document/.jshintrc new file mode 100644 index 0000000..77887b5 --- /dev/null +++ b/node_modules/min-document/.jshintrc @@ -0,0 +1,30 @@ +{ + "maxdepth": 4, + "maxstatements": 200, + "maxcomplexity": 12, + "maxlen": 80, + "maxparams": 5, + + "curly": true, + "eqeqeq": true, + "immed": true, + "latedef": false, + "noarg": true, + "noempty": true, + "nonew": true, + "undef": true, + "unused": "vars", + "trailing": true, + + "quotmark": true, + "expr": true, + "asi": true, + + "browser": false, + "esnext": true, + "devel": false, + "node": false, + "nonstandard": false, + + "predef": ["require", "module", "__dirname", "__filename"] +} diff --git a/node_modules/min-document/.npmignore b/node_modules/min-document/.npmignore new file mode 100644 index 0000000..fd31f5e --- /dev/null +++ b/node_modules/min-document/.npmignore @@ -0,0 +1,15 @@ +.DS_Store +.monitor +.*.swp +.nodemonignore +releases +*.log +*.err +fleet.json +public/browserify +bin/*.json +.bin +build +compile +.lock-wscript +node_modules diff --git a/node_modules/min-document/.testem.json b/node_modules/min-document/.testem.json new file mode 100644 index 0000000..41ab90e --- /dev/null +++ b/node_modules/min-document/.testem.json @@ -0,0 +1,14 @@ +{ + "launchers": { + "node": { + "command": "node ./test" + } + }, + "src_files": [ + "./**/*.js" + ], + "before_tests": "npm run build-test", + "on_exit": "rm test/static/bundle.js", + "test_page": "test/static/index.html", + "launch_in_dev": ["node", "phantomjs"] +} diff --git a/node_modules/min-document/.travis.yml b/node_modules/min-document/.travis.yml new file mode 100644 index 0000000..52424f8 --- /dev/null +++ b/node_modules/min-document/.travis.yml @@ -0,0 +1,6 @@ +language: node_js +node_js: + - 0.8 + - 0.9 + - 0.10 +script: node ./test/index.js diff --git a/node_modules/min-document/CONTRIBUTION.md b/node_modules/min-document/CONTRIBUTION.md new file mode 100644 index 0000000..4e78bdf --- /dev/null +++ b/node_modules/min-document/CONTRIBUTION.md @@ -0,0 +1,48 @@ +# This is an OPEN Open Source Project + +## What? + +Individuals making significant and valuable contributions are given commit-access to the project to contribute as they see fit. This project is more like an open wiki than a standard guarded open source project. + +## Rules + +There are a few basic ground-rules for contributors: + + - No --force pushes or modifying the Git history in any way. + - Non-master branches ought to be used for ongoing work. + - External API changes and significant modifications ought to be subject to an internal pull-request to solicit feedback from other contributors. + - Internal pull-requests to solicit feedback are encouraged for any other non-trivial contribution but left to the discretion of the contributor. + - For significant changes wait a full 24 hours before merging so that active contributors who are distributed throughout the world have a chance to weigh in. + - Contributors should attempt to adhere to the prevailing code-style. +Releases + +Declaring formal releases requires peer review. + + - A reviewer of a pull request should recommend a new version number (patch, minor or major). + - Once your change is merged feel free to bump the version as recommended by the reviewer. + - A new version number should not be cut without peer review unless done by the project maintainer. + +## Want to contribute? + +Even though collaborators may contribute as they see fit, if you are not sure what to do, here's a suggested process: + +## Cutting a new version + + - Get your branch merged on master + - Run `npm version major` or `npm version minor` or `npm version patch` + - `git push origin master --tags` + - If you are a project owner, then `npm publish` + +## If you want to have a bug fixed or a feature added: + + - Check open issues for what you want. + - If there is an open issue, comment on it, otherwise open an issue describing your bug or feature with use cases. + - Discussion happens on the issue about how to solve your problem. + - You or a core contributor opens a pull request solving the issue with tests and documentation. + - The pull requests gets reviewed and then merged. + - A new release version get's cut. + - (Disclaimer: Your feature might get rejected.) + +### Changes to this arrangement + +This is an experiment and feedback is welcome! This document may also be subject to pull-requests or changes by contributors where you believe you have something valuable to add or change. diff --git a/node_modules/min-document/LICENCE b/node_modules/min-document/LICENCE new file mode 100644 index 0000000..72d356c --- /dev/null +++ b/node_modules/min-document/LICENCE @@ -0,0 +1,19 @@ +Copyright (c) 2013 Colingo. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/node_modules/min-document/README.md b/node_modules/min-document/README.md new file mode 100644 index 0000000..970b47d --- /dev/null +++ b/node_modules/min-document/README.md @@ -0,0 +1,43 @@ +# min-document + +[![build status][1]][2] [![dependency status][3]][4] + + + +A minimal DOM implementation + +## Example + +```js +var document = require("min-document") + +var div = document.createElement("div") +div.className = "foo bar" + +var span = document.createElement("span") +div.appendChild(span) +span.textContent = "Hello!" + +/*
        + Hello! +
        +*/ +var html = String(div) +``` + +## Installation + +`npm install min-document` + +## Contributors + + - Raynos + +## MIT Licenced + + [1]: https://secure.travis-ci.org/Raynos/min-document.png + [2]: https://travis-ci.org/Raynos/min-document + [3]: https://david-dm.org/Raynos/min-document.png + [4]: https://david-dm.org/Raynos/min-document + [5]: https://ci.testling.com/Raynos/min-document.png + [6]: https://ci.testling.com/Raynos/min-document diff --git a/node_modules/min-document/docs.mli b/node_modules/min-document/docs.mli new file mode 100644 index 0000000..ad17b4a --- /dev/null +++ b/node_modules/min-document/docs.mli @@ -0,0 +1,156 @@ +type Comment := { + data: String, + length: Number, + nodeName: "#comment", + nodeType: 8, + nodeValue: String, + ownerDoucment: null | Document, + + toString: (this: Comment) => String +} + +type DOMText := { + data: String, + type: "DOMTextNode", + length: Number, + nodeType: 3, + + toString: (this: DOMText) => String, + replaceChild: ( + this: DOMText, + index: Number, + length: Number, + value: String + ) => void +} + +type DOMNode := DOMText | DOMElement | DocumentFragment +type DOMChild := DOMText | DOMElement + +type DOMElement := { + tagName: String, + className: String, + dataset: Object, + childNodes: Array, + parentNode: null | DOMElement, + style: Object, + type: "DOMElement", + nodeType: 1, + ownerDoucment: null | Document, + namespaceURI: null | String, + + appendChild: (this: DOMElement, child: DOMChild) => DOMChild, + replaceChild:( + this: DOMElement, + elem: DOMChild, + needle: DOMChild + ) => DOMChild, + removeChild: (this: DOMElement, child: DOMChild) => DOMChild, + insertBefore: ( + this: DOMElement, + elem: DOMChild, + needle: DOMChild | null | undefined + ) => DOMChild, + addEventListener: addEventListener, + dispatchEvent: dispatchEvent, + focus: () => void, + toString: (this: DOMElement) => String, + getElementsByClassName: ( + this: DOMElement, + className: String + ) => Array, + getElementsByTagName: ( + this: DOMElement, + tagName: String + ) => Array, +} + +type DocumentFragment := { + childNodes: Array, + parentNode: null | DOMElement, + type: "DocumentFragment", + nodeType: 11, + nodeName: "#document-fragment", + ownerDoucment: Document | null, + + appendChild: (this: DocumentFragment, child: DOMChild), + replaceChild: + (this: DocumentFragment, elem: DOMChild, needle: DOMChild), + removeChild: (this: DocumentFragment, child: DOMChild), + toString: (this: DocumentFragment) => String +} + +type Document := { + body: DOMElement, + childNodes: Array, + documentElement: DOMElement, + nodeType: 9, + + createComment: (this: Document, data: String) => Commment, + createTextNode: (this: Document, value: String) => DOMText, + createElement: (this: Document, tagName: String) => DOMElement, + createElementNS: ( + this: Document, + namespace: String | null, + tagName: String + ) => DOMElement, + createDocumentFragment: (this: Document) => DocumentFragment, + createEvent: () => Event, + getElementById: ( + this: Document, + id: String, + ) => null | DOMElement, + getElementsByClassName: ( + this: Document, + className: String + ) => Array, + getElementsByTagName: ( + this: Document, + tagName: String + ) => Array +} + +type Event := { + type: String, + bubbles: Boolean, + cancelable: Boolean, + + initEvent: ( + this: Event, + type: String, + bubbles: Boolean, + cancelable: Boolean + ) => void +} + +type addEventListener := ( + this: DOMElement, + type: String, + listener: Listener +) => void + +type dispatchEvent := ( + this: DOMElement, + ev: Event +) + +min-document/event/add-event-listener := addEventListener + +min-document/event/dispatch-event := dispatchEvent + +min-document/document := () => Document + +min-document/dom-element := + (tagName: String, owner?: Document, namespace?: String | null) => DOMElement + +min-document/dom-fragment := + (owner?: Document) => DocumentFragment + +min-document/dom-text := + (value: String, owner?: Document) => DOMText + +min-document/event := () => Event + +min-document/serialize := (DOMElement) => String + +min-document := Document diff --git a/node_modules/min-document/document.js b/node_modules/min-document/document.js new file mode 100644 index 0000000..d929cbd --- /dev/null +++ b/node_modules/min-document/document.js @@ -0,0 +1,72 @@ +var domWalk = require("dom-walk") + +var Comment = require("./dom-comment.js") +var DOMText = require("./dom-text.js") +var DOMElement = require("./dom-element.js") +var DocumentFragment = require("./dom-fragment.js") +var Event = require("./event.js") +var dispatchEvent = require("./event/dispatch-event.js") +var addEventListener = require("./event/add-event-listener.js") +var removeEventListener = require("./event/remove-event-listener.js") + +module.exports = Document; + +function Document() { + if (!(this instanceof Document)) { + return new Document(); + } + + this.head = this.createElement("head") + this.body = this.createElement("body") + this.documentElement = this.createElement("html") + this.documentElement.appendChild(this.head) + this.documentElement.appendChild(this.body) + this.childNodes = [this.documentElement] + this.nodeType = 9 +} + +var proto = Document.prototype; +proto.createTextNode = function createTextNode(value) { + return new DOMText(value, this) +} + +proto.createElementNS = function createElementNS(namespace, tagName) { + var ns = namespace === null ? null : String(namespace) + return new DOMElement(tagName, this, ns) +} + +proto.createElement = function createElement(tagName) { + return new DOMElement(tagName, this) +} + +proto.createDocumentFragment = function createDocumentFragment() { + return new DocumentFragment(this) +} + +proto.createEvent = function createEvent(family) { + return new Event(family) +} + +proto.createComment = function createComment(data) { + return new Comment(data, this) +} + +proto.getElementById = function getElementById(id) { + id = String(id) + + var result = domWalk(this.childNodes, function (node) { + if (String(node.id) === id) { + return node + } + }) + + return result || null +} + +proto.getElementsByClassName = DOMElement.prototype.getElementsByClassName +proto.getElementsByTagName = DOMElement.prototype.getElementsByTagName +proto.contains = DOMElement.prototype.contains + +proto.removeEventListener = removeEventListener +proto.addEventListener = addEventListener +proto.dispatchEvent = dispatchEvent diff --git a/node_modules/min-document/dom-comment.js b/node_modules/min-document/dom-comment.js new file mode 100644 index 0000000..132ea37 --- /dev/null +++ b/node_modules/min-document/dom-comment.js @@ -0,0 +1,19 @@ +module.exports = Comment + +function Comment(data, owner) { + if (!(this instanceof Comment)) { + return new Comment(data, owner) + } + + this.data = data + this.nodeValue = data + this.length = data.length + this.ownerDocument = owner || null +} + +Comment.prototype.nodeType = 8 +Comment.prototype.nodeName = "#comment" + +Comment.prototype.toString = function _Comment_toString() { + return "[object Comment]" +} diff --git a/node_modules/min-document/dom-element.js b/node_modules/min-document/dom-element.js new file mode 100644 index 0000000..73ff10e --- /dev/null +++ b/node_modules/min-document/dom-element.js @@ -0,0 +1,209 @@ +var domWalk = require("dom-walk") +var dispatchEvent = require("./event/dispatch-event.js") +var addEventListener = require("./event/add-event-listener.js") +var removeEventListener = require("./event/remove-event-listener.js") +var serializeNode = require("./serialize.js") + +var htmlns = "http://www.w3.org/1999/xhtml" + +module.exports = DOMElement + +function DOMElement(tagName, owner, namespace) { + if (!(this instanceof DOMElement)) { + return new DOMElement(tagName) + } + + var ns = namespace === undefined ? htmlns : (namespace || null) + + this.tagName = ns === htmlns ? String(tagName).toUpperCase() : tagName + this.nodeName = this.tagName + this.className = "" + this.dataset = {} + this.childNodes = [] + this.parentNode = null + this.style = {} + this.ownerDocument = owner || null + this.namespaceURI = ns + this._attributes = {} + + if (this.tagName === 'INPUT') { + this.type = 'text' + } +} + +DOMElement.prototype.type = "DOMElement" +DOMElement.prototype.nodeType = 1 + +DOMElement.prototype.appendChild = function _Element_appendChild(child) { + if (child.parentNode) { + child.parentNode.removeChild(child) + } + + this.childNodes.push(child) + child.parentNode = this + + return child +} + +DOMElement.prototype.replaceChild = + function _Element_replaceChild(elem, needle) { + // TODO: Throw NotFoundError if needle.parentNode !== this + + if (elem.parentNode) { + elem.parentNode.removeChild(elem) + } + + var index = this.childNodes.indexOf(needle) + + needle.parentNode = null + this.childNodes[index] = elem + elem.parentNode = this + + return needle + } + +DOMElement.prototype.removeChild = function _Element_removeChild(elem) { + // TODO: Throw NotFoundError if elem.parentNode !== this + + var index = this.childNodes.indexOf(elem) + this.childNodes.splice(index, 1) + + elem.parentNode = null + return elem +} + +DOMElement.prototype.insertBefore = + function _Element_insertBefore(elem, needle) { + // TODO: Throw NotFoundError if referenceElement is a dom node + // and parentNode !== this + + if (elem.parentNode) { + elem.parentNode.removeChild(elem) + } + + var index = needle === null || needle === undefined ? + -1 : + this.childNodes.indexOf(needle) + + if (index > -1) { + this.childNodes.splice(index, 0, elem) + } else { + this.childNodes.push(elem) + } + + elem.parentNode = this + return elem + } + +DOMElement.prototype.setAttributeNS = + function _Element_setAttributeNS(namespace, name, value) { + var prefix = null + var localName = name + var colonPosition = name.indexOf(":") + if (colonPosition > -1) { + prefix = name.substr(0, colonPosition) + localName = name.substr(colonPosition + 1) + } + if (this.tagName === 'INPUT' && name === 'type') { + this.type = value; + } + else { + var attributes = this._attributes[namespace] || (this._attributes[namespace] = {}) + attributes[localName] = {value: value, prefix: prefix} + } + } + +DOMElement.prototype.getAttributeNS = + function _Element_getAttributeNS(namespace, name) { + var attributes = this._attributes[namespace]; + var value = attributes && attributes[name] && attributes[name].value + if (this.tagName === 'INPUT' && name === 'type') { + return this.type; + } + if (typeof value !== "string") { + return null + } + return value + } + +DOMElement.prototype.removeAttributeNS = + function _Element_removeAttributeNS(namespace, name) { + var attributes = this._attributes[namespace]; + if (attributes) { + delete attributes[name] + } + } + +DOMElement.prototype.hasAttributeNS = + function _Element_hasAttributeNS(namespace, name) { + var attributes = this._attributes[namespace] + return !!attributes && name in attributes; + } + +DOMElement.prototype.setAttribute = function _Element_setAttribute(name, value) { + return this.setAttributeNS(null, name, value) +} + +DOMElement.prototype.getAttribute = function _Element_getAttribute(name) { + return this.getAttributeNS(null, name) +} + +DOMElement.prototype.removeAttribute = function _Element_removeAttribute(name) { + return this.removeAttributeNS(null, name) +} + +DOMElement.prototype.hasAttribute = function _Element_hasAttribute(name) { + return this.hasAttributeNS(null, name) +} + +DOMElement.prototype.removeEventListener = removeEventListener +DOMElement.prototype.addEventListener = addEventListener +DOMElement.prototype.dispatchEvent = dispatchEvent + +// Un-implemented +DOMElement.prototype.focus = function _Element_focus() { + return void 0 +} + +DOMElement.prototype.toString = function _Element_toString() { + return serializeNode(this) +} + +DOMElement.prototype.getElementsByClassName = function _Element_getElementsByClassName(classNames) { + var classes = classNames.split(" "); + var elems = [] + + domWalk(this, function (node) { + if (node.nodeType === 1) { + var nodeClassName = node.className || "" + var nodeClasses = nodeClassName.split(" ") + + if (classes.every(function (item) { + return nodeClasses.indexOf(item) !== -1 + })) { + elems.push(node) + } + } + }) + + return elems +} + +DOMElement.prototype.getElementsByTagName = function _Element_getElementsByTagName(tagName) { + tagName = tagName.toLowerCase() + var elems = [] + + domWalk(this.childNodes, function (node) { + if (node.nodeType === 1 && (tagName === '*' || node.tagName.toLowerCase() === tagName)) { + elems.push(node) + } + }) + + return elems +} + +DOMElement.prototype.contains = function _Element_contains(element) { + return domWalk(this, function (node) { + return element === node + }) || false +} diff --git a/node_modules/min-document/dom-fragment.js b/node_modules/min-document/dom-fragment.js new file mode 100644 index 0000000..d4bac92 --- /dev/null +++ b/node_modules/min-document/dom-fragment.js @@ -0,0 +1,28 @@ +var DOMElement = require("./dom-element.js") + +module.exports = DocumentFragment + +function DocumentFragment(owner) { + if (!(this instanceof DocumentFragment)) { + return new DocumentFragment() + } + + this.childNodes = [] + this.parentNode = null + this.ownerDocument = owner || null +} + +DocumentFragment.prototype.type = "DocumentFragment" +DocumentFragment.prototype.nodeType = 11 +DocumentFragment.prototype.nodeName = "#document-fragment" + +DocumentFragment.prototype.appendChild = DOMElement.prototype.appendChild +DocumentFragment.prototype.replaceChild = DOMElement.prototype.replaceChild +DocumentFragment.prototype.removeChild = DOMElement.prototype.removeChild + +DocumentFragment.prototype.toString = + function _DocumentFragment_toString() { + return this.childNodes.map(function (node) { + return String(node) + }).join("") + } diff --git a/node_modules/min-document/dom-text.js b/node_modules/min-document/dom-text.js new file mode 100644 index 0000000..4a6c6b9 --- /dev/null +++ b/node_modules/min-document/dom-text.js @@ -0,0 +1,27 @@ +module.exports = DOMText + +function DOMText(value, owner) { + if (!(this instanceof DOMText)) { + return new DOMText(value) + } + + this.data = value || "" + this.length = this.data.length + this.ownerDocument = owner || null +} + +DOMText.prototype.type = "DOMTextNode" +DOMText.prototype.nodeType = 3 +DOMText.prototype.nodeName = "#text" + +DOMText.prototype.toString = function _Text_toString() { + return this.data +} + +DOMText.prototype.replaceData = function replaceData(index, length, value) { + var current = this.data + var left = current.substring(0, index) + var right = current.substring(index + length, current.length) + this.data = left + value + right + this.length = this.data.length +} diff --git a/node_modules/min-document/event.js b/node_modules/min-document/event.js new file mode 100644 index 0000000..0a989c3 --- /dev/null +++ b/node_modules/min-document/event.js @@ -0,0 +1,13 @@ +module.exports = Event + +function Event(family) {} + +Event.prototype.initEvent = function _Event_initEvent(type, bubbles, cancelable) { + this.type = type + this.bubbles = bubbles + this.cancelable = cancelable +} + +Event.prototype.preventDefault = function _Event_preventDefault() { + +} diff --git a/node_modules/min-document/event/add-event-listener.js b/node_modules/min-document/event/add-event-listener.js new file mode 100644 index 0000000..022c7ef --- /dev/null +++ b/node_modules/min-document/event/add-event-listener.js @@ -0,0 +1,17 @@ +module.exports = addEventListener + +function addEventListener(type, listener) { + var elem = this + + if (!elem.listeners) { + elem.listeners = {} + } + + if (!elem.listeners[type]) { + elem.listeners[type] = [] + } + + if (elem.listeners[type].indexOf(listener) === -1) { + elem.listeners[type].push(listener) + } +} diff --git a/node_modules/min-document/event/dispatch-event.js b/node_modules/min-document/event/dispatch-event.js new file mode 100644 index 0000000..8febc99 --- /dev/null +++ b/node_modules/min-document/event/dispatch-event.js @@ -0,0 +1,31 @@ +module.exports = dispatchEvent + +function dispatchEvent(ev) { + var elem = this + var type = ev.type + + if (!ev.target) { + ev.target = elem + } + + if (!elem.listeners) { + elem.listeners = {} + } + + var listeners = elem.listeners[type] + + if (listeners) { + return listeners.forEach(function (listener) { + ev.currentTarget = elem + if (typeof listener === 'function') { + listener(ev) + } else { + listener.handleEvent(ev) + } + }) + } + + if (elem.parentNode) { + elem.parentNode.dispatchEvent(ev) + } +} diff --git a/node_modules/min-document/event/remove-event-listener.js b/node_modules/min-document/event/remove-event-listener.js new file mode 100644 index 0000000..d96091b --- /dev/null +++ b/node_modules/min-document/event/remove-event-listener.js @@ -0,0 +1,19 @@ +module.exports = removeEventListener + +function removeEventListener(type, listener) { + var elem = this + + if (!elem.listeners) { + return + } + + if (!elem.listeners[type]) { + return + } + + var list = elem.listeners[type] + var index = list.indexOf(listener) + if (index !== -1) { + list.splice(index, 1) + } +} diff --git a/node_modules/min-document/index.js b/node_modules/min-document/index.js new file mode 100644 index 0000000..0d97e8e --- /dev/null +++ b/node_modules/min-document/index.js @@ -0,0 +1,3 @@ +var Document = require('./document.js'); + +module.exports = new Document(); diff --git a/node_modules/min-document/package.json b/node_modules/min-document/package.json new file mode 100644 index 0000000..8074902 --- /dev/null +++ b/node_modules/min-document/package.json @@ -0,0 +1,58 @@ +{ + "name": "min-document", + "version": "2.19.0", + "description": "A minimal DOM implementation", + "keywords": [], + "author": "Raynos ", + "repository": "git://github.com/Raynos/min-document.git", + "main": "index", + "homepage": "https://github.com/Raynos/min-document", + "contributors": [ + { + "name": "Raynos" + } + ], + "bugs": { + "url": "https://github.com/Raynos/min-document/issues", + "email": "raynos2@gmail.com" + }, + "dependencies": { + "dom-walk": "^0.1.0" + }, + "devDependencies": { + "run-browser": "git://github.com/Raynos/run-browser", + "tap-dot": "^0.2.1", + "tap-spec": "^0.1.8", + "tape": "^2.12.3" + }, + "licenses": [ + { + "type": "MIT", + "url": "http://github.com/Raynos/min-document/raw/master/LICENSE" + } + ], + "scripts": { + "test": "node ./test/index.js | tap-spec", + "dot": "node ./test/index.js | tap-dot", + "cover": "istanbul cover --report none --print detail ./test/index.js", + "view-cover": "istanbul report html && google-chrome ./coverage/index.html", + "browser": "run-browser test/index.js", + "phantom": "run-browser test/index.js -b | tap-spec" + }, + "testling": { + "files": "test/index.js", + "browsers": [ + "ie/8..latest", + "firefox/16..latest", + "firefox/nightly", + "chrome/22..latest", + "chrome/canary", + "opera/12..latest", + "opera/next", + "safari/5.1..latest", + "ipad/6.0..latest", + "iphone/6.0..latest", + "android-browser/4.2..latest" + ] + } +} diff --git a/node_modules/min-document/serialize.js b/node_modules/min-document/serialize.js new file mode 100644 index 0000000..4411d3c --- /dev/null +++ b/node_modules/min-document/serialize.js @@ -0,0 +1,139 @@ +module.exports = serializeNode + +var voidElements = ["area","base","br","col","embed","hr","img","input","keygen","link","menuitem","meta","param","source","track","wbr"]; + +function serializeNode(node) { + switch (node.nodeType) { + case 3: + return escapeText(node.data) + case 8: + return "" + default: + return serializeElement(node) + } +} + +function serializeElement(elem) { + var strings = [] + + var tagname = elem.tagName + + if (elem.namespaceURI === "http://www.w3.org/1999/xhtml") { + tagname = tagname.toLowerCase() + } + + strings.push("<" + tagname + properties(elem) + datasetify(elem)) + + if (voidElements.indexOf(tagname) > -1) { + strings.push(" />") + } else { + strings.push(">") + + if (elem.childNodes.length) { + strings.push.apply(strings, elem.childNodes.map(serializeNode)) + } else if (elem.textContent || elem.innerText) { + strings.push(escapeText(elem.textContent || elem.innerText)) + } else if (elem.innerHTML) { + strings.push(elem.innerHTML) + } + + strings.push("") + } + + return strings.join("") +} + +function isProperty(elem, key) { + var type = typeof elem[key] + + if (key === "style" && Object.keys(elem.style).length > 0) { + return true + } + + return elem.hasOwnProperty(key) && + (type === "string" || type === "boolean" || type === "number") && + key !== "nodeName" && key !== "className" && key !== "tagName" && + key !== "textContent" && key !== "innerText" && key !== "namespaceURI" && key !== "innerHTML" +} + +function stylify(styles) { + if (typeof styles === 'string') return styles + var attr = "" + Object.keys(styles).forEach(function (key) { + var value = styles[key] + key = key.replace(/[A-Z]/g, function(c) { + return "-" + c.toLowerCase(); + }) + attr += key + ":" + value + ";" + }) + return attr +} + +function datasetify(elem) { + var ds = elem.dataset + var props = [] + + for (var key in ds) { + props.push({ name: "data-" + key, value: ds[key] }) + } + + return props.length ? stringify(props) : "" +} + +function stringify(list) { + var attributes = [] + list.forEach(function (tuple) { + var name = tuple.name + var value = tuple.value + + if (name === "style") { + value = stylify(value) + } + + attributes.push(name + "=" + "\"" + escapeAttributeValue(value) + "\"") + }) + + return attributes.length ? " " + attributes.join(" ") : "" +} + +function properties(elem) { + var props = [] + for (var key in elem) { + if (isProperty(elem, key)) { + props.push({ name: key, value: elem[key] }) + } + } + + for (var ns in elem._attributes) { + for (var attribute in elem._attributes[ns]) { + var prop = elem._attributes[ns][attribute] + var name = (prop.prefix ? prop.prefix + ":" : "") + attribute + props.push({ name: name, value: prop.value }) + } + } + + if (elem.className) { + props.push({ name: "class", value: elem.className }) + } + + return props.length ? stringify(props) : "" +} + +function escapeText(s) { + var str = ''; + + if (typeof(s) === 'string') { + str = s; + } else if (s) { + str = s.toString(); + } + + return str + .replace(/&/g, "&") + .replace(//g, ">") +} + +function escapeAttributeValue(str) { + return escapeText(str).replace(/"/g, """) +} diff --git a/node_modules/min-document/test/cleanup.js b/node_modules/min-document/test/cleanup.js new file mode 100644 index 0000000..d3ae66a --- /dev/null +++ b/node_modules/min-document/test/cleanup.js @@ -0,0 +1,13 @@ +module.exports = Cleanup + +function Cleanup (document) { + + return cleanup + + function cleanup () { + var childNodes = document.body.childNodes + for (var i = 0; i < childNodes.length; i++) { + document.body.removeChild(childNodes[i]) + } + } +} diff --git a/node_modules/min-document/test/index.js b/node_modules/min-document/test/index.js new file mode 100644 index 0000000..14b736a --- /dev/null +++ b/node_modules/min-document/test/index.js @@ -0,0 +1,14 @@ +var testDocument = require("./test-document") +var testDomElement = require("./test-dom-element") +var testDomComment = require("./test-dom-comment") +var document = require("../index") + +testDocument(document) +testDomElement(document) +testDomComment(document) + +if (typeof window !== "undefined" && window.document) { + testDocument(window.document) + testDomElement(window.document) + testDomComment(window.document) +} diff --git a/node_modules/min-document/test/static/index.html b/node_modules/min-document/test/static/index.html new file mode 100644 index 0000000..60f6ef8 --- /dev/null +++ b/node_modules/min-document/test/static/index.html @@ -0,0 +1,11 @@ + + + + TAPE Example + + + + + + + diff --git a/node_modules/min-document/test/static/test-adapter.js b/node_modules/min-document/test/static/test-adapter.js new file mode 100644 index 0000000..c512792 --- /dev/null +++ b/node_modules/min-document/test/static/test-adapter.js @@ -0,0 +1,49 @@ +(function () { + var Testem = window.Testem + var regex = /^((?:not )?ok) (\d+) (.+)$/ + + Testem.useCustomAdapter(tapAdapter) + + function tapAdapter(socket){ + var results = { + failed: 0 + , passed: 0 + , total: 0 + , tests: [] + } + + socket.emit('tests-start') + + Testem.handleConsoleMessage = function(msg){ + var m = msg.match(regex) + if (m) { + var passed = m[1] === 'ok' + var test = { + passed: passed ? 1 : 0, + failed: passed ? 0 : 1, + total: 1, + id: m[2], + name: m[3], + items: [] + } + + if (passed) { + results.passed++ + } else { + results.failed++ + } + + results.total++ + + socket.emit('test-result', test) + results.tests.push(test) + } else if (msg === '# ok' || msg.match(/^# tests \d+/)){ + socket.emit('all-test-results', results) + } + + // return false if you want to prevent the console message from + // going to the console + // return false + } + } +}()) diff --git a/node_modules/min-document/test/test-document.js b/node_modules/min-document/test/test-document.js new file mode 100644 index 0000000..282d9df --- /dev/null +++ b/node_modules/min-document/test/test-document.js @@ -0,0 +1,564 @@ +var test = require("tape") + +module.exports = testDocument + +function testDocument(document) { + var cleanup = require('./cleanup')(document) + var Event = require('../event'); + + test("document is a Document", function (assert) { + assert.equal(typeof document.createTextNode, "function") + assert.equal(typeof document.createElement, "function") + assert.equal(typeof document.createDocumentFragment, "function") + + assert.end() + }) + + test("document has a head property", function(assert) { + assert.equal(document.head.tagName, "HEAD") + assert.end() + }) + + test("document has nodeType 9", function (assert) { + assert.equal(document.nodeType, 9) + assert.end() + }) + + test("can do stuff", function (assert) { + var div = document.createElement("div") + div.className = "foo bar" + + var span = document.createElement("span") + div.appendChild(span) + span.textContent = "Hello! <&>" + + var html = String(div.outerHTML || div) + + assert.equal(html, "
        " + + "Hello! <&>
        ") + + cleanup() + assert.end() + }) + + test("can createDocumentFragment", function (assert) { + var frag = document.createDocumentFragment() + + assert.equal(frag.nodeType, 11) + + var h1 = document.createElement("h1") + var h2 = document.createElement("h2") + + assert.equal(h1.nodeType, 1) + assert.equal(h1.nodeType, 1) + + frag.appendChild(h1) + assert.equal(fragString(frag), "

        ") + + frag.appendChild(h2) + assert.equal(fragString(frag), "

        ") + + frag.removeChild(h1) + assert.equal(fragString(frag), "

        ") + + frag.replaceChild(h1, h2) + assert.equal(fragString(frag), "

        ") + + cleanup() + assert.end() + }) + + test("can getElementById", function (assert) { + + function append_div(id, parent) { + var div = document.createElement("div") + div.id = id + parent.appendChild(div) + return div + } + + var div1 = append_div(1, document.body) + var div2 = append_div(2, document.body) + var div3 = append_div(3, document.body) + + var div11 = append_div(11, div1) + var div12 = append_div(12, div1) + var div21 = append_div(21, div2) + var div22 = append_div(22, div2) + var div221 = append_div(221, div22) + var div222 = append_div(222, div22) + + assert.equal(document.getElementById(1), div1) + assert.equal(document.getElementById("2"), div2) + assert.equal(document.getElementById(3), div3) + assert.equal(document.getElementById(11), div11) + assert.equal(document.getElementById(12), div12) + assert.equal(document.getElementById(21), div21) + assert.equal(document.getElementById(22), div22) + assert.equal(document.getElementById(221), div221) + assert.equal(document.getElementById(222), div222) + + cleanup() + assert.end() + }) + + test("can getElementsByClassName for a single class", function(assert) { + function append_div(className, parent) { + var div = document.createElement("div") + div.className = className + parent.appendChild(div) + return div + } + + function assertSingleMatch(className, expectedElement) { + var result = document.getElementsByClassName(className) + assert.equal(result.length, 1) + assert.equal(result[0], expectedElement) + } + + var divA = append_div("A", document.body) + var divB = append_div("B", document.body) + var divC = append_div("C", document.body) + + var divA1 = append_div("A1", divA) + var divA2 = append_div("A2", divA) + var divB1 = append_div("B1", divB) + var divB2 = append_div("B2", divB) + var divB2a = append_div("B2a", divB2) + var divB2b = append_div("B2b", divB2) + + assertSingleMatch("A", divA) + assertSingleMatch("B", divB) + assertSingleMatch("C", divC) + assertSingleMatch("A1", divA1) + assertSingleMatch("A2", divA2) + assertSingleMatch("B1", divB1) + assertSingleMatch("B2", divB2) + assertSingleMatch("B2a", divB2a) + assertSingleMatch("B2b", divB2b) + + cleanup() + assert.end() + }) + + test("can getElementsByClassName for many elements", function (assert) { + function h(className) { + var div = document.createElement("div") + div.className = className + return div + } + + document.body.appendChild(h("multi-class-bar")) + document.body.appendChild(h("multi-class-bar")) + + var elems = document.getElementsByClassName("multi-class-bar") + assert.equal(elems.length, 2) + + cleanup() + assert.end() + }) + + test("can getElementsByClassName for many classes", function(assert) { + function append_div(classNames, parent) { + var div = document.createElement("div") + div.className = classNames + parent.appendChild(div) + return div + } + + function assertMatch(classNames, expectedElements) { + var result = document.getElementsByClassName(classNames) + assert.equal(result.length, expectedElements.length) + for (var i = 0; i < expectedElements.length; i++) { + assert.notEqual(expectedElements.indexOf(result[i]), -1) + } + } + + var divXYZ = append_div("X Y Z", document.body) + var divYZ = append_div("Y Z", document.body) + var divZX = append_div("Z X", document.body) + + var divX1X2 = append_div("X1 X2", divXYZ) + var divX1X2Y1 = append_div("X1 X2 Y1", divXYZ) + + + assertMatch("X", [divXYZ, divZX]) + assertMatch("Y Z", [divXYZ, divYZ]) + assertMatch("X Y Z", [divXYZ]) + assertMatch("X1 X2", [divX1X2, divX1X2Y1]) + + cleanup() + assert.end() + }) + + test("can create/manipulate textnodes", function (assert) { + var textnode = document.createTextNode("hello") + + assert.equal(textnode.nodeType, 3) + assert.equal(textnode.data, "hello") + assert.equal(typeof textnode.replaceData, "function") + + textnode.replaceData(0, 7, "nightly") + assert.equal(textnode.nodeType, 3) + assert.equal(textnode.data, "nightly") + assert.equal(typeof textnode.replaceData, "function") + + textnode.replaceData(1, 1, "ou") + assert.equal(textnode.nodeType, 3) + assert.equal(textnode.data, "noughtly") + + assert.end() + }) + + test("owner document is set", function (assert) { + var textnode = document.createTextNode("hello") + var domnode = document.createElement("div") + var fragment = document.createDocumentFragment() + + assert.equal(textnode.ownerDocument, document) + assert.equal(domnode.ownerDocument, document) + assert.equal(fragment.ownerDocument, document) + + assert.end() + }) + + test("Create namespaced nodes", function (assert) { + var svgURI = "http://www.w3.org/2000/svg" + var htmlURI = "http://www.w3.org/1999/xhtml" + + var noNS = document.createElement("div") + var svgNS = document.createElementNS(svgURI, "svg") + var emptyNS = document.createElementNS("", "div") + var nullNS = document.createElementNS(null, "div") + var undefNS = document.createElementNS(undefined, "div") + var caseNS = document.createElementNS("Oops", "AbC") + var htmlNS = document.createElement("div") + + assert.equal(noNS.tagName, "DIV") + assert.equal(noNS.namespaceURI, htmlURI) + assert.equal(elemString(noNS), "
        ") + + assert.equal(svgNS.tagName, "svg") + assert.equal(svgNS.namespaceURI, svgURI) + assert.equal(elemString(svgNS), "") + + assert.equal(emptyNS.tagName, "div") + assert.equal(emptyNS.namespaceURI, null) + assert.equal(elemString(emptyNS), "
        ") + + assert.equal(nullNS.tagName, "div") + assert.equal(nullNS.namespaceURI, null) + assert.equal(elemString(nullNS), "
        ") + + assert.equal(undefNS.tagName, "div") + assert.equal(undefNS.namespaceURI, "undefined") + assert.equal(elemString(undefNS), "
        ") + + assert.equal(caseNS.tagName, "AbC") + assert.equal(caseNS.namespaceURI, "Oops") + assert.equal(elemString(caseNS), "") + + assert.equal(htmlNS.tagName, "DIV") + assert.equal(htmlNS.namespaceURI, htmlURI) + assert.equal(elemString(htmlNS), "
        ") + + assert.end() + }) + + test("Can insert before", function (assert) { + var rootNode = document.createElement("div") + var child = document.createElement("div") + var newElement = document.createElement("div") + rootNode.appendChild(child) + var el = rootNode.insertBefore(newElement, child) + assert.equal(el, newElement) + assert.equal(rootNode.childNodes.length, 2) + assert.equal(rootNode.childNodes[0], newElement) + assert.equal(rootNode.childNodes[1], child) + cleanup() + assert.end() + }) + + test("Insert before null appends to end", function (assert) { + var rootNode = document.createElement("div") + var child = document.createElement("div") + var newElement = document.createElement("div") + rootNode.appendChild(child) + var el = rootNode.insertBefore(newElement, null) + assert.equal(el, newElement) + assert.equal(rootNode.childNodes.length, 2) + assert.equal(rootNode.childNodes[0], child) + assert.equal(rootNode.childNodes[1], newElement) + cleanup() + assert.end() + }) + + test("Node insertions remove node from parent", function (assert) { + var parent = document.createElement("div") + var c1 = document.createElement("div") + var c2 = document.createElement("div") + var c3 = document.createElement("div") + parent.appendChild(c1) + parent.appendChild(c2) + parent.appendChild(c3) + + var rootNode = document.createElement("div") + + var node1 = rootNode.appendChild(c1) + assert.equal(node1, c1) + assert.equal(parent.childNodes.length, 2) + assert.equal(c1.parentNode, rootNode) + + var node2 = rootNode.insertBefore(c2, c1) + assert.equal(node2, c2) + assert.equal(parent.childNodes.length, 1) + assert.equal(c2.parentNode, rootNode) + + var node3 = rootNode.replaceChild(c3, c2) + assert.equal(node3, c2) + assert.equal(parent.childNodes.length, 0) + assert.equal(c3.parentNode, rootNode) + assert.equal(c2.parentNode, null) + + cleanup() + assert.end() + }) + + test("input has type=text by default", function (assert) { + var elem = document.createElement("input") + assert.equal(elem.getAttribute("type"), "text"); + assert.equal(elemString(elem), "") + assert.end() + }) + + test("input type=text can be overridden", function (assert) { + var elem = document.createElement("input") + elem.setAttribute("type", "hidden") + assert.equal(elem.getAttribute("type"), "hidden"); + assert.equal(elemString(elem), "") + assert.end() + }) + + test("can set and get attributes", function (assert) { + var elem = document.createElement("div") + assert.equal(elem.getAttribute("foo"), null) + assert.equal(elemString(elem), "
        ") + assert.notOk(elem.hasAttribute('foo')) + + elem.setAttribute("foo", "bar") + assert.equal(elem.getAttribute("foo"), "bar") + assert.equal(elemString(elem), "
        ") + assert.ok(elem.hasAttribute('foo')) + + elem.removeAttribute("foo") + assert.equal(elem.getAttribute("foo"), null) + assert.equal(elemString(elem), "
        ") + assert.notOk(elem.hasAttribute('foo')) + + assert.end() + }) + + test("can set and set style properties", function(assert) { + var elem = document.createElement("div") + assert.equal(elemString(elem), "
        ") + + elem.style.color = "red"; + assert.equal(elem.style.color, "red") + assert.equal(elemString(elem), "
        ") + + elem.style.background = "blue"; + assert.equal(elem.style.color, "red") + assert.equal(elem.style.background, "blue") + assert.equal(elemString(elem), + "
        ") + + assert.end() + }) + + test("can set and get namespaced attributes", function(assert) { + var elem = document.createElement("div") + + var ns = "http://ns.com/my" + assert.equal(elem.getAttributeNS(ns, "myattr"), blankAttributeNS()) + elem.setAttributeNS(ns, "myns:myattr", "the value") + assert.equal(elem.getAttributeNS(ns, "myattr"), "the value") + assert.equal(elemString(elem), '
        ') + elem.removeAttributeNS(ns, "myattr") + assert.equal(elem.getAttributeNS(ns, "myattr"), blankAttributeNS()) + + // Should work much like get/setAttribute when namespace is null. + assert.equal(elem.getAttributeNS(null, "foo"), blankAttributeNS()) + assert.equal(elem.getAttribute("foo"), null) + elem.setAttributeNS(null, "foo", "bar") + assert.equal(elem.getAttributeNS(null, "foo"), "bar") + assert.equal(elem.getAttribute("foo"), "bar") + elem.removeAttributeNS(null, "foo") + assert.equal(elem.getAttributeNS(null, "foo"), blankAttributeNS()) + assert.equal(elem.getAttribute("foo"), null) + assert.end() + }) + + test("can getElementsByTagName", function(assert) { + var parent = document.createElement("div") + var child1 = document.createElement("span") + var child2 = document.createElement("span") + + child1.id = "foo" + child2.id = "bar" + + child1.appendChild(child2) + parent.appendChild(child1) + document.body.appendChild(parent) + + var elems = document.getElementsByTagName("SPAN") + + assert.equal(elems.length, 2) + assert.equal(elems[0].id, "foo") + assert.equal(elems[1].id, "bar") + + cleanup() + assert.end() + }) + + test("can getElementsByTagName with *", function(assert) { + document.body.appendChild(document.createElement("div")) + + var elems = document.getElementsByTagName("*") + + assert.equal(elems.length, 4) + assert.equal(elems[0].tagName, "HTML") + assert.equal(elems[1].tagName, "HEAD") + assert.equal(elems[2].tagName, "BODY") + assert.equal(elems[3].tagName, "DIV") + + cleanup() + assert.end() + }) + + test("getElement* methods search outside the body", function(assert) { + var html = document.documentElement; + assert.equal(document.getElementsByTagName("html")[0], html) + + html.id = "foo" + assert.equal(document.getElementById("foo"), html) + + html.className = "bar" + assert.equal(document.getElementsByClassName("bar")[0], html) + + // cleanup + html.id = "" + html.className = "" + + cleanup() + assert.end() + }) + + test("getElement* methods can be passed to map()", function(assert) { + var e1 = document.createElement("div") + var e2 = document.createElement("span") + + document.body.appendChild(e1) + document.body.appendChild(e2) + + assert.deepEqual( + ["div", "span"].map(document.getElementsByTagName.bind(document)), + [[e1], [e2]] + ) + + e1.id = "1" + e2.id = "2" + + assert.deepEqual( + ["1", "2"].map(document.getElementById.bind(document)), + [e1, e2] + ) + + e1.className = "foo" + e2.className = "bar" + + assert.deepEqual( + ["foo", "bar"].map(document.getElementsByClassName.bind(document)), + [[e1], [e2]] + ) + + cleanup() + assert.end() + }) + + test("can check if it contains an element", function(assert) { + var el = document.createElement("div") + document.body.appendChild(el) + + assert.equals(document.contains(document.body), true) + assert.equals(document.contains(el), true) + + cleanup() + assert.end() + }) + + test("can do events", function (assert) { + var x = 1 + function incx() { x++ } + + var ev = new Event(); + ev.initEvent("click"); + document.addEventListener("click", incx) + document.dispatchEvent(ev) + + assert.equal(x, 2) + + document.removeEventListener("click", incx) + document.dispatchEvent(ev) + + assert.equal(x, 2) + assert.end() + }) + + function blankAttributeNS() { + // Most browsers conform to the latest version of the DOM spec, + // which requires `getAttributeNS` to return `null` when the attribute + // doesn't exist, but some browsers (including phantomjs) implement the + // old version of the spec and return an empty string instead, see: + // https://developer.mozilla.org/en-US/docs/Web/API/element.getAttributeNS#Return_value + var div = document.createElement("div") + var blank = div.getAttributeNS(null, "foo") + if (!(blank === null || blank === "")) { + throw "Expected blank attribute to be either null or empty string" + } + return blank; + } + + function elemString(element) { + var html = String(element) || "[]" + + if (html.charAt(0) === "[") { + html = element.outerHTML + if (!html && !element.parentNode) { + var div = document.createElement("div") + div.appendChild(element) + html = div.innerHTML + div.removeChild(element) + } + } + + return html + } + + function fragString(fragment) { + var html = String(fragment) + + + if (html === "[object DocumentFragment]") { + var innerHTML = [] + for (var i = 0; i < fragment.childNodes.length; i++) { + var node = fragment.childNodes[i] + innerHTML.push(String(node.outerHTML || node)) + } + html = innerHTML.join("") + } + + return html + } +} + + diff --git a/node_modules/min-document/test/test-dom-comment.js b/node_modules/min-document/test/test-dom-comment.js new file mode 100644 index 0000000..7ecf175 --- /dev/null +++ b/node_modules/min-document/test/test-dom-comment.js @@ -0,0 +1,20 @@ +var test = require("tape") + +module.exports = testDomComment + +function testDomComment(document) { + var cleanup = require('./cleanup')(document) + + test("can createComment", function(assert) { + var comment = document.createComment("test") + assert.equal(comment.data, "test") + assert.equal(comment.length, 4) + assert.equal(comment.nodeName, "#comment") + assert.equal(comment.nodeType, 8) + assert.equal(comment.nodeValue, "test") + assert.equal(comment.ownerDocument, document) + assert.equal(comment.toString(), "[object Comment]") + cleanup() + assert.end() + }) +} diff --git a/node_modules/min-document/test/test-dom-element.js b/node_modules/min-document/test/test-dom-element.js new file mode 100644 index 0000000..b7f2baa --- /dev/null +++ b/node_modules/min-document/test/test-dom-element.js @@ -0,0 +1,219 @@ +var test = require("tape") + +module.exports = testDomElement + +function testDomElement(document) { + + var cleanup = require('./cleanup')(document) + + test("can getElementsByClassName", function(assert) { + function append_div(classNames, parent) { + var div = document.createElement("div") + div.className = classNames + parent.appendChild(div) + return div + } + + function assertMatch(classNames, expectedElements, parent) { + var parent = parent || document + var result = parent.getElementsByClassName(classNames) + assert.equal(result.length, expectedElements.length) + for (var i = 0; i < expectedElements.length; i++) { + assert.notEqual(expectedElements.indexOf(result[i]), -1) + } + } + + var divA = append_div("A", document.body) + var divB = append_div("B", document.body) + var divC = append_div("C", document.body) + + var divA1 = append_div("A1", divA) + var divA2 = append_div("A2", divA) + var divB1 = append_div("B1", divB) + var divB2 = append_div("B2", divB) + var divB2a = append_div("B2a", divB2) + var divB2b = append_div("B2b", divB2) + + assertMatch("A", [divA]) + assertMatch("B", [divB]) + assertMatch("C", [divC]) + assertMatch("A1", [divA1]) + assertMatch("A2", [divA2]) + assertMatch("B1", [divB1]) + assertMatch("B2", [divB2]) + assertMatch("B2a", [divB2a]) + assertMatch("B2b", [divB2b]) + + assertMatch("A1", [divA1], divA) + assertMatch("A2", [divA2], divA) + assertMatch("A1", [], divB) + assertMatch("A2", [], divC) + assertMatch("B1", [divB1], divB) + assertMatch("B2", [divB2], divB) + assertMatch("B2a", [divB2a], divB) + assertMatch("B2a", [divB2a], divB2) + assertMatch("B2b", [], divA) + + cleanup() + assert.end() + }) + + test("does not serialize innerText as an attribute", function(assert) { + var div = document.createElement("div") + div.innerText = "Test <&>" + assert.equal(div.toString(), "
        Test <&>
        ") + cleanup() + assert.end() + }) + + test("does not serialize innerHTML as an attribute", function(assert) { + var div = document.createElement("div") + div.innerHTML = "Test " + assert.equal(div.toString(), "
        Test
        ") + cleanup() + assert.end() + }) + + test("can getElementsByTagName", function(assert) { + var parent = document.createElement("div") + var child1 = document.createElement("span") + var child2 = document.createElement("span") + + child1.id = "foo" + child2.id = "bar" + + child1.appendChild(child2) + parent.appendChild(child1) + + var elems = parent.getElementsByTagName("SPAN") + + assert.equal(elems.length, 2) + assert.equal(elems[0].id, "foo") + assert.equal(elems[1].id, "bar") + + cleanup() + assert.end() + }) + + test("can getElementsByTagName with *", function(assert) { + var e1 = document.createElement("div") + var e2 = document.createElement("p") + var e3 = document.createElement("span") + + e1.appendChild(e2) + e2.appendChild(e3) + // non-elements should be ignored + e3.appendChild(document.createTextNode('foo')) + e3.appendChild(document.createComment('bar')) + + var elems = e1.getElementsByTagName("*") + + assert.equal(elems.length, 2) + assert.equal(elems[0].tagName, "P") + assert.equal(elems[1].tagName, "SPAN") + + cleanup() + assert.end() + }) + + test("getElement* methods can be passed to map()", function(assert) { + var container = document.createElement("div") + var e1 = document.createElement("div") + var e2 = document.createElement("span") + container.appendChild(e1) + container.appendChild(e2) + + assert.deepEqual( + ["div", "span"].map(container.getElementsByTagName.bind(container)), + [[e1], [e2]] + ) + + e1.className = "foo" + e2.className = "bar" + + assert.deepEqual( + ["foo", "bar"].map(container.getElementsByClassName.bind(container)), + [[e1], [e2]] + ) + + cleanup() + assert.end() + }) + + test("can serialize comment nodes", function(assert) { + var div = document.createElement("div") + div.appendChild(document.createComment("test")) + assert.equal(div.toString(), "
        ") + cleanup() + assert.end() + }) + + test("can serialize style property", function(assert) { + var div = document.createElement("div") + div.style.fontSize = "16px" + assert.equal(div.toString(), "
        ") + cleanup(); + assert.end() + }) + + test("can serialize style as a string", function(assert) { + var div = document.createElement("div") + div.setAttribute('style', 'display: none') + assert.equal(div.toString(), "
        ") + cleanup() + assert.end() + }) + + test("can serialize text nodes", function(assert) { + var div = document.createElement("div") + div.appendChild(document.createTextNode(' "&')) + assert.equal(div.toString(), '
        <test> "&
        ') + cleanup() + assert.end() + }) + + test("escapes serialized attribute values", function(assert) { + var div = document.createElement("div") + div.setAttribute("data-foo", '

        "&') + assert.equal(div.toString(), '

        ') + cleanup() + assert.end() + }) + + test("can check if an element contains another", function(assert) { + var parent = document.createElement("div") + var sibling = document.createElement("div") + var child1 = document.createElement("div") + var child2 = document.createElement("div") + + child1.appendChild(child2) + parent.appendChild(child1) + + assert.equal(parent.contains(parent), true) + assert.equal(parent.contains(sibling), false) + assert.equal(parent.contains(child1), true) + assert.equal(parent.contains(child2), true) + + cleanup() + assert.end() + }) + + test("can handle non string attribute values", function(assert) { + var div = document.createElement("div") + div.setAttribute("data-number", 100) + div.setAttribute("data-boolean", true) + div.setAttribute("data-null", null) + assert.equal(div.toString(), '
        ') + cleanup() + assert.end() + }) + + test("can serialize textarea correctly", function(assert) { + var input = document.createElement("textarea") + input.setAttribute("name", "comment") + input.innerHTML = "user input here" + assert.equal(input.toString(), '') + cleanup() + assert.end() + }) +} diff --git a/node_modules/minimatch/LICENSE b/node_modules/minimatch/LICENSE new file mode 100644 index 0000000..19129e3 --- /dev/null +++ b/node_modules/minimatch/LICENSE @@ -0,0 +1,15 @@ +The ISC License + +Copyright (c) Isaac Z. Schlueter and Contributors + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR +IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. diff --git a/node_modules/minimatch/README.md b/node_modules/minimatch/README.md new file mode 100644 index 0000000..33ede1d --- /dev/null +++ b/node_modules/minimatch/README.md @@ -0,0 +1,230 @@ +# minimatch + +A minimal matching utility. + +[![Build Status](https://travis-ci.org/isaacs/minimatch.svg?branch=master)](http://travis-ci.org/isaacs/minimatch) + + +This is the matching library used internally by npm. + +It works by converting glob expressions into JavaScript `RegExp` +objects. + +## Usage + +```javascript +var minimatch = require("minimatch") + +minimatch("bar.foo", "*.foo") // true! +minimatch("bar.foo", "*.bar") // false! +minimatch("bar.foo", "*.+(bar|foo)", { debug: true }) // true, and noisy! +``` + +## Features + +Supports these glob features: + +* Brace Expansion +* Extended glob matching +* "Globstar" `**` matching + +See: + +* `man sh` +* `man bash` +* `man 3 fnmatch` +* `man 5 gitignore` + +## Minimatch Class + +Create a minimatch object by instantiating the `minimatch.Minimatch` class. + +```javascript +var Minimatch = require("minimatch").Minimatch +var mm = new Minimatch(pattern, options) +``` + +### Properties + +* `pattern` The original pattern the minimatch object represents. +* `options` The options supplied to the constructor. +* `set` A 2-dimensional array of regexp or string expressions. + Each row in the + array corresponds to a brace-expanded pattern. Each item in the row + corresponds to a single path-part. For example, the pattern + `{a,b/c}/d` would expand to a set of patterns like: + + [ [ a, d ] + , [ b, c, d ] ] + + If a portion of the pattern doesn't have any "magic" in it + (that is, it's something like `"foo"` rather than `fo*o?`), then it + will be left as a string rather than converted to a regular + expression. + +* `regexp` Created by the `makeRe` method. A single regular expression + expressing the entire pattern. This is useful in cases where you wish + to use the pattern somewhat like `fnmatch(3)` with `FNM_PATH` enabled. +* `negate` True if the pattern is negated. +* `comment` True if the pattern is a comment. +* `empty` True if the pattern is `""`. + +### Methods + +* `makeRe` Generate the `regexp` member if necessary, and return it. + Will return `false` if the pattern is invalid. +* `match(fname)` Return true if the filename matches the pattern, or + false otherwise. +* `matchOne(fileArray, patternArray, partial)` Take a `/`-split + filename, and match it against a single row in the `regExpSet`. This + method is mainly for internal use, but is exposed so that it can be + used by a glob-walker that needs to avoid excessive filesystem calls. + +All other methods are internal, and will be called as necessary. + +### minimatch(path, pattern, options) + +Main export. Tests a path against the pattern using the options. + +```javascript +var isJS = minimatch(file, "*.js", { matchBase: true }) +``` + +### minimatch.filter(pattern, options) + +Returns a function that tests its +supplied argument, suitable for use with `Array.filter`. Example: + +```javascript +var javascripts = fileList.filter(minimatch.filter("*.js", {matchBase: true})) +``` + +### minimatch.match(list, pattern, options) + +Match against the list of +files, in the style of fnmatch or glob. If nothing is matched, and +options.nonull is set, then return a list containing the pattern itself. + +```javascript +var javascripts = minimatch.match(fileList, "*.js", {matchBase: true})) +``` + +### minimatch.makeRe(pattern, options) + +Make a regular expression object from the pattern. + +## Options + +All options are `false` by default. + +### debug + +Dump a ton of stuff to stderr. + +### nobrace + +Do not expand `{a,b}` and `{1..3}` brace sets. + +### noglobstar + +Disable `**` matching against multiple folder names. + +### dot + +Allow patterns to match filenames starting with a period, even if +the pattern does not explicitly have a period in that spot. + +Note that by default, `a/**/b` will **not** match `a/.d/b`, unless `dot` +is set. + +### noext + +Disable "extglob" style patterns like `+(a|b)`. + +### nocase + +Perform a case-insensitive match. + +### nonull + +When a match is not found by `minimatch.match`, return a list containing +the pattern itself if this option is set. When not set, an empty list +is returned if there are no matches. + +### matchBase + +If set, then patterns without slashes will be matched +against the basename of the path if it contains slashes. For example, +`a?b` would match the path `/xyz/123/acb`, but not `/xyz/acb/123`. + +### nocomment + +Suppress the behavior of treating `#` at the start of a pattern as a +comment. + +### nonegate + +Suppress the behavior of treating a leading `!` character as negation. + +### flipNegate + +Returns from negate expressions the same as if they were not negated. +(Ie, true on a hit, false on a miss.) + +### partial + +Compare a partial path to a pattern. As long as the parts of the path that +are present are not contradicted by the pattern, it will be treated as a +match. This is useful in applications where you're walking through a +folder structure, and don't yet have the full path, but want to ensure that +you do not walk down paths that can never be a match. + +For example, + +```js +minimatch('/a/b', '/a/*/c/d', { partial: true }) // true, might be /a/b/c/d +minimatch('/a/b', '/**/d', { partial: true }) // true, might be /a/b/.../d +minimatch('/x/y/z', '/a/**/z', { partial: true }) // false, because x !== a +``` + +### allowWindowsEscape + +Windows path separator `\` is by default converted to `/`, which +prohibits the usage of `\` as a escape character. This flag skips that +behavior and allows using the escape character. + +## Comparisons to other fnmatch/glob implementations + +While strict compliance with the existing standards is a worthwhile +goal, some discrepancies exist between minimatch and other +implementations, and are intentional. + +If the pattern starts with a `!` character, then it is negated. Set the +`nonegate` flag to suppress this behavior, and treat leading `!` +characters normally. This is perhaps relevant if you wish to start the +pattern with a negative extglob pattern like `!(a|B)`. Multiple `!` +characters at the start of a pattern will negate the pattern multiple +times. + +If a pattern starts with `#`, then it is treated as a comment, and +will not match anything. Use `\#` to match a literal `#` at the +start of a line, or set the `nocomment` flag to suppress this behavior. + +The double-star character `**` is supported by default, unless the +`noglobstar` flag is set. This is supported in the manner of bsdglob +and bash 4.1, where `**` only has special significance if it is the only +thing in a path part. That is, `a/**/b` will match `a/x/y/b`, but +`a/**b` will not. + +If an escaped pattern has no matches, and the `nonull` flag is set, +then minimatch.match returns the pattern as-provided, rather than +interpreting the character escapes. For example, +`minimatch.match([], "\\*a\\?")` will return `"\\*a\\?"` rather than +`"*a?"`. This is akin to setting the `nullglob` option in bash, except +that it does not resolve escaped pattern characters. + +If brace expansion is not disabled, then it is performed before any +other interpretation of the glob pattern. Thus, a pattern like +`+(a|{b),c)}`, which would not be valid in bash or zsh, is expanded +**first** into the set of `+(a|b)` and `+(a|c)`, and those patterns are +checked for validity. Since those two are valid, matching proceeds. diff --git a/node_modules/minimatch/minimatch.js b/node_modules/minimatch/minimatch.js new file mode 100644 index 0000000..fda45ad --- /dev/null +++ b/node_modules/minimatch/minimatch.js @@ -0,0 +1,947 @@ +module.exports = minimatch +minimatch.Minimatch = Minimatch + +var path = (function () { try { return require('path') } catch (e) {}}()) || { + sep: '/' +} +minimatch.sep = path.sep + +var GLOBSTAR = minimatch.GLOBSTAR = Minimatch.GLOBSTAR = {} +var expand = require('brace-expansion') + +var plTypes = { + '!': { open: '(?:(?!(?:', close: '))[^/]*?)'}, + '?': { open: '(?:', close: ')?' }, + '+': { open: '(?:', close: ')+' }, + '*': { open: '(?:', close: ')*' }, + '@': { open: '(?:', close: ')' } +} + +// any single thing other than / +// don't need to escape / when using new RegExp() +var qmark = '[^/]' + +// * => any number of characters +var star = qmark + '*?' + +// ** when dots are allowed. Anything goes, except .. and . +// not (^ or / followed by one or two dots followed by $ or /), +// followed by anything, any number of times. +var twoStarDot = '(?:(?!(?:\\\/|^)(?:\\.{1,2})($|\\\/)).)*?' + +// not a ^ or / followed by a dot, +// followed by anything, any number of times. +var twoStarNoDot = '(?:(?!(?:\\\/|^)\\.).)*?' + +// characters that need to be escaped in RegExp. +var reSpecials = charSet('().*{}+?[]^$\\!') + +// "abc" -> { a:true, b:true, c:true } +function charSet (s) { + return s.split('').reduce(function (set, c) { + set[c] = true + return set + }, {}) +} + +// normalizes slashes. +var slashSplit = /\/+/ + +minimatch.filter = filter +function filter (pattern, options) { + options = options || {} + return function (p, i, list) { + return minimatch(p, pattern, options) + } +} + +function ext (a, b) { + b = b || {} + var t = {} + Object.keys(a).forEach(function (k) { + t[k] = a[k] + }) + Object.keys(b).forEach(function (k) { + t[k] = b[k] + }) + return t +} + +minimatch.defaults = function (def) { + if (!def || typeof def !== 'object' || !Object.keys(def).length) { + return minimatch + } + + var orig = minimatch + + var m = function minimatch (p, pattern, options) { + return orig(p, pattern, ext(def, options)) + } + + m.Minimatch = function Minimatch (pattern, options) { + return new orig.Minimatch(pattern, ext(def, options)) + } + m.Minimatch.defaults = function defaults (options) { + return orig.defaults(ext(def, options)).Minimatch + } + + m.filter = function filter (pattern, options) { + return orig.filter(pattern, ext(def, options)) + } + + m.defaults = function defaults (options) { + return orig.defaults(ext(def, options)) + } + + m.makeRe = function makeRe (pattern, options) { + return orig.makeRe(pattern, ext(def, options)) + } + + m.braceExpand = function braceExpand (pattern, options) { + return orig.braceExpand(pattern, ext(def, options)) + } + + m.match = function (list, pattern, options) { + return orig.match(list, pattern, ext(def, options)) + } + + return m +} + +Minimatch.defaults = function (def) { + return minimatch.defaults(def).Minimatch +} + +function minimatch (p, pattern, options) { + assertValidPattern(pattern) + + if (!options) options = {} + + // shortcut: comments match nothing. + if (!options.nocomment && pattern.charAt(0) === '#') { + return false + } + + return new Minimatch(pattern, options).match(p) +} + +function Minimatch (pattern, options) { + if (!(this instanceof Minimatch)) { + return new Minimatch(pattern, options) + } + + assertValidPattern(pattern) + + if (!options) options = {} + + pattern = pattern.trim() + + // windows support: need to use /, not \ + if (!options.allowWindowsEscape && path.sep !== '/') { + pattern = pattern.split(path.sep).join('/') + } + + this.options = options + this.set = [] + this.pattern = pattern + this.regexp = null + this.negate = false + this.comment = false + this.empty = false + this.partial = !!options.partial + + // make the set of regexps etc. + this.make() +} + +Minimatch.prototype.debug = function () {} + +Minimatch.prototype.make = make +function make () { + var pattern = this.pattern + var options = this.options + + // empty patterns and comments match nothing. + if (!options.nocomment && pattern.charAt(0) === '#') { + this.comment = true + return + } + if (!pattern) { + this.empty = true + return + } + + // step 1: figure out negation, etc. + this.parseNegate() + + // step 2: expand braces + var set = this.globSet = this.braceExpand() + + if (options.debug) this.debug = function debug() { console.error.apply(console, arguments) } + + this.debug(this.pattern, set) + + // step 3: now we have a set, so turn each one into a series of path-portion + // matching patterns. + // These will be regexps, except in the case of "**", which is + // set to the GLOBSTAR object for globstar behavior, + // and will not contain any / characters + set = this.globParts = set.map(function (s) { + return s.split(slashSplit) + }) + + this.debug(this.pattern, set) + + // glob --> regexps + set = set.map(function (s, si, set) { + return s.map(this.parse, this) + }, this) + + this.debug(this.pattern, set) + + // filter out everything that didn't compile properly. + set = set.filter(function (s) { + return s.indexOf(false) === -1 + }) + + this.debug(this.pattern, set) + + this.set = set +} + +Minimatch.prototype.parseNegate = parseNegate +function parseNegate () { + var pattern = this.pattern + var negate = false + var options = this.options + var negateOffset = 0 + + if (options.nonegate) return + + for (var i = 0, l = pattern.length + ; i < l && pattern.charAt(i) === '!' + ; i++) { + negate = !negate + negateOffset++ + } + + if (negateOffset) this.pattern = pattern.substr(negateOffset) + this.negate = negate +} + +// Brace expansion: +// a{b,c}d -> abd acd +// a{b,}c -> abc ac +// a{0..3}d -> a0d a1d a2d a3d +// a{b,c{d,e}f}g -> abg acdfg acefg +// a{b,c}d{e,f}g -> abdeg acdeg abdeg abdfg +// +// Invalid sets are not expanded. +// a{2..}b -> a{2..}b +// a{b}c -> a{b}c +minimatch.braceExpand = function (pattern, options) { + return braceExpand(pattern, options) +} + +Minimatch.prototype.braceExpand = braceExpand + +function braceExpand (pattern, options) { + if (!options) { + if (this instanceof Minimatch) { + options = this.options + } else { + options = {} + } + } + + pattern = typeof pattern === 'undefined' + ? this.pattern : pattern + + assertValidPattern(pattern) + + // Thanks to Yeting Li for + // improving this regexp to avoid a ReDOS vulnerability. + if (options.nobrace || !/\{(?:(?!\{).)*\}/.test(pattern)) { + // shortcut. no need to expand. + return [pattern] + } + + return expand(pattern) +} + +var MAX_PATTERN_LENGTH = 1024 * 64 +var assertValidPattern = function (pattern) { + if (typeof pattern !== 'string') { + throw new TypeError('invalid pattern') + } + + if (pattern.length > MAX_PATTERN_LENGTH) { + throw new TypeError('pattern is too long') + } +} + +// parse a component of the expanded set. +// At this point, no pattern may contain "/" in it +// so we're going to return a 2d array, where each entry is the full +// pattern, split on '/', and then turned into a regular expression. +// A regexp is made at the end which joins each array with an +// escaped /, and another full one which joins each regexp with |. +// +// Following the lead of Bash 4.1, note that "**" only has special meaning +// when it is the *only* thing in a path portion. Otherwise, any series +// of * is equivalent to a single *. Globstar behavior is enabled by +// default, and can be disabled by setting options.noglobstar. +Minimatch.prototype.parse = parse +var SUBPARSE = {} +function parse (pattern, isSub) { + assertValidPattern(pattern) + + var options = this.options + + // shortcuts + if (pattern === '**') { + if (!options.noglobstar) + return GLOBSTAR + else + pattern = '*' + } + if (pattern === '') return '' + + var re = '' + var hasMagic = !!options.nocase + var escaping = false + // ? => one single character + var patternListStack = [] + var negativeLists = [] + var stateChar + var inClass = false + var reClassStart = -1 + var classStart = -1 + // . and .. never match anything that doesn't start with ., + // even when options.dot is set. + var patternStart = pattern.charAt(0) === '.' ? '' // anything + // not (start or / followed by . or .. followed by / or end) + : options.dot ? '(?!(?:^|\\\/)\\.{1,2}(?:$|\\\/))' + : '(?!\\.)' + var self = this + + function clearStateChar () { + if (stateChar) { + // we had some state-tracking character + // that wasn't consumed by this pass. + switch (stateChar) { + case '*': + re += star + hasMagic = true + break + case '?': + re += qmark + hasMagic = true + break + default: + re += '\\' + stateChar + break + } + self.debug('clearStateChar %j %j', stateChar, re) + stateChar = false + } + } + + for (var i = 0, len = pattern.length, c + ; (i < len) && (c = pattern.charAt(i)) + ; i++) { + this.debug('%s\t%s %s %j', pattern, i, re, c) + + // skip over any that are escaped. + if (escaping && reSpecials[c]) { + re += '\\' + c + escaping = false + continue + } + + switch (c) { + /* istanbul ignore next */ + case '/': { + // completely not allowed, even escaped. + // Should already be path-split by now. + return false + } + + case '\\': + clearStateChar() + escaping = true + continue + + // the various stateChar values + // for the "extglob" stuff. + case '?': + case '*': + case '+': + case '@': + case '!': + this.debug('%s\t%s %s %j <-- stateChar', pattern, i, re, c) + + // all of those are literals inside a class, except that + // the glob [!a] means [^a] in regexp + if (inClass) { + this.debug(' in class') + if (c === '!' && i === classStart + 1) c = '^' + re += c + continue + } + + // if we already have a stateChar, then it means + // that there was something like ** or +? in there. + // Handle the stateChar, then proceed with this one. + self.debug('call clearStateChar %j', stateChar) + clearStateChar() + stateChar = c + // if extglob is disabled, then +(asdf|foo) isn't a thing. + // just clear the statechar *now*, rather than even diving into + // the patternList stuff. + if (options.noext) clearStateChar() + continue + + case '(': + if (inClass) { + re += '(' + continue + } + + if (!stateChar) { + re += '\\(' + continue + } + + patternListStack.push({ + type: stateChar, + start: i - 1, + reStart: re.length, + open: plTypes[stateChar].open, + close: plTypes[stateChar].close + }) + // negation is (?:(?!js)[^/]*) + re += stateChar === '!' ? '(?:(?!(?:' : '(?:' + this.debug('plType %j %j', stateChar, re) + stateChar = false + continue + + case ')': + if (inClass || !patternListStack.length) { + re += '\\)' + continue + } + + clearStateChar() + hasMagic = true + var pl = patternListStack.pop() + // negation is (?:(?!js)[^/]*) + // The others are (?:) + re += pl.close + if (pl.type === '!') { + negativeLists.push(pl) + } + pl.reEnd = re.length + continue + + case '|': + if (inClass || !patternListStack.length || escaping) { + re += '\\|' + escaping = false + continue + } + + clearStateChar() + re += '|' + continue + + // these are mostly the same in regexp and glob + case '[': + // swallow any state-tracking char before the [ + clearStateChar() + + if (inClass) { + re += '\\' + c + continue + } + + inClass = true + classStart = i + reClassStart = re.length + re += c + continue + + case ']': + // a right bracket shall lose its special + // meaning and represent itself in + // a bracket expression if it occurs + // first in the list. -- POSIX.2 2.8.3.2 + if (i === classStart + 1 || !inClass) { + re += '\\' + c + escaping = false + continue + } + + // handle the case where we left a class open. + // "[z-a]" is valid, equivalent to "\[z-a\]" + // split where the last [ was, make sure we don't have + // an invalid re. if so, re-walk the contents of the + // would-be class to re-translate any characters that + // were passed through as-is + // TODO: It would probably be faster to determine this + // without a try/catch and a new RegExp, but it's tricky + // to do safely. For now, this is safe and works. + var cs = pattern.substring(classStart + 1, i) + try { + RegExp('[' + cs + ']') + } catch (er) { + // not a valid class! + var sp = this.parse(cs, SUBPARSE) + re = re.substr(0, reClassStart) + '\\[' + sp[0] + '\\]' + hasMagic = hasMagic || sp[1] + inClass = false + continue + } + + // finish up the class. + hasMagic = true + inClass = false + re += c + continue + + default: + // swallow any state char that wasn't consumed + clearStateChar() + + if (escaping) { + // no need + escaping = false + } else if (reSpecials[c] + && !(c === '^' && inClass)) { + re += '\\' + } + + re += c + + } // switch + } // for + + // handle the case where we left a class open. + // "[abc" is valid, equivalent to "\[abc" + if (inClass) { + // split where the last [ was, and escape it + // this is a huge pita. We now have to re-walk + // the contents of the would-be class to re-translate + // any characters that were passed through as-is + cs = pattern.substr(classStart + 1) + sp = this.parse(cs, SUBPARSE) + re = re.substr(0, reClassStart) + '\\[' + sp[0] + hasMagic = hasMagic || sp[1] + } + + // handle the case where we had a +( thing at the *end* + // of the pattern. + // each pattern list stack adds 3 chars, and we need to go through + // and escape any | chars that were passed through as-is for the regexp. + // Go through and escape them, taking care not to double-escape any + // | chars that were already escaped. + for (pl = patternListStack.pop(); pl; pl = patternListStack.pop()) { + var tail = re.slice(pl.reStart + pl.open.length) + this.debug('setting tail', re, pl) + // maybe some even number of \, then maybe 1 \, followed by a | + tail = tail.replace(/((?:\\{2}){0,64})(\\?)\|/g, function (_, $1, $2) { + if (!$2) { + // the | isn't already escaped, so escape it. + $2 = '\\' + } + + // need to escape all those slashes *again*, without escaping the + // one that we need for escaping the | character. As it works out, + // escaping an even number of slashes can be done by simply repeating + // it exactly after itself. That's why this trick works. + // + // I am sorry that you have to see this. + return $1 + $1 + $2 + '|' + }) + + this.debug('tail=%j\n %s', tail, tail, pl, re) + var t = pl.type === '*' ? star + : pl.type === '?' ? qmark + : '\\' + pl.type + + hasMagic = true + re = re.slice(0, pl.reStart) + t + '\\(' + tail + } + + // handle trailing things that only matter at the very end. + clearStateChar() + if (escaping) { + // trailing \\ + re += '\\\\' + } + + // only need to apply the nodot start if the re starts with + // something that could conceivably capture a dot + var addPatternStart = false + switch (re.charAt(0)) { + case '[': case '.': case '(': addPatternStart = true + } + + // Hack to work around lack of negative lookbehind in JS + // A pattern like: *.!(x).!(y|z) needs to ensure that a name + // like 'a.xyz.yz' doesn't match. So, the first negative + // lookahead, has to look ALL the way ahead, to the end of + // the pattern. + for (var n = negativeLists.length - 1; n > -1; n--) { + var nl = negativeLists[n] + + var nlBefore = re.slice(0, nl.reStart) + var nlFirst = re.slice(nl.reStart, nl.reEnd - 8) + var nlLast = re.slice(nl.reEnd - 8, nl.reEnd) + var nlAfter = re.slice(nl.reEnd) + + nlLast += nlAfter + + // Handle nested stuff like *(*.js|!(*.json)), where open parens + // mean that we should *not* include the ) in the bit that is considered + // "after" the negated section. + var openParensBefore = nlBefore.split('(').length - 1 + var cleanAfter = nlAfter + for (i = 0; i < openParensBefore; i++) { + cleanAfter = cleanAfter.replace(/\)[+*?]?/, '') + } + nlAfter = cleanAfter + + var dollar = '' + if (nlAfter === '' && isSub !== SUBPARSE) { + dollar = '$' + } + var newRe = nlBefore + nlFirst + nlAfter + dollar + nlLast + re = newRe + } + + // if the re is not "" at this point, then we need to make sure + // it doesn't match against an empty path part. + // Otherwise a/* will match a/, which it should not. + if (re !== '' && hasMagic) { + re = '(?=.)' + re + } + + if (addPatternStart) { + re = patternStart + re + } + + // parsing just a piece of a larger pattern. + if (isSub === SUBPARSE) { + return [re, hasMagic] + } + + // skip the regexp for non-magical patterns + // unescape anything in it, though, so that it'll be + // an exact match against a file etc. + if (!hasMagic) { + return globUnescape(pattern) + } + + var flags = options.nocase ? 'i' : '' + try { + var regExp = new RegExp('^' + re + '$', flags) + } catch (er) /* istanbul ignore next - should be impossible */ { + // If it was an invalid regular expression, then it can't match + // anything. This trick looks for a character after the end of + // the string, which is of course impossible, except in multi-line + // mode, but it's not a /m regex. + return new RegExp('$.') + } + + regExp._glob = pattern + regExp._src = re + + return regExp +} + +minimatch.makeRe = function (pattern, options) { + return new Minimatch(pattern, options || {}).makeRe() +} + +Minimatch.prototype.makeRe = makeRe +function makeRe () { + if (this.regexp || this.regexp === false) return this.regexp + + // at this point, this.set is a 2d array of partial + // pattern strings, or "**". + // + // It's better to use .match(). This function shouldn't + // be used, really, but it's pretty convenient sometimes, + // when you just want to work with a regex. + var set = this.set + + if (!set.length) { + this.regexp = false + return this.regexp + } + var options = this.options + + var twoStar = options.noglobstar ? star + : options.dot ? twoStarDot + : twoStarNoDot + var flags = options.nocase ? 'i' : '' + + var re = set.map(function (pattern) { + return pattern.map(function (p) { + return (p === GLOBSTAR) ? twoStar + : (typeof p === 'string') ? regExpEscape(p) + : p._src + }).join('\\\/') + }).join('|') + + // must match entire pattern + // ending in a * or ** will make it less strict. + re = '^(?:' + re + ')$' + + // can match anything, as long as it's not this. + if (this.negate) re = '^(?!' + re + ').*$' + + try { + this.regexp = new RegExp(re, flags) + } catch (ex) /* istanbul ignore next - should be impossible */ { + this.regexp = false + } + return this.regexp +} + +minimatch.match = function (list, pattern, options) { + options = options || {} + var mm = new Minimatch(pattern, options) + list = list.filter(function (f) { + return mm.match(f) + }) + if (mm.options.nonull && !list.length) { + list.push(pattern) + } + return list +} + +Minimatch.prototype.match = function match (f, partial) { + if (typeof partial === 'undefined') partial = this.partial + this.debug('match', f, this.pattern) + // short-circuit in the case of busted things. + // comments, etc. + if (this.comment) return false + if (this.empty) return f === '' + + if (f === '/' && partial) return true + + var options = this.options + + // windows: need to use /, not \ + if (path.sep !== '/') { + f = f.split(path.sep).join('/') + } + + // treat the test path as a set of pathparts. + f = f.split(slashSplit) + this.debug(this.pattern, 'split', f) + + // just ONE of the pattern sets in this.set needs to match + // in order for it to be valid. If negating, then just one + // match means that we have failed. + // Either way, return on the first hit. + + var set = this.set + this.debug(this.pattern, 'set', set) + + // Find the basename of the path by looking for the last non-empty segment + var filename + var i + for (i = f.length - 1; i >= 0; i--) { + filename = f[i] + if (filename) break + } + + for (i = 0; i < set.length; i++) { + var pattern = set[i] + var file = f + if (options.matchBase && pattern.length === 1) { + file = [filename] + } + var hit = this.matchOne(file, pattern, partial) + if (hit) { + if (options.flipNegate) return true + return !this.negate + } + } + + // didn't get any hits. this is success if it's a negative + // pattern, failure otherwise. + if (options.flipNegate) return false + return this.negate +} + +// set partial to true to test if, for example, +// "/a/b" matches the start of "/*/b/*/d" +// Partial means, if you run out of file before you run +// out of pattern, then that's fine, as long as all +// the parts match. +Minimatch.prototype.matchOne = function (file, pattern, partial) { + var options = this.options + + this.debug('matchOne', + { 'this': this, file: file, pattern: pattern }) + + this.debug('matchOne', file.length, pattern.length) + + for (var fi = 0, + pi = 0, + fl = file.length, + pl = pattern.length + ; (fi < fl) && (pi < pl) + ; fi++, pi++) { + this.debug('matchOne loop') + var p = pattern[pi] + var f = file[fi] + + this.debug(pattern, p, f) + + // should be impossible. + // some invalid regexp stuff in the set. + /* istanbul ignore if */ + if (p === false) return false + + if (p === GLOBSTAR) { + this.debug('GLOBSTAR', [pattern, p, f]) + + // "**" + // a/**/b/**/c would match the following: + // a/b/x/y/z/c + // a/x/y/z/b/c + // a/b/x/b/x/c + // a/b/c + // To do this, take the rest of the pattern after + // the **, and see if it would match the file remainder. + // If so, return success. + // If not, the ** "swallows" a segment, and try again. + // This is recursively awful. + // + // a/**/b/**/c matching a/b/x/y/z/c + // - a matches a + // - doublestar + // - matchOne(b/x/y/z/c, b/**/c) + // - b matches b + // - doublestar + // - matchOne(x/y/z/c, c) -> no + // - matchOne(y/z/c, c) -> no + // - matchOne(z/c, c) -> no + // - matchOne(c, c) yes, hit + var fr = fi + var pr = pi + 1 + if (pr === pl) { + this.debug('** at the end') + // a ** at the end will just swallow the rest. + // We have found a match. + // however, it will not swallow /.x, unless + // options.dot is set. + // . and .. are *never* matched by **, for explosively + // exponential reasons. + for (; fi < fl; fi++) { + if (file[fi] === '.' || file[fi] === '..' || + (!options.dot && file[fi].charAt(0) === '.')) return false + } + return true + } + + // ok, let's see if we can swallow whatever we can. + while (fr < fl) { + var swallowee = file[fr] + + this.debug('\nglobstar while', file, fr, pattern, pr, swallowee) + + // XXX remove this slice. Just pass the start index. + if (this.matchOne(file.slice(fr), pattern.slice(pr), partial)) { + this.debug('globstar found match!', fr, fl, swallowee) + // found a match. + return true + } else { + // can't swallow "." or ".." ever. + // can only swallow ".foo" when explicitly asked. + if (swallowee === '.' || swallowee === '..' || + (!options.dot && swallowee.charAt(0) === '.')) { + this.debug('dot detected!', file, fr, pattern, pr) + break + } + + // ** swallows a segment, and continue. + this.debug('globstar swallow a segment, and continue') + fr++ + } + } + + // no match was found. + // However, in partial mode, we can't say this is necessarily over. + // If there's more *pattern* left, then + /* istanbul ignore if */ + if (partial) { + // ran out of file + this.debug('\n>>> no match, partial?', file, fr, pattern, pr) + if (fr === fl) return true + } + return false + } + + // something other than ** + // non-magic patterns just have to match exactly + // patterns with magic have been turned into regexps. + var hit + if (typeof p === 'string') { + hit = f === p + this.debug('string match', p, f, hit) + } else { + hit = f.match(p) + this.debug('pattern match', p, f, hit) + } + + if (!hit) return false + } + + // Note: ending in / means that we'll get a final "" + // at the end of the pattern. This can only match a + // corresponding "" at the end of the file. + // If the file ends in /, then it can only match a + // a pattern that ends in /, unless the pattern just + // doesn't have any more for it. But, a/b/ should *not* + // match "a/b/*", even though "" matches against the + // [^/]*? pattern, except in partial mode, where it might + // simply not be reached yet. + // However, a/b/ should still satisfy a/* + + // now either we fell off the end of the pattern, or we're done. + if (fi === fl && pi === pl) { + // ran out of pattern and filename at the same time. + // an exact hit! + return true + } else if (fi === fl) { + // ran out of file, but still had pattern left. + // this is ok if we're doing the match as part of + // a glob fs traversal. + return partial + } else /* istanbul ignore else */ if (pi === pl) { + // ran out of pattern, still have file left. + // this is only acceptable if we're on the very last + // empty segment of a file with a trailing slash. + // a/* should match a/b/ + return (fi === fl - 1) && (file[fi] === '') + } + + // should be unreachable. + /* istanbul ignore next */ + throw new Error('wtf?') +} + +// replace stuff like \* with * +function globUnescape (s) { + return s.replace(/\\(.)/g, '$1') +} + +function regExpEscape (s) { + return s.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, '\\$&') +} diff --git a/node_modules/minimatch/package.json b/node_modules/minimatch/package.json new file mode 100644 index 0000000..566efdf --- /dev/null +++ b/node_modules/minimatch/package.json @@ -0,0 +1,33 @@ +{ + "author": "Isaac Z. Schlueter (http://blog.izs.me)", + "name": "minimatch", + "description": "a glob matcher in javascript", + "version": "3.1.2", + "publishConfig": { + "tag": "v3-legacy" + }, + "repository": { + "type": "git", + "url": "git://github.com/isaacs/minimatch.git" + }, + "main": "minimatch.js", + "scripts": { + "test": "tap", + "preversion": "npm test", + "postversion": "npm publish", + "postpublish": "git push origin --all; git push origin --tags" + }, + "engines": { + "node": "*" + }, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "devDependencies": { + "tap": "^15.1.6" + }, + "license": "ISC", + "files": [ + "minimatch.js" + ] +} diff --git a/node_modules/node-fetch/LICENSE.md b/node_modules/node-fetch/LICENSE.md new file mode 100644 index 0000000..660ffec --- /dev/null +++ b/node_modules/node-fetch/LICENSE.md @@ -0,0 +1,22 @@ +The MIT License (MIT) + +Copyright (c) 2016 David Frank + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + diff --git a/node_modules/node-fetch/README.md b/node_modules/node-fetch/README.md new file mode 100644 index 0000000..4f87a59 --- /dev/null +++ b/node_modules/node-fetch/README.md @@ -0,0 +1,633 @@ +node-fetch +========== + +[![npm version][npm-image]][npm-url] +[![build status][travis-image]][travis-url] +[![coverage status][codecov-image]][codecov-url] +[![install size][install-size-image]][install-size-url] +[![Discord][discord-image]][discord-url] + +A light-weight module that brings `window.fetch` to Node.js + +(We are looking for [v2 maintainers and collaborators](https://github.com/bitinn/node-fetch/issues/567)) + +[![Backers][opencollective-image]][opencollective-url] + + + +- [Motivation](#motivation) +- [Features](#features) +- [Difference from client-side fetch](#difference-from-client-side-fetch) +- [Installation](#installation) +- [Loading and configuring the module](#loading-and-configuring-the-module) +- [Common Usage](#common-usage) + - [Plain text or HTML](#plain-text-or-html) + - [JSON](#json) + - [Simple Post](#simple-post) + - [Post with JSON](#post-with-json) + - [Post with form parameters](#post-with-form-parameters) + - [Handling exceptions](#handling-exceptions) + - [Handling client and server errors](#handling-client-and-server-errors) +- [Advanced Usage](#advanced-usage) + - [Streams](#streams) + - [Buffer](#buffer) + - [Accessing Headers and other Meta data](#accessing-headers-and-other-meta-data) + - [Extract Set-Cookie Header](#extract-set-cookie-header) + - [Post data using a file stream](#post-data-using-a-file-stream) + - [Post with form-data (detect multipart)](#post-with-form-data-detect-multipart) + - [Request cancellation with AbortSignal](#request-cancellation-with-abortsignal) +- [API](#api) + - [fetch(url[, options])](#fetchurl-options) + - [Options](#options) + - [Class: Request](#class-request) + - [Class: Response](#class-response) + - [Class: Headers](#class-headers) + - [Interface: Body](#interface-body) + - [Class: FetchError](#class-fetcherror) +- [License](#license) +- [Acknowledgement](#acknowledgement) + + + +## Motivation + +Instead of implementing `XMLHttpRequest` in Node.js to run browser-specific [Fetch polyfill](https://github.com/github/fetch), why not go from native `http` to `fetch` API directly? Hence, `node-fetch`, minimal code for a `window.fetch` compatible API on Node.js runtime. + +See Matt Andrews' [isomorphic-fetch](https://github.com/matthew-andrews/isomorphic-fetch) or Leonardo Quixada's [cross-fetch](https://github.com/lquixada/cross-fetch) for isomorphic usage (exports `node-fetch` for server-side, `whatwg-fetch` for client-side). + +## Features + +- Stay consistent with `window.fetch` API. +- Make conscious trade-off when following [WHATWG fetch spec][whatwg-fetch] and [stream spec](https://streams.spec.whatwg.org/) implementation details, document known differences. +- Use native promise but allow substituting it with [insert your favorite promise library]. +- Use native Node streams for body on both request and response. +- Decode content encoding (gzip/deflate) properly and convert string output (such as `res.text()` and `res.json()`) to UTF-8 automatically. +- Useful extensions such as timeout, redirect limit, response size limit, [explicit errors](ERROR-HANDLING.md) for troubleshooting. + +## Difference from client-side fetch + +- See [Known Differences](LIMITS.md) for details. +- If you happen to use a missing feature that `window.fetch` offers, feel free to open an issue. +- Pull requests are welcomed too! + +## Installation + +Current stable release (`2.x`) + +```sh +$ npm install node-fetch +``` + +## Loading and configuring the module +We suggest you load the module via `require` until the stabilization of ES modules in node: +```js +const fetch = require('node-fetch'); +``` + +If you are using a Promise library other than native, set it through `fetch.Promise`: +```js +const Bluebird = require('bluebird'); + +fetch.Promise = Bluebird; +``` + +## Common Usage + +NOTE: The documentation below is up-to-date with `2.x` releases; see the [`1.x` readme](https://github.com/bitinn/node-fetch/blob/1.x/README.md), [changelog](https://github.com/bitinn/node-fetch/blob/1.x/CHANGELOG.md) and [2.x upgrade guide](UPGRADE-GUIDE.md) for the differences. + +#### Plain text or HTML +```js +fetch('https://github.com/') + .then(res => res.text()) + .then(body => console.log(body)); +``` + +#### JSON + +```js + +fetch('https://api.github.com/users/github') + .then(res => res.json()) + .then(json => console.log(json)); +``` + +#### Simple Post +```js +fetch('https://httpbin.org/post', { method: 'POST', body: 'a=1' }) + .then(res => res.json()) // expecting a json response + .then(json => console.log(json)); +``` + +#### Post with JSON + +```js +const body = { a: 1 }; + +fetch('https://httpbin.org/post', { + method: 'post', + body: JSON.stringify(body), + headers: { 'Content-Type': 'application/json' }, + }) + .then(res => res.json()) + .then(json => console.log(json)); +``` + +#### Post with form parameters +`URLSearchParams` is available in Node.js as of v7.5.0. See [official documentation](https://nodejs.org/api/url.html#url_class_urlsearchparams) for more usage methods. + +NOTE: The `Content-Type` header is only set automatically to `x-www-form-urlencoded` when an instance of `URLSearchParams` is given as such: + +```js +const { URLSearchParams } = require('url'); + +const params = new URLSearchParams(); +params.append('a', 1); + +fetch('https://httpbin.org/post', { method: 'POST', body: params }) + .then(res => res.json()) + .then(json => console.log(json)); +``` + +#### Handling exceptions +NOTE: 3xx-5xx responses are *NOT* exceptions and should be handled in `then()`; see the next section for more information. + +Adding a catch to the fetch promise chain will catch *all* exceptions, such as errors originating from node core libraries, network errors and operational errors, which are instances of FetchError. See the [error handling document](ERROR-HANDLING.md) for more details. + +```js +fetch('https://domain.invalid/') + .catch(err => console.error(err)); +``` + +#### Handling client and server errors +It is common to create a helper function to check that the response contains no client (4xx) or server (5xx) error responses: + +```js +function checkStatus(res) { + if (res.ok) { // res.status >= 200 && res.status < 300 + return res; + } else { + throw MyCustomError(res.statusText); + } +} + +fetch('https://httpbin.org/status/400') + .then(checkStatus) + .then(res => console.log('will not get here...')) +``` + +## Advanced Usage + +#### Streams +The "Node.js way" is to use streams when possible: + +```js +fetch('https://assets-cdn.github.com/images/modules/logos_page/Octocat.png') + .then(res => { + const dest = fs.createWriteStream('./octocat.png'); + res.body.pipe(dest); + }); +``` + +In Node.js 14 you can also use async iterators to read `body`; however, be careful to catch +errors -- the longer a response runs, the more likely it is to encounter an error. + +```js +const fetch = require('node-fetch'); +const response = await fetch('https://httpbin.org/stream/3'); +try { + for await (const chunk of response.body) { + console.dir(JSON.parse(chunk.toString())); + } +} catch (err) { + console.error(err.stack); +} +``` + +In Node.js 12 you can also use async iterators to read `body`; however, async iterators with streams +did not mature until Node.js 14, so you need to do some extra work to ensure you handle errors +directly from the stream and wait on it response to fully close. + +```js +const fetch = require('node-fetch'); +const read = async body => { + let error; + body.on('error', err => { + error = err; + }); + for await (const chunk of body) { + console.dir(JSON.parse(chunk.toString())); + } + return new Promise((resolve, reject) => { + body.on('close', () => { + error ? reject(error) : resolve(); + }); + }); +}; +try { + const response = await fetch('https://httpbin.org/stream/3'); + await read(response.body); +} catch (err) { + console.error(err.stack); +} +``` + +#### Buffer +If you prefer to cache binary data in full, use buffer(). (NOTE: `buffer()` is a `node-fetch`-only API) + +```js +const fileType = require('file-type'); + +fetch('https://assets-cdn.github.com/images/modules/logos_page/Octocat.png') + .then(res => res.buffer()) + .then(buffer => fileType(buffer)) + .then(type => { /* ... */ }); +``` + +#### Accessing Headers and other Meta data +```js +fetch('https://github.com/') + .then(res => { + console.log(res.ok); + console.log(res.status); + console.log(res.statusText); + console.log(res.headers.raw()); + console.log(res.headers.get('content-type')); + }); +``` + +#### Extract Set-Cookie Header + +Unlike browsers, you can access raw `Set-Cookie` headers manually using `Headers.raw()`. This is a `node-fetch` only API. + +```js +fetch(url).then(res => { + // returns an array of values, instead of a string of comma-separated values + console.log(res.headers.raw()['set-cookie']); +}); +``` + +#### Post data using a file stream + +```js +const { createReadStream } = require('fs'); + +const stream = createReadStream('input.txt'); + +fetch('https://httpbin.org/post', { method: 'POST', body: stream }) + .then(res => res.json()) + .then(json => console.log(json)); +``` + +#### Post with form-data (detect multipart) + +```js +const FormData = require('form-data'); + +const form = new FormData(); +form.append('a', 1); + +fetch('https://httpbin.org/post', { method: 'POST', body: form }) + .then(res => res.json()) + .then(json => console.log(json)); + +// OR, using custom headers +// NOTE: getHeaders() is non-standard API + +const form = new FormData(); +form.append('a', 1); + +const options = { + method: 'POST', + body: form, + headers: form.getHeaders() +} + +fetch('https://httpbin.org/post', options) + .then(res => res.json()) + .then(json => console.log(json)); +``` + +#### Request cancellation with AbortSignal + +> NOTE: You may cancel streamed requests only on Node >= v8.0.0 + +You may cancel requests with `AbortController`. A suggested implementation is [`abort-controller`](https://www.npmjs.com/package/abort-controller). + +An example of timing out a request after 150ms could be achieved as the following: + +```js +import AbortController from 'abort-controller'; + +const controller = new AbortController(); +const timeout = setTimeout( + () => { controller.abort(); }, + 150, +); + +fetch(url, { signal: controller.signal }) + .then(res => res.json()) + .then( + data => { + useData(data) + }, + err => { + if (err.name === 'AbortError') { + // request was aborted + } + }, + ) + .finally(() => { + clearTimeout(timeout); + }); +``` + +See [test cases](https://github.com/bitinn/node-fetch/blob/master/test/test.js) for more examples. + + +## API + +### fetch(url[, options]) + +- `url` A string representing the URL for fetching +- `options` [Options](#fetch-options) for the HTTP(S) request +- Returns: Promise<[Response](#class-response)> + +Perform an HTTP(S) fetch. + +`url` should be an absolute url, such as `https://example.com/`. A path-relative URL (`/file/under/root`) or protocol-relative URL (`//can-be-http-or-https.com/`) will result in a rejected `Promise`. + + +### Options + +The default values are shown after each option key. + +```js +{ + // These properties are part of the Fetch Standard + method: 'GET', + headers: {}, // request headers. format is the identical to that accepted by the Headers constructor (see below) + body: null, // request body. can be null, a string, a Buffer, a Blob, or a Node.js Readable stream + redirect: 'follow', // set to `manual` to extract redirect headers, `error` to reject redirect + signal: null, // pass an instance of AbortSignal to optionally abort requests + + // The following properties are node-fetch extensions + follow: 20, // maximum redirect count. 0 to not follow redirect + timeout: 0, // req/res timeout in ms, it resets on redirect. 0 to disable (OS limit applies). Signal is recommended instead. + compress: true, // support gzip/deflate content encoding. false to disable + size: 0, // maximum response body size in bytes. 0 to disable + agent: null // http(s).Agent instance or function that returns an instance (see below) +} +``` + +##### Default Headers + +If no values are set, the following request headers will be sent automatically: + +Header | Value +------------------- | -------------------------------------------------------- +`Accept-Encoding` | `gzip,deflate` _(when `options.compress === true`)_ +`Accept` | `*/*` +`Connection` | `close` _(when no `options.agent` is present)_ +`Content-Length` | _(automatically calculated, if possible)_ +`Transfer-Encoding` | `chunked` _(when `req.body` is a stream)_ +`User-Agent` | `node-fetch/1.0 (+https://github.com/bitinn/node-fetch)` + +Note: when `body` is a `Stream`, `Content-Length` is not set automatically. + +##### Custom Agent + +The `agent` option allows you to specify networking related options which are out of the scope of Fetch, including and not limited to the following: + +- Support self-signed certificate +- Use only IPv4 or IPv6 +- Custom DNS Lookup + +See [`http.Agent`](https://nodejs.org/api/http.html#http_new_agent_options) for more information. + +In addition, the `agent` option accepts a function that returns `http`(s)`.Agent` instance given current [URL](https://nodejs.org/api/url.html), this is useful during a redirection chain across HTTP and HTTPS protocol. + +```js +const httpAgent = new http.Agent({ + keepAlive: true +}); +const httpsAgent = new https.Agent({ + keepAlive: true +}); + +const options = { + agent: function (_parsedURL) { + if (_parsedURL.protocol == 'http:') { + return httpAgent; + } else { + return httpsAgent; + } + } +} +``` + + +### Class: Request + +An HTTP(S) request containing information about URL, method, headers, and the body. This class implements the [Body](#iface-body) interface. + +Due to the nature of Node.js, the following properties are not implemented at this moment: + +- `type` +- `destination` +- `referrer` +- `referrerPolicy` +- `mode` +- `credentials` +- `cache` +- `integrity` +- `keepalive` + +The following node-fetch extension properties are provided: + +- `follow` +- `compress` +- `counter` +- `agent` + +See [options](#fetch-options) for exact meaning of these extensions. + +#### new Request(input[, options]) + +*(spec-compliant)* + +- `input` A string representing a URL, or another `Request` (which will be cloned) +- `options` [Options][#fetch-options] for the HTTP(S) request + +Constructs a new `Request` object. The constructor is identical to that in the [browser](https://developer.mozilla.org/en-US/docs/Web/API/Request/Request). + +In most cases, directly `fetch(url, options)` is simpler than creating a `Request` object. + + +### Class: Response + +An HTTP(S) response. This class implements the [Body](#iface-body) interface. + +The following properties are not implemented in node-fetch at this moment: + +- `Response.error()` +- `Response.redirect()` +- `type` +- `trailer` + +#### new Response([body[, options]]) + +*(spec-compliant)* + +- `body` A `String` or [`Readable` stream][node-readable] +- `options` A [`ResponseInit`][response-init] options dictionary + +Constructs a new `Response` object. The constructor is identical to that in the [browser](https://developer.mozilla.org/en-US/docs/Web/API/Response/Response). + +Because Node.js does not implement service workers (for which this class was designed), one rarely has to construct a `Response` directly. + +#### response.ok + +*(spec-compliant)* + +Convenience property representing if the request ended normally. Will evaluate to true if the response status was greater than or equal to 200 but smaller than 300. + +#### response.redirected + +*(spec-compliant)* + +Convenience property representing if the request has been redirected at least once. Will evaluate to true if the internal redirect counter is greater than 0. + + +### Class: Headers + +This class allows manipulating and iterating over a set of HTTP headers. All methods specified in the [Fetch Standard][whatwg-fetch] are implemented. + +#### new Headers([init]) + +*(spec-compliant)* + +- `init` Optional argument to pre-fill the `Headers` object + +Construct a new `Headers` object. `init` can be either `null`, a `Headers` object, an key-value map object or any iterable object. + +```js +// Example adapted from https://fetch.spec.whatwg.org/#example-headers-class + +const meta = { + 'Content-Type': 'text/xml', + 'Breaking-Bad': '<3' +}; +const headers = new Headers(meta); + +// The above is equivalent to +const meta = [ + [ 'Content-Type', 'text/xml' ], + [ 'Breaking-Bad', '<3' ] +]; +const headers = new Headers(meta); + +// You can in fact use any iterable objects, like a Map or even another Headers +const meta = new Map(); +meta.set('Content-Type', 'text/xml'); +meta.set('Breaking-Bad', '<3'); +const headers = new Headers(meta); +const copyOfHeaders = new Headers(headers); +``` + + +### Interface: Body + +`Body` is an abstract interface with methods that are applicable to both `Request` and `Response` classes. + +The following methods are not yet implemented in node-fetch at this moment: + +- `formData()` + +#### body.body + +*(deviation from spec)* + +* Node.js [`Readable` stream][node-readable] + +Data are encapsulated in the `Body` object. Note that while the [Fetch Standard][whatwg-fetch] requires the property to always be a WHATWG `ReadableStream`, in node-fetch it is a Node.js [`Readable` stream][node-readable]. + +#### body.bodyUsed + +*(spec-compliant)* + +* `Boolean` + +A boolean property for if this body has been consumed. Per the specs, a consumed body cannot be used again. + +#### body.arrayBuffer() +#### body.blob() +#### body.json() +#### body.text() + +*(spec-compliant)* + +* Returns: Promise + +Consume the body and return a promise that will resolve to one of these formats. + +#### body.buffer() + +*(node-fetch extension)* + +* Returns: Promise<Buffer> + +Consume the body and return a promise that will resolve to a Buffer. + +#### body.textConverted() + +*(node-fetch extension)* + +* Returns: Promise<String> + +Identical to `body.text()`, except instead of always converting to UTF-8, encoding sniffing will be performed and text converted to UTF-8 if possible. + +(This API requires an optional dependency of the npm package [encoding](https://www.npmjs.com/package/encoding), which you need to install manually. `webpack` users may see [a warning message](https://github.com/bitinn/node-fetch/issues/412#issuecomment-379007792) due to this optional dependency.) + + +### Class: FetchError + +*(node-fetch extension)* + +An operational error in the fetching process. See [ERROR-HANDLING.md][] for more info. + + +### Class: AbortError + +*(node-fetch extension)* + +An Error thrown when the request is aborted in response to an `AbortSignal`'s `abort` event. It has a `name` property of `AbortError`. See [ERROR-HANDLING.MD][] for more info. + +## Acknowledgement + +Thanks to [github/fetch](https://github.com/github/fetch) for providing a solid implementation reference. + +`node-fetch` v1 was maintained by [@bitinn](https://github.com/bitinn); v2 was maintained by [@TimothyGu](https://github.com/timothygu), [@bitinn](https://github.com/bitinn) and [@jimmywarting](https://github.com/jimmywarting); v2 readme is written by [@jkantr](https://github.com/jkantr). + +## License + +MIT + +[npm-image]: https://flat.badgen.net/npm/v/node-fetch +[npm-url]: https://www.npmjs.com/package/node-fetch +[travis-image]: https://flat.badgen.net/travis/bitinn/node-fetch +[travis-url]: https://travis-ci.org/bitinn/node-fetch +[codecov-image]: https://flat.badgen.net/codecov/c/github/bitinn/node-fetch/master +[codecov-url]: https://codecov.io/gh/bitinn/node-fetch +[install-size-image]: https://flat.badgen.net/packagephobia/install/node-fetch +[install-size-url]: https://packagephobia.now.sh/result?p=node-fetch +[discord-image]: https://img.shields.io/discord/619915844268326952?color=%237289DA&label=Discord&style=flat-square +[discord-url]: https://discord.gg/Zxbndcm +[opencollective-image]: https://opencollective.com/node-fetch/backers.svg +[opencollective-url]: https://opencollective.com/node-fetch +[whatwg-fetch]: https://fetch.spec.whatwg.org/ +[response-init]: https://fetch.spec.whatwg.org/#responseinit +[node-readable]: https://nodejs.org/api/stream.html#stream_readable_streams +[mdn-headers]: https://developer.mozilla.org/en-US/docs/Web/API/Headers +[LIMITS.md]: https://github.com/bitinn/node-fetch/blob/master/LIMITS.md +[ERROR-HANDLING.md]: https://github.com/bitinn/node-fetch/blob/master/ERROR-HANDLING.md +[UPGRADE-GUIDE.md]: https://github.com/bitinn/node-fetch/blob/master/UPGRADE-GUIDE.md diff --git a/node_modules/node-fetch/browser.js b/node_modules/node-fetch/browser.js new file mode 100644 index 0000000..ee86265 --- /dev/null +++ b/node_modules/node-fetch/browser.js @@ -0,0 +1,25 @@ +"use strict"; + +// ref: https://github.com/tc39/proposal-global +var getGlobal = function () { + // the only reliable means to get the global object is + // `Function('return this')()` + // However, this causes CSP violations in Chrome apps. + if (typeof self !== 'undefined') { return self; } + if (typeof window !== 'undefined') { return window; } + if (typeof global !== 'undefined') { return global; } + throw new Error('unable to locate global object'); +} + +var globalObject = getGlobal(); + +module.exports = exports = globalObject.fetch; + +// Needed for TypeScript and Webpack. +if (globalObject.fetch) { + exports.default = globalObject.fetch.bind(globalObject); +} + +exports.Headers = globalObject.Headers; +exports.Request = globalObject.Request; +exports.Response = globalObject.Response; diff --git a/node_modules/node-fetch/lib/index.es.js b/node_modules/node-fetch/lib/index.es.js new file mode 100644 index 0000000..79d717b --- /dev/null +++ b/node_modules/node-fetch/lib/index.es.js @@ -0,0 +1,1778 @@ +process.emitWarning("The .es.js file is deprecated. Use .mjs instead."); + +import Stream from 'stream'; +import http from 'http'; +import Url from 'url'; +import whatwgUrl from 'whatwg-url'; +import https from 'https'; +import zlib from 'zlib'; + +// Based on https://github.com/tmpvar/jsdom/blob/aa85b2abf07766ff7bf5c1f6daafb3726f2f2db5/lib/jsdom/living/blob.js + +// fix for "Readable" isn't a named export issue +const Readable = Stream.Readable; + +const BUFFER = Symbol('buffer'); +const TYPE = Symbol('type'); + +class Blob { + 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); + } + } + + this[BUFFER] = Buffer.concat(buffers); + + let type = options && options.type !== undefined && String(options.type).toLowerCase(); + if (type && !/[^\u0020-\u007E]/.test(type)) { + this[TYPE] = type; + } + } + get size() { + return this[BUFFER].length; + } + get type() { + return this[TYPE]; + } + text() { + return Promise.resolve(this[BUFFER].toString()); + } + arrayBuffer() { + const buf = this[BUFFER]; + const ab = buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength); + return Promise.resolve(ab); + } + stream() { + const readable = new Readable(); + readable._read = function () {}; + readable.push(this[BUFFER]); + readable.push(null); + return readable; + } + toString() { + return '[object Blob]'; + } + slice() { + const size = this.size; + + const start = arguments[0]; + const end = arguments[1]; + let relativeStart, relativeEnd; + if (start === undefined) { + relativeStart = 0; + } else if (start < 0) { + relativeStart = Math.max(size + start, 0); + } else { + relativeStart = Math.min(start, size); + } + if (end === undefined) { + relativeEnd = size; + } else if (end < 0) { + relativeEnd = Math.max(size + end, 0); + } else { + relativeEnd = Math.min(end, size); + } + 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 +}); + +/** + * fetch-error.js + * + * FetchError interface for operational errors + */ + +/** + * Create FetchError instance + * + * @param String message Error message for human + * @param String type Error type for machine + * @param String systemError For Node.js system error + * @return FetchError + */ +function FetchError(message, type, systemError) { + Error.call(this, message); + + this.message = message; + this.type = type; + + // when err.type is `system`, err.code contains system error code + if (systemError) { + this.code = this.errno = systemError.code; + } + + // hide custom error implementation details from end-users + Error.captureStackTrace(this, this.constructor); +} + +FetchError.prototype = Object.create(Error.prototype); +FetchError.prototype.constructor = FetchError; +FetchError.prototype.name = 'FetchError'; + +let convert; +try { + convert = require('encoding').convert; +} catch (e) {} + +const INTERNALS = Symbol('Body internals'); + +// fix an issue where "PassThrough" isn't a named export for node <10 +const PassThrough = Stream.PassThrough; + +/** + * Body mixin + * + * Ref: https://fetch.spec.whatwg.org/#body + * + * @param Stream body Readable stream + * @param Object opts Response options + * @return Void + */ +function Body(body) { + var _this = this; + + var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}, + _ref$size = _ref.size; + + let size = _ref$size === undefined ? 0 : _ref$size; + var _ref$timeout = _ref.timeout; + let timeout = _ref$timeout === undefined ? 0 : _ref$timeout; + + if (body == null) { + // body is undefined or null + body = null; + } else if (isURLSearchParams(body)) { + // body is a URLSearchParams + body = Buffer.from(body.toString()); + } else if (isBlob(body)) ; else if (Buffer.isBuffer(body)) ; else if (Object.prototype.toString.call(body) === '[object ArrayBuffer]') { + // body is ArrayBuffer + body = Buffer.from(body); + } else if (ArrayBuffer.isView(body)) { + // body is ArrayBufferView + body = Buffer.from(body.buffer, body.byteOffset, body.byteLength); + } else if (body instanceof Stream) ; else { + // none of the above + // coerce to string then buffer + 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; + }); + } +} + +Body.prototype = { + get body() { + return this[INTERNALS].body; + }, + + get bodyUsed() { + return this[INTERNALS].disturbed; + }, + + /** + * Decode response as ArrayBuffer + * + * @return Promise + */ + arrayBuffer() { + return consumeBody.call(this).then(function (buf) { + return buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength); + }); + }, + + /** + * Return raw response as Blob + * + * @return Promise + */ + blob() { + let ct = this.headers && this.headers.get('content-type') || ''; + return consumeBody.call(this).then(function (buf) { + return Object.assign( + // Prevent copying + new Blob([], { + type: ct.toLowerCase() + }), { + [BUFFER]: buf + }); + }); + }, + + /** + * Decode response as json + * + * @return Promise + */ + 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')); + } + }); + }, + + /** + * Decode response as text + * + * @return Promise + */ + text() { + return consumeBody.call(this).then(function (buffer) { + return buffer.toString(); + }); + }, + + /** + * Decode response as buffer (non-spec api) + * + * @return Promise + */ + buffer() { + return consumeBody.call(this); + }, + + /** + * Decode response as text, while automatically detecting the encoding and + * trying to decode to UTF-8 (non-spec api) + * + * @return Promise + */ + textConverted() { + var _this3 = this; + + return consumeBody.call(this).then(function (buffer) { + return convertBody(buffer, _this3.headers); + }); + } +}; + +// In browsers, all properties are enumerable. +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)) { + // istanbul ignore else: future proof + if (!(name in proto)) { + const desc = Object.getOwnPropertyDescriptor(Body.prototype, name); + Object.defineProperty(proto, name, desc); + } + } +}; + +/** + * Consume and convert an entire Body to a Buffer. + * + * Ref: https://fetch.spec.whatwg.org/#concept-body-consume-body + * + * @return Promise + */ +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; + + // body is null + if (body === null) { + return Body.Promise.resolve(Buffer.alloc(0)); + } + + // body is blob + if (isBlob(body)) { + body = body.stream(); + } + + // body is buffer + if (Buffer.isBuffer(body)) { + return Body.Promise.resolve(body); + } + + // istanbul ignore if: should never happen + if (!(body instanceof Stream)) { + return Body.Promise.resolve(Buffer.alloc(0)); + } + + // body is stream + // get ready to actually consume the body + let accum = []; + let accumBytes = 0; + let abort = false; + + return new Body.Promise(function (resolve, reject) { + let resTimeout; + + // allow timeout on slow response body + 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); + } + + // handle stream errors + body.on('error', function (err) { + if (err.name === 'AbortError') { + // if the request was aborted, reject with this Error + abort = true; + reject(err); + } else { + // other errors, such as incorrect content-encoding + reject(new FetchError(`Invalid response body while trying to fetch ${_this4.url}: ${err.message}`, 'system', err)); + } + }); + + 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); + }); + + body.on('end', function () { + if (abort) { + return; + } + + clearTimeout(resTimeout); + + try { + resolve(Buffer.concat(accum, accumBytes)); + } catch (err) { + // handle streams that have accumulated too much data (issue #414) + reject(new FetchError(`Could not create Buffer from response body for ${_this4.url}: ${err.message}`, 'system', err)); + } + }); + }); +} + +/** + * Detect buffer encoding and convert to target encoding + * ref: http://www.w3.org/TR/2011/WD-html5-20110113/parsing.html#determining-the-character-encoding + * + * @param Buffer buffer Incoming buffer + * @param String encoding Target encoding + * @return String + */ +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; + + // header + if (ct) { + res = /charset=([^;]*)/i.exec(ct); + } + + // no charset in content type, peek at response body for at most 1024 bytes + str = buffer.slice(0, 1024).toString(); + + // html5 + if (!res && str) { + res = / 0 && arguments[0] !== undefined ? arguments[0] : undefined; + + 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); + } + } + + return; + } + + // We don't worry about converting prop to ByteString here as append() + // will handle it. + 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'); + } + + // sequence> + // Note: per spec we have to first exhaust the lists then process them + 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]); + } + } else { + // record + for (const key of Object.keys(init)) { + const value = init[key]; + this.append(key, value); + } + } + } else { + throw new TypeError('Provided initializer must be an object'); + } + } + + /** + * Return combined header value given name + * + * @param String name Header name + * @return Mixed + */ + get(name) { + name = `${name}`; + validateName(name); + const key = find(this[MAP], name); + if (key === undefined) { + return null; + } + + return this[MAP][key].join(', '); + } + + /** + * Iterate over all headers + * + * @param Function callback Executed for each item with parameters (value, name, thisArg) + * @param Boolean thisArg `this` context for callback function + * @return Void + */ + forEach(callback) { + let thisArg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : undefined; + + 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++; + } + } + + /** + * Overwrite header values given name + * + * @param String name Header name + * @param String value Header value + * @return Void + */ + set(name, value) { + name = `${name}`; + value = `${value}`; + validateName(name); + validateValue(value); + const key = find(this[MAP], name); + this[MAP][key !== undefined ? key : name] = [value]; + } + + /** + * Append a value onto existing header + * + * @param String name Header name + * @param String value Header value + * @return Void + */ + append(name, value) { + name = `${name}`; + value = `${value}`; + validateName(name); + validateValue(value); + const key = find(this[MAP], name); + if (key !== undefined) { + this[MAP][key].push(value); + } else { + this[MAP][name] = [value]; + } + } + + /** + * Check for header name existence + * + * @param String name Header name + * @return Boolean + */ + has(name) { + name = `${name}`; + validateName(name); + return find(this[MAP], name) !== undefined; + } + + /** + * Delete all header values given name + * + * @param String name Header name + * @return Void + */ + delete(name) { + name = `${name}`; + validateName(name); + const key = find(this[MAP], name); + if (key !== undefined) { + delete this[MAP][key]; + } + } + + /** + * Return raw headers (non-spec api) + * + * @return Object + */ + raw() { + return this[MAP]; + } + + /** + * Get an iterator on keys. + * + * @return Iterator + */ + keys() { + return createHeadersIterator(this, 'key'); + } + + /** + * Get an iterator on values. + * + * @return Iterator + */ + values() { + return createHeadersIterator(this, 'value'); + } + + /** + * Get an iterator on entries. + * + * This is the default iterator of the Headers object. + * + * @return Iterator + */ + [Symbol.iterator]() { + return createHeadersIterator(this, 'key+value'); + } +} +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] !== undefined ? 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(', ')]; + }); +} + +const INTERNAL = Symbol('internal'); + +function createHeadersIterator(target, kind) { + const iterator = Object.create(HeadersIteratorPrototype); + iterator[INTERNAL] = { + target, + kind, + index: 0 + }; + return iterator; +} + +const HeadersIteratorPrototype = Object.setPrototypeOf({ + next() { + // istanbul ignore if + 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: undefined, + done: true + }; + } + + this[INTERNAL].index = index + 1; + + return { + value: values[index], + done: false + }; + } +}, Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]()))); + +Object.defineProperty(HeadersIteratorPrototype, Symbol.toStringTag, { + value: 'HeadersIterator', + writable: false, + enumerable: false, + configurable: true +}); + +/** + * Export the Headers object in a form that Node.js can consume. + * + * @param Headers headers + * @return Object + */ +function exportNodeCompatibleHeaders(headers) { + const obj = Object.assign({ __proto__: null }, headers[MAP]); + + // http.request() only supports string as Host header. This hack makes + // specifying custom Host header possible. + const hostHeaderKey = find(headers[MAP], 'Host'); + if (hostHeaderKey !== undefined) { + obj[hostHeaderKey] = obj[hostHeaderKey][0]; + } + + return obj; +} + +/** + * Create a Headers object from an object of headers, ignoring those that do + * not conform to HTTP grammar productions. + * + * @param Object obj Object of headers + * @return Headers + */ +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; + } + if (headers[MAP][name] === undefined) { + headers[MAP][name] = [val]; + } else { + headers[MAP][name].push(val); + } + } + } else if (!invalidHeaderCharRegex.test(obj[name])) { + headers[MAP][name] = [obj[name]]; + } + } + return headers; +} + +const INTERNALS$1 = Symbol('Response internals'); + +// fix an issue where "STATUS_CODES" aren't a named export for node <10 +const STATUS_CODES = http.STATUS_CODES; + +/** + * Response class + * + * @param Stream body Readable stream + * @param Object opts Response options + * @return Void + */ +class Response { + constructor() { + let body = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null; + let opts = arguments.length > 1 && arguments[1] !== undefined ? 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; + } + + /** + * Convenience property representing if the request ended normally + */ + 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; + } + + /** + * Clone this response + * + * @return Response + */ + clone() { + return new Response(clone(this), { + url: this.url, + status: this.status, + statusText: this.statusText, + headers: this.headers, + ok: this.ok, + redirected: this.redirected + }); + } +} + +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 +}); + +const INTERNALS$2 = Symbol('Request internals'); +const URL = Url.URL || whatwgUrl.URL; + +// fix an issue where "format", "parse" aren't a named export for node <10 +const parse_url = Url.parse; +const format_url = Url.format; + +/** + * Wrapper around `new URL` to handle arbitrary URLs + * + * @param {string} urlStr + * @return {void} + */ +function parseURL(urlStr) { + /* + Check whether the URL is absolute or not + Scheme: https://tools.ietf.org/html/rfc3986#section-3.1 + Absolute URL: https://tools.ietf.org/html/rfc3986#section-4.3 + */ + if (/^[a-zA-Z][a-zA-Z\d+\-.]*:/.exec(urlStr)) { + urlStr = new URL(urlStr).toString(); + } + + // Fallback to old implementation for arbitrary URLs + return parse_url(urlStr); +} + +const streamDestructionSupported = 'destroy' in Stream.Readable.prototype; + +/** + * Check if a value is an instance of Request. + * + * @param Mixed input + * @return Boolean + */ +function isRequest(input) { + return typeof input === 'object' && typeof input[INTERNALS$2] === 'object'; +} + +function isAbortSignal(signal) { + const proto = signal && typeof signal === 'object' && Object.getPrototypeOf(signal); + return !!(proto && proto.constructor.name === 'AbortSignal'); +} + +/** + * Request class + * + * @param Mixed input Url or Request instance + * @param Object init Custom options + * @return Void + */ +class Request { + constructor(input) { + let init = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + + let parsedURL; + + // normalize input + if (!isRequest(input)) { + if (input && input.href) { + // in order to support Node.js' Url objects; though WHATWG's URL objects + // will fall into this branch also (since their `toString()` will return + // `href` property anyway) + parsedURL = parseURL(input.href); + } else { + // coerce input to a string before attempting to parse + 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); + } + } + + 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 + }; + + // node-fetch-only options + this.follow = init.follow !== undefined ? init.follow : input.follow !== undefined ? input.follow : 20; + this.compress = init.compress !== undefined ? init.compress : input.compress !== undefined ? 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 this request + * + * @return Request + */ + 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 } +}); + +/** + * Convert a Request to Node.js http request options. + * + * @param Request A Request instance + * @return Object The options object to be passed to http.request + */ +function getNodeRequestOptions(request) { + const parsedURL = request[INTERNALS$2].parsedURL; + const headers = new Headers(request[INTERNALS$2].headers); + + // fetch step 1.3 + if (!headers.has('Accept')) { + headers.set('Accept', '*/*'); + } + + // Basic fetch + 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'); + } + + // HTTP-network-or-cache fetch steps 2.4-2.7 + 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); + } + + // HTTP-network-or-cache fetch step 2.11 + if (!headers.has('User-Agent')) { + headers.set('User-Agent', 'node-fetch/1.0 (+https://github.com/bitinn/node-fetch)'); + } + + // HTTP-network-or-cache fetch step 2.15 + 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'); + } + + // HTTP-network fetch step 4.2 + // chunked encoding is handled by Node.js + + return Object.assign({}, parsedURL, { + method: request.method, + headers: exportNodeCompatibleHeaders(headers), + agent + }); +} + +/** + * abort-error.js + * + * AbortError interface for cancelled requests + */ + +/** + * Create AbortError instance + * + * @param String message Error message for human + * @return AbortError + */ +function AbortError(message) { + Error.call(this, message); + + this.type = 'aborted'; + this.message = message; + + // hide custom error implementation details from end-users + Error.captureStackTrace(this, this.constructor); +} + +AbortError.prototype = Object.create(Error.prototype); +AbortError.prototype.constructor = AbortError; +AbortError.prototype.name = 'AbortError'; + +const URL$1 = Url.URL || whatwgUrl.URL; + +// fix an issue where "PassThrough", "resolve" aren't a named export for node <10 +const PassThrough$1 = Stream.PassThrough; + +const isDomainOrSubdomain = function isDomainOrSubdomain(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); +}; + +/** + * isSameProtocol reports whether the two provided URLs use the same protocol. + * + * Both domains must already be in canonical form. + * @param {string|URL} original + * @param {string|URL} destination + */ +const isSameProtocol = function isSameProtocol(destination, original) { + const orig = new URL$1(original).protocol; + const dest = new URL$1(destination).protocol; + + return orig === dest; +}; + +/** + * Fetch function + * + * @param Mixed url Absolute url or Request instance + * @param Object opts Fetch options + * @return Promise + */ +function fetch(url, opts) { + + // allow custom promise + if (!fetch.Promise) { + throw new Error('native promise missing, set fetch.Promise to your favorite alternative'); + } + + Body.Promise = fetch.Promise; + + // wrap http.request into fetch + return new fetch.Promise(function (resolve, reject) { + // build request object + 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 abort() { + let error = new AbortError('The user aborted a request.'); + reject(error); + if (request.body && request.body instanceof Stream.Readable) { + destroyStream(request.body, error); + } + if (!response || !response.body) return; + response.body.emit('error', error); + }; + + if (signal && signal.aborted) { + abort(); + return; + } + + const abortAndFinalize = function abortAndFinalize() { + abort(); + finalize(); + }; + + // send request + 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)); + + if (response && response.body) { + destroyStream(response.body, err); + } + + finalize(); + }); + + fixResponseChunkedTransferBadEnding(req, function (err) { + if (signal && signal.aborted) { + return; + } + + if (response && response.body) { + destroyStream(response.body, err); + } + }); + + /* c8 ignore next 18 */ + if (parseInt(process.version.substring(1)) < 14) { + // Before Node.js 14, pipeline() does not fully support async iterators and does not always + // properly handle when the socket close/end events are out of order. + req.on('socket', function (s) { + s.addListener('close', function (hadError) { + // if a data listener is still present we didn't end cleanly + const hasDataListener = s.listenerCount('data') > 0; + + // if end happened before close but the socket didn't emit an error, do it now + if (response && hasDataListener && !hadError && !(signal && signal.aborted)) { + const err = new Error('Premature close'); + err.code = 'ERR_STREAM_PREMATURE_CLOSE'; + response.body.emit('error', err); + } + }); + }); + } + + req.on('response', function (res) { + clearTimeout(reqTimeout); + + const headers = createHeadersLenient(res.headers); + + // HTTP fetch step 5 + if (fetch.isRedirect(res.statusCode)) { + // HTTP fetch step 5.2 + const location = headers.get('Location'); + + // HTTP fetch step 5.3 + let locationURL = null; + try { + locationURL = location === null ? null : new URL$1(location, request.url).toString(); + } catch (err) { + // error here can only be invalid URL in Location: header + // do not throw when options.redirect == manual + // let the user extract the errorneous redirect URL + if (request.redirect !== 'manual') { + reject(new FetchError(`uri requested responds with an invalid redirect URL: ${location}`, 'invalid-redirect')); + finalize(); + return; + } + } + + // HTTP fetch step 5.5 + 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': + // node-fetch-specific step: make manual redirect a bit easier to use by setting the Location header value to the resolved URL. + if (locationURL !== null) { + // handle corrupted header + try { + headers.set('Location', locationURL); + } catch (err) { + // istanbul ignore next: nodejs server prevent invalid response headers, we can't test this through normal request + reject(err); + } + } + break; + case 'follow': + // HTTP-redirect fetch step 2 + if (locationURL === null) { + break; + } + + // HTTP-redirect fetch step 5 + if (request.counter >= request.follow) { + reject(new FetchError(`maximum redirect reached at: ${request.url}`, 'max-redirect')); + finalize(); + return; + } + + // HTTP-redirect fetch step 6 (counter increment) + // Create a new Request object. + 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) || !isSameProtocol(request.url, locationURL)) { + for (const name of ['authorization', 'www-authenticate', 'cookie', 'cookie2']) { + requestOpts.headers.delete(name); + } + } + + // HTTP-redirect fetch step 9 + 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; + } + + // HTTP-redirect fetch step 11 + if (res.statusCode === 303 || (res.statusCode === 301 || res.statusCode === 302) && request.method === 'POST') { + requestOpts.method = 'GET'; + requestOpts.body = undefined; + requestOpts.headers.delete('content-length'); + } + + // HTTP-redirect fetch step 15 + resolve(fetch(new Request(locationURL, requestOpts))); + finalize(); + return; + } + } + + // prepare response + 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: headers, + size: request.size, + timeout: request.timeout, + counter: request.counter + }; + + // HTTP-network fetch step 12.1.1.3 + const codings = headers.get('Content-Encoding'); + + // HTTP-network fetch step 12.1.1.4: handle content codings + + // in following scenarios we ignore compression support + // 1. compression support is disabled + // 2. HEAD request + // 3. no Content-Encoding header + // 4. no content response (204) + // 5. content not modified response (304) + if (!request.compress || request.method === 'HEAD' || codings === null || res.statusCode === 204 || res.statusCode === 304) { + response = new Response(body, response_options); + resolve(response); + return; + } + + // For Node v6+ + // 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. + const zlibOptions = { + flush: zlib.Z_SYNC_FLUSH, + finishFlush: zlib.Z_SYNC_FLUSH + }; + + // for gzip + if (codings == 'gzip' || codings == 'x-gzip') { + body = body.pipe(zlib.createGunzip(zlibOptions)); + response = new Response(body, response_options); + resolve(response); + return; + } + + // for deflate + if (codings == 'deflate' || codings == 'x-deflate') { + // handle the infamous raw deflate response from old servers + // a hack for old IIS and Apache servers + const raw = res.pipe(new PassThrough$1()); + raw.once('data', function (chunk) { + // see http://stackoverflow.com/questions/37519828 + if ((chunk[0] & 0x0F) === 0x08) { + body = body.pipe(zlib.createInflate()); + } else { + body = body.pipe(zlib.createInflateRaw()); + } + response = new Response(body, response_options); + resolve(response); + }); + raw.on('end', function () { + // some old IIS servers return zero-length OK deflate responses, so 'data' is never emitted. + if (!response) { + response = new Response(body, response_options); + resolve(response); + } + }); + return; + } + + // for br + if (codings == 'br' && typeof zlib.createBrotliDecompress === 'function') { + body = body.pipe(zlib.createBrotliDecompress()); + response = new Response(body, response_options); + resolve(response); + return; + } + + // otherwise, use response as-is + response = new Response(body, response_options); + resolve(response); + }); + + writeToStream(req, request); + }); +} +function fixResponseChunkedTransferBadEnding(request, errorCallback) { + let socket; + + request.on('socket', function (s) { + socket = s; + }); + + request.on('response', function (response) { + const headers = response.headers; + + if (headers['transfer-encoding'] === 'chunked' && !headers['content-length']) { + response.once('close', function (hadError) { + // if a data listener is still present we didn't end cleanly + const hasDataListener = socket.listenerCount('data') > 0; + + if (hasDataListener && !hadError) { + const err = new Error('Premature close'); + err.code = 'ERR_STREAM_PREMATURE_CLOSE'; + errorCallback(err); + } + }); + } + }); +} + +function destroyStream(stream, err) { + if (stream.destroy) { + stream.destroy(err); + } else { + // node < 8 + stream.emit('error', err); + stream.end(); + } +} + +/** + * Redirect code matching + * + * @param Number code Status code + * @return Boolean + */ +fetch.isRedirect = function (code) { + return code === 301 || code === 302 || code === 303 || code === 307 || code === 308; +}; + +// expose Promise +fetch.Promise = global.Promise; + +export default fetch; +export { Headers, Request, Response, FetchError }; diff --git a/node_modules/node-fetch/lib/index.js b/node_modules/node-fetch/lib/index.js new file mode 100644 index 0000000..337d6e5 --- /dev/null +++ b/node_modules/node-fetch/lib/index.js @@ -0,0 +1,1787 @@ +'use strict'; + +Object.defineProperty(exports, '__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('whatwg-url')); +var https = _interopDefault(require('https')); +var zlib = _interopDefault(require('zlib')); + +// Based on https://github.com/tmpvar/jsdom/blob/aa85b2abf07766ff7bf5c1f6daafb3726f2f2db5/lib/jsdom/living/blob.js + +// fix for "Readable" isn't a named export issue +const Readable = Stream.Readable; + +const BUFFER = Symbol('buffer'); +const TYPE = Symbol('type'); + +class Blob { + 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); + } + } + + this[BUFFER] = Buffer.concat(buffers); + + let type = options && options.type !== undefined && String(options.type).toLowerCase(); + if (type && !/[^\u0020-\u007E]/.test(type)) { + this[TYPE] = type; + } + } + get size() { + return this[BUFFER].length; + } + get type() { + return this[TYPE]; + } + text() { + return Promise.resolve(this[BUFFER].toString()); + } + arrayBuffer() { + const buf = this[BUFFER]; + const ab = buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength); + return Promise.resolve(ab); + } + stream() { + const readable = new Readable(); + readable._read = function () {}; + readable.push(this[BUFFER]); + readable.push(null); + return readable; + } + toString() { + return '[object Blob]'; + } + slice() { + const size = this.size; + + const start = arguments[0]; + const end = arguments[1]; + let relativeStart, relativeEnd; + if (start === undefined) { + relativeStart = 0; + } else if (start < 0) { + relativeStart = Math.max(size + start, 0); + } else { + relativeStart = Math.min(start, size); + } + if (end === undefined) { + relativeEnd = size; + } else if (end < 0) { + relativeEnd = Math.max(size + end, 0); + } else { + relativeEnd = Math.min(end, size); + } + 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 +}); + +/** + * fetch-error.js + * + * FetchError interface for operational errors + */ + +/** + * Create FetchError instance + * + * @param String message Error message for human + * @param String type Error type for machine + * @param String systemError For Node.js system error + * @return FetchError + */ +function FetchError(message, type, systemError) { + Error.call(this, message); + + this.message = message; + this.type = type; + + // when err.type is `system`, err.code contains system error code + if (systemError) { + this.code = this.errno = systemError.code; + } + + // hide custom error implementation details from end-users + Error.captureStackTrace(this, this.constructor); +} + +FetchError.prototype = Object.create(Error.prototype); +FetchError.prototype.constructor = FetchError; +FetchError.prototype.name = 'FetchError'; + +let convert; +try { + convert = require('encoding').convert; +} catch (e) {} + +const INTERNALS = Symbol('Body internals'); + +// fix an issue where "PassThrough" isn't a named export for node <10 +const PassThrough = Stream.PassThrough; + +/** + * Body mixin + * + * Ref: https://fetch.spec.whatwg.org/#body + * + * @param Stream body Readable stream + * @param Object opts Response options + * @return Void + */ +function Body(body) { + var _this = this; + + var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}, + _ref$size = _ref.size; + + let size = _ref$size === undefined ? 0 : _ref$size; + var _ref$timeout = _ref.timeout; + let timeout = _ref$timeout === undefined ? 0 : _ref$timeout; + + if (body == null) { + // body is undefined or null + body = null; + } else if (isURLSearchParams(body)) { + // body is a URLSearchParams + body = Buffer.from(body.toString()); + } else if (isBlob(body)) ; else if (Buffer.isBuffer(body)) ; else if (Object.prototype.toString.call(body) === '[object ArrayBuffer]') { + // body is ArrayBuffer + body = Buffer.from(body); + } else if (ArrayBuffer.isView(body)) { + // body is ArrayBufferView + body = Buffer.from(body.buffer, body.byteOffset, body.byteLength); + } else if (body instanceof Stream) ; else { + // none of the above + // coerce to string then buffer + 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; + }); + } +} + +Body.prototype = { + get body() { + return this[INTERNALS].body; + }, + + get bodyUsed() { + return this[INTERNALS].disturbed; + }, + + /** + * Decode response as ArrayBuffer + * + * @return Promise + */ + arrayBuffer() { + return consumeBody.call(this).then(function (buf) { + return buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength); + }); + }, + + /** + * Return raw response as Blob + * + * @return Promise + */ + blob() { + let ct = this.headers && this.headers.get('content-type') || ''; + return consumeBody.call(this).then(function (buf) { + return Object.assign( + // Prevent copying + new Blob([], { + type: ct.toLowerCase() + }), { + [BUFFER]: buf + }); + }); + }, + + /** + * Decode response as json + * + * @return Promise + */ + 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')); + } + }); + }, + + /** + * Decode response as text + * + * @return Promise + */ + text() { + return consumeBody.call(this).then(function (buffer) { + return buffer.toString(); + }); + }, + + /** + * Decode response as buffer (non-spec api) + * + * @return Promise + */ + buffer() { + return consumeBody.call(this); + }, + + /** + * Decode response as text, while automatically detecting the encoding and + * trying to decode to UTF-8 (non-spec api) + * + * @return Promise + */ + textConverted() { + var _this3 = this; + + return consumeBody.call(this).then(function (buffer) { + return convertBody(buffer, _this3.headers); + }); + } +}; + +// In browsers, all properties are enumerable. +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)) { + // istanbul ignore else: future proof + if (!(name in proto)) { + const desc = Object.getOwnPropertyDescriptor(Body.prototype, name); + Object.defineProperty(proto, name, desc); + } + } +}; + +/** + * Consume and convert an entire Body to a Buffer. + * + * Ref: https://fetch.spec.whatwg.org/#concept-body-consume-body + * + * @return Promise + */ +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; + + // body is null + if (body === null) { + return Body.Promise.resolve(Buffer.alloc(0)); + } + + // body is blob + if (isBlob(body)) { + body = body.stream(); + } + + // body is buffer + if (Buffer.isBuffer(body)) { + return Body.Promise.resolve(body); + } + + // istanbul ignore if: should never happen + if (!(body instanceof Stream)) { + return Body.Promise.resolve(Buffer.alloc(0)); + } + + // body is stream + // get ready to actually consume the body + let accum = []; + let accumBytes = 0; + let abort = false; + + return new Body.Promise(function (resolve, reject) { + let resTimeout; + + // allow timeout on slow response body + 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); + } + + // handle stream errors + body.on('error', function (err) { + if (err.name === 'AbortError') { + // if the request was aborted, reject with this Error + abort = true; + reject(err); + } else { + // other errors, such as incorrect content-encoding + reject(new FetchError(`Invalid response body while trying to fetch ${_this4.url}: ${err.message}`, 'system', err)); + } + }); + + 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); + }); + + body.on('end', function () { + if (abort) { + return; + } + + clearTimeout(resTimeout); + + try { + resolve(Buffer.concat(accum, accumBytes)); + } catch (err) { + // handle streams that have accumulated too much data (issue #414) + reject(new FetchError(`Could not create Buffer from response body for ${_this4.url}: ${err.message}`, 'system', err)); + } + }); + }); +} + +/** + * Detect buffer encoding and convert to target encoding + * ref: http://www.w3.org/TR/2011/WD-html5-20110113/parsing.html#determining-the-character-encoding + * + * @param Buffer buffer Incoming buffer + * @param String encoding Target encoding + * @return String + */ +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; + + // header + if (ct) { + res = /charset=([^;]*)/i.exec(ct); + } + + // no charset in content type, peek at response body for at most 1024 bytes + str = buffer.slice(0, 1024).toString(); + + // html5 + if (!res && str) { + res = / 0 && arguments[0] !== undefined ? arguments[0] : undefined; + + 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); + } + } + + return; + } + + // We don't worry about converting prop to ByteString here as append() + // will handle it. + 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'); + } + + // sequence> + // Note: per spec we have to first exhaust the lists then process them + 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]); + } + } else { + // record + for (const key of Object.keys(init)) { + const value = init[key]; + this.append(key, value); + } + } + } else { + throw new TypeError('Provided initializer must be an object'); + } + } + + /** + * Return combined header value given name + * + * @param String name Header name + * @return Mixed + */ + get(name) { + name = `${name}`; + validateName(name); + const key = find(this[MAP], name); + if (key === undefined) { + return null; + } + + return this[MAP][key].join(', '); + } + + /** + * Iterate over all headers + * + * @param Function callback Executed for each item with parameters (value, name, thisArg) + * @param Boolean thisArg `this` context for callback function + * @return Void + */ + forEach(callback) { + let thisArg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : undefined; + + 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++; + } + } + + /** + * Overwrite header values given name + * + * @param String name Header name + * @param String value Header value + * @return Void + */ + set(name, value) { + name = `${name}`; + value = `${value}`; + validateName(name); + validateValue(value); + const key = find(this[MAP], name); + this[MAP][key !== undefined ? key : name] = [value]; + } + + /** + * Append a value onto existing header + * + * @param String name Header name + * @param String value Header value + * @return Void + */ + append(name, value) { + name = `${name}`; + value = `${value}`; + validateName(name); + validateValue(value); + const key = find(this[MAP], name); + if (key !== undefined) { + this[MAP][key].push(value); + } else { + this[MAP][name] = [value]; + } + } + + /** + * Check for header name existence + * + * @param String name Header name + * @return Boolean + */ + has(name) { + name = `${name}`; + validateName(name); + return find(this[MAP], name) !== undefined; + } + + /** + * Delete all header values given name + * + * @param String name Header name + * @return Void + */ + delete(name) { + name = `${name}`; + validateName(name); + const key = find(this[MAP], name); + if (key !== undefined) { + delete this[MAP][key]; + } + } + + /** + * Return raw headers (non-spec api) + * + * @return Object + */ + raw() { + return this[MAP]; + } + + /** + * Get an iterator on keys. + * + * @return Iterator + */ + keys() { + return createHeadersIterator(this, 'key'); + } + + /** + * Get an iterator on values. + * + * @return Iterator + */ + values() { + return createHeadersIterator(this, 'value'); + } + + /** + * Get an iterator on entries. + * + * This is the default iterator of the Headers object. + * + * @return Iterator + */ + [Symbol.iterator]() { + return createHeadersIterator(this, 'key+value'); + } +} +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] !== undefined ? 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(', ')]; + }); +} + +const INTERNAL = Symbol('internal'); + +function createHeadersIterator(target, kind) { + const iterator = Object.create(HeadersIteratorPrototype); + iterator[INTERNAL] = { + target, + kind, + index: 0 + }; + return iterator; +} + +const HeadersIteratorPrototype = Object.setPrototypeOf({ + next() { + // istanbul ignore if + 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: undefined, + done: true + }; + } + + this[INTERNAL].index = index + 1; + + return { + value: values[index], + done: false + }; + } +}, Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]()))); + +Object.defineProperty(HeadersIteratorPrototype, Symbol.toStringTag, { + value: 'HeadersIterator', + writable: false, + enumerable: false, + configurable: true +}); + +/** + * Export the Headers object in a form that Node.js can consume. + * + * @param Headers headers + * @return Object + */ +function exportNodeCompatibleHeaders(headers) { + const obj = Object.assign({ __proto__: null }, headers[MAP]); + + // http.request() only supports string as Host header. This hack makes + // specifying custom Host header possible. + const hostHeaderKey = find(headers[MAP], 'Host'); + if (hostHeaderKey !== undefined) { + obj[hostHeaderKey] = obj[hostHeaderKey][0]; + } + + return obj; +} + +/** + * Create a Headers object from an object of headers, ignoring those that do + * not conform to HTTP grammar productions. + * + * @param Object obj Object of headers + * @return Headers + */ +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; + } + if (headers[MAP][name] === undefined) { + headers[MAP][name] = [val]; + } else { + headers[MAP][name].push(val); + } + } + } else if (!invalidHeaderCharRegex.test(obj[name])) { + headers[MAP][name] = [obj[name]]; + } + } + return headers; +} + +const INTERNALS$1 = Symbol('Response internals'); + +// fix an issue where "STATUS_CODES" aren't a named export for node <10 +const STATUS_CODES = http.STATUS_CODES; + +/** + * Response class + * + * @param Stream body Readable stream + * @param Object opts Response options + * @return Void + */ +class Response { + constructor() { + let body = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null; + let opts = arguments.length > 1 && arguments[1] !== undefined ? 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; + } + + /** + * Convenience property representing if the request ended normally + */ + 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; + } + + /** + * Clone this response + * + * @return Response + */ + clone() { + return new Response(clone(this), { + url: this.url, + status: this.status, + statusText: this.statusText, + headers: this.headers, + ok: this.ok, + redirected: this.redirected + }); + } +} + +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 +}); + +const INTERNALS$2 = Symbol('Request internals'); +const URL = Url.URL || whatwgUrl.URL; + +// fix an issue where "format", "parse" aren't a named export for node <10 +const parse_url = Url.parse; +const format_url = Url.format; + +/** + * Wrapper around `new URL` to handle arbitrary URLs + * + * @param {string} urlStr + * @return {void} + */ +function parseURL(urlStr) { + /* + Check whether the URL is absolute or not + Scheme: https://tools.ietf.org/html/rfc3986#section-3.1 + Absolute URL: https://tools.ietf.org/html/rfc3986#section-4.3 + */ + if (/^[a-zA-Z][a-zA-Z\d+\-.]*:/.exec(urlStr)) { + urlStr = new URL(urlStr).toString(); + } + + // Fallback to old implementation for arbitrary URLs + return parse_url(urlStr); +} + +const streamDestructionSupported = 'destroy' in Stream.Readable.prototype; + +/** + * Check if a value is an instance of Request. + * + * @param Mixed input + * @return Boolean + */ +function isRequest(input) { + return typeof input === 'object' && typeof input[INTERNALS$2] === 'object'; +} + +function isAbortSignal(signal) { + const proto = signal && typeof signal === 'object' && Object.getPrototypeOf(signal); + return !!(proto && proto.constructor.name === 'AbortSignal'); +} + +/** + * Request class + * + * @param Mixed input Url or Request instance + * @param Object init Custom options + * @return Void + */ +class Request { + constructor(input) { + let init = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + + let parsedURL; + + // normalize input + if (!isRequest(input)) { + if (input && input.href) { + // in order to support Node.js' Url objects; though WHATWG's URL objects + // will fall into this branch also (since their `toString()` will return + // `href` property anyway) + parsedURL = parseURL(input.href); + } else { + // coerce input to a string before attempting to parse + 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); + } + } + + 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 + }; + + // node-fetch-only options + this.follow = init.follow !== undefined ? init.follow : input.follow !== undefined ? input.follow : 20; + this.compress = init.compress !== undefined ? init.compress : input.compress !== undefined ? 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 this request + * + * @return Request + */ + 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 } +}); + +/** + * Convert a Request to Node.js http request options. + * + * @param Request A Request instance + * @return Object The options object to be passed to http.request + */ +function getNodeRequestOptions(request) { + const parsedURL = request[INTERNALS$2].parsedURL; + const headers = new Headers(request[INTERNALS$2].headers); + + // fetch step 1.3 + if (!headers.has('Accept')) { + headers.set('Accept', '*/*'); + } + + // Basic fetch + 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'); + } + + // HTTP-network-or-cache fetch steps 2.4-2.7 + 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); + } + + // HTTP-network-or-cache fetch step 2.11 + if (!headers.has('User-Agent')) { + headers.set('User-Agent', 'node-fetch/1.0 (+https://github.com/bitinn/node-fetch)'); + } + + // HTTP-network-or-cache fetch step 2.15 + 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'); + } + + // HTTP-network fetch step 4.2 + // chunked encoding is handled by Node.js + + return Object.assign({}, parsedURL, { + method: request.method, + headers: exportNodeCompatibleHeaders(headers), + agent + }); +} + +/** + * abort-error.js + * + * AbortError interface for cancelled requests + */ + +/** + * Create AbortError instance + * + * @param String message Error message for human + * @return AbortError + */ +function AbortError(message) { + Error.call(this, message); + + this.type = 'aborted'; + this.message = message; + + // hide custom error implementation details from end-users + Error.captureStackTrace(this, this.constructor); +} + +AbortError.prototype = Object.create(Error.prototype); +AbortError.prototype.constructor = AbortError; +AbortError.prototype.name = 'AbortError'; + +const URL$1 = Url.URL || whatwgUrl.URL; + +// fix an issue where "PassThrough", "resolve" aren't a named export for node <10 +const PassThrough$1 = Stream.PassThrough; + +const isDomainOrSubdomain = function isDomainOrSubdomain(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); +}; + +/** + * isSameProtocol reports whether the two provided URLs use the same protocol. + * + * Both domains must already be in canonical form. + * @param {string|URL} original + * @param {string|URL} destination + */ +const isSameProtocol = function isSameProtocol(destination, original) { + const orig = new URL$1(original).protocol; + const dest = new URL$1(destination).protocol; + + return orig === dest; +}; + +/** + * Fetch function + * + * @param Mixed url Absolute url or Request instance + * @param Object opts Fetch options + * @return Promise + */ +function fetch(url, opts) { + + // allow custom promise + if (!fetch.Promise) { + throw new Error('native promise missing, set fetch.Promise to your favorite alternative'); + } + + Body.Promise = fetch.Promise; + + // wrap http.request into fetch + return new fetch.Promise(function (resolve, reject) { + // build request object + 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 abort() { + let error = new AbortError('The user aborted a request.'); + reject(error); + if (request.body && request.body instanceof Stream.Readable) { + destroyStream(request.body, error); + } + if (!response || !response.body) return; + response.body.emit('error', error); + }; + + if (signal && signal.aborted) { + abort(); + return; + } + + const abortAndFinalize = function abortAndFinalize() { + abort(); + finalize(); + }; + + // send request + 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)); + + if (response && response.body) { + destroyStream(response.body, err); + } + + finalize(); + }); + + fixResponseChunkedTransferBadEnding(req, function (err) { + if (signal && signal.aborted) { + return; + } + + if (response && response.body) { + destroyStream(response.body, err); + } + }); + + /* c8 ignore next 18 */ + if (parseInt(process.version.substring(1)) < 14) { + // Before Node.js 14, pipeline() does not fully support async iterators and does not always + // properly handle when the socket close/end events are out of order. + req.on('socket', function (s) { + s.addListener('close', function (hadError) { + // if a data listener is still present we didn't end cleanly + const hasDataListener = s.listenerCount('data') > 0; + + // if end happened before close but the socket didn't emit an error, do it now + if (response && hasDataListener && !hadError && !(signal && signal.aborted)) { + const err = new Error('Premature close'); + err.code = 'ERR_STREAM_PREMATURE_CLOSE'; + response.body.emit('error', err); + } + }); + }); + } + + req.on('response', function (res) { + clearTimeout(reqTimeout); + + const headers = createHeadersLenient(res.headers); + + // HTTP fetch step 5 + if (fetch.isRedirect(res.statusCode)) { + // HTTP fetch step 5.2 + const location = headers.get('Location'); + + // HTTP fetch step 5.3 + let locationURL = null; + try { + locationURL = location === null ? null : new URL$1(location, request.url).toString(); + } catch (err) { + // error here can only be invalid URL in Location: header + // do not throw when options.redirect == manual + // let the user extract the errorneous redirect URL + if (request.redirect !== 'manual') { + reject(new FetchError(`uri requested responds with an invalid redirect URL: ${location}`, 'invalid-redirect')); + finalize(); + return; + } + } + + // HTTP fetch step 5.5 + 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': + // node-fetch-specific step: make manual redirect a bit easier to use by setting the Location header value to the resolved URL. + if (locationURL !== null) { + // handle corrupted header + try { + headers.set('Location', locationURL); + } catch (err) { + // istanbul ignore next: nodejs server prevent invalid response headers, we can't test this through normal request + reject(err); + } + } + break; + case 'follow': + // HTTP-redirect fetch step 2 + if (locationURL === null) { + break; + } + + // HTTP-redirect fetch step 5 + if (request.counter >= request.follow) { + reject(new FetchError(`maximum redirect reached at: ${request.url}`, 'max-redirect')); + finalize(); + return; + } + + // HTTP-redirect fetch step 6 (counter increment) + // Create a new Request object. + 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) || !isSameProtocol(request.url, locationURL)) { + for (const name of ['authorization', 'www-authenticate', 'cookie', 'cookie2']) { + requestOpts.headers.delete(name); + } + } + + // HTTP-redirect fetch step 9 + 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; + } + + // HTTP-redirect fetch step 11 + if (res.statusCode === 303 || (res.statusCode === 301 || res.statusCode === 302) && request.method === 'POST') { + requestOpts.method = 'GET'; + requestOpts.body = undefined; + requestOpts.headers.delete('content-length'); + } + + // HTTP-redirect fetch step 15 + resolve(fetch(new Request(locationURL, requestOpts))); + finalize(); + return; + } + } + + // prepare response + 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: headers, + size: request.size, + timeout: request.timeout, + counter: request.counter + }; + + // HTTP-network fetch step 12.1.1.3 + const codings = headers.get('Content-Encoding'); + + // HTTP-network fetch step 12.1.1.4: handle content codings + + // in following scenarios we ignore compression support + // 1. compression support is disabled + // 2. HEAD request + // 3. no Content-Encoding header + // 4. no content response (204) + // 5. content not modified response (304) + if (!request.compress || request.method === 'HEAD' || codings === null || res.statusCode === 204 || res.statusCode === 304) { + response = new Response(body, response_options); + resolve(response); + return; + } + + // For Node v6+ + // 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. + const zlibOptions = { + flush: zlib.Z_SYNC_FLUSH, + finishFlush: zlib.Z_SYNC_FLUSH + }; + + // for gzip + if (codings == 'gzip' || codings == 'x-gzip') { + body = body.pipe(zlib.createGunzip(zlibOptions)); + response = new Response(body, response_options); + resolve(response); + return; + } + + // for deflate + if (codings == 'deflate' || codings == 'x-deflate') { + // handle the infamous raw deflate response from old servers + // a hack for old IIS and Apache servers + const raw = res.pipe(new PassThrough$1()); + raw.once('data', function (chunk) { + // see http://stackoverflow.com/questions/37519828 + if ((chunk[0] & 0x0F) === 0x08) { + body = body.pipe(zlib.createInflate()); + } else { + body = body.pipe(zlib.createInflateRaw()); + } + response = new Response(body, response_options); + resolve(response); + }); + raw.on('end', function () { + // some old IIS servers return zero-length OK deflate responses, so 'data' is never emitted. + if (!response) { + response = new Response(body, response_options); + resolve(response); + } + }); + return; + } + + // for br + if (codings == 'br' && typeof zlib.createBrotliDecompress === 'function') { + body = body.pipe(zlib.createBrotliDecompress()); + response = new Response(body, response_options); + resolve(response); + return; + } + + // otherwise, use response as-is + response = new Response(body, response_options); + resolve(response); + }); + + writeToStream(req, request); + }); +} +function fixResponseChunkedTransferBadEnding(request, errorCallback) { + let socket; + + request.on('socket', function (s) { + socket = s; + }); + + request.on('response', function (response) { + const headers = response.headers; + + if (headers['transfer-encoding'] === 'chunked' && !headers['content-length']) { + response.once('close', function (hadError) { + // if a data listener is still present we didn't end cleanly + const hasDataListener = socket.listenerCount('data') > 0; + + if (hasDataListener && !hadError) { + const err = new Error('Premature close'); + err.code = 'ERR_STREAM_PREMATURE_CLOSE'; + errorCallback(err); + } + }); + } + }); +} + +function destroyStream(stream, err) { + if (stream.destroy) { + stream.destroy(err); + } else { + // node < 8 + stream.emit('error', err); + stream.end(); + } +} + +/** + * Redirect code matching + * + * @param Number code Status code + * @return Boolean + */ +fetch.isRedirect = function (code) { + return code === 301 || code === 302 || code === 303 || code === 307 || code === 308; +}; + +// expose Promise +fetch.Promise = global.Promise; + +module.exports = exports = fetch; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.default = exports; +exports.Headers = Headers; +exports.Request = Request; +exports.Response = Response; +exports.FetchError = FetchError; diff --git a/node_modules/node-fetch/lib/index.mjs b/node_modules/node-fetch/lib/index.mjs new file mode 100644 index 0000000..ace669f --- /dev/null +++ b/node_modules/node-fetch/lib/index.mjs @@ -0,0 +1,1776 @@ +import Stream from 'stream'; +import http from 'http'; +import Url from 'url'; +import whatwgUrl from 'whatwg-url'; +import https from 'https'; +import zlib from 'zlib'; + +// Based on https://github.com/tmpvar/jsdom/blob/aa85b2abf07766ff7bf5c1f6daafb3726f2f2db5/lib/jsdom/living/blob.js + +// fix for "Readable" isn't a named export issue +const Readable = Stream.Readable; + +const BUFFER = Symbol('buffer'); +const TYPE = Symbol('type'); + +class Blob { + 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); + } + } + + this[BUFFER] = Buffer.concat(buffers); + + let type = options && options.type !== undefined && String(options.type).toLowerCase(); + if (type && !/[^\u0020-\u007E]/.test(type)) { + this[TYPE] = type; + } + } + get size() { + return this[BUFFER].length; + } + get type() { + return this[TYPE]; + } + text() { + return Promise.resolve(this[BUFFER].toString()); + } + arrayBuffer() { + const buf = this[BUFFER]; + const ab = buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength); + return Promise.resolve(ab); + } + stream() { + const readable = new Readable(); + readable._read = function () {}; + readable.push(this[BUFFER]); + readable.push(null); + return readable; + } + toString() { + return '[object Blob]'; + } + slice() { + const size = this.size; + + const start = arguments[0]; + const end = arguments[1]; + let relativeStart, relativeEnd; + if (start === undefined) { + relativeStart = 0; + } else if (start < 0) { + relativeStart = Math.max(size + start, 0); + } else { + relativeStart = Math.min(start, size); + } + if (end === undefined) { + relativeEnd = size; + } else if (end < 0) { + relativeEnd = Math.max(size + end, 0); + } else { + relativeEnd = Math.min(end, size); + } + 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 +}); + +/** + * fetch-error.js + * + * FetchError interface for operational errors + */ + +/** + * Create FetchError instance + * + * @param String message Error message for human + * @param String type Error type for machine + * @param String systemError For Node.js system error + * @return FetchError + */ +function FetchError(message, type, systemError) { + Error.call(this, message); + + this.message = message; + this.type = type; + + // when err.type is `system`, err.code contains system error code + if (systemError) { + this.code = this.errno = systemError.code; + } + + // hide custom error implementation details from end-users + Error.captureStackTrace(this, this.constructor); +} + +FetchError.prototype = Object.create(Error.prototype); +FetchError.prototype.constructor = FetchError; +FetchError.prototype.name = 'FetchError'; + +let convert; +try { + convert = require('encoding').convert; +} catch (e) {} + +const INTERNALS = Symbol('Body internals'); + +// fix an issue where "PassThrough" isn't a named export for node <10 +const PassThrough = Stream.PassThrough; + +/** + * Body mixin + * + * Ref: https://fetch.spec.whatwg.org/#body + * + * @param Stream body Readable stream + * @param Object opts Response options + * @return Void + */ +function Body(body) { + var _this = this; + + var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}, + _ref$size = _ref.size; + + let size = _ref$size === undefined ? 0 : _ref$size; + var _ref$timeout = _ref.timeout; + let timeout = _ref$timeout === undefined ? 0 : _ref$timeout; + + if (body == null) { + // body is undefined or null + body = null; + } else if (isURLSearchParams(body)) { + // body is a URLSearchParams + body = Buffer.from(body.toString()); + } else if (isBlob(body)) ; else if (Buffer.isBuffer(body)) ; else if (Object.prototype.toString.call(body) === '[object ArrayBuffer]') { + // body is ArrayBuffer + body = Buffer.from(body); + } else if (ArrayBuffer.isView(body)) { + // body is ArrayBufferView + body = Buffer.from(body.buffer, body.byteOffset, body.byteLength); + } else if (body instanceof Stream) ; else { + // none of the above + // coerce to string then buffer + 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; + }); + } +} + +Body.prototype = { + get body() { + return this[INTERNALS].body; + }, + + get bodyUsed() { + return this[INTERNALS].disturbed; + }, + + /** + * Decode response as ArrayBuffer + * + * @return Promise + */ + arrayBuffer() { + return consumeBody.call(this).then(function (buf) { + return buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength); + }); + }, + + /** + * Return raw response as Blob + * + * @return Promise + */ + blob() { + let ct = this.headers && this.headers.get('content-type') || ''; + return consumeBody.call(this).then(function (buf) { + return Object.assign( + // Prevent copying + new Blob([], { + type: ct.toLowerCase() + }), { + [BUFFER]: buf + }); + }); + }, + + /** + * Decode response as json + * + * @return Promise + */ + 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')); + } + }); + }, + + /** + * Decode response as text + * + * @return Promise + */ + text() { + return consumeBody.call(this).then(function (buffer) { + return buffer.toString(); + }); + }, + + /** + * Decode response as buffer (non-spec api) + * + * @return Promise + */ + buffer() { + return consumeBody.call(this); + }, + + /** + * Decode response as text, while automatically detecting the encoding and + * trying to decode to UTF-8 (non-spec api) + * + * @return Promise + */ + textConverted() { + var _this3 = this; + + return consumeBody.call(this).then(function (buffer) { + return convertBody(buffer, _this3.headers); + }); + } +}; + +// In browsers, all properties are enumerable. +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)) { + // istanbul ignore else: future proof + if (!(name in proto)) { + const desc = Object.getOwnPropertyDescriptor(Body.prototype, name); + Object.defineProperty(proto, name, desc); + } + } +}; + +/** + * Consume and convert an entire Body to a Buffer. + * + * Ref: https://fetch.spec.whatwg.org/#concept-body-consume-body + * + * @return Promise + */ +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; + + // body is null + if (body === null) { + return Body.Promise.resolve(Buffer.alloc(0)); + } + + // body is blob + if (isBlob(body)) { + body = body.stream(); + } + + // body is buffer + if (Buffer.isBuffer(body)) { + return Body.Promise.resolve(body); + } + + // istanbul ignore if: should never happen + if (!(body instanceof Stream)) { + return Body.Promise.resolve(Buffer.alloc(0)); + } + + // body is stream + // get ready to actually consume the body + let accum = []; + let accumBytes = 0; + let abort = false; + + return new Body.Promise(function (resolve, reject) { + let resTimeout; + + // allow timeout on slow response body + 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); + } + + // handle stream errors + body.on('error', function (err) { + if (err.name === 'AbortError') { + // if the request was aborted, reject with this Error + abort = true; + reject(err); + } else { + // other errors, such as incorrect content-encoding + reject(new FetchError(`Invalid response body while trying to fetch ${_this4.url}: ${err.message}`, 'system', err)); + } + }); + + 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); + }); + + body.on('end', function () { + if (abort) { + return; + } + + clearTimeout(resTimeout); + + try { + resolve(Buffer.concat(accum, accumBytes)); + } catch (err) { + // handle streams that have accumulated too much data (issue #414) + reject(new FetchError(`Could not create Buffer from response body for ${_this4.url}: ${err.message}`, 'system', err)); + } + }); + }); +} + +/** + * Detect buffer encoding and convert to target encoding + * ref: http://www.w3.org/TR/2011/WD-html5-20110113/parsing.html#determining-the-character-encoding + * + * @param Buffer buffer Incoming buffer + * @param String encoding Target encoding + * @return String + */ +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; + + // header + if (ct) { + res = /charset=([^;]*)/i.exec(ct); + } + + // no charset in content type, peek at response body for at most 1024 bytes + str = buffer.slice(0, 1024).toString(); + + // html5 + if (!res && str) { + res = / 0 && arguments[0] !== undefined ? arguments[0] : undefined; + + 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); + } + } + + return; + } + + // We don't worry about converting prop to ByteString here as append() + // will handle it. + 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'); + } + + // sequence> + // Note: per spec we have to first exhaust the lists then process them + 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]); + } + } else { + // record + for (const key of Object.keys(init)) { + const value = init[key]; + this.append(key, value); + } + } + } else { + throw new TypeError('Provided initializer must be an object'); + } + } + + /** + * Return combined header value given name + * + * @param String name Header name + * @return Mixed + */ + get(name) { + name = `${name}`; + validateName(name); + const key = find(this[MAP], name); + if (key === undefined) { + return null; + } + + return this[MAP][key].join(', '); + } + + /** + * Iterate over all headers + * + * @param Function callback Executed for each item with parameters (value, name, thisArg) + * @param Boolean thisArg `this` context for callback function + * @return Void + */ + forEach(callback) { + let thisArg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : undefined; + + 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++; + } + } + + /** + * Overwrite header values given name + * + * @param String name Header name + * @param String value Header value + * @return Void + */ + set(name, value) { + name = `${name}`; + value = `${value}`; + validateName(name); + validateValue(value); + const key = find(this[MAP], name); + this[MAP][key !== undefined ? key : name] = [value]; + } + + /** + * Append a value onto existing header + * + * @param String name Header name + * @param String value Header value + * @return Void + */ + append(name, value) { + name = `${name}`; + value = `${value}`; + validateName(name); + validateValue(value); + const key = find(this[MAP], name); + if (key !== undefined) { + this[MAP][key].push(value); + } else { + this[MAP][name] = [value]; + } + } + + /** + * Check for header name existence + * + * @param String name Header name + * @return Boolean + */ + has(name) { + name = `${name}`; + validateName(name); + return find(this[MAP], name) !== undefined; + } + + /** + * Delete all header values given name + * + * @param String name Header name + * @return Void + */ + delete(name) { + name = `${name}`; + validateName(name); + const key = find(this[MAP], name); + if (key !== undefined) { + delete this[MAP][key]; + } + } + + /** + * Return raw headers (non-spec api) + * + * @return Object + */ + raw() { + return this[MAP]; + } + + /** + * Get an iterator on keys. + * + * @return Iterator + */ + keys() { + return createHeadersIterator(this, 'key'); + } + + /** + * Get an iterator on values. + * + * @return Iterator + */ + values() { + return createHeadersIterator(this, 'value'); + } + + /** + * Get an iterator on entries. + * + * This is the default iterator of the Headers object. + * + * @return Iterator + */ + [Symbol.iterator]() { + return createHeadersIterator(this, 'key+value'); + } +} +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] !== undefined ? 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(', ')]; + }); +} + +const INTERNAL = Symbol('internal'); + +function createHeadersIterator(target, kind) { + const iterator = Object.create(HeadersIteratorPrototype); + iterator[INTERNAL] = { + target, + kind, + index: 0 + }; + return iterator; +} + +const HeadersIteratorPrototype = Object.setPrototypeOf({ + next() { + // istanbul ignore if + 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: undefined, + done: true + }; + } + + this[INTERNAL].index = index + 1; + + return { + value: values[index], + done: false + }; + } +}, Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]()))); + +Object.defineProperty(HeadersIteratorPrototype, Symbol.toStringTag, { + value: 'HeadersIterator', + writable: false, + enumerable: false, + configurable: true +}); + +/** + * Export the Headers object in a form that Node.js can consume. + * + * @param Headers headers + * @return Object + */ +function exportNodeCompatibleHeaders(headers) { + const obj = Object.assign({ __proto__: null }, headers[MAP]); + + // http.request() only supports string as Host header. This hack makes + // specifying custom Host header possible. + const hostHeaderKey = find(headers[MAP], 'Host'); + if (hostHeaderKey !== undefined) { + obj[hostHeaderKey] = obj[hostHeaderKey][0]; + } + + return obj; +} + +/** + * Create a Headers object from an object of headers, ignoring those that do + * not conform to HTTP grammar productions. + * + * @param Object obj Object of headers + * @return Headers + */ +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; + } + if (headers[MAP][name] === undefined) { + headers[MAP][name] = [val]; + } else { + headers[MAP][name].push(val); + } + } + } else if (!invalidHeaderCharRegex.test(obj[name])) { + headers[MAP][name] = [obj[name]]; + } + } + return headers; +} + +const INTERNALS$1 = Symbol('Response internals'); + +// fix an issue where "STATUS_CODES" aren't a named export for node <10 +const STATUS_CODES = http.STATUS_CODES; + +/** + * Response class + * + * @param Stream body Readable stream + * @param Object opts Response options + * @return Void + */ +class Response { + constructor() { + let body = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null; + let opts = arguments.length > 1 && arguments[1] !== undefined ? 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; + } + + /** + * Convenience property representing if the request ended normally + */ + 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; + } + + /** + * Clone this response + * + * @return Response + */ + clone() { + return new Response(clone(this), { + url: this.url, + status: this.status, + statusText: this.statusText, + headers: this.headers, + ok: this.ok, + redirected: this.redirected + }); + } +} + +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 +}); + +const INTERNALS$2 = Symbol('Request internals'); +const URL = Url.URL || whatwgUrl.URL; + +// fix an issue where "format", "parse" aren't a named export for node <10 +const parse_url = Url.parse; +const format_url = Url.format; + +/** + * Wrapper around `new URL` to handle arbitrary URLs + * + * @param {string} urlStr + * @return {void} + */ +function parseURL(urlStr) { + /* + Check whether the URL is absolute or not + Scheme: https://tools.ietf.org/html/rfc3986#section-3.1 + Absolute URL: https://tools.ietf.org/html/rfc3986#section-4.3 + */ + if (/^[a-zA-Z][a-zA-Z\d+\-.]*:/.exec(urlStr)) { + urlStr = new URL(urlStr).toString(); + } + + // Fallback to old implementation for arbitrary URLs + return parse_url(urlStr); +} + +const streamDestructionSupported = 'destroy' in Stream.Readable.prototype; + +/** + * Check if a value is an instance of Request. + * + * @param Mixed input + * @return Boolean + */ +function isRequest(input) { + return typeof input === 'object' && typeof input[INTERNALS$2] === 'object'; +} + +function isAbortSignal(signal) { + const proto = signal && typeof signal === 'object' && Object.getPrototypeOf(signal); + return !!(proto && proto.constructor.name === 'AbortSignal'); +} + +/** + * Request class + * + * @param Mixed input Url or Request instance + * @param Object init Custom options + * @return Void + */ +class Request { + constructor(input) { + let init = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + + let parsedURL; + + // normalize input + if (!isRequest(input)) { + if (input && input.href) { + // in order to support Node.js' Url objects; though WHATWG's URL objects + // will fall into this branch also (since their `toString()` will return + // `href` property anyway) + parsedURL = parseURL(input.href); + } else { + // coerce input to a string before attempting to parse + 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); + } + } + + 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 + }; + + // node-fetch-only options + this.follow = init.follow !== undefined ? init.follow : input.follow !== undefined ? input.follow : 20; + this.compress = init.compress !== undefined ? init.compress : input.compress !== undefined ? 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 this request + * + * @return Request + */ + 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 } +}); + +/** + * Convert a Request to Node.js http request options. + * + * @param Request A Request instance + * @return Object The options object to be passed to http.request + */ +function getNodeRequestOptions(request) { + const parsedURL = request[INTERNALS$2].parsedURL; + const headers = new Headers(request[INTERNALS$2].headers); + + // fetch step 1.3 + if (!headers.has('Accept')) { + headers.set('Accept', '*/*'); + } + + // Basic fetch + 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'); + } + + // HTTP-network-or-cache fetch steps 2.4-2.7 + 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); + } + + // HTTP-network-or-cache fetch step 2.11 + if (!headers.has('User-Agent')) { + headers.set('User-Agent', 'node-fetch/1.0 (+https://github.com/bitinn/node-fetch)'); + } + + // HTTP-network-or-cache fetch step 2.15 + 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'); + } + + // HTTP-network fetch step 4.2 + // chunked encoding is handled by Node.js + + return Object.assign({}, parsedURL, { + method: request.method, + headers: exportNodeCompatibleHeaders(headers), + agent + }); +} + +/** + * abort-error.js + * + * AbortError interface for cancelled requests + */ + +/** + * Create AbortError instance + * + * @param String message Error message for human + * @return AbortError + */ +function AbortError(message) { + Error.call(this, message); + + this.type = 'aborted'; + this.message = message; + + // hide custom error implementation details from end-users + Error.captureStackTrace(this, this.constructor); +} + +AbortError.prototype = Object.create(Error.prototype); +AbortError.prototype.constructor = AbortError; +AbortError.prototype.name = 'AbortError'; + +const URL$1 = Url.URL || whatwgUrl.URL; + +// fix an issue where "PassThrough", "resolve" aren't a named export for node <10 +const PassThrough$1 = Stream.PassThrough; + +const isDomainOrSubdomain = function isDomainOrSubdomain(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); +}; + +/** + * isSameProtocol reports whether the two provided URLs use the same protocol. + * + * Both domains must already be in canonical form. + * @param {string|URL} original + * @param {string|URL} destination + */ +const isSameProtocol = function isSameProtocol(destination, original) { + const orig = new URL$1(original).protocol; + const dest = new URL$1(destination).protocol; + + return orig === dest; +}; + +/** + * Fetch function + * + * @param Mixed url Absolute url or Request instance + * @param Object opts Fetch options + * @return Promise + */ +function fetch(url, opts) { + + // allow custom promise + if (!fetch.Promise) { + throw new Error('native promise missing, set fetch.Promise to your favorite alternative'); + } + + Body.Promise = fetch.Promise; + + // wrap http.request into fetch + return new fetch.Promise(function (resolve, reject) { + // build request object + 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 abort() { + let error = new AbortError('The user aborted a request.'); + reject(error); + if (request.body && request.body instanceof Stream.Readable) { + destroyStream(request.body, error); + } + if (!response || !response.body) return; + response.body.emit('error', error); + }; + + if (signal && signal.aborted) { + abort(); + return; + } + + const abortAndFinalize = function abortAndFinalize() { + abort(); + finalize(); + }; + + // send request + 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)); + + if (response && response.body) { + destroyStream(response.body, err); + } + + finalize(); + }); + + fixResponseChunkedTransferBadEnding(req, function (err) { + if (signal && signal.aborted) { + return; + } + + if (response && response.body) { + destroyStream(response.body, err); + } + }); + + /* c8 ignore next 18 */ + if (parseInt(process.version.substring(1)) < 14) { + // Before Node.js 14, pipeline() does not fully support async iterators and does not always + // properly handle when the socket close/end events are out of order. + req.on('socket', function (s) { + s.addListener('close', function (hadError) { + // if a data listener is still present we didn't end cleanly + const hasDataListener = s.listenerCount('data') > 0; + + // if end happened before close but the socket didn't emit an error, do it now + if (response && hasDataListener && !hadError && !(signal && signal.aborted)) { + const err = new Error('Premature close'); + err.code = 'ERR_STREAM_PREMATURE_CLOSE'; + response.body.emit('error', err); + } + }); + }); + } + + req.on('response', function (res) { + clearTimeout(reqTimeout); + + const headers = createHeadersLenient(res.headers); + + // HTTP fetch step 5 + if (fetch.isRedirect(res.statusCode)) { + // HTTP fetch step 5.2 + const location = headers.get('Location'); + + // HTTP fetch step 5.3 + let locationURL = null; + try { + locationURL = location === null ? null : new URL$1(location, request.url).toString(); + } catch (err) { + // error here can only be invalid URL in Location: header + // do not throw when options.redirect == manual + // let the user extract the errorneous redirect URL + if (request.redirect !== 'manual') { + reject(new FetchError(`uri requested responds with an invalid redirect URL: ${location}`, 'invalid-redirect')); + finalize(); + return; + } + } + + // HTTP fetch step 5.5 + 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': + // node-fetch-specific step: make manual redirect a bit easier to use by setting the Location header value to the resolved URL. + if (locationURL !== null) { + // handle corrupted header + try { + headers.set('Location', locationURL); + } catch (err) { + // istanbul ignore next: nodejs server prevent invalid response headers, we can't test this through normal request + reject(err); + } + } + break; + case 'follow': + // HTTP-redirect fetch step 2 + if (locationURL === null) { + break; + } + + // HTTP-redirect fetch step 5 + if (request.counter >= request.follow) { + reject(new FetchError(`maximum redirect reached at: ${request.url}`, 'max-redirect')); + finalize(); + return; + } + + // HTTP-redirect fetch step 6 (counter increment) + // Create a new Request object. + 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) || !isSameProtocol(request.url, locationURL)) { + for (const name of ['authorization', 'www-authenticate', 'cookie', 'cookie2']) { + requestOpts.headers.delete(name); + } + } + + // HTTP-redirect fetch step 9 + 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; + } + + // HTTP-redirect fetch step 11 + if (res.statusCode === 303 || (res.statusCode === 301 || res.statusCode === 302) && request.method === 'POST') { + requestOpts.method = 'GET'; + requestOpts.body = undefined; + requestOpts.headers.delete('content-length'); + } + + // HTTP-redirect fetch step 15 + resolve(fetch(new Request(locationURL, requestOpts))); + finalize(); + return; + } + } + + // prepare response + 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: headers, + size: request.size, + timeout: request.timeout, + counter: request.counter + }; + + // HTTP-network fetch step 12.1.1.3 + const codings = headers.get('Content-Encoding'); + + // HTTP-network fetch step 12.1.1.4: handle content codings + + // in following scenarios we ignore compression support + // 1. compression support is disabled + // 2. HEAD request + // 3. no Content-Encoding header + // 4. no content response (204) + // 5. content not modified response (304) + if (!request.compress || request.method === 'HEAD' || codings === null || res.statusCode === 204 || res.statusCode === 304) { + response = new Response(body, response_options); + resolve(response); + return; + } + + // For Node v6+ + // 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. + const zlibOptions = { + flush: zlib.Z_SYNC_FLUSH, + finishFlush: zlib.Z_SYNC_FLUSH + }; + + // for gzip + if (codings == 'gzip' || codings == 'x-gzip') { + body = body.pipe(zlib.createGunzip(zlibOptions)); + response = new Response(body, response_options); + resolve(response); + return; + } + + // for deflate + if (codings == 'deflate' || codings == 'x-deflate') { + // handle the infamous raw deflate response from old servers + // a hack for old IIS and Apache servers + const raw = res.pipe(new PassThrough$1()); + raw.once('data', function (chunk) { + // see http://stackoverflow.com/questions/37519828 + if ((chunk[0] & 0x0F) === 0x08) { + body = body.pipe(zlib.createInflate()); + } else { + body = body.pipe(zlib.createInflateRaw()); + } + response = new Response(body, response_options); + resolve(response); + }); + raw.on('end', function () { + // some old IIS servers return zero-length OK deflate responses, so 'data' is never emitted. + if (!response) { + response = new Response(body, response_options); + resolve(response); + } + }); + return; + } + + // for br + if (codings == 'br' && typeof zlib.createBrotliDecompress === 'function') { + body = body.pipe(zlib.createBrotliDecompress()); + response = new Response(body, response_options); + resolve(response); + return; + } + + // otherwise, use response as-is + response = new Response(body, response_options); + resolve(response); + }); + + writeToStream(req, request); + }); +} +function fixResponseChunkedTransferBadEnding(request, errorCallback) { + let socket; + + request.on('socket', function (s) { + socket = s; + }); + + request.on('response', function (response) { + const headers = response.headers; + + if (headers['transfer-encoding'] === 'chunked' && !headers['content-length']) { + response.once('close', function (hadError) { + // if a data listener is still present we didn't end cleanly + const hasDataListener = socket.listenerCount('data') > 0; + + if (hasDataListener && !hadError) { + const err = new Error('Premature close'); + err.code = 'ERR_STREAM_PREMATURE_CLOSE'; + errorCallback(err); + } + }); + } + }); +} + +function destroyStream(stream, err) { + if (stream.destroy) { + stream.destroy(err); + } else { + // node < 8 + stream.emit('error', err); + stream.end(); + } +} + +/** + * Redirect code matching + * + * @param Number code Status code + * @return Boolean + */ +fetch.isRedirect = function (code) { + return code === 301 || code === 302 || code === 303 || code === 307 || code === 308; +}; + +// expose Promise +fetch.Promise = global.Promise; + +export default fetch; +export { Headers, Request, Response, FetchError }; diff --git a/node_modules/node-fetch/package.json b/node_modules/node-fetch/package.json new file mode 100644 index 0000000..177e847 --- /dev/null +++ b/node_modules/node-fetch/package.json @@ -0,0 +1,89 @@ +{ + "name": "node-fetch", + "version": "2.6.9", + "description": "A light-weight module that brings window.fetch to node.js", + "main": "lib/index.js", + "browser": "./browser.js", + "module": "lib/index.mjs", + "files": [ + "lib/index.js", + "lib/index.mjs", + "lib/index.es.js", + "browser.js" + ], + "engines": { + "node": "4.x || >=6.0.0" + }, + "scripts": { + "build": "cross-env BABEL_ENV=rollup rollup -c", + "prepare": "npm run build", + "test": "cross-env BABEL_ENV=test mocha --require babel-register --throw-deprecation test/test.js", + "report": "cross-env BABEL_ENV=coverage nyc --reporter lcov --reporter text mocha -R spec test/test.js", + "coverage": "cross-env BABEL_ENV=coverage nyc --reporter json --reporter text mocha -R spec test/test.js && codecov -f coverage/coverage-final.json" + }, + "repository": { + "type": "git", + "url": "https://github.com/bitinn/node-fetch.git" + }, + "keywords": [ + "fetch", + "http", + "promise" + ], + "author": "David Frank", + "license": "MIT", + "bugs": { + "url": "https://github.com/bitinn/node-fetch/issues" + }, + "homepage": "https://github.com/bitinn/node-fetch", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + }, + "devDependencies": { + "@ungap/url-search-params": "^0.1.2", + "abort-controller": "^1.1.0", + "abortcontroller-polyfill": "^1.3.0", + "babel-core": "^6.26.3", + "babel-plugin-istanbul": "^4.1.6", + "babel-plugin-transform-async-generator-functions": "^6.24.1", + "babel-polyfill": "^6.26.0", + "babel-preset-env": "1.4.0", + "babel-register": "^6.16.3", + "chai": "^3.5.0", + "chai-as-promised": "^7.1.1", + "chai-iterator": "^1.1.1", + "chai-string": "~1.3.0", + "codecov": "3.3.0", + "cross-env": "^5.2.0", + "form-data": "^2.3.3", + "is-builtin-module": "^1.0.0", + "mocha": "^5.0.0", + "nyc": "11.9.0", + "parted": "^0.1.1", + "promise": "^8.0.3", + "resumer": "0.0.0", + "rollup": "^0.63.4", + "rollup-plugin-babel": "^3.0.7", + "string-to-arraybuffer": "^1.0.2", + "teeny-request": "3.7.0" + }, + "release": { + "branches": [ + "+([0-9]).x", + "main", + "next", + { + "name": "beta", + "prerelease": true + } + ] + } +} diff --git a/node_modules/once/LICENSE b/node_modules/once/LICENSE new file mode 100644 index 0000000..19129e3 --- /dev/null +++ b/node_modules/once/LICENSE @@ -0,0 +1,15 @@ +The ISC License + +Copyright (c) Isaac Z. Schlueter and Contributors + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR +IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. diff --git a/node_modules/once/README.md b/node_modules/once/README.md new file mode 100644 index 0000000..1f1ffca --- /dev/null +++ b/node_modules/once/README.md @@ -0,0 +1,79 @@ +# once + +Only call a function once. + +## usage + +```javascript +var once = require('once') + +function load (file, cb) { + cb = once(cb) + loader.load('file') + loader.once('load', cb) + loader.once('error', cb) +} +``` + +Or add to the Function.prototype in a responsible way: + +```javascript +// only has to be done once +require('once').proto() + +function load (file, cb) { + cb = cb.once() + loader.load('file') + loader.once('load', cb) + loader.once('error', cb) +} +``` + +Ironically, the prototype feature makes this module twice as +complicated as necessary. + +To check whether you function has been called, use `fn.called`. Once the +function is called for the first time the return value of the original +function is saved in `fn.value` and subsequent calls will continue to +return this value. + +```javascript +var once = require('once') + +function load (cb) { + cb = once(cb) + var stream = createStream() + stream.once('data', cb) + stream.once('end', function () { + if (!cb.called) cb(new Error('not found')) + }) +} +``` + +## `once.strict(func)` + +Throw an error if the function is called twice. + +Some functions are expected to be called only once. Using `once` for them would +potentially hide logical errors. + +In the example below, the `greet` function has to call the callback only once: + +```javascript +function greet (name, cb) { + // return is missing from the if statement + // when no name is passed, the callback is called twice + if (!name) cb('Hello anonymous') + cb('Hello ' + name) +} + +function log (msg) { + console.log(msg) +} + +// this will print 'Hello anonymous' but the logical error will be missed +greet(null, once(msg)) + +// once.strict will print 'Hello anonymous' and throw an error when the callback will be called the second time +greet(null, once.strict(msg)) +``` diff --git a/node_modules/once/once.js b/node_modules/once/once.js new file mode 100644 index 0000000..2354067 --- /dev/null +++ b/node_modules/once/once.js @@ -0,0 +1,42 @@ +var wrappy = require('wrappy') +module.exports = wrappy(once) +module.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 + }) +}) + +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) + } + var name = fn.name || 'Function wrapped with `once`' + f.onceError = name + " shouldn't be called more than once" + f.called = false + return f +} diff --git a/node_modules/once/package.json b/node_modules/once/package.json new file mode 100644 index 0000000..16815b2 --- /dev/null +++ b/node_modules/once/package.json @@ -0,0 +1,33 @@ +{ + "name": "once", + "version": "1.4.0", + "description": "Run a function exactly one time", + "main": "once.js", + "directories": { + "test": "test" + }, + "dependencies": { + "wrappy": "1" + }, + "devDependencies": { + "tap": "^7.0.1" + }, + "scripts": { + "test": "tap test/*.js" + }, + "files": [ + "once.js" + ], + "repository": { + "type": "git", + "url": "git://github.com/isaacs/once" + }, + "keywords": [ + "once", + "function", + "one", + "single" + ], + "author": "Isaac Z. Schlueter (http://blog.izs.me/)", + "license": "ISC" +} diff --git a/node_modules/process/.eslintrc b/node_modules/process/.eslintrc new file mode 100644 index 0000000..1e7aab7 --- /dev/null +++ b/node_modules/process/.eslintrc @@ -0,0 +1,21 @@ +{ +extends: "eslint:recommended", + "env": { + "node": true, + "browser": true, + "es6" : true, + "mocha": true + }, + "rules": { + "indent": [2, 4], + "brace-style": [2, "1tbs"], + "quotes": [2, "single"], + "no-console": 0, + "no-shadow": 0, + "no-use-before-define": [2, "nofunc"], + "no-underscore-dangle": 0, + "no-constant-condition": 0, + "space-after-function-name": 0, + "consistent-return": 0 + } +} diff --git a/node_modules/process/LICENSE b/node_modules/process/LICENSE new file mode 100644 index 0000000..b8c1246 --- /dev/null +++ b/node_modules/process/LICENSE @@ -0,0 +1,22 @@ +(The MIT License) + +Copyright (c) 2013 Roman Shtylman + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/process/README.md b/node_modules/process/README.md new file mode 100644 index 0000000..6570729 --- /dev/null +++ b/node_modules/process/README.md @@ -0,0 +1,26 @@ +# process + +```require('process');``` just like any other module. + +Works in node.js and browsers via the browser.js shim provided with the module. + +## browser implementation + +The goal of this module is not to be a full-fledged alternative to the builtin process module. This module mostly exists to provide the nextTick functionality and little more. We keep this module lean because it will often be included by default by tools like browserify when it detects a module has used the `process` global. + +It also exposes a "browser" member (i.e. `process.browser`) which is `true` in this implementation but `undefined` in node. This can be used in isomorphic code that adjusts it's behavior depending on which environment it's running in. + +If you are looking to provide other process methods, I suggest you monkey patch them onto the process global in your app. A list of user created patches is below. + +* [hrtime](https://github.com/kumavis/browser-process-hrtime) +* [stdout](https://github.com/kumavis/browser-stdout) + +## package manager notes + +If you are writing a bundler to package modules for client side use, make sure you use the ```browser``` field hint in package.json. + +See https://gist.github.com/4339901 for details. + +The [browserify](https://github.com/substack/node-browserify) module will properly handle this field when bundling your files. + + diff --git a/node_modules/process/browser.js b/node_modules/process/browser.js new file mode 100644 index 0000000..d059362 --- /dev/null +++ b/node_modules/process/browser.js @@ -0,0 +1,184 @@ +// shim for using process in browser +var process = module.exports = {}; + +// cached from whatever global is present so that test runners that stub it +// don't break things. But we need to wrap it in a try catch in case it is +// wrapped in strict mode code which doesn't define any globals. It's inside a +// function because try/catches deoptimize in certain engines. + +var cachedSetTimeout; +var cachedClearTimeout; + +function defaultSetTimout() { + throw new Error('setTimeout has not been defined'); +} +function defaultClearTimeout () { + throw new Error('clearTimeout has not been defined'); +} +(function () { + try { + if (typeof setTimeout === 'function') { + cachedSetTimeout = setTimeout; + } else { + cachedSetTimeout = defaultSetTimout; + } + } catch (e) { + cachedSetTimeout = defaultSetTimout; + } + try { + if (typeof clearTimeout === 'function') { + cachedClearTimeout = clearTimeout; + } else { + cachedClearTimeout = defaultClearTimeout; + } + } catch (e) { + cachedClearTimeout = defaultClearTimeout; + } +} ()) +function runTimeout(fun) { + if (cachedSetTimeout === setTimeout) { + //normal enviroments in sane situations + return setTimeout(fun, 0); + } + // if setTimeout wasn't available but was latter defined + if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) { + cachedSetTimeout = setTimeout; + return setTimeout(fun, 0); + } + try { + // when when somebody has screwed with setTimeout but no I.E. maddness + return cachedSetTimeout(fun, 0); + } catch(e){ + try { + // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally + return cachedSetTimeout.call(null, fun, 0); + } catch(e){ + // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error + return cachedSetTimeout.call(this, fun, 0); + } + } + + +} +function runClearTimeout(marker) { + if (cachedClearTimeout === clearTimeout) { + //normal enviroments in sane situations + return clearTimeout(marker); + } + // if clearTimeout wasn't available but was latter defined + if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) { + cachedClearTimeout = clearTimeout; + return clearTimeout(marker); + } + try { + // when when somebody has screwed with setTimeout but no I.E. maddness + return cachedClearTimeout(marker); + } catch (e){ + try { + // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally + return cachedClearTimeout.call(null, marker); + } catch (e){ + // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error. + // Some versions of I.E. have different rules for clearTimeout vs setTimeout + return cachedClearTimeout.call(this, marker); + } + } + + + +} +var queue = []; +var draining = false; +var currentQueue; +var queueIndex = -1; + +function cleanUpNextTick() { + if (!draining || !currentQueue) { + return; + } + draining = false; + if (currentQueue.length) { + queue = currentQueue.concat(queue); + } else { + queueIndex = -1; + } + if (queue.length) { + drainQueue(); + } +} + +function drainQueue() { + if (draining) { + return; + } + var timeout = runTimeout(cleanUpNextTick); + draining = true; + + var len = queue.length; + while(len) { + currentQueue = queue; + queue = []; + while (++queueIndex < len) { + if (currentQueue) { + currentQueue[queueIndex].run(); + } + } + queueIndex = -1; + len = queue.length; + } + currentQueue = null; + draining = false; + runClearTimeout(timeout); +} + +process.nextTick = function (fun) { + var args = new Array(arguments.length - 1); + if (arguments.length > 1) { + for (var i = 1; i < arguments.length; i++) { + args[i - 1] = arguments[i]; + } + } + queue.push(new Item(fun, args)); + if (queue.length === 1 && !draining) { + runTimeout(drainQueue); + } +}; + +// v8 likes predictible objects +function Item(fun, array) { + this.fun = fun; + this.array = array; +} +Item.prototype.run = function () { + this.fun.apply(null, this.array); +}; +process.title = 'browser'; +process.browser = true; +process.env = {}; +process.argv = []; +process.version = ''; // empty string to avoid regexp issues +process.versions = {}; + +function noop() {} + +process.on = noop; +process.addListener = noop; +process.once = noop; +process.off = noop; +process.removeListener = noop; +process.removeAllListeners = noop; +process.emit = noop; +process.prependListener = noop; +process.prependOnceListener = noop; + +process.listeners = function (name) { return [] } + +process.binding = function (name) { + throw new Error('process.binding is not supported'); +}; + +process.cwd = function () { return '/' }; +process.chdir = function (dir) { + throw new Error('process.chdir is not supported'); +}; +process.umask = function() { return 0; }; diff --git a/node_modules/process/index.js b/node_modules/process/index.js new file mode 100644 index 0000000..8d8ed7d --- /dev/null +++ b/node_modules/process/index.js @@ -0,0 +1,2 @@ +// for now just expose the builtin process global from node.js +module.exports = global.process; diff --git a/node_modules/process/package.json b/node_modules/process/package.json new file mode 100644 index 0000000..d2cfaad --- /dev/null +++ b/node_modules/process/package.json @@ -0,0 +1,27 @@ +{ + "author": "Roman Shtylman ", + "name": "process", + "description": "process information for node.js and browsers", + "keywords": [ + "process" + ], + "scripts": { + "test": "mocha test.js", + "browser": "zuul --no-coverage --ui mocha-bdd --local 8080 -- test.js" + }, + "version": "0.11.10", + "repository": { + "type": "git", + "url": "git://github.com/shtylman/node-process.git" + }, + "license": "MIT", + "browser": "./browser.js", + "main": "./index.js", + "engines": { + "node": ">= 0.6.0" + }, + "devDependencies": { + "mocha": "2.2.1", + "zuul": "^3.10.3" + } +} diff --git a/node_modules/process/test.js b/node_modules/process/test.js new file mode 100644 index 0000000..8ba579c --- /dev/null +++ b/node_modules/process/test.js @@ -0,0 +1,199 @@ +var assert = require('assert'); +var ourProcess = require('./browser'); +describe('test against our process', function () { + test(ourProcess); +}); +if (!process.browser) { + describe('test against node', function () { + test(process); + }); + vmtest(); +} +function test (ourProcess) { + describe('test arguments', function () { + it ('works', function (done) { + var order = 0; + + + ourProcess.nextTick(function (num) { + assert.equal(num, order++, 'first one works'); + ourProcess.nextTick(function (num) { + assert.equal(num, order++, 'recursive one is 4th'); + }, 3); + }, 0); + ourProcess.nextTick(function (num) { + assert.equal(num, order++, 'second one starts'); + ourProcess.nextTick(function (num) { + assert.equal(num, order++, 'this is third'); + ourProcess.nextTick(function (num) { + assert.equal(num, order++, 'this is last'); + done(); + }, 5); + }, 4); + }, 1); + ourProcess.nextTick(function (num) { + + assert.equal(num, order++, '3rd schedualed happens after the error'); + }, 2); + }); + }); +if (!process.browser) { + describe('test errors', function (t) { + it ('works', function (done) { + var order = 0; + process.removeAllListeners('uncaughtException'); + process.once('uncaughtException', function(err) { + assert.equal(2, order++, 'error is third'); + ourProcess.nextTick(function () { + assert.equal(5, order++, 'schedualed in error is last'); + done(); + }); + }); + ourProcess.nextTick(function () { + assert.equal(0, order++, 'first one works'); + ourProcess.nextTick(function () { + assert.equal(4, order++, 'recursive one is 4th'); + }); + }); + ourProcess.nextTick(function () { + assert.equal(1, order++, 'second one starts'); + throw(new Error('an error is thrown')); + }); + ourProcess.nextTick(function () { + assert.equal(3, order++, '3rd schedualed happens after the error'); + }); + }); + }); +} + describe('rename globals', function (t) { + var oldTimeout = setTimeout; + var oldClear = clearTimeout; + + it('clearTimeout', function (done){ + + var ok = true; + clearTimeout = function () { + ok = false; + } + var ran = false; + function cleanup() { + clearTimeout = oldClear; + var err; + try { + assert.ok(ok, 'fake clearTimeout ran'); + assert.ok(ran, 'should have run'); + } catch (e) { + err = e; + } + done(err); + } + setTimeout(cleanup, 1000); + ourProcess.nextTick(function () { + ran = true; + }); + }); + it('just setTimeout', function (done){ + + + setTimeout = function () { + setTimeout = oldTimeout; + try { + assert.ok(false, 'fake setTimeout called') + } catch (e) { + done(e); + } + + } + + ourProcess.nextTick(function () { + setTimeout = oldTimeout; + done(); + }); + }); + }); +} +function vmtest() { + var vm = require('vm'); + var fs = require('fs'); + var process = fs.readFileSync('./browser.js', {encoding: 'utf8'}); + + + describe('should work in vm in strict mode with no globals', function () { + it('should parse', function (done) { + var str = '"use strict";var module = {exports:{}};'; + str += process; + str += 'this.works = process.browser;'; + var script = new vm.Script(str); + var context = { + works: false + }; + script.runInNewContext(context); + assert.ok(context.works); + done(); + }); + it('setTimeout throws error', function (done) { + var str = '"use strict";var module = {exports:{}};'; + str += process; + str += 'try {process.nextTick(function () {})} catch (e){this.works = e;}'; + var script = new vm.Script(str); + var context = { + works: false + }; + script.runInNewContext(context); + assert.ok(context.works); + done(); + }); + it('should generally work', function (done) { + var str = '"use strict";var module = {exports:{}};'; + str += process; + str += 'process.nextTick(function () {assert.ok(true);done();})'; + var script = new vm.Script(str); + var context = { + clearTimeout: clearTimeout, + setTimeout: setTimeout, + done: done, + assert: assert + }; + script.runInNewContext(context); + }); + it('late defs setTimeout', function (done) { + var str = '"use strict";var module = {exports:{}};'; + str += process; + str += 'var setTimeout = hiddenSetTimeout;process.nextTick(function () {assert.ok(true);done();})'; + var script = new vm.Script(str); + var context = { + clearTimeout: clearTimeout, + hiddenSetTimeout: setTimeout, + done: done, + assert: assert + }; + script.runInNewContext(context); + }); + it('late defs clearTimeout', function (done) { + var str = '"use strict";var module = {exports:{}};'; + str += process; + str += 'var clearTimeout = hiddenClearTimeout;process.nextTick(function () {assert.ok(true);done();})'; + var script = new vm.Script(str); + var context = { + hiddenClearTimeout: clearTimeout, + setTimeout: setTimeout, + done: done, + assert: assert + }; + script.runInNewContext(context); + }); + it('late defs setTimeout and then redefine', function (done) { + var str = '"use strict";var module = {exports:{}};'; + str += process; + str += 'var setTimeout = hiddenSetTimeout;process.nextTick(function () {setTimeout = function (){throw new Error("foo")};hiddenSetTimeout(function(){process.nextTick(function (){assert.ok(true);done();});});});'; + var script = new vm.Script(str); + var context = { + clearTimeout: clearTimeout, + hiddenSetTimeout: setTimeout, + done: done, + assert: assert + }; + script.runInNewContext(context); + }); + }); +} diff --git a/node_modules/sax/LICENSE b/node_modules/sax/LICENSE new file mode 100644 index 0000000..ccffa08 --- /dev/null +++ b/node_modules/sax/LICENSE @@ -0,0 +1,41 @@ +The ISC License + +Copyright (c) Isaac Z. Schlueter and Contributors + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR +IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +==== + +`String.fromCodePoint` by Mathias Bynens used according to terms of MIT +License, as follows: + + Copyright Mathias Bynens + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be + included in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE + LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION + OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION + WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/sax/README.md b/node_modules/sax/README.md new file mode 100644 index 0000000..afcd3f3 --- /dev/null +++ b/node_modules/sax/README.md @@ -0,0 +1,225 @@ +# sax js + +A sax-style parser for XML and HTML. + +Designed with [node](http://nodejs.org/) in mind, but should work fine in +the browser or other CommonJS implementations. + +## What This Is + +* A very simple tool to parse through an XML string. +* A stepping stone to a streaming HTML parser. +* A handy way to deal with RSS and other mostly-ok-but-kinda-broken XML + docs. + +## What This Is (probably) Not + +* An HTML Parser - That's a fine goal, but this isn't it. It's just + XML. +* A DOM Builder - You can use it to build an object model out of XML, + but it doesn't do that out of the box. +* XSLT - No DOM = no querying. +* 100% Compliant with (some other SAX implementation) - Most SAX + implementations are in Java and do a lot more than this does. +* An XML Validator - It does a little validation when in strict mode, but + not much. +* A Schema-Aware XSD Thing - Schemas are an exercise in fetishistic + masochism. +* A DTD-aware Thing - Fetching DTDs is a much bigger job. + +## Regarding `Hello, world!').close(); + +// stream usage +// takes the same options as the parser +var saxStream = require("sax").createStream(strict, options) +saxStream.on("error", function (e) { + // unhandled errors will throw, since this is a proper node + // event emitter. + console.error("error!", e) + // clear the error + this._parser.error = null + this._parser.resume() +}) +saxStream.on("opentag", function (node) { + // same object as above +}) +// pipe is supported, and it's readable/writable +// same chunks coming in also go out. +fs.createReadStream("file.xml") + .pipe(saxStream) + .pipe(fs.createWriteStream("file-copy.xml")) +``` + + +## Arguments + +Pass the following arguments to the parser function. All are optional. + +`strict` - Boolean. Whether or not to be a jerk. Default: `false`. + +`opt` - Object bag of settings regarding string formatting. All default to `false`. + +Settings supported: + +* `trim` - Boolean. Whether or not to trim text and comment nodes. +* `normalize` - Boolean. If true, then turn any whitespace into a single + space. +* `lowercase` - Boolean. If true, then lowercase tag names and attribute names + in loose mode, rather than uppercasing them. +* `xmlns` - Boolean. If true, then namespaces are supported. +* `position` - Boolean. If false, then don't track line/col/position. +* `strictEntities` - Boolean. If true, only parse [predefined XML + entities](http://www.w3.org/TR/REC-xml/#sec-predefined-ent) + (`&`, `'`, `>`, `<`, and `"`) + +## Methods + +`write` - Write bytes onto the stream. You don't have to do this all at +once. You can keep writing as much as you want. + +`close` - Close the stream. Once closed, no more data may be written until +it is done processing the buffer, which is signaled by the `end` event. + +`resume` - To gracefully handle errors, assign a listener to the `error` +event. Then, when the error is taken care of, you can call `resume` to +continue parsing. Otherwise, the parser will not continue while in an error +state. + +## Members + +At all times, the parser object will have the following members: + +`line`, `column`, `position` - Indications of the position in the XML +document where the parser currently is looking. + +`startTagPosition` - Indicates the position where the current tag starts. + +`closed` - Boolean indicating whether or not the parser can be written to. +If it's `true`, then wait for the `ready` event to write again. + +`strict` - Boolean indicating whether or not the parser is a jerk. + +`opt` - Any options passed into the constructor. + +`tag` - The current tag being dealt with. + +And a bunch of other stuff that you probably shouldn't touch. + +## Events + +All events emit with a single argument. To listen to an event, assign a +function to `on`. Functions get executed in the this-context of +the parser object. The list of supported events are also in the exported +`EVENTS` array. + +When using the stream interface, assign handlers using the EventEmitter +`on` function in the normal fashion. + +`error` - Indication that something bad happened. The error will be hanging +out on `parser.error`, and must be deleted before parsing can continue. By +listening to this event, you can keep an eye on that kind of stuff. Note: +this happens *much* more in strict mode. Argument: instance of `Error`. + +`text` - Text node. Argument: string of text. + +`doctype` - The ``. Argument: +object with `name` and `body` members. Attributes are not parsed, as +processing instructions have implementation dependent semantics. + +`sgmldeclaration` - Random SGML declarations. Stuff like `` +would trigger this kind of event. This is a weird thing to support, so it +might go away at some point. SAX isn't intended to be used to parse SGML, +after all. + +`opentagstart` - Emitted immediately when the tag name is available, +but before any attributes are encountered. Argument: object with a +`name` field and an empty `attributes` set. Note that this is the +same object that will later be emitted in the `opentag` event. + +`opentag` - An opening tag. Argument: object with `name` and `attributes`. +In non-strict mode, tag names are uppercased, unless the `lowercase` +option is set. If the `xmlns` option is set, then it will contain +namespace binding information on the `ns` member, and will have a +`local`, `prefix`, and `uri` member. + +`closetag` - A closing tag. In loose mode, tags are auto-closed if their +parent closes. In strict mode, well-formedness is enforced. Note that +self-closing tags will have `closeTag` emitted immediately after `openTag`. +Argument: tag name. + +`attribute` - An attribute node. Argument: object with `name` and `value`. +In non-strict mode, attribute names are uppercased, unless the `lowercase` +option is set. If the `xmlns` option is set, it will also contains namespace +information. + +`comment` - A comment node. Argument: the string of the comment. + +`opencdata` - The opening tag of a ``) of a `` tags trigger a `"script"` +event, and their contents are not checked for special xml characters. +If you pass `noscript: true`, then this behavior is suppressed. + +## Reporting Problems + +It's best to write a failing test if you find an issue. I will always +accept pull requests with failing tests if they demonstrate intended +behavior, but it is very hard to figure out what issue you're describing +without a test. Writing a test is also the best way for you yourself +to figure out if you really understand the issue you think you have with +sax-js. diff --git a/node_modules/sax/lib/sax.js b/node_modules/sax/lib/sax.js new file mode 100644 index 0000000..795d607 --- /dev/null +++ b/node_modules/sax/lib/sax.js @@ -0,0 +1,1565 @@ +;(function (sax) { // wrapper for non-node envs + sax.parser = function (strict, opt) { return new SAXParser(strict, opt) } + sax.SAXParser = SAXParser + sax.SAXStream = SAXStream + sax.createStream = createStream + + // When we pass the MAX_BUFFER_LENGTH position, start checking for buffer overruns. + // When we check, schedule the next check for MAX_BUFFER_LENGTH - (max(buffer lengths)), + // since that's the earliest that a buffer overrun could occur. This way, checks are + // as rare as required, but as often as necessary to ensure never crossing this bound. + // Furthermore, buffers are only tested at most once per write(), so passing a very + // large string into write() might have undesirable effects, but this is manageable by + // the caller, so it is assumed to be safe. Thus, a call to write() may, in the extreme + // edge case, result in creating at most one complete copy of the string passed in. + // Set to Infinity to have unlimited buffers. + sax.MAX_BUFFER_LENGTH = 64 * 1024 + + var buffers = [ + 'comment', 'sgmlDecl', 'textNode', 'tagName', 'doctype', + 'procInstName', 'procInstBody', 'entity', 'attribName', + 'attribValue', 'cdata', 'script' + ] + + sax.EVENTS = [ + 'text', + 'processinginstruction', + 'sgmldeclaration', + 'doctype', + 'comment', + 'opentagstart', + 'attribute', + 'opentag', + 'closetag', + 'opencdata', + 'cdata', + 'closecdata', + 'error', + 'end', + 'ready', + 'script', + 'opennamespace', + 'closenamespace' + ] + + function SAXParser (strict, opt) { + if (!(this instanceof SAXParser)) { + return new SAXParser(strict, opt) + } + + var parser = this + clearBuffers(parser) + parser.q = parser.c = '' + parser.bufferCheckPosition = sax.MAX_BUFFER_LENGTH + parser.opt = opt || {} + parser.opt.lowercase = parser.opt.lowercase || parser.opt.lowercasetags + parser.looseCase = parser.opt.lowercase ? 'toLowerCase' : 'toUpperCase' + parser.tags = [] + parser.closed = parser.closedRoot = parser.sawRoot = false + parser.tag = parser.error = null + parser.strict = !!strict + parser.noscript = !!(strict || parser.opt.noscript) + parser.state = S.BEGIN + parser.strictEntities = parser.opt.strictEntities + parser.ENTITIES = parser.strictEntities ? Object.create(sax.XML_ENTITIES) : Object.create(sax.ENTITIES) + parser.attribList = [] + + // namespaces form a prototype chain. + // it always points at the current tag, + // which protos to its parent tag. + if (parser.opt.xmlns) { + parser.ns = Object.create(rootNS) + } + + // mostly just for error reporting + parser.trackPosition = parser.opt.position !== false + if (parser.trackPosition) { + parser.position = parser.line = parser.column = 0 + } + emit(parser, 'onready') + } + + if (!Object.create) { + Object.create = function (o) { + function F () {} + F.prototype = o + var newf = new F() + return newf + } + } + + if (!Object.keys) { + Object.keys = function (o) { + var a = [] + for (var i in o) if (o.hasOwnProperty(i)) a.push(i) + return a + } + } + + function checkBufferLength (parser) { + var maxAllowed = Math.max(sax.MAX_BUFFER_LENGTH, 10) + var maxActual = 0 + for (var i = 0, l = buffers.length; i < l; i++) { + var len = parser[buffers[i]].length + if (len > maxAllowed) { + // Text/cdata nodes can get big, and since they're buffered, + // we can get here under normal conditions. + // Avoid issues by emitting the text node now, + // so at least it won't get any bigger. + switch (buffers[i]) { + case 'textNode': + closeText(parser) + break + + case 'cdata': + emitNode(parser, 'oncdata', parser.cdata) + parser.cdata = '' + break + + case 'script': + emitNode(parser, 'onscript', parser.script) + parser.script = '' + break + + default: + error(parser, 'Max buffer length exceeded: ' + buffers[i]) + } + } + maxActual = Math.max(maxActual, len) + } + // schedule the next check for the earliest possible buffer overrun. + var m = sax.MAX_BUFFER_LENGTH - maxActual + parser.bufferCheckPosition = m + parser.position + } + + function clearBuffers (parser) { + for (var i = 0, l = buffers.length; i < l; i++) { + parser[buffers[i]] = '' + } + } + + function flushBuffers (parser) { + closeText(parser) + if (parser.cdata !== '') { + emitNode(parser, 'oncdata', parser.cdata) + parser.cdata = '' + } + if (parser.script !== '') { + emitNode(parser, 'onscript', parser.script) + parser.script = '' + } + } + + SAXParser.prototype = { + end: function () { end(this) }, + write: write, + resume: function () { this.error = null; return this }, + close: function () { return this.write(null) }, + flush: function () { flushBuffers(this) } + } + + var Stream + try { + Stream = require('stream').Stream + } catch (ex) { + Stream = function () {} + } + + var streamWraps = sax.EVENTS.filter(function (ev) { + return ev !== 'error' && ev !== 'end' + }) + + function createStream (strict, opt) { + return new SAXStream(strict, opt) + } + + function SAXStream (strict, opt) { + if (!(this instanceof SAXStream)) { + return new SAXStream(strict, opt) + } + + Stream.apply(this) + + this._parser = new SAXParser(strict, opt) + this.writable = true + this.readable = true + + var me = this + + this._parser.onend = function () { + me.emit('end') + } + + this._parser.onerror = function (er) { + me.emit('error', er) + + // if didn't throw, then means error was handled. + // go ahead and clear error, so we can write again. + me._parser.error = null + } + + this._decoder = null + + streamWraps.forEach(function (ev) { + Object.defineProperty(me, 'on' + ev, { + get: function () { + return me._parser['on' + ev] + }, + set: function (h) { + if (!h) { + me.removeAllListeners(ev) + me._parser['on' + ev] = h + return h + } + me.on(ev, h) + }, + enumerable: true, + configurable: false + }) + }) + } + + SAXStream.prototype = Object.create(Stream.prototype, { + constructor: { + value: SAXStream + } + }) + + SAXStream.prototype.write = function (data) { + if (typeof Buffer === 'function' && + typeof Buffer.isBuffer === 'function' && + Buffer.isBuffer(data)) { + if (!this._decoder) { + var SD = require('string_decoder').StringDecoder + this._decoder = new SD('utf8') + } + data = this._decoder.write(data) + } + + this._parser.write(data.toString()) + this.emit('data', data) + return true + } + + SAXStream.prototype.end = function (chunk) { + if (chunk && chunk.length) { + this.write(chunk) + } + this._parser.end() + return true + } + + SAXStream.prototype.on = function (ev, handler) { + var me = this + if (!me._parser['on' + ev] && streamWraps.indexOf(ev) !== -1) { + me._parser['on' + ev] = function () { + var args = arguments.length === 1 ? [arguments[0]] : Array.apply(null, arguments) + args.splice(0, 0, ev) + me.emit.apply(me, args) + } + } + + return Stream.prototype.on.call(me, ev, handler) + } + + // this really needs to be replaced with character classes. + // XML allows all manner of ridiculous numbers and digits. + var CDATA = '[CDATA[' + var DOCTYPE = 'DOCTYPE' + var XML_NAMESPACE = 'http://www.w3.org/XML/1998/namespace' + var XMLNS_NAMESPACE = 'http://www.w3.org/2000/xmlns/' + var rootNS = { xml: XML_NAMESPACE, xmlns: XMLNS_NAMESPACE } + + // http://www.w3.org/TR/REC-xml/#NT-NameStartChar + // This implementation works on strings, a single character at a time + // as such, it cannot ever support astral-plane characters (10000-EFFFF) + // without a significant breaking change to either this parser, or the + // JavaScript language. Implementation of an emoji-capable xml parser + // is left as an exercise for the reader. + var nameStart = /[:_A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]/ + + var nameBody = /[:_A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\u00B7\u0300-\u036F\u203F-\u2040.\d-]/ + + var entityStart = /[#:_A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]/ + var entityBody = /[#:_A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\u00B7\u0300-\u036F\u203F-\u2040.\d-]/ + + function isWhitespace (c) { + return c === ' ' || c === '\n' || c === '\r' || c === '\t' + } + + function isQuote (c) { + return c === '"' || c === '\'' + } + + function isAttribEnd (c) { + return c === '>' || isWhitespace(c) + } + + function isMatch (regex, c) { + return regex.test(c) + } + + function notMatch (regex, c) { + return !isMatch(regex, c) + } + + var S = 0 + sax.STATE = { + BEGIN: S++, // leading byte order mark or whitespace + BEGIN_WHITESPACE: S++, // leading whitespace + TEXT: S++, // general stuff + TEXT_ENTITY: S++, // & and such. + OPEN_WAKA: S++, // < + SGML_DECL: S++, // + SCRIPT: S++, // + +``` + +This library also works if you use AMD (Asynchronous Module Definition), which is used in tools like [RequireJS](http://requirejs.org/). Just list `browser-source-map-support` as a dependency: + +```html + +``` + +## Options + +This module installs two things: a change to the `stack` property on `Error` objects and a handler for uncaught exceptions that mimics node's default exception handler (the handler can be seen in the demos below). You may want to disable the handler if you have your own uncaught exception handler. This can be done by passing an argument to the installer: + +```js +require('source-map-support').install({ + handleUncaughtExceptions: false +}); +``` + +This module loads source maps from the filesystem by default. You can provide alternate loading behavior through a callback as shown below. For example, [Meteor](https://github.com/meteor) keeps all source maps cached in memory to avoid disk access. + +```js +require('source-map-support').install({ + retrieveSourceMap: function(source) { + if (source === 'compiled.js') { + return { + url: 'original.js', + map: fs.readFileSync('compiled.js.map', 'utf8') + }; + } + return null; + } +}); +``` + +The module will by default assume a browser environment if XMLHttpRequest and window are defined. If either of these do not exist it will instead assume a node environment. +In some rare cases, e.g. when running a browser emulation and where both variables are also set, you can explictly specify the environment to be either 'browser' or 'node'. + +```js +require('source-map-support').install({ + environment: 'node' +}); +``` + +To support files with inline source maps, the `hookRequire` options can be specified, which will monitor all source files for inline source maps. + + +```js +require('source-map-support').install({ + hookRequire: true +}); +``` + +This monkey patches the `require` module loading chain, so is not enabled by default and is not recommended for any sort of production usage. + +## Demos + +#### Basic Demo + +original.js: + +```js +throw new Error('test'); // This is the original code +``` + +compiled.js: + +```js +require('source-map-support').install(); + +throw new Error('test'); // This is the compiled code +// The next line defines the sourceMapping. +//# sourceMappingURL=compiled.js.map +``` + +compiled.js.map: + +```json +{ + "version": 3, + "file": "compiled.js", + "sources": ["original.js"], + "names": [], + "mappings": ";;AAAA,MAAM,IAAI" +} +``` + +Run compiled.js using node (notice how the stack trace uses original.js instead of compiled.js): + +``` +$ node compiled.js + +original.js:1 +throw new Error('test'); // This is the original code + ^ +Error: test + at Object. (original.js:1:7) + at Module._compile (module.js:456:26) + at Object.Module._extensions..js (module.js:474:10) + at Module.load (module.js:356:32) + at Function.Module._load (module.js:312:12) + at Function.Module.runMain (module.js:497:10) + at startup (node.js:119:16) + at node.js:901:3 +``` + +#### TypeScript Demo + +demo.ts: + +```typescript +declare function require(name: string); +require('source-map-support').install(); +class Foo { + constructor() { this.bar(); } + bar() { throw new Error('this is a demo'); } +} +new Foo(); +``` + +Compile and run the file using the TypeScript compiler from the terminal: + +``` +$ npm install source-map-support typescript +$ node_modules/typescript/bin/tsc -sourcemap demo.ts +$ node demo.js + +demo.ts:5 + bar() { throw new Error('this is a demo'); } + ^ +Error: this is a demo + at Foo.bar (demo.ts:5:17) + at new Foo (demo.ts:4:24) + at Object. (demo.ts:7:1) + at Module._compile (module.js:456:26) + at Object.Module._extensions..js (module.js:474:10) + at Module.load (module.js:356:32) + at Function.Module._load (module.js:312:12) + at Function.Module.runMain (module.js:497:10) + at startup (node.js:119:16) + at node.js:901:3 +``` + +There is also the option to use `-r source-map-support/register` with typescript, without the need add the `require('source-map-support').install()` in the code base: + +``` +$ npm install source-map-support typescript +$ node_modules/typescript/bin/tsc -sourcemap demo.ts +$ node -r source-map-support/register demo.js + +demo.ts:5 + bar() { throw new Error('this is a demo'); } + ^ +Error: this is a demo + at Foo.bar (demo.ts:5:17) + at new Foo (demo.ts:4:24) + at Object. (demo.ts:7:1) + at Module._compile (module.js:456:26) + at Object.Module._extensions..js (module.js:474:10) + at Module.load (module.js:356:32) + at Function.Module._load (module.js:312:12) + at Function.Module.runMain (module.js:497:10) + at startup (node.js:119:16) + at node.js:901:3 +``` + +#### CoffeeScript Demo + +demo.coffee: + +```coffee +require('source-map-support').install() +foo = -> + bar = -> throw new Error 'this is a demo' + bar() +foo() +``` + +Compile and run the file using the CoffeeScript compiler from the terminal: + +```sh +$ npm install source-map-support coffeescript +$ node_modules/.bin/coffee --map --compile demo.coffee +$ node demo.js + +demo.coffee:3 + bar = -> throw new Error 'this is a demo' + ^ +Error: this is a demo + at bar (demo.coffee:3:22) + at foo (demo.coffee:4:3) + at Object. (demo.coffee:5:1) + at Object. (demo.coffee:1:1) + at Module._compile (module.js:456:26) + at Object.Module._extensions..js (module.js:474:10) + at Module.load (module.js:356:32) + at Function.Module._load (module.js:312:12) + at Function.Module.runMain (module.js:497:10) + at startup (node.js:119:16) +``` + +## Tests + +This repo contains both automated tests for node and manual tests for the browser. The automated tests can be run using mocha (type `mocha` in the root directory). To run the manual tests: + +* Build the tests using `build.js` +* Launch the HTTP server (`npm run serve-tests`) and visit + * http://127.0.0.1:1336/amd-test + * http://127.0.0.1:1336/browser-test + * http://127.0.0.1:1336/browserify-test - **Currently not working** due to a bug with browserify (see [pull request #66](https://github.com/evanw/node-source-map-support/pull/66) for details). +* For `header-test`, run `server.js` inside that directory and visit http://127.0.0.1:1337/ + +## License + +This code is available under the [MIT license](http://opensource.org/licenses/MIT). diff --git a/node_modules/source-map-support/browser-source-map-support.js b/node_modules/source-map-support/browser-source-map-support.js new file mode 100644 index 0000000..782da50 --- /dev/null +++ b/node_modules/source-map-support/browser-source-map-support.js @@ -0,0 +1,114 @@ +/* + * Support for source maps in V8 stack traces + * https://github.com/evanw/node-source-map-support + */ +/* + The buffer module from node.js, for the browser. + + @author Feross Aboukhadijeh + license MIT +*/ +(this.define||function(R,U){this.sourceMapSupport=U()})("browser-source-map-support",function(R){(function e(C,J,A){function p(f,c){if(!J[f]){if(!C[f]){var l="function"==typeof require&&require;if(!c&&l)return l(f,!0);if(t)return t(f,!0);throw Error("Cannot find module '"+f+"'");}l=J[f]={exports:{}};C[f][0].call(l.exports,function(q){var r=C[f][1][q];return p(r?r:q)},l,l.exports,e,C,J,A)}return J[f].exports}for(var t="function"==typeof require&&require,m=0;mm)return-1;if(58>m)return m-48+52;if(91>m)return m-65;if(123>m)return m-97+26}var t="undefined"!==typeof Uint8Array?Uint8Array:Array;e.toByteArray=function(m){function f(d){q[k++]=d}if(0>16);f((u&65280)>>8);f(u&255)}2===l?(u=p(m.charAt(c))<<2|p(m.charAt(c+1))>>4,f(u&255)):1===l&&(u=p(m.charAt(c))<<10|p(m.charAt(c+1))<<4|p(m.charAt(c+2))>>2,f(u>>8&255),f(u&255));return q};e.fromByteArray=function(m){var f=m.length%3,c="",l;var q=0;for(l=m.length-f;q> +18&63)+"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(r>>12&63)+"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(r>>6&63)+"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(r&63);c+=r}switch(f){case 1:r=m[m.length-1];c+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(r>>2);c+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(r<<4&63);c+="==";break;case 2:r=(m[m.length-2]<<8)+ +m[m.length-1],c+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(r>>10),c+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(r>>4&63),c+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(r<<2&63),c+="="}return c}})("undefined"===typeof A?this.base64js={}:A)},{}],3:[function(C,J,A){},{}],4:[function(C,J,A){(function(e){var p=Object.prototype.toString,t="function"===typeof e.alloc&&"function"===typeof e.allocUnsafe&&"function"=== +typeof e.from;J.exports=function(m,f,c){if("number"===typeof m)throw new TypeError('"value" argument must not be a number');if("ArrayBuffer"===p.call(m).slice(8,-1)){f>>>=0;var l=m.byteLength-f;if(0>l)throw new RangeError("'offset' is out of bounds");if(void 0===c)c=l;else if(c>>>=0,c>l)throw new RangeError("'length' is out of bounds");return t?e.from(m.slice(f,f+c)):new e(new Uint8Array(m.slice(f,f+c)))}if("string"===typeof m){c=f;if("string"!==typeof c||""===c)c="utf8";if(!e.isEncoding(c))throw new TypeError('"encoding" must be a valid string encoding'); +return t?e.from(m,c):new e(m,c)}return t?e.from(m):new e(m)}}).call(this,C("buffer").Buffer)},{buffer:5}],5:[function(C,J,A){function e(a,b,h){if(!(this instanceof e))return new e(a,b,h);var w=typeof a;if("number"===w)var y=0>>0:0;else if("string"===w){if("base64"===b)for(a=(a.trim?a.trim():a.replace(/^\s+|\s+$/g,"")).replace(L,"");0!==a.length%4;)a+="=";y=e.byteLength(a,b)}else if("object"===w&&null!==a)"Buffer"===a.type&&z(a.data)&&(a=a.data),y=0<+a.length?Math.floor(+a.length):0;else throw new TypeError("must start with number, buffer, array or string"); +if(this.length>G)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+G.toString(16)+" bytes");if(e.TYPED_ARRAY_SUPPORT)var I=e._augment(new Uint8Array(y));else I=this,I.length=y,I._isBuffer=!0;if(e.TYPED_ARRAY_SUPPORT&&"number"===typeof a.byteLength)I._set(a);else{var K=a;if(z(K)||e.isBuffer(K)||K&&"object"===typeof K&&"number"===typeof K.length)if(e.isBuffer(a))for(b=0;ba)throw new RangeError("offset is not uint");if(a+b>h)throw new RangeError("Trying to access beyond buffer length");}function m(a,b,h,w,y,I){if(!e.isBuffer(a))throw new TypeError("buffer must be a Buffer instance");if(b>y||ba.length)throw new TypeError("index out of range"); +}function f(a,b,h,w){0>b&&(b=65535+b+1);for(var y=0,I=Math.min(a.length-h,2);y>>8*(w?y:1-y)}function c(a,b,h,w){0>b&&(b=4294967295+b+1);for(var y=0,I=Math.min(a.length-h,4);y>>8*(w?y:3-y)&255}function l(a,b,h,w,y,I){if(b>y||ba.length)throw new TypeError("index out of range");}function q(a,b,h,w,y){y||l(a,b,h,4,3.4028234663852886E38,-3.4028234663852886E38);v.write(a,b,h,w,23,4);return h+4}function r(a, +b,h,w,y){y||l(a,b,h,8,1.7976931348623157E308,-1.7976931348623157E308);v.write(a,b,h,w,52,8);return h+8}function k(a){for(var b=[],h=0;h=w)b.push(w);else{var y=h;55296<=w&&57343>=w&&h++;w=encodeURIComponent(a.slice(y,h+1)).substr(1).split("%");for(y=0;y=b.length||y>=a.length);y++)b[y+ +h]=a[y];return y}function g(a){try{return decodeURIComponent(a)}catch(b){return String.fromCharCode(65533)}}var n=C("base64-js"),v=C("ieee754"),z=C("is-array");A.Buffer=e;A.SlowBuffer=e;A.INSPECT_MAX_BYTES=50;e.poolSize=8192;var G=1073741823;e.TYPED_ARRAY_SUPPORT=function(){try{var a=new ArrayBuffer(0),b=new Uint8Array(a);b.foo=function(){return 42};return 42===b.foo()&&"function"===typeof b.subarray&&0===(new Uint8Array(1)).subarray(1,1).byteLength}catch(h){return!1}}();e.isBuffer=function(a){return!(null== +a||!a._isBuffer)};e.compare=function(a,b){if(!e.isBuffer(a)||!e.isBuffer(b))throw new TypeError("Arguments must be Buffers");for(var h=a.length,w=b.length,y=0,I=Math.min(h,w);y>>1;break;case "utf8":case "utf-8":h=k(a).length;break;case "base64":h=n.toByteArray(a).length; +break;default:h=a.length}return h};e.prototype.length=void 0;e.prototype.parent=void 0;e.prototype.toString=function(a,b,h){var w=!1;b>>>=0;h=void 0===h||Infinity===h?this.length:h>>>0;a||(a="utf8");0>b&&(b=0);h>this.length&&(h=this.length);if(h<=b)return"";for(;;)switch(a){case "hex":a=b;b=h;h=this.length;if(!a||0>a)a=0;if(!b||0>b||b>h)b=h;w="";for(h=a;hw?"0"+w.toString(16):w.toString(16),w=a+w;return w;case "utf8":case "utf-8":w=a="";for(h=Math.min(this.length,h);b= +this[b]?(a+=g(w)+String.fromCharCode(this[b]),w=""):w+="%"+this[b].toString(16);return a+g(w);case "ascii":return p(this,b,h);case "binary":return p(this,b,h);case "base64":return b=0===b&&h===this.length?n.fromByteArray(this):n.fromByteArray(this.slice(b,h)),b;case "ucs2":case "ucs-2":case "utf16le":case "utf-16le":b=this.slice(b,h);h="";for(a=0;ab&&(a+=" ... "));return""};e.prototype.compare=function(a){if(!e.isBuffer(a))throw new TypeError("Argument must be a Buffer");return e.compare(this,a)};e.prototype.get=function(a){console.log(".get() is deprecated. Access using array indexes instead."); +return this.readUInt8(a)};e.prototype.set=function(a,b){console.log(".set() is deprecated. Access using array indexes instead.");return this.writeUInt8(a,b)};e.prototype.write=function(a,b,h,w){if(isFinite(b))isFinite(h)||(w=h,h=void 0);else{var y=w;w=b;b=h;h=y}b=Number(b)||0;y=this.length-b;h?(h=Number(h),h>y&&(h=y)):h=y;w=String(w||"utf8").toLowerCase();switch(w){case "hex":b=Number(b)||0;w=this.length-b;h?(h=Number(h),h>w&&(h=w)):h=w;w=a.length;if(0!==w%2)throw Error("Invalid hex string");h>w/ +2&&(h=w/2);for(w=0;w>8;K%=256;y.push(K);y.push(w)}a=d(y,this,b,h,2);break;default:throw new TypeError("Unknown encoding: "+ +w);}return a};e.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};e.prototype.slice=function(a,b){var h=this.length;a=~~a;b=void 0===b?h:~~b;0>a?(a+=h,0>a&&(a=0)):a>h&&(a=h);0>b?(b+=h,0>b&&(b=0)):b>h&&(b=h);b>>=0;h||m(this,a,b,1,255,0);e.TYPED_ARRAY_SUPPORT||(a=Math.floor(a));this[b]=a;return b+1};e.prototype.writeUInt16LE=function(a, +b,h){a=+a;b>>>=0;h||m(this,a,b,2,65535,0);e.TYPED_ARRAY_SUPPORT?(this[b]=a,this[b+1]=a>>>8):f(this,a,b,!0);return b+2};e.prototype.writeUInt16BE=function(a,b,h){a=+a;b>>>=0;h||m(this,a,b,2,65535,0);e.TYPED_ARRAY_SUPPORT?(this[b]=a>>>8,this[b+1]=a):f(this,a,b,!1);return b+2};e.prototype.writeUInt32LE=function(a,b,h){a=+a;b>>>=0;h||m(this,a,b,4,4294967295,0);e.TYPED_ARRAY_SUPPORT?(this[b+3]=a>>>24,this[b+2]=a>>>16,this[b+1]=a>>>8,this[b]=a):c(this,a,b,!0);return b+4};e.prototype.writeUInt32BE=function(a, +b,h){a=+a;b>>>=0;h||m(this,a,b,4,4294967295,0);e.TYPED_ARRAY_SUPPORT?(this[b]=a>>>24,this[b+1]=a>>>16,this[b+2]=a>>>8,this[b+3]=a):c(this,a,b,!1);return b+4};e.prototype.writeInt8=function(a,b,h){a=+a;b>>>=0;h||m(this,a,b,1,127,-128);e.TYPED_ARRAY_SUPPORT||(a=Math.floor(a));0>a&&(a=255+a+1);this[b]=a;return b+1};e.prototype.writeInt16LE=function(a,b,h){a=+a;b>>>=0;h||m(this,a,b,2,32767,-32768);e.TYPED_ARRAY_SUPPORT?(this[b]=a,this[b+1]=a>>>8):f(this,a,b,!0);return b+2};e.prototype.writeInt16BE=function(a, +b,h){a=+a;b>>>=0;h||m(this,a,b,2,32767,-32768);e.TYPED_ARRAY_SUPPORT?(this[b]=a>>>8,this[b+1]=a):f(this,a,b,!1);return b+2};e.prototype.writeInt32LE=function(a,b,h){a=+a;b>>>=0;h||m(this,a,b,4,2147483647,-2147483648);e.TYPED_ARRAY_SUPPORT?(this[b]=a,this[b+1]=a>>>8,this[b+2]=a>>>16,this[b+3]=a>>>24):c(this,a,b,!0);return b+4};e.prototype.writeInt32BE=function(a,b,h){a=+a;b>>>=0;h||m(this,a,b,4,2147483647,-2147483648);0>a&&(a=4294967295+a+1);e.TYPED_ARRAY_SUPPORT?(this[b]=a>>>24,this[b+1]=a>>>16,this[b+ +2]=a>>>8,this[b+3]=a):c(this,a,b,!1);return b+4};e.prototype.writeFloatLE=function(a,b,h){return q(this,a,b,!0,h)};e.prototype.writeFloatBE=function(a,b,h){return q(this,a,b,!1,h)};e.prototype.writeDoubleLE=function(a,b,h){return r(this,a,b,!0,h)};e.prototype.writeDoubleBE=function(a,b,h){return r(this,a,b,!1,h)};e.prototype.copy=function(a,b,h,w){h||(h=0);w||0===w||(w=this.length);b||(b=0);if(w!==h&&0!==a.length&&0!==this.length){if(wb||b>=a.length)throw new TypeError("targetStart out of bounds"); +if(0>h||h>=this.length)throw new TypeError("sourceStart out of bounds");if(0>w||w>this.length)throw new TypeError("sourceEnd out of bounds");w>this.length&&(w=this.length);a.length-bw||!e.TYPED_ARRAY_SUPPORT)for(var y=0;yb||b>=this.length)throw new TypeError("start out of bounds"); +if(0>h||h>this.length)throw new TypeError("end out of bounds");if("number"===typeof a)for(;b>1,r=-7;f=t?f-1:0;var k=t?-1:1,u=e[p+f];f+=k;t=u&(1<<-r)-1;u>>=-r;for(r+=c;0>=-r;for(r+=m;0>1,u=23===f?Math.pow(2,-24)-Math.pow(2,-77):0;c=m?0:c-1;var d=m?1:-1,g=0>p||0===p&&0>1/p?1:0;p=Math.abs(p);isNaN(p)||Infinity===p?(p=isNaN(p)?1:0,m=r):(m=Math.floor(Math.log(p)/Math.LN2),1>p*(l=Math.pow(2,-m))&&(m--,l*=2),p=1<=m+k?p+u/l:p+u*Math.pow(2,1-k),2<=p*l&&(m++,l/=2),m+k>=r?(p=0,m=r):1<=m+k?(p=(p*l-1)*Math.pow(2,f),m+=k):(p=p*Math.pow(2,k-1)*Math.pow(2,f),m=0));for(;8<=f;e[t+c]=p&255,c+= +d,p/=256,f-=8);m=m<z?[]:n.slice(v,z-v+1)}c=A.resolve(c).substr(1);l=A.resolve(l).substr(1); +for(var r=q(c.split("/")),k=q(l.split("/")),u=Math.min(r.length,k.length),d=u,g=0;gl&&(l=c.length+l);return c.substr(l,q)}}).call(this,C("g5I+bs"))},{"g5I+bs":9}],9:[function(C,J,A){function e(){}C=J.exports={};C.nextTick=function(){if("undefined"!==typeof window&&window.setImmediate)return function(t){return window.setImmediate(t)};if("undefined"!==typeof window&&window.postMessage&&window.addEventListener){var p=[];window.addEventListener("message",function(t){var m=t.source;m!==window&&null!== +m||"process-tick"!==t.data||(t.stopPropagation(),0p?(-p<<1)+1:p<<1;do p=m&31,m>>>=5,0=f)throw Error("Expected more digits in base 64 VLQ value.");var q=e.decode(p.charCodeAt(t++));if(-1===q)throw Error("Invalid base64 digit: "+p.charAt(t-1));var r=!!(q&32);q&=31;c+=q<>1;m.value=1===(c&1)?-p:p;m.rest=t}},{"./base64":12}],12:[function(C, +J,A){var e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".split("");A.encode=function(p){if(0<=p&&p=p?p-65:97<=p&&122>=p?p-97+26:48<=p&&57>=p?p-48+52:43==p?62:47==p?63:-1}},{}],13:[function(C,J,A){function e(p,t,m,f,c,l){var q=Math.floor((t-p)/2)+p,r=c(m,f[q],!0);return 0===r?q:0p?-1:p}A.GREATEST_LOWER_BOUND=1;A.LEAST_UPPER_BOUND=2;A.search=function(p,t,m,f){if(0===t.length)return-1;p=e(-1,t.length,p,t,m,f||A.GREATEST_LOWER_BOUND);if(0>p)return-1;for(;0<=p-1&&0===m(t[p],t[p-1],!0);)--p;return p}},{}],14:[function(C,J,A){function e(){this._array=[];this._sorted=!0;this._last={generatedLine:-1,generatedColumn:0}}var p=C("./util");e.prototype.unsortedForEach=function(t,m){this._array.forEach(t,m)};e.prototype.add=function(t){var m=this._last,f=m.generatedLine, +c=t.generatedLine,l=m.generatedColumn,q=t.generatedColumn;c>f||c==f&&q>=l||0>=p.compareByGeneratedPositionsInflated(m,t)?this._last=t:this._sorted=!1;this._array.push(t)};e.prototype.toArray=function(){this._sorted||(this._array.sort(p.compareByGeneratedPositionsInflated),this._sorted=!0);return this._array};A.MappingList=e},{"./util":19}],15:[function(C,J,A){function e(t,m,f){var c=t[m];t[m]=t[f];t[f]=c}function p(t,m,f,c){if(f=m(t[r],q)&&(l+=1,e(t,l,r));e(t,l+1,r);l+=1;p(t,m,f,l-1);p(t,m,l+1,c)}}A.quickSort=function(t,m){p(t,m,0,t.length-1)}},{}],16:[function(C,J,A){function e(k,u){var d=k;"string"===typeof k&&(d=f.parseSourceMapInput(k));return null!=d.sections?new m(d,u):new p(d,u)}function p(k,u){var d=k;"string"===typeof k&&(d=f.parseSourceMapInput(k));var g=f.getArg(d,"version"),n=f.getArg(d,"sources"),v=f.getArg(d,"names",[]),z=f.getArg(d,"sourceRoot",null),G=f.getArg(d,"sourcesContent",null),D=f.getArg(d, +"mappings");d=f.getArg(d,"file",null);if(g!=this._version)throw Error("Unsupported version: "+g);z&&(z=f.normalize(z));n=n.map(String).map(f.normalize).map(function(L){return z&&f.isAbsolute(z)&&f.isAbsolute(L)?f.relative(z,L):L});this._names=l.fromArray(v.map(String),!0);this._sources=l.fromArray(n,!0);this.sourceRoot=z;this.sourcesContent=G;this._mappings=D;this._sourceMapURL=u;this.file=d}function t(){this.generatedColumn=this.generatedLine=0;this.name=this.originalColumn=this.originalLine=this.source= +null}function m(k,u){var d=k;"string"===typeof k&&(d=f.parseSourceMapInput(k));var g=f.getArg(d,"version");d=f.getArg(d,"sections");if(g!=this._version)throw Error("Unsupported version: "+g);this._sources=new l;this._names=new l;var n={line:-1,column:0};this._sections=d.map(function(v){if(v.url)throw Error("Support for url field in sections not implemented.");var z=f.getArg(v,"offset"),G=f.getArg(z,"line"),D=f.getArg(z,"column");if(G=k[d])throw new TypeError("Line must be greater than or equal to 1, got "+ +k[d]);if(0>k[g])throw new TypeError("Column must be greater than or equal to 0, got "+k[g]);return c.search(k,u,n,v)};p.prototype.computeColumnSpans=function(){for(var k=0;k=this._sources.size()&&!this.sourcesContent.some(function(k){return null==k}):!1};p.prototype.sourceContentFor=function(k,u){if(!this.sourcesContent)return null;var d=k;null!=this.sourceRoot&&(d=f.relative(this.sourceRoot,d));if(this._sources.has(d))return this.sourcesContent[this._sources.indexOf(d)]; +var g=this.sources,n;for(n=0;n +g||95!==d.charCodeAt(g-1)||95!==d.charCodeAt(g-2)||111!==d.charCodeAt(g-3)||116!==d.charCodeAt(g-4)||111!==d.charCodeAt(g-5)||114!==d.charCodeAt(g-6)||112!==d.charCodeAt(g-7)||95!==d.charCodeAt(g-8)||95!==d.charCodeAt(g-9))return!1;for(g-=10;0<=g;g--)if(36!==d.charCodeAt(g))return!1;return!0}function r(d,g){return d===g?0:null===d?1:null===g?-1:d>g?1:-1}A.getArg=function(d,g,n){if(g in d)return d[g];if(3===arguments.length)return n;throw Error('"'+g+'" is a required argument.');};var k=/^(?:([\w+\-.]+):)?\/\/(?:(\w+:\w+)@)?([\w.-]*)(?::(\d+))?(.*)$/, +u=/^data:.+,.+$/;A.urlParse=e;A.urlGenerate=p;A.normalize=t;A.join=m;A.isAbsolute=function(d){return"/"===d.charAt(0)||k.test(d)};A.relative=function(d,g){""===d&&(d=".");d=d.replace(/\/$/,"");for(var n=0;0!==g.indexOf(d+"/");){var v=d.lastIndexOf("/");if(0>v)return g;d=d.slice(0,v);if(d.match(/^([^\/]+:\/)?\/*$/))return g;++n}return Array(n+1).join("../")+g.substr(d.length+1)};C=!("__proto__"in Object.create(null));A.toSetString=C?f:c;A.fromSetString=C?f:l;A.compareByOriginalPositions=function(d, +g,n){var v=r(d.source,g.source);if(0!==v)return v;v=d.originalLine-g.originalLine;if(0!==v)return v;v=d.originalColumn-g.originalColumn;if(0!==v||n)return v;v=d.generatedColumn-g.generatedColumn;if(0!==v)return v;v=d.generatedLine-g.generatedLine;return 0!==v?v:r(d.name,g.name)};A.compareByGeneratedPositionsDeflated=function(d,g,n){var v=d.generatedLine-g.generatedLine;if(0!==v)return v;v=d.generatedColumn-g.generatedColumn;if(0!==v||n)return v;v=r(d.source,g.source);if(0!==v)return v;v=d.originalLine- +g.originalLine;if(0!==v)return v;v=d.originalColumn-g.originalColumn;return 0!==v?v:r(d.name,g.name)};A.compareByGeneratedPositionsInflated=function(d,g){var n=d.generatedLine-g.generatedLine;if(0!==n)return n;n=d.generatedColumn-g.generatedColumn;if(0!==n)return n;n=r(d.source,g.source);if(0!==n)return n;n=d.originalLine-g.originalLine;if(0!==n)return n;n=d.originalColumn-g.originalColumn;return 0!==n?n:r(d.name,g.name)};A.parseSourceMapInput=function(d){return JSON.parse(d.replace(/^\)]}'[^\n]*\n/, +""))};A.computeSourceURL=function(d,g,n){g=g||"";d&&("/"!==d[d.length-1]&&"/"!==g[0]&&(d+="/"),g=d+g);if(n){d=e(n);if(!d)throw Error("sourceMapURL could not be parsed");d.path&&(n=d.path.lastIndexOf("/"),0<=n&&(d.path=d.path.substring(0,n+1)));g=m(p(d),g)}return t(g)}},{}],20:[function(C,J,A){A.SourceMapGenerator=C("./lib/source-map-generator").SourceMapGenerator;A.SourceMapConsumer=C("./lib/source-map-consumer").SourceMapConsumer;A.SourceNode=C("./lib/source-node").SourceNode},{"./lib/source-map-consumer":16, +"./lib/source-map-generator":17,"./lib/source-node":18}],21:[function(C,J,A){(function(e){function p(){return"browser"===a?!0:"node"===a?!1:"undefined"!==typeof window&&"function"===typeof XMLHttpRequest&&!(window.require&&window.module&&window.process&&"renderer"===window.process.type)}function t(x){return function(B){for(var F=0;F";B=this.getLineNumber();null!=B&&(x+=":"+B,(B= +this.getColumnNumber())&&(x+=":"+B))}B="";var F=this.getFunctionName(),E=!0,H=this.isConstructor();if(this.isToplevel()||H)H?B+="new "+(F||""):F?B+=F:(B+=x,E=!1);else{H=this.getTypeName();"[object Object]"===H&&(H="null");var M=this.getMethodName();F?(H&&0!=F.indexOf(H)&&(B+=H+"."),B+=F,M&&F.indexOf("."+M)!=F.length-M.length-1&&(B+=" [as "+M+"]")):B+=H+"."+(M||"")}E&&(B+=" ("+x+")");return B}function q(x){var B={};Object.getOwnPropertyNames(Object.getPrototypeOf(x)).forEach(function(F){B[F]= +/^(?:is|get)/.test(F)?function(){return x[F].call(x)}:x[F]});B.toString=l;return B}function r(x,B){void 0===B&&(B={nextPosition:null,curPosition:null});if(x.isNative())return B.curPosition=null,x;var F=x.getFileName()||x.getScriptNameOrSourceURL();if(F){var E=x.getLineNumber(),H=x.getColumnNumber()-1,M=/^v(10\.1[6-9]|10\.[2-9][0-9]|10\.[0-9]{3,}|1[2-9]\d*|[2-9]\d|\d{3,}|11\.11)/,S=M.test;var V="object"===typeof e&&null!==e?e.version:"";M=S.call(M,V)?0:62;1===E&&H>M&&!p()&&!x.isEval()&&(H-=M);var O= +f({source:F,line:E,column:H});B.curPosition=O;x=q(x);var T=x.getFunctionName;x.getFunctionName=function(){return null==B.nextPosition?T():B.nextPosition.name||T()};x.getFileName=function(){return O.source};x.getLineNumber=function(){return O.line};x.getColumnNumber=function(){return O.column+1};x.getScriptNameOrSourceURL=function(){return O.source};return x}var Q=x.isEval()&&x.getEvalOrigin();Q&&(Q=c(Q),x=q(x),x.getEvalOrigin=function(){return Q});return x}function k(x,B){L&&(b={},h={});for(var F= +(x.name||"Error")+": "+(x.message||""),E={nextPosition:null,curPosition:null},H=[],M=B.length-1;0<=M;M--)H.push("\n at "+r(B[M],E)),E.nextPosition=E.curPosition;E.curPosition=E.nextPosition=null;return F+H.reverse().join("")}function u(x){var B=/\n at [^(]+ \((.*):(\d+):(\d+)\)/.exec(x.stack);if(B){x=B[1];var F=+B[2];B=+B[3];var E=b[x];if(!E&&v&&v.existsSync(x))try{E=v.readFileSync(x,"utf8")}catch(H){E=""}if(E&&(E=E.split(/(?:\r\n|\r|\n)/)[F-1]))return x+":"+F+"\n"+E+"\n"+Array(B).join(" ")+ +"^"}return null}function d(){var x=e.emit;e.emit=function(B){if("uncaughtException"===B){var F=arguments[1]&&arguments[1].stack,E=0 C:/dir/file + '/'; // file:///root-dir/file -> /root-dir/file + }); + } + if (path in fileContentsCache) { + return fileContentsCache[path]; + } + + var contents = ''; + try { + if (!fs) { + // Use SJAX if we are in the browser + var xhr = new XMLHttpRequest(); + xhr.open('GET', path, /** async */ false); + xhr.send(null); + if (xhr.readyState === 4 && xhr.status === 200) { + contents = xhr.responseText; + } + } else if (fs.existsSync(path)) { + // Otherwise, use the filesystem + contents = fs.readFileSync(path, 'utf8'); + } + } catch (er) { + /* ignore any errors */ + } + + return fileContentsCache[path] = contents; +}); + +// Support URLs relative to a directory, but be careful about a protocol prefix +// in case we are in the browser (i.e. directories may start with "http://" or "file:///") +function supportRelativeURL(file, url) { + if (!file) return url; + var dir = path.dirname(file); + var match = /^\w+:\/\/[^\/]*/.exec(dir); + var protocol = match ? match[0] : ''; + var startPath = dir.slice(protocol.length); + if (protocol && /^\/\w\:/.test(startPath)) { + // handle file:///C:/ paths + protocol += '/'; + return protocol + path.resolve(dir.slice(protocol.length), url).replace(/\\/g, '/'); + } + return protocol + path.resolve(dir.slice(protocol.length), url); +} + +function retrieveSourceMapURL(source) { + var fileData; + + if (isInBrowser()) { + try { + var xhr = new XMLHttpRequest(); + xhr.open('GET', source, false); + xhr.send(null); + fileData = xhr.readyState === 4 ? xhr.responseText : null; + + // Support providing a sourceMappingURL via the SourceMap header + var sourceMapHeader = xhr.getResponseHeader("SourceMap") || + xhr.getResponseHeader("X-SourceMap"); + if (sourceMapHeader) { + return sourceMapHeader; + } + } catch (e) { + } + } + + // Get the URL of the source map + fileData = retrieveFile(source); + var re = /(?:\/\/[@#][\s]*sourceMappingURL=([^\s'"]+)[\s]*$)|(?:\/\*[@#][\s]*sourceMappingURL=([^\s*'"]+)[\s]*(?:\*\/)[\s]*$)/mg; + // Keep executing the search to find the *last* sourceMappingURL to avoid + // picking up sourceMappingURLs from comments, strings, etc. + var lastMatch, match; + while (match = re.exec(fileData)) lastMatch = match; + if (!lastMatch) return null; + return lastMatch[1]; +}; + +// Can be overridden by the retrieveSourceMap option to install. Takes a +// generated source filename; returns a {map, optional url} object, or null if +// there is no source map. The map field may be either a string or the parsed +// JSON object (ie, it must be a valid argument to the SourceMapConsumer +// constructor). +var retrieveSourceMap = handlerExec(retrieveMapHandlers); +retrieveMapHandlers.push(function(source) { + var sourceMappingURL = retrieveSourceMapURL(source); + if (!sourceMappingURL) return null; + + // Read the contents of the source map + var sourceMapData; + if (reSourceMap.test(sourceMappingURL)) { + // Support source map URL as a data url + var rawData = sourceMappingURL.slice(sourceMappingURL.indexOf(',') + 1); + sourceMapData = bufferFrom(rawData, "base64").toString(); + sourceMappingURL = source; + } else { + // Support source map URLs relative to the source URL + sourceMappingURL = supportRelativeURL(source, sourceMappingURL); + sourceMapData = retrieveFile(sourceMappingURL); + } + + if (!sourceMapData) { + return null; + } + + return { + url: sourceMappingURL, + map: sourceMapData + }; +}); + +function mapSourcePosition(position) { + var sourceMap = sourceMapCache[position.source]; + if (!sourceMap) { + // Call the (overrideable) retrieveSourceMap function to get the source map. + var urlAndMap = retrieveSourceMap(position.source); + if (urlAndMap) { + sourceMap = sourceMapCache[position.source] = { + url: urlAndMap.url, + map: new SourceMapConsumer(urlAndMap.map) + }; + + // Load all sources stored inline with the source map into the file cache + // to pretend like they are already loaded. They may not exist on disk. + if (sourceMap.map.sourcesContent) { + sourceMap.map.sources.forEach(function(source, i) { + var contents = sourceMap.map.sourcesContent[i]; + if (contents) { + var url = supportRelativeURL(sourceMap.url, source); + fileContentsCache[url] = contents; + } + }); + } + } else { + sourceMap = sourceMapCache[position.source] = { + url: null, + map: null + }; + } + } + + // Resolve the source URL relative to the URL of the source map + if (sourceMap && sourceMap.map && typeof sourceMap.map.originalPositionFor === 'function') { + var originalPosition = sourceMap.map.originalPositionFor(position); + + // Only return the original position if a matching line was found. If no + // matching line is found then we return position instead, which will cause + // the stack trace to print the path and line for the compiled file. It is + // better to give a precise location in the compiled file than a vague + // location in the original file. + if (originalPosition.source !== null) { + originalPosition.source = supportRelativeURL( + sourceMap.url, originalPosition.source); + return originalPosition; + } + } + + return position; +} + +// Parses code generated by FormatEvalOrigin(), a function inside V8: +// https://code.google.com/p/v8/source/browse/trunk/src/messages.js +function mapEvalOrigin(origin) { + // Most eval() calls are in this format + var match = /^eval at ([^(]+) \((.+):(\d+):(\d+)\)$/.exec(origin); + if (match) { + var position = mapSourcePosition({ + source: match[2], + line: +match[3], + column: match[4] - 1 + }); + return 'eval at ' + match[1] + ' (' + position.source + ':' + + position.line + ':' + (position.column + 1) + ')'; + } + + // Parse nested eval() calls using recursion + match = /^eval at ([^(]+) \((.+)\)$/.exec(origin); + if (match) { + return 'eval at ' + match[1] + ' (' + mapEvalOrigin(match[2]) + ')'; + } + + // Make sure we still return useful information if we didn't find anything + return origin; +} + +// This is copied almost verbatim from the V8 source code at +// https://code.google.com/p/v8/source/browse/trunk/src/messages.js. The +// implementation of wrapCallSite() used to just forward to the actual source +// code of CallSite.prototype.toString but unfortunately a new release of V8 +// did something to the prototype chain and broke the shim. The only fix I +// could find was copy/paste. +function CallSiteToString() { + var fileName; + var fileLocation = ""; + if (this.isNative()) { + fileLocation = "native"; + } else { + fileName = this.getScriptNameOrSourceURL(); + if (!fileName && this.isEval()) { + fileLocation = this.getEvalOrigin(); + fileLocation += ", "; // Expecting source position to follow. + } + + if (fileName) { + fileLocation += fileName; + } else { + // Source code does not originate from a file and is not native, but we + // can still get the source position inside the source string, e.g. in + // an eval string. + fileLocation += ""; + } + var lineNumber = this.getLineNumber(); + if (lineNumber != null) { + fileLocation += ":" + lineNumber; + var columnNumber = this.getColumnNumber(); + if (columnNumber) { + fileLocation += ":" + columnNumber; + } + } + } + + var line = ""; + var functionName = this.getFunctionName(); + var addSuffix = true; + var isConstructor = this.isConstructor(); + var isMethodCall = !(this.isToplevel() || isConstructor); + if (isMethodCall) { + var typeName = this.getTypeName(); + // Fixes shim to be backward compatable with Node v0 to v4 + if (typeName === "[object Object]") { + typeName = "null"; + } + var methodName = this.getMethodName(); + if (functionName) { + if (typeName && functionName.indexOf(typeName) != 0) { + line += typeName + "."; + } + line += functionName; + if (methodName && functionName.indexOf("." + methodName) != functionName.length - methodName.length - 1) { + line += " [as " + methodName + "]"; + } + } else { + line += typeName + "." + (methodName || ""); + } + } else if (isConstructor) { + line += "new " + (functionName || ""); + } else if (functionName) { + line += functionName; + } else { + line += fileLocation; + addSuffix = false; + } + if (addSuffix) { + line += " (" + fileLocation + ")"; + } + return line; +} + +function cloneCallSite(frame) { + var object = {}; + Object.getOwnPropertyNames(Object.getPrototypeOf(frame)).forEach(function(name) { + object[name] = /^(?:is|get)/.test(name) ? function() { return frame[name].call(frame); } : frame[name]; + }); + object.toString = CallSiteToString; + return object; +} + +function wrapCallSite(frame, state) { + // provides interface backward compatibility + if (state === undefined) { + state = { nextPosition: null, curPosition: null } + } + if(frame.isNative()) { + state.curPosition = null; + return frame; + } + + // Most call sites will return the source file from getFileName(), but code + // passed to eval() ending in "//# sourceURL=..." will return the source file + // from getScriptNameOrSourceURL() instead + var source = frame.getFileName() || frame.getScriptNameOrSourceURL(); + if (source) { + var line = frame.getLineNumber(); + var column = frame.getColumnNumber() - 1; + + // Fix position in Node where some (internal) code is prepended. + // See https://github.com/evanw/node-source-map-support/issues/36 + // Header removed in node at ^10.16 || >=11.11.0 + // v11 is not an LTS candidate, we can just test the one version with it. + // Test node versions for: 10.16-19, 10.20+, 12-19, 20-99, 100+, or 11.11 + var noHeader = /^v(10\.1[6-9]|10\.[2-9][0-9]|10\.[0-9]{3,}|1[2-9]\d*|[2-9]\d|\d{3,}|11\.11)/; + var headerLength = noHeader.test(globalProcessVersion()) ? 0 : 62; + if (line === 1 && column > headerLength && !isInBrowser() && !frame.isEval()) { + column -= headerLength; + } + + var position = mapSourcePosition({ + source: source, + line: line, + column: column + }); + state.curPosition = position; + frame = cloneCallSite(frame); + var originalFunctionName = frame.getFunctionName; + frame.getFunctionName = function() { + if (state.nextPosition == null) { + return originalFunctionName(); + } + return state.nextPosition.name || originalFunctionName(); + }; + frame.getFileName = function() { return position.source; }; + frame.getLineNumber = function() { return position.line; }; + frame.getColumnNumber = function() { return position.column + 1; }; + frame.getScriptNameOrSourceURL = function() { return position.source; }; + return frame; + } + + // Code called using eval() needs special handling + var origin = frame.isEval() && frame.getEvalOrigin(); + if (origin) { + origin = mapEvalOrigin(origin); + frame = cloneCallSite(frame); + frame.getEvalOrigin = function() { return origin; }; + return frame; + } + + // If we get here then we were unable to change the source position + return frame; +} + +// This function is part of the V8 stack trace API, for more info see: +// https://v8.dev/docs/stack-trace-api +function prepareStackTrace(error, stack) { + if (emptyCacheBetweenOperations) { + fileContentsCache = {}; + sourceMapCache = {}; + } + + var name = error.name || 'Error'; + var message = error.message || ''; + var errorString = name + ": " + message; + + var state = { nextPosition: null, curPosition: null }; + var processedStack = []; + for (var i = stack.length - 1; i >= 0; i--) { + processedStack.push('\n at ' + wrapCallSite(stack[i], state)); + state.nextPosition = state.curPosition; + } + state.curPosition = state.nextPosition = null; + return errorString + processedStack.reverse().join(''); +} + +// Generate position and snippet of original source with pointer +function getErrorSource(error) { + var match = /\n at [^(]+ \((.*):(\d+):(\d+)\)/.exec(error.stack); + if (match) { + var source = match[1]; + var line = +match[2]; + var column = +match[3]; + + // Support the inline sourceContents inside the source map + var contents = fileContentsCache[source]; + + // Support files on disk + if (!contents && fs && fs.existsSync(source)) { + try { + contents = fs.readFileSync(source, 'utf8'); + } catch (er) { + contents = ''; + } + } + + // Format the line from the original source code like node does + if (contents) { + var code = contents.split(/(?:\r\n|\r|\n)/)[line - 1]; + if (code) { + return source + ':' + line + '\n' + code + '\n' + + new Array(column).join(' ') + '^'; + } + } + } + return null; +} + +function printErrorAndExit (error) { + var source = getErrorSource(error); + + // Ensure error is printed synchronously and not truncated + var stderr = globalProcessStderr(); + if (stderr && stderr._handle && stderr._handle.setBlocking) { + stderr._handle.setBlocking(true); + } + + if (source) { + console.error(); + console.error(source); + } + + console.error(error.stack); + globalProcessExit(1); +} + +function shimEmitUncaughtException () { + var origEmit = process.emit; + + process.emit = function (type) { + if (type === 'uncaughtException') { + var hasStack = (arguments[1] && arguments[1].stack); + var hasListeners = (this.listeners(type).length > 0); + + if (hasStack && !hasListeners) { + return printErrorAndExit(arguments[1]); + } + } + + return origEmit.apply(this, arguments); + }; +} + +var originalRetrieveFileHandlers = retrieveFileHandlers.slice(0); +var originalRetrieveMapHandlers = retrieveMapHandlers.slice(0); + +exports.wrapCallSite = wrapCallSite; +exports.getErrorSource = getErrorSource; +exports.mapSourcePosition = mapSourcePosition; +exports.retrieveSourceMap = retrieveSourceMap; + +exports.install = function(options) { + options = options || {}; + + if (options.environment) { + environment = options.environment; + if (["node", "browser", "auto"].indexOf(environment) === -1) { + throw new Error("environment " + environment + " was unknown. Available options are {auto, browser, node}") + } + } + + // Allow sources to be found by methods other than reading the files + // directly from disk. + if (options.retrieveFile) { + if (options.overrideRetrieveFile) { + retrieveFileHandlers.length = 0; + } + + retrieveFileHandlers.unshift(options.retrieveFile); + } + + // Allow source maps to be found by methods other than reading the files + // directly from disk. + if (options.retrieveSourceMap) { + if (options.overrideRetrieveSourceMap) { + retrieveMapHandlers.length = 0; + } + + retrieveMapHandlers.unshift(options.retrieveSourceMap); + } + + // Support runtime transpilers that include inline source maps + if (options.hookRequire && !isInBrowser()) { + // Use dynamicRequire to avoid including in browser bundles + var Module = dynamicRequire(module, 'module'); + var $compile = Module.prototype._compile; + + if (!$compile.__sourceMapSupport) { + Module.prototype._compile = function(content, filename) { + fileContentsCache[filename] = content; + sourceMapCache[filename] = undefined; + return $compile.call(this, content, filename); + }; + + Module.prototype._compile.__sourceMapSupport = true; + } + } + + // Configure options + if (!emptyCacheBetweenOperations) { + emptyCacheBetweenOperations = 'emptyCacheBetweenOperations' in options ? + options.emptyCacheBetweenOperations : false; + } + + // Install the error reformatter + if (!errorFormatterInstalled) { + errorFormatterInstalled = true; + Error.prepareStackTrace = prepareStackTrace; + } + + if (!uncaughtShimInstalled) { + var installHandler = 'handleUncaughtExceptions' in options ? + options.handleUncaughtExceptions : true; + + // Do not override 'uncaughtException' with our own handler in Node.js + // Worker threads. Workers pass the error to the main thread as an event, + // rather than printing something to stderr and exiting. + try { + // We need to use `dynamicRequire` because `require` on it's own will be optimized by WebPack/Browserify. + var worker_threads = dynamicRequire(module, 'worker_threads'); + if (worker_threads.isMainThread === false) { + installHandler = false; + } + } catch(e) {} + + // Provide the option to not install the uncaught exception handler. This is + // to support other uncaught exception handlers (in test frameworks, for + // example). If this handler is not installed and there are no other uncaught + // exception handlers, uncaught exceptions will be caught by node's built-in + // exception handler and the process will still be terminated. However, the + // generated JavaScript code will be shown above the stack trace instead of + // the original source code. + if (installHandler && hasGlobalProcessEventEmitter()) { + uncaughtShimInstalled = true; + shimEmitUncaughtException(); + } + } +}; + +exports.resetRetrieveHandlers = function() { + retrieveFileHandlers.length = 0; + retrieveMapHandlers.length = 0; + + retrieveFileHandlers = originalRetrieveFileHandlers.slice(0); + retrieveMapHandlers = originalRetrieveMapHandlers.slice(0); + + retrieveSourceMap = handlerExec(retrieveMapHandlers); + retrieveFile = handlerExec(retrieveFileHandlers); +} diff --git a/node_modules/source-map/CHANGELOG.md b/node_modules/source-map/CHANGELOG.md new file mode 100644 index 0000000..3a8c066 --- /dev/null +++ b/node_modules/source-map/CHANGELOG.md @@ -0,0 +1,301 @@ +# Change Log + +## 0.5.6 + +* Fix for regression when people were using numbers as names in source maps. See + #236. + +## 0.5.5 + +* Fix "regression" of unsupported, implementation behavior that half the world + happens to have come to depend on. See #235. + +* Fix regression involving function hoisting in SpiderMonkey. See #233. + +## 0.5.4 + +* Large performance improvements to source-map serialization. See #228 and #229. + +## 0.5.3 + +* Do not include unnecessary distribution files. See + commit ef7006f8d1647e0a83fdc60f04f5a7ca54886f86. + +## 0.5.2 + +* Include browser distributions of the library in package.json's `files`. See + issue #212. + +## 0.5.1 + +* Fix latent bugs in IndexedSourceMapConsumer.prototype._parseMappings. See + ff05274becc9e6e1295ed60f3ea090d31d843379. + +## 0.5.0 + +* Node 0.8 is no longer supported. + +* Use webpack instead of dryice for bundling. + +* Big speedups serializing source maps. See pull request #203. + +* Fix a bug with `SourceMapConsumer.prototype.sourceContentFor` and sources that + explicitly start with the source root. See issue #199. + +## 0.4.4 + +* Fix an issue where using a `SourceMapGenerator` after having created a + `SourceMapConsumer` from it via `SourceMapConsumer.fromSourceMap` failed. See + issue #191. + +* Fix an issue with where `SourceMapGenerator` would mistakenly consider + different mappings as duplicates of each other and avoid generating them. See + issue #192. + +## 0.4.3 + +* A very large number of performance improvements, particularly when parsing + source maps. Collectively about 75% of time shaved off of the source map + parsing benchmark! + +* Fix a bug in `SourceMapConsumer.prototype.allGeneratedPositionsFor` and fuzzy + searching in the presence of a column option. See issue #177. + +* Fix a bug with joining a source and its source root when the source is above + the root. See issue #182. + +* Add the `SourceMapConsumer.prototype.hasContentsOfAllSources` method to + determine when all sources' contents are inlined into the source map. See + issue #190. + +## 0.4.2 + +* Add an `.npmignore` file so that the benchmarks aren't pulled down by + dependent projects. Issue #169. + +* Add an optional `column` argument to + `SourceMapConsumer.prototype.allGeneratedPositionsFor` and better handle lines + with no mappings. Issues #172 and #173. + +## 0.4.1 + +* Fix accidentally defining a global variable. #170. + +## 0.4.0 + +* The default direction for fuzzy searching was changed back to its original + direction. See #164. + +* There is now a `bias` option you can supply to `SourceMapConsumer` to control + the fuzzy searching direction. See #167. + +* About an 8% speed up in parsing source maps. See #159. + +* Added a benchmark for parsing and generating source maps. + +## 0.3.0 + +* Change the default direction that searching for positions fuzzes when there is + not an exact match. See #154. + +* Support for environments using json2.js for JSON serialization. See #156. + +## 0.2.0 + +* Support for consuming "indexed" source maps which do not have any remote + sections. See pull request #127. This introduces a minor backwards + incompatibility if you are monkey patching `SourceMapConsumer.prototype` + methods. + +## 0.1.43 + +* Performance improvements for `SourceMapGenerator` and `SourceNode`. See issue + #148 for some discussion and issues #150, #151, and #152 for implementations. + +## 0.1.42 + +* Fix an issue where `SourceNode`s from different versions of the source-map + library couldn't be used in conjunction with each other. See issue #142. + +## 0.1.41 + +* Fix a bug with getting the source content of relative sources with a "./" + prefix. See issue #145 and [Bug 1090768](bugzil.la/1090768). + +* Add the `SourceMapConsumer.prototype.computeColumnSpans` method to compute the + column span of each mapping. + +* Add the `SourceMapConsumer.prototype.allGeneratedPositionsFor` method to find + all generated positions associated with a given original source and line. + +## 0.1.40 + +* Performance improvements for parsing source maps in SourceMapConsumer. + +## 0.1.39 + +* Fix a bug where setting a source's contents to null before any source content + had been set before threw a TypeError. See issue #131. + +## 0.1.38 + +* Fix a bug where finding relative paths from an empty path were creating + absolute paths. See issue #129. + +## 0.1.37 + +* Fix a bug where if the source root was an empty string, relative source paths + would turn into absolute source paths. Issue #124. + +## 0.1.36 + +* Allow the `names` mapping property to be an empty string. Issue #121. + +## 0.1.35 + +* A third optional parameter was added to `SourceNode.fromStringWithSourceMap` + to specify a path that relative sources in the second parameter should be + relative to. Issue #105. + +* If no file property is given to a `SourceMapGenerator`, then the resulting + source map will no longer have a `null` file property. The property will + simply not exist. Issue #104. + +* Fixed a bug where consecutive newlines were ignored in `SourceNode`s. + Issue #116. + +## 0.1.34 + +* Make `SourceNode` work with windows style ("\r\n") newlines. Issue #103. + +* Fix bug involving source contents and the + `SourceMapGenerator.prototype.applySourceMap`. Issue #100. + +## 0.1.33 + +* Fix some edge cases surrounding path joining and URL resolution. + +* Add a third parameter for relative path to + `SourceMapGenerator.prototype.applySourceMap`. + +* Fix issues with mappings and EOLs. + +## 0.1.32 + +* Fixed a bug where SourceMapConsumer couldn't handle negative relative columns + (issue 92). + +* Fixed test runner to actually report number of failed tests as its process + exit code. + +* Fixed a typo when reporting bad mappings (issue 87). + +## 0.1.31 + +* Delay parsing the mappings in SourceMapConsumer until queried for a source + location. + +* Support Sass source maps (which at the time of writing deviate from the spec + in small ways) in SourceMapConsumer. + +## 0.1.30 + +* Do not join source root with a source, when the source is a data URI. + +* Extend the test runner to allow running single specific test files at a time. + +* Performance improvements in `SourceNode.prototype.walk` and + `SourceMapConsumer.prototype.eachMapping`. + +* Source map browser builds will now work inside Workers. + +* Better error messages when attempting to add an invalid mapping to a + `SourceMapGenerator`. + +## 0.1.29 + +* Allow duplicate entries in the `names` and `sources` arrays of source maps + (usually from TypeScript) we are parsing. Fixes github issue 72. + +## 0.1.28 + +* Skip duplicate mappings when creating source maps from SourceNode; github + issue 75. + +## 0.1.27 + +* Don't throw an error when the `file` property is missing in SourceMapConsumer, + we don't use it anyway. + +## 0.1.26 + +* Fix SourceNode.fromStringWithSourceMap for empty maps. Fixes github issue 70. + +## 0.1.25 + +* Make compatible with browserify + +## 0.1.24 + +* Fix issue with absolute paths and `file://` URIs. See + https://bugzilla.mozilla.org/show_bug.cgi?id=885597 + +## 0.1.23 + +* Fix issue with absolute paths and sourcesContent, github issue 64. + +## 0.1.22 + +* Ignore duplicate mappings in SourceMapGenerator. Fixes github issue 21. + +## 0.1.21 + +* Fixed handling of sources that start with a slash so that they are relative to + the source root's host. + +## 0.1.20 + +* Fixed github issue #43: absolute URLs aren't joined with the source root + anymore. + +## 0.1.19 + +* Using Travis CI to run tests. + +## 0.1.18 + +* Fixed a bug in the handling of sourceRoot. + +## 0.1.17 + +* Added SourceNode.fromStringWithSourceMap. + +## 0.1.16 + +* Added missing documentation. + +* Fixed the generating of empty mappings in SourceNode. + +## 0.1.15 + +* Added SourceMapGenerator.applySourceMap. + +## 0.1.14 + +* The sourceRoot is now handled consistently. + +## 0.1.13 + +* Added SourceMapGenerator.fromSourceMap. + +## 0.1.12 + +* SourceNode now generates empty mappings too. + +## 0.1.11 + +* Added name support to SourceNode. + +## 0.1.10 + +* Added sourcesContent support to the customer and generator. diff --git a/node_modules/source-map/LICENSE b/node_modules/source-map/LICENSE new file mode 100644 index 0000000..ed1b7cf --- /dev/null +++ b/node_modules/source-map/LICENSE @@ -0,0 +1,28 @@ + +Copyright (c) 2009-2011, Mozilla Foundation and contributors +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +* Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +* Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +* Neither the names of the Mozilla Foundation nor the names of project + contributors may be used to endorse or promote products derived from this + software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/node_modules/source-map/README.md b/node_modules/source-map/README.md new file mode 100644 index 0000000..fea4beb --- /dev/null +++ b/node_modules/source-map/README.md @@ -0,0 +1,742 @@ +# Source Map + +[![Build Status](https://travis-ci.org/mozilla/source-map.png?branch=master)](https://travis-ci.org/mozilla/source-map) + +[![NPM](https://nodei.co/npm/source-map.png?downloads=true&downloadRank=true)](https://www.npmjs.com/package/source-map) + +This is a library to generate and consume the source map format +[described here][format]. + +[format]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit + +## Use with Node + + $ npm install source-map + +## Use on the Web + + + +-------------------------------------------------------------------------------- + + + + + +## Table of Contents + +- [Examples](#examples) + - [Consuming a source map](#consuming-a-source-map) + - [Generating a source map](#generating-a-source-map) + - [With SourceNode (high level API)](#with-sourcenode-high-level-api) + - [With SourceMapGenerator (low level API)](#with-sourcemapgenerator-low-level-api) +- [API](#api) + - [SourceMapConsumer](#sourcemapconsumer) + - [new SourceMapConsumer(rawSourceMap)](#new-sourcemapconsumerrawsourcemap) + - [SourceMapConsumer.prototype.computeColumnSpans()](#sourcemapconsumerprototypecomputecolumnspans) + - [SourceMapConsumer.prototype.originalPositionFor(generatedPosition)](#sourcemapconsumerprototypeoriginalpositionforgeneratedposition) + - [SourceMapConsumer.prototype.generatedPositionFor(originalPosition)](#sourcemapconsumerprototypegeneratedpositionfororiginalposition) + - [SourceMapConsumer.prototype.allGeneratedPositionsFor(originalPosition)](#sourcemapconsumerprototypeallgeneratedpositionsfororiginalposition) + - [SourceMapConsumer.prototype.hasContentsOfAllSources()](#sourcemapconsumerprototypehascontentsofallsources) + - [SourceMapConsumer.prototype.sourceContentFor(source[, returnNullOnMissing])](#sourcemapconsumerprototypesourcecontentforsource-returnnullonmissing) + - [SourceMapConsumer.prototype.eachMapping(callback, context, order)](#sourcemapconsumerprototypeeachmappingcallback-context-order) + - [SourceMapGenerator](#sourcemapgenerator) + - [new SourceMapGenerator([startOfSourceMap])](#new-sourcemapgeneratorstartofsourcemap) + - [SourceMapGenerator.fromSourceMap(sourceMapConsumer)](#sourcemapgeneratorfromsourcemapsourcemapconsumer) + - [SourceMapGenerator.prototype.addMapping(mapping)](#sourcemapgeneratorprototypeaddmappingmapping) + - [SourceMapGenerator.prototype.setSourceContent(sourceFile, sourceContent)](#sourcemapgeneratorprototypesetsourcecontentsourcefile-sourcecontent) + - [SourceMapGenerator.prototype.applySourceMap(sourceMapConsumer[, sourceFile[, sourceMapPath]])](#sourcemapgeneratorprototypeapplysourcemapsourcemapconsumer-sourcefile-sourcemappath) + - [SourceMapGenerator.prototype.toString()](#sourcemapgeneratorprototypetostring) + - [SourceNode](#sourcenode) + - [new SourceNode([line, column, source[, chunk[, name]]])](#new-sourcenodeline-column-source-chunk-name) + - [SourceNode.fromStringWithSourceMap(code, sourceMapConsumer[, relativePath])](#sourcenodefromstringwithsourcemapcode-sourcemapconsumer-relativepath) + - [SourceNode.prototype.add(chunk)](#sourcenodeprototypeaddchunk) + - [SourceNode.prototype.prepend(chunk)](#sourcenodeprototypeprependchunk) + - [SourceNode.prototype.setSourceContent(sourceFile, sourceContent)](#sourcenodeprototypesetsourcecontentsourcefile-sourcecontent) + - [SourceNode.prototype.walk(fn)](#sourcenodeprototypewalkfn) + - [SourceNode.prototype.walkSourceContents(fn)](#sourcenodeprototypewalksourcecontentsfn) + - [SourceNode.prototype.join(sep)](#sourcenodeprototypejoinsep) + - [SourceNode.prototype.replaceRight(pattern, replacement)](#sourcenodeprototypereplacerightpattern-replacement) + - [SourceNode.prototype.toString()](#sourcenodeprototypetostring) + - [SourceNode.prototype.toStringWithSourceMap([startOfSourceMap])](#sourcenodeprototypetostringwithsourcemapstartofsourcemap) + + + +## Examples + +### Consuming a source map + +```js +var rawSourceMap = { + version: 3, + file: 'min.js', + names: ['bar', 'baz', 'n'], + sources: ['one.js', 'two.js'], + sourceRoot: 'http://example.com/www/js/', + mappings: 'CAAC,IAAI,IAAM,SAAUA,GAClB,OAAOC,IAAID;CCDb,IAAI,IAAM,SAAUE,GAClB,OAAOA' +}; + +var smc = new SourceMapConsumer(rawSourceMap); + +console.log(smc.sources); +// [ 'http://example.com/www/js/one.js', +// 'http://example.com/www/js/two.js' ] + +console.log(smc.originalPositionFor({ + line: 2, + column: 28 +})); +// { source: 'http://example.com/www/js/two.js', +// line: 2, +// column: 10, +// name: 'n' } + +console.log(smc.generatedPositionFor({ + source: 'http://example.com/www/js/two.js', + line: 2, + column: 10 +})); +// { line: 2, column: 28 } + +smc.eachMapping(function (m) { + // ... +}); +``` + +### Generating a source map + +In depth guide: +[**Compiling to JavaScript, and Debugging with Source Maps**](https://hacks.mozilla.org/2013/05/compiling-to-javascript-and-debugging-with-source-maps/) + +#### With SourceNode (high level API) + +```js +function compile(ast) { + switch (ast.type) { + case 'BinaryExpression': + return new SourceNode( + ast.location.line, + ast.location.column, + ast.location.source, + [compile(ast.left), " + ", compile(ast.right)] + ); + case 'Literal': + return new SourceNode( + ast.location.line, + ast.location.column, + ast.location.source, + String(ast.value) + ); + // ... + default: + throw new Error("Bad AST"); + } +} + +var ast = parse("40 + 2", "add.js"); +console.log(compile(ast).toStringWithSourceMap({ + file: 'add.js' +})); +// { code: '40 + 2', +// map: [object SourceMapGenerator] } +``` + +#### With SourceMapGenerator (low level API) + +```js +var map = new SourceMapGenerator({ + file: "source-mapped.js" +}); + +map.addMapping({ + generated: { + line: 10, + column: 35 + }, + source: "foo.js", + original: { + line: 33, + column: 2 + }, + name: "christopher" +}); + +console.log(map.toString()); +// '{"version":3,"file":"source-mapped.js","sources":["foo.js"],"names":["christopher"],"mappings":";;;;;;;;;mCAgCEA"}' +``` + +## API + +Get a reference to the module: + +```js +// Node.js +var sourceMap = require('source-map'); + +// Browser builds +var sourceMap = window.sourceMap; + +// Inside Firefox +const sourceMap = require("devtools/toolkit/sourcemap/source-map.js"); +``` + +### SourceMapConsumer + +A SourceMapConsumer instance represents a parsed source map which we can query +for information about the original file positions by giving it a file position +in the generated source. + +#### new SourceMapConsumer(rawSourceMap) + +The only parameter is the raw source map (either as a string which can be +`JSON.parse`'d, or an object). According to the spec, source maps have the +following attributes: + +* `version`: Which version of the source map spec this map is following. + +* `sources`: An array of URLs to the original source files. + +* `names`: An array of identifiers which can be referenced by individual + mappings. + +* `sourceRoot`: Optional. The URL root from which all sources are relative. + +* `sourcesContent`: Optional. An array of contents of the original source files. + +* `mappings`: A string of base64 VLQs which contain the actual mappings. + +* `file`: Optional. The generated filename this source map is associated with. + +```js +var consumer = new sourceMap.SourceMapConsumer(rawSourceMapJsonData); +``` + +#### SourceMapConsumer.prototype.computeColumnSpans() + +Compute the last column for each generated mapping. The last column is +inclusive. + +```js +// Before: +consumer.allGeneratedPositionsFor({ line: 2, source: "foo.coffee" }) +// [ { line: 2, +// column: 1 }, +// { line: 2, +// column: 10 }, +// { line: 2, +// column: 20 } ] + +consumer.computeColumnSpans(); + +// After: +consumer.allGeneratedPositionsFor({ line: 2, source: "foo.coffee" }) +// [ { line: 2, +// column: 1, +// lastColumn: 9 }, +// { line: 2, +// column: 10, +// lastColumn: 19 }, +// { line: 2, +// column: 20, +// lastColumn: Infinity } ] + +``` + +#### SourceMapConsumer.prototype.originalPositionFor(generatedPosition) + +Returns the original source, line, and column information for the generated +source's line and column positions provided. The only argument is an object with +the following properties: + +* `line`: The line number in the generated source. Line numbers in + this library are 1-based (note that the underlying source map + specification uses 0-based line numbers -- this library handles the + translation). + +* `column`: The column number in the generated source. Column numbers + in this library are 0-based. + +* `bias`: Either `SourceMapConsumer.GREATEST_LOWER_BOUND` or + `SourceMapConsumer.LEAST_UPPER_BOUND`. Specifies whether to return the closest + element that is smaller than or greater than the one we are searching for, + respectively, if the exact element cannot be found. Defaults to + `SourceMapConsumer.GREATEST_LOWER_BOUND`. + +and an object is returned with the following properties: + +* `source`: The original source file, or null if this information is not + available. + +* `line`: The line number in the original source, or null if this information is + not available. The line number is 1-based. + +* `column`: The column number in the original source, or null if this + information is not available. The column number is 0-based. + +* `name`: The original identifier, or null if this information is not available. + +```js +consumer.originalPositionFor({ line: 2, column: 10 }) +// { source: 'foo.coffee', +// line: 2, +// column: 2, +// name: null } + +consumer.originalPositionFor({ line: 99999999999999999, column: 999999999999999 }) +// { source: null, +// line: null, +// column: null, +// name: null } +``` + +#### SourceMapConsumer.prototype.generatedPositionFor(originalPosition) + +Returns the generated line and column information for the original source, +line, and column positions provided. The only argument is an object with +the following properties: + +* `source`: The filename of the original source. + +* `line`: The line number in the original source. The line number is + 1-based. + +* `column`: The column number in the original source. The column + number is 0-based. + +and an object is returned with the following properties: + +* `line`: The line number in the generated source, or null. The line + number is 1-based. + +* `column`: The column number in the generated source, or null. The + column number is 0-based. + +```js +consumer.generatedPositionFor({ source: "example.js", line: 2, column: 10 }) +// { line: 1, +// column: 56 } +``` + +#### SourceMapConsumer.prototype.allGeneratedPositionsFor(originalPosition) + +Returns all generated line and column information for the original source, line, +and column provided. If no column is provided, returns all mappings +corresponding to a either the line we are searching for or the next closest line +that has any mappings. Otherwise, returns all mappings corresponding to the +given line and either the column we are searching for or the next closest column +that has any offsets. + +The only argument is an object with the following properties: + +* `source`: The filename of the original source. + +* `line`: The line number in the original source. The line number is + 1-based. + +* `column`: Optional. The column number in the original source. The + column number is 0-based. + +and an array of objects is returned, each with the following properties: + +* `line`: The line number in the generated source, or null. The line + number is 1-based. + +* `column`: The column number in the generated source, or null. The + column number is 0-based. + +```js +consumer.allGeneratedpositionsfor({ line: 2, source: "foo.coffee" }) +// [ { line: 2, +// column: 1 }, +// { line: 2, +// column: 10 }, +// { line: 2, +// column: 20 } ] +``` + +#### SourceMapConsumer.prototype.hasContentsOfAllSources() + +Return true if we have the embedded source content for every source listed in +the source map, false otherwise. + +In other words, if this method returns `true`, then +`consumer.sourceContentFor(s)` will succeed for every source `s` in +`consumer.sources`. + +```js +// ... +if (consumer.hasContentsOfAllSources()) { + consumerReadyCallback(consumer); +} else { + fetchSources(consumer, consumerReadyCallback); +} +// ... +``` + +#### SourceMapConsumer.prototype.sourceContentFor(source[, returnNullOnMissing]) + +Returns the original source content for the source provided. The only +argument is the URL of the original source file. + +If the source content for the given source is not found, then an error is +thrown. Optionally, pass `true` as the second param to have `null` returned +instead. + +```js +consumer.sources +// [ "my-cool-lib.clj" ] + +consumer.sourceContentFor("my-cool-lib.clj") +// "..." + +consumer.sourceContentFor("this is not in the source map"); +// Error: "this is not in the source map" is not in the source map + +consumer.sourceContentFor("this is not in the source map", true); +// null +``` + +#### SourceMapConsumer.prototype.eachMapping(callback, context, order) + +Iterate over each mapping between an original source/line/column and a +generated line/column in this source map. + +* `callback`: The function that is called with each mapping. Mappings have the + form `{ source, generatedLine, generatedColumn, originalLine, originalColumn, + name }` + +* `context`: Optional. If specified, this object will be the value of `this` + every time that `callback` is called. + +* `order`: Either `SourceMapConsumer.GENERATED_ORDER` or + `SourceMapConsumer.ORIGINAL_ORDER`. Specifies whether you want to iterate over + the mappings sorted by the generated file's line/column order or the + original's source/line/column order, respectively. Defaults to + `SourceMapConsumer.GENERATED_ORDER`. + +```js +consumer.eachMapping(function (m) { console.log(m); }) +// ... +// { source: 'illmatic.js', +// generatedLine: 1, +// generatedColumn: 0, +// originalLine: 1, +// originalColumn: 0, +// name: null } +// { source: 'illmatic.js', +// generatedLine: 2, +// generatedColumn: 0, +// originalLine: 2, +// originalColumn: 0, +// name: null } +// ... +``` +### SourceMapGenerator + +An instance of the SourceMapGenerator represents a source map which is being +built incrementally. + +#### new SourceMapGenerator([startOfSourceMap]) + +You may pass an object with the following properties: + +* `file`: The filename of the generated source that this source map is + associated with. + +* `sourceRoot`: A root for all relative URLs in this source map. + +* `skipValidation`: Optional. When `true`, disables validation of mappings as + they are added. This can improve performance but should be used with + discretion, as a last resort. Even then, one should avoid using this flag when + running tests, if possible. + +```js +var generator = new sourceMap.SourceMapGenerator({ + file: "my-generated-javascript-file.js", + sourceRoot: "http://example.com/app/js/" +}); +``` + +#### SourceMapGenerator.fromSourceMap(sourceMapConsumer) + +Creates a new `SourceMapGenerator` from an existing `SourceMapConsumer` instance. + +* `sourceMapConsumer` The SourceMap. + +```js +var generator = sourceMap.SourceMapGenerator.fromSourceMap(consumer); +``` + +#### SourceMapGenerator.prototype.addMapping(mapping) + +Add a single mapping from original source line and column to the generated +source's line and column for this source map being created. The mapping object +should have the following properties: + +* `generated`: An object with the generated line and column positions. + +* `original`: An object with the original line and column positions. + +* `source`: The original source file (relative to the sourceRoot). + +* `name`: An optional original token name for this mapping. + +```js +generator.addMapping({ + source: "module-one.scm", + original: { line: 128, column: 0 }, + generated: { line: 3, column: 456 } +}) +``` + +#### SourceMapGenerator.prototype.setSourceContent(sourceFile, sourceContent) + +Set the source content for an original source file. + +* `sourceFile` the URL of the original source file. + +* `sourceContent` the content of the source file. + +```js +generator.setSourceContent("module-one.scm", + fs.readFileSync("path/to/module-one.scm")) +``` + +#### SourceMapGenerator.prototype.applySourceMap(sourceMapConsumer[, sourceFile[, sourceMapPath]]) + +Applies a SourceMap for a source file to the SourceMap. +Each mapping to the supplied source file is rewritten using the +supplied SourceMap. Note: The resolution for the resulting mappings +is the minimum of this map and the supplied map. + +* `sourceMapConsumer`: The SourceMap to be applied. + +* `sourceFile`: Optional. The filename of the source file. + If omitted, sourceMapConsumer.file will be used, if it exists. + Otherwise an error will be thrown. + +* `sourceMapPath`: Optional. The dirname of the path to the SourceMap + to be applied. If relative, it is relative to the SourceMap. + + This parameter is needed when the two SourceMaps aren't in the same + directory, and the SourceMap to be applied contains relative source + paths. If so, those relative source paths need to be rewritten + relative to the SourceMap. + + If omitted, it is assumed that both SourceMaps are in the same directory, + thus not needing any rewriting. (Supplying `'.'` has the same effect.) + +#### SourceMapGenerator.prototype.toString() + +Renders the source map being generated to a string. + +```js +generator.toString() +// '{"version":3,"sources":["module-one.scm"],"names":[],"mappings":"...snip...","file":"my-generated-javascript-file.js","sourceRoot":"http://example.com/app/js/"}' +``` + +### SourceNode + +SourceNodes provide a way to abstract over interpolating and/or concatenating +snippets of generated JavaScript source code, while maintaining the line and +column information associated between those snippets and the original source +code. This is useful as the final intermediate representation a compiler might +use before outputting the generated JS and source map. + +#### new SourceNode([line, column, source[, chunk[, name]]]) + +* `line`: The original line number associated with this source node, or null if + it isn't associated with an original line. The line number is 1-based. + +* `column`: The original column number associated with this source node, or null + if it isn't associated with an original column. The column number + is 0-based. + +* `source`: The original source's filename; null if no filename is provided. + +* `chunk`: Optional. Is immediately passed to `SourceNode.prototype.add`, see + below. + +* `name`: Optional. The original identifier. + +```js +var node = new SourceNode(1, 2, "a.cpp", [ + new SourceNode(3, 4, "b.cpp", "extern int status;\n"), + new SourceNode(5, 6, "c.cpp", "std::string* make_string(size_t n);\n"), + new SourceNode(7, 8, "d.cpp", "int main(int argc, char** argv) {}\n"), +]); +``` + +#### SourceNode.fromStringWithSourceMap(code, sourceMapConsumer[, relativePath]) + +Creates a SourceNode from generated code and a SourceMapConsumer. + +* `code`: The generated code + +* `sourceMapConsumer` The SourceMap for the generated code + +* `relativePath` The optional path that relative sources in `sourceMapConsumer` + should be relative to. + +```js +var consumer = new SourceMapConsumer(fs.readFileSync("path/to/my-file.js.map", "utf8")); +var node = SourceNode.fromStringWithSourceMap(fs.readFileSync("path/to/my-file.js"), + consumer); +``` + +#### SourceNode.prototype.add(chunk) + +Add a chunk of generated JS to this source node. + +* `chunk`: A string snippet of generated JS code, another instance of + `SourceNode`, or an array where each member is one of those things. + +```js +node.add(" + "); +node.add(otherNode); +node.add([leftHandOperandNode, " + ", rightHandOperandNode]); +``` + +#### SourceNode.prototype.prepend(chunk) + +Prepend a chunk of generated JS to this source node. + +* `chunk`: A string snippet of generated JS code, another instance of + `SourceNode`, or an array where each member is one of those things. + +```js +node.prepend("/** Build Id: f783haef86324gf **/\n\n"); +``` + +#### SourceNode.prototype.setSourceContent(sourceFile, sourceContent) + +Set the source content for a source file. This will be added to the +`SourceMap` in the `sourcesContent` field. + +* `sourceFile`: The filename of the source file + +* `sourceContent`: The content of the source file + +```js +node.setSourceContent("module-one.scm", + fs.readFileSync("path/to/module-one.scm")) +``` + +#### SourceNode.prototype.walk(fn) + +Walk over the tree of JS snippets in this node and its children. The walking +function is called once for each snippet of JS and is passed that snippet and +the its original associated source's line/column location. + +* `fn`: The traversal function. + +```js +var node = new SourceNode(1, 2, "a.js", [ + new SourceNode(3, 4, "b.js", "uno"), + "dos", + [ + "tres", + new SourceNode(5, 6, "c.js", "quatro") + ] +]); + +node.walk(function (code, loc) { console.log("WALK:", code, loc); }) +// WALK: uno { source: 'b.js', line: 3, column: 4, name: null } +// WALK: dos { source: 'a.js', line: 1, column: 2, name: null } +// WALK: tres { source: 'a.js', line: 1, column: 2, name: null } +// WALK: quatro { source: 'c.js', line: 5, column: 6, name: null } +``` + +#### SourceNode.prototype.walkSourceContents(fn) + +Walk over the tree of SourceNodes. The walking function is called for each +source file content and is passed the filename and source content. + +* `fn`: The traversal function. + +```js +var a = new SourceNode(1, 2, "a.js", "generated from a"); +a.setSourceContent("a.js", "original a"); +var b = new SourceNode(1, 2, "b.js", "generated from b"); +b.setSourceContent("b.js", "original b"); +var c = new SourceNode(1, 2, "c.js", "generated from c"); +c.setSourceContent("c.js", "original c"); + +var node = new SourceNode(null, null, null, [a, b, c]); +node.walkSourceContents(function (source, contents) { console.log("WALK:", source, ":", contents); }) +// WALK: a.js : original a +// WALK: b.js : original b +// WALK: c.js : original c +``` + +#### SourceNode.prototype.join(sep) + +Like `Array.prototype.join` except for SourceNodes. Inserts the separator +between each of this source node's children. + +* `sep`: The separator. + +```js +var lhs = new SourceNode(1, 2, "a.rs", "my_copy"); +var operand = new SourceNode(3, 4, "a.rs", "="); +var rhs = new SourceNode(5, 6, "a.rs", "orig.clone()"); + +var node = new SourceNode(null, null, null, [ lhs, operand, rhs ]); +var joinedNode = node.join(" "); +``` + +#### SourceNode.prototype.replaceRight(pattern, replacement) + +Call `String.prototype.replace` on the very right-most source snippet. Useful +for trimming white space from the end of a source node, etc. + +* `pattern`: The pattern to replace. + +* `replacement`: The thing to replace the pattern with. + +```js +// Trim trailing white space. +node.replaceRight(/\s*$/, ""); +``` + +#### SourceNode.prototype.toString() + +Return the string representation of this source node. Walks over the tree and +concatenates all the various snippets together to one string. + +```js +var node = new SourceNode(1, 2, "a.js", [ + new SourceNode(3, 4, "b.js", "uno"), + "dos", + [ + "tres", + new SourceNode(5, 6, "c.js", "quatro") + ] +]); + +node.toString() +// 'unodostresquatro' +``` + +#### SourceNode.prototype.toStringWithSourceMap([startOfSourceMap]) + +Returns the string representation of this tree of source nodes, plus a +SourceMapGenerator which contains all the mappings between the generated and +original sources. + +The arguments are the same as those to `new SourceMapGenerator`. + +```js +var node = new SourceNode(1, 2, "a.js", [ + new SourceNode(3, 4, "b.js", "uno"), + "dos", + [ + "tres", + new SourceNode(5, 6, "c.js", "quatro") + ] +]); + +node.toStringWithSourceMap({ file: "my-output-file.js" }) +// { code: 'unodostresquatro', +// map: [object SourceMapGenerator] } +``` diff --git a/node_modules/source-map/dist/source-map.debug.js b/node_modules/source-map/dist/source-map.debug.js new file mode 100644 index 0000000..aad0620 --- /dev/null +++ b/node_modules/source-map/dist/source-map.debug.js @@ -0,0 +1,3234 @@ +(function webpackUniversalModuleDefinition(root, factory) { + if(typeof exports === 'object' && typeof module === 'object') + module.exports = factory(); + else if(typeof define === 'function' && define.amd) + define([], factory); + else if(typeof exports === 'object') + exports["sourceMap"] = factory(); + else + root["sourceMap"] = factory(); +})(this, function() { +return /******/ (function(modules) { // webpackBootstrap +/******/ // The module cache +/******/ var installedModules = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ +/******/ // Check if module is in cache +/******/ if(installedModules[moduleId]) +/******/ return installedModules[moduleId].exports; +/******/ +/******/ // Create a new module (and put it into the cache) +/******/ var module = installedModules[moduleId] = { +/******/ exports: {}, +/******/ id: moduleId, +/******/ loaded: false +/******/ }; +/******/ +/******/ // Execute the module function +/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); +/******/ +/******/ // Flag the module as loaded +/******/ module.loaded = true; +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/******/ +/******/ // expose the modules object (__webpack_modules__) +/******/ __webpack_require__.m = modules; +/******/ +/******/ // expose the module cache +/******/ __webpack_require__.c = installedModules; +/******/ +/******/ // __webpack_public_path__ +/******/ __webpack_require__.p = ""; +/******/ +/******/ // Load entry module and return exports +/******/ return __webpack_require__(0); +/******/ }) +/************************************************************************/ +/******/ ([ +/* 0 */ +/***/ (function(module, exports, __webpack_require__) { + + /* + * Copyright 2009-2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE.txt or: + * http://opensource.org/licenses/BSD-3-Clause + */ + exports.SourceMapGenerator = __webpack_require__(1).SourceMapGenerator; + exports.SourceMapConsumer = __webpack_require__(7).SourceMapConsumer; + exports.SourceNode = __webpack_require__(10).SourceNode; + + +/***/ }), +/* 1 */ +/***/ (function(module, exports, __webpack_require__) { + + /* -*- Mode: js; js-indent-level: 2; -*- */ + /* + * Copyright 2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + */ + + var base64VLQ = __webpack_require__(2); + var util = __webpack_require__(4); + var ArraySet = __webpack_require__(5).ArraySet; + var MappingList = __webpack_require__(6).MappingList; + + /** + * An instance of the SourceMapGenerator represents a source map which is + * being built incrementally. You may pass an object with the following + * properties: + * + * - file: The filename of the generated source. + * - sourceRoot: A root for all relative URLs in this source map. + */ + function SourceMapGenerator(aArgs) { + if (!aArgs) { + aArgs = {}; + } + this._file = util.getArg(aArgs, 'file', null); + this._sourceRoot = util.getArg(aArgs, 'sourceRoot', null); + this._skipValidation = util.getArg(aArgs, 'skipValidation', false); + this._sources = new ArraySet(); + this._names = new ArraySet(); + this._mappings = new MappingList(); + this._sourcesContents = null; + } + + SourceMapGenerator.prototype._version = 3; + + /** + * Creates a new SourceMapGenerator based on a SourceMapConsumer + * + * @param aSourceMapConsumer The SourceMap. + */ + SourceMapGenerator.fromSourceMap = + function SourceMapGenerator_fromSourceMap(aSourceMapConsumer) { + var sourceRoot = aSourceMapConsumer.sourceRoot; + var generator = new SourceMapGenerator({ + file: aSourceMapConsumer.file, + sourceRoot: sourceRoot + }); + aSourceMapConsumer.eachMapping(function (mapping) { + var newMapping = { + generated: { + line: mapping.generatedLine, + column: mapping.generatedColumn + } + }; + + if (mapping.source != null) { + newMapping.source = mapping.source; + if (sourceRoot != null) { + newMapping.source = util.relative(sourceRoot, newMapping.source); + } + + newMapping.original = { + line: mapping.originalLine, + column: mapping.originalColumn + }; + + if (mapping.name != null) { + newMapping.name = mapping.name; + } + } + + generator.addMapping(newMapping); + }); + aSourceMapConsumer.sources.forEach(function (sourceFile) { + var sourceRelative = sourceFile; + if (sourceRoot !== null) { + sourceRelative = util.relative(sourceRoot, sourceFile); + } + + if (!generator._sources.has(sourceRelative)) { + generator._sources.add(sourceRelative); + } + + var content = aSourceMapConsumer.sourceContentFor(sourceFile); + if (content != null) { + generator.setSourceContent(sourceFile, content); + } + }); + return generator; + }; + + /** + * Add a single mapping from original source line and column to the generated + * source's line and column for this source map being created. The mapping + * object should have the following properties: + * + * - generated: An object with the generated line and column positions. + * - original: An object with the original line and column positions. + * - source: The original source file (relative to the sourceRoot). + * - name: An optional original token name for this mapping. + */ + SourceMapGenerator.prototype.addMapping = + function SourceMapGenerator_addMapping(aArgs) { + var generated = util.getArg(aArgs, 'generated'); + var original = util.getArg(aArgs, 'original', null); + var source = util.getArg(aArgs, 'source', null); + var name = util.getArg(aArgs, 'name', null); + + if (!this._skipValidation) { + this._validateMapping(generated, original, source, name); + } + + if (source != null) { + source = String(source); + if (!this._sources.has(source)) { + this._sources.add(source); + } + } + + if (name != null) { + name = String(name); + if (!this._names.has(name)) { + this._names.add(name); + } + } + + this._mappings.add({ + generatedLine: generated.line, + generatedColumn: generated.column, + originalLine: original != null && original.line, + originalColumn: original != null && original.column, + source: source, + name: name + }); + }; + + /** + * Set the source content for a source file. + */ + SourceMapGenerator.prototype.setSourceContent = + function SourceMapGenerator_setSourceContent(aSourceFile, aSourceContent) { + var source = aSourceFile; + if (this._sourceRoot != null) { + source = util.relative(this._sourceRoot, source); + } + + if (aSourceContent != null) { + // Add the source content to the _sourcesContents map. + // Create a new _sourcesContents map if the property is null. + if (!this._sourcesContents) { + this._sourcesContents = Object.create(null); + } + this._sourcesContents[util.toSetString(source)] = aSourceContent; + } else if (this._sourcesContents) { + // Remove the source file from the _sourcesContents map. + // If the _sourcesContents map is empty, set the property to null. + delete this._sourcesContents[util.toSetString(source)]; + if (Object.keys(this._sourcesContents).length === 0) { + this._sourcesContents = null; + } + } + }; + + /** + * Applies the mappings of a sub-source-map for a specific source file to the + * source map being generated. Each mapping to the supplied source file is + * rewritten using the supplied source map. Note: The resolution for the + * resulting mappings is the minimium of this map and the supplied map. + * + * @param aSourceMapConsumer The source map to be applied. + * @param aSourceFile Optional. The filename of the source file. + * If omitted, SourceMapConsumer's file property will be used. + * @param aSourceMapPath Optional. The dirname of the path to the source map + * to be applied. If relative, it is relative to the SourceMapConsumer. + * This parameter is needed when the two source maps aren't in the same + * directory, and the source map to be applied contains relative source + * paths. If so, those relative source paths need to be rewritten + * relative to the SourceMapGenerator. + */ + SourceMapGenerator.prototype.applySourceMap = + function SourceMapGenerator_applySourceMap(aSourceMapConsumer, aSourceFile, aSourceMapPath) { + var sourceFile = aSourceFile; + // If aSourceFile is omitted, we will use the file property of the SourceMap + if (aSourceFile == null) { + if (aSourceMapConsumer.file == null) { + throw new Error( + 'SourceMapGenerator.prototype.applySourceMap requires either an explicit source file, ' + + 'or the source map\'s "file" property. Both were omitted.' + ); + } + sourceFile = aSourceMapConsumer.file; + } + var sourceRoot = this._sourceRoot; + // Make "sourceFile" relative if an absolute Url is passed. + if (sourceRoot != null) { + sourceFile = util.relative(sourceRoot, sourceFile); + } + // Applying the SourceMap can add and remove items from the sources and + // the names array. + var newSources = new ArraySet(); + var newNames = new ArraySet(); + + // Find mappings for the "sourceFile" + this._mappings.unsortedForEach(function (mapping) { + if (mapping.source === sourceFile && mapping.originalLine != null) { + // Check if it can be mapped by the source map, then update the mapping. + var original = aSourceMapConsumer.originalPositionFor({ + line: mapping.originalLine, + column: mapping.originalColumn + }); + if (original.source != null) { + // Copy mapping + mapping.source = original.source; + if (aSourceMapPath != null) { + mapping.source = util.join(aSourceMapPath, mapping.source) + } + if (sourceRoot != null) { + mapping.source = util.relative(sourceRoot, mapping.source); + } + mapping.originalLine = original.line; + mapping.originalColumn = original.column; + if (original.name != null) { + mapping.name = original.name; + } + } + } + + var source = mapping.source; + if (source != null && !newSources.has(source)) { + newSources.add(source); + } + + var name = mapping.name; + if (name != null && !newNames.has(name)) { + newNames.add(name); + } + + }, this); + this._sources = newSources; + this._names = newNames; + + // Copy sourcesContents of applied map. + aSourceMapConsumer.sources.forEach(function (sourceFile) { + var content = aSourceMapConsumer.sourceContentFor(sourceFile); + if (content != null) { + if (aSourceMapPath != null) { + sourceFile = util.join(aSourceMapPath, sourceFile); + } + if (sourceRoot != null) { + sourceFile = util.relative(sourceRoot, sourceFile); + } + this.setSourceContent(sourceFile, content); + } + }, this); + }; + + /** + * A mapping can have one of the three levels of data: + * + * 1. Just the generated position. + * 2. The Generated position, original position, and original source. + * 3. Generated and original position, original source, as well as a name + * token. + * + * To maintain consistency, we validate that any new mapping being added falls + * in to one of these categories. + */ + SourceMapGenerator.prototype._validateMapping = + function SourceMapGenerator_validateMapping(aGenerated, aOriginal, aSource, + aName) { + // When aOriginal is truthy but has empty values for .line and .column, + // it is most likely a programmer error. In this case we throw a very + // specific error message to try to guide them the right way. + // For example: https://github.com/Polymer/polymer-bundler/pull/519 + if (aOriginal && typeof aOriginal.line !== 'number' && typeof aOriginal.column !== 'number') { + throw new Error( + 'original.line and original.column are not numbers -- you probably meant to omit ' + + 'the original mapping entirely and only map the generated position. If so, pass ' + + 'null for the original mapping instead of an object with empty or null values.' + ); + } + + if (aGenerated && 'line' in aGenerated && 'column' in aGenerated + && aGenerated.line > 0 && aGenerated.column >= 0 + && !aOriginal && !aSource && !aName) { + // Case 1. + return; + } + else if (aGenerated && 'line' in aGenerated && 'column' in aGenerated + && aOriginal && 'line' in aOriginal && 'column' in aOriginal + && aGenerated.line > 0 && aGenerated.column >= 0 + && aOriginal.line > 0 && aOriginal.column >= 0 + && aSource) { + // Cases 2 and 3. + return; + } + else { + throw new Error('Invalid mapping: ' + JSON.stringify({ + generated: aGenerated, + source: aSource, + original: aOriginal, + name: aName + })); + } + }; + + /** + * Serialize the accumulated mappings in to the stream of base 64 VLQs + * specified by the source map format. + */ + SourceMapGenerator.prototype._serializeMappings = + function SourceMapGenerator_serializeMappings() { + var previousGeneratedColumn = 0; + var previousGeneratedLine = 1; + var previousOriginalColumn = 0; + var previousOriginalLine = 0; + var previousName = 0; + var previousSource = 0; + var result = ''; + var next; + var mapping; + var nameIdx; + var sourceIdx; + + var mappings = this._mappings.toArray(); + for (var i = 0, len = mappings.length; i < len; i++) { + mapping = mappings[i]; + next = '' + + if (mapping.generatedLine !== previousGeneratedLine) { + previousGeneratedColumn = 0; + while (mapping.generatedLine !== previousGeneratedLine) { + next += ';'; + previousGeneratedLine++; + } + } + else { + if (i > 0) { + if (!util.compareByGeneratedPositionsInflated(mapping, mappings[i - 1])) { + continue; + } + next += ','; + } + } + + next += base64VLQ.encode(mapping.generatedColumn + - previousGeneratedColumn); + previousGeneratedColumn = mapping.generatedColumn; + + if (mapping.source != null) { + sourceIdx = this._sources.indexOf(mapping.source); + next += base64VLQ.encode(sourceIdx - previousSource); + previousSource = sourceIdx; + + // lines are stored 0-based in SourceMap spec version 3 + next += base64VLQ.encode(mapping.originalLine - 1 + - previousOriginalLine); + previousOriginalLine = mapping.originalLine - 1; + + next += base64VLQ.encode(mapping.originalColumn + - previousOriginalColumn); + previousOriginalColumn = mapping.originalColumn; + + if (mapping.name != null) { + nameIdx = this._names.indexOf(mapping.name); + next += base64VLQ.encode(nameIdx - previousName); + previousName = nameIdx; + } + } + + result += next; + } + + return result; + }; + + SourceMapGenerator.prototype._generateSourcesContent = + function SourceMapGenerator_generateSourcesContent(aSources, aSourceRoot) { + return aSources.map(function (source) { + if (!this._sourcesContents) { + return null; + } + if (aSourceRoot != null) { + source = util.relative(aSourceRoot, source); + } + var key = util.toSetString(source); + return Object.prototype.hasOwnProperty.call(this._sourcesContents, key) + ? this._sourcesContents[key] + : null; + }, this); + }; + + /** + * Externalize the source map. + */ + SourceMapGenerator.prototype.toJSON = + function SourceMapGenerator_toJSON() { + var map = { + version: this._version, + sources: this._sources.toArray(), + names: this._names.toArray(), + mappings: this._serializeMappings() + }; + if (this._file != null) { + map.file = this._file; + } + if (this._sourceRoot != null) { + map.sourceRoot = this._sourceRoot; + } + if (this._sourcesContents) { + map.sourcesContent = this._generateSourcesContent(map.sources, map.sourceRoot); + } + + return map; + }; + + /** + * Render the source map being generated to a string. + */ + SourceMapGenerator.prototype.toString = + function SourceMapGenerator_toString() { + return JSON.stringify(this.toJSON()); + }; + + exports.SourceMapGenerator = SourceMapGenerator; + + +/***/ }), +/* 2 */ +/***/ (function(module, exports, __webpack_require__) { + + /* -*- Mode: js; js-indent-level: 2; -*- */ + /* + * Copyright 2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + * + * Based on the Base 64 VLQ implementation in Closure Compiler: + * https://code.google.com/p/closure-compiler/source/browse/trunk/src/com/google/debugging/sourcemap/Base64VLQ.java + * + * Copyright 2011 The Closure Compiler Authors. All rights reserved. + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * * Neither the name of Google Inc. nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + + var base64 = __webpack_require__(3); + + // A single base 64 digit can contain 6 bits of data. For the base 64 variable + // length quantities we use in the source map spec, the first bit is the sign, + // the next four bits are the actual value, and the 6th bit is the + // continuation bit. The continuation bit tells us whether there are more + // digits in this value following this digit. + // + // Continuation + // | Sign + // | | + // V V + // 101011 + + var VLQ_BASE_SHIFT = 5; + + // binary: 100000 + var VLQ_BASE = 1 << VLQ_BASE_SHIFT; + + // binary: 011111 + var VLQ_BASE_MASK = VLQ_BASE - 1; + + // binary: 100000 + var VLQ_CONTINUATION_BIT = VLQ_BASE; + + /** + * Converts from a two-complement value to a value where the sign bit is + * placed in the least significant bit. For example, as decimals: + * 1 becomes 2 (10 binary), -1 becomes 3 (11 binary) + * 2 becomes 4 (100 binary), -2 becomes 5 (101 binary) + */ + function toVLQSigned(aValue) { + return aValue < 0 + ? ((-aValue) << 1) + 1 + : (aValue << 1) + 0; + } + + /** + * Converts to a two-complement value from a value where the sign bit is + * placed in the least significant bit. For example, as decimals: + * 2 (10 binary) becomes 1, 3 (11 binary) becomes -1 + * 4 (100 binary) becomes 2, 5 (101 binary) becomes -2 + */ + function fromVLQSigned(aValue) { + var isNegative = (aValue & 1) === 1; + var shifted = aValue >> 1; + return isNegative + ? -shifted + : shifted; + } + + /** + * Returns the base 64 VLQ encoded value. + */ + exports.encode = function base64VLQ_encode(aValue) { + var encoded = ""; + var digit; + + var vlq = toVLQSigned(aValue); + + do { + digit = vlq & VLQ_BASE_MASK; + vlq >>>= VLQ_BASE_SHIFT; + if (vlq > 0) { + // There are still more digits in this value, so we must make sure the + // continuation bit is marked. + digit |= VLQ_CONTINUATION_BIT; + } + encoded += base64.encode(digit); + } while (vlq > 0); + + return encoded; + }; + + /** + * Decodes the next base 64 VLQ value from the given string and returns the + * value and the rest of the string via the out parameter. + */ + exports.decode = function base64VLQ_decode(aStr, aIndex, aOutParam) { + var strLen = aStr.length; + var result = 0; + var shift = 0; + var continuation, digit; + + do { + if (aIndex >= strLen) { + throw new Error("Expected more digits in base 64 VLQ value."); + } + + digit = base64.decode(aStr.charCodeAt(aIndex++)); + if (digit === -1) { + throw new Error("Invalid base64 digit: " + aStr.charAt(aIndex - 1)); + } + + continuation = !!(digit & VLQ_CONTINUATION_BIT); + digit &= VLQ_BASE_MASK; + result = result + (digit << shift); + shift += VLQ_BASE_SHIFT; + } while (continuation); + + aOutParam.value = fromVLQSigned(result); + aOutParam.rest = aIndex; + }; + + +/***/ }), +/* 3 */ +/***/ (function(module, exports) { + + /* -*- Mode: js; js-indent-level: 2; -*- */ + /* + * Copyright 2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + */ + + var intToCharMap = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'.split(''); + + /** + * Encode an integer in the range of 0 to 63 to a single base 64 digit. + */ + exports.encode = function (number) { + if (0 <= number && number < intToCharMap.length) { + return intToCharMap[number]; + } + throw new TypeError("Must be between 0 and 63: " + number); + }; + + /** + * Decode a single base 64 character code digit to an integer. Returns -1 on + * failure. + */ + exports.decode = function (charCode) { + var bigA = 65; // 'A' + var bigZ = 90; // 'Z' + + var littleA = 97; // 'a' + var littleZ = 122; // 'z' + + var zero = 48; // '0' + var nine = 57; // '9' + + var plus = 43; // '+' + var slash = 47; // '/' + + var littleOffset = 26; + var numberOffset = 52; + + // 0 - 25: ABCDEFGHIJKLMNOPQRSTUVWXYZ + if (bigA <= charCode && charCode <= bigZ) { + return (charCode - bigA); + } + + // 26 - 51: abcdefghijklmnopqrstuvwxyz + if (littleA <= charCode && charCode <= littleZ) { + return (charCode - littleA + littleOffset); + } + + // 52 - 61: 0123456789 + if (zero <= charCode && charCode <= nine) { + return (charCode - zero + numberOffset); + } + + // 62: + + if (charCode == plus) { + return 62; + } + + // 63: / + if (charCode == slash) { + return 63; + } + + // Invalid base64 digit. + return -1; + }; + + +/***/ }), +/* 4 */ +/***/ (function(module, exports) { + + /* -*- Mode: js; js-indent-level: 2; -*- */ + /* + * Copyright 2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + */ + + /** + * This is a helper function for getting values from parameter/options + * objects. + * + * @param args The object we are extracting values from + * @param name The name of the property we are getting. + * @param defaultValue An optional value to return if the property is missing + * from the object. If this is not specified and the property is missing, an + * error will be thrown. + */ + function getArg(aArgs, aName, aDefaultValue) { + if (aName in aArgs) { + return aArgs[aName]; + } else if (arguments.length === 3) { + return aDefaultValue; + } else { + throw new Error('"' + aName + '" is a required argument.'); + } + } + exports.getArg = getArg; + + var urlRegexp = /^(?:([\w+\-.]+):)?\/\/(?:(\w+:\w+)@)?([\w.-]*)(?::(\d+))?(.*)$/; + var dataUrlRegexp = /^data:.+\,.+$/; + + function urlParse(aUrl) { + var match = aUrl.match(urlRegexp); + if (!match) { + return null; + } + return { + scheme: match[1], + auth: match[2], + host: match[3], + port: match[4], + path: match[5] + }; + } + exports.urlParse = urlParse; + + function urlGenerate(aParsedUrl) { + var url = ''; + if (aParsedUrl.scheme) { + url += aParsedUrl.scheme + ':'; + } + url += '//'; + if (aParsedUrl.auth) { + url += aParsedUrl.auth + '@'; + } + if (aParsedUrl.host) { + url += aParsedUrl.host; + } + if (aParsedUrl.port) { + url += ":" + aParsedUrl.port + } + if (aParsedUrl.path) { + url += aParsedUrl.path; + } + return url; + } + exports.urlGenerate = urlGenerate; + + /** + * Normalizes a path, or the path portion of a URL: + * + * - Replaces consecutive slashes with one slash. + * - Removes unnecessary '.' parts. + * - Removes unnecessary '/..' parts. + * + * Based on code in the Node.js 'path' core module. + * + * @param aPath The path or url to normalize. + */ + function normalize(aPath) { + var path = aPath; + var url = urlParse(aPath); + if (url) { + if (!url.path) { + return aPath; + } + path = url.path; + } + var isAbsolute = exports.isAbsolute(path); + + var parts = path.split(/\/+/); + for (var part, up = 0, i = parts.length - 1; i >= 0; i--) { + part = parts[i]; + if (part === '.') { + parts.splice(i, 1); + } else if (part === '..') { + up++; + } else if (up > 0) { + if (part === '') { + // The first part is blank if the path is absolute. Trying to go + // above the root is a no-op. Therefore we can remove all '..' parts + // directly after the root. + parts.splice(i + 1, up); + up = 0; + } else { + parts.splice(i, 2); + up--; + } + } + } + path = parts.join('/'); + + if (path === '') { + path = isAbsolute ? '/' : '.'; + } + + if (url) { + url.path = path; + return urlGenerate(url); + } + return path; + } + exports.normalize = normalize; + + /** + * Joins two paths/URLs. + * + * @param aRoot The root path or URL. + * @param aPath The path or URL to be joined with the root. + * + * - If aPath is a URL or a data URI, aPath is returned, unless aPath is a + * scheme-relative URL: Then the scheme of aRoot, if any, is prepended + * first. + * - Otherwise aPath is a path. If aRoot is a URL, then its path portion + * is updated with the result and aRoot is returned. Otherwise the result + * is returned. + * - If aPath is absolute, the result is aPath. + * - Otherwise the two paths are joined with a slash. + * - Joining for example 'http://' and 'www.example.com' is also supported. + */ + function join(aRoot, aPath) { + if (aRoot === "") { + aRoot = "."; + } + if (aPath === "") { + aPath = "."; + } + var aPathUrl = urlParse(aPath); + var aRootUrl = urlParse(aRoot); + if (aRootUrl) { + aRoot = aRootUrl.path || '/'; + } + + // `join(foo, '//www.example.org')` + if (aPathUrl && !aPathUrl.scheme) { + if (aRootUrl) { + aPathUrl.scheme = aRootUrl.scheme; + } + return urlGenerate(aPathUrl); + } + + if (aPathUrl || aPath.match(dataUrlRegexp)) { + return aPath; + } + + // `join('http://', 'www.example.com')` + if (aRootUrl && !aRootUrl.host && !aRootUrl.path) { + aRootUrl.host = aPath; + return urlGenerate(aRootUrl); + } + + var joined = aPath.charAt(0) === '/' + ? aPath + : normalize(aRoot.replace(/\/+$/, '') + '/' + aPath); + + if (aRootUrl) { + aRootUrl.path = joined; + return urlGenerate(aRootUrl); + } + return joined; + } + exports.join = join; + + exports.isAbsolute = function (aPath) { + return aPath.charAt(0) === '/' || urlRegexp.test(aPath); + }; + + /** + * Make a path relative to a URL or another path. + * + * @param aRoot The root path or URL. + * @param aPath The path or URL to be made relative to aRoot. + */ + function relative(aRoot, aPath) { + if (aRoot === "") { + aRoot = "."; + } + + aRoot = aRoot.replace(/\/$/, ''); + + // It is possible for the path to be above the root. In this case, simply + // checking whether the root is a prefix of the path won't work. Instead, we + // need to remove components from the root one by one, until either we find + // a prefix that fits, or we run out of components to remove. + var level = 0; + while (aPath.indexOf(aRoot + '/') !== 0) { + var index = aRoot.lastIndexOf("/"); + if (index < 0) { + return aPath; + } + + // If the only part of the root that is left is the scheme (i.e. http://, + // file:///, etc.), one or more slashes (/), or simply nothing at all, we + // have exhausted all components, so the path is not relative to the root. + aRoot = aRoot.slice(0, index); + if (aRoot.match(/^([^\/]+:\/)?\/*$/)) { + return aPath; + } + + ++level; + } + + // Make sure we add a "../" for each component we removed from the root. + return Array(level + 1).join("../") + aPath.substr(aRoot.length + 1); + } + exports.relative = relative; + + var supportsNullProto = (function () { + var obj = Object.create(null); + return !('__proto__' in obj); + }()); + + function identity (s) { + return s; + } + + /** + * Because behavior goes wacky when you set `__proto__` on objects, we + * have to prefix all the strings in our set with an arbitrary character. + * + * See https://github.com/mozilla/source-map/pull/31 and + * https://github.com/mozilla/source-map/issues/30 + * + * @param String aStr + */ + function toSetString(aStr) { + if (isProtoString(aStr)) { + return '$' + aStr; + } + + return aStr; + } + exports.toSetString = supportsNullProto ? identity : toSetString; + + function fromSetString(aStr) { + if (isProtoString(aStr)) { + return aStr.slice(1); + } + + return aStr; + } + exports.fromSetString = supportsNullProto ? identity : fromSetString; + + function isProtoString(s) { + if (!s) { + return false; + } + + var length = s.length; + + if (length < 9 /* "__proto__".length */) { + return false; + } + + if (s.charCodeAt(length - 1) !== 95 /* '_' */ || + s.charCodeAt(length - 2) !== 95 /* '_' */ || + s.charCodeAt(length - 3) !== 111 /* 'o' */ || + s.charCodeAt(length - 4) !== 116 /* 't' */ || + s.charCodeAt(length - 5) !== 111 /* 'o' */ || + s.charCodeAt(length - 6) !== 114 /* 'r' */ || + s.charCodeAt(length - 7) !== 112 /* 'p' */ || + s.charCodeAt(length - 8) !== 95 /* '_' */ || + s.charCodeAt(length - 9) !== 95 /* '_' */) { + return false; + } + + for (var i = length - 10; i >= 0; i--) { + if (s.charCodeAt(i) !== 36 /* '$' */) { + return false; + } + } + + return true; + } + + /** + * Comparator between two mappings where the original positions are compared. + * + * Optionally pass in `true` as `onlyCompareGenerated` to consider two + * mappings with the same original source/line/column, but different generated + * line and column the same. Useful when searching for a mapping with a + * stubbed out mapping. + */ + function compareByOriginalPositions(mappingA, mappingB, onlyCompareOriginal) { + var cmp = strcmp(mappingA.source, mappingB.source); + if (cmp !== 0) { + return cmp; + } + + cmp = mappingA.originalLine - mappingB.originalLine; + if (cmp !== 0) { + return cmp; + } + + cmp = mappingA.originalColumn - mappingB.originalColumn; + if (cmp !== 0 || onlyCompareOriginal) { + return cmp; + } + + cmp = mappingA.generatedColumn - mappingB.generatedColumn; + if (cmp !== 0) { + return cmp; + } + + cmp = mappingA.generatedLine - mappingB.generatedLine; + if (cmp !== 0) { + return cmp; + } + + return strcmp(mappingA.name, mappingB.name); + } + exports.compareByOriginalPositions = compareByOriginalPositions; + + /** + * Comparator between two mappings with deflated source and name indices where + * the generated positions are compared. + * + * Optionally pass in `true` as `onlyCompareGenerated` to consider two + * mappings with the same generated line and column, but different + * source/name/original line and column the same. Useful when searching for a + * mapping with a stubbed out mapping. + */ + function compareByGeneratedPositionsDeflated(mappingA, mappingB, onlyCompareGenerated) { + var cmp = mappingA.generatedLine - mappingB.generatedLine; + if (cmp !== 0) { + return cmp; + } + + cmp = mappingA.generatedColumn - mappingB.generatedColumn; + if (cmp !== 0 || onlyCompareGenerated) { + return cmp; + } + + cmp = strcmp(mappingA.source, mappingB.source); + if (cmp !== 0) { + return cmp; + } + + cmp = mappingA.originalLine - mappingB.originalLine; + if (cmp !== 0) { + return cmp; + } + + cmp = mappingA.originalColumn - mappingB.originalColumn; + if (cmp !== 0) { + return cmp; + } + + return strcmp(mappingA.name, mappingB.name); + } + exports.compareByGeneratedPositionsDeflated = compareByGeneratedPositionsDeflated; + + function strcmp(aStr1, aStr2) { + if (aStr1 === aStr2) { + return 0; + } + + if (aStr1 === null) { + return 1; // aStr2 !== null + } + + if (aStr2 === null) { + return -1; // aStr1 !== null + } + + if (aStr1 > aStr2) { + return 1; + } + + return -1; + } + + /** + * Comparator between two mappings with inflated source and name strings where + * the generated positions are compared. + */ + function compareByGeneratedPositionsInflated(mappingA, mappingB) { + var cmp = mappingA.generatedLine - mappingB.generatedLine; + if (cmp !== 0) { + return cmp; + } + + cmp = mappingA.generatedColumn - mappingB.generatedColumn; + if (cmp !== 0) { + return cmp; + } + + cmp = strcmp(mappingA.source, mappingB.source); + if (cmp !== 0) { + return cmp; + } + + cmp = mappingA.originalLine - mappingB.originalLine; + if (cmp !== 0) { + return cmp; + } + + cmp = mappingA.originalColumn - mappingB.originalColumn; + if (cmp !== 0) { + return cmp; + } + + return strcmp(mappingA.name, mappingB.name); + } + exports.compareByGeneratedPositionsInflated = compareByGeneratedPositionsInflated; + + /** + * Strip any JSON XSSI avoidance prefix from the string (as documented + * in the source maps specification), and then parse the string as + * JSON. + */ + function parseSourceMapInput(str) { + return JSON.parse(str.replace(/^\)]}'[^\n]*\n/, '')); + } + exports.parseSourceMapInput = parseSourceMapInput; + + /** + * Compute the URL of a source given the the source root, the source's + * URL, and the source map's URL. + */ + function computeSourceURL(sourceRoot, sourceURL, sourceMapURL) { + sourceURL = sourceURL || ''; + + if (sourceRoot) { + // This follows what Chrome does. + if (sourceRoot[sourceRoot.length - 1] !== '/' && sourceURL[0] !== '/') { + sourceRoot += '/'; + } + // The spec says: + // Line 4: An optional source root, useful for relocating source + // files on a server or removing repeated values in the + // “sources” entry. This value is prepended to the individual + // entries in the “source” field. + sourceURL = sourceRoot + sourceURL; + } + + // Historically, SourceMapConsumer did not take the sourceMapURL as + // a parameter. This mode is still somewhat supported, which is why + // this code block is conditional. However, it's preferable to pass + // the source map URL to SourceMapConsumer, so that this function + // can implement the source URL resolution algorithm as outlined in + // the spec. This block is basically the equivalent of: + // new URL(sourceURL, sourceMapURL).toString() + // ... except it avoids using URL, which wasn't available in the + // older releases of node still supported by this library. + // + // The spec says: + // If the sources are not absolute URLs after prepending of the + // “sourceRoot”, the sources are resolved relative to the + // SourceMap (like resolving script src in a html document). + if (sourceMapURL) { + var parsed = urlParse(sourceMapURL); + if (!parsed) { + throw new Error("sourceMapURL could not be parsed"); + } + if (parsed.path) { + // Strip the last path component, but keep the "/". + var index = parsed.path.lastIndexOf('/'); + if (index >= 0) { + parsed.path = parsed.path.substring(0, index + 1); + } + } + sourceURL = join(urlGenerate(parsed), sourceURL); + } + + return normalize(sourceURL); + } + exports.computeSourceURL = computeSourceURL; + + +/***/ }), +/* 5 */ +/***/ (function(module, exports, __webpack_require__) { + + /* -*- Mode: js; js-indent-level: 2; -*- */ + /* + * Copyright 2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + */ + + var util = __webpack_require__(4); + var has = Object.prototype.hasOwnProperty; + var hasNativeMap = typeof Map !== "undefined"; + + /** + * A data structure which is a combination of an array and a set. Adding a new + * member is O(1), testing for membership is O(1), and finding the index of an + * element is O(1). Removing elements from the set is not supported. Only + * strings are supported for membership. + */ + function ArraySet() { + this._array = []; + this._set = hasNativeMap ? new Map() : Object.create(null); + } + + /** + * Static method for creating ArraySet instances from an existing array. + */ + ArraySet.fromArray = function ArraySet_fromArray(aArray, aAllowDuplicates) { + var set = new ArraySet(); + for (var i = 0, len = aArray.length; i < len; i++) { + set.add(aArray[i], aAllowDuplicates); + } + return set; + }; + + /** + * Return how many unique items are in this ArraySet. If duplicates have been + * added, than those do not count towards the size. + * + * @returns Number + */ + ArraySet.prototype.size = function ArraySet_size() { + return hasNativeMap ? this._set.size : Object.getOwnPropertyNames(this._set).length; + }; + + /** + * Add the given string to this set. + * + * @param String aStr + */ + ArraySet.prototype.add = function ArraySet_add(aStr, aAllowDuplicates) { + var sStr = hasNativeMap ? aStr : util.toSetString(aStr); + var isDuplicate = hasNativeMap ? this.has(aStr) : has.call(this._set, sStr); + var idx = this._array.length; + if (!isDuplicate || aAllowDuplicates) { + this._array.push(aStr); + } + if (!isDuplicate) { + if (hasNativeMap) { + this._set.set(aStr, idx); + } else { + this._set[sStr] = idx; + } + } + }; + + /** + * Is the given string a member of this set? + * + * @param String aStr + */ + ArraySet.prototype.has = function ArraySet_has(aStr) { + if (hasNativeMap) { + return this._set.has(aStr); + } else { + var sStr = util.toSetString(aStr); + return has.call(this._set, sStr); + } + }; + + /** + * What is the index of the given string in the array? + * + * @param String aStr + */ + ArraySet.prototype.indexOf = function ArraySet_indexOf(aStr) { + if (hasNativeMap) { + var idx = this._set.get(aStr); + if (idx >= 0) { + return idx; + } + } else { + var sStr = util.toSetString(aStr); + if (has.call(this._set, sStr)) { + return this._set[sStr]; + } + } + + throw new Error('"' + aStr + '" is not in the set.'); + }; + + /** + * What is the element at the given index? + * + * @param Number aIdx + */ + ArraySet.prototype.at = function ArraySet_at(aIdx) { + if (aIdx >= 0 && aIdx < this._array.length) { + return this._array[aIdx]; + } + throw new Error('No element indexed by ' + aIdx); + }; + + /** + * Returns the array representation of this set (which has the proper indices + * indicated by indexOf). Note that this is a copy of the internal array used + * for storing the members so that no one can mess with internal state. + */ + ArraySet.prototype.toArray = function ArraySet_toArray() { + return this._array.slice(); + }; + + exports.ArraySet = ArraySet; + + +/***/ }), +/* 6 */ +/***/ (function(module, exports, __webpack_require__) { + + /* -*- Mode: js; js-indent-level: 2; -*- */ + /* + * Copyright 2014 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + */ + + var util = __webpack_require__(4); + + /** + * Determine whether mappingB is after mappingA with respect to generated + * position. + */ + function generatedPositionAfter(mappingA, mappingB) { + // Optimized for most common case + var lineA = mappingA.generatedLine; + var lineB = mappingB.generatedLine; + var columnA = mappingA.generatedColumn; + var columnB = mappingB.generatedColumn; + return lineB > lineA || lineB == lineA && columnB >= columnA || + util.compareByGeneratedPositionsInflated(mappingA, mappingB) <= 0; + } + + /** + * A data structure to provide a sorted view of accumulated mappings in a + * performance conscious manner. It trades a neglibable overhead in general + * case for a large speedup in case of mappings being added in order. + */ + function MappingList() { + this._array = []; + this._sorted = true; + // Serves as infimum + this._last = {generatedLine: -1, generatedColumn: 0}; + } + + /** + * Iterate through internal items. This method takes the same arguments that + * `Array.prototype.forEach` takes. + * + * NOTE: The order of the mappings is NOT guaranteed. + */ + MappingList.prototype.unsortedForEach = + function MappingList_forEach(aCallback, aThisArg) { + this._array.forEach(aCallback, aThisArg); + }; + + /** + * Add the given source mapping. + * + * @param Object aMapping + */ + MappingList.prototype.add = function MappingList_add(aMapping) { + if (generatedPositionAfter(this._last, aMapping)) { + this._last = aMapping; + this._array.push(aMapping); + } else { + this._sorted = false; + this._array.push(aMapping); + } + }; + + /** + * Returns the flat, sorted array of mappings. The mappings are sorted by + * generated position. + * + * WARNING: This method returns internal data without copying, for + * performance. The return value must NOT be mutated, and should be treated as + * an immutable borrow. If you want to take ownership, you must make your own + * copy. + */ + MappingList.prototype.toArray = function MappingList_toArray() { + if (!this._sorted) { + this._array.sort(util.compareByGeneratedPositionsInflated); + this._sorted = true; + } + return this._array; + }; + + exports.MappingList = MappingList; + + +/***/ }), +/* 7 */ +/***/ (function(module, exports, __webpack_require__) { + + /* -*- Mode: js; js-indent-level: 2; -*- */ + /* + * Copyright 2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + */ + + var util = __webpack_require__(4); + var binarySearch = __webpack_require__(8); + var ArraySet = __webpack_require__(5).ArraySet; + var base64VLQ = __webpack_require__(2); + var quickSort = __webpack_require__(9).quickSort; + + function SourceMapConsumer(aSourceMap, aSourceMapURL) { + var sourceMap = aSourceMap; + if (typeof aSourceMap === 'string') { + sourceMap = util.parseSourceMapInput(aSourceMap); + } + + return sourceMap.sections != null + ? new IndexedSourceMapConsumer(sourceMap, aSourceMapURL) + : new BasicSourceMapConsumer(sourceMap, aSourceMapURL); + } + + SourceMapConsumer.fromSourceMap = function(aSourceMap, aSourceMapURL) { + return BasicSourceMapConsumer.fromSourceMap(aSourceMap, aSourceMapURL); + } + + /** + * The version of the source mapping spec that we are consuming. + */ + SourceMapConsumer.prototype._version = 3; + + // `__generatedMappings` and `__originalMappings` are arrays that hold the + // parsed mapping coordinates from the source map's "mappings" attribute. They + // are lazily instantiated, accessed via the `_generatedMappings` and + // `_originalMappings` getters respectively, and we only parse the mappings + // and create these arrays once queried for a source location. We jump through + // these hoops because there can be many thousands of mappings, and parsing + // them is expensive, so we only want to do it if we must. + // + // Each object in the arrays is of the form: + // + // { + // generatedLine: The line number in the generated code, + // generatedColumn: The column number in the generated code, + // source: The path to the original source file that generated this + // chunk of code, + // originalLine: The line number in the original source that + // corresponds to this chunk of generated code, + // originalColumn: The column number in the original source that + // corresponds to this chunk of generated code, + // name: The name of the original symbol which generated this chunk of + // code. + // } + // + // All properties except for `generatedLine` and `generatedColumn` can be + // `null`. + // + // `_generatedMappings` is ordered by the generated positions. + // + // `_originalMappings` is ordered by the original positions. + + SourceMapConsumer.prototype.__generatedMappings = null; + Object.defineProperty(SourceMapConsumer.prototype, '_generatedMappings', { + configurable: true, + enumerable: true, + get: function () { + if (!this.__generatedMappings) { + this._parseMappings(this._mappings, this.sourceRoot); + } + + return this.__generatedMappings; + } + }); + + SourceMapConsumer.prototype.__originalMappings = null; + Object.defineProperty(SourceMapConsumer.prototype, '_originalMappings', { + configurable: true, + enumerable: true, + get: function () { + if (!this.__originalMappings) { + this._parseMappings(this._mappings, this.sourceRoot); + } + + return this.__originalMappings; + } + }); + + SourceMapConsumer.prototype._charIsMappingSeparator = + function SourceMapConsumer_charIsMappingSeparator(aStr, index) { + var c = aStr.charAt(index); + return c === ";" || c === ","; + }; + + /** + * Parse the mappings in a string in to a data structure which we can easily + * query (the ordered arrays in the `this.__generatedMappings` and + * `this.__originalMappings` properties). + */ + SourceMapConsumer.prototype._parseMappings = + function SourceMapConsumer_parseMappings(aStr, aSourceRoot) { + throw new Error("Subclasses must implement _parseMappings"); + }; + + SourceMapConsumer.GENERATED_ORDER = 1; + SourceMapConsumer.ORIGINAL_ORDER = 2; + + SourceMapConsumer.GREATEST_LOWER_BOUND = 1; + SourceMapConsumer.LEAST_UPPER_BOUND = 2; + + /** + * Iterate over each mapping between an original source/line/column and a + * generated line/column in this source map. + * + * @param Function aCallback + * The function that is called with each mapping. + * @param Object aContext + * Optional. If specified, this object will be the value of `this` every + * time that `aCallback` is called. + * @param aOrder + * Either `SourceMapConsumer.GENERATED_ORDER` or + * `SourceMapConsumer.ORIGINAL_ORDER`. Specifies whether you want to + * iterate over the mappings sorted by the generated file's line/column + * order or the original's source/line/column order, respectively. Defaults to + * `SourceMapConsumer.GENERATED_ORDER`. + */ + SourceMapConsumer.prototype.eachMapping = + function SourceMapConsumer_eachMapping(aCallback, aContext, aOrder) { + var context = aContext || null; + var order = aOrder || SourceMapConsumer.GENERATED_ORDER; + + var mappings; + switch (order) { + case SourceMapConsumer.GENERATED_ORDER: + mappings = this._generatedMappings; + break; + case SourceMapConsumer.ORIGINAL_ORDER: + mappings = this._originalMappings; + break; + default: + throw new Error("Unknown order of iteration."); + } + + var sourceRoot = this.sourceRoot; + mappings.map(function (mapping) { + var source = mapping.source === null ? null : this._sources.at(mapping.source); + source = util.computeSourceURL(sourceRoot, source, this._sourceMapURL); + return { + source: source, + generatedLine: mapping.generatedLine, + generatedColumn: mapping.generatedColumn, + originalLine: mapping.originalLine, + originalColumn: mapping.originalColumn, + name: mapping.name === null ? null : this._names.at(mapping.name) + }; + }, this).forEach(aCallback, context); + }; + + /** + * Returns all generated line and column information for the original source, + * line, and column provided. If no column is provided, returns all mappings + * corresponding to a either the line we are searching for or the next + * closest line that has any mappings. Otherwise, returns all mappings + * corresponding to the given line and either the column we are searching for + * or the next closest column that has any offsets. + * + * The only argument is an object with the following properties: + * + * - source: The filename of the original source. + * - line: The line number in the original source. The line number is 1-based. + * - column: Optional. the column number in the original source. + * The column number is 0-based. + * + * and an array of objects is returned, each with the following properties: + * + * - line: The line number in the generated source, or null. The + * line number is 1-based. + * - column: The column number in the generated source, or null. + * The column number is 0-based. + */ + SourceMapConsumer.prototype.allGeneratedPositionsFor = + function SourceMapConsumer_allGeneratedPositionsFor(aArgs) { + var line = util.getArg(aArgs, 'line'); + + // When there is no exact match, BasicSourceMapConsumer.prototype._findMapping + // returns the index of the closest mapping less than the needle. By + // setting needle.originalColumn to 0, we thus find the last mapping for + // the given line, provided such a mapping exists. + var needle = { + source: util.getArg(aArgs, 'source'), + originalLine: line, + originalColumn: util.getArg(aArgs, 'column', 0) + }; + + needle.source = this._findSourceIndex(needle.source); + if (needle.source < 0) { + return []; + } + + var mappings = []; + + var index = this._findMapping(needle, + this._originalMappings, + "originalLine", + "originalColumn", + util.compareByOriginalPositions, + binarySearch.LEAST_UPPER_BOUND); + if (index >= 0) { + var mapping = this._originalMappings[index]; + + if (aArgs.column === undefined) { + var originalLine = mapping.originalLine; + + // Iterate until either we run out of mappings, or we run into + // a mapping for a different line than the one we found. Since + // mappings are sorted, this is guaranteed to find all mappings for + // the line we found. + while (mapping && mapping.originalLine === originalLine) { + mappings.push({ + line: util.getArg(mapping, 'generatedLine', null), + column: util.getArg(mapping, 'generatedColumn', null), + lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null) + }); + + mapping = this._originalMappings[++index]; + } + } else { + var originalColumn = mapping.originalColumn; + + // Iterate until either we run out of mappings, or we run into + // a mapping for a different line than the one we were searching for. + // Since mappings are sorted, this is guaranteed to find all mappings for + // the line we are searching for. + while (mapping && + mapping.originalLine === line && + mapping.originalColumn == originalColumn) { + mappings.push({ + line: util.getArg(mapping, 'generatedLine', null), + column: util.getArg(mapping, 'generatedColumn', null), + lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null) + }); + + mapping = this._originalMappings[++index]; + } + } + } + + return mappings; + }; + + exports.SourceMapConsumer = SourceMapConsumer; + + /** + * A BasicSourceMapConsumer instance represents a parsed source map which we can + * query for information about the original file positions by giving it a file + * position in the generated source. + * + * The first parameter is the raw source map (either as a JSON string, or + * already parsed to an object). According to the spec, source maps have the + * following attributes: + * + * - version: Which version of the source map spec this map is following. + * - sources: An array of URLs to the original source files. + * - names: An array of identifiers which can be referrenced by individual mappings. + * - sourceRoot: Optional. The URL root from which all sources are relative. + * - sourcesContent: Optional. An array of contents of the original source files. + * - mappings: A string of base64 VLQs which contain the actual mappings. + * - file: Optional. The generated file this source map is associated with. + * + * Here is an example source map, taken from the source map spec[0]: + * + * { + * version : 3, + * file: "out.js", + * sourceRoot : "", + * sources: ["foo.js", "bar.js"], + * names: ["src", "maps", "are", "fun"], + * mappings: "AA,AB;;ABCDE;" + * } + * + * The second parameter, if given, is a string whose value is the URL + * at which the source map was found. This URL is used to compute the + * sources array. + * + * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit?pli=1# + */ + function BasicSourceMapConsumer(aSourceMap, aSourceMapURL) { + var sourceMap = aSourceMap; + if (typeof aSourceMap === 'string') { + sourceMap = util.parseSourceMapInput(aSourceMap); + } + + var version = util.getArg(sourceMap, 'version'); + var sources = util.getArg(sourceMap, 'sources'); + // Sass 3.3 leaves out the 'names' array, so we deviate from the spec (which + // requires the array) to play nice here. + var names = util.getArg(sourceMap, 'names', []); + var sourceRoot = util.getArg(sourceMap, 'sourceRoot', null); + var sourcesContent = util.getArg(sourceMap, 'sourcesContent', null); + var mappings = util.getArg(sourceMap, 'mappings'); + var file = util.getArg(sourceMap, 'file', null); + + // Once again, Sass deviates from the spec and supplies the version as a + // string rather than a number, so we use loose equality checking here. + if (version != this._version) { + throw new Error('Unsupported version: ' + version); + } + + if (sourceRoot) { + sourceRoot = util.normalize(sourceRoot); + } + + sources = sources + .map(String) + // Some source maps produce relative source paths like "./foo.js" instead of + // "foo.js". Normalize these first so that future comparisons will succeed. + // See bugzil.la/1090768. + .map(util.normalize) + // Always ensure that absolute sources are internally stored relative to + // the source root, if the source root is absolute. Not doing this would + // be particularly problematic when the source root is a prefix of the + // source (valid, but why??). See github issue #199 and bugzil.la/1188982. + .map(function (source) { + return sourceRoot && util.isAbsolute(sourceRoot) && util.isAbsolute(source) + ? util.relative(sourceRoot, source) + : source; + }); + + // Pass `true` below to allow duplicate names and sources. While source maps + // are intended to be compressed and deduplicated, the TypeScript compiler + // sometimes generates source maps with duplicates in them. See Github issue + // #72 and bugzil.la/889492. + this._names = ArraySet.fromArray(names.map(String), true); + this._sources = ArraySet.fromArray(sources, true); + + this._absoluteSources = this._sources.toArray().map(function (s) { + return util.computeSourceURL(sourceRoot, s, aSourceMapURL); + }); + + this.sourceRoot = sourceRoot; + this.sourcesContent = sourcesContent; + this._mappings = mappings; + this._sourceMapURL = aSourceMapURL; + this.file = file; + } + + BasicSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype); + BasicSourceMapConsumer.prototype.consumer = SourceMapConsumer; + + /** + * Utility function to find the index of a source. Returns -1 if not + * found. + */ + BasicSourceMapConsumer.prototype._findSourceIndex = function(aSource) { + var relativeSource = aSource; + if (this.sourceRoot != null) { + relativeSource = util.relative(this.sourceRoot, relativeSource); + } + + if (this._sources.has(relativeSource)) { + return this._sources.indexOf(relativeSource); + } + + // Maybe aSource is an absolute URL as returned by |sources|. In + // this case we can't simply undo the transform. + var i; + for (i = 0; i < this._absoluteSources.length; ++i) { + if (this._absoluteSources[i] == aSource) { + return i; + } + } + + return -1; + }; + + /** + * Create a BasicSourceMapConsumer from a SourceMapGenerator. + * + * @param SourceMapGenerator aSourceMap + * The source map that will be consumed. + * @param String aSourceMapURL + * The URL at which the source map can be found (optional) + * @returns BasicSourceMapConsumer + */ + BasicSourceMapConsumer.fromSourceMap = + function SourceMapConsumer_fromSourceMap(aSourceMap, aSourceMapURL) { + var smc = Object.create(BasicSourceMapConsumer.prototype); + + var names = smc._names = ArraySet.fromArray(aSourceMap._names.toArray(), true); + var sources = smc._sources = ArraySet.fromArray(aSourceMap._sources.toArray(), true); + smc.sourceRoot = aSourceMap._sourceRoot; + smc.sourcesContent = aSourceMap._generateSourcesContent(smc._sources.toArray(), + smc.sourceRoot); + smc.file = aSourceMap._file; + smc._sourceMapURL = aSourceMapURL; + smc._absoluteSources = smc._sources.toArray().map(function (s) { + return util.computeSourceURL(smc.sourceRoot, s, aSourceMapURL); + }); + + // Because we are modifying the entries (by converting string sources and + // names to indices into the sources and names ArraySets), we have to make + // a copy of the entry or else bad things happen. Shared mutable state + // strikes again! See github issue #191. + + var generatedMappings = aSourceMap._mappings.toArray().slice(); + var destGeneratedMappings = smc.__generatedMappings = []; + var destOriginalMappings = smc.__originalMappings = []; + + for (var i = 0, length = generatedMappings.length; i < length; i++) { + var srcMapping = generatedMappings[i]; + var destMapping = new Mapping; + destMapping.generatedLine = srcMapping.generatedLine; + destMapping.generatedColumn = srcMapping.generatedColumn; + + if (srcMapping.source) { + destMapping.source = sources.indexOf(srcMapping.source); + destMapping.originalLine = srcMapping.originalLine; + destMapping.originalColumn = srcMapping.originalColumn; + + if (srcMapping.name) { + destMapping.name = names.indexOf(srcMapping.name); + } + + destOriginalMappings.push(destMapping); + } + + destGeneratedMappings.push(destMapping); + } + + quickSort(smc.__originalMappings, util.compareByOriginalPositions); + + return smc; + }; + + /** + * The version of the source mapping spec that we are consuming. + */ + BasicSourceMapConsumer.prototype._version = 3; + + /** + * The list of original sources. + */ + Object.defineProperty(BasicSourceMapConsumer.prototype, 'sources', { + get: function () { + return this._absoluteSources.slice(); + } + }); + + /** + * Provide the JIT with a nice shape / hidden class. + */ + function Mapping() { + this.generatedLine = 0; + this.generatedColumn = 0; + this.source = null; + this.originalLine = null; + this.originalColumn = null; + this.name = null; + } + + /** + * Parse the mappings in a string in to a data structure which we can easily + * query (the ordered arrays in the `this.__generatedMappings` and + * `this.__originalMappings` properties). + */ + BasicSourceMapConsumer.prototype._parseMappings = + function SourceMapConsumer_parseMappings(aStr, aSourceRoot) { + var generatedLine = 1; + var previousGeneratedColumn = 0; + var previousOriginalLine = 0; + var previousOriginalColumn = 0; + var previousSource = 0; + var previousName = 0; + var length = aStr.length; + var index = 0; + var cachedSegments = {}; + var temp = {}; + var originalMappings = []; + var generatedMappings = []; + var mapping, str, segment, end, value; + + while (index < length) { + if (aStr.charAt(index) === ';') { + generatedLine++; + index++; + previousGeneratedColumn = 0; + } + else if (aStr.charAt(index) === ',') { + index++; + } + else { + mapping = new Mapping(); + mapping.generatedLine = generatedLine; + + // Because each offset is encoded relative to the previous one, + // many segments often have the same encoding. We can exploit this + // fact by caching the parsed variable length fields of each segment, + // allowing us to avoid a second parse if we encounter the same + // segment again. + for (end = index; end < length; end++) { + if (this._charIsMappingSeparator(aStr, end)) { + break; + } + } + str = aStr.slice(index, end); + + segment = cachedSegments[str]; + if (segment) { + index += str.length; + } else { + segment = []; + while (index < end) { + base64VLQ.decode(aStr, index, temp); + value = temp.value; + index = temp.rest; + segment.push(value); + } + + if (segment.length === 2) { + throw new Error('Found a source, but no line and column'); + } + + if (segment.length === 3) { + throw new Error('Found a source and line, but no column'); + } + + cachedSegments[str] = segment; + } + + // Generated column. + mapping.generatedColumn = previousGeneratedColumn + segment[0]; + previousGeneratedColumn = mapping.generatedColumn; + + if (segment.length > 1) { + // Original source. + mapping.source = previousSource + segment[1]; + previousSource += segment[1]; + + // Original line. + mapping.originalLine = previousOriginalLine + segment[2]; + previousOriginalLine = mapping.originalLine; + // Lines are stored 0-based + mapping.originalLine += 1; + + // Original column. + mapping.originalColumn = previousOriginalColumn + segment[3]; + previousOriginalColumn = mapping.originalColumn; + + if (segment.length > 4) { + // Original name. + mapping.name = previousName + segment[4]; + previousName += segment[4]; + } + } + + generatedMappings.push(mapping); + if (typeof mapping.originalLine === 'number') { + originalMappings.push(mapping); + } + } + } + + quickSort(generatedMappings, util.compareByGeneratedPositionsDeflated); + this.__generatedMappings = generatedMappings; + + quickSort(originalMappings, util.compareByOriginalPositions); + this.__originalMappings = originalMappings; + }; + + /** + * Find the mapping that best matches the hypothetical "needle" mapping that + * we are searching for in the given "haystack" of mappings. + */ + BasicSourceMapConsumer.prototype._findMapping = + function SourceMapConsumer_findMapping(aNeedle, aMappings, aLineName, + aColumnName, aComparator, aBias) { + // To return the position we are searching for, we must first find the + // mapping for the given position and then return the opposite position it + // points to. Because the mappings are sorted, we can use binary search to + // find the best mapping. + + if (aNeedle[aLineName] <= 0) { + throw new TypeError('Line must be greater than or equal to 1, got ' + + aNeedle[aLineName]); + } + if (aNeedle[aColumnName] < 0) { + throw new TypeError('Column must be greater than or equal to 0, got ' + + aNeedle[aColumnName]); + } + + return binarySearch.search(aNeedle, aMappings, aComparator, aBias); + }; + + /** + * Compute the last column for each generated mapping. The last column is + * inclusive. + */ + BasicSourceMapConsumer.prototype.computeColumnSpans = + function SourceMapConsumer_computeColumnSpans() { + for (var index = 0; index < this._generatedMappings.length; ++index) { + var mapping = this._generatedMappings[index]; + + // Mappings do not contain a field for the last generated columnt. We + // can come up with an optimistic estimate, however, by assuming that + // mappings are contiguous (i.e. given two consecutive mappings, the + // first mapping ends where the second one starts). + if (index + 1 < this._generatedMappings.length) { + var nextMapping = this._generatedMappings[index + 1]; + + if (mapping.generatedLine === nextMapping.generatedLine) { + mapping.lastGeneratedColumn = nextMapping.generatedColumn - 1; + continue; + } + } + + // The last mapping for each line spans the entire line. + mapping.lastGeneratedColumn = Infinity; + } + }; + + /** + * Returns the original source, line, and column information for the generated + * source's line and column positions provided. The only argument is an object + * with the following properties: + * + * - line: The line number in the generated source. The line number + * is 1-based. + * - column: The column number in the generated source. The column + * number is 0-based. + * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or + * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the + * closest element that is smaller than or greater than the one we are + * searching for, respectively, if the exact element cannot be found. + * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'. + * + * and an object is returned with the following properties: + * + * - source: The original source file, or null. + * - line: The line number in the original source, or null. The + * line number is 1-based. + * - column: The column number in the original source, or null. The + * column number is 0-based. + * - name: The original identifier, or null. + */ + BasicSourceMapConsumer.prototype.originalPositionFor = + function SourceMapConsumer_originalPositionFor(aArgs) { + var needle = { + generatedLine: util.getArg(aArgs, 'line'), + generatedColumn: util.getArg(aArgs, 'column') + }; + + var index = this._findMapping( + needle, + this._generatedMappings, + "generatedLine", + "generatedColumn", + util.compareByGeneratedPositionsDeflated, + util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND) + ); + + if (index >= 0) { + var mapping = this._generatedMappings[index]; + + if (mapping.generatedLine === needle.generatedLine) { + var source = util.getArg(mapping, 'source', null); + if (source !== null) { + source = this._sources.at(source); + source = util.computeSourceURL(this.sourceRoot, source, this._sourceMapURL); + } + var name = util.getArg(mapping, 'name', null); + if (name !== null) { + name = this._names.at(name); + } + return { + source: source, + line: util.getArg(mapping, 'originalLine', null), + column: util.getArg(mapping, 'originalColumn', null), + name: name + }; + } + } + + return { + source: null, + line: null, + column: null, + name: null + }; + }; + + /** + * Return true if we have the source content for every source in the source + * map, false otherwise. + */ + BasicSourceMapConsumer.prototype.hasContentsOfAllSources = + function BasicSourceMapConsumer_hasContentsOfAllSources() { + if (!this.sourcesContent) { + return false; + } + return this.sourcesContent.length >= this._sources.size() && + !this.sourcesContent.some(function (sc) { return sc == null; }); + }; + + /** + * Returns the original source content. The only argument is the url of the + * original source file. Returns null if no original source content is + * available. + */ + BasicSourceMapConsumer.prototype.sourceContentFor = + function SourceMapConsumer_sourceContentFor(aSource, nullOnMissing) { + if (!this.sourcesContent) { + return null; + } + + var index = this._findSourceIndex(aSource); + if (index >= 0) { + return this.sourcesContent[index]; + } + + var relativeSource = aSource; + if (this.sourceRoot != null) { + relativeSource = util.relative(this.sourceRoot, relativeSource); + } + + var url; + if (this.sourceRoot != null + && (url = util.urlParse(this.sourceRoot))) { + // XXX: file:// URIs and absolute paths lead to unexpected behavior for + // many users. We can help them out when they expect file:// URIs to + // behave like it would if they were running a local HTTP server. See + // https://bugzilla.mozilla.org/show_bug.cgi?id=885597. + var fileUriAbsPath = relativeSource.replace(/^file:\/\//, ""); + if (url.scheme == "file" + && this._sources.has(fileUriAbsPath)) { + return this.sourcesContent[this._sources.indexOf(fileUriAbsPath)] + } + + if ((!url.path || url.path == "/") + && this._sources.has("/" + relativeSource)) { + return this.sourcesContent[this._sources.indexOf("/" + relativeSource)]; + } + } + + // This function is used recursively from + // IndexedSourceMapConsumer.prototype.sourceContentFor. In that case, we + // don't want to throw if we can't find the source - we just want to + // return null, so we provide a flag to exit gracefully. + if (nullOnMissing) { + return null; + } + else { + throw new Error('"' + relativeSource + '" is not in the SourceMap.'); + } + }; + + /** + * Returns the generated line and column information for the original source, + * line, and column positions provided. The only argument is an object with + * the following properties: + * + * - source: The filename of the original source. + * - line: The line number in the original source. The line number + * is 1-based. + * - column: The column number in the original source. The column + * number is 0-based. + * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or + * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the + * closest element that is smaller than or greater than the one we are + * searching for, respectively, if the exact element cannot be found. + * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'. + * + * and an object is returned with the following properties: + * + * - line: The line number in the generated source, or null. The + * line number is 1-based. + * - column: The column number in the generated source, or null. + * The column number is 0-based. + */ + BasicSourceMapConsumer.prototype.generatedPositionFor = + function SourceMapConsumer_generatedPositionFor(aArgs) { + var source = util.getArg(aArgs, 'source'); + source = this._findSourceIndex(source); + if (source < 0) { + return { + line: null, + column: null, + lastColumn: null + }; + } + + var needle = { + source: source, + originalLine: util.getArg(aArgs, 'line'), + originalColumn: util.getArg(aArgs, 'column') + }; + + var index = this._findMapping( + needle, + this._originalMappings, + "originalLine", + "originalColumn", + util.compareByOriginalPositions, + util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND) + ); + + if (index >= 0) { + var mapping = this._originalMappings[index]; + + if (mapping.source === needle.source) { + return { + line: util.getArg(mapping, 'generatedLine', null), + column: util.getArg(mapping, 'generatedColumn', null), + lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null) + }; + } + } + + return { + line: null, + column: null, + lastColumn: null + }; + }; + + exports.BasicSourceMapConsumer = BasicSourceMapConsumer; + + /** + * An IndexedSourceMapConsumer instance represents a parsed source map which + * we can query for information. It differs from BasicSourceMapConsumer in + * that it takes "indexed" source maps (i.e. ones with a "sections" field) as + * input. + * + * The first parameter is a raw source map (either as a JSON string, or already + * parsed to an object). According to the spec for indexed source maps, they + * have the following attributes: + * + * - version: Which version of the source map spec this map is following. + * - file: Optional. The generated file this source map is associated with. + * - sections: A list of section definitions. + * + * Each value under the "sections" field has two fields: + * - offset: The offset into the original specified at which this section + * begins to apply, defined as an object with a "line" and "column" + * field. + * - map: A source map definition. This source map could also be indexed, + * but doesn't have to be. + * + * Instead of the "map" field, it's also possible to have a "url" field + * specifying a URL to retrieve a source map from, but that's currently + * unsupported. + * + * Here's an example source map, taken from the source map spec[0], but + * modified to omit a section which uses the "url" field. + * + * { + * version : 3, + * file: "app.js", + * sections: [{ + * offset: {line:100, column:10}, + * map: { + * version : 3, + * file: "section.js", + * sources: ["foo.js", "bar.js"], + * names: ["src", "maps", "are", "fun"], + * mappings: "AAAA,E;;ABCDE;" + * } + * }], + * } + * + * The second parameter, if given, is a string whose value is the URL + * at which the source map was found. This URL is used to compute the + * sources array. + * + * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit#heading=h.535es3xeprgt + */ + function IndexedSourceMapConsumer(aSourceMap, aSourceMapURL) { + var sourceMap = aSourceMap; + if (typeof aSourceMap === 'string') { + sourceMap = util.parseSourceMapInput(aSourceMap); + } + + var version = util.getArg(sourceMap, 'version'); + var sections = util.getArg(sourceMap, 'sections'); + + if (version != this._version) { + throw new Error('Unsupported version: ' + version); + } + + this._sources = new ArraySet(); + this._names = new ArraySet(); + + var lastOffset = { + line: -1, + column: 0 + }; + this._sections = sections.map(function (s) { + if (s.url) { + // The url field will require support for asynchronicity. + // See https://github.com/mozilla/source-map/issues/16 + throw new Error('Support for url field in sections not implemented.'); + } + var offset = util.getArg(s, 'offset'); + var offsetLine = util.getArg(offset, 'line'); + var offsetColumn = util.getArg(offset, 'column'); + + if (offsetLine < lastOffset.line || + (offsetLine === lastOffset.line && offsetColumn < lastOffset.column)) { + throw new Error('Section offsets must be ordered and non-overlapping.'); + } + lastOffset = offset; + + return { + generatedOffset: { + // The offset fields are 0-based, but we use 1-based indices when + // encoding/decoding from VLQ. + generatedLine: offsetLine + 1, + generatedColumn: offsetColumn + 1 + }, + consumer: new SourceMapConsumer(util.getArg(s, 'map'), aSourceMapURL) + } + }); + } + + IndexedSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype); + IndexedSourceMapConsumer.prototype.constructor = SourceMapConsumer; + + /** + * The version of the source mapping spec that we are consuming. + */ + IndexedSourceMapConsumer.prototype._version = 3; + + /** + * The list of original sources. + */ + Object.defineProperty(IndexedSourceMapConsumer.prototype, 'sources', { + get: function () { + var sources = []; + for (var i = 0; i < this._sections.length; i++) { + for (var j = 0; j < this._sections[i].consumer.sources.length; j++) { + sources.push(this._sections[i].consumer.sources[j]); + } + } + return sources; + } + }); + + /** + * Returns the original source, line, and column information for the generated + * source's line and column positions provided. The only argument is an object + * with the following properties: + * + * - line: The line number in the generated source. The line number + * is 1-based. + * - column: The column number in the generated source. The column + * number is 0-based. + * + * and an object is returned with the following properties: + * + * - source: The original source file, or null. + * - line: The line number in the original source, or null. The + * line number is 1-based. + * - column: The column number in the original source, or null. The + * column number is 0-based. + * - name: The original identifier, or null. + */ + IndexedSourceMapConsumer.prototype.originalPositionFor = + function IndexedSourceMapConsumer_originalPositionFor(aArgs) { + var needle = { + generatedLine: util.getArg(aArgs, 'line'), + generatedColumn: util.getArg(aArgs, 'column') + }; + + // Find the section containing the generated position we're trying to map + // to an original position. + var sectionIndex = binarySearch.search(needle, this._sections, + function(needle, section) { + var cmp = needle.generatedLine - section.generatedOffset.generatedLine; + if (cmp) { + return cmp; + } + + return (needle.generatedColumn - + section.generatedOffset.generatedColumn); + }); + var section = this._sections[sectionIndex]; + + if (!section) { + return { + source: null, + line: null, + column: null, + name: null + }; + } + + return section.consumer.originalPositionFor({ + line: needle.generatedLine - + (section.generatedOffset.generatedLine - 1), + column: needle.generatedColumn - + (section.generatedOffset.generatedLine === needle.generatedLine + ? section.generatedOffset.generatedColumn - 1 + : 0), + bias: aArgs.bias + }); + }; + + /** + * Return true if we have the source content for every source in the source + * map, false otherwise. + */ + IndexedSourceMapConsumer.prototype.hasContentsOfAllSources = + function IndexedSourceMapConsumer_hasContentsOfAllSources() { + return this._sections.every(function (s) { + return s.consumer.hasContentsOfAllSources(); + }); + }; + + /** + * Returns the original source content. The only argument is the url of the + * original source file. Returns null if no original source content is + * available. + */ + IndexedSourceMapConsumer.prototype.sourceContentFor = + function IndexedSourceMapConsumer_sourceContentFor(aSource, nullOnMissing) { + for (var i = 0; i < this._sections.length; i++) { + var section = this._sections[i]; + + var content = section.consumer.sourceContentFor(aSource, true); + if (content) { + return content; + } + } + if (nullOnMissing) { + return null; + } + else { + throw new Error('"' + aSource + '" is not in the SourceMap.'); + } + }; + + /** + * Returns the generated line and column information for the original source, + * line, and column positions provided. The only argument is an object with + * the following properties: + * + * - source: The filename of the original source. + * - line: The line number in the original source. The line number + * is 1-based. + * - column: The column number in the original source. The column + * number is 0-based. + * + * and an object is returned with the following properties: + * + * - line: The line number in the generated source, or null. The + * line number is 1-based. + * - column: The column number in the generated source, or null. + * The column number is 0-based. + */ + IndexedSourceMapConsumer.prototype.generatedPositionFor = + function IndexedSourceMapConsumer_generatedPositionFor(aArgs) { + for (var i = 0; i < this._sections.length; i++) { + var section = this._sections[i]; + + // Only consider this section if the requested source is in the list of + // sources of the consumer. + if (section.consumer._findSourceIndex(util.getArg(aArgs, 'source')) === -1) { + continue; + } + var generatedPosition = section.consumer.generatedPositionFor(aArgs); + if (generatedPosition) { + var ret = { + line: generatedPosition.line + + (section.generatedOffset.generatedLine - 1), + column: generatedPosition.column + + (section.generatedOffset.generatedLine === generatedPosition.line + ? section.generatedOffset.generatedColumn - 1 + : 0) + }; + return ret; + } + } + + return { + line: null, + column: null + }; + }; + + /** + * Parse the mappings in a string in to a data structure which we can easily + * query (the ordered arrays in the `this.__generatedMappings` and + * `this.__originalMappings` properties). + */ + IndexedSourceMapConsumer.prototype._parseMappings = + function IndexedSourceMapConsumer_parseMappings(aStr, aSourceRoot) { + this.__generatedMappings = []; + this.__originalMappings = []; + for (var i = 0; i < this._sections.length; i++) { + var section = this._sections[i]; + var sectionMappings = section.consumer._generatedMappings; + for (var j = 0; j < sectionMappings.length; j++) { + var mapping = sectionMappings[j]; + + var source = section.consumer._sources.at(mapping.source); + source = util.computeSourceURL(section.consumer.sourceRoot, source, this._sourceMapURL); + this._sources.add(source); + source = this._sources.indexOf(source); + + var name = null; + if (mapping.name) { + name = section.consumer._names.at(mapping.name); + this._names.add(name); + name = this._names.indexOf(name); + } + + // The mappings coming from the consumer for the section have + // generated positions relative to the start of the section, so we + // need to offset them to be relative to the start of the concatenated + // generated file. + var adjustedMapping = { + source: source, + generatedLine: mapping.generatedLine + + (section.generatedOffset.generatedLine - 1), + generatedColumn: mapping.generatedColumn + + (section.generatedOffset.generatedLine === mapping.generatedLine + ? section.generatedOffset.generatedColumn - 1 + : 0), + originalLine: mapping.originalLine, + originalColumn: mapping.originalColumn, + name: name + }; + + this.__generatedMappings.push(adjustedMapping); + if (typeof adjustedMapping.originalLine === 'number') { + this.__originalMappings.push(adjustedMapping); + } + } + } + + quickSort(this.__generatedMappings, util.compareByGeneratedPositionsDeflated); + quickSort(this.__originalMappings, util.compareByOriginalPositions); + }; + + exports.IndexedSourceMapConsumer = IndexedSourceMapConsumer; + + +/***/ }), +/* 8 */ +/***/ (function(module, exports) { + + /* -*- Mode: js; js-indent-level: 2; -*- */ + /* + * Copyright 2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + */ + + exports.GREATEST_LOWER_BOUND = 1; + exports.LEAST_UPPER_BOUND = 2; + + /** + * Recursive implementation of binary search. + * + * @param aLow Indices here and lower do not contain the needle. + * @param aHigh Indices here and higher do not contain the needle. + * @param aNeedle The element being searched for. + * @param aHaystack The non-empty array being searched. + * @param aCompare Function which takes two elements and returns -1, 0, or 1. + * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or + * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the + * closest element that is smaller than or greater than the one we are + * searching for, respectively, if the exact element cannot be found. + */ + function recursiveSearch(aLow, aHigh, aNeedle, aHaystack, aCompare, aBias) { + // This function terminates when one of the following is true: + // + // 1. We find the exact element we are looking for. + // + // 2. We did not find the exact element, but we can return the index of + // the next-closest element. + // + // 3. We did not find the exact element, and there is no next-closest + // element than the one we are searching for, so we return -1. + var mid = Math.floor((aHigh - aLow) / 2) + aLow; + var cmp = aCompare(aNeedle, aHaystack[mid], true); + if (cmp === 0) { + // Found the element we are looking for. + return mid; + } + else if (cmp > 0) { + // Our needle is greater than aHaystack[mid]. + if (aHigh - mid > 1) { + // The element is in the upper half. + return recursiveSearch(mid, aHigh, aNeedle, aHaystack, aCompare, aBias); + } + + // The exact needle element was not found in this haystack. Determine if + // we are in termination case (3) or (2) and return the appropriate thing. + if (aBias == exports.LEAST_UPPER_BOUND) { + return aHigh < aHaystack.length ? aHigh : -1; + } else { + return mid; + } + } + else { + // Our needle is less than aHaystack[mid]. + if (mid - aLow > 1) { + // The element is in the lower half. + return recursiveSearch(aLow, mid, aNeedle, aHaystack, aCompare, aBias); + } + + // we are in termination case (3) or (2) and return the appropriate thing. + if (aBias == exports.LEAST_UPPER_BOUND) { + return mid; + } else { + return aLow < 0 ? -1 : aLow; + } + } + } + + /** + * This is an implementation of binary search which will always try and return + * the index of the closest element if there is no exact hit. This is because + * mappings between original and generated line/col pairs are single points, + * and there is an implicit region between each of them, so a miss just means + * that you aren't on the very start of a region. + * + * @param aNeedle The element you are looking for. + * @param aHaystack The array that is being searched. + * @param aCompare A function which takes the needle and an element in the + * array and returns -1, 0, or 1 depending on whether the needle is less + * than, equal to, or greater than the element, respectively. + * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or + * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the + * closest element that is smaller than or greater than the one we are + * searching for, respectively, if the exact element cannot be found. + * Defaults to 'binarySearch.GREATEST_LOWER_BOUND'. + */ + exports.search = function search(aNeedle, aHaystack, aCompare, aBias) { + if (aHaystack.length === 0) { + return -1; + } + + var index = recursiveSearch(-1, aHaystack.length, aNeedle, aHaystack, + aCompare, aBias || exports.GREATEST_LOWER_BOUND); + if (index < 0) { + return -1; + } + + // We have found either the exact element, or the next-closest element than + // the one we are searching for. However, there may be more than one such + // element. Make sure we always return the smallest of these. + while (index - 1 >= 0) { + if (aCompare(aHaystack[index], aHaystack[index - 1], true) !== 0) { + break; + } + --index; + } + + return index; + }; + + +/***/ }), +/* 9 */ +/***/ (function(module, exports) { + + /* -*- Mode: js; js-indent-level: 2; -*- */ + /* + * Copyright 2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + */ + + // It turns out that some (most?) JavaScript engines don't self-host + // `Array.prototype.sort`. This makes sense because C++ will likely remain + // faster than JS when doing raw CPU-intensive sorting. However, when using a + // custom comparator function, calling back and forth between the VM's C++ and + // JIT'd JS is rather slow *and* loses JIT type information, resulting in + // worse generated code for the comparator function than would be optimal. In + // fact, when sorting with a comparator, these costs outweigh the benefits of + // sorting in C++. By using our own JS-implemented Quick Sort (below), we get + // a ~3500ms mean speed-up in `bench/bench.html`. + + /** + * Swap the elements indexed by `x` and `y` in the array `ary`. + * + * @param {Array} ary + * The array. + * @param {Number} x + * The index of the first item. + * @param {Number} y + * The index of the second item. + */ + function swap(ary, x, y) { + var temp = ary[x]; + ary[x] = ary[y]; + ary[y] = temp; + } + + /** + * Returns a random integer within the range `low .. high` inclusive. + * + * @param {Number} low + * The lower bound on the range. + * @param {Number} high + * The upper bound on the range. + */ + function randomIntInRange(low, high) { + return Math.round(low + (Math.random() * (high - low))); + } + + /** + * The Quick Sort algorithm. + * + * @param {Array} ary + * An array to sort. + * @param {function} comparator + * Function to use to compare two items. + * @param {Number} p + * Start index of the array + * @param {Number} r + * End index of the array + */ + function doQuickSort(ary, comparator, p, r) { + // If our lower bound is less than our upper bound, we (1) partition the + // array into two pieces and (2) recurse on each half. If it is not, this is + // the empty array and our base case. + + if (p < r) { + // (1) Partitioning. + // + // The partitioning chooses a pivot between `p` and `r` and moves all + // elements that are less than or equal to the pivot to the before it, and + // all the elements that are greater than it after it. The effect is that + // once partition is done, the pivot is in the exact place it will be when + // the array is put in sorted order, and it will not need to be moved + // again. This runs in O(n) time. + + // Always choose a random pivot so that an input array which is reverse + // sorted does not cause O(n^2) running time. + var pivotIndex = randomIntInRange(p, r); + var i = p - 1; + + swap(ary, pivotIndex, r); + var pivot = ary[r]; + + // Immediately after `j` is incremented in this loop, the following hold + // true: + // + // * Every element in `ary[p .. i]` is less than or equal to the pivot. + // + // * Every element in `ary[i+1 .. j-1]` is greater than the pivot. + for (var j = p; j < r; j++) { + if (comparator(ary[j], pivot) <= 0) { + i += 1; + swap(ary, i, j); + } + } + + swap(ary, i + 1, j); + var q = i + 1; + + // (2) Recurse on each half. + + doQuickSort(ary, comparator, p, q - 1); + doQuickSort(ary, comparator, q + 1, r); + } + } + + /** + * Sort the given array in-place with the given comparator function. + * + * @param {Array} ary + * An array to sort. + * @param {function} comparator + * Function to use to compare two items. + */ + exports.quickSort = function (ary, comparator) { + doQuickSort(ary, comparator, 0, ary.length - 1); + }; + + +/***/ }), +/* 10 */ +/***/ (function(module, exports, __webpack_require__) { + + /* -*- Mode: js; js-indent-level: 2; -*- */ + /* + * Copyright 2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + */ + + var SourceMapGenerator = __webpack_require__(1).SourceMapGenerator; + var util = __webpack_require__(4); + + // Matches a Windows-style `\r\n` newline or a `\n` newline used by all other + // operating systems these days (capturing the result). + var REGEX_NEWLINE = /(\r?\n)/; + + // Newline character code for charCodeAt() comparisons + var NEWLINE_CODE = 10; + + // Private symbol for identifying `SourceNode`s when multiple versions of + // the source-map library are loaded. This MUST NOT CHANGE across + // versions! + var isSourceNode = "$$$isSourceNode$$$"; + + /** + * SourceNodes provide a way to abstract over interpolating/concatenating + * snippets of generated JavaScript source code while maintaining the line and + * column information associated with the original source code. + * + * @param aLine The original line number. + * @param aColumn The original column number. + * @param aSource The original source's filename. + * @param aChunks Optional. An array of strings which are snippets of + * generated JS, or other SourceNodes. + * @param aName The original identifier. + */ + function SourceNode(aLine, aColumn, aSource, aChunks, aName) { + this.children = []; + this.sourceContents = {}; + this.line = aLine == null ? null : aLine; + this.column = aColumn == null ? null : aColumn; + this.source = aSource == null ? null : aSource; + this.name = aName == null ? null : aName; + this[isSourceNode] = true; + if (aChunks != null) this.add(aChunks); + } + + /** + * Creates a SourceNode from generated code and a SourceMapConsumer. + * + * @param aGeneratedCode The generated code + * @param aSourceMapConsumer The SourceMap for the generated code + * @param aRelativePath Optional. The path that relative sources in the + * SourceMapConsumer should be relative to. + */ + SourceNode.fromStringWithSourceMap = + function SourceNode_fromStringWithSourceMap(aGeneratedCode, aSourceMapConsumer, aRelativePath) { + // The SourceNode we want to fill with the generated code + // and the SourceMap + var node = new SourceNode(); + + // All even indices of this array are one line of the generated code, + // while all odd indices are the newlines between two adjacent lines + // (since `REGEX_NEWLINE` captures its match). + // Processed fragments are accessed by calling `shiftNextLine`. + var remainingLines = aGeneratedCode.split(REGEX_NEWLINE); + var remainingLinesIndex = 0; + var shiftNextLine = function() { + var lineContents = getNextLine(); + // The last line of a file might not have a newline. + var newLine = getNextLine() || ""; + return lineContents + newLine; + + function getNextLine() { + return remainingLinesIndex < remainingLines.length ? + remainingLines[remainingLinesIndex++] : undefined; + } + }; + + // We need to remember the position of "remainingLines" + var lastGeneratedLine = 1, lastGeneratedColumn = 0; + + // The generate SourceNodes we need a code range. + // To extract it current and last mapping is used. + // Here we store the last mapping. + var lastMapping = null; + + aSourceMapConsumer.eachMapping(function (mapping) { + if (lastMapping !== null) { + // We add the code from "lastMapping" to "mapping": + // First check if there is a new line in between. + if (lastGeneratedLine < mapping.generatedLine) { + // Associate first line with "lastMapping" + addMappingWithCode(lastMapping, shiftNextLine()); + lastGeneratedLine++; + lastGeneratedColumn = 0; + // The remaining code is added without mapping + } else { + // There is no new line in between. + // Associate the code between "lastGeneratedColumn" and + // "mapping.generatedColumn" with "lastMapping" + var nextLine = remainingLines[remainingLinesIndex] || ''; + var code = nextLine.substr(0, mapping.generatedColumn - + lastGeneratedColumn); + remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn - + lastGeneratedColumn); + lastGeneratedColumn = mapping.generatedColumn; + addMappingWithCode(lastMapping, code); + // No more remaining code, continue + lastMapping = mapping; + return; + } + } + // We add the generated code until the first mapping + // to the SourceNode without any mapping. + // Each line is added as separate string. + while (lastGeneratedLine < mapping.generatedLine) { + node.add(shiftNextLine()); + lastGeneratedLine++; + } + if (lastGeneratedColumn < mapping.generatedColumn) { + var nextLine = remainingLines[remainingLinesIndex] || ''; + node.add(nextLine.substr(0, mapping.generatedColumn)); + remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn); + lastGeneratedColumn = mapping.generatedColumn; + } + lastMapping = mapping; + }, this); + // We have processed all mappings. + if (remainingLinesIndex < remainingLines.length) { + if (lastMapping) { + // Associate the remaining code in the current line with "lastMapping" + addMappingWithCode(lastMapping, shiftNextLine()); + } + // and add the remaining lines without any mapping + node.add(remainingLines.splice(remainingLinesIndex).join("")); + } + + // Copy sourcesContent into SourceNode + aSourceMapConsumer.sources.forEach(function (sourceFile) { + var content = aSourceMapConsumer.sourceContentFor(sourceFile); + if (content != null) { + if (aRelativePath != null) { + sourceFile = util.join(aRelativePath, sourceFile); + } + node.setSourceContent(sourceFile, content); + } + }); + + return node; + + function addMappingWithCode(mapping, code) { + if (mapping === null || mapping.source === undefined) { + node.add(code); + } else { + var source = aRelativePath + ? util.join(aRelativePath, mapping.source) + : mapping.source; + node.add(new SourceNode(mapping.originalLine, + mapping.originalColumn, + source, + code, + mapping.name)); + } + } + }; + + /** + * Add a chunk of generated JS to this source node. + * + * @param aChunk A string snippet of generated JS code, another instance of + * SourceNode, or an array where each member is one of those things. + */ + SourceNode.prototype.add = function SourceNode_add(aChunk) { + if (Array.isArray(aChunk)) { + aChunk.forEach(function (chunk) { + this.add(chunk); + }, this); + } + else if (aChunk[isSourceNode] || typeof aChunk === "string") { + if (aChunk) { + this.children.push(aChunk); + } + } + else { + throw new TypeError( + "Expected a SourceNode, string, or an array of SourceNodes and strings. Got " + aChunk + ); + } + return this; + }; + + /** + * Add a chunk of generated JS to the beginning of this source node. + * + * @param aChunk A string snippet of generated JS code, another instance of + * SourceNode, or an array where each member is one of those things. + */ + SourceNode.prototype.prepend = function SourceNode_prepend(aChunk) { + if (Array.isArray(aChunk)) { + for (var i = aChunk.length-1; i >= 0; i--) { + this.prepend(aChunk[i]); + } + } + else if (aChunk[isSourceNode] || typeof aChunk === "string") { + this.children.unshift(aChunk); + } + else { + throw new TypeError( + "Expected a SourceNode, string, or an array of SourceNodes and strings. Got " + aChunk + ); + } + return this; + }; + + /** + * Walk over the tree of JS snippets in this node and its children. The + * walking function is called once for each snippet of JS and is passed that + * snippet and the its original associated source's line/column location. + * + * @param aFn The traversal function. + */ + SourceNode.prototype.walk = function SourceNode_walk(aFn) { + var chunk; + for (var i = 0, len = this.children.length; i < len; i++) { + chunk = this.children[i]; + if (chunk[isSourceNode]) { + chunk.walk(aFn); + } + else { + if (chunk !== '') { + aFn(chunk, { source: this.source, + line: this.line, + column: this.column, + name: this.name }); + } + } + } + }; + + /** + * Like `String.prototype.join` except for SourceNodes. Inserts `aStr` between + * each of `this.children`. + * + * @param aSep The separator. + */ + SourceNode.prototype.join = function SourceNode_join(aSep) { + var newChildren; + var i; + var len = this.children.length; + if (len > 0) { + newChildren = []; + for (i = 0; i < len-1; i++) { + newChildren.push(this.children[i]); + newChildren.push(aSep); + } + newChildren.push(this.children[i]); + this.children = newChildren; + } + return this; + }; + + /** + * Call String.prototype.replace on the very right-most source snippet. Useful + * for trimming whitespace from the end of a source node, etc. + * + * @param aPattern The pattern to replace. + * @param aReplacement The thing to replace the pattern with. + */ + SourceNode.prototype.replaceRight = function SourceNode_replaceRight(aPattern, aReplacement) { + var lastChild = this.children[this.children.length - 1]; + if (lastChild[isSourceNode]) { + lastChild.replaceRight(aPattern, aReplacement); + } + else if (typeof lastChild === 'string') { + this.children[this.children.length - 1] = lastChild.replace(aPattern, aReplacement); + } + else { + this.children.push(''.replace(aPattern, aReplacement)); + } + return this; + }; + + /** + * Set the source content for a source file. This will be added to the SourceMapGenerator + * in the sourcesContent field. + * + * @param aSourceFile The filename of the source file + * @param aSourceContent The content of the source file + */ + SourceNode.prototype.setSourceContent = + function SourceNode_setSourceContent(aSourceFile, aSourceContent) { + this.sourceContents[util.toSetString(aSourceFile)] = aSourceContent; + }; + + /** + * Walk over the tree of SourceNodes. The walking function is called for each + * source file content and is passed the filename and source content. + * + * @param aFn The traversal function. + */ + SourceNode.prototype.walkSourceContents = + function SourceNode_walkSourceContents(aFn) { + for (var i = 0, len = this.children.length; i < len; i++) { + if (this.children[i][isSourceNode]) { + this.children[i].walkSourceContents(aFn); + } + } + + var sources = Object.keys(this.sourceContents); + for (var i = 0, len = sources.length; i < len; i++) { + aFn(util.fromSetString(sources[i]), this.sourceContents[sources[i]]); + } + }; + + /** + * Return the string representation of this source node. Walks over the tree + * and concatenates all the various snippets together to one string. + */ + SourceNode.prototype.toString = function SourceNode_toString() { + var str = ""; + this.walk(function (chunk) { + str += chunk; + }); + return str; + }; + + /** + * Returns the string representation of this source node along with a source + * map. + */ + SourceNode.prototype.toStringWithSourceMap = function SourceNode_toStringWithSourceMap(aArgs) { + var generated = { + code: "", + line: 1, + column: 0 + }; + var map = new SourceMapGenerator(aArgs); + var sourceMappingActive = false; + var lastOriginalSource = null; + var lastOriginalLine = null; + var lastOriginalColumn = null; + var lastOriginalName = null; + this.walk(function (chunk, original) { + generated.code += chunk; + if (original.source !== null + && original.line !== null + && original.column !== null) { + if(lastOriginalSource !== original.source + || lastOriginalLine !== original.line + || lastOriginalColumn !== original.column + || lastOriginalName !== original.name) { + map.addMapping({ + source: original.source, + original: { + line: original.line, + column: original.column + }, + generated: { + line: generated.line, + column: generated.column + }, + name: original.name + }); + } + lastOriginalSource = original.source; + lastOriginalLine = original.line; + lastOriginalColumn = original.column; + lastOriginalName = original.name; + sourceMappingActive = true; + } else if (sourceMappingActive) { + map.addMapping({ + generated: { + line: generated.line, + column: generated.column + } + }); + lastOriginalSource = null; + sourceMappingActive = false; + } + for (var idx = 0, length = chunk.length; idx < length; idx++) { + if (chunk.charCodeAt(idx) === NEWLINE_CODE) { + generated.line++; + generated.column = 0; + // Mappings end at eol + if (idx + 1 === length) { + lastOriginalSource = null; + sourceMappingActive = false; + } else if (sourceMappingActive) { + map.addMapping({ + source: original.source, + original: { + line: original.line, + column: original.column + }, + generated: { + line: generated.line, + column: generated.column + }, + name: original.name + }); + } + } else { + generated.column++; + } + } + }); + this.walkSourceContents(function (sourceFile, sourceContent) { + map.setSourceContent(sourceFile, sourceContent); + }); + + return { code: generated.code, map: map }; + }; + + exports.SourceNode = SourceNode; + + +/***/ }) +/******/ ]) +}); +; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay91bml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uIiwid2VicGFjazovLy93ZWJwYWNrL2Jvb3RzdHJhcCAxNjI0YzcyOTliODg3ZjdiZGY2NCIsIndlYnBhY2s6Ly8vLi9zb3VyY2UtbWFwLmpzIiwid2VicGFjazovLy8uL2xpYi9zb3VyY2UtbWFwLWdlbmVyYXRvci5qcyIsIndlYnBhY2s6Ly8vLi9saWIvYmFzZTY0LXZscS5qcyIsIndlYnBhY2s6Ly8vLi9saWIvYmFzZTY0LmpzIiwid2VicGFjazovLy8uL2xpYi91dGlsLmpzIiwid2VicGFjazovLy8uL2xpYi9hcnJheS1zZXQuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL21hcHBpbmctbGlzdC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvc291cmNlLW1hcC1jb25zdW1lci5qcyIsIndlYnBhY2s6Ly8vLi9saWIvYmluYXJ5LXNlYXJjaC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvcXVpY2stc29ydC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvc291cmNlLW5vZGUuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNELE87QUNWQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSx1QkFBZTtBQUNmO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOzs7QUFHQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOzs7Ozs7O0FDdENBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7QUNQQSxpQkFBZ0Isb0JBQW9CO0FBQ3BDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxNQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLE1BQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLDJDQUEwQyxTQUFTO0FBQ25EO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EscUJBQW9CO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7OztBQ3hhQSxpQkFBZ0Isb0JBQW9CO0FBQ3BDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0REFBMkQ7QUFDM0QscUJBQW9CO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBRzs7QUFFSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUc7O0FBRUg7QUFDQTtBQUNBOzs7Ozs7O0FDM0lBLGlCQUFnQixvQkFBb0I7QUFDcEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFnQjtBQUNoQixpQkFBZ0I7O0FBRWhCLG9CQUFtQjtBQUNuQixxQkFBb0I7O0FBRXBCLGlCQUFnQjtBQUNoQixpQkFBZ0I7O0FBRWhCLGlCQUFnQjtBQUNoQixrQkFBaUI7O0FBRWpCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOzs7Ozs7O0FDbEVBLGlCQUFnQixvQkFBb0I7QUFDcEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUc7QUFDSDtBQUNBLElBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLCtDQUE4QyxRQUFRO0FBQ3REO0FBQ0E7QUFDQTtBQUNBLE1BQUs7QUFDTDtBQUNBLE1BQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsRUFBQzs7QUFFRDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSw0QkFBMkIsUUFBUTtBQUNuQztBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGNBQWE7QUFDYjs7QUFFQTtBQUNBLGVBQWM7QUFDZDs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVDQUFzQztBQUN0QztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOzs7Ozs7O0FDdmVBLGlCQUFnQixvQkFBb0I7QUFDcEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVDQUFzQyxTQUFTO0FBQy9DO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7QUN4SEEsaUJBQWdCLG9CQUFvQjtBQUNwQztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFnQjtBQUNoQjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7QUM5RUEsaUJBQWdCLG9CQUFvQjtBQUNwQztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxFQUFDOztBQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEVBQUM7O0FBRUQ7QUFDQTtBQUNBO0FBQ0Esb0JBQW1CO0FBQ25COztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVc7O0FBRVg7QUFDQTtBQUNBLFFBQU87QUFDUDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBVzs7QUFFWDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNEJBQTJCLE1BQU07QUFDakM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsSUFBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGNBQWEsa0NBQWtDO0FBQy9DO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLHVEQUFzRCxZQUFZO0FBQ2xFO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUM7O0FBRUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0Esb0NBQW1DO0FBQ25DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwQkFBeUIsY0FBYztBQUN2QztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFVBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXVCLHdDQUF3QztBQUMvRDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdEQUErQyxtQkFBbUIsRUFBRTtBQUNwRTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQkFBaUIsb0JBQW9CO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw4QkFBNkIsTUFBTTtBQUNuQztBQUNBLFFBQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBTztBQUNQO0FBQ0E7QUFDQSxJQUFHO0FBQ0g7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBbUIsMkJBQTJC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Q0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsWUFBVyxPQUFPO0FBQ2xCO0FBQ0EsWUFBVyxPQUFPO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsWUFBVyxNQUFNO0FBQ2pCO0FBQ0EsWUFBVyxTQUFTO0FBQ3BCO0FBQ0EsWUFBVyxPQUFPO0FBQ2xCO0FBQ0EsWUFBVyxPQUFPO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBbUIsT0FBTztBQUMxQjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsWUFBVyxNQUFNO0FBQ2pCO0FBQ0EsWUFBVyxTQUFTO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7QUNqSEEsaUJBQWdCLG9CQUFvQjtBQUNwQztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBSzs7QUFFTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxRQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0NBQWlDLFFBQVE7QUFDekM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOENBQTZDLFNBQVM7QUFDdEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQW9CO0FBQ3BCO0FBQ0E7QUFDQSx1Q0FBc0M7QUFDdEM7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWUsV0FBVztBQUMxQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0RBQStDLFNBQVM7QUFDeEQ7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSwwQ0FBeUMsU0FBUztBQUNsRDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQSxZQUFXO0FBQ1g7QUFDQSxVQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsNkNBQTRDLGNBQWM7QUFDMUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQSxjQUFhO0FBQ2I7QUFDQSxZQUFXO0FBQ1g7QUFDQSxRQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsSUFBRztBQUNIO0FBQ0E7QUFDQSxJQUFHOztBQUVILFdBQVU7QUFDVjs7QUFFQSIsImZpbGUiOiJzb3VyY2UtbWFwLmRlYnVnLmpzIiwic291cmNlc0NvbnRlbnQiOlsiKGZ1bmN0aW9uIHdlYnBhY2tVbml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uKHJvb3QsIGZhY3RvcnkpIHtcblx0aWYodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgPT09ICdvYmplY3QnKVxuXHRcdG1vZHVsZS5leHBvcnRzID0gZmFjdG9yeSgpO1xuXHRlbHNlIGlmKHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZClcblx0XHRkZWZpbmUoW10sIGZhY3RvcnkpO1xuXHRlbHNlIGlmKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0Jylcblx0XHRleHBvcnRzW1wic291cmNlTWFwXCJdID0gZmFjdG9yeSgpO1xuXHRlbHNlXG5cdFx0cm9vdFtcInNvdXJjZU1hcFwiXSA9IGZhY3RvcnkoKTtcbn0pKHRoaXMsIGZ1bmN0aW9uKCkge1xucmV0dXJuIFxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyB3ZWJwYWNrL3VuaXZlcnNhbE1vZHVsZURlZmluaXRpb24iLCIgXHQvLyBUaGUgbW9kdWxlIGNhY2hlXG4gXHR2YXIgaW5zdGFsbGVkTW9kdWxlcyA9IHt9O1xuXG4gXHQvLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuIFx0ZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuXG4gXHRcdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuIFx0XHRpZihpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSlcbiBcdFx0XHRyZXR1cm4gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0uZXhwb3J0cztcblxuIFx0XHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuIFx0XHR2YXIgbW9kdWxlID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0gPSB7XG4gXHRcdFx0ZXhwb3J0czoge30sXG4gXHRcdFx0aWQ6IG1vZHVsZUlkLFxuIFx0XHRcdGxvYWRlZDogZmFsc2VcbiBcdFx0fTtcblxuIFx0XHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cbiBcdFx0bW9kdWxlc1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cbiBcdFx0Ly8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZFxuIFx0XHRtb2R1bGUubG9hZGVkID0gdHJ1ZTtcblxuIFx0XHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuIFx0XHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG4gXHR9XG5cblxuIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGVzIG9iamVjdCAoX193ZWJwYWNrX21vZHVsZXNfXylcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubSA9IG1vZHVsZXM7XG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlIGNhY2hlXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmMgPSBpbnN0YWxsZWRNb2R1bGVzO1xuXG4gXHQvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfX1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5wID0gXCJcIjtcblxuIFx0Ly8gTG9hZCBlbnRyeSBtb2R1bGUgYW5kIHJldHVybiBleHBvcnRzXG4gXHRyZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXygwKTtcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyB3ZWJwYWNrL2Jvb3RzdHJhcCAxNjI0YzcyOTliODg3ZjdiZGY2NCIsIi8qXG4gKiBDb3B5cmlnaHQgMjAwOS0yMDExIE1vemlsbGEgRm91bmRhdGlvbiBhbmQgY29udHJpYnV0b3JzXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTmV3IEJTRCBsaWNlbnNlLiBTZWUgTElDRU5TRS50eHQgb3I6XG4gKiBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvQlNELTMtQ2xhdXNlXG4gKi9cbmV4cG9ydHMuU291cmNlTWFwR2VuZXJhdG9yID0gcmVxdWlyZSgnLi9saWIvc291cmNlLW1hcC1nZW5lcmF0b3InKS5Tb3VyY2VNYXBHZW5lcmF0b3I7XG5leHBvcnRzLlNvdXJjZU1hcENvbnN1bWVyID0gcmVxdWlyZSgnLi9saWIvc291cmNlLW1hcC1jb25zdW1lcicpLlNvdXJjZU1hcENvbnN1bWVyO1xuZXhwb3J0cy5Tb3VyY2VOb2RlID0gcmVxdWlyZSgnLi9saWIvc291cmNlLW5vZGUnKS5Tb3VyY2VOb2RlO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9zb3VyY2UtbWFwLmpzXG4vLyBtb2R1bGUgaWQgPSAwXG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIi8qIC0qLSBNb2RlOiBqczsganMtaW5kZW50LWxldmVsOiAyOyAtKi0gKi9cbi8qXG4gKiBDb3B5cmlnaHQgMjAxMSBNb3ppbGxhIEZvdW5kYXRpb24gYW5kIGNvbnRyaWJ1dG9yc1xuICogTGljZW5zZWQgdW5kZXIgdGhlIE5ldyBCU0QgbGljZW5zZS4gU2VlIExJQ0VOU0Ugb3I6XG4gKiBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvQlNELTMtQ2xhdXNlXG4gKi9cblxudmFyIGJhc2U2NFZMUSA9IHJlcXVpcmUoJy4vYmFzZTY0LXZscScpO1xudmFyIHV0aWwgPSByZXF1aXJlKCcuL3V0aWwnKTtcbnZhciBBcnJheVNldCA9IHJlcXVpcmUoJy4vYXJyYXktc2V0JykuQXJyYXlTZXQ7XG52YXIgTWFwcGluZ0xpc3QgPSByZXF1aXJlKCcuL21hcHBpbmctbGlzdCcpLk1hcHBpbmdMaXN0O1xuXG4vKipcbiAqIEFuIGluc3RhbmNlIG9mIHRoZSBTb3VyY2VNYXBHZW5lcmF0b3IgcmVwcmVzZW50cyBhIHNvdXJjZSBtYXAgd2hpY2ggaXNcbiAqIGJlaW5nIGJ1aWx0IGluY3JlbWVudGFsbHkuIFlvdSBtYXkgcGFzcyBhbiBvYmplY3Qgd2l0aCB0aGUgZm9sbG93aW5nXG4gKiBwcm9wZXJ0aWVzOlxuICpcbiAqICAgLSBmaWxlOiBUaGUgZmlsZW5hbWUgb2YgdGhlIGdlbmVyYXRlZCBzb3VyY2UuXG4gKiAgIC0gc291cmNlUm9vdDogQSByb290IGZvciBhbGwgcmVsYXRpdmUgVVJMcyBpbiB0aGlzIHNvdXJjZSBtYXAuXG4gKi9cbmZ1bmN0aW9uIFNvdXJjZU1hcEdlbmVyYXRvcihhQXJncykge1xuICBpZiAoIWFBcmdzKSB7XG4gICAgYUFyZ3MgPSB7fTtcbiAgfVxuICB0aGlzLl9maWxlID0gdXRpbC5nZXRBcmcoYUFyZ3MsICdmaWxlJywgbnVsbCk7XG4gIHRoaXMuX3NvdXJjZVJvb3QgPSB1dGlsLmdldEFyZyhhQXJncywgJ3NvdXJjZVJvb3QnLCBudWxsKTtcbiAgdGhpcy5fc2tpcFZhbGlkYXRpb24gPSB1dGlsLmdldEFyZyhhQXJncywgJ3NraXBWYWxpZGF0aW9uJywgZmFsc2UpO1xuICB0aGlzLl9zb3VyY2VzID0gbmV3IEFycmF5U2V0KCk7XG4gIHRoaXMuX25hbWVzID0gbmV3IEFycmF5U2V0KCk7XG4gIHRoaXMuX21hcHBpbmdzID0gbmV3IE1hcHBpbmdMaXN0KCk7XG4gIHRoaXMuX3NvdXJjZXNDb250ZW50cyA9IG51bGw7XG59XG5cblNvdXJjZU1hcEdlbmVyYXRvci5wcm90b3R5cGUuX3ZlcnNpb24gPSAzO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBuZXcgU291cmNlTWFwR2VuZXJhdG9yIGJhc2VkIG9uIGEgU291cmNlTWFwQ29uc3VtZXJcbiAqXG4gKiBAcGFyYW0gYVNvdXJjZU1hcENvbnN1bWVyIFRoZSBTb3VyY2VNYXAuXG4gKi9cblNvdXJjZU1hcEdlbmVyYXRvci5mcm9tU291cmNlTWFwID1cbiAgZnVuY3Rpb24gU291cmNlTWFwR2VuZXJhdG9yX2Zyb21Tb3VyY2VNYXAoYVNvdXJjZU1hcENvbnN1bWVyKSB7XG4gICAgdmFyIHNvdXJjZVJvb3QgPSBhU291cmNlTWFwQ29uc3VtZXIuc291cmNlUm9vdDtcbiAgICB2YXIgZ2VuZXJhdG9yID0gbmV3IFNvdXJjZU1hcEdlbmVyYXRvcih7XG4gICAgICBmaWxlOiBhU291cmNlTWFwQ29uc3VtZXIuZmlsZSxcbiAgICAgIHNvdXJjZVJvb3Q6IHNvdXJjZVJvb3RcbiAgICB9KTtcbiAgICBhU291cmNlTWFwQ29uc3VtZXIuZWFjaE1hcHBpbmcoZnVuY3Rpb24gKG1hcHBpbmcpIHtcbiAgICAgIHZhciBuZXdNYXBwaW5nID0ge1xuICAgICAgICBnZW5lcmF0ZWQ6IHtcbiAgICAgICAgICBsaW5lOiBtYXBwaW5nLmdlbmVyYXRlZExpbmUsXG4gICAgICAgICAgY29sdW1uOiBtYXBwaW5nLmdlbmVyYXRlZENvbHVtblxuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICBpZiAobWFwcGluZy5zb3VyY2UgIT0gbnVsbCkge1xuICAgICAgICBuZXdNYXBwaW5nLnNvdXJjZSA9IG1hcHBpbmcuc291cmNlO1xuICAgICAgICBpZiAoc291cmNlUm9vdCAhPSBudWxsKSB7XG4gICAgICAgICAgbmV3TWFwcGluZy5zb3VyY2UgPSB1dGlsLnJlbGF0aXZlKHNvdXJjZVJvb3QsIG5ld01hcHBpbmcuc291cmNlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIG5ld01hcHBpbmcub3JpZ2luYWwgPSB7XG4gICAgICAgICAgbGluZTogbWFwcGluZy5vcmlnaW5hbExpbmUsXG4gICAgICAgICAgY29sdW1uOiBtYXBwaW5nLm9yaWdpbmFsQ29sdW1uXG4gICAgICAgIH07XG5cbiAgICAgICAgaWYgKG1hcHBpbmcubmFtZSAhPSBudWxsKSB7XG4gICAgICAgICAgbmV3TWFwcGluZy5uYW1lID0gbWFwcGluZy5uYW1lO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGdlbmVyYXRvci5hZGRNYXBwaW5nKG5ld01hcHBpbmcpO1xuICAgIH0pO1xuICAgIGFTb3VyY2VNYXBDb25zdW1lci5zb3VyY2VzLmZvckVhY2goZnVuY3Rpb24gKHNvdXJjZUZpbGUpIHtcbiAgICAgIHZhciBzb3VyY2VSZWxhdGl2ZSA9IHNvdXJjZUZpbGU7XG4gICAgICBpZiAoc291cmNlUm9vdCAhPT0gbnVsbCkge1xuICAgICAgICBzb3VyY2VSZWxhdGl2ZSA9IHV0aWwucmVsYXRpdmUoc291cmNlUm9vdCwgc291cmNlRmlsZSk7XG4gICAgICB9XG5cbiAgICAgIGlmICghZ2VuZXJhdG9yLl9zb3VyY2VzLmhhcyhzb3VyY2VSZWxhdGl2ZSkpIHtcbiAgICAgICAgZ2VuZXJhdG9yLl9zb3VyY2VzLmFkZChzb3VyY2VSZWxhdGl2ZSk7XG4gICAgICB9XG5cbiAgICAgIHZhciBjb250ZW50ID0gYVNvdXJjZU1hcENvbnN1bWVyLnNvdXJjZUNvbnRlbnRGb3Ioc291cmNlRmlsZSk7XG4gICAgICBpZiAoY29udGVudCAhPSBudWxsKSB7XG4gICAgICAgIGdlbmVyYXRvci5zZXRTb3VyY2VDb250ZW50KHNvdXJjZUZpbGUsIGNvbnRlbnQpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBnZW5lcmF0b3I7XG4gIH07XG5cbi8qKlxuICogQWRkIGEgc2luZ2xlIG1hcHBpbmcgZnJvbSBvcmlnaW5hbCBzb3VyY2UgbGluZSBhbmQgY29sdW1uIHRvIHRoZSBnZW5lcmF0ZWRcbiAqIHNvdXJjZSdzIGxpbmUgYW5kIGNvbHVtbiBmb3IgdGhpcyBzb3VyY2UgbWFwIGJlaW5nIGNyZWF0ZWQuIFRoZSBtYXBwaW5nXG4gKiBvYmplY3Qgc2hvdWxkIGhhdmUgdGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzOlxuICpcbiAqICAgLSBnZW5lcmF0ZWQ6IEFuIG9iamVjdCB3aXRoIHRoZSBnZW5lcmF0ZWQgbGluZSBhbmQgY29sdW1uIHBvc2l0aW9ucy5cbiAqICAgLSBvcmlnaW5hbDogQW4gb2JqZWN0IHdpdGggdGhlIG9yaWdpbmFsIGxpbmUgYW5kIGNvbHVtbiBwb3NpdGlvbnMuXG4gKiAgIC0gc291cmNlOiBUaGUgb3JpZ2luYWwgc291cmNlIGZpbGUgKHJlbGF0aXZlIHRvIHRoZSBzb3VyY2VSb290KS5cbiAqICAgLSBuYW1lOiBBbiBvcHRpb25hbCBvcmlnaW5hbCB0b2tlbiBuYW1lIGZvciB0aGlzIG1hcHBpbmcuXG4gKi9cblNvdXJjZU1hcEdlbmVyYXRvci5wcm90b3R5cGUuYWRkTWFwcGluZyA9XG4gIGZ1bmN0aW9uIFNvdXJjZU1hcEdlbmVyYXRvcl9hZGRNYXBwaW5nKGFBcmdzKSB7XG4gICAgdmFyIGdlbmVyYXRlZCA9IHV0aWwuZ2V0QXJnKGFBcmdzLCAnZ2VuZXJhdGVkJyk7XG4gICAgdmFyIG9yaWdpbmFsID0gdXRpbC5nZXRBcmcoYUFyZ3MsICdvcmlnaW5hbCcsIG51bGwpO1xuICAgIHZhciBzb3VyY2UgPSB1dGlsLmdldEFyZyhhQXJncywgJ3NvdXJjZScsIG51bGwpO1xuICAgIHZhciBuYW1lID0gdXRpbC5nZXRBcmcoYUFyZ3MsICduYW1lJywgbnVsbCk7XG5cbiAgICBpZiAoIXRoaXMuX3NraXBWYWxpZGF0aW9uKSB7XG4gICAgICB0aGlzLl92YWxpZGF0ZU1hcHBpbmcoZ2VuZXJhdGVkLCBvcmlnaW5hbCwgc291cmNlLCBuYW1lKTtcbiAgICB9XG5cbiAgICBpZiAoc291cmNlICE9IG51bGwpIHtcbiAgICAgIHNvdXJjZSA9IFN0cmluZyhzb3VyY2UpO1xuICAgICAgaWYgKCF0aGlzLl9zb3VyY2VzLmhhcyhzb3VyY2UpKSB7XG4gICAgICAgIHRoaXMuX3NvdXJjZXMuYWRkKHNvdXJjZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKG5hbWUgIT0gbnVsbCkge1xuICAgICAgbmFtZSA9IFN0cmluZyhuYW1lKTtcbiAgICAgIGlmICghdGhpcy5fbmFtZXMuaGFzKG5hbWUpKSB7XG4gICAgICAgIHRoaXMuX25hbWVzLmFkZChuYW1lKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLl9tYXBwaW5ncy5hZGQoe1xuICAgICAgZ2VuZXJhdGVkTGluZTogZ2VuZXJhdGVkLmxpbmUsXG4gICAgICBnZW5lcmF0ZWRDb2x1bW46IGdlbmVyYXRlZC5jb2x1bW4sXG4gICAgICBvcmlnaW5hbExpbmU6IG9yaWdpbmFsICE9IG51bGwgJiYgb3JpZ2luYWwubGluZSxcbiAgICAgIG9yaWdpbmFsQ29sdW1uOiBvcmlnaW5hbCAhPSBudWxsICYmIG9yaWdpbmFsLmNvbHVtbixcbiAgICAgIHNvdXJjZTogc291cmNlLFxuICAgICAgbmFtZTogbmFtZVxuICAgIH0pO1xuICB9O1xuXG4vKipcbiAqIFNldCB0aGUgc291cmNlIGNvbnRlbnQgZm9yIGEgc291cmNlIGZpbGUuXG4gKi9cblNvdXJjZU1hcEdlbmVyYXRvci5wcm90b3R5cGUuc2V0U291cmNlQ29udGVudCA9XG4gIGZ1bmN0aW9uIFNvdXJjZU1hcEdlbmVyYXRvcl9zZXRTb3VyY2VDb250ZW50KGFTb3VyY2VGaWxlLCBhU291cmNlQ29udGVudCkge1xuICAgIHZhciBzb3VyY2UgPSBhU291cmNlRmlsZTtcbiAgICBpZiAodGhpcy5fc291cmNlUm9vdCAhPSBudWxsKSB7XG4gICAgICBzb3VyY2UgPSB1dGlsLnJlbGF0aXZlKHRoaXMuX3NvdXJjZVJvb3QsIHNvdXJjZSk7XG4gICAgfVxuXG4gICAgaWYgKGFTb3VyY2VDb250ZW50ICE9IG51bGwpIHtcbiAgICAgIC8vIEFkZCB0aGUgc291cmNlIGNvbnRlbnQgdG8gdGhlIF9zb3VyY2VzQ29udGVudHMgbWFwLlxuICAgICAgLy8gQ3JlYXRlIGEgbmV3IF9zb3VyY2VzQ29udGVudHMgbWFwIGlmIHRoZSBwcm9wZXJ0eSBpcyBudWxsLlxuICAgICAgaWYgKCF0aGlzLl9zb3VyY2VzQ29udGVudHMpIHtcbiAgICAgICAgdGhpcy5fc291cmNlc0NvbnRlbnRzID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuX3NvdXJjZXNDb250ZW50c1t1dGlsLnRvU2V0U3RyaW5nKHNvdXJjZSldID0gYVNvdXJjZUNvbnRlbnQ7XG4gICAgfSBlbHNlIGlmICh0aGlzLl9zb3VyY2VzQ29udGVudHMpIHtcbiAgICAgIC8vIFJlbW92ZSB0aGUgc291cmNlIGZpbGUgZnJvbSB0aGUgX3NvdXJjZXNDb250ZW50cyBtYXAuXG4gICAgICAvLyBJZiB0aGUgX3NvdXJjZXNDb250ZW50cyBtYXAgaXMgZW1wdHksIHNldCB0aGUgcHJvcGVydHkgdG8gbnVsbC5cbiAgICAgIGRlbGV0ZSB0aGlzLl9zb3VyY2VzQ29udGVudHNbdXRpbC50b1NldFN0cmluZyhzb3VyY2UpXTtcbiAgICAgIGlmIChPYmplY3Qua2V5cyh0aGlzLl9zb3VyY2VzQ29udGVudHMpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICB0aGlzLl9zb3VyY2VzQ29udGVudHMgPSBudWxsO1xuICAgICAgfVxuICAgIH1cbiAgfTtcblxuLyoqXG4gKiBBcHBsaWVzIHRoZSBtYXBwaW5ncyBvZiBhIHN1Yi1zb3VyY2UtbWFwIGZvciBhIHNwZWNpZmljIHNvdXJjZSBmaWxlIHRvIHRoZVxuICogc291cmNlIG1hcCBiZWluZyBnZW5lcmF0ZWQuIEVhY2ggbWFwcGluZyB0byB0aGUgc3VwcGxpZWQgc291cmNlIGZpbGUgaXNcbiAqIHJld3JpdHRlbiB1c2luZyB0aGUgc3VwcGxpZWQgc291cmNlIG1hcC4gTm90ZTogVGhlIHJlc29sdXRpb24gZm9yIHRoZVxuICogcmVzdWx0aW5nIG1hcHBpbmdzIGlzIHRoZSBtaW5pbWl1bSBvZiB0aGlzIG1hcCBhbmQgdGhlIHN1cHBsaWVkIG1hcC5cbiAqXG4gKiBAcGFyYW0gYVNvdXJjZU1hcENvbnN1bWVyIFRoZSBzb3VyY2UgbWFwIHRvIGJlIGFwcGxpZWQuXG4gKiBAcGFyYW0gYVNvdXJjZUZpbGUgT3B0aW9uYWwuIFRoZSBmaWxlbmFtZSBvZiB0aGUgc291cmNlIGZpbGUuXG4gKiAgICAgICAgSWYgb21pdHRlZCwgU291cmNlTWFwQ29uc3VtZXIncyBmaWxlIHByb3BlcnR5IHdpbGwgYmUgdXNlZC5cbiAqIEBwYXJhbSBhU291cmNlTWFwUGF0aCBPcHRpb25hbC4gVGhlIGRpcm5hbWUgb2YgdGhlIHBhdGggdG8gdGhlIHNvdXJjZSBtYXBcbiAqICAgICAgICB0byBiZSBhcHBsaWVkLiBJZiByZWxhdGl2ZSwgaXQgaXMgcmVsYXRpdmUgdG8gdGhlIFNvdXJjZU1hcENvbnN1bWVyLlxuICogICAgICAgIFRoaXMgcGFyYW1ldGVyIGlzIG5lZWRlZCB3aGVuIHRoZSB0d28gc291cmNlIG1hcHMgYXJlbid0IGluIHRoZSBzYW1lXG4gKiAgICAgICAgZGlyZWN0b3J5LCBhbmQgdGhlIHNvdXJjZSBtYXAgdG8gYmUgYXBwbGllZCBjb250YWlucyByZWxhdGl2ZSBzb3VyY2VcbiAqICAgICAgICBwYXRocy4gSWYgc28sIHRob3NlIHJlbGF0aXZlIHNvdXJjZSBwYXRocyBuZWVkIHRvIGJlIHJld3JpdHRlblxuICogICAgICAgIHJlbGF0aXZlIHRvIHRoZSBTb3VyY2VNYXBHZW5lcmF0b3IuXG4gKi9cblNvdXJjZU1hcEdlbmVyYXRvci5wcm90b3R5cGUuYXBwbHlTb3VyY2VNYXAgPVxuICBmdW5jdGlvbiBTb3VyY2VNYXBHZW5lcmF0b3JfYXBwbHlTb3VyY2VNYXAoYVNvdXJjZU1hcENvbnN1bWVyLCBhU291cmNlRmlsZSwgYVNvdXJjZU1hcFBhdGgpIHtcbiAgICB2YXIgc291cmNlRmlsZSA9IGFTb3VyY2VGaWxlO1xuICAgIC8vIElmIGFTb3VyY2VGaWxlIGlzIG9taXR0ZWQsIHdlIHdpbGwgdXNlIHRoZSBmaWxlIHByb3BlcnR5IG9mIHRoZSBTb3VyY2VNYXBcbiAgICBpZiAoYVNvdXJjZUZpbGUgPT0gbnVsbCkge1xuICAgICAgaWYgKGFTb3VyY2VNYXBDb25zdW1lci5maWxlID09IG51bGwpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICdTb3VyY2VNYXBHZW5lcmF0b3IucHJvdG90eXBlLmFwcGx5U291cmNlTWFwIHJlcXVpcmVzIGVpdGhlciBhbiBleHBsaWNpdCBzb3VyY2UgZmlsZSwgJyArXG4gICAgICAgICAgJ29yIHRoZSBzb3VyY2UgbWFwXFwncyBcImZpbGVcIiBwcm9wZXJ0eS4gQm90aCB3ZXJlIG9taXR0ZWQuJ1xuICAgICAgICApO1xuICAgICAgfVxuICAgICAgc291cmNlRmlsZSA9IGFTb3VyY2VNYXBDb25zdW1lci5maWxlO1xuICAgIH1cbiAgICB2YXIgc291cmNlUm9vdCA9IHRoaXMuX3NvdXJjZVJvb3Q7XG4gICAgLy8gTWFrZSBcInNvdXJjZUZpbGVcIiByZWxhdGl2ZSBpZiBhbiBhYnNvbHV0ZSBVcmwgaXMgcGFzc2VkLlxuICAgIGlmIChzb3VyY2VSb290ICE9IG51bGwpIHtcbiAgICAgIHNvdXJjZUZpbGUgPSB1dGlsLnJlbGF0aXZlKHNvdXJjZVJvb3QsIHNvdXJjZUZpbGUpO1xuICAgIH1cbiAgICAvLyBBcHBseWluZyB0aGUgU291cmNlTWFwIGNhbiBhZGQgYW5kIHJlbW92ZSBpdGVtcyBmcm9tIHRoZSBzb3VyY2VzIGFuZFxuICAgIC8vIHRoZSBuYW1lcyBhcnJheS5cbiAgICB2YXIgbmV3U291cmNlcyA9IG5ldyBBcnJheVNldCgpO1xuICAgIHZhciBuZXdOYW1lcyA9IG5ldyBBcnJheVNldCgpO1xuXG4gICAgLy8gRmluZCBtYXBwaW5ncyBmb3IgdGhlIFwic291cmNlRmlsZVwiXG4gICAgdGhpcy5fbWFwcGluZ3MudW5zb3J0ZWRGb3JFYWNoKGZ1bmN0aW9uIChtYXBwaW5nKSB7XG4gICAgICBpZiAobWFwcGluZy5zb3VyY2UgPT09IHNvdXJjZUZpbGUgJiYgbWFwcGluZy5vcmlnaW5hbExpbmUgIT0gbnVsbCkge1xuICAgICAgICAvLyBDaGVjayBpZiBpdCBjYW4gYmUgbWFwcGVkIGJ5IHRoZSBzb3VyY2UgbWFwLCB0aGVuIHVwZGF0ZSB0aGUgbWFwcGluZy5cbiAgICAgICAgdmFyIG9yaWdpbmFsID0gYVNvdXJjZU1hcENvbnN1bWVyLm9yaWdpbmFsUG9zaXRpb25Gb3Ioe1xuICAgICAgICAgIGxpbmU6IG1hcHBpbmcub3JpZ2luYWxMaW5lLFxuICAgICAgICAgIGNvbHVtbjogbWFwcGluZy5vcmlnaW5hbENvbHVtblxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKG9yaWdpbmFsLnNvdXJjZSAhPSBudWxsKSB7XG4gICAgICAgICAgLy8gQ29weSBtYXBwaW5nXG4gICAgICAgICAgbWFwcGluZy5zb3VyY2UgPSBvcmlnaW5hbC5zb3VyY2U7XG4gICAgICAgICAgaWYgKGFTb3VyY2VNYXBQYXRoICE9IG51bGwpIHtcbiAgICAgICAgICAgIG1hcHBpbmcuc291cmNlID0gdXRpbC5qb2luKGFTb3VyY2VNYXBQYXRoLCBtYXBwaW5nLnNvdXJjZSlcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHNvdXJjZVJvb3QgIT0gbnVsbCkge1xuICAgICAgICAgICAgbWFwcGluZy5zb3VyY2UgPSB1dGlsLnJlbGF0aXZlKHNvdXJjZVJvb3QsIG1hcHBpbmcuc291cmNlKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgbWFwcGluZy5vcmlnaW5hbExpbmUgPSBvcmlnaW5hbC5saW5lO1xuICAgICAgICAgIG1hcHBpbmcub3JpZ2luYWxDb2x1bW4gPSBvcmlnaW5hbC5jb2x1bW47XG4gICAgICAgICAgaWYgKG9yaWdpbmFsLm5hbWUgIT0gbnVsbCkge1xuICAgICAgICAgICAgbWFwcGluZy5uYW1lID0gb3JpZ2luYWwubmFtZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgdmFyIHNvdXJjZSA9IG1hcHBpbmcuc291cmNlO1xuICAgICAgaWYgKHNvdXJjZSAhPSBudWxsICYmICFuZXdTb3VyY2VzLmhhcyhzb3VyY2UpKSB7XG4gICAgICAgIG5ld1NvdXJjZXMuYWRkKHNvdXJjZSk7XG4gICAgICB9XG5cbiAgICAgIHZhciBuYW1lID0gbWFwcGluZy5uYW1lO1xuICAgICAgaWYgKG5hbWUgIT0gbnVsbCAmJiAhbmV3TmFtZXMuaGFzKG5hbWUpKSB7XG4gICAgICAgIG5ld05hbWVzLmFkZChuYW1lKTtcbiAgICAgIH1cblxuICAgIH0sIHRoaXMpO1xuICAgIHRoaXMuX3NvdXJjZXMgPSBuZXdTb3VyY2VzO1xuICAgIHRoaXMuX25hbWVzID0gbmV3TmFtZXM7XG5cbiAgICAvLyBDb3B5IHNvdXJjZXNDb250ZW50cyBvZiBhcHBsaWVkIG1hcC5cbiAgICBhU291cmNlTWFwQ29uc3VtZXIuc291cmNlcy5mb3JFYWNoKGZ1bmN0aW9uIChzb3VyY2VGaWxlKSB7XG4gICAgICB2YXIgY29udGVudCA9IGFTb3VyY2VNYXBDb25zdW1lci5zb3VyY2VDb250ZW50Rm9yKHNvdXJjZUZpbGUpO1xuICAgICAgaWYgKGNvbnRlbnQgIT0gbnVsbCkge1xuICAgICAgICBpZiAoYVNvdXJjZU1hcFBhdGggIT0gbnVsbCkge1xuICAgICAgICAgIHNvdXJjZUZpbGUgPSB1dGlsLmpvaW4oYVNvdXJjZU1hcFBhdGgsIHNvdXJjZUZpbGUpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzb3VyY2VSb290ICE9IG51bGwpIHtcbiAgICAgICAgICBzb3VyY2VGaWxlID0gdXRpbC5yZWxhdGl2ZShzb3VyY2VSb290LCBzb3VyY2VGaWxlKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNldFNvdXJjZUNvbnRlbnQoc291cmNlRmlsZSwgY29udGVudCk7XG4gICAgICB9XG4gICAgfSwgdGhpcyk7XG4gIH07XG5cbi8qKlxuICogQSBtYXBwaW5nIGNhbiBoYXZlIG9uZSBvZiB0aGUgdGhyZWUgbGV2ZWxzIG9mIGRhdGE6XG4gKlxuICogICAxLiBKdXN0IHRoZSBnZW5lcmF0ZWQgcG9zaXRpb24uXG4gKiAgIDIuIFRoZSBHZW5lcmF0ZWQgcG9zaXRpb24sIG9yaWdpbmFsIHBvc2l0aW9uLCBhbmQgb3JpZ2luYWwgc291cmNlLlxuICogICAzLiBHZW5lcmF0ZWQgYW5kIG9yaWdpbmFsIHBvc2l0aW9uLCBvcmlnaW5hbCBzb3VyY2UsIGFzIHdlbGwgYXMgYSBuYW1lXG4gKiAgICAgIHRva2VuLlxuICpcbiAqIFRvIG1haW50YWluIGNvbnNpc3RlbmN5LCB3ZSB2YWxpZGF0ZSB0aGF0IGFueSBuZXcgbWFwcGluZyBiZWluZyBhZGRlZCBmYWxsc1xuICogaW4gdG8gb25lIG9mIHRoZXNlIGNhdGVnb3JpZXMuXG4gKi9cblNvdXJjZU1hcEdlbmVyYXRvci5wcm90b3R5cGUuX3ZhbGlkYXRlTWFwcGluZyA9XG4gIGZ1bmN0aW9uIFNvdXJjZU1hcEdlbmVyYXRvcl92YWxpZGF0ZU1hcHBpbmcoYUdlbmVyYXRlZCwgYU9yaWdpbmFsLCBhU291cmNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFOYW1lKSB7XG4gICAgLy8gV2hlbiBhT3JpZ2luYWwgaXMgdHJ1dGh5IGJ1dCBoYXMgZW1wdHkgdmFsdWVzIGZvciAubGluZSBhbmQgLmNvbHVtbixcbiAgICAvLyBpdCBpcyBtb3N0IGxpa2VseSBhIHByb2dyYW1tZXIgZXJyb3IuIEluIHRoaXMgY2FzZSB3ZSB0aHJvdyBhIHZlcnlcbiAgICAvLyBzcGVjaWZpYyBlcnJvciBtZXNzYWdlIHRvIHRyeSB0byBndWlkZSB0aGVtIHRoZSByaWdodCB3YXkuXG4gICAgLy8gRm9yIGV4YW1wbGU6IGh0dHBzOi8vZ2l0aHViLmNvbS9Qb2x5bWVyL3BvbHltZXItYnVuZGxlci9wdWxsLzUxOVxuICAgIGlmIChhT3JpZ2luYWwgJiYgdHlwZW9mIGFPcmlnaW5hbC5saW5lICE9PSAnbnVtYmVyJyAmJiB0eXBlb2YgYU9yaWdpbmFsLmNvbHVtbiAhPT0gJ251bWJlcicpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgJ29yaWdpbmFsLmxpbmUgYW5kIG9yaWdpbmFsLmNvbHVtbiBhcmUgbm90IG51bWJlcnMgLS0geW91IHByb2JhYmx5IG1lYW50IHRvIG9taXQgJyArXG4gICAgICAgICAgICAndGhlIG9yaWdpbmFsIG1hcHBpbmcgZW50aXJlbHkgYW5kIG9ubHkgbWFwIHRoZSBnZW5lcmF0ZWQgcG9zaXRpb24uIElmIHNvLCBwYXNzICcgK1xuICAgICAgICAgICAgJ251bGwgZm9yIHRoZSBvcmlnaW5hbCBtYXBwaW5nIGluc3RlYWQgb2YgYW4gb2JqZWN0IHdpdGggZW1wdHkgb3IgbnVsbCB2YWx1ZXMuJ1xuICAgICAgICApO1xuICAgIH1cblxuICAgIGlmIChhR2VuZXJhdGVkICYmICdsaW5lJyBpbiBhR2VuZXJhdGVkICYmICdjb2x1bW4nIGluIGFHZW5lcmF0ZWRcbiAgICAgICAgJiYgYUdlbmVyYXRlZC5saW5lID4gMCAmJiBhR2VuZXJhdGVkLmNvbHVtbiA+PSAwXG4gICAgICAgICYmICFhT3JpZ2luYWwgJiYgIWFTb3VyY2UgJiYgIWFOYW1lKSB7XG4gICAgICAvLyBDYXNlIDEuXG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGVsc2UgaWYgKGFHZW5lcmF0ZWQgJiYgJ2xpbmUnIGluIGFHZW5lcmF0ZWQgJiYgJ2NvbHVtbicgaW4gYUdlbmVyYXRlZFxuICAgICAgICAgICAgICYmIGFPcmlnaW5hbCAmJiAnbGluZScgaW4gYU9yaWdpbmFsICYmICdjb2x1bW4nIGluIGFPcmlnaW5hbFxuICAgICAgICAgICAgICYmIGFHZW5lcmF0ZWQubGluZSA+IDAgJiYgYUdlbmVyYXRlZC5jb2x1bW4gPj0gMFxuICAgICAgICAgICAgICYmIGFPcmlnaW5hbC5saW5lID4gMCAmJiBhT3JpZ2luYWwuY29sdW1uID49IDBcbiAgICAgICAgICAgICAmJiBhU291cmNlKSB7XG4gICAgICAvLyBDYXNlcyAyIGFuZCAzLlxuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBtYXBwaW5nOiAnICsgSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICBnZW5lcmF0ZWQ6IGFHZW5lcmF0ZWQsXG4gICAgICAgIHNvdXJjZTogYVNvdXJjZSxcbiAgICAgICAgb3JpZ2luYWw6IGFPcmlnaW5hbCxcbiAgICAgICAgbmFtZTogYU5hbWVcbiAgICAgIH0pKTtcbiAgICB9XG4gIH07XG5cbi8qKlxuICogU2VyaWFsaXplIHRoZSBhY2N1bXVsYXRlZCBtYXBwaW5ncyBpbiB0byB0aGUgc3RyZWFtIG9mIGJhc2UgNjQgVkxRc1xuICogc3BlY2lmaWVkIGJ5IHRoZSBzb3VyY2UgbWFwIGZvcm1hdC5cbiAqL1xuU291cmNlTWFwR2VuZXJhdG9yLnByb3RvdHlwZS5fc2VyaWFsaXplTWFwcGluZ3MgPVxuICBmdW5jdGlvbiBTb3VyY2VNYXBHZW5lcmF0b3Jfc2VyaWFsaXplTWFwcGluZ3MoKSB7XG4gICAgdmFyIHByZXZpb3VzR2VuZXJhdGVkQ29sdW1uID0gMDtcbiAgICB2YXIgcHJldmlvdXNHZW5lcmF0ZWRMaW5lID0gMTtcbiAgICB2YXIgcHJldmlvdXNPcmlnaW5hbENvbHVtbiA9IDA7XG4gICAgdmFyIHByZXZpb3VzT3JpZ2luYWxMaW5lID0gMDtcbiAgICB2YXIgcHJldmlvdXNOYW1lID0gMDtcbiAgICB2YXIgcHJldmlvdXNTb3VyY2UgPSAwO1xuICAgIHZhciByZXN1bHQgPSAnJztcbiAgICB2YXIgbmV4dDtcbiAgICB2YXIgbWFwcGluZztcbiAgICB2YXIgbmFtZUlkeDtcbiAgICB2YXIgc291cmNlSWR4O1xuXG4gICAgdmFyIG1hcHBpbmdzID0gdGhpcy5fbWFwcGluZ3MudG9BcnJheSgpO1xuICAgIGZvciAodmFyIGkgPSAwLCBsZW4gPSBtYXBwaW5ncy5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuICAgICAgbWFwcGluZyA9IG1hcHBpbmdzW2ldO1xuICAgICAgbmV4dCA9ICcnXG5cbiAgICAgIGlmIChtYXBwaW5nLmdlbmVyYXRlZExpbmUgIT09IHByZXZpb3VzR2VuZXJhdGVkTGluZSkge1xuICAgICAgICBwcmV2aW91c0dlbmVyYXRlZENvbHVtbiA9IDA7XG4gICAgICAgIHdoaWxlIChtYXBwaW5nLmdlbmVyYXRlZExpbmUgIT09IHByZXZpb3VzR2VuZXJhdGVkTGluZSkge1xuICAgICAgICAgIG5leHQgKz0gJzsnO1xuICAgICAgICAgIHByZXZpb3VzR2VuZXJhdGVkTGluZSsrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBlbHNlIHtcbiAgICAgICAgaWYgKGkgPiAwKSB7XG4gICAgICAgICAgaWYgKCF1dGlsLmNvbXBhcmVCeUdlbmVyYXRlZFBvc2l0aW9uc0luZmxhdGVkKG1hcHBpbmcsIG1hcHBpbmdzW2kgLSAxXSkpIHtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgICBuZXh0ICs9ICcsJztcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBuZXh0ICs9IGJhc2U2NFZMUS5lbmNvZGUobWFwcGluZy5nZW5lcmF0ZWRDb2x1bW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0gcHJldmlvdXNHZW5lcmF0ZWRDb2x1bW4pO1xuICAgICAgcHJldmlvdXNHZW5lcmF0ZWRDb2x1bW4gPSBtYXBwaW5nLmdlbmVyYXRlZENvbHVtbjtcblxuICAgICAgaWYgKG1hcHBpbmcuc291cmNlICE9IG51bGwpIHtcbiAgICAgICAgc291cmNlSWR4ID0gdGhpcy5fc291cmNlcy5pbmRleE9mKG1hcHBpbmcuc291cmNlKTtcbiAgICAgICAgbmV4dCArPSBiYXNlNjRWTFEuZW5jb2RlKHNvdXJjZUlkeCAtIHByZXZpb3VzU291cmNlKTtcbiAgICAgICAgcHJldmlvdXNTb3VyY2UgPSBzb3VyY2VJZHg7XG5cbiAgICAgICAgLy8gbGluZXMgYXJlIHN0b3JlZCAwLWJhc2VkIGluIFNvdXJjZU1hcCBzcGVjIHZlcnNpb24gM1xuICAgICAgICBuZXh0ICs9IGJhc2U2NFZMUS5lbmNvZGUobWFwcGluZy5vcmlnaW5hbExpbmUgLSAxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0gcHJldmlvdXNPcmlnaW5hbExpbmUpO1xuICAgICAgICBwcmV2aW91c09yaWdpbmFsTGluZSA9IG1hcHBpbmcub3JpZ2luYWxMaW5lIC0gMTtcblxuICAgICAgICBuZXh0ICs9IGJhc2U2NFZMUS5lbmNvZGUobWFwcGluZy5vcmlnaW5hbENvbHVtblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIHByZXZpb3VzT3JpZ2luYWxDb2x1bW4pO1xuICAgICAgICBwcmV2aW91c09yaWdpbmFsQ29sdW1uID0gbWFwcGluZy5vcmlnaW5hbENvbHVtbjtcblxuICAgICAgICBpZiAobWFwcGluZy5uYW1lICE9IG51bGwpIHtcbiAgICAgICAgICBuYW1lSWR4ID0gdGhpcy5fbmFtZXMuaW5kZXhPZihtYXBwaW5nLm5hbWUpO1xuICAgICAgICAgIG5leHQgKz0gYmFzZTY0VkxRLmVuY29kZShuYW1lSWR4IC0gcHJldmlvdXNOYW1lKTtcbiAgICAgICAgICBwcmV2aW91c05hbWUgPSBuYW1lSWR4O1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJlc3VsdCArPSBuZXh0O1xuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH07XG5cblNvdXJjZU1hcEdlbmVyYXRvci5wcm90b3R5cGUuX2dlbmVyYXRlU291cmNlc0NvbnRlbnQgPVxuICBmdW5jdGlvbiBTb3VyY2VNYXBHZW5lcmF0b3JfZ2VuZXJhdGVTb3VyY2VzQ29udGVudChhU291cmNlcywgYVNvdXJjZVJvb3QpIHtcbiAgICByZXR1cm4gYVNvdXJjZXMubWFwKGZ1bmN0aW9uIChzb3VyY2UpIHtcbiAgICAgIGlmICghdGhpcy5fc291cmNlc0NvbnRlbnRzKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgICAgaWYgKGFTb3VyY2VSb290ICE9IG51bGwpIHtcbiAgICAgICAgc291cmNlID0gdXRpbC5yZWxhdGl2ZShhU291cmNlUm9vdCwgc291cmNlKTtcbiAgICAgIH1cbiAgICAgIHZhciBrZXkgPSB1dGlsLnRvU2V0U3RyaW5nKHNvdXJjZSk7XG4gICAgICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHRoaXMuX3NvdXJjZXNDb250ZW50cywga2V5KVxuICAgICAgICA/IHRoaXMuX3NvdXJjZXNDb250ZW50c1trZXldXG4gICAgICAgIDogbnVsbDtcbiAgICB9LCB0aGlzKTtcbiAgfTtcblxuLyoqXG4gKiBFeHRlcm5hbGl6ZSB0aGUgc291cmNlIG1hcC5cbiAqL1xuU291cmNlTWFwR2VuZXJhdG9yLnByb3RvdHlwZS50b0pTT04gPVxuICBmdW5jdGlvbiBTb3VyY2VNYXBHZW5lcmF0b3JfdG9KU09OKCkge1xuICAgIHZhciBtYXAgPSB7XG4gICAgICB2ZXJzaW9uOiB0aGlzLl92ZXJzaW9uLFxuICAgICAgc291cmNlczogdGhpcy5fc291cmNlcy50b0FycmF5KCksXG4gICAgICBuYW1lczogdGhpcy5fbmFtZXMudG9BcnJheSgpLFxuICAgICAgbWFwcGluZ3M6IHRoaXMuX3NlcmlhbGl6ZU1hcHBpbmdzKClcbiAgICB9O1xuICAgIGlmICh0aGlzLl9maWxlICE9IG51bGwpIHtcbiAgICAgIG1hcC5maWxlID0gdGhpcy5fZmlsZTtcbiAgICB9XG4gICAgaWYgKHRoaXMuX3NvdXJjZVJvb3QgIT0gbnVsbCkge1xuICAgICAgbWFwLnNvdXJjZVJvb3QgPSB0aGlzLl9zb3VyY2VSb290O1xuICAgIH1cbiAgICBpZiAodGhpcy5fc291cmNlc0NvbnRlbnRzKSB7XG4gICAgICBtYXAuc291cmNlc0NvbnRlbnQgPSB0aGlzLl9nZW5lcmF0ZVNvdXJjZXNDb250ZW50KG1hcC5zb3VyY2VzLCBtYXAuc291cmNlUm9vdCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG1hcDtcbiAgfTtcblxuLyoqXG4gKiBSZW5kZXIgdGhlIHNvdXJjZSBtYXAgYmVpbmcgZ2VuZXJhdGVkIHRvIGEgc3RyaW5nLlxuICovXG5Tb3VyY2VNYXBHZW5lcmF0b3IucHJvdG90eXBlLnRvU3RyaW5nID1cbiAgZnVuY3Rpb24gU291cmNlTWFwR2VuZXJhdG9yX3RvU3RyaW5nKCkge1xuICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh0aGlzLnRvSlNPTigpKTtcbiAgfTtcblxuZXhwb3J0cy5Tb3VyY2VNYXBHZW5lcmF0b3IgPSBTb3VyY2VNYXBHZW5lcmF0b3I7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL2xpYi9zb3VyY2UtbWFwLWdlbmVyYXRvci5qc1xuLy8gbW9kdWxlIGlkID0gMVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIvKiAtKi0gTW9kZToganM7IGpzLWluZGVudC1sZXZlbDogMjsgLSotICovXG4vKlxuICogQ29weXJpZ2h0IDIwMTEgTW96aWxsYSBGb3VuZGF0aW9uIGFuZCBjb250cmlidXRvcnNcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBOZXcgQlNEIGxpY2Vuc2UuIFNlZSBMSUNFTlNFIG9yOlxuICogaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL0JTRC0zLUNsYXVzZVxuICpcbiAqIEJhc2VkIG9uIHRoZSBCYXNlIDY0IFZMUSBpbXBsZW1lbnRhdGlvbiBpbiBDbG9zdXJlIENvbXBpbGVyOlxuICogaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9jbG9zdXJlLWNvbXBpbGVyL3NvdXJjZS9icm93c2UvdHJ1bmsvc3JjL2NvbS9nb29nbGUvZGVidWdnaW5nL3NvdXJjZW1hcC9CYXNlNjRWTFEuamF2YVxuICpcbiAqIENvcHlyaWdodCAyMDExIFRoZSBDbG9zdXJlIENvbXBpbGVyIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXRcbiAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmVcbiAqIG1ldDpcbiAqXG4gKiAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodFxuICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLlxuICogICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZVxuICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmdcbiAqICAgIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZFxuICogICAgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLlxuICogICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0c1xuICogICAgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkXG4gKiAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uXG4gKlxuICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SU1xuICogXCJBUyBJU1wiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVFxuICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SXG4gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVFxuICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsXG4gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UXG4gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSxcbiAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWVxuICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVFxuICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFXG4gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLlxuICovXG5cbnZhciBiYXNlNjQgPSByZXF1aXJlKCcuL2Jhc2U2NCcpO1xuXG4vLyBBIHNpbmdsZSBiYXNlIDY0IGRpZ2l0IGNhbiBjb250YWluIDYgYml0cyBvZiBkYXRhLiBGb3IgdGhlIGJhc2UgNjQgdmFyaWFibGVcbi8vIGxlbmd0aCBxdWFudGl0aWVzIHdlIHVzZSBpbiB0aGUgc291cmNlIG1hcCBzcGVjLCB0aGUgZmlyc3QgYml0IGlzIHRoZSBzaWduLFxuLy8gdGhlIG5leHQgZm91ciBiaXRzIGFyZSB0aGUgYWN0dWFsIHZhbHVlLCBhbmQgdGhlIDZ0aCBiaXQgaXMgdGhlXG4vLyBjb250aW51YXRpb24gYml0LiBUaGUgY29udGludWF0aW9uIGJpdCB0ZWxscyB1cyB3aGV0aGVyIHRoZXJlIGFyZSBtb3JlXG4vLyBkaWdpdHMgaW4gdGhpcyB2YWx1ZSBmb2xsb3dpbmcgdGhpcyBkaWdpdC5cbi8vXG4vLyAgIENvbnRpbnVhdGlvblxuLy8gICB8ICAgIFNpZ25cbi8vICAgfCAgICB8XG4vLyAgIFYgICAgVlxuLy8gICAxMDEwMTFcblxudmFyIFZMUV9CQVNFX1NISUZUID0gNTtcblxuLy8gYmluYXJ5OiAxMDAwMDBcbnZhciBWTFFfQkFTRSA9IDEgPDwgVkxRX0JBU0VfU0hJRlQ7XG5cbi8vIGJpbmFyeTogMDExMTExXG52YXIgVkxRX0JBU0VfTUFTSyA9IFZMUV9CQVNFIC0gMTtcblxuLy8gYmluYXJ5OiAxMDAwMDBcbnZhciBWTFFfQ09OVElOVUFUSU9OX0JJVCA9IFZMUV9CQVNFO1xuXG4vKipcbiAqIENvbnZlcnRzIGZyb20gYSB0d28tY29tcGxlbWVudCB2YWx1ZSB0byBhIHZhbHVlIHdoZXJlIHRoZSBzaWduIGJpdCBpc1xuICogcGxhY2VkIGluIHRoZSBsZWFzdCBzaWduaWZpY2FudCBiaXQuICBGb3IgZXhhbXBsZSwgYXMgZGVjaW1hbHM6XG4gKiAgIDEgYmVjb21lcyAyICgxMCBiaW5hcnkpLCAtMSBiZWNvbWVzIDMgKDExIGJpbmFyeSlcbiAqICAgMiBiZWNvbWVzIDQgKDEwMCBiaW5hcnkpLCAtMiBiZWNvbWVzIDUgKDEwMSBiaW5hcnkpXG4gKi9cbmZ1bmN0aW9uIHRvVkxRU2lnbmVkKGFWYWx1ZSkge1xuICByZXR1cm4gYVZhbHVlIDwgMFxuICAgID8gKCgtYVZhbHVlKSA8PCAxKSArIDFcbiAgICA6IChhVmFsdWUgPDwgMSkgKyAwO1xufVxuXG4vKipcbiAqIENvbnZlcnRzIHRvIGEgdHdvLWNvbXBsZW1lbnQgdmFsdWUgZnJvbSBhIHZhbHVlIHdoZXJlIHRoZSBzaWduIGJpdCBpc1xuICogcGxhY2VkIGluIHRoZSBsZWFzdCBzaWduaWZpY2FudCBiaXQuICBGb3IgZXhhbXBsZSwgYXMgZGVjaW1hbHM6XG4gKiAgIDIgKDEwIGJpbmFyeSkgYmVjb21lcyAxLCAzICgxMSBiaW5hcnkpIGJlY29tZXMgLTFcbiAqICAgNCAoMTAwIGJpbmFyeSkgYmVjb21lcyAyLCA1ICgxMDEgYmluYXJ5KSBiZWNvbWVzIC0yXG4gKi9cbmZ1bmN0aW9uIGZyb21WTFFTaWduZWQoYVZhbHVlKSB7XG4gIHZhciBpc05lZ2F0aXZlID0gKGFWYWx1ZSAmIDEpID09PSAxO1xuICB2YXIgc2hpZnRlZCA9IGFWYWx1ZSA+PiAxO1xuICByZXR1cm4gaXNOZWdhdGl2ZVxuICAgID8gLXNoaWZ0ZWRcbiAgICA6IHNoaWZ0ZWQ7XG59XG5cbi8qKlxuICogUmV0dXJucyB0aGUgYmFzZSA2NCBWTFEgZW5jb2RlZCB2YWx1ZS5cbiAqL1xuZXhwb3J0cy5lbmNvZGUgPSBmdW5jdGlvbiBiYXNlNjRWTFFfZW5jb2RlKGFWYWx1ZSkge1xuICB2YXIgZW5jb2RlZCA9IFwiXCI7XG4gIHZhciBkaWdpdDtcblxuICB2YXIgdmxxID0gdG9WTFFTaWduZWQoYVZhbHVlKTtcblxuICBkbyB7XG4gICAgZGlnaXQgPSB2bHEgJiBWTFFfQkFTRV9NQVNLO1xuICAgIHZscSA+Pj49IFZMUV9CQVNFX1NISUZUO1xuICAgIGlmICh2bHEgPiAwKSB7XG4gICAgICAvLyBUaGVyZSBhcmUgc3RpbGwgbW9yZSBkaWdpdHMgaW4gdGhpcyB2YWx1ZSwgc28gd2UgbXVzdCBtYWtlIHN1cmUgdGhlXG4gICAgICAvLyBjb250aW51YXRpb24gYml0IGlzIG1hcmtlZC5cbiAgICAgIGRpZ2l0IHw9IFZMUV9DT05USU5VQVRJT05fQklUO1xuICAgIH1cbiAgICBlbmNvZGVkICs9IGJhc2U2NC5lbmNvZGUoZGlnaXQpO1xuICB9IHdoaWxlICh2bHEgPiAwKTtcblxuICByZXR1cm4gZW5jb2RlZDtcbn07XG5cbi8qKlxuICogRGVjb2RlcyB0aGUgbmV4dCBiYXNlIDY0IFZMUSB2YWx1ZSBmcm9tIHRoZSBnaXZlbiBzdHJpbmcgYW5kIHJldHVybnMgdGhlXG4gKiB2YWx1ZSBhbmQgdGhlIHJlc3Qgb2YgdGhlIHN0cmluZyB2aWEgdGhlIG91dCBwYXJhbWV0ZXIuXG4gKi9cbmV4cG9ydHMuZGVjb2RlID0gZnVuY3Rpb24gYmFzZTY0VkxRX2RlY29kZShhU3RyLCBhSW5kZXgsIGFPdXRQYXJhbSkge1xuICB2YXIgc3RyTGVuID0gYVN0ci5sZW5ndGg7XG4gIHZhciByZXN1bHQgPSAwO1xuICB2YXIgc2hpZnQgPSAwO1xuICB2YXIgY29udGludWF0aW9uLCBkaWdpdDtcblxuICBkbyB7XG4gICAgaWYgKGFJbmRleCA+PSBzdHJMZW4pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIkV4cGVjdGVkIG1vcmUgZGlnaXRzIGluIGJhc2UgNjQgVkxRIHZhbHVlLlwiKTtcbiAgICB9XG5cbiAgICBkaWdpdCA9IGJhc2U2NC5kZWNvZGUoYVN0ci5jaGFyQ29kZUF0KGFJbmRleCsrKSk7XG4gICAgaWYgKGRpZ2l0ID09PSAtMSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBiYXNlNjQgZGlnaXQ6IFwiICsgYVN0ci5jaGFyQXQoYUluZGV4IC0gMSkpO1xuICAgIH1cblxuICAgIGNvbnRpbnVhdGlvbiA9ICEhKGRpZ2l0ICYgVkxRX0NPTlRJTlVBVElPTl9CSVQpO1xuICAgIGRpZ2l0ICY9IFZMUV9CQVNFX01BU0s7XG4gICAgcmVzdWx0ID0gcmVzdWx0ICsgKGRpZ2l0IDw8IHNoaWZ0KTtcbiAgICBzaGlmdCArPSBWTFFfQkFTRV9TSElGVDtcbiAgfSB3aGlsZSAoY29udGludWF0aW9uKTtcblxuICBhT3V0UGFyYW0udmFsdWUgPSBmcm9tVkxRU2lnbmVkKHJlc3VsdCk7XG4gIGFPdXRQYXJhbS5yZXN0ID0gYUluZGV4O1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbGliL2Jhc2U2NC12bHEuanNcbi8vIG1vZHVsZSBpZCA9IDJcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiLyogLSotIE1vZGU6IGpzOyBqcy1pbmRlbnQtbGV2ZWw6IDI7IC0qLSAqL1xuLypcbiAqIENvcHlyaWdodCAyMDExIE1vemlsbGEgRm91bmRhdGlvbiBhbmQgY29udHJpYnV0b3JzXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTmV3IEJTRCBsaWNlbnNlLiBTZWUgTElDRU5TRSBvcjpcbiAqIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9CU0QtMy1DbGF1c2VcbiAqL1xuXG52YXIgaW50VG9DaGFyTWFwID0gJ0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky8nLnNwbGl0KCcnKTtcblxuLyoqXG4gKiBFbmNvZGUgYW4gaW50ZWdlciBpbiB0aGUgcmFuZ2Ugb2YgMCB0byA2MyB0byBhIHNpbmdsZSBiYXNlIDY0IGRpZ2l0LlxuICovXG5leHBvcnRzLmVuY29kZSA9IGZ1bmN0aW9uIChudW1iZXIpIHtcbiAgaWYgKDAgPD0gbnVtYmVyICYmIG51bWJlciA8IGludFRvQ2hhck1hcC5sZW5ndGgpIHtcbiAgICByZXR1cm4gaW50VG9DaGFyTWFwW251bWJlcl07XG4gIH1cbiAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIk11c3QgYmUgYmV0d2VlbiAwIGFuZCA2MzogXCIgKyBudW1iZXIpO1xufTtcblxuLyoqXG4gKiBEZWNvZGUgYSBzaW5nbGUgYmFzZSA2NCBjaGFyYWN0ZXIgY29kZSBkaWdpdCB0byBhbiBpbnRlZ2VyLiBSZXR1cm5zIC0xIG9uXG4gKiBmYWlsdXJlLlxuICovXG5leHBvcnRzLmRlY29kZSA9IGZ1bmN0aW9uIChjaGFyQ29kZSkge1xuICB2YXIgYmlnQSA9IDY1OyAgICAgLy8gJ0EnXG4gIHZhciBiaWdaID0gOTA7ICAgICAvLyAnWidcblxuICB2YXIgbGl0dGxlQSA9IDk3OyAgLy8gJ2EnXG4gIHZhciBsaXR0bGVaID0gMTIyOyAvLyAneidcblxuICB2YXIgemVybyA9IDQ4OyAgICAgLy8gJzAnXG4gIHZhciBuaW5lID0gNTc7ICAgICAvLyAnOSdcblxuICB2YXIgcGx1cyA9IDQzOyAgICAgLy8gJysnXG4gIHZhciBzbGFzaCA9IDQ3OyAgICAvLyAnLydcblxuICB2YXIgbGl0dGxlT2Zmc2V0ID0gMjY7XG4gIHZhciBudW1iZXJPZmZzZXQgPSA1MjtcblxuICAvLyAwIC0gMjU6IEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaXG4gIGlmIChiaWdBIDw9IGNoYXJDb2RlICYmIGNoYXJDb2RlIDw9IGJpZ1opIHtcbiAgICByZXR1cm4gKGNoYXJDb2RlIC0gYmlnQSk7XG4gIH1cblxuICAvLyAyNiAtIDUxOiBhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5elxuICBpZiAobGl0dGxlQSA8PSBjaGFyQ29kZSAmJiBjaGFyQ29kZSA8PSBsaXR0bGVaKSB7XG4gICAgcmV0dXJuIChjaGFyQ29kZSAtIGxpdHRsZUEgKyBsaXR0bGVPZmZzZXQpO1xuICB9XG5cbiAgLy8gNTIgLSA2MTogMDEyMzQ1Njc4OVxuICBpZiAoemVybyA8PSBjaGFyQ29kZSAmJiBjaGFyQ29kZSA8PSBuaW5lKSB7XG4gICAgcmV0dXJuIChjaGFyQ29kZSAtIHplcm8gKyBudW1iZXJPZmZzZXQpO1xuICB9XG5cbiAgLy8gNjI6ICtcbiAgaWYgKGNoYXJDb2RlID09IHBsdXMpIHtcbiAgICByZXR1cm4gNjI7XG4gIH1cblxuICAvLyA2MzogL1xuICBpZiAoY2hhckNvZGUgPT0gc2xhc2gpIHtcbiAgICByZXR1cm4gNjM7XG4gIH1cblxuICAvLyBJbnZhbGlkIGJhc2U2NCBkaWdpdC5cbiAgcmV0dXJuIC0xO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbGliL2Jhc2U2NC5qc1xuLy8gbW9kdWxlIGlkID0gM1xuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIvKiAtKi0gTW9kZToganM7IGpzLWluZGVudC1sZXZlbDogMjsgLSotICovXG4vKlxuICogQ29weXJpZ2h0IDIwMTEgTW96aWxsYSBGb3VuZGF0aW9uIGFuZCBjb250cmlidXRvcnNcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBOZXcgQlNEIGxpY2Vuc2UuIFNlZSBMSUNFTlNFIG9yOlxuICogaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL0JTRC0zLUNsYXVzZVxuICovXG5cbi8qKlxuICogVGhpcyBpcyBhIGhlbHBlciBmdW5jdGlvbiBmb3IgZ2V0dGluZyB2YWx1ZXMgZnJvbSBwYXJhbWV0ZXIvb3B0aW9uc1xuICogb2JqZWN0cy5cbiAqXG4gKiBAcGFyYW0gYXJncyBUaGUgb2JqZWN0IHdlIGFyZSBleHRyYWN0aW5nIHZhbHVlcyBmcm9tXG4gKiBAcGFyYW0gbmFtZSBUaGUgbmFtZSBvZiB0aGUgcHJvcGVydHkgd2UgYXJlIGdldHRpbmcuXG4gKiBAcGFyYW0gZGVmYXVsdFZhbHVlIEFuIG9wdGlvbmFsIHZhbHVlIHRvIHJldHVybiBpZiB0aGUgcHJvcGVydHkgaXMgbWlzc2luZ1xuICogZnJvbSB0aGUgb2JqZWN0LiBJZiB0aGlzIGlzIG5vdCBzcGVjaWZpZWQgYW5kIHRoZSBwcm9wZXJ0eSBpcyBtaXNzaW5nLCBhblxuICogZXJyb3Igd2lsbCBiZSB0aHJvd24uXG4gKi9cbmZ1bmN0aW9uIGdldEFyZyhhQXJncywgYU5hbWUsIGFEZWZhdWx0VmFsdWUpIHtcbiAgaWYgKGFOYW1lIGluIGFBcmdzKSB7XG4gICAgcmV0dXJuIGFBcmdzW2FOYW1lXTtcbiAgfSBlbHNlIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAzKSB7XG4gICAgcmV0dXJuIGFEZWZhdWx0VmFsdWU7XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdcIicgKyBhTmFtZSArICdcIiBpcyBhIHJlcXVpcmVkIGFyZ3VtZW50LicpO1xuICB9XG59XG5leHBvcnRzLmdldEFyZyA9IGdldEFyZztcblxudmFyIHVybFJlZ2V4cCA9IC9eKD86KFtcXHcrXFwtLl0rKTopP1xcL1xcLyg/OihcXHcrOlxcdyspQCk/KFtcXHcuLV0qKSg/OjooXFxkKykpPyguKikkLztcbnZhciBkYXRhVXJsUmVnZXhwID0gL15kYXRhOi4rXFwsLiskLztcblxuZnVuY3Rpb24gdXJsUGFyc2UoYVVybCkge1xuICB2YXIgbWF0Y2ggPSBhVXJsLm1hdGNoKHVybFJlZ2V4cCk7XG4gIGlmICghbWF0Y2gpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICByZXR1cm4ge1xuICAgIHNjaGVtZTogbWF0Y2hbMV0sXG4gICAgYXV0aDogbWF0Y2hbMl0sXG4gICAgaG9zdDogbWF0Y2hbM10sXG4gICAgcG9ydDogbWF0Y2hbNF0sXG4gICAgcGF0aDogbWF0Y2hbNV1cbiAgfTtcbn1cbmV4cG9ydHMudXJsUGFyc2UgPSB1cmxQYXJzZTtcblxuZnVuY3Rpb24gdXJsR2VuZXJhdGUoYVBhcnNlZFVybCkge1xuICB2YXIgdXJsID0gJyc7XG4gIGlmIChhUGFyc2VkVXJsLnNjaGVtZSkge1xuICAgIHVybCArPSBhUGFyc2VkVXJsLnNjaGVtZSArICc6JztcbiAgfVxuICB1cmwgKz0gJy8vJztcbiAgaWYgKGFQYXJzZWRVcmwuYXV0aCkge1xuICAgIHVybCArPSBhUGFyc2VkVXJsLmF1dGggKyAnQCc7XG4gIH1cbiAgaWYgKGFQYXJzZWRVcmwuaG9zdCkge1xuICAgIHVybCArPSBhUGFyc2VkVXJsLmhvc3Q7XG4gIH1cbiAgaWYgKGFQYXJzZWRVcmwucG9ydCkge1xuICAgIHVybCArPSBcIjpcIiArIGFQYXJzZWRVcmwucG9ydFxuICB9XG4gIGlmIChhUGFyc2VkVXJsLnBhdGgpIHtcbiAgICB1cmwgKz0gYVBhcnNlZFVybC5wYXRoO1xuICB9XG4gIHJldHVybiB1cmw7XG59XG5leHBvcnRzLnVybEdlbmVyYXRlID0gdXJsR2VuZXJhdGU7XG5cbi8qKlxuICogTm9ybWFsaXplcyBhIHBhdGgsIG9yIHRoZSBwYXRoIHBvcnRpb24gb2YgYSBVUkw6XG4gKlxuICogLSBSZXBsYWNlcyBjb25zZWN1dGl2ZSBzbGFzaGVzIHdpdGggb25lIHNsYXNoLlxuICogLSBSZW1vdmVzIHVubmVjZXNzYXJ5ICcuJyBwYXJ0cy5cbiAqIC0gUmVtb3ZlcyB1bm5lY2Vzc2FyeSAnPGRpcj4vLi4nIHBhcnRzLlxuICpcbiAqIEJhc2VkIG9uIGNvZGUgaW4gdGhlIE5vZGUuanMgJ3BhdGgnIGNvcmUgbW9kdWxlLlxuICpcbiAqIEBwYXJhbSBhUGF0aCBUaGUgcGF0aCBvciB1cmwgdG8gbm9ybWFsaXplLlxuICovXG5mdW5jdGlvbiBub3JtYWxpemUoYVBhdGgpIHtcbiAgdmFyIHBhdGggPSBhUGF0aDtcbiAgdmFyIHVybCA9IHVybFBhcnNlKGFQYXRoKTtcbiAgaWYgKHVybCkge1xuICAgIGlmICghdXJsLnBhdGgpIHtcbiAgICAgIHJldHVybiBhUGF0aDtcbiAgICB9XG4gICAgcGF0aCA9IHVybC5wYXRoO1xuICB9XG4gIHZhciBpc0Fic29sdXRlID0gZXhwb3J0cy5pc0Fic29sdXRlKHBhdGgpO1xuXG4gIHZhciBwYXJ0cyA9IHBhdGguc3BsaXQoL1xcLysvKTtcbiAgZm9yICh2YXIgcGFydCwgdXAgPSAwLCBpID0gcGFydHMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICBwYXJ0ID0gcGFydHNbaV07XG4gICAgaWYgKHBhcnQgPT09ICcuJykge1xuICAgICAgcGFydHMuc3BsaWNlKGksIDEpO1xuICAgIH0gZWxzZSBpZiAocGFydCA9PT0gJy4uJykge1xuICAgICAgdXArKztcbiAgICB9IGVsc2UgaWYgKHVwID4gMCkge1xuICAgICAgaWYgKHBhcnQgPT09ICcnKSB7XG4gICAgICAgIC8vIFRoZSBmaXJzdCBwYXJ0IGlzIGJsYW5rIGlmIHRoZSBwYXRoIGlzIGFic29sdXRlLiBUcnlpbmcgdG8gZ29cbiAgICAgICAgLy8gYWJvdmUgdGhlIHJvb3QgaXMgYSBuby1vcC4gVGhlcmVmb3JlIHdlIGNhbiByZW1vdmUgYWxsICcuLicgcGFydHNcbiAgICAgICAgLy8gZGlyZWN0bHkgYWZ0ZXIgdGhlIHJvb3QuXG4gICAgICAgIHBhcnRzLnNwbGljZShpICsgMSwgdXApO1xuICAgICAgICB1cCA9IDA7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwYXJ0cy5zcGxpY2UoaSwgMik7XG4gICAgICAgIHVwLS07XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHBhdGggPSBwYXJ0cy5qb2luKCcvJyk7XG5cbiAgaWYgKHBhdGggPT09ICcnKSB7XG4gICAgcGF0aCA9IGlzQWJzb2x1dGUgPyAnLycgOiAnLic7XG4gIH1cblxuICBpZiAodXJsKSB7XG4gICAgdXJsLnBhdGggPSBwYXRoO1xuICAgIHJldHVybiB1cmxHZW5lcmF0ZSh1cmwpO1xuICB9XG4gIHJldHVybiBwYXRoO1xufVxuZXhwb3J0cy5ub3JtYWxpemUgPSBub3JtYWxpemU7XG5cbi8qKlxuICogSm9pbnMgdHdvIHBhdGhzL1VSTHMuXG4gKlxuICogQHBhcmFtIGFSb290IFRoZSByb290IHBhdGggb3IgVVJMLlxuICogQHBhcmFtIGFQYXRoIFRoZSBwYXRoIG9yIFVSTCB0byBiZSBqb2luZWQgd2l0aCB0aGUgcm9vdC5cbiAqXG4gKiAtIElmIGFQYXRoIGlzIGEgVVJMIG9yIGEgZGF0YSBVUkksIGFQYXRoIGlzIHJldHVybmVkLCB1bmxlc3MgYVBhdGggaXMgYVxuICogICBzY2hlbWUtcmVsYXRpdmUgVVJMOiBUaGVuIHRoZSBzY2hlbWUgb2YgYVJvb3QsIGlmIGFueSwgaXMgcHJlcGVuZGVkXG4gKiAgIGZpcnN0LlxuICogLSBPdGhlcndpc2UgYVBhdGggaXMgYSBwYXRoLiBJZiBhUm9vdCBpcyBhIFVSTCwgdGhlbiBpdHMgcGF0aCBwb3J0aW9uXG4gKiAgIGlzIHVwZGF0ZWQgd2l0aCB0aGUgcmVzdWx0IGFuZCBhUm9vdCBpcyByZXR1cm5lZC4gT3RoZXJ3aXNlIHRoZSByZXN1bHRcbiAqICAgaXMgcmV0dXJuZWQuXG4gKiAgIC0gSWYgYVBhdGggaXMgYWJzb2x1dGUsIHRoZSByZXN1bHQgaXMgYVBhdGguXG4gKiAgIC0gT3RoZXJ3aXNlIHRoZSB0d28gcGF0aHMgYXJlIGpvaW5lZCB3aXRoIGEgc2xhc2guXG4gKiAtIEpvaW5pbmcgZm9yIGV4YW1wbGUgJ2h0dHA6Ly8nIGFuZCAnd3d3LmV4YW1wbGUuY29tJyBpcyBhbHNvIHN1cHBvcnRlZC5cbiAqL1xuZnVuY3Rpb24gam9pbihhUm9vdCwgYVBhdGgpIHtcbiAgaWYgKGFSb290ID09PSBcIlwiKSB7XG4gICAgYVJvb3QgPSBcIi5cIjtcbiAgfVxuICBpZiAoYVBhdGggPT09IFwiXCIpIHtcbiAgICBhUGF0aCA9IFwiLlwiO1xuICB9XG4gIHZhciBhUGF0aFVybCA9IHVybFBhcnNlKGFQYXRoKTtcbiAgdmFyIGFSb290VXJsID0gdXJsUGFyc2UoYVJvb3QpO1xuICBpZiAoYVJvb3RVcmwpIHtcbiAgICBhUm9vdCA9IGFSb290VXJsLnBhdGggfHwgJy8nO1xuICB9XG5cbiAgLy8gYGpvaW4oZm9vLCAnLy93d3cuZXhhbXBsZS5vcmcnKWBcbiAgaWYgKGFQYXRoVXJsICYmICFhUGF0aFVybC5zY2hlbWUpIHtcbiAgICBpZiAoYVJvb3RVcmwpIHtcbiAgICAgIGFQYXRoVXJsLnNjaGVtZSA9IGFSb290VXJsLnNjaGVtZTtcbiAgICB9XG4gICAgcmV0dXJuIHVybEdlbmVyYXRlKGFQYXRoVXJsKTtcbiAgfVxuXG4gIGlmIChhUGF0aFVybCB8fCBhUGF0aC5tYXRjaChkYXRhVXJsUmVnZXhwKSkge1xuICAgIHJldHVybiBhUGF0aDtcbiAgfVxuXG4gIC8vIGBqb2luKCdodHRwOi8vJywgJ3d3dy5leGFtcGxlLmNvbScpYFxuICBpZiAoYVJvb3RVcmwgJiYgIWFSb290VXJsLmhvc3QgJiYgIWFSb290VXJsLnBhdGgpIHtcbiAgICBhUm9vdFVybC5ob3N0ID0gYVBhdGg7XG4gICAgcmV0dXJuIHVybEdlbmVyYXRlKGFSb290VXJsKTtcbiAgfVxuXG4gIHZhciBqb2luZWQgPSBhUGF0aC5jaGFyQXQoMCkgPT09ICcvJ1xuICAgID8gYVBhdGhcbiAgICA6IG5vcm1hbGl6ZShhUm9vdC5yZXBsYWNlKC9cXC8rJC8sICcnKSArICcvJyArIGFQYXRoKTtcblxuICBpZiAoYVJvb3RVcmwpIHtcbiAgICBhUm9vdFVybC5wYXRoID0gam9pbmVkO1xuICAgIHJldHVybiB1cmxHZW5lcmF0ZShhUm9vdFVybCk7XG4gIH1cbiAgcmV0dXJuIGpvaW5lZDtcbn1cbmV4cG9ydHMuam9pbiA9IGpvaW47XG5cbmV4cG9ydHMuaXNBYnNvbHV0ZSA9IGZ1bmN0aW9uIChhUGF0aCkge1xuICByZXR1cm4gYVBhdGguY2hhckF0KDApID09PSAnLycgfHwgdXJsUmVnZXhwLnRlc3QoYVBhdGgpO1xufTtcblxuLyoqXG4gKiBNYWtlIGEgcGF0aCByZWxhdGl2ZSB0byBhIFVSTCBvciBhbm90aGVyIHBhdGguXG4gKlxuICogQHBhcmFtIGFSb290IFRoZSByb290IHBhdGggb3IgVVJMLlxuICogQHBhcmFtIGFQYXRoIFRoZSBwYXRoIG9yIFVSTCB0byBiZSBtYWRlIHJlbGF0aXZlIHRvIGFSb290LlxuICovXG5mdW5jdGlvbiByZWxhdGl2ZShhUm9vdCwgYVBhdGgpIHtcbiAgaWYgKGFSb290ID09PSBcIlwiKSB7XG4gICAgYVJvb3QgPSBcIi5cIjtcbiAgfVxuXG4gIGFSb290ID0gYVJvb3QucmVwbGFjZSgvXFwvJC8sICcnKTtcblxuICAvLyBJdCBpcyBwb3NzaWJsZSBmb3IgdGhlIHBhdGggdG8gYmUgYWJvdmUgdGhlIHJvb3QuIEluIHRoaXMgY2FzZSwgc2ltcGx5XG4gIC8vIGNoZWNraW5nIHdoZXRoZXIgdGhlIHJvb3QgaXMgYSBwcmVmaXggb2YgdGhlIHBhdGggd29uJ3Qgd29yay4gSW5zdGVhZCwgd2VcbiAgLy8gbmVlZCB0byByZW1vdmUgY29tcG9uZW50cyBmcm9tIHRoZSByb290IG9uZSBieSBvbmUsIHVudGlsIGVpdGhlciB3ZSBmaW5kXG4gIC8vIGEgcHJlZml4IHRoYXQgZml0cywgb3Igd2UgcnVuIG91dCBvZiBjb21wb25lbnRzIHRvIHJlbW92ZS5cbiAgdmFyIGxldmVsID0gMDtcbiAgd2hpbGUgKGFQYXRoLmluZGV4T2YoYVJvb3QgKyAnLycpICE9PSAwKSB7XG4gICAgdmFyIGluZGV4ID0gYVJvb3QubGFzdEluZGV4T2YoXCIvXCIpO1xuICAgIGlmIChpbmRleCA8IDApIHtcbiAgICAgIHJldHVybiBhUGF0aDtcbiAgICB9XG5cbiAgICAvLyBJZiB0aGUgb25seSBwYXJ0IG9mIHRoZSByb290IHRoYXQgaXMgbGVmdCBpcyB0aGUgc2NoZW1lIChpLmUuIGh0dHA6Ly8sXG4gICAgLy8gZmlsZTovLy8sIGV0Yy4pLCBvbmUgb3IgbW9yZSBzbGFzaGVzICgvKSwgb3Igc2ltcGx5IG5vdGhpbmcgYXQgYWxsLCB3ZVxuICAgIC8vIGhhdmUgZXhoYXVzdGVkIGFsbCBjb21wb25lbnRzLCBzbyB0aGUgcGF0aCBpcyBub3QgcmVsYXRpdmUgdG8gdGhlIHJvb3QuXG4gICAgYVJvb3QgPSBhUm9vdC5zbGljZSgwLCBpbmRleCk7XG4gICAgaWYgKGFSb290Lm1hdGNoKC9eKFteXFwvXSs6XFwvKT9cXC8qJC8pKSB7XG4gICAgICByZXR1cm4gYVBhdGg7XG4gICAgfVxuXG4gICAgKytsZXZlbDtcbiAgfVxuXG4gIC8vIE1ha2Ugc3VyZSB3ZSBhZGQgYSBcIi4uL1wiIGZvciBlYWNoIGNvbXBvbmVudCB3ZSByZW1vdmVkIGZyb20gdGhlIHJvb3QuXG4gIHJldHVybiBBcnJheShsZXZlbCArIDEpLmpvaW4oXCIuLi9cIikgKyBhUGF0aC5zdWJzdHIoYVJvb3QubGVuZ3RoICsgMSk7XG59XG5leHBvcnRzLnJlbGF0aXZlID0gcmVsYXRpdmU7XG5cbnZhciBzdXBwb3J0c051bGxQcm90byA9IChmdW5jdGlvbiAoKSB7XG4gIHZhciBvYmogPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICByZXR1cm4gISgnX19wcm90b19fJyBpbiBvYmopO1xufSgpKTtcblxuZnVuY3Rpb24gaWRlbnRpdHkgKHMpIHtcbiAgcmV0dXJuIHM7XG59XG5cbi8qKlxuICogQmVjYXVzZSBiZWhhdmlvciBnb2VzIHdhY2t5IHdoZW4geW91IHNldCBgX19wcm90b19fYCBvbiBvYmplY3RzLCB3ZVxuICogaGF2ZSB0byBwcmVmaXggYWxsIHRoZSBzdHJpbmdzIGluIG91ciBzZXQgd2l0aCBhbiBhcmJpdHJhcnkgY2hhcmFjdGVyLlxuICpcbiAqIFNlZSBodHRwczovL2dpdGh1Yi5jb20vbW96aWxsYS9zb3VyY2UtbWFwL3B1bGwvMzEgYW5kXG4gKiBodHRwczovL2dpdGh1Yi5jb20vbW96aWxsYS9zb3VyY2UtbWFwL2lzc3Vlcy8zMFxuICpcbiAqIEBwYXJhbSBTdHJpbmcgYVN0clxuICovXG5mdW5jdGlvbiB0b1NldFN0cmluZyhhU3RyKSB7XG4gIGlmIChpc1Byb3RvU3RyaW5nKGFTdHIpKSB7XG4gICAgcmV0dXJuICckJyArIGFTdHI7XG4gIH1cblxuICByZXR1cm4gYVN0cjtcbn1cbmV4cG9ydHMudG9TZXRTdHJpbmcgPSBzdXBwb3J0c051bGxQcm90byA/IGlkZW50aXR5IDogdG9TZXRTdHJpbmc7XG5cbmZ1bmN0aW9uIGZyb21TZXRTdHJpbmcoYVN0cikge1xuICBpZiAoaXNQcm90b1N0cmluZyhhU3RyKSkge1xuICAgIHJldHVybiBhU3RyLnNsaWNlKDEpO1xuICB9XG5cbiAgcmV0dXJuIGFTdHI7XG59XG5leHBvcnRzLmZyb21TZXRTdHJpbmcgPSBzdXBwb3J0c051bGxQcm90byA/IGlkZW50aXR5IDogZnJvbVNldFN0cmluZztcblxuZnVuY3Rpb24gaXNQcm90b1N0cmluZyhzKSB7XG4gIGlmICghcykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHZhciBsZW5ndGggPSBzLmxlbmd0aDtcblxuICBpZiAobGVuZ3RoIDwgOSAvKiBcIl9fcHJvdG9fX1wiLmxlbmd0aCAqLykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlmIChzLmNoYXJDb2RlQXQobGVuZ3RoIC0gMSkgIT09IDk1ICAvKiAnXycgKi8gfHxcbiAgICAgIHMuY2hhckNvZGVBdChsZW5ndGggLSAyKSAhPT0gOTUgIC8qICdfJyAqLyB8fFxuICAgICAgcy5jaGFyQ29kZUF0KGxlbmd0aCAtIDMpICE9PSAxMTEgLyogJ28nICovIHx8XG4gICAgICBzLmNoYXJDb2RlQXQobGVuZ3RoIC0gNCkgIT09IDExNiAvKiAndCcgKi8gfHxcbiAgICAgIHMuY2hhckNvZGVBdChsZW5ndGggLSA1KSAhPT0gMTExIC8qICdvJyAqLyB8fFxuICAgICAgcy5jaGFyQ29kZUF0KGxlbmd0aCAtIDYpICE9PSAxMTQgLyogJ3InICovIHx8XG4gICAgICBzLmNoYXJDb2RlQXQobGVuZ3RoIC0gNykgIT09IDExMiAvKiAncCcgKi8gfHxcbiAgICAgIHMuY2hhckNvZGVBdChsZW5ndGggLSA4KSAhPT0gOTUgIC8qICdfJyAqLyB8fFxuICAgICAgcy5jaGFyQ29kZUF0KGxlbmd0aCAtIDkpICE9PSA5NSAgLyogJ18nICovKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgZm9yICh2YXIgaSA9IGxlbmd0aCAtIDEwOyBpID49IDA7IGktLSkge1xuICAgIGlmIChzLmNoYXJDb2RlQXQoaSkgIT09IDM2IC8qICckJyAqLykge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufVxuXG4vKipcbiAqIENvbXBhcmF0b3IgYmV0d2VlbiB0d28gbWFwcGluZ3Mgd2hlcmUgdGhlIG9yaWdpbmFsIHBvc2l0aW9ucyBhcmUgY29tcGFyZWQuXG4gKlxuICogT3B0aW9uYWxseSBwYXNzIGluIGB0cnVlYCBhcyBgb25seUNvbXBhcmVHZW5lcmF0ZWRgIHRvIGNvbnNpZGVyIHR3b1xuICogbWFwcGluZ3Mgd2l0aCB0aGUgc2FtZSBvcmlnaW5hbCBzb3VyY2UvbGluZS9jb2x1bW4sIGJ1dCBkaWZmZXJlbnQgZ2VuZXJhdGVkXG4gKiBsaW5lIGFuZCBjb2x1bW4gdGhlIHNhbWUuIFVzZWZ1bCB3aGVuIHNlYXJjaGluZyBmb3IgYSBtYXBwaW5nIHdpdGggYVxuICogc3R1YmJlZCBvdXQgbWFwcGluZy5cbiAqL1xuZnVuY3Rpb24gY29tcGFyZUJ5T3JpZ2luYWxQb3NpdGlvbnMobWFwcGluZ0EsIG1hcHBpbmdCLCBvbmx5Q29tcGFyZU9yaWdpbmFsKSB7XG4gIHZhciBjbXAgPSBzdHJjbXAobWFwcGluZ0Euc291cmNlLCBtYXBwaW5nQi5zb3VyY2UpO1xuICBpZiAoY21wICE9PSAwKSB7XG4gICAgcmV0dXJuIGNtcDtcbiAgfVxuXG4gIGNtcCA9IG1hcHBpbmdBLm9yaWdpbmFsTGluZSAtIG1hcHBpbmdCLm9yaWdpbmFsTGluZTtcbiAgaWYgKGNtcCAhPT0gMCkge1xuICAgIHJldHVybiBjbXA7XG4gIH1cblxuICBjbXAgPSBtYXBwaW5nQS5vcmlnaW5hbENvbHVtbiAtIG1hcHBpbmdCLm9yaWdpbmFsQ29sdW1uO1xuICBpZiAoY21wICE9PSAwIHx8IG9ubHlDb21wYXJlT3JpZ2luYWwpIHtcbiAgICByZXR1cm4gY21wO1xuICB9XG5cbiAgY21wID0gbWFwcGluZ0EuZ2VuZXJhdGVkQ29sdW1uIC0gbWFwcGluZ0IuZ2VuZXJhdGVkQ29sdW1uO1xuICBpZiAoY21wICE9PSAwKSB7XG4gICAgcmV0dXJuIGNtcDtcbiAgfVxuXG4gIGNtcCA9IG1hcHBpbmdBLmdlbmVyYXRlZExpbmUgLSBtYXBwaW5nQi5nZW5lcmF0ZWRMaW5lO1xuICBpZiAoY21wICE9PSAwKSB7XG4gICAgcmV0dXJuIGNtcDtcbiAgfVxuXG4gIHJldHVybiBzdHJjbXAobWFwcGluZ0EubmFtZSwgbWFwcGluZ0IubmFtZSk7XG59XG5leHBvcnRzLmNvbXBhcmVCeU9yaWdpbmFsUG9zaXRpb25zID0gY29tcGFyZUJ5T3JpZ2luYWxQb3NpdGlvbnM7XG5cbi8qKlxuICogQ29tcGFyYXRvciBiZXR3ZWVuIHR3byBtYXBwaW5ncyB3aXRoIGRlZmxhdGVkIHNvdXJjZSBhbmQgbmFtZSBpbmRpY2VzIHdoZXJlXG4gKiB0aGUgZ2VuZXJhdGVkIHBvc2l0aW9ucyBhcmUgY29tcGFyZWQuXG4gKlxuICogT3B0aW9uYWxseSBwYXNzIGluIGB0cnVlYCBhcyBgb25seUNvbXBhcmVHZW5lcmF0ZWRgIHRvIGNvbnNpZGVyIHR3b1xuICogbWFwcGluZ3Mgd2l0aCB0aGUgc2FtZSBnZW5lcmF0ZWQgbGluZSBhbmQgY29sdW1uLCBidXQgZGlmZmVyZW50XG4gKiBzb3VyY2UvbmFtZS9vcmlnaW5hbCBsaW5lIGFuZCBjb2x1bW4gdGhlIHNhbWUuIFVzZWZ1bCB3aGVuIHNlYXJjaGluZyBmb3IgYVxuICogbWFwcGluZyB3aXRoIGEgc3R1YmJlZCBvdXQgbWFwcGluZy5cbiAqL1xuZnVuY3Rpb24gY29tcGFyZUJ5R2VuZXJhdGVkUG9zaXRpb25zRGVmbGF0ZWQobWFwcGluZ0EsIG1hcHBpbmdCLCBvbmx5Q29tcGFyZUdlbmVyYXRlZCkge1xuICB2YXIgY21wID0gbWFwcGluZ0EuZ2VuZXJhdGVkTGluZSAtIG1hcHBpbmdCLmdlbmVyYXRlZExpbmU7XG4gIGlmIChjbXAgIT09IDApIHtcbiAgICByZXR1cm4gY21wO1xuICB9XG5cbiAgY21wID0gbWFwcGluZ0EuZ2VuZXJhdGVkQ29sdW1uIC0gbWFwcGluZ0IuZ2VuZXJhdGVkQ29sdW1uO1xuICBpZiAoY21wICE9PSAwIHx8IG9ubHlDb21wYXJlR2VuZXJhdGVkKSB7XG4gICAgcmV0dXJuIGNtcDtcbiAgfVxuXG4gIGNtcCA9IHN0cmNtcChtYXBwaW5nQS5zb3VyY2UsIG1hcHBpbmdCLnNvdXJjZSk7XG4gIGlmIChjbXAgIT09IDApIHtcbiAgICByZXR1cm4gY21wO1xuICB9XG5cbiAgY21wID0gbWFwcGluZ0Eub3JpZ2luYWxMaW5lIC0gbWFwcGluZ0Iub3JpZ2luYWxMaW5lO1xuICBpZiAoY21wICE9PSAwKSB7XG4gICAgcmV0dXJuIGNtcDtcbiAgfVxuXG4gIGNtcCA9IG1hcHBpbmdBLm9yaWdpbmFsQ29sdW1uIC0gbWFwcGluZ0Iub3JpZ2luYWxDb2x1bW47XG4gIGlmIChjbXAgIT09IDApIHtcbiAgICByZXR1cm4gY21wO1xuICB9XG5cbiAgcmV0dXJuIHN0cmNtcChtYXBwaW5nQS5uYW1lLCBtYXBwaW5nQi5uYW1lKTtcbn1cbmV4cG9ydHMuY29tcGFyZUJ5R2VuZXJhdGVkUG9zaXRpb25zRGVmbGF0ZWQgPSBjb21wYXJlQnlHZW5lcmF0ZWRQb3NpdGlvbnNEZWZsYXRlZDtcblxuZnVuY3Rpb24gc3RyY21wKGFTdHIxLCBhU3RyMikge1xuICBpZiAoYVN0cjEgPT09IGFTdHIyKSB7XG4gICAgcmV0dXJuIDA7XG4gIH1cblxuICBpZiAoYVN0cjEgPT09IG51bGwpIHtcbiAgICByZXR1cm4gMTsgLy8gYVN0cjIgIT09IG51bGxcbiAgfVxuXG4gIGlmIChhU3RyMiA9PT0gbnVsbCkge1xuICAgIHJldHVybiAtMTsgLy8gYVN0cjEgIT09IG51bGxcbiAgfVxuXG4gIGlmIChhU3RyMSA+IGFTdHIyKSB7XG4gICAgcmV0dXJuIDE7XG4gIH1cblxuICByZXR1cm4gLTE7XG59XG5cbi8qKlxuICogQ29tcGFyYXRvciBiZXR3ZWVuIHR3byBtYXBwaW5ncyB3aXRoIGluZmxhdGVkIHNvdXJjZSBhbmQgbmFtZSBzdHJpbmdzIHdoZXJlXG4gKiB0aGUgZ2VuZXJhdGVkIHBvc2l0aW9ucyBhcmUgY29tcGFyZWQuXG4gKi9cbmZ1bmN0aW9uIGNvbXBhcmVCeUdlbmVyYXRlZFBvc2l0aW9uc0luZmxhdGVkKG1hcHBpbmdBLCBtYXBwaW5nQikge1xuICB2YXIgY21wID0gbWFwcGluZ0EuZ2VuZXJhdGVkTGluZSAtIG1hcHBpbmdCLmdlbmVyYXRlZExpbmU7XG4gIGlmIChjbXAgIT09IDApIHtcbiAgICByZXR1cm4gY21wO1xuICB9XG5cbiAgY21wID0gbWFwcGluZ0EuZ2VuZXJhdGVkQ29sdW1uIC0gbWFwcGluZ0IuZ2VuZXJhdGVkQ29sdW1uO1xuICBpZiAoY21wICE9PSAwKSB7XG4gICAgcmV0dXJuIGNtcDtcbiAgfVxuXG4gIGNtcCA9IHN0cmNtcChtYXBwaW5nQS5zb3VyY2UsIG1hcHBpbmdCLnNvdXJjZSk7XG4gIGlmIChjbXAgIT09IDApIHtcbiAgICByZXR1cm4gY21wO1xuICB9XG5cbiAgY21wID0gbWFwcGluZ0Eub3JpZ2luYWxMaW5lIC0gbWFwcGluZ0Iub3JpZ2luYWxMaW5lO1xuICBpZiAoY21wICE9PSAwKSB7XG4gICAgcmV0dXJuIGNtcDtcbiAgfVxuXG4gIGNtcCA9IG1hcHBpbmdBLm9yaWdpbmFsQ29sdW1uIC0gbWFwcGluZ0Iub3JpZ2luYWxDb2x1bW47XG4gIGlmIChjbXAgIT09IDApIHtcbiAgICByZXR1cm4gY21wO1xuICB9XG5cbiAgcmV0dXJuIHN0cmNtcChtYXBwaW5nQS5uYW1lLCBtYXBwaW5nQi5uYW1lKTtcbn1cbmV4cG9ydHMuY29tcGFyZUJ5R2VuZXJhdGVkUG9zaXRpb25zSW5mbGF0ZWQgPSBjb21wYXJlQnlHZW5lcmF0ZWRQb3NpdGlvbnNJbmZsYXRlZDtcblxuLyoqXG4gKiBTdHJpcCBhbnkgSlNPTiBYU1NJIGF2b2lkYW5jZSBwcmVmaXggZnJvbSB0aGUgc3RyaW5nIChhcyBkb2N1bWVudGVkXG4gKiBpbiB0aGUgc291cmNlIG1hcHMgc3BlY2lmaWNhdGlvbiksIGFuZCB0aGVuIHBhcnNlIHRoZSBzdHJpbmcgYXNcbiAqIEpTT04uXG4gKi9cbmZ1bmN0aW9uIHBhcnNlU291cmNlTWFwSW5wdXQoc3RyKSB7XG4gIHJldHVybiBKU09OLnBhcnNlKHN0ci5yZXBsYWNlKC9eXFwpXX0nW15cXG5dKlxcbi8sICcnKSk7XG59XG5leHBvcnRzLnBhcnNlU291cmNlTWFwSW5wdXQgPSBwYXJzZVNvdXJjZU1hcElucHV0O1xuXG4vKipcbiAqIENvbXB1dGUgdGhlIFVSTCBvZiBhIHNvdXJjZSBnaXZlbiB0aGUgdGhlIHNvdXJjZSByb290LCB0aGUgc291cmNlJ3NcbiAqIFVSTCwgYW5kIHRoZSBzb3VyY2UgbWFwJ3MgVVJMLlxuICovXG5mdW5jdGlvbiBjb21wdXRlU291cmNlVVJMKHNvdXJjZVJvb3QsIHNvdXJjZVVSTCwgc291cmNlTWFwVVJMKSB7XG4gIHNvdXJjZVVSTCA9IHNvdXJjZVVSTCB8fCAnJztcblxuICBpZiAoc291cmNlUm9vdCkge1xuICAgIC8vIFRoaXMgZm9sbG93cyB3aGF0IENocm9tZSBkb2VzLlxuICAgIGlmIChzb3VyY2VSb290W3NvdXJjZVJvb3QubGVuZ3RoIC0gMV0gIT09ICcvJyAmJiBzb3VyY2VVUkxbMF0gIT09ICcvJykge1xuICAgICAgc291cmNlUm9vdCArPSAnLyc7XG4gICAgfVxuICAgIC8vIFRoZSBzcGVjIHNheXM6XG4gICAgLy8gICBMaW5lIDQ6IEFuIG9wdGlvbmFsIHNvdXJjZSByb290LCB1c2VmdWwgZm9yIHJlbG9jYXRpbmcgc291cmNlXG4gICAgLy8gICBmaWxlcyBvbiBhIHNlcnZlciBvciByZW1vdmluZyByZXBlYXRlZCB2YWx1ZXMgaW4gdGhlXG4gICAgLy8gICDigJxzb3VyY2Vz4oCdIGVudHJ5LiAgVGhpcyB2YWx1ZSBpcyBwcmVwZW5kZWQgdG8gdGhlIGluZGl2aWR1YWxcbiAgICAvLyAgIGVudHJpZXMgaW4gdGhlIOKAnHNvdXJjZeKAnSBmaWVsZC5cbiAgICBzb3VyY2VVUkwgPSBzb3VyY2VSb290ICsgc291cmNlVVJMO1xuICB9XG5cbiAgLy8gSGlzdG9yaWNhbGx5LCBTb3VyY2VNYXBDb25zdW1lciBkaWQgbm90IHRha2UgdGhlIHNvdXJjZU1hcFVSTCBhc1xuICAvLyBhIHBhcmFtZXRlci4gIFRoaXMgbW9kZSBpcyBzdGlsbCBzb21ld2hhdCBzdXBwb3J0ZWQsIHdoaWNoIGlzIHdoeVxuICAvLyB0aGlzIGNvZGUgYmxvY2sgaXMgY29uZGl0aW9uYWwuICBIb3dldmVyLCBpdCdzIHByZWZlcmFibGUgdG8gcGFzc1xuICAvLyB0aGUgc291cmNlIG1hcCBVUkwgdG8gU291cmNlTWFwQ29uc3VtZXIsIHNvIHRoYXQgdGhpcyBmdW5jdGlvblxuICAvLyBjYW4gaW1wbGVtZW50IHRoZSBzb3VyY2UgVVJMIHJlc29sdXRpb24gYWxnb3JpdGhtIGFzIG91dGxpbmVkIGluXG4gIC8vIHRoZSBzcGVjLiAgVGhpcyBibG9jayBpcyBiYXNpY2FsbHkgdGhlIGVxdWl2YWxlbnQgb2Y6XG4gIC8vICAgIG5ldyBVUkwoc291cmNlVVJMLCBzb3VyY2VNYXBVUkwpLnRvU3RyaW5nKClcbiAgLy8gLi4uIGV4Y2VwdCBpdCBhdm9pZHMgdXNpbmcgVVJMLCB3aGljaCB3YXNuJ3QgYXZhaWxhYmxlIGluIHRoZVxuICAvLyBvbGRlciByZWxlYXNlcyBvZiBub2RlIHN0aWxsIHN1cHBvcnRlZCBieSB0aGlzIGxpYnJhcnkuXG4gIC8vXG4gIC8vIFRoZSBzcGVjIHNheXM6XG4gIC8vICAgSWYgdGhlIHNvdXJjZXMgYXJlIG5vdCBhYnNvbHV0ZSBVUkxzIGFmdGVyIHByZXBlbmRpbmcgb2YgdGhlXG4gIC8vICAg4oCcc291cmNlUm9vdOKAnSwgdGhlIHNvdXJjZXMgYXJlIHJlc29sdmVkIHJlbGF0aXZlIHRvIHRoZVxuICAvLyAgIFNvdXJjZU1hcCAobGlrZSByZXNvbHZpbmcgc2NyaXB0IHNyYyBpbiBhIGh0bWwgZG9jdW1lbnQpLlxuICBpZiAoc291cmNlTWFwVVJMKSB7XG4gICAgdmFyIHBhcnNlZCA9IHVybFBhcnNlKHNvdXJjZU1hcFVSTCk7XG4gICAgaWYgKCFwYXJzZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcInNvdXJjZU1hcFVSTCBjb3VsZCBub3QgYmUgcGFyc2VkXCIpO1xuICAgIH1cbiAgICBpZiAocGFyc2VkLnBhdGgpIHtcbiAgICAgIC8vIFN0cmlwIHRoZSBsYXN0IHBhdGggY29tcG9uZW50LCBidXQga2VlcCB0aGUgXCIvXCIuXG4gICAgICB2YXIgaW5kZXggPSBwYXJzZWQucGF0aC5sYXN0SW5kZXhPZignLycpO1xuICAgICAgaWYgKGluZGV4ID49IDApIHtcbiAgICAgICAgcGFyc2VkLnBhdGggPSBwYXJzZWQucGF0aC5zdWJzdHJpbmcoMCwgaW5kZXggKyAxKTtcbiAgICAgIH1cbiAgICB9XG4gICAgc291cmNlVVJMID0gam9pbih1cmxHZW5lcmF0ZShwYXJzZWQpLCBzb3VyY2VVUkwpO1xuICB9XG5cbiAgcmV0dXJuIG5vcm1hbGl6ZShzb3VyY2VVUkwpO1xufVxuZXhwb3J0cy5jb21wdXRlU291cmNlVVJMID0gY29tcHV0ZVNvdXJjZVVSTDtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbGliL3V0aWwuanNcbi8vIG1vZHVsZSBpZCA9IDRcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiLyogLSotIE1vZGU6IGpzOyBqcy1pbmRlbnQtbGV2ZWw6IDI7IC0qLSAqL1xuLypcbiAqIENvcHlyaWdodCAyMDExIE1vemlsbGEgRm91bmRhdGlvbiBhbmQgY29udHJpYnV0b3JzXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTmV3IEJTRCBsaWNlbnNlLiBTZWUgTElDRU5TRSBvcjpcbiAqIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9CU0QtMy1DbGF1c2VcbiAqL1xuXG52YXIgdXRpbCA9IHJlcXVpcmUoJy4vdXRpbCcpO1xudmFyIGhhcyA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7XG52YXIgaGFzTmF0aXZlTWFwID0gdHlwZW9mIE1hcCAhPT0gXCJ1bmRlZmluZWRcIjtcblxuLyoqXG4gKiBBIGRhdGEgc3RydWN0dXJlIHdoaWNoIGlzIGEgY29tYmluYXRpb24gb2YgYW4gYXJyYXkgYW5kIGEgc2V0LiBBZGRpbmcgYSBuZXdcbiAqIG1lbWJlciBpcyBPKDEpLCB0ZXN0aW5nIGZvciBtZW1iZXJzaGlwIGlzIE8oMSksIGFuZCBmaW5kaW5nIHRoZSBpbmRleCBvZiBhblxuICogZWxlbWVudCBpcyBPKDEpLiBSZW1vdmluZyBlbGVtZW50cyBmcm9tIHRoZSBzZXQgaXMgbm90IHN1cHBvcnRlZC4gT25seVxuICogc3RyaW5ncyBhcmUgc3VwcG9ydGVkIGZvciBtZW1iZXJzaGlwLlxuICovXG5mdW5jdGlvbiBBcnJheVNldCgpIHtcbiAgdGhpcy5fYXJyYXkgPSBbXTtcbiAgdGhpcy5fc2V0ID0gaGFzTmF0aXZlTWFwID8gbmV3IE1hcCgpIDogT2JqZWN0LmNyZWF0ZShudWxsKTtcbn1cblxuLyoqXG4gKiBTdGF0aWMgbWV0aG9kIGZvciBjcmVhdGluZyBBcnJheVNldCBpbnN0YW5jZXMgZnJvbSBhbiBleGlzdGluZyBhcnJheS5cbiAqL1xuQXJyYXlTZXQuZnJvbUFycmF5ID0gZnVuY3Rpb24gQXJyYXlTZXRfZnJvbUFycmF5KGFBcnJheSwgYUFsbG93RHVwbGljYXRlcykge1xuICB2YXIgc2V0ID0gbmV3IEFycmF5U2V0KCk7XG4gIGZvciAodmFyIGkgPSAwLCBsZW4gPSBhQXJyYXkubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICBzZXQuYWRkKGFBcnJheVtpXSwgYUFsbG93RHVwbGljYXRlcyk7XG4gIH1cbiAgcmV0dXJuIHNldDtcbn07XG5cbi8qKlxuICogUmV0dXJuIGhvdyBtYW55IHVuaXF1ZSBpdGVtcyBhcmUgaW4gdGhpcyBBcnJheVNldC4gSWYgZHVwbGljYXRlcyBoYXZlIGJlZW5cbiAqIGFkZGVkLCB0aGFuIHRob3NlIGRvIG5vdCBjb3VudCB0b3dhcmRzIHRoZSBzaXplLlxuICpcbiAqIEByZXR1cm5zIE51bWJlclxuICovXG5BcnJheVNldC5wcm90b3R5cGUuc2l6ZSA9IGZ1bmN0aW9uIEFycmF5U2V0X3NpemUoKSB7XG4gIHJldHVybiBoYXNOYXRpdmVNYXAgPyB0aGlzLl9zZXQuc2l6ZSA6IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXMuX3NldCkubGVuZ3RoO1xufTtcblxuLyoqXG4gKiBBZGQgdGhlIGdpdmVuIHN0cmluZyB0byB0aGlzIHNldC5cbiAqXG4gKiBAcGFyYW0gU3RyaW5nIGFTdHJcbiAqL1xuQXJyYXlTZXQucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uIEFycmF5U2V0X2FkZChhU3RyLCBhQWxsb3dEdXBsaWNhdGVzKSB7XG4gIHZhciBzU3RyID0gaGFzTmF0aXZlTWFwID8gYVN0ciA6IHV0aWwudG9TZXRTdHJpbmcoYVN0cik7XG4gIHZhciBpc0R1cGxpY2F0ZSA9IGhhc05hdGl2ZU1hcCA/IHRoaXMuaGFzKGFTdHIpIDogaGFzLmNhbGwodGhpcy5fc2V0LCBzU3RyKTtcbiAgdmFyIGlkeCA9IHRoaXMuX2FycmF5Lmxlbmd0aDtcbiAgaWYgKCFpc0R1cGxpY2F0ZSB8fCBhQWxsb3dEdXBsaWNhdGVzKSB7XG4gICAgdGhpcy5fYXJyYXkucHVzaChhU3RyKTtcbiAgfVxuICBpZiAoIWlzRHVwbGljYXRlKSB7XG4gICAgaWYgKGhhc05hdGl2ZU1hcCkge1xuICAgICAgdGhpcy5fc2V0LnNldChhU3RyLCBpZHgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9zZXRbc1N0cl0gPSBpZHg7XG4gICAgfVxuICB9XG59O1xuXG4vKipcbiAqIElzIHRoZSBnaXZlbiBzdHJpbmcgYSBtZW1iZXIgb2YgdGhpcyBzZXQ/XG4gKlxuICogQHBhcmFtIFN0cmluZyBhU3RyXG4gKi9cbkFycmF5U2V0LnByb3RvdHlwZS5oYXMgPSBmdW5jdGlvbiBBcnJheVNldF9oYXMoYVN0cikge1xuICBpZiAoaGFzTmF0aXZlTWFwKSB7XG4gICAgcmV0dXJuIHRoaXMuX3NldC5oYXMoYVN0cik7XG4gIH0gZWxzZSB7XG4gICAgdmFyIHNTdHIgPSB1dGlsLnRvU2V0U3RyaW5nKGFTdHIpO1xuICAgIHJldHVybiBoYXMuY2FsbCh0aGlzLl9zZXQsIHNTdHIpO1xuICB9XG59O1xuXG4vKipcbiAqIFdoYXQgaXMgdGhlIGluZGV4IG9mIHRoZSBnaXZlbiBzdHJpbmcgaW4gdGhlIGFycmF5P1xuICpcbiAqIEBwYXJhbSBTdHJpbmcgYVN0clxuICovXG5BcnJheVNldC5wcm90b3R5cGUuaW5kZXhPZiA9IGZ1bmN0aW9uIEFycmF5U2V0X2luZGV4T2YoYVN0cikge1xuICBpZiAoaGFzTmF0aXZlTWFwKSB7XG4gICAgdmFyIGlkeCA9IHRoaXMuX3NldC5nZXQoYVN0cik7XG4gICAgaWYgKGlkeCA+PSAwKSB7XG4gICAgICAgIHJldHVybiBpZHg7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHZhciBzU3RyID0gdXRpbC50b1NldFN0cmluZyhhU3RyKTtcbiAgICBpZiAoaGFzLmNhbGwodGhpcy5fc2V0LCBzU3RyKSkge1xuICAgICAgcmV0dXJuIHRoaXMuX3NldFtzU3RyXTtcbiAgICB9XG4gIH1cblxuICB0aHJvdyBuZXcgRXJyb3IoJ1wiJyArIGFTdHIgKyAnXCIgaXMgbm90IGluIHRoZSBzZXQuJyk7XG59O1xuXG4vKipcbiAqIFdoYXQgaXMgdGhlIGVsZW1lbnQgYXQgdGhlIGdpdmVuIGluZGV4P1xuICpcbiAqIEBwYXJhbSBOdW1iZXIgYUlkeFxuICovXG5BcnJheVNldC5wcm90b3R5cGUuYXQgPSBmdW5jdGlvbiBBcnJheVNldF9hdChhSWR4KSB7XG4gIGlmIChhSWR4ID49IDAgJiYgYUlkeCA8IHRoaXMuX2FycmF5Lmxlbmd0aCkge1xuICAgIHJldHVybiB0aGlzLl9hcnJheVthSWR4XTtcbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoJ05vIGVsZW1lbnQgaW5kZXhlZCBieSAnICsgYUlkeCk7XG59O1xuXG4vKipcbiAqIFJldHVybnMgdGhlIGFycmF5IHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgc2V0ICh3aGljaCBoYXMgdGhlIHByb3BlciBpbmRpY2VzXG4gKiBpbmRpY2F0ZWQgYnkgaW5kZXhPZikuIE5vdGUgdGhhdCB0aGlzIGlzIGEgY29weSBvZiB0aGUgaW50ZXJuYWwgYXJyYXkgdXNlZFxuICogZm9yIHN0b3JpbmcgdGhlIG1lbWJlcnMgc28gdGhhdCBubyBvbmUgY2FuIG1lc3Mgd2l0aCBpbnRlcm5hbCBzdGF0ZS5cbiAqL1xuQXJyYXlTZXQucHJvdG90eXBlLnRvQXJyYXkgPSBmdW5jdGlvbiBBcnJheVNldF90b0FycmF5KCkge1xuICByZXR1cm4gdGhpcy5fYXJyYXkuc2xpY2UoKTtcbn07XG5cbmV4cG9ydHMuQXJyYXlTZXQgPSBBcnJheVNldDtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbGliL2FycmF5LXNldC5qc1xuLy8gbW9kdWxlIGlkID0gNVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIvKiAtKi0gTW9kZToganM7IGpzLWluZGVudC1sZXZlbDogMjsgLSotICovXG4vKlxuICogQ29weXJpZ2h0IDIwMTQgTW96aWxsYSBGb3VuZGF0aW9uIGFuZCBjb250cmlidXRvcnNcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBOZXcgQlNEIGxpY2Vuc2UuIFNlZSBMSUNFTlNFIG9yOlxuICogaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL0JTRC0zLUNsYXVzZVxuICovXG5cbnZhciB1dGlsID0gcmVxdWlyZSgnLi91dGlsJyk7XG5cbi8qKlxuICogRGV0ZXJtaW5lIHdoZXRoZXIgbWFwcGluZ0IgaXMgYWZ0ZXIgbWFwcGluZ0Egd2l0aCByZXNwZWN0IHRvIGdlbmVyYXRlZFxuICogcG9zaXRpb24uXG4gKi9cbmZ1bmN0aW9uIGdlbmVyYXRlZFBvc2l0aW9uQWZ0ZXIobWFwcGluZ0EsIG1hcHBpbmdCKSB7XG4gIC8vIE9wdGltaXplZCBmb3IgbW9zdCBjb21tb24gY2FzZVxuICB2YXIgbGluZUEgPSBtYXBwaW5nQS5nZW5lcmF0ZWRMaW5lO1xuICB2YXIgbGluZUIgPSBtYXBwaW5nQi5nZW5lcmF0ZWRMaW5lO1xuICB2YXIgY29sdW1uQSA9IG1hcHBpbmdBLmdlbmVyYXRlZENvbHVtbjtcbiAgdmFyIGNvbHVtbkIgPSBtYXBwaW5nQi5nZW5lcmF0ZWRDb2x1bW47XG4gIHJldHVybiBsaW5lQiA+IGxpbmVBIHx8IGxpbmVCID09IGxpbmVBICYmIGNvbHVtbkIgPj0gY29sdW1uQSB8fFxuICAgICAgICAgdXRpbC5jb21wYXJlQnlHZW5lcmF0ZWRQb3NpdGlvbnNJbmZsYXRlZChtYXBwaW5nQSwgbWFwcGluZ0IpIDw9IDA7XG59XG5cbi8qKlxuICogQSBkYXRhIHN0cnVjdHVyZSB0byBwcm92aWRlIGEgc29ydGVkIHZpZXcgb2YgYWNjdW11bGF0ZWQgbWFwcGluZ3MgaW4gYVxuICogcGVyZm9ybWFuY2UgY29uc2Npb3VzIG1hbm5lci4gSXQgdHJhZGVzIGEgbmVnbGliYWJsZSBvdmVyaGVhZCBpbiBnZW5lcmFsXG4gKiBjYXNlIGZvciBhIGxhcmdlIHNwZWVkdXAgaW4gY2FzZSBvZiBtYXBwaW5ncyBiZWluZyBhZGRlZCBpbiBvcmRlci5cbiAqL1xuZnVuY3Rpb24gTWFwcGluZ0xpc3QoKSB7XG4gIHRoaXMuX2FycmF5ID0gW107XG4gIHRoaXMuX3NvcnRlZCA9IHRydWU7XG4gIC8vIFNlcnZlcyBhcyBpbmZpbXVtXG4gIHRoaXMuX2xhc3QgPSB7Z2VuZXJhdGVkTGluZTogLTEsIGdlbmVyYXRlZENvbHVtbjogMH07XG59XG5cbi8qKlxuICogSXRlcmF0ZSB0aHJvdWdoIGludGVybmFsIGl0ZW1zLiBUaGlzIG1ldGhvZCB0YWtlcyB0aGUgc2FtZSBhcmd1bWVudHMgdGhhdFxuICogYEFycmF5LnByb3RvdHlwZS5mb3JFYWNoYCB0YWtlcy5cbiAqXG4gKiBOT1RFOiBUaGUgb3JkZXIgb2YgdGhlIG1hcHBpbmdzIGlzIE5PVCBndWFyYW50ZWVkLlxuICovXG5NYXBwaW5nTGlzdC5wcm90b3R5cGUudW5zb3J0ZWRGb3JFYWNoID1cbiAgZnVuY3Rpb24gTWFwcGluZ0xpc3RfZm9yRWFjaChhQ2FsbGJhY2ssIGFUaGlzQXJnKSB7XG4gICAgdGhpcy5fYXJyYXkuZm9yRWFjaChhQ2FsbGJhY2ssIGFUaGlzQXJnKTtcbiAgfTtcblxuLyoqXG4gKiBBZGQgdGhlIGdpdmVuIHNvdXJjZSBtYXBwaW5nLlxuICpcbiAqIEBwYXJhbSBPYmplY3QgYU1hcHBpbmdcbiAqL1xuTWFwcGluZ0xpc3QucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uIE1hcHBpbmdMaXN0X2FkZChhTWFwcGluZykge1xuICBpZiAoZ2VuZXJhdGVkUG9zaXRpb25BZnRlcih0aGlzLl9sYXN0LCBhTWFwcGluZykpIHtcbiAgICB0aGlzLl9sYXN0ID0gYU1hcHBpbmc7XG4gICAgdGhpcy5fYXJyYXkucHVzaChhTWFwcGluZyk7XG4gIH0gZWxzZSB7XG4gICAgdGhpcy5fc29ydGVkID0gZmFsc2U7XG4gICAgdGhpcy5fYXJyYXkucHVzaChhTWFwcGluZyk7XG4gIH1cbn07XG5cbi8qKlxuICogUmV0dXJucyB0aGUgZmxhdCwgc29ydGVkIGFycmF5IG9mIG1hcHBpbmdzLiBUaGUgbWFwcGluZ3MgYXJlIHNvcnRlZCBieVxuICogZ2VuZXJhdGVkIHBvc2l0aW9uLlxuICpcbiAqIFdBUk5JTkc6IFRoaXMgbWV0aG9kIHJldHVybnMgaW50ZXJuYWwgZGF0YSB3aXRob3V0IGNvcHlpbmcsIGZvclxuICogcGVyZm9ybWFuY2UuIFRoZSByZXR1cm4gdmFsdWUgbXVzdCBOT1QgYmUgbXV0YXRlZCwgYW5kIHNob3VsZCBiZSB0cmVhdGVkIGFzXG4gKiBhbiBpbW11dGFibGUgYm9ycm93LiBJZiB5b3Ugd2FudCB0byB0YWtlIG93bmVyc2hpcCwgeW91IG11c3QgbWFrZSB5b3VyIG93blxuICogY29weS5cbiAqL1xuTWFwcGluZ0xpc3QucHJvdG90eXBlLnRvQXJyYXkgPSBmdW5jdGlvbiBNYXBwaW5nTGlzdF90b0FycmF5KCkge1xuICBpZiAoIXRoaXMuX3NvcnRlZCkge1xuICAgIHRoaXMuX2FycmF5LnNvcnQodXRpbC5jb21wYXJlQnlHZW5lcmF0ZWRQb3NpdGlvbnNJbmZsYXRlZCk7XG4gICAgdGhpcy5fc29ydGVkID0gdHJ1ZTtcbiAgfVxuICByZXR1cm4gdGhpcy5fYXJyYXk7XG59O1xuXG5leHBvcnRzLk1hcHBpbmdMaXN0ID0gTWFwcGluZ0xpc3Q7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL2xpYi9tYXBwaW5nLWxpc3QuanNcbi8vIG1vZHVsZSBpZCA9IDZcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiLyogLSotIE1vZGU6IGpzOyBqcy1pbmRlbnQtbGV2ZWw6IDI7IC0qLSAqL1xuLypcbiAqIENvcHlyaWdodCAyMDExIE1vemlsbGEgRm91bmRhdGlvbiBhbmQgY29udHJpYnV0b3JzXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTmV3IEJTRCBsaWNlbnNlLiBTZWUgTElDRU5TRSBvcjpcbiAqIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9CU0QtMy1DbGF1c2VcbiAqL1xuXG52YXIgdXRpbCA9IHJlcXVpcmUoJy4vdXRpbCcpO1xudmFyIGJpbmFyeVNlYXJjaCA9IHJlcXVpcmUoJy4vYmluYXJ5LXNlYXJjaCcpO1xudmFyIEFycmF5U2V0ID0gcmVxdWlyZSgnLi9hcnJheS1zZXQnKS5BcnJheVNldDtcbnZhciBiYXNlNjRWTFEgPSByZXF1aXJlKCcuL2Jhc2U2NC12bHEnKTtcbnZhciBxdWlja1NvcnQgPSByZXF1aXJlKCcuL3F1aWNrLXNvcnQnKS5xdWlja1NvcnQ7XG5cbmZ1bmN0aW9uIFNvdXJjZU1hcENvbnN1bWVyKGFTb3VyY2VNYXAsIGFTb3VyY2VNYXBVUkwpIHtcbiAgdmFyIHNvdXJjZU1hcCA9IGFTb3VyY2VNYXA7XG4gIGlmICh0eXBlb2YgYVNvdXJjZU1hcCA9PT0gJ3N0cmluZycpIHtcbiAgICBzb3VyY2VNYXAgPSB1dGlsLnBhcnNlU291cmNlTWFwSW5wdXQoYVNvdXJjZU1hcCk7XG4gIH1cblxuICByZXR1cm4gc291cmNlTWFwLnNlY3Rpb25zICE9IG51bGxcbiAgICA/IG5ldyBJbmRleGVkU291cmNlTWFwQ29uc3VtZXIoc291cmNlTWFwLCBhU291cmNlTWFwVVJMKVxuICAgIDogbmV3IEJhc2ljU291cmNlTWFwQ29uc3VtZXIoc291cmNlTWFwLCBhU291cmNlTWFwVVJMKTtcbn1cblxuU291cmNlTWFwQ29uc3VtZXIuZnJvbVNvdXJjZU1hcCA9IGZ1bmN0aW9uKGFTb3VyY2VNYXAsIGFTb3VyY2VNYXBVUkwpIHtcbiAgcmV0dXJuIEJhc2ljU291cmNlTWFwQ29uc3VtZXIuZnJvbVNvdXJjZU1hcChhU291cmNlTWFwLCBhU291cmNlTWFwVVJMKTtcbn1cblxuLyoqXG4gKiBUaGUgdmVyc2lvbiBvZiB0aGUgc291cmNlIG1hcHBpbmcgc3BlYyB0aGF0IHdlIGFyZSBjb25zdW1pbmcuXG4gKi9cblNvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZS5fdmVyc2lvbiA9IDM7XG5cbi8vIGBfX2dlbmVyYXRlZE1hcHBpbmdzYCBhbmQgYF9fb3JpZ2luYWxNYXBwaW5nc2AgYXJlIGFycmF5cyB0aGF0IGhvbGQgdGhlXG4vLyBwYXJzZWQgbWFwcGluZyBjb29yZGluYXRlcyBmcm9tIHRoZSBzb3VyY2UgbWFwJ3MgXCJtYXBwaW5nc1wiIGF0dHJpYnV0ZS4gVGhleVxuLy8gYXJlIGxhemlseSBpbnN0YW50aWF0ZWQsIGFjY2Vzc2VkIHZpYSB0aGUgYF9nZW5lcmF0ZWRNYXBwaW5nc2AgYW5kXG4vLyBgX29yaWdpbmFsTWFwcGluZ3NgIGdldHRlcnMgcmVzcGVjdGl2ZWx5LCBhbmQgd2Ugb25seSBwYXJzZSB0aGUgbWFwcGluZ3Ncbi8vIGFuZCBjcmVhdGUgdGhlc2UgYXJyYXlzIG9uY2UgcXVlcmllZCBmb3IgYSBzb3VyY2UgbG9jYXRpb24uIFdlIGp1bXAgdGhyb3VnaFxuLy8gdGhlc2UgaG9vcHMgYmVjYXVzZSB0aGVyZSBjYW4gYmUgbWFueSB0aG91c2FuZHMgb2YgbWFwcGluZ3MsIGFuZCBwYXJzaW5nXG4vLyB0aGVtIGlzIGV4cGVuc2l2ZSwgc28gd2Ugb25seSB3YW50IHRvIGRvIGl0IGlmIHdlIG11c3QuXG4vL1xuLy8gRWFjaCBvYmplY3QgaW4gdGhlIGFycmF5cyBpcyBvZiB0aGUgZm9ybTpcbi8vXG4vLyAgICAge1xuLy8gICAgICAgZ2VuZXJhdGVkTGluZTogVGhlIGxpbmUgbnVtYmVyIGluIHRoZSBnZW5lcmF0ZWQgY29kZSxcbi8vICAgICAgIGdlbmVyYXRlZENvbHVtbjogVGhlIGNvbHVtbiBudW1iZXIgaW4gdGhlIGdlbmVyYXRlZCBjb2RlLFxuLy8gICAgICAgc291cmNlOiBUaGUgcGF0aCB0byB0aGUgb3JpZ2luYWwgc291cmNlIGZpbGUgdGhhdCBnZW5lcmF0ZWQgdGhpc1xuLy8gICAgICAgICAgICAgICBjaHVuayBvZiBjb2RlLFxuLy8gICAgICAgb3JpZ2luYWxMaW5lOiBUaGUgbGluZSBudW1iZXIgaW4gdGhlIG9yaWdpbmFsIHNvdXJjZSB0aGF0XG4vLyAgICAgICAgICAgICAgICAgICAgIGNvcnJlc3BvbmRzIHRvIHRoaXMgY2h1bmsgb2YgZ2VuZXJhdGVkIGNvZGUsXG4vLyAgICAgICBvcmlnaW5hbENvbHVtbjogVGhlIGNvbHVtbiBudW1iZXIgaW4gdGhlIG9yaWdpbmFsIHNvdXJjZSB0aGF0XG4vLyAgICAgICAgICAgICAgICAgICAgICAgY29ycmVzcG9uZHMgdG8gdGhpcyBjaHVuayBvZiBnZW5lcmF0ZWQgY29kZSxcbi8vICAgICAgIG5hbWU6IFRoZSBuYW1lIG9mIHRoZSBvcmlnaW5hbCBzeW1ib2wgd2hpY2ggZ2VuZXJhdGVkIHRoaXMgY2h1bmsgb2Zcbi8vICAgICAgICAgICAgIGNvZGUuXG4vLyAgICAgfVxuLy9cbi8vIEFsbCBwcm9wZXJ0aWVzIGV4Y2VwdCBmb3IgYGdlbmVyYXRlZExpbmVgIGFuZCBgZ2VuZXJhdGVkQ29sdW1uYCBjYW4gYmVcbi8vIGBudWxsYC5cbi8vXG4vLyBgX2dlbmVyYXRlZE1hcHBpbmdzYCBpcyBvcmRlcmVkIGJ5IHRoZSBnZW5lcmF0ZWQgcG9zaXRpb25zLlxuLy9cbi8vIGBfb3JpZ2luYWxNYXBwaW5nc2AgaXMgb3JkZXJlZCBieSB0aGUgb3JpZ2luYWwgcG9zaXRpb25zLlxuXG5Tb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUuX19nZW5lcmF0ZWRNYXBwaW5ncyA9IG51bGw7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlLCAnX2dlbmVyYXRlZE1hcHBpbmdzJywge1xuICBjb25maWd1cmFibGU6IHRydWUsXG4gIGVudW1lcmFibGU6IHRydWUsXG4gIGdldDogZnVuY3Rpb24gKCkge1xuICAgIGlmICghdGhpcy5fX2dlbmVyYXRlZE1hcHBpbmdzKSB7XG4gICAgICB0aGlzLl9wYXJzZU1hcHBpbmdzKHRoaXMuX21hcHBpbmdzLCB0aGlzLnNvdXJjZVJvb3QpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9fZ2VuZXJhdGVkTWFwcGluZ3M7XG4gIH1cbn0pO1xuXG5Tb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUuX19vcmlnaW5hbE1hcHBpbmdzID0gbnVsbDtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShTb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUsICdfb3JpZ2luYWxNYXBwaW5ncycsIHtcbiAgY29uZmlndXJhYmxlOiB0cnVlLFxuICBlbnVtZXJhYmxlOiB0cnVlLFxuICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoIXRoaXMuX19vcmlnaW5hbE1hcHBpbmdzKSB7XG4gICAgICB0aGlzLl9wYXJzZU1hcHBpbmdzKHRoaXMuX21hcHBpbmdzLCB0aGlzLnNvdXJjZVJvb3QpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9fb3JpZ2luYWxNYXBwaW5ncztcbiAgfVxufSk7XG5cblNvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZS5fY2hhcklzTWFwcGluZ1NlcGFyYXRvciA9XG4gIGZ1bmN0aW9uIFNvdXJjZU1hcENvbnN1bWVyX2NoYXJJc01hcHBpbmdTZXBhcmF0b3IoYVN0ciwgaW5kZXgpIHtcbiAgICB2YXIgYyA9IGFTdHIuY2hhckF0KGluZGV4KTtcbiAgICByZXR1cm4gYyA9PT0gXCI7XCIgfHwgYyA9PT0gXCIsXCI7XG4gIH07XG5cbi8qKlxuICogUGFyc2UgdGhlIG1hcHBpbmdzIGluIGEgc3RyaW5nIGluIHRvIGEgZGF0YSBzdHJ1Y3R1cmUgd2hpY2ggd2UgY2FuIGVhc2lseVxuICogcXVlcnkgKHRoZSBvcmRlcmVkIGFycmF5cyBpbiB0aGUgYHRoaXMuX19nZW5lcmF0ZWRNYXBwaW5nc2AgYW5kXG4gKiBgdGhpcy5fX29yaWdpbmFsTWFwcGluZ3NgIHByb3BlcnRpZXMpLlxuICovXG5Tb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUuX3BhcnNlTWFwcGluZ3MgPVxuICBmdW5jdGlvbiBTb3VyY2VNYXBDb25zdW1lcl9wYXJzZU1hcHBpbmdzKGFTdHIsIGFTb3VyY2VSb290KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiU3ViY2xhc3NlcyBtdXN0IGltcGxlbWVudCBfcGFyc2VNYXBwaW5nc1wiKTtcbiAgfTtcblxuU291cmNlTWFwQ29uc3VtZXIuR0VORVJBVEVEX09SREVSID0gMTtcblNvdXJjZU1hcENvbnN1bWVyLk9SSUdJTkFMX09SREVSID0gMjtcblxuU291cmNlTWFwQ29uc3VtZXIuR1JFQVRFU1RfTE9XRVJfQk9VTkQgPSAxO1xuU291cmNlTWFwQ29uc3VtZXIuTEVBU1RfVVBQRVJfQk9VTkQgPSAyO1xuXG4vKipcbiAqIEl0ZXJhdGUgb3ZlciBlYWNoIG1hcHBpbmcgYmV0d2VlbiBhbiBvcmlnaW5hbCBzb3VyY2UvbGluZS9jb2x1bW4gYW5kIGFcbiAqIGdlbmVyYXRlZCBsaW5lL2NvbHVtbiBpbiB0aGlzIHNvdXJjZSBtYXAuXG4gKlxuICogQHBhcmFtIEZ1bmN0aW9uIGFDYWxsYmFja1xuICogICAgICAgIFRoZSBmdW5jdGlvbiB0aGF0IGlzIGNhbGxlZCB3aXRoIGVhY2ggbWFwcGluZy5cbiAqIEBwYXJhbSBPYmplY3QgYUNvbnRleHRcbiAqICAgICAgICBPcHRpb25hbC4gSWYgc3BlY2lmaWVkLCB0aGlzIG9iamVjdCB3aWxsIGJlIHRoZSB2YWx1ZSBvZiBgdGhpc2AgZXZlcnlcbiAqICAgICAgICB0aW1lIHRoYXQgYGFDYWxsYmFja2AgaXMgY2FsbGVkLlxuICogQHBhcmFtIGFPcmRlclxuICogICAgICAgIEVpdGhlciBgU291cmNlTWFwQ29uc3VtZXIuR0VORVJBVEVEX09SREVSYCBvclxuICogICAgICAgIGBTb3VyY2VNYXBDb25zdW1lci5PUklHSU5BTF9PUkRFUmAuIFNwZWNpZmllcyB3aGV0aGVyIHlvdSB3YW50IHRvXG4gKiAgICAgICAgaXRlcmF0ZSBvdmVyIHRoZSBtYXBwaW5ncyBzb3J0ZWQgYnkgdGhlIGdlbmVyYXRlZCBmaWxlJ3MgbGluZS9jb2x1bW5cbiAqICAgICAgICBvcmRlciBvciB0aGUgb3JpZ2luYWwncyBzb3VyY2UvbGluZS9jb2x1bW4gb3JkZXIsIHJlc3BlY3RpdmVseS4gRGVmYXVsdHMgdG9cbiAqICAgICAgICBgU291cmNlTWFwQ29uc3VtZXIuR0VORVJBVEVEX09SREVSYC5cbiAqL1xuU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlLmVhY2hNYXBwaW5nID1cbiAgZnVuY3Rpb24gU291cmNlTWFwQ29uc3VtZXJfZWFjaE1hcHBpbmcoYUNhbGxiYWNrLCBhQ29udGV4dCwgYU9yZGVyKSB7XG4gICAgdmFyIGNvbnRleHQgPSBhQ29udGV4dCB8fCBudWxsO1xuICAgIHZhciBvcmRlciA9IGFPcmRlciB8fCBTb3VyY2VNYXBDb25zdW1lci5HRU5FUkFURURfT1JERVI7XG5cbiAgICB2YXIgbWFwcGluZ3M7XG4gICAgc3dpdGNoIChvcmRlcikge1xuICAgIGNhc2UgU291cmNlTWFwQ29uc3VtZXIuR0VORVJBVEVEX09SREVSOlxuICAgICAgbWFwcGluZ3MgPSB0aGlzLl9nZW5lcmF0ZWRNYXBwaW5ncztcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgU291cmNlTWFwQ29uc3VtZXIuT1JJR0lOQUxfT1JERVI6XG4gICAgICBtYXBwaW5ncyA9IHRoaXMuX29yaWdpbmFsTWFwcGluZ3M7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiVW5rbm93biBvcmRlciBvZiBpdGVyYXRpb24uXCIpO1xuICAgIH1cblxuICAgIHZhciBzb3VyY2VSb290ID0gdGhpcy5zb3VyY2VSb290O1xuICAgIG1hcHBpbmdzLm1hcChmdW5jdGlvbiAobWFwcGluZykge1xuICAgICAgdmFyIHNvdXJjZSA9IG1hcHBpbmcuc291cmNlID09PSBudWxsID8gbnVsbCA6IHRoaXMuX3NvdXJjZXMuYXQobWFwcGluZy5zb3VyY2UpO1xuICAgICAgc291cmNlID0gdXRpbC5jb21wdXRlU291cmNlVVJMKHNvdXJjZVJvb3QsIHNvdXJjZSwgdGhpcy5fc291cmNlTWFwVVJMKTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHNvdXJjZTogc291cmNlLFxuICAgICAgICBnZW5lcmF0ZWRMaW5lOiBtYXBwaW5nLmdlbmVyYXRlZExpbmUsXG4gICAgICAgIGdlbmVyYXRlZENvbHVtbjogbWFwcGluZy5nZW5lcmF0ZWRDb2x1bW4sXG4gICAgICAgIG9yaWdpbmFsTGluZTogbWFwcGluZy5vcmlnaW5hbExpbmUsXG4gICAgICAgIG9yaWdpbmFsQ29sdW1uOiBtYXBwaW5nLm9yaWdpbmFsQ29sdW1uLFxuICAgICAgICBuYW1lOiBtYXBwaW5nLm5hbWUgPT09IG51bGwgPyBudWxsIDogdGhpcy5fbmFtZXMuYXQobWFwcGluZy5uYW1lKVxuICAgICAgfTtcbiAgICB9LCB0aGlzKS5mb3JFYWNoKGFDYWxsYmFjaywgY29udGV4dCk7XG4gIH07XG5cbi8qKlxuICogUmV0dXJucyBhbGwgZ2VuZXJhdGVkIGxpbmUgYW5kIGNvbHVtbiBpbmZvcm1hdGlvbiBmb3IgdGhlIG9yaWdpbmFsIHNvdXJjZSxcbiAqIGxpbmUsIGFuZCBjb2x1bW4gcHJvdmlkZWQuIElmIG5vIGNvbHVtbiBpcyBwcm92aWRlZCwgcmV0dXJucyBhbGwgbWFwcGluZ3NcbiAqIGNvcnJlc3BvbmRpbmcgdG8gYSBlaXRoZXIgdGhlIGxpbmUgd2UgYXJlIHNlYXJjaGluZyBmb3Igb3IgdGhlIG5leHRcbiAqIGNsb3Nlc3QgbGluZSB0aGF0IGhhcyBhbnkgbWFwcGluZ3MuIE90aGVyd2lzZSwgcmV0dXJucyBhbGwgbWFwcGluZ3NcbiAqIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGdpdmVuIGxpbmUgYW5kIGVpdGhlciB0aGUgY29sdW1uIHdlIGFyZSBzZWFyY2hpbmcgZm9yXG4gKiBvciB0aGUgbmV4dCBjbG9zZXN0IGNvbHVtbiB0aGF0IGhhcyBhbnkgb2Zmc2V0cy5cbiAqXG4gKiBUaGUgb25seSBhcmd1bWVudCBpcyBhbiBvYmplY3Qgd2l0aCB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6XG4gKlxuICogICAtIHNvdXJjZTogVGhlIGZpbGVuYW1lIG9mIHRoZSBvcmlnaW5hbCBzb3VyY2UuXG4gKiAgIC0gbGluZTogVGhlIGxpbmUgbnVtYmVyIGluIHRoZSBvcmlnaW5hbCBzb3VyY2UuICBUaGUgbGluZSBudW1iZXIgaXMgMS1iYXNlZC5cbiAqICAgLSBjb2x1bW46IE9wdGlvbmFsLiB0aGUgY29sdW1uIG51bWJlciBpbiB0aGUgb3JpZ2luYWwgc291cmNlLlxuICogICAgVGhlIGNvbHVtbiBudW1iZXIgaXMgMC1iYXNlZC5cbiAqXG4gKiBhbmQgYW4gYXJyYXkgb2Ygb2JqZWN0cyBpcyByZXR1cm5lZCwgZWFjaCB3aXRoIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllczpcbiAqXG4gKiAgIC0gbGluZTogVGhlIGxpbmUgbnVtYmVyIGluIHRoZSBnZW5lcmF0ZWQgc291cmNlLCBvciBudWxsLiAgVGhlXG4gKiAgICBsaW5lIG51bWJlciBpcyAxLWJhc2VkLlxuICogICAtIGNvbHVtbjogVGhlIGNvbHVtbiBudW1iZXIgaW4gdGhlIGdlbmVyYXRlZCBzb3VyY2UsIG9yIG51bGwuXG4gKiAgICBUaGUgY29sdW1uIG51bWJlciBpcyAwLWJhc2VkLlxuICovXG5Tb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUuYWxsR2VuZXJhdGVkUG9zaXRpb25zRm9yID1cbiAgZnVuY3Rpb24gU291cmNlTWFwQ29uc3VtZXJfYWxsR2VuZXJhdGVkUG9zaXRpb25zRm9yKGFBcmdzKSB7XG4gICAgdmFyIGxpbmUgPSB1dGlsLmdldEFyZyhhQXJncywgJ2xpbmUnKTtcblxuICAgIC8vIFdoZW4gdGhlcmUgaXMgbm8gZXhhY3QgbWF0Y2gsIEJhc2ljU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlLl9maW5kTWFwcGluZ1xuICAgIC8vIHJldHVybnMgdGhlIGluZGV4IG9mIHRoZSBjbG9zZXN0IG1hcHBpbmcgbGVzcyB0aGFuIHRoZSBuZWVkbGUuIEJ5XG4gICAgLy8gc2V0dGluZyBuZWVkbGUub3JpZ2luYWxDb2x1bW4gdG8gMCwgd2UgdGh1cyBmaW5kIHRoZSBsYXN0IG1hcHBpbmcgZm9yXG4gICAgLy8gdGhlIGdpdmVuIGxpbmUsIHByb3ZpZGVkIHN1Y2ggYSBtYXBwaW5nIGV4aXN0cy5cbiAgICB2YXIgbmVlZGxlID0ge1xuICAgICAgc291cmNlOiB1dGlsLmdldEFyZyhhQXJncywgJ3NvdXJjZScpLFxuICAgICAgb3JpZ2luYWxMaW5lOiBsaW5lLFxuICAgICAgb3JpZ2luYWxDb2x1bW46IHV0aWwuZ2V0QXJnKGFBcmdzLCAnY29sdW1uJywgMClcbiAgICB9O1xuXG4gICAgbmVlZGxlLnNvdXJjZSA9IHRoaXMuX2ZpbmRTb3VyY2VJbmRleChuZWVkbGUuc291cmNlKTtcbiAgICBpZiAobmVlZGxlLnNvdXJjZSA8IDApIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG5cbiAgICB2YXIgbWFwcGluZ3MgPSBbXTtcblxuICAgIHZhciBpbmRleCA9IHRoaXMuX2ZpbmRNYXBwaW5nKG5lZWRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9vcmlnaW5hbE1hcHBpbmdzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwib3JpZ2luYWxMaW5lXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJvcmlnaW5hbENvbHVtblwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHV0aWwuY29tcGFyZUJ5T3JpZ2luYWxQb3NpdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmluYXJ5U2VhcmNoLkxFQVNUX1VQUEVSX0JPVU5EKTtcbiAgICBpZiAoaW5kZXggPj0gMCkge1xuICAgICAgdmFyIG1hcHBpbmcgPSB0aGlzLl9vcmlnaW5hbE1hcHBpbmdzW2luZGV4XTtcblxuICAgICAgaWYgKGFBcmdzLmNvbHVtbiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHZhciBvcmlnaW5hbExpbmUgPSBtYXBwaW5nLm9yaWdpbmFsTGluZTtcblxuICAgICAgICAvLyBJdGVyYXRlIHVudGlsIGVpdGhlciB3ZSBydW4gb3V0IG9mIG1hcHBpbmdzLCBvciB3ZSBydW4gaW50b1xuICAgICAgICAvLyBhIG1hcHBpbmcgZm9yIGEgZGlmZmVyZW50IGxpbmUgdGhhbiB0aGUgb25lIHdlIGZvdW5kLiBTaW5jZVxuICAgICAgICAvLyBtYXBwaW5ncyBhcmUgc29ydGVkLCB0aGlzIGlzIGd1YXJhbnRlZWQgdG8gZmluZCBhbGwgbWFwcGluZ3MgZm9yXG4gICAgICAgIC8vIHRoZSBsaW5lIHdlIGZvdW5kLlxuICAgICAgICB3aGlsZSAobWFwcGluZyAmJiBtYXBwaW5nLm9yaWdpbmFsTGluZSA9PT0gb3JpZ2luYWxMaW5lKSB7XG4gICAgICAgICAgbWFwcGluZ3MucHVzaCh7XG4gICAgICAgICAgICBsaW5lOiB1dGlsLmdldEFyZyhtYXBwaW5nLCAnZ2VuZXJhdGVkTGluZScsIG51bGwpLFxuICAgICAgICAgICAgY29sdW1uOiB1dGlsLmdldEFyZyhtYXBwaW5nLCAnZ2VuZXJhdGVkQ29sdW1uJywgbnVsbCksXG4gICAgICAgICAgICBsYXN0Q29sdW1uOiB1dGlsLmdldEFyZyhtYXBwaW5nLCAnbGFzdEdlbmVyYXRlZENvbHVtbicsIG51bGwpXG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICBtYXBwaW5nID0gdGhpcy5fb3JpZ2luYWxNYXBwaW5nc1srK2luZGV4XTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIG9yaWdpbmFsQ29sdW1uID0gbWFwcGluZy5vcmlnaW5hbENvbHVtbjtcblxuICAgICAgICAvLyBJdGVyYXRlIHVudGlsIGVpdGhlciB3ZSBydW4gb3V0IG9mIG1hcHBpbmdzLCBvciB3ZSBydW4gaW50b1xuICAgICAgICAvLyBhIG1hcHBpbmcgZm9yIGEgZGlmZmVyZW50IGxpbmUgdGhhbiB0aGUgb25lIHdlIHdlcmUgc2VhcmNoaW5nIGZvci5cbiAgICAgICAgLy8gU2luY2UgbWFwcGluZ3MgYXJlIHNvcnRlZCwgdGhpcyBpcyBndWFyYW50ZWVkIHRvIGZpbmQgYWxsIG1hcHBpbmdzIGZvclxuICAgICAgICAvLyB0aGUgbGluZSB3ZSBhcmUgc2VhcmNoaW5nIGZvci5cbiAgICAgICAgd2hpbGUgKG1hcHBpbmcgJiZcbiAgICAgICAgICAgICAgIG1hcHBpbmcub3JpZ2luYWxMaW5lID09PSBsaW5lICYmXG4gICAgICAgICAgICAgICBtYXBwaW5nLm9yaWdpbmFsQ29sdW1uID09IG9yaWdpbmFsQ29sdW1uKSB7XG4gICAgICAgICAgbWFwcGluZ3MucHVzaCh7XG4gICAgICAgICAgICBsaW5lOiB1dGlsLmdldEFyZyhtYXBwaW5nLCAnZ2VuZXJhdGVkTGluZScsIG51bGwpLFxuICAgICAgICAgICAgY29sdW1uOiB1dGlsLmdldEFyZyhtYXBwaW5nLCAnZ2VuZXJhdGVkQ29sdW1uJywgbnVsbCksXG4gICAgICAgICAgICBsYXN0Q29sdW1uOiB1dGlsLmdldEFyZyhtYXBwaW5nLCAnbGFzdEdlbmVyYXRlZENvbHVtbicsIG51bGwpXG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICBtYXBwaW5nID0gdGhpcy5fb3JpZ2luYWxNYXBwaW5nc1srK2luZGV4XTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBtYXBwaW5ncztcbiAgfTtcblxuZXhwb3J0cy5Tb3VyY2VNYXBDb25zdW1lciA9IFNvdXJjZU1hcENvbnN1bWVyO1xuXG4vKipcbiAqIEEgQmFzaWNTb3VyY2VNYXBDb25zdW1lciBpbnN0YW5jZSByZXByZXNlbnRzIGEgcGFyc2VkIHNvdXJjZSBtYXAgd2hpY2ggd2UgY2FuXG4gKiBxdWVyeSBmb3IgaW5mb3JtYXRpb24gYWJvdXQgdGhlIG9yaWdpbmFsIGZpbGUgcG9zaXRpb25zIGJ5IGdpdmluZyBpdCBhIGZpbGVcbiAqIHBvc2l0aW9uIGluIHRoZSBnZW5lcmF0ZWQgc291cmNlLlxuICpcbiAqIFRoZSBmaXJzdCBwYXJhbWV0ZXIgaXMgdGhlIHJhdyBzb3VyY2UgbWFwIChlaXRoZXIgYXMgYSBKU09OIHN0cmluZywgb3JcbiAqIGFscmVhZHkgcGFyc2VkIHRvIGFuIG9iamVjdCkuIEFjY29yZGluZyB0byB0aGUgc3BlYywgc291cmNlIG1hcHMgaGF2ZSB0aGVcbiAqIGZvbGxvd2luZyBhdHRyaWJ1dGVzOlxuICpcbiAqICAgLSB2ZXJzaW9uOiBXaGljaCB2ZXJzaW9uIG9mIHRoZSBzb3VyY2UgbWFwIHNwZWMgdGhpcyBtYXAgaXMgZm9sbG93aW5nLlxuICogICAtIHNvdXJjZXM6IEFuIGFycmF5IG9mIFVSTHMgdG8gdGhlIG9yaWdpbmFsIHNvdXJjZSBmaWxlcy5cbiAqICAgLSBuYW1lczogQW4gYXJyYXkgb2YgaWRlbnRpZmllcnMgd2hpY2ggY2FuIGJlIHJlZmVycmVuY2VkIGJ5IGluZGl2aWR1YWwgbWFwcGluZ3MuXG4gKiAgIC0gc291cmNlUm9vdDogT3B0aW9uYWwuIFRoZSBVUkwgcm9vdCBmcm9tIHdoaWNoIGFsbCBzb3VyY2VzIGFyZSByZWxhdGl2ZS5cbiAqICAgLSBzb3VyY2VzQ29udGVudDogT3B0aW9uYWwuIEFuIGFycmF5IG9mIGNvbnRlbnRzIG9mIHRoZSBvcmlnaW5hbCBzb3VyY2UgZmlsZXMuXG4gKiAgIC0gbWFwcGluZ3M6IEEgc3RyaW5nIG9mIGJhc2U2NCBWTFFzIHdoaWNoIGNvbnRhaW4gdGhlIGFjdHVhbCBtYXBwaW5ncy5cbiAqICAgLSBmaWxlOiBPcHRpb25hbC4gVGhlIGdlbmVyYXRlZCBmaWxlIHRoaXMgc291cmNlIG1hcCBpcyBhc3NvY2lhdGVkIHdpdGguXG4gKlxuICogSGVyZSBpcyBhbiBleGFtcGxlIHNvdXJjZSBtYXAsIHRha2VuIGZyb20gdGhlIHNvdXJjZSBtYXAgc3BlY1swXTpcbiAqXG4gKiAgICAge1xuICogICAgICAgdmVyc2lvbiA6IDMsXG4gKiAgICAgICBmaWxlOiBcIm91dC5qc1wiLFxuICogICAgICAgc291cmNlUm9vdCA6IFwiXCIsXG4gKiAgICAgICBzb3VyY2VzOiBbXCJmb28uanNcIiwgXCJiYXIuanNcIl0sXG4gKiAgICAgICBuYW1lczogW1wic3JjXCIsIFwibWFwc1wiLCBcImFyZVwiLCBcImZ1blwiXSxcbiAqICAgICAgIG1hcHBpbmdzOiBcIkFBLEFCOztBQkNERTtcIlxuICogICAgIH1cbiAqXG4gKiBUaGUgc2Vjb25kIHBhcmFtZXRlciwgaWYgZ2l2ZW4sIGlzIGEgc3RyaW5nIHdob3NlIHZhbHVlIGlzIHRoZSBVUkxcbiAqIGF0IHdoaWNoIHRoZSBzb3VyY2UgbWFwIHdhcyBmb3VuZC4gIFRoaXMgVVJMIGlzIHVzZWQgdG8gY29tcHV0ZSB0aGVcbiAqIHNvdXJjZXMgYXJyYXkuXG4gKlxuICogWzBdOiBodHRwczovL2RvY3MuZ29vZ2xlLmNvbS9kb2N1bWVudC9kLzFVMVJHQWVoUXdSeXBVVG92RjFLUmxwaU9GemUwYi1fMmdjNmZBSDBLWTBrL2VkaXQ/cGxpPTEjXG4gKi9cbmZ1bmN0aW9uIEJhc2ljU291cmNlTWFwQ29uc3VtZXIoYVNvdXJjZU1hcCwgYVNvdXJjZU1hcFVSTCkge1xuICB2YXIgc291cmNlTWFwID0gYVNvdXJjZU1hcDtcbiAgaWYgKHR5cGVvZiBhU291cmNlTWFwID09PSAnc3RyaW5nJykge1xuICAgIHNvdXJjZU1hcCA9IHV0aWwucGFyc2VTb3VyY2VNYXBJbnB1dChhU291cmNlTWFwKTtcbiAgfVxuXG4gIHZhciB2ZXJzaW9uID0gdXRpbC5nZXRBcmcoc291cmNlTWFwLCAndmVyc2lvbicpO1xuICB2YXIgc291cmNlcyA9IHV0aWwuZ2V0QXJnKHNvdXJjZU1hcCwgJ3NvdXJjZXMnKTtcbiAgLy8gU2FzcyAzLjMgbGVhdmVzIG91dCB0aGUgJ25hbWVzJyBhcnJheSwgc28gd2UgZGV2aWF0ZSBmcm9tIHRoZSBzcGVjICh3aGljaFxuICAvLyByZXF1aXJlcyB0aGUgYXJyYXkpIHRvIHBsYXkgbmljZSBoZXJlLlxuICB2YXIgbmFtZXMgPSB1dGlsLmdldEFyZyhzb3VyY2VNYXAsICduYW1lcycsIFtdKTtcbiAgdmFyIHNvdXJjZVJvb3QgPSB1dGlsLmdldEFyZyhzb3VyY2VNYXAsICdzb3VyY2VSb290JywgbnVsbCk7XG4gIHZhciBzb3VyY2VzQ29udGVudCA9IHV0aWwuZ2V0QXJnKHNvdXJjZU1hcCwgJ3NvdXJjZXNDb250ZW50JywgbnVsbCk7XG4gIHZhciBtYXBwaW5ncyA9IHV0aWwuZ2V0QXJnKHNvdXJjZU1hcCwgJ21hcHBpbmdzJyk7XG4gIHZhciBmaWxlID0gdXRpbC5nZXRBcmcoc291cmNlTWFwLCAnZmlsZScsIG51bGwpO1xuXG4gIC8vIE9uY2UgYWdhaW4sIFNhc3MgZGV2aWF0ZXMgZnJvbSB0aGUgc3BlYyBhbmQgc3VwcGxpZXMgdGhlIHZlcnNpb24gYXMgYVxuICAvLyBzdHJpbmcgcmF0aGVyIHRoYW4gYSBudW1iZXIsIHNvIHdlIHVzZSBsb29zZSBlcXVhbGl0eSBjaGVja2luZyBoZXJlLlxuICBpZiAodmVyc2lvbiAhPSB0aGlzLl92ZXJzaW9uKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdVbnN1cHBvcnRlZCB2ZXJzaW9uOiAnICsgdmVyc2lvbik7XG4gIH1cblxuICBpZiAoc291cmNlUm9vdCkge1xuICAgIHNvdXJjZVJvb3QgPSB1dGlsLm5vcm1hbGl6ZShzb3VyY2VSb290KTtcbiAgfVxuXG4gIHNvdXJjZXMgPSBzb3VyY2VzXG4gICAgLm1hcChTdHJpbmcpXG4gICAgLy8gU29tZSBzb3VyY2UgbWFwcyBwcm9kdWNlIHJlbGF0aXZlIHNvdXJjZSBwYXRocyBsaWtlIFwiLi9mb28uanNcIiBpbnN0ZWFkIG9mXG4gICAgLy8gXCJmb28uanNcIi4gIE5vcm1hbGl6ZSB0aGVzZSBmaXJzdCBzbyB0aGF0IGZ1dHVyZSBjb21wYXJpc29ucyB3aWxsIHN1Y2NlZWQuXG4gICAgLy8gU2VlIGJ1Z3ppbC5sYS8xMDkwNzY4LlxuICAgIC5tYXAodXRpbC5ub3JtYWxpemUpXG4gICAgLy8gQWx3YXlzIGVuc3VyZSB0aGF0IGFic29sdXRlIHNvdXJjZXMgYXJlIGludGVybmFsbHkgc3RvcmVkIHJlbGF0aXZlIHRvXG4gICAgLy8gdGhlIHNvdXJjZSByb290LCBpZiB0aGUgc291cmNlIHJvb3QgaXMgYWJzb2x1dGUuIE5vdCBkb2luZyB0aGlzIHdvdWxkXG4gICAgLy8gYmUgcGFydGljdWxhcmx5IHByb2JsZW1hdGljIHdoZW4gdGhlIHNvdXJjZSByb290IGlzIGEgcHJlZml4IG9mIHRoZVxuICAgIC8vIHNvdXJjZSAodmFsaWQsIGJ1dCB3aHk/PykuIFNlZSBnaXRodWIgaXNzdWUgIzE5OSBhbmQgYnVnemlsLmxhLzExODg5ODIuXG4gICAgLm1hcChmdW5jdGlvbiAoc291cmNlKSB7XG4gICAgICByZXR1cm4gc291cmNlUm9vdCAmJiB1dGlsLmlzQWJzb2x1dGUoc291cmNlUm9vdCkgJiYgdXRpbC5pc0Fic29sdXRlKHNvdXJjZSlcbiAgICAgICAgPyB1dGlsLnJlbGF0aXZlKHNvdXJjZVJvb3QsIHNvdXJjZSlcbiAgICAgICAgOiBzb3VyY2U7XG4gICAgfSk7XG5cbiAgLy8gUGFzcyBgdHJ1ZWAgYmVsb3cgdG8gYWxsb3cgZHVwbGljYXRlIG5hbWVzIGFuZCBzb3VyY2VzLiBXaGlsZSBzb3VyY2UgbWFwc1xuICAvLyBhcmUgaW50ZW5kZWQgdG8gYmUgY29tcHJlc3NlZCBhbmQgZGVkdXBsaWNhdGVkLCB0aGUgVHlwZVNjcmlwdCBjb21waWxlclxuICAvLyBzb21ldGltZXMgZ2VuZXJhdGVzIHNvdXJjZSBtYXBzIHdpdGggZHVwbGljYXRlcyBpbiB0aGVtLiBTZWUgR2l0aHViIGlzc3VlXG4gIC8vICM3MiBhbmQgYnVnemlsLmxhLzg4OTQ5Mi5cbiAgdGhpcy5fbmFtZXMgPSBBcnJheVNldC5mcm9tQXJyYXkobmFtZXMubWFwKFN0cmluZyksIHRydWUpO1xuICB0aGlzLl9zb3VyY2VzID0gQXJyYXlTZXQuZnJvbUFycmF5KHNvdXJjZXMsIHRydWUpO1xuXG4gIHRoaXMuX2Fic29sdXRlU291cmNlcyA9IHRoaXMuX3NvdXJjZXMudG9BcnJheSgpLm1hcChmdW5jdGlvbiAocykge1xuICAgIHJldHVybiB1dGlsLmNvbXB1dGVTb3VyY2VVUkwoc291cmNlUm9vdCwgcywgYVNvdXJjZU1hcFVSTCk7XG4gIH0pO1xuXG4gIHRoaXMuc291cmNlUm9vdCA9IHNvdXJjZVJvb3Q7XG4gIHRoaXMuc291cmNlc0NvbnRlbnQgPSBzb3VyY2VzQ29udGVudDtcbiAgdGhpcy5fbWFwcGluZ3MgPSBtYXBwaW5ncztcbiAgdGhpcy5fc291cmNlTWFwVVJMID0gYVNvdXJjZU1hcFVSTDtcbiAgdGhpcy5maWxlID0gZmlsZTtcbn1cblxuQmFzaWNTb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKFNvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZSk7XG5CYXNpY1NvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZS5jb25zdW1lciA9IFNvdXJjZU1hcENvbnN1bWVyO1xuXG4vKipcbiAqIFV0aWxpdHkgZnVuY3Rpb24gdG8gZmluZCB0aGUgaW5kZXggb2YgYSBzb3VyY2UuICBSZXR1cm5zIC0xIGlmIG5vdFxuICogZm91bmQuXG4gKi9cbkJhc2ljU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlLl9maW5kU291cmNlSW5kZXggPSBmdW5jdGlvbihhU291cmNlKSB7XG4gIHZhciByZWxhdGl2ZVNvdXJjZSA9IGFTb3VyY2U7XG4gIGlmICh0aGlzLnNvdXJjZVJvb3QgIT0gbnVsbCkge1xuICAgIHJlbGF0aXZlU291cmNlID0gdXRpbC5yZWxhdGl2ZSh0aGlzLnNvdXJjZVJvb3QsIHJlbGF0aXZlU291cmNlKTtcbiAgfVxuXG4gIGlmICh0aGlzLl9zb3VyY2VzLmhhcyhyZWxhdGl2ZVNvdXJjZSkpIHtcbiAgICByZXR1cm4gdGhpcy5fc291cmNlcy5pbmRleE9mKHJlbGF0aXZlU291cmNlKTtcbiAgfVxuXG4gIC8vIE1heWJlIGFTb3VyY2UgaXMgYW4gYWJzb2x1dGUgVVJMIGFzIHJldHVybmVkIGJ5IHxzb3VyY2VzfC4gIEluXG4gIC8vIHRoaXMgY2FzZSB3ZSBjYW4ndCBzaW1wbHkgdW5kbyB0aGUgdHJhbnNmb3JtLlxuICB2YXIgaTtcbiAgZm9yIChpID0gMDsgaSA8IHRoaXMuX2Fic29sdXRlU291cmNlcy5sZW5ndGg7ICsraSkge1xuICAgIGlmICh0aGlzLl9hYnNvbHV0ZVNvdXJjZXNbaV0gPT0gYVNvdXJjZSkge1xuICAgICAgcmV0dXJuIGk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIC0xO1xufTtcblxuLyoqXG4gKiBDcmVhdGUgYSBCYXNpY1NvdXJjZU1hcENvbnN1bWVyIGZyb20gYSBTb3VyY2VNYXBHZW5lcmF0b3IuXG4gKlxuICogQHBhcmFtIFNvdXJjZU1hcEdlbmVyYXRvciBhU291cmNlTWFwXG4gKiAgICAgICAgVGhlIHNvdXJjZSBtYXAgdGhhdCB3aWxsIGJlIGNvbnN1bWVkLlxuICogQHBhcmFtIFN0cmluZyBhU291cmNlTWFwVVJMXG4gKiAgICAgICAgVGhlIFVSTCBhdCB3aGljaCB0aGUgc291cmNlIG1hcCBjYW4gYmUgZm91bmQgKG9wdGlvbmFsKVxuICogQHJldHVybnMgQmFzaWNTb3VyY2VNYXBDb25zdW1lclxuICovXG5CYXNpY1NvdXJjZU1hcENvbnN1bWVyLmZyb21Tb3VyY2VNYXAgPVxuICBmdW5jdGlvbiBTb3VyY2VNYXBDb25zdW1lcl9mcm9tU291cmNlTWFwKGFTb3VyY2VNYXAsIGFTb3VyY2VNYXBVUkwpIHtcbiAgICB2YXIgc21jID0gT2JqZWN0LmNyZWF0ZShCYXNpY1NvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZSk7XG5cbiAgICB2YXIgbmFtZXMgPSBzbWMuX25hbWVzID0gQXJyYXlTZXQuZnJvbUFycmF5KGFTb3VyY2VNYXAuX25hbWVzLnRvQXJyYXkoKSwgdHJ1ZSk7XG4gICAgdmFyIHNvdXJjZXMgPSBzbWMuX3NvdXJjZXMgPSBBcnJheVNldC5mcm9tQXJyYXkoYVNvdXJjZU1hcC5fc291cmNlcy50b0FycmF5KCksIHRydWUpO1xuICAgIHNtYy5zb3VyY2VSb290ID0gYVNvdXJjZU1hcC5fc291cmNlUm9vdDtcbiAgICBzbWMuc291cmNlc0NvbnRlbnQgPSBhU291cmNlTWFwLl9nZW5lcmF0ZVNvdXJjZXNDb250ZW50KHNtYy5fc291cmNlcy50b0FycmF5KCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbWMuc291cmNlUm9vdCk7XG4gICAgc21jLmZpbGUgPSBhU291cmNlTWFwLl9maWxlO1xuICAgIHNtYy5fc291cmNlTWFwVVJMID0gYVNvdXJjZU1hcFVSTDtcbiAgICBzbWMuX2Fic29sdXRlU291cmNlcyA9IHNtYy5fc291cmNlcy50b0FycmF5KCkubWFwKGZ1bmN0aW9uIChzKSB7XG4gICAgICByZXR1cm4gdXRpbC5jb21wdXRlU291cmNlVVJMKHNtYy5zb3VyY2VSb290LCBzLCBhU291cmNlTWFwVVJMKTtcbiAgICB9KTtcblxuICAgIC8vIEJlY2F1c2Ugd2UgYXJlIG1vZGlmeWluZyB0aGUgZW50cmllcyAoYnkgY29udmVydGluZyBzdHJpbmcgc291cmNlcyBhbmRcbiAgICAvLyBuYW1lcyB0byBpbmRpY2VzIGludG8gdGhlIHNvdXJjZXMgYW5kIG5hbWVzIEFycmF5U2V0cyksIHdlIGhhdmUgdG8gbWFrZVxuICAgIC8vIGEgY29weSBvZiB0aGUgZW50cnkgb3IgZWxzZSBiYWQgdGhpbmdzIGhhcHBlbi4gU2hhcmVkIG11dGFibGUgc3RhdGVcbiAgICAvLyBzdHJpa2VzIGFnYWluISBTZWUgZ2l0aHViIGlzc3VlICMxOTEuXG5cbiAgICB2YXIgZ2VuZXJhdGVkTWFwcGluZ3MgPSBhU291cmNlTWFwLl9tYXBwaW5ncy50b0FycmF5KCkuc2xpY2UoKTtcbiAgICB2YXIgZGVzdEdlbmVyYXRlZE1hcHBpbmdzID0gc21jLl9fZ2VuZXJhdGVkTWFwcGluZ3MgPSBbXTtcbiAgICB2YXIgZGVzdE9yaWdpbmFsTWFwcGluZ3MgPSBzbWMuX19vcmlnaW5hbE1hcHBpbmdzID0gW107XG5cbiAgICBmb3IgKHZhciBpID0gMCwgbGVuZ3RoID0gZ2VuZXJhdGVkTWFwcGluZ3MubGVuZ3RoOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBzcmNNYXBwaW5nID0gZ2VuZXJhdGVkTWFwcGluZ3NbaV07XG4gICAgICB2YXIgZGVzdE1hcHBpbmcgPSBuZXcgTWFwcGluZztcbiAgICAgIGRlc3RNYXBwaW5nLmdlbmVyYXRlZExpbmUgPSBzcmNNYXBwaW5nLmdlbmVyYXRlZExpbmU7XG4gICAgICBkZXN0TWFwcGluZy5nZW5lcmF0ZWRDb2x1bW4gPSBzcmNNYXBwaW5nLmdlbmVyYXRlZENvbHVtbjtcblxuICAgICAgaWYgKHNyY01hcHBpbmcuc291cmNlKSB7XG4gICAgICAgIGRlc3RNYXBwaW5nLnNvdXJjZSA9IHNvdXJjZXMuaW5kZXhPZihzcmNNYXBwaW5nLnNvdXJjZSk7XG4gICAgICAgIGRlc3RNYXBwaW5nLm9yaWdpbmFsTGluZSA9IHNyY01hcHBpbmcub3JpZ2luYWxMaW5lO1xuICAgICAgICBkZXN0TWFwcGluZy5vcmlnaW5hbENvbHVtbiA9IHNyY01hcHBpbmcub3JpZ2luYWxDb2x1bW47XG5cbiAgICAgICAgaWYgKHNyY01hcHBpbmcubmFtZSkge1xuICAgICAgICAgIGRlc3RNYXBwaW5nLm5hbWUgPSBuYW1lcy5pbmRleE9mKHNyY01hcHBpbmcubmFtZSk7XG4gICAgICAgIH1cblxuICAgICAgICBkZXN0T3JpZ2luYWxNYXBwaW5ncy5wdXNoKGRlc3RNYXBwaW5nKTtcbiAgICAgIH1cblxuICAgICAgZGVzdEdlbmVyYXRlZE1hcHBpbmdzLnB1c2goZGVzdE1hcHBpbmcpO1xuICAgIH1cblxuICAgIHF1aWNrU29ydChzbWMuX19vcmlnaW5hbE1hcHBpbmdzLCB1dGlsLmNvbXBhcmVCeU9yaWdpbmFsUG9zaXRpb25zKTtcblxuICAgIHJldHVybiBzbWM7XG4gIH07XG5cbi8qKlxuICogVGhlIHZlcnNpb24gb2YgdGhlIHNvdXJjZSBtYXBwaW5nIHNwZWMgdGhhdCB3ZSBhcmUgY29uc3VtaW5nLlxuICovXG5CYXNpY1NvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZS5fdmVyc2lvbiA9IDM7XG5cbi8qKlxuICogVGhlIGxpc3Qgb2Ygb3JpZ2luYWwgc291cmNlcy5cbiAqL1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KEJhc2ljU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlLCAnc291cmNlcycsIHtcbiAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2Fic29sdXRlU291cmNlcy5zbGljZSgpO1xuICB9XG59KTtcblxuLyoqXG4gKiBQcm92aWRlIHRoZSBKSVQgd2l0aCBhIG5pY2Ugc2hhcGUgLyBoaWRkZW4gY2xhc3MuXG4gKi9cbmZ1bmN0aW9uIE1hcHBpbmcoKSB7XG4gIHRoaXMuZ2VuZXJhdGVkTGluZSA9IDA7XG4gIHRoaXMuZ2VuZXJhdGVkQ29sdW1uID0gMDtcbiAgdGhpcy5zb3VyY2UgPSBudWxsO1xuICB0aGlzLm9yaWdpbmFsTGluZSA9IG51bGw7XG4gIHRoaXMub3JpZ2luYWxDb2x1bW4gPSBudWxsO1xuICB0aGlzLm5hbWUgPSBudWxsO1xufVxuXG4vKipcbiAqIFBhcnNlIHRoZSBtYXBwaW5ncyBpbiBhIHN0cmluZyBpbiB0byBhIGRhdGEgc3RydWN0dXJlIHdoaWNoIHdlIGNhbiBlYXNpbHlcbiAqIHF1ZXJ5ICh0aGUgb3JkZXJlZCBhcnJheXMgaW4gdGhlIGB0aGlzLl9fZ2VuZXJhdGVkTWFwcGluZ3NgIGFuZFxuICogYHRoaXMuX19vcmlnaW5hbE1hcHBpbmdzYCBwcm9wZXJ0aWVzKS5cbiAqL1xuQmFzaWNTb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUuX3BhcnNlTWFwcGluZ3MgPVxuICBmdW5jdGlvbiBTb3VyY2VNYXBDb25zdW1lcl9wYXJzZU1hcHBpbmdzKGFTdHIsIGFTb3VyY2VSb290KSB7XG4gICAgdmFyIGdlbmVyYXRlZExpbmUgPSAxO1xuICAgIHZhciBwcmV2aW91c0dlbmVyYXRlZENvbHVtbiA9IDA7XG4gICAgdmFyIHByZXZpb3VzT3JpZ2luYWxMaW5lID0gMDtcbiAgICB2YXIgcHJldmlvdXNPcmlnaW5hbENvbHVtbiA9IDA7XG4gICAgdmFyIHByZXZpb3VzU291cmNlID0gMDtcbiAgICB2YXIgcHJldmlvdXNOYW1lID0gMDtcbiAgICB2YXIgbGVuZ3RoID0gYVN0ci5sZW5ndGg7XG4gICAgdmFyIGluZGV4ID0gMDtcbiAgICB2YXIgY2FjaGVkU2VnbWVudHMgPSB7fTtcbiAgICB2YXIgdGVtcCA9IHt9O1xuICAgIHZhciBvcmlnaW5hbE1hcHBpbmdzID0gW107XG4gICAgdmFyIGdlbmVyYXRlZE1hcHBpbmdzID0gW107XG4gICAgdmFyIG1hcHBpbmcsIHN0ciwgc2VnbWVudCwgZW5kLCB2YWx1ZTtcblxuICAgIHdoaWxlIChpbmRleCA8IGxlbmd0aCkge1xuICAgICAgaWYgKGFTdHIuY2hhckF0KGluZGV4KSA9PT0gJzsnKSB7XG4gICAgICAgIGdlbmVyYXRlZExpbmUrKztcbiAgICAgICAgaW5kZXgrKztcbiAgICAgICAgcHJldmlvdXNHZW5lcmF0ZWRDb2x1bW4gPSAwO1xuICAgICAgfVxuICAgICAgZWxzZSBpZiAoYVN0ci5jaGFyQXQoaW5kZXgpID09PSAnLCcpIHtcbiAgICAgICAgaW5kZXgrKztcbiAgICAgIH1cbiAgICAgIGVsc2Uge1xuICAgICAgICBtYXBwaW5nID0gbmV3IE1hcHBpbmcoKTtcbiAgICAgICAgbWFwcGluZy5nZW5lcmF0ZWRMaW5lID0gZ2VuZXJhdGVkTGluZTtcblxuICAgICAgICAvLyBCZWNhdXNlIGVhY2ggb2Zmc2V0IGlzIGVuY29kZWQgcmVsYXRpdmUgdG8gdGhlIHByZXZpb3VzIG9uZSxcbiAgICAgICAgLy8gbWFueSBzZWdtZW50cyBvZnRlbiBoYXZlIHRoZSBzYW1lIGVuY29kaW5nLiBXZSBjYW4gZXhwbG9pdCB0aGlzXG4gICAgICAgIC8vIGZhY3QgYnkgY2FjaGluZyB0aGUgcGFyc2VkIHZhcmlhYmxlIGxlbmd0aCBmaWVsZHMgb2YgZWFjaCBzZWdtZW50LFxuICAgICAgICAvLyBhbGxvd2luZyB1cyB0byBhdm9pZCBhIHNlY29uZCBwYXJzZSBpZiB3ZSBlbmNvdW50ZXIgdGhlIHNhbWVcbiAgICAgICAgLy8gc2VnbWVudCBhZ2Fpbi5cbiAgICAgICAgZm9yIChlbmQgPSBpbmRleDsgZW5kIDwgbGVuZ3RoOyBlbmQrKykge1xuICAgICAgICAgIGlmICh0aGlzLl9jaGFySXNNYXBwaW5nU2VwYXJhdG9yKGFTdHIsIGVuZCkpIHtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBzdHIgPSBhU3RyLnNsaWNlKGluZGV4LCBlbmQpO1xuXG4gICAgICAgIHNlZ21lbnQgPSBjYWNoZWRTZWdtZW50c1tzdHJdO1xuICAgICAgICBpZiAoc2VnbWVudCkge1xuICAgICAgICAgIGluZGV4ICs9IHN0ci5sZW5ndGg7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc2VnbWVudCA9IFtdO1xuICAgICAgICAgIHdoaWxlIChpbmRleCA8IGVuZCkge1xuICAgICAgICAgICAgYmFzZTY0VkxRLmRlY29kZShhU3RyLCBpbmRleCwgdGVtcCk7XG4gICAgICAgICAgICB2YWx1ZSA9IHRlbXAudmFsdWU7XG4gICAgICAgICAgICBpbmRleCA9IHRlbXAucmVzdDtcbiAgICAgICAgICAgIHNlZ21lbnQucHVzaCh2YWx1ZSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKHNlZ21lbnQubGVuZ3RoID09PSAyKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ZvdW5kIGEgc291cmNlLCBidXQgbm8gbGluZSBhbmQgY29sdW1uJyk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKHNlZ21lbnQubGVuZ3RoID09PSAzKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ZvdW5kIGEgc291cmNlIGFuZCBsaW5lLCBidXQgbm8gY29sdW1uJyk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY2FjaGVkU2VnbWVudHNbc3RyXSA9IHNlZ21lbnQ7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBHZW5lcmF0ZWQgY29sdW1uLlxuICAgICAgICBtYXBwaW5nLmdlbmVyYXRlZENvbHVtbiA9IHByZXZpb3VzR2VuZXJhdGVkQ29sdW1uICsgc2VnbWVudFswXTtcbiAgICAgICAgcHJldmlvdXNHZW5lcmF0ZWRDb2x1bW4gPSBtYXBwaW5nLmdlbmVyYXRlZENvbHVtbjtcblxuICAgICAgICBpZiAoc2VnbWVudC5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgLy8gT3JpZ2luYWwgc291cmNlLlxuICAgICAgICAgIG1hcHBpbmcuc291cmNlID0gcHJldmlvdXNTb3VyY2UgKyBzZWdtZW50WzFdO1xuICAgICAgICAgIHByZXZpb3VzU291cmNlICs9IHNlZ21lbnRbMV07XG5cbiAgICAgICAgICAvLyBPcmlnaW5hbCBsaW5lLlxuICAgICAgICAgIG1hcHBpbmcub3JpZ2luYWxMaW5lID0gcHJldmlvdXNPcmlnaW5hbExpbmUgKyBzZWdtZW50WzJdO1xuICAgICAgICAgIHByZXZpb3VzT3JpZ2luYWxMaW5lID0gbWFwcGluZy5vcmlnaW5hbExpbmU7XG4gICAgICAgICAgLy8gTGluZXMgYXJlIHN0b3JlZCAwLWJhc2VkXG4gICAgICAgICAgbWFwcGluZy5vcmlnaW5hbExpbmUgKz0gMTtcblxuICAgICAgICAgIC8vIE9yaWdpbmFsIGNvbHVtbi5cbiAgICAgICAgICBtYXBwaW5nLm9yaWdpbmFsQ29sdW1uID0gcHJldmlvdXNPcmlnaW5hbENvbHVtbiArIHNlZ21lbnRbM107XG4gICAgICAgICAgcHJldmlvdXNPcmlnaW5hbENvbHVtbiA9IG1hcHBpbmcub3JpZ2luYWxDb2x1bW47XG5cbiAgICAgICAgICBpZiAoc2VnbWVudC5sZW5ndGggPiA0KSB7XG4gICAgICAgICAgICAvLyBPcmlnaW5hbCBuYW1lLlxuICAgICAgICAgICAgbWFwcGluZy5uYW1lID0gcHJldmlvdXNOYW1lICsgc2VnbWVudFs0XTtcbiAgICAgICAgICAgIHByZXZpb3VzTmFtZSArPSBzZWdtZW50WzRdO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGdlbmVyYXRlZE1hcHBpbmdzLnB1c2gobWFwcGluZyk7XG4gICAgICAgIGlmICh0eXBlb2YgbWFwcGluZy5vcmlnaW5hbExpbmUgPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgb3JpZ2luYWxNYXBwaW5ncy5wdXNoKG1hcHBpbmcpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcXVpY2tTb3J0KGdlbmVyYXRlZE1hcHBpbmdzLCB1dGlsLmNvbXBhcmVCeUdlbmVyYXRlZFBvc2l0aW9uc0RlZmxhdGVkKTtcbiAgICB0aGlzLl9fZ2VuZXJhdGVkTWFwcGluZ3MgPSBnZW5lcmF0ZWRNYXBwaW5ncztcblxuICAgIHF1aWNrU29ydChvcmlnaW5hbE1hcHBpbmdzLCB1dGlsLmNvbXBhcmVCeU9yaWdpbmFsUG9zaXRpb25zKTtcbiAgICB0aGlzLl9fb3JpZ2luYWxNYXBwaW5ncyA9IG9yaWdpbmFsTWFwcGluZ3M7XG4gIH07XG5cbi8qKlxuICogRmluZCB0aGUgbWFwcGluZyB0aGF0IGJlc3QgbWF0Y2hlcyB0aGUgaHlwb3RoZXRpY2FsIFwibmVlZGxlXCIgbWFwcGluZyB0aGF0XG4gKiB3ZSBhcmUgc2VhcmNoaW5nIGZvciBpbiB0aGUgZ2l2ZW4gXCJoYXlzdGFja1wiIG9mIG1hcHBpbmdzLlxuICovXG5CYXNpY1NvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZS5fZmluZE1hcHBpbmcgPVxuICBmdW5jdGlvbiBTb3VyY2VNYXBDb25zdW1lcl9maW5kTWFwcGluZyhhTmVlZGxlLCBhTWFwcGluZ3MsIGFMaW5lTmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYUNvbHVtbk5hbWUsIGFDb21wYXJhdG9yLCBhQmlhcykge1xuICAgIC8vIFRvIHJldHVybiB0aGUgcG9zaXRpb24gd2UgYXJlIHNlYXJjaGluZyBmb3IsIHdlIG11c3QgZmlyc3QgZmluZCB0aGVcbiAgICAvLyBtYXBwaW5nIGZvciB0aGUgZ2l2ZW4gcG9zaXRpb24gYW5kIHRoZW4gcmV0dXJuIHRoZSBvcHBvc2l0ZSBwb3NpdGlvbiBpdFxuICAgIC8vIHBvaW50cyB0by4gQmVjYXVzZSB0aGUgbWFwcGluZ3MgYXJlIHNvcnRlZCwgd2UgY2FuIHVzZSBiaW5hcnkgc2VhcmNoIHRvXG4gICAgLy8gZmluZCB0aGUgYmVzdCBtYXBwaW5nLlxuXG4gICAgaWYgKGFOZWVkbGVbYUxpbmVOYW1lXSA8PSAwKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdMaW5lIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIDEsIGdvdCAnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICsgYU5lZWRsZVthTGluZU5hbWVdKTtcbiAgICB9XG4gICAgaWYgKGFOZWVkbGVbYUNvbHVtbk5hbWVdIDwgMCkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignQ29sdW1uIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIDAsIGdvdCAnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICsgYU5lZWRsZVthQ29sdW1uTmFtZV0pO1xuICAgIH1cblxuICAgIHJldHVybiBiaW5hcnlTZWFyY2guc2VhcmNoKGFOZWVkbGUsIGFNYXBwaW5ncywgYUNvbXBhcmF0b3IsIGFCaWFzKTtcbiAgfTtcblxuLyoqXG4gKiBDb21wdXRlIHRoZSBsYXN0IGNvbHVtbiBmb3IgZWFjaCBnZW5lcmF0ZWQgbWFwcGluZy4gVGhlIGxhc3QgY29sdW1uIGlzXG4gKiBpbmNsdXNpdmUuXG4gKi9cbkJhc2ljU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlLmNvbXB1dGVDb2x1bW5TcGFucyA9XG4gIGZ1bmN0aW9uIFNvdXJjZU1hcENvbnN1bWVyX2NvbXB1dGVDb2x1bW5TcGFucygpIHtcbiAgICBmb3IgKHZhciBpbmRleCA9IDA7IGluZGV4IDwgdGhpcy5fZ2VuZXJhdGVkTWFwcGluZ3MubGVuZ3RoOyArK2luZGV4KSB7XG4gICAgICB2YXIgbWFwcGluZyA9IHRoaXMuX2dlbmVyYXRlZE1hcHBpbmdzW2luZGV4XTtcblxuICAgICAgLy8gTWFwcGluZ3MgZG8gbm90IGNvbnRhaW4gYSBmaWVsZCBmb3IgdGhlIGxhc3QgZ2VuZXJhdGVkIGNvbHVtbnQuIFdlXG4gICAgICAvLyBjYW4gY29tZSB1cCB3aXRoIGFuIG9wdGltaXN0aWMgZXN0aW1hdGUsIGhvd2V2ZXIsIGJ5IGFzc3VtaW5nIHRoYXRcbiAgICAgIC8vIG1hcHBpbmdzIGFyZSBjb250aWd1b3VzIChpLmUuIGdpdmVuIHR3byBjb25zZWN1dGl2ZSBtYXBwaW5ncywgdGhlXG4gICAgICAvLyBmaXJzdCBtYXBwaW5nIGVuZHMgd2hlcmUgdGhlIHNlY29uZCBvbmUgc3RhcnRzKS5cbiAgICAgIGlmIChpbmRleCArIDEgPCB0aGlzLl9nZW5lcmF0ZWRNYXBwaW5ncy5sZW5ndGgpIHtcbiAgICAgICAgdmFyIG5leHRNYXBwaW5nID0gdGhpcy5fZ2VuZXJhdGVkTWFwcGluZ3NbaW5kZXggKyAxXTtcblxuICAgICAgICBpZiAobWFwcGluZy5nZW5lcmF0ZWRMaW5lID09PSBuZXh0TWFwcGluZy5nZW5lcmF0ZWRMaW5lKSB7XG4gICAgICAgICAgbWFwcGluZy5sYXN0R2VuZXJhdGVkQ29sdW1uID0gbmV4dE1hcHBpbmcuZ2VuZXJhdGVkQ29sdW1uIC0gMTtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBUaGUgbGFzdCBtYXBwaW5nIGZvciBlYWNoIGxpbmUgc3BhbnMgdGhlIGVudGlyZSBsaW5lLlxuICAgICAgbWFwcGluZy5sYXN0R2VuZXJhdGVkQ29sdW1uID0gSW5maW5pdHk7XG4gICAgfVxuICB9O1xuXG4vKipcbiAqIFJldHVybnMgdGhlIG9yaWdpbmFsIHNvdXJjZSwgbGluZSwgYW5kIGNvbHVtbiBpbmZvcm1hdGlvbiBmb3IgdGhlIGdlbmVyYXRlZFxuICogc291cmNlJ3MgbGluZSBhbmQgY29sdW1uIHBvc2l0aW9ucyBwcm92aWRlZC4gVGhlIG9ubHkgYXJndW1lbnQgaXMgYW4gb2JqZWN0XG4gKiB3aXRoIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllczpcbiAqXG4gKiAgIC0gbGluZTogVGhlIGxpbmUgbnVtYmVyIGluIHRoZSBnZW5lcmF0ZWQgc291cmNlLiAgVGhlIGxpbmUgbnVtYmVyXG4gKiAgICAgaXMgMS1iYXNlZC5cbiAqICAgLSBjb2x1bW46IFRoZSBjb2x1bW4gbnVtYmVyIGluIHRoZSBnZW5lcmF0ZWQgc291cmNlLiAgVGhlIGNvbHVtblxuICogICAgIG51bWJlciBpcyAwLWJhc2VkLlxuICogICAtIGJpYXM6IEVpdGhlciAnU291cmNlTWFwQ29uc3VtZXIuR1JFQVRFU1RfTE9XRVJfQk9VTkQnIG9yXG4gKiAgICAgJ1NvdXJjZU1hcENvbnN1bWVyLkxFQVNUX1VQUEVSX0JPVU5EJy4gU3BlY2lmaWVzIHdoZXRoZXIgdG8gcmV0dXJuIHRoZVxuICogICAgIGNsb3Nlc3QgZWxlbWVudCB0aGF0IGlzIHNtYWxsZXIgdGhhbiBvciBncmVhdGVyIHRoYW4gdGhlIG9uZSB3ZSBhcmVcbiAqICAgICBzZWFyY2hpbmcgZm9yLCByZXNwZWN0aXZlbHksIGlmIHRoZSBleGFjdCBlbGVtZW50IGNhbm5vdCBiZSBmb3VuZC5cbiAqICAgICBEZWZhdWx0cyB0byAnU291cmNlTWFwQ29uc3VtZXIuR1JFQVRFU1RfTE9XRVJfQk9VTkQnLlxuICpcbiAqIGFuZCBhbiBvYmplY3QgaXMgcmV0dXJuZWQgd2l0aCB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6XG4gKlxuICogICAtIHNvdXJjZTogVGhlIG9yaWdpbmFsIHNvdXJjZSBmaWxlLCBvciBudWxsLlxuICogICAtIGxpbmU6IFRoZSBsaW5lIG51bWJlciBpbiB0aGUgb3JpZ2luYWwgc291cmNlLCBvciBudWxsLiAgVGhlXG4gKiAgICAgbGluZSBudW1iZXIgaXMgMS1iYXNlZC5cbiAqICAgLSBjb2x1bW46IFRoZSBjb2x1bW4gbnVtYmVyIGluIHRoZSBvcmlnaW5hbCBzb3VyY2UsIG9yIG51bGwuICBUaGVcbiAqICAgICBjb2x1bW4gbnVtYmVyIGlzIDAtYmFzZWQuXG4gKiAgIC0gbmFtZTogVGhlIG9yaWdpbmFsIGlkZW50aWZpZXIsIG9yIG51bGwuXG4gKi9cbkJhc2ljU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlLm9yaWdpbmFsUG9zaXRpb25Gb3IgPVxuICBmdW5jdGlvbiBTb3VyY2VNYXBDb25zdW1lcl9vcmlnaW5hbFBvc2l0aW9uRm9yKGFBcmdzKSB7XG4gICAgdmFyIG5lZWRsZSA9IHtcbiAgICAgIGdlbmVyYXRlZExpbmU6IHV0aWwuZ2V0QXJnKGFBcmdzLCAnbGluZScpLFxuICAgICAgZ2VuZXJhdGVkQ29sdW1uOiB1dGlsLmdldEFyZyhhQXJncywgJ2NvbHVtbicpXG4gICAgfTtcblxuICAgIHZhciBpbmRleCA9IHRoaXMuX2ZpbmRNYXBwaW5nKFxuICAgICAgbmVlZGxlLFxuICAgICAgdGhpcy5fZ2VuZXJhdGVkTWFwcGluZ3MsXG4gICAgICBcImdlbmVyYXRlZExpbmVcIixcbiAgICAgIFwiZ2VuZXJhdGVkQ29sdW1uXCIsXG4gICAgICB1dGlsLmNvbXBhcmVCeUdlbmVyYXRlZFBvc2l0aW9uc0RlZmxhdGVkLFxuICAgICAgdXRpbC5nZXRBcmcoYUFyZ3MsICdiaWFzJywgU291cmNlTWFwQ29uc3VtZXIuR1JFQVRFU1RfTE9XRVJfQk9VTkQpXG4gICAgKTtcblxuICAgIGlmIChpbmRleCA+PSAwKSB7XG4gICAgICB2YXIgbWFwcGluZyA9IHRoaXMuX2dlbmVyYXRlZE1hcHBpbmdzW2luZGV4XTtcblxuICAgICAgaWYgKG1hcHBpbmcuZ2VuZXJhdGVkTGluZSA9PT0gbmVlZGxlLmdlbmVyYXRlZExpbmUpIHtcbiAgICAgICAgdmFyIHNvdXJjZSA9IHV0aWwuZ2V0QXJnKG1hcHBpbmcsICdzb3VyY2UnLCBudWxsKTtcbiAgICAgICAgaWYgKHNvdXJjZSAhPT0gbnVsbCkge1xuICAgICAgICAgIHNvdXJjZSA9IHRoaXMuX3NvdXJjZXMuYXQoc291cmNlKTtcbiAgICAgICAgICBzb3VyY2UgPSB1dGlsLmNvbXB1dGVTb3VyY2VVUkwodGhpcy5zb3VyY2VSb290LCBzb3VyY2UsIHRoaXMuX3NvdXJjZU1hcFVSTCk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIG5hbWUgPSB1dGlsLmdldEFyZyhtYXBwaW5nLCAnbmFtZScsIG51bGwpO1xuICAgICAgICBpZiAobmFtZSAhPT0gbnVsbCkge1xuICAgICAgICAgIG5hbWUgPSB0aGlzLl9uYW1lcy5hdChuYW1lKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHNvdXJjZTogc291cmNlLFxuICAgICAgICAgIGxpbmU6IHV0aWwuZ2V0QXJnKG1hcHBpbmcsICdvcmlnaW5hbExpbmUnLCBudWxsKSxcbiAgICAgICAgICBjb2x1bW46IHV0aWwuZ2V0QXJnKG1hcHBpbmcsICdvcmlnaW5hbENvbHVtbicsIG51bGwpLFxuICAgICAgICAgIG5hbWU6IG5hbWVcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgc291cmNlOiBudWxsLFxuICAgICAgbGluZTogbnVsbCxcbiAgICAgIGNvbHVtbjogbnVsbCxcbiAgICAgIG5hbWU6IG51bGxcbiAgICB9O1xuICB9O1xuXG4vKipcbiAqIFJldHVybiB0cnVlIGlmIHdlIGhhdmUgdGhlIHNvdXJjZSBjb250ZW50IGZvciBldmVyeSBzb3VyY2UgaW4gdGhlIHNvdXJjZVxuICogbWFwLCBmYWxzZSBvdGhlcndpc2UuXG4gKi9cbkJhc2ljU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlLmhhc0NvbnRlbnRzT2ZBbGxTb3VyY2VzID1cbiAgZnVuY3Rpb24gQmFzaWNTb3VyY2VNYXBDb25zdW1lcl9oYXNDb250ZW50c09mQWxsU291cmNlcygpIHtcbiAgICBpZiAoIXRoaXMuc291cmNlc0NvbnRlbnQpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuc291cmNlc0NvbnRlbnQubGVuZ3RoID49IHRoaXMuX3NvdXJjZXMuc2l6ZSgpICYmXG4gICAgICAhdGhpcy5zb3VyY2VzQ29udGVudC5zb21lKGZ1bmN0aW9uIChzYykgeyByZXR1cm4gc2MgPT0gbnVsbDsgfSk7XG4gIH07XG5cbi8qKlxuICogUmV0dXJucyB0aGUgb3JpZ2luYWwgc291cmNlIGNvbnRlbnQuIFRoZSBvbmx5IGFyZ3VtZW50IGlzIHRoZSB1cmwgb2YgdGhlXG4gKiBvcmlnaW5hbCBzb3VyY2UgZmlsZS4gUmV0dXJucyBudWxsIGlmIG5vIG9yaWdpbmFsIHNvdXJjZSBjb250ZW50IGlzXG4gKiBhdmFpbGFibGUuXG4gKi9cbkJhc2ljU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlLnNvdXJjZUNvbnRlbnRGb3IgPVxuICBmdW5jdGlvbiBTb3VyY2VNYXBDb25zdW1lcl9zb3VyY2VDb250ZW50Rm9yKGFTb3VyY2UsIG51bGxPbk1pc3NpbmcpIHtcbiAgICBpZiAoIXRoaXMuc291cmNlc0NvbnRlbnQpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHZhciBpbmRleCA9IHRoaXMuX2ZpbmRTb3VyY2VJbmRleChhU291cmNlKTtcbiAgICBpZiAoaW5kZXggPj0gMCkge1xuICAgICAgcmV0dXJuIHRoaXMuc291cmNlc0NvbnRlbnRbaW5kZXhdO1xuICAgIH1cblxuICAgIHZhciByZWxhdGl2ZVNvdXJjZSA9IGFTb3VyY2U7XG4gICAgaWYgKHRoaXMuc291cmNlUm9vdCAhPSBudWxsKSB7XG4gICAgICByZWxhdGl2ZVNvdXJjZSA9IHV0aWwucmVsYXRpdmUodGhpcy5zb3VyY2VSb290LCByZWxhdGl2ZVNvdXJjZSk7XG4gICAgfVxuXG4gICAgdmFyIHVybDtcbiAgICBpZiAodGhpcy5zb3VyY2VSb290ICE9IG51bGxcbiAgICAgICAgJiYgKHVybCA9IHV0aWwudXJsUGFyc2UodGhpcy5zb3VyY2VSb290KSkpIHtcbiAgICAgIC8vIFhYWDogZmlsZTovLyBVUklzIGFuZCBhYnNvbHV0ZSBwYXRocyBsZWFkIHRvIHVuZXhwZWN0ZWQgYmVoYXZpb3IgZm9yXG4gICAgICAvLyBtYW55IHVzZXJzLiBXZSBjYW4gaGVscCB0aGVtIG91dCB3aGVuIHRoZXkgZXhwZWN0IGZpbGU6Ly8gVVJJcyB0b1xuICAgICAgLy8gYmVoYXZlIGxpa2UgaXQgd291bGQgaWYgdGhleSB3ZXJlIHJ1bm5pbmcgYSBsb2NhbCBIVFRQIHNlcnZlci4gU2VlXG4gICAgICAvLyBodHRwczovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD04ODU1OTcuXG4gICAgICB2YXIgZmlsZVVyaUFic1BhdGggPSByZWxhdGl2ZVNvdXJjZS5yZXBsYWNlKC9eZmlsZTpcXC9cXC8vLCBcIlwiKTtcbiAgICAgIGlmICh1cmwuc2NoZW1lID09IFwiZmlsZVwiXG4gICAgICAgICAgJiYgdGhpcy5fc291cmNlcy5oYXMoZmlsZVVyaUFic1BhdGgpKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnNvdXJjZXNDb250ZW50W3RoaXMuX3NvdXJjZXMuaW5kZXhPZihmaWxlVXJpQWJzUGF0aCldXG4gICAgICB9XG5cbiAgICAgIGlmICgoIXVybC5wYXRoIHx8IHVybC5wYXRoID09IFwiL1wiKVxuICAgICAgICAgICYmIHRoaXMuX3NvdXJjZXMuaGFzKFwiL1wiICsgcmVsYXRpdmVTb3VyY2UpKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnNvdXJjZXNDb250ZW50W3RoaXMuX3NvdXJjZXMuaW5kZXhPZihcIi9cIiArIHJlbGF0aXZlU291cmNlKV07XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHJlY3Vyc2l2ZWx5IGZyb21cbiAgICAvLyBJbmRleGVkU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlLnNvdXJjZUNvbnRlbnRGb3IuIEluIHRoYXQgY2FzZSwgd2VcbiAgICAvLyBkb24ndCB3YW50IHRvIHRocm93IGlmIHdlIGNhbid0IGZpbmQgdGhlIHNvdXJjZSAtIHdlIGp1c3Qgd2FudCB0b1xuICAgIC8vIHJldHVybiBudWxsLCBzbyB3ZSBwcm92aWRlIGEgZmxhZyB0byBleGl0IGdyYWNlZnVsbHkuXG4gICAgaWYgKG51bGxPbk1pc3NpbmcpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignXCInICsgcmVsYXRpdmVTb3VyY2UgKyAnXCIgaXMgbm90IGluIHRoZSBTb3VyY2VNYXAuJyk7XG4gICAgfVxuICB9O1xuXG4vKipcbiAqIFJldHVybnMgdGhlIGdlbmVyYXRlZCBsaW5lIGFuZCBjb2x1bW4gaW5mb3JtYXRpb24gZm9yIHRoZSBvcmlnaW5hbCBzb3VyY2UsXG4gKiBsaW5lLCBhbmQgY29sdW1uIHBvc2l0aW9ucyBwcm92aWRlZC4gVGhlIG9ubHkgYXJndW1lbnQgaXMgYW4gb2JqZWN0IHdpdGhcbiAqIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllczpcbiAqXG4gKiAgIC0gc291cmNlOiBUaGUgZmlsZW5hbWUgb2YgdGhlIG9yaWdpbmFsIHNvdXJjZS5cbiAqICAgLSBsaW5lOiBUaGUgbGluZSBudW1iZXIgaW4gdGhlIG9yaWdpbmFsIHNvdXJjZS4gIFRoZSBsaW5lIG51bWJlclxuICogICAgIGlzIDEtYmFzZWQuXG4gKiAgIC0gY29sdW1uOiBUaGUgY29sdW1uIG51bWJlciBpbiB0aGUgb3JpZ2luYWwgc291cmNlLiAgVGhlIGNvbHVtblxuICogICAgIG51bWJlciBpcyAwLWJhc2VkLlxuICogICAtIGJpYXM6IEVpdGhlciAnU291cmNlTWFwQ29uc3VtZXIuR1JFQVRFU1RfTE9XRVJfQk9VTkQnIG9yXG4gKiAgICAgJ1NvdXJjZU1hcENvbnN1bWVyLkxFQVNUX1VQUEVSX0JPVU5EJy4gU3BlY2lmaWVzIHdoZXRoZXIgdG8gcmV0dXJuIHRoZVxuICogICAgIGNsb3Nlc3QgZWxlbWVudCB0aGF0IGlzIHNtYWxsZXIgdGhhbiBvciBncmVhdGVyIHRoYW4gdGhlIG9uZSB3ZSBhcmVcbiAqICAgICBzZWFyY2hpbmcgZm9yLCByZXNwZWN0aXZlbHksIGlmIHRoZSBleGFjdCBlbGVtZW50IGNhbm5vdCBiZSBmb3VuZC5cbiAqICAgICBEZWZhdWx0cyB0byAnU291cmNlTWFwQ29uc3VtZXIuR1JFQVRFU1RfTE9XRVJfQk9VTkQnLlxuICpcbiAqIGFuZCBhbiBvYmplY3QgaXMgcmV0dXJuZWQgd2l0aCB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6XG4gKlxuICogICAtIGxpbmU6IFRoZSBsaW5lIG51bWJlciBpbiB0aGUgZ2VuZXJhdGVkIHNvdXJjZSwgb3IgbnVsbC4gIFRoZVxuICogICAgIGxpbmUgbnVtYmVyIGlzIDEtYmFzZWQuXG4gKiAgIC0gY29sdW1uOiBUaGUgY29sdW1uIG51bWJlciBpbiB0aGUgZ2VuZXJhdGVkIHNvdXJjZSwgb3IgbnVsbC5cbiAqICAgICBUaGUgY29sdW1uIG51bWJlciBpcyAwLWJhc2VkLlxuICovXG5CYXNpY1NvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZS5nZW5lcmF0ZWRQb3NpdGlvbkZvciA9XG4gIGZ1bmN0aW9uIFNvdXJjZU1hcENvbnN1bWVyX2dlbmVyYXRlZFBvc2l0aW9uRm9yKGFBcmdzKSB7XG4gICAgdmFyIHNvdXJjZSA9IHV0aWwuZ2V0QXJnKGFBcmdzLCAnc291cmNlJyk7XG4gICAgc291cmNlID0gdGhpcy5fZmluZFNvdXJjZUluZGV4KHNvdXJjZSk7XG4gICAgaWYgKHNvdXJjZSA8IDApIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGxpbmU6IG51bGwsXG4gICAgICAgIGNvbHVtbjogbnVsbCxcbiAgICAgICAgbGFzdENvbHVtbjogbnVsbFxuICAgICAgfTtcbiAgICB9XG5cbiAgICB2YXIgbmVlZGxlID0ge1xuICAgICAgc291cmNlOiBzb3VyY2UsXG4gICAgICBvcmlnaW5hbExpbmU6IHV0aWwuZ2V0QXJnKGFBcmdzLCAnbGluZScpLFxuICAgICAgb3JpZ2luYWxDb2x1bW46IHV0aWwuZ2V0QXJnKGFBcmdzLCAnY29sdW1uJylcbiAgICB9O1xuXG4gICAgdmFyIGluZGV4ID0gdGhpcy5fZmluZE1hcHBpbmcoXG4gICAgICBuZWVkbGUsXG4gICAgICB0aGlzLl9vcmlnaW5hbE1hcHBpbmdzLFxuICAgICAgXCJvcmlnaW5hbExpbmVcIixcbiAgICAgIFwib3JpZ2luYWxDb2x1bW5cIixcbiAgICAgIHV0aWwuY29tcGFyZUJ5T3JpZ2luYWxQb3NpdGlvbnMsXG4gICAgICB1dGlsLmdldEFyZyhhQXJncywgJ2JpYXMnLCBTb3VyY2VNYXBDb25zdW1lci5HUkVBVEVTVF9MT1dFUl9CT1VORClcbiAgICApO1xuXG4gICAgaWYgKGluZGV4ID49IDApIHtcbiAgICAgIHZhciBtYXBwaW5nID0gdGhpcy5fb3JpZ2luYWxNYXBwaW5nc1tpbmRleF07XG5cbiAgICAgIGlmIChtYXBwaW5nLnNvdXJjZSA9PT0gbmVlZGxlLnNvdXJjZSkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGxpbmU6IHV0aWwuZ2V0QXJnKG1hcHBpbmcsICdnZW5lcmF0ZWRMaW5lJywgbnVsbCksXG4gICAgICAgICAgY29sdW1uOiB1dGlsLmdldEFyZyhtYXBwaW5nLCAnZ2VuZXJhdGVkQ29sdW1uJywgbnVsbCksXG4gICAgICAgICAgbGFzdENvbHVtbjogdXRpbC5nZXRBcmcobWFwcGluZywgJ2xhc3RHZW5lcmF0ZWRDb2x1bW4nLCBudWxsKVxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBsaW5lOiBudWxsLFxuICAgICAgY29sdW1uOiBudWxsLFxuICAgICAgbGFzdENvbHVtbjogbnVsbFxuICAgIH07XG4gIH07XG5cbmV4cG9ydHMuQmFzaWNTb3VyY2VNYXBDb25zdW1lciA9IEJhc2ljU291cmNlTWFwQ29uc3VtZXI7XG5cbi8qKlxuICogQW4gSW5kZXhlZFNvdXJjZU1hcENvbnN1bWVyIGluc3RhbmNlIHJlcHJlc2VudHMgYSBwYXJzZWQgc291cmNlIG1hcCB3aGljaFxuICogd2UgY2FuIHF1ZXJ5IGZvciBpbmZvcm1hdGlvbi4gSXQgZGlmZmVycyBmcm9tIEJhc2ljU291cmNlTWFwQ29uc3VtZXIgaW5cbiAqIHRoYXQgaXQgdGFrZXMgXCJpbmRleGVkXCIgc291cmNlIG1hcHMgKGkuZS4gb25lcyB3aXRoIGEgXCJzZWN0aW9uc1wiIGZpZWxkKSBhc1xuICogaW5wdXQuXG4gKlxuICogVGhlIGZpcnN0IHBhcmFtZXRlciBpcyBhIHJhdyBzb3VyY2UgbWFwIChlaXRoZXIgYXMgYSBKU09OIHN0cmluZywgb3IgYWxyZWFkeVxuICogcGFyc2VkIHRvIGFuIG9iamVjdCkuIEFjY29yZGluZyB0byB0aGUgc3BlYyBmb3IgaW5kZXhlZCBzb3VyY2UgbWFwcywgdGhleVxuICogaGF2ZSB0aGUgZm9sbG93aW5nIGF0dHJpYnV0ZXM6XG4gKlxuICogICAtIHZlcnNpb246IFdoaWNoIHZlcnNpb24gb2YgdGhlIHNvdXJjZSBtYXAgc3BlYyB0aGlzIG1hcCBpcyBmb2xsb3dpbmcuXG4gKiAgIC0gZmlsZTogT3B0aW9uYWwuIFRoZSBnZW5lcmF0ZWQgZmlsZSB0aGlzIHNvdXJjZSBtYXAgaXMgYXNzb2NpYXRlZCB3aXRoLlxuICogICAtIHNlY3Rpb25zOiBBIGxpc3Qgb2Ygc2VjdGlvbiBkZWZpbml0aW9ucy5cbiAqXG4gKiBFYWNoIHZhbHVlIHVuZGVyIHRoZSBcInNlY3Rpb25zXCIgZmllbGQgaGFzIHR3byBmaWVsZHM6XG4gKiAgIC0gb2Zmc2V0OiBUaGUgb2Zmc2V0IGludG8gdGhlIG9yaWdpbmFsIHNwZWNpZmllZCBhdCB3aGljaCB0aGlzIHNlY3Rpb25cbiAqICAgICAgIGJlZ2lucyB0byBhcHBseSwgZGVmaW5lZCBhcyBhbiBvYmplY3Qgd2l0aCBhIFwibGluZVwiIGFuZCBcImNvbHVtblwiXG4gKiAgICAgICBmaWVsZC5cbiAqICAgLSBtYXA6IEEgc291cmNlIG1hcCBkZWZpbml0aW9uLiBUaGlzIHNvdXJjZSBtYXAgY291bGQgYWxzbyBiZSBpbmRleGVkLFxuICogICAgICAgYnV0IGRvZXNuJ3QgaGF2ZSB0byBiZS5cbiAqXG4gKiBJbnN0ZWFkIG9mIHRoZSBcIm1hcFwiIGZpZWxkLCBpdCdzIGFsc28gcG9zc2libGUgdG8gaGF2ZSBhIFwidXJsXCIgZmllbGRcbiAqIHNwZWNpZnlpbmcgYSBVUkwgdG8gcmV0cmlldmUgYSBzb3VyY2UgbWFwIGZyb20sIGJ1dCB0aGF0J3MgY3VycmVudGx5XG4gKiB1bnN1cHBvcnRlZC5cbiAqXG4gKiBIZXJlJ3MgYW4gZXhhbXBsZSBzb3VyY2UgbWFwLCB0YWtlbiBmcm9tIHRoZSBzb3VyY2UgbWFwIHNwZWNbMF0sIGJ1dFxuICogbW9kaWZpZWQgdG8gb21pdCBhIHNlY3Rpb24gd2hpY2ggdXNlcyB0aGUgXCJ1cmxcIiBmaWVsZC5cbiAqXG4gKiAge1xuICogICAgdmVyc2lvbiA6IDMsXG4gKiAgICBmaWxlOiBcImFwcC5qc1wiLFxuICogICAgc2VjdGlvbnM6IFt7XG4gKiAgICAgIG9mZnNldDoge2xpbmU6MTAwLCBjb2x1bW46MTB9LFxuICogICAgICBtYXA6IHtcbiAqICAgICAgICB2ZXJzaW9uIDogMyxcbiAqICAgICAgICBmaWxlOiBcInNlY3Rpb24uanNcIixcbiAqICAgICAgICBzb3VyY2VzOiBbXCJmb28uanNcIiwgXCJiYXIuanNcIl0sXG4gKiAgICAgICAgbmFtZXM6IFtcInNyY1wiLCBcIm1hcHNcIiwgXCJhcmVcIiwgXCJmdW5cIl0sXG4gKiAgICAgICAgbWFwcGluZ3M6IFwiQUFBQSxFOztBQkNERTtcIlxuICogICAgICB9XG4gKiAgICB9XSxcbiAqICB9XG4gKlxuICogVGhlIHNlY29uZCBwYXJhbWV0ZXIsIGlmIGdpdmVuLCBpcyBhIHN0cmluZyB3aG9zZSB2YWx1ZSBpcyB0aGUgVVJMXG4gKiBhdCB3aGljaCB0aGUgc291cmNlIG1hcCB3YXMgZm91bmQuICBUaGlzIFVSTCBpcyB1c2VkIHRvIGNvbXB1dGUgdGhlXG4gKiBzb3VyY2VzIGFycmF5LlxuICpcbiAqIFswXTogaHR0cHM6Ly9kb2NzLmdvb2dsZS5jb20vZG9jdW1lbnQvZC8xVTFSR0FlaFF3UnlwVVRvdkYxS1JscGlPRnplMGItXzJnYzZmQUgwS1kway9lZGl0I2hlYWRpbmc9aC41MzVlczN4ZXByZ3RcbiAqL1xuZnVuY3Rpb24gSW5kZXhlZFNvdXJjZU1hcENvbnN1bWVyKGFTb3VyY2VNYXAsIGFTb3VyY2VNYXBVUkwpIHtcbiAgdmFyIHNvdXJjZU1hcCA9IGFTb3VyY2VNYXA7XG4gIGlmICh0eXBlb2YgYVNvdXJjZU1hcCA9PT0gJ3N0cmluZycpIHtcbiAgICBzb3VyY2VNYXAgPSB1dGlsLnBhcnNlU291cmNlTWFwSW5wdXQoYVNvdXJjZU1hcCk7XG4gIH1cblxuICB2YXIgdmVyc2lvbiA9IHV0aWwuZ2V0QXJnKHNvdXJjZU1hcCwgJ3ZlcnNpb24nKTtcbiAgdmFyIHNlY3Rpb25zID0gdXRpbC5nZXRBcmcoc291cmNlTWFwLCAnc2VjdGlvbnMnKTtcblxuICBpZiAodmVyc2lvbiAhPSB0aGlzLl92ZXJzaW9uKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdVbnN1cHBvcnRlZCB2ZXJzaW9uOiAnICsgdmVyc2lvbik7XG4gIH1cblxuICB0aGlzLl9zb3VyY2VzID0gbmV3IEFycmF5U2V0KCk7XG4gIHRoaXMuX25hbWVzID0gbmV3IEFycmF5U2V0KCk7XG5cbiAgdmFyIGxhc3RPZmZzZXQgPSB7XG4gICAgbGluZTogLTEsXG4gICAgY29sdW1uOiAwXG4gIH07XG4gIHRoaXMuX3NlY3Rpb25zID0gc2VjdGlvbnMubWFwKGZ1bmN0aW9uIChzKSB7XG4gICAgaWYgKHMudXJsKSB7XG4gICAgICAvLyBUaGUgdXJsIGZpZWxkIHdpbGwgcmVxdWlyZSBzdXBwb3J0IGZvciBhc3luY2hyb25pY2l0eS5cbiAgICAgIC8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20vbW96aWxsYS9zb3VyY2UtbWFwL2lzc3Vlcy8xNlxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdTdXBwb3J0IGZvciB1cmwgZmllbGQgaW4gc2VjdGlvbnMgbm90IGltcGxlbWVudGVkLicpO1xuICAgIH1cbiAgICB2YXIgb2Zmc2V0ID0gdXRpbC5nZXRBcmcocywgJ29mZnNldCcpO1xuICAgIHZhciBvZmZzZXRMaW5lID0gdXRpbC5nZXRBcmcob2Zmc2V0LCAnbGluZScpO1xuICAgIHZhciBvZmZzZXRDb2x1bW4gPSB1dGlsLmdldEFyZyhvZmZzZXQsICdjb2x1bW4nKTtcblxuICAgIGlmIChvZmZzZXRMaW5lIDwgbGFzdE9mZnNldC5saW5lIHx8XG4gICAgICAgIChvZmZzZXRMaW5lID09PSBsYXN0T2Zmc2V0LmxpbmUgJiYgb2Zmc2V0Q29sdW1uIDwgbGFzdE9mZnNldC5jb2x1bW4pKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1NlY3Rpb24gb2Zmc2V0cyBtdXN0IGJlIG9yZGVyZWQgYW5kIG5vbi1vdmVybGFwcGluZy4nKTtcbiAgICB9XG4gICAgbGFzdE9mZnNldCA9IG9mZnNldDtcblxuICAgIHJldHVybiB7XG4gICAgICBnZW5lcmF0ZWRPZmZzZXQ6IHtcbiAgICAgICAgLy8gVGhlIG9mZnNldCBmaWVsZHMgYXJlIDAtYmFzZWQsIGJ1dCB3ZSB1c2UgMS1iYXNlZCBpbmRpY2VzIHdoZW5cbiAgICAgICAgLy8gZW5jb2RpbmcvZGVjb2RpbmcgZnJvbSBWTFEuXG4gICAgICAgIGdlbmVyYXRlZExpbmU6IG9mZnNldExpbmUgKyAxLFxuICAgICAgICBnZW5lcmF0ZWRDb2x1bW46IG9mZnNldENvbHVtbiArIDFcbiAgICAgIH0sXG4gICAgICBjb25zdW1lcjogbmV3IFNvdXJjZU1hcENvbnN1bWVyKHV0aWwuZ2V0QXJnKHMsICdtYXAnKSwgYVNvdXJjZU1hcFVSTClcbiAgICB9XG4gIH0pO1xufVxuXG5JbmRleGVkU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShTb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUpO1xuSW5kZXhlZFNvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IFNvdXJjZU1hcENvbnN1bWVyO1xuXG4vKipcbiAqIFRoZSB2ZXJzaW9uIG9mIHRoZSBzb3VyY2UgbWFwcGluZyBzcGVjIHRoYXQgd2UgYXJlIGNvbnN1bWluZy5cbiAqL1xuSW5kZXhlZFNvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZS5fdmVyc2lvbiA9IDM7XG5cbi8qKlxuICogVGhlIGxpc3Qgb2Ygb3JpZ2luYWwgc291cmNlcy5cbiAqL1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KEluZGV4ZWRTb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUsICdzb3VyY2VzJywge1xuICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgc291cmNlcyA9IFtdO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5fc2VjdGlvbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgdGhpcy5fc2VjdGlvbnNbaV0uY29uc3VtZXIuc291cmNlcy5sZW5ndGg7IGorKykge1xuICAgICAgICBzb3VyY2VzLnB1c2godGhpcy5fc2VjdGlvbnNbaV0uY29uc3VtZXIuc291cmNlc1tqXSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBzb3VyY2VzO1xuICB9XG59KTtcblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBvcmlnaW5hbCBzb3VyY2UsIGxpbmUsIGFuZCBjb2x1bW4gaW5mb3JtYXRpb24gZm9yIHRoZSBnZW5lcmF0ZWRcbiAqIHNvdXJjZSdzIGxpbmUgYW5kIGNvbHVtbiBwb3NpdGlvbnMgcHJvdmlkZWQuIFRoZSBvbmx5IGFyZ3VtZW50IGlzIGFuIG9iamVjdFxuICogd2l0aCB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6XG4gKlxuICogICAtIGxpbmU6IFRoZSBsaW5lIG51bWJlciBpbiB0aGUgZ2VuZXJhdGVkIHNvdXJjZS4gIFRoZSBsaW5lIG51bWJlclxuICogICAgIGlzIDEtYmFzZWQuXG4gKiAgIC0gY29sdW1uOiBUaGUgY29sdW1uIG51bWJlciBpbiB0aGUgZ2VuZXJhdGVkIHNvdXJjZS4gIFRoZSBjb2x1bW5cbiAqICAgICBudW1iZXIgaXMgMC1iYXNlZC5cbiAqXG4gKiBhbmQgYW4gb2JqZWN0IGlzIHJldHVybmVkIHdpdGggdGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzOlxuICpcbiAqICAgLSBzb3VyY2U6IFRoZSBvcmlnaW5hbCBzb3VyY2UgZmlsZSwgb3IgbnVsbC5cbiAqICAgLSBsaW5lOiBUaGUgbGluZSBudW1iZXIgaW4gdGhlIG9yaWdpbmFsIHNvdXJjZSwgb3IgbnVsbC4gIFRoZVxuICogICAgIGxpbmUgbnVtYmVyIGlzIDEtYmFzZWQuXG4gKiAgIC0gY29sdW1uOiBUaGUgY29sdW1uIG51bWJlciBpbiB0aGUgb3JpZ2luYWwgc291cmNlLCBvciBudWxsLiAgVGhlXG4gKiAgICAgY29sdW1uIG51bWJlciBpcyAwLWJhc2VkLlxuICogICAtIG5hbWU6IFRoZSBvcmlnaW5hbCBpZGVudGlmaWVyLCBvciBudWxsLlxuICovXG5JbmRleGVkU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlLm9yaWdpbmFsUG9zaXRpb25Gb3IgPVxuICBmdW5jdGlvbiBJbmRleGVkU291cmNlTWFwQ29uc3VtZXJfb3JpZ2luYWxQb3NpdGlvbkZvcihhQXJncykge1xuICAgIHZhciBuZWVkbGUgPSB7XG4gICAgICBnZW5lcmF0ZWRMaW5lOiB1dGlsLmdldEFyZyhhQXJncywgJ2xpbmUnKSxcbiAgICAgIGdlbmVyYXRlZENvbHVtbjogdXRpbC5nZXRBcmcoYUFyZ3MsICdjb2x1bW4nKVxuICAgIH07XG5cbiAgICAvLyBGaW5kIHRoZSBzZWN0aW9uIGNvbnRhaW5pbmcgdGhlIGdlbmVyYXRlZCBwb3NpdGlvbiB3ZSdyZSB0cnlpbmcgdG8gbWFwXG4gICAgLy8gdG8gYW4gb3JpZ2luYWwgcG9zaXRpb24uXG4gICAgdmFyIHNlY3Rpb25JbmRleCA9IGJpbmFyeVNlYXJjaC5zZWFyY2gobmVlZGxlLCB0aGlzLl9zZWN0aW9ucyxcbiAgICAgIGZ1bmN0aW9uKG5lZWRsZSwgc2VjdGlvbikge1xuICAgICAgICB2YXIgY21wID0gbmVlZGxlLmdlbmVyYXRlZExpbmUgLSBzZWN0aW9uLmdlbmVyYXRlZE9mZnNldC5nZW5lcmF0ZWRMaW5lO1xuICAgICAgICBpZiAoY21wKSB7XG4gICAgICAgICAgcmV0dXJuIGNtcDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiAobmVlZGxlLmdlbmVyYXRlZENvbHVtbiAtXG4gICAgICAgICAgICAgICAgc2VjdGlvbi5nZW5lcmF0ZWRPZmZzZXQuZ2VuZXJhdGVkQ29sdW1uKTtcbiAgICAgIH0pO1xuICAgIHZhciBzZWN0aW9uID0gdGhpcy5fc2VjdGlvbnNbc2VjdGlvbkluZGV4XTtcblxuICAgIGlmICghc2VjdGlvbikge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgc291cmNlOiBudWxsLFxuICAgICAgICBsaW5lOiBudWxsLFxuICAgICAgICBjb2x1bW46IG51bGwsXG4gICAgICAgIG5hbWU6IG51bGxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHNlY3Rpb24uY29uc3VtZXIub3JpZ2luYWxQb3NpdGlvbkZvcih7XG4gICAgICBsaW5lOiBuZWVkbGUuZ2VuZXJhdGVkTGluZSAtXG4gICAgICAgIChzZWN0aW9uLmdlbmVyYXRlZE9mZnNldC5nZW5lcmF0ZWRMaW5lIC0gMSksXG4gICAgICBjb2x1bW46IG5lZWRsZS5nZW5lcmF0ZWRDb2x1bW4gLVxuICAgICAgICAoc2VjdGlvbi5nZW5lcmF0ZWRPZmZzZXQuZ2VuZXJhdGVkTGluZSA9PT0gbmVlZGxlLmdlbmVyYXRlZExpbmVcbiAgICAgICAgID8gc2VjdGlvbi5nZW5lcmF0ZWRPZmZzZXQuZ2VuZXJhdGVkQ29sdW1uIC0gMVxuICAgICAgICAgOiAwKSxcbiAgICAgIGJpYXM6IGFBcmdzLmJpYXNcbiAgICB9KTtcbiAgfTtcblxuLyoqXG4gKiBSZXR1cm4gdHJ1ZSBpZiB3ZSBoYXZlIHRoZSBzb3VyY2UgY29udGVudCBmb3IgZXZlcnkgc291cmNlIGluIHRoZSBzb3VyY2VcbiAqIG1hcCwgZmFsc2Ugb3RoZXJ3aXNlLlxuICovXG5JbmRleGVkU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlLmhhc0NvbnRlbnRzT2ZBbGxTb3VyY2VzID1cbiAgZnVuY3Rpb24gSW5kZXhlZFNvdXJjZU1hcENvbnN1bWVyX2hhc0NvbnRlbnRzT2ZBbGxTb3VyY2VzKCkge1xuICAgIHJldHVybiB0aGlzLl9zZWN0aW9ucy5ldmVyeShmdW5jdGlvbiAocykge1xuICAgICAgcmV0dXJuIHMuY29uc3VtZXIuaGFzQ29udGVudHNPZkFsbFNvdXJjZXMoKTtcbiAgICB9KTtcbiAgfTtcblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBvcmlnaW5hbCBzb3VyY2UgY29udGVudC4gVGhlIG9ubHkgYXJndW1lbnQgaXMgdGhlIHVybCBvZiB0aGVcbiAqIG9yaWdpbmFsIHNvdXJjZSBmaWxlLiBSZXR1cm5zIG51bGwgaWYgbm8gb3JpZ2luYWwgc291cmNlIGNvbnRlbnQgaXNcbiAqIGF2YWlsYWJsZS5cbiAqL1xuSW5kZXhlZFNvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZS5zb3VyY2VDb250ZW50Rm9yID1cbiAgZnVuY3Rpb24gSW5kZXhlZFNvdXJjZU1hcENvbnN1bWVyX3NvdXJjZUNvbnRlbnRGb3IoYVNvdXJjZSwgbnVsbE9uTWlzc2luZykge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5fc2VjdGlvbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBzZWN0aW9uID0gdGhpcy5fc2VjdGlvbnNbaV07XG5cbiAgICAgIHZhciBjb250ZW50ID0gc2VjdGlvbi5jb25zdW1lci5zb3VyY2VDb250ZW50Rm9yKGFTb3VyY2UsIHRydWUpO1xuICAgICAgaWYgKGNvbnRlbnQpIHtcbiAgICAgICAgcmV0dXJuIGNvbnRlbnQ7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChudWxsT25NaXNzaW5nKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1wiJyArIGFTb3VyY2UgKyAnXCIgaXMgbm90IGluIHRoZSBTb3VyY2VNYXAuJyk7XG4gICAgfVxuICB9O1xuXG4vKipcbiAqIFJldHVybnMgdGhlIGdlbmVyYXRlZCBsaW5lIGFuZCBjb2x1bW4gaW5mb3JtYXRpb24gZm9yIHRoZSBvcmlnaW5hbCBzb3VyY2UsXG4gKiBsaW5lLCBhbmQgY29sdW1uIHBvc2l0aW9ucyBwcm92aWRlZC4gVGhlIG9ubHkgYXJndW1lbnQgaXMgYW4gb2JqZWN0IHdpdGhcbiAqIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllczpcbiAqXG4gKiAgIC0gc291cmNlOiBUaGUgZmlsZW5hbWUgb2YgdGhlIG9yaWdpbmFsIHNvdXJjZS5cbiAqICAgLSBsaW5lOiBUaGUgbGluZSBudW1iZXIgaW4gdGhlIG9yaWdpbmFsIHNvdXJjZS4gIFRoZSBsaW5lIG51bWJlclxuICogICAgIGlzIDEtYmFzZWQuXG4gKiAgIC0gY29sdW1uOiBUaGUgY29sdW1uIG51bWJlciBpbiB0aGUgb3JpZ2luYWwgc291cmNlLiAgVGhlIGNvbHVtblxuICogICAgIG51bWJlciBpcyAwLWJhc2VkLlxuICpcbiAqIGFuZCBhbiBvYmplY3QgaXMgcmV0dXJuZWQgd2l0aCB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6XG4gKlxuICogICAtIGxpbmU6IFRoZSBsaW5lIG51bWJlciBpbiB0aGUgZ2VuZXJhdGVkIHNvdXJjZSwgb3IgbnVsbC4gIFRoZVxuICogICAgIGxpbmUgbnVtYmVyIGlzIDEtYmFzZWQuIFxuICogICAtIGNvbHVtbjogVGhlIGNvbHVtbiBudW1iZXIgaW4gdGhlIGdlbmVyYXRlZCBzb3VyY2UsIG9yIG51bGwuXG4gKiAgICAgVGhlIGNvbHVtbiBudW1iZXIgaXMgMC1iYXNlZC5cbiAqL1xuSW5kZXhlZFNvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZS5nZW5lcmF0ZWRQb3NpdGlvbkZvciA9XG4gIGZ1bmN0aW9uIEluZGV4ZWRTb3VyY2VNYXBDb25zdW1lcl9nZW5lcmF0ZWRQb3NpdGlvbkZvcihhQXJncykge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5fc2VjdGlvbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBzZWN0aW9uID0gdGhpcy5fc2VjdGlvbnNbaV07XG5cbiAgICAgIC8vIE9ubHkgY29uc2lkZXIgdGhpcyBzZWN0aW9uIGlmIHRoZSByZXF1ZXN0ZWQgc291cmNlIGlzIGluIHRoZSBsaXN0IG9mXG4gICAgICAvLyBzb3VyY2VzIG9mIHRoZSBjb25zdW1lci5cbiAgICAgIGlmIChzZWN0aW9uLmNvbnN1bWVyLl9maW5kU291cmNlSW5kZXgodXRpbC5nZXRBcmcoYUFyZ3MsICdzb3VyY2UnKSkgPT09IC0xKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgdmFyIGdlbmVyYXRlZFBvc2l0aW9uID0gc2VjdGlvbi5jb25zdW1lci5nZW5lcmF0ZWRQb3NpdGlvbkZvcihhQXJncyk7XG4gICAgICBpZiAoZ2VuZXJhdGVkUG9zaXRpb24pIHtcbiAgICAgICAgdmFyIHJldCA9IHtcbiAgICAgICAgICBsaW5lOiBnZW5lcmF0ZWRQb3NpdGlvbi5saW5lICtcbiAgICAgICAgICAgIChzZWN0aW9uLmdlbmVyYXRlZE9mZnNldC5nZW5lcmF0ZWRMaW5lIC0gMSksXG4gICAgICAgICAgY29sdW1uOiBnZW5lcmF0ZWRQb3NpdGlvbi5jb2x1bW4gK1xuICAgICAgICAgICAgKHNlY3Rpb24uZ2VuZXJhdGVkT2Zmc2V0LmdlbmVyYXRlZExpbmUgPT09IGdlbmVyYXRlZFBvc2l0aW9uLmxpbmVcbiAgICAgICAgICAgICA/IHNlY3Rpb24uZ2VuZXJhdGVkT2Zmc2V0LmdlbmVyYXRlZENvbHVtbiAtIDFcbiAgICAgICAgICAgICA6IDApXG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiByZXQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGxpbmU6IG51bGwsXG4gICAgICBjb2x1bW46IG51bGxcbiAgICB9O1xuICB9O1xuXG4vKipcbiAqIFBhcnNlIHRoZSBtYXBwaW5ncyBpbiBhIHN0cmluZyBpbiB0byBhIGRhdGEgc3RydWN0dXJlIHdoaWNoIHdlIGNhbiBlYXNpbHlcbiAqIHF1ZXJ5ICh0aGUgb3JkZXJlZCBhcnJheXMgaW4gdGhlIGB0aGlzLl9fZ2VuZXJhdGVkTWFwcGluZ3NgIGFuZFxuICogYHRoaXMuX19vcmlnaW5hbE1hcHBpbmdzYCBwcm9wZXJ0aWVzKS5cbiAqL1xuSW5kZXhlZFNvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZS5fcGFyc2VNYXBwaW5ncyA9XG4gIGZ1bmN0aW9uIEluZGV4ZWRTb3VyY2VNYXBDb25zdW1lcl9wYXJzZU1hcHBpbmdzKGFTdHIsIGFTb3VyY2VSb290KSB7XG4gICAgdGhpcy5fX2dlbmVyYXRlZE1hcHBpbmdzID0gW107XG4gICAgdGhpcy5fX29yaWdpbmFsTWFwcGluZ3MgPSBbXTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuX3NlY3Rpb25zLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgc2VjdGlvbiA9IHRoaXMuX3NlY3Rpb25zW2ldO1xuICAgICAgdmFyIHNlY3Rpb25NYXBwaW5ncyA9IHNlY3Rpb24uY29uc3VtZXIuX2dlbmVyYXRlZE1hcHBpbmdzO1xuICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBzZWN0aW9uTWFwcGluZ3MubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgdmFyIG1hcHBpbmcgPSBzZWN0aW9uTWFwcGluZ3Nbal07XG5cbiAgICAgICAgdmFyIHNvdXJjZSA9IHNlY3Rpb24uY29uc3VtZXIuX3NvdXJjZXMuYXQobWFwcGluZy5zb3VyY2UpO1xuICAgICAgICBzb3VyY2UgPSB1dGlsLmNvbXB1dGVTb3VyY2VVUkwoc2VjdGlvbi5jb25zdW1lci5zb3VyY2VSb290LCBzb3VyY2UsIHRoaXMuX3NvdXJjZU1hcFVSTCk7XG4gICAgICAgIHRoaXMuX3NvdXJjZXMuYWRkKHNvdXJjZSk7XG4gICAgICAgIHNvdXJjZSA9IHRoaXMuX3NvdXJjZXMuaW5kZXhPZihzb3VyY2UpO1xuXG4gICAgICAgIHZhciBuYW1lID0gbnVsbDtcbiAgICAgICAgaWYgKG1hcHBpbmcubmFtZSkge1xuICAgICAgICAgIG5hbWUgPSBzZWN0aW9uLmNvbnN1bWVyLl9uYW1lcy5hdChtYXBwaW5nLm5hbWUpO1xuICAgICAgICAgIHRoaXMuX25hbWVzLmFkZChuYW1lKTtcbiAgICAgICAgICBuYW1lID0gdGhpcy5fbmFtZXMuaW5kZXhPZihuYW1lKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFRoZSBtYXBwaW5ncyBjb21pbmcgZnJvbSB0aGUgY29uc3VtZXIgZm9yIHRoZSBzZWN0aW9uIGhhdmVcbiAgICAgICAgLy8gZ2VuZXJhdGVkIHBvc2l0aW9ucyByZWxhdGl2ZSB0byB0aGUgc3RhcnQgb2YgdGhlIHNlY3Rpb24sIHNvIHdlXG4gICAgICAgIC8vIG5lZWQgdG8gb2Zmc2V0IHRoZW0gdG8gYmUgcmVsYXRpdmUgdG8gdGhlIHN0YXJ0IG9mIHRoZSBjb25jYXRlbmF0ZWRcbiAgICAgICAgLy8gZ2VuZXJhdGVkIGZpbGUuXG4gICAgICAgIHZhciBhZGp1c3RlZE1hcHBpbmcgPSB7XG4gICAgICAgICAgc291cmNlOiBzb3VyY2UsXG4gICAgICAgICAgZ2VuZXJhdGVkTGluZTogbWFwcGluZy5nZW5lcmF0ZWRMaW5lICtcbiAgICAgICAgICAgIChzZWN0aW9uLmdlbmVyYXRlZE9mZnNldC5nZW5lcmF0ZWRMaW5lIC0gMSksXG4gICAgICAgICAgZ2VuZXJhdGVkQ29sdW1uOiBtYXBwaW5nLmdlbmVyYXRlZENvbHVtbiArXG4gICAgICAgICAgICAoc2VjdGlvbi5nZW5lcmF0ZWRPZmZzZXQuZ2VuZXJhdGVkTGluZSA9PT0gbWFwcGluZy5nZW5lcmF0ZWRMaW5lXG4gICAgICAgICAgICA/IHNlY3Rpb24uZ2VuZXJhdGVkT2Zmc2V0LmdlbmVyYXRlZENvbHVtbiAtIDFcbiAgICAgICAgICAgIDogMCksXG4gICAgICAgICAgb3JpZ2luYWxMaW5lOiBtYXBwaW5nLm9yaWdpbmFsTGluZSxcbiAgICAgICAgICBvcmlnaW5hbENvbHVtbjogbWFwcGluZy5vcmlnaW5hbENvbHVtbixcbiAgICAgICAgICBuYW1lOiBuYW1lXG4gICAgICAgIH07XG5cbiAgICAgICAgdGhpcy5fX2dlbmVyYXRlZE1hcHBpbmdzLnB1c2goYWRqdXN0ZWRNYXBwaW5nKTtcbiAgICAgICAgaWYgKHR5cGVvZiBhZGp1c3RlZE1hcHBpbmcub3JpZ2luYWxMaW5lID09PSAnbnVtYmVyJykge1xuICAgICAgICAgIHRoaXMuX19vcmlnaW5hbE1hcHBpbmdzLnB1c2goYWRqdXN0ZWRNYXBwaW5nKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHF1aWNrU29ydCh0aGlzLl9fZ2VuZXJhdGVkTWFwcGluZ3MsIHV0aWwuY29tcGFyZUJ5R2VuZXJhdGVkUG9zaXRpb25zRGVmbGF0ZWQpO1xuICAgIHF1aWNrU29ydCh0aGlzLl9fb3JpZ2luYWxNYXBwaW5ncywgdXRpbC5jb21wYXJlQnlPcmlnaW5hbFBvc2l0aW9ucyk7XG4gIH07XG5cbmV4cG9ydHMuSW5kZXhlZFNvdXJjZU1hcENvbnN1bWVyID0gSW5kZXhlZFNvdXJjZU1hcENvbnN1bWVyO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9saWIvc291cmNlLW1hcC1jb25zdW1lci5qc1xuLy8gbW9kdWxlIGlkID0gN1xuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIvKiAtKi0gTW9kZToganM7IGpzLWluZGVudC1sZXZlbDogMjsgLSotICovXG4vKlxuICogQ29weXJpZ2h0IDIwMTEgTW96aWxsYSBGb3VuZGF0aW9uIGFuZCBjb250cmlidXRvcnNcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBOZXcgQlNEIGxpY2Vuc2UuIFNlZSBMSUNFTlNFIG9yOlxuICogaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL0JTRC0zLUNsYXVzZVxuICovXG5cbmV4cG9ydHMuR1JFQVRFU1RfTE9XRVJfQk9VTkQgPSAxO1xuZXhwb3J0cy5MRUFTVF9VUFBFUl9CT1VORCA9IDI7XG5cbi8qKlxuICogUmVjdXJzaXZlIGltcGxlbWVudGF0aW9uIG9mIGJpbmFyeSBzZWFyY2guXG4gKlxuICogQHBhcmFtIGFMb3cgSW5kaWNlcyBoZXJlIGFuZCBsb3dlciBkbyBub3QgY29udGFpbiB0aGUgbmVlZGxlLlxuICogQHBhcmFtIGFIaWdoIEluZGljZXMgaGVyZSBhbmQgaGlnaGVyIGRvIG5vdCBjb250YWluIHRoZSBuZWVkbGUuXG4gKiBAcGFyYW0gYU5lZWRsZSBUaGUgZWxlbWVudCBiZWluZyBzZWFyY2hlZCBmb3IuXG4gKiBAcGFyYW0gYUhheXN0YWNrIFRoZSBub24tZW1wdHkgYXJyYXkgYmVpbmcgc2VhcmNoZWQuXG4gKiBAcGFyYW0gYUNvbXBhcmUgRnVuY3Rpb24gd2hpY2ggdGFrZXMgdHdvIGVsZW1lbnRzIGFuZCByZXR1cm5zIC0xLCAwLCBvciAxLlxuICogQHBhcmFtIGFCaWFzIEVpdGhlciAnYmluYXJ5U2VhcmNoLkdSRUFURVNUX0xPV0VSX0JPVU5EJyBvclxuICogICAgICdiaW5hcnlTZWFyY2guTEVBU1RfVVBQRVJfQk9VTkQnLiBTcGVjaWZpZXMgd2hldGhlciB0byByZXR1cm4gdGhlXG4gKiAgICAgY2xvc2VzdCBlbGVtZW50IHRoYXQgaXMgc21hbGxlciB0aGFuIG9yIGdyZWF0ZXIgdGhhbiB0aGUgb25lIHdlIGFyZVxuICogICAgIHNlYXJjaGluZyBmb3IsIHJlc3BlY3RpdmVseSwgaWYgdGhlIGV4YWN0IGVsZW1lbnQgY2Fubm90IGJlIGZvdW5kLlxuICovXG5mdW5jdGlvbiByZWN1cnNpdmVTZWFyY2goYUxvdywgYUhpZ2gsIGFOZWVkbGUsIGFIYXlzdGFjaywgYUNvbXBhcmUsIGFCaWFzKSB7XG4gIC8vIFRoaXMgZnVuY3Rpb24gdGVybWluYXRlcyB3aGVuIG9uZSBvZiB0aGUgZm9sbG93aW5nIGlzIHRydWU6XG4gIC8vXG4gIC8vICAgMS4gV2UgZmluZCB0aGUgZXhhY3QgZWxlbWVudCB3ZSBhcmUgbG9va2luZyBmb3IuXG4gIC8vXG4gIC8vICAgMi4gV2UgZGlkIG5vdCBmaW5kIHRoZSBleGFjdCBlbGVtZW50LCBidXQgd2UgY2FuIHJldHVybiB0aGUgaW5kZXggb2ZcbiAgLy8gICAgICB0aGUgbmV4dC1jbG9zZXN0IGVsZW1lbnQuXG4gIC8vXG4gIC8vICAgMy4gV2UgZGlkIG5vdCBmaW5kIHRoZSBleGFjdCBlbGVtZW50LCBhbmQgdGhlcmUgaXMgbm8gbmV4dC1jbG9zZXN0XG4gIC8vICAgICAgZWxlbWVudCB0aGFuIHRoZSBvbmUgd2UgYXJlIHNlYXJjaGluZyBmb3IsIHNvIHdlIHJldHVybiAtMS5cbiAgdmFyIG1pZCA9IE1hdGguZmxvb3IoKGFIaWdoIC0gYUxvdykgLyAyKSArIGFMb3c7XG4gIHZhciBjbXAgPSBhQ29tcGFyZShhTmVlZGxlLCBhSGF5c3RhY2tbbWlkXSwgdHJ1ZSk7XG4gIGlmIChjbXAgPT09IDApIHtcbiAgICAvLyBGb3VuZCB0aGUgZWxlbWVudCB3ZSBhcmUgbG9va2luZyBmb3IuXG4gICAgcmV0dXJuIG1pZDtcbiAgfVxuICBlbHNlIGlmIChjbXAgPiAwKSB7XG4gICAgLy8gT3VyIG5lZWRsZSBpcyBncmVhdGVyIHRoYW4gYUhheXN0YWNrW21pZF0uXG4gICAgaWYgKGFIaWdoIC0gbWlkID4gMSkge1xuICAgICAgLy8gVGhlIGVsZW1lbnQgaXMgaW4gdGhlIHVwcGVyIGhhbGYuXG4gICAgICByZXR1cm4gcmVjdXJzaXZlU2VhcmNoKG1pZCwgYUhpZ2gsIGFOZWVkbGUsIGFIYXlzdGFjaywgYUNvbXBhcmUsIGFCaWFzKTtcbiAgICB9XG5cbiAgICAvLyBUaGUgZXhhY3QgbmVlZGxlIGVsZW1lbnQgd2FzIG5vdCBmb3VuZCBpbiB0aGlzIGhheXN0YWNrLiBEZXRlcm1pbmUgaWZcbiAgICAvLyB3ZSBhcmUgaW4gdGVybWluYXRpb24gY2FzZSAoMykgb3IgKDIpIGFuZCByZXR1cm4gdGhlIGFwcHJvcHJpYXRlIHRoaW5nLlxuICAgIGlmIChhQmlhcyA9PSBleHBvcnRzLkxFQVNUX1VQUEVSX0JPVU5EKSB7XG4gICAgICByZXR1cm4gYUhpZ2ggPCBhSGF5c3RhY2subGVuZ3RoID8gYUhpZ2ggOiAtMTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG1pZDtcbiAgICB9XG4gIH1cbiAgZWxzZSB7XG4gICAgLy8gT3VyIG5lZWRsZSBpcyBsZXNzIHRoYW4gYUhheXN0YWNrW21pZF0uXG4gICAgaWYgKG1pZCAtIGFMb3cgPiAxKSB7XG4gICAgICAvLyBUaGUgZWxlbWVudCBpcyBpbiB0aGUgbG93ZXIgaGFsZi5cbiAgICAgIHJldHVybiByZWN1cnNpdmVTZWFyY2goYUxvdywgbWlkLCBhTmVlZGxlLCBhSGF5c3RhY2ssIGFDb21wYXJlLCBhQmlhcyk7XG4gICAgfVxuXG4gICAgLy8gd2UgYXJlIGluIHRlcm1pbmF0aW9uIGNhc2UgKDMpIG9yICgyKSBhbmQgcmV0dXJuIHRoZSBhcHByb3ByaWF0ZSB0aGluZy5cbiAgICBpZiAoYUJpYXMgPT0gZXhwb3J0cy5MRUFTVF9VUFBFUl9CT1VORCkge1xuICAgICAgcmV0dXJuIG1pZDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGFMb3cgPCAwID8gLTEgOiBhTG93O1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIFRoaXMgaXMgYW4gaW1wbGVtZW50YXRpb24gb2YgYmluYXJ5IHNlYXJjaCB3aGljaCB3aWxsIGFsd2F5cyB0cnkgYW5kIHJldHVyblxuICogdGhlIGluZGV4IG9mIHRoZSBjbG9zZXN0IGVsZW1lbnQgaWYgdGhlcmUgaXMgbm8gZXhhY3QgaGl0LiBUaGlzIGlzIGJlY2F1c2VcbiAqIG1hcHBpbmdzIGJldHdlZW4gb3JpZ2luYWwgYW5kIGdlbmVyYXRlZCBsaW5lL2NvbCBwYWlycyBhcmUgc2luZ2xlIHBvaW50cyxcbiAqIGFuZCB0aGVyZSBpcyBhbiBpbXBsaWNpdCByZWdpb24gYmV0d2VlbiBlYWNoIG9mIHRoZW0sIHNvIGEgbWlzcyBqdXN0IG1lYW5zXG4gKiB0aGF0IHlvdSBhcmVuJ3Qgb24gdGhlIHZlcnkgc3RhcnQgb2YgYSByZWdpb24uXG4gKlxuICogQHBhcmFtIGFOZWVkbGUgVGhlIGVsZW1lbnQgeW91IGFyZSBsb29raW5nIGZvci5cbiAqIEBwYXJhbSBhSGF5c3RhY2sgVGhlIGFycmF5IHRoYXQgaXMgYmVpbmcgc2VhcmNoZWQuXG4gKiBAcGFyYW0gYUNvbXBhcmUgQSBmdW5jdGlvbiB3aGljaCB0YWtlcyB0aGUgbmVlZGxlIGFuZCBhbiBlbGVtZW50IGluIHRoZVxuICogICAgIGFycmF5IGFuZCByZXR1cm5zIC0xLCAwLCBvciAxIGRlcGVuZGluZyBvbiB3aGV0aGVyIHRoZSBuZWVkbGUgaXMgbGVzc1xuICogICAgIHRoYW4sIGVxdWFsIHRvLCBvciBncmVhdGVyIHRoYW4gdGhlIGVsZW1lbnQsIHJlc3BlY3RpdmVseS5cbiAqIEBwYXJhbSBhQmlhcyBFaXRoZXIgJ2JpbmFyeVNlYXJjaC5HUkVBVEVTVF9MT1dFUl9CT1VORCcgb3JcbiAqICAgICAnYmluYXJ5U2VhcmNoLkxFQVNUX1VQUEVSX0JPVU5EJy4gU3BlY2lmaWVzIHdoZXRoZXIgdG8gcmV0dXJuIHRoZVxuICogICAgIGNsb3Nlc3QgZWxlbWVudCB0aGF0IGlzIHNtYWxsZXIgdGhhbiBvciBncmVhdGVyIHRoYW4gdGhlIG9uZSB3ZSBhcmVcbiAqICAgICBzZWFyY2hpbmcgZm9yLCByZXNwZWN0aXZlbHksIGlmIHRoZSBleGFjdCBlbGVtZW50IGNhbm5vdCBiZSBmb3VuZC5cbiAqICAgICBEZWZhdWx0cyB0byAnYmluYXJ5U2VhcmNoLkdSRUFURVNUX0xPV0VSX0JPVU5EJy5cbiAqL1xuZXhwb3J0cy5zZWFyY2ggPSBmdW5jdGlvbiBzZWFyY2goYU5lZWRsZSwgYUhheXN0YWNrLCBhQ29tcGFyZSwgYUJpYXMpIHtcbiAgaWYgKGFIYXlzdGFjay5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gLTE7XG4gIH1cblxuICB2YXIgaW5kZXggPSByZWN1cnNpdmVTZWFyY2goLTEsIGFIYXlzdGFjay5sZW5ndGgsIGFOZWVkbGUsIGFIYXlzdGFjayxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFDb21wYXJlLCBhQmlhcyB8fCBleHBvcnRzLkdSRUFURVNUX0xPV0VSX0JPVU5EKTtcbiAgaWYgKGluZGV4IDwgMCkge1xuICAgIHJldHVybiAtMTtcbiAgfVxuXG4gIC8vIFdlIGhhdmUgZm91bmQgZWl0aGVyIHRoZSBleGFjdCBlbGVtZW50LCBvciB0aGUgbmV4dC1jbG9zZXN0IGVsZW1lbnQgdGhhblxuICAvLyB0aGUgb25lIHdlIGFyZSBzZWFyY2hpbmcgZm9yLiBIb3dldmVyLCB0aGVyZSBtYXkgYmUgbW9yZSB0aGFuIG9uZSBzdWNoXG4gIC8vIGVsZW1lbnQuIE1ha2Ugc3VyZSB3ZSBhbHdheXMgcmV0dXJuIHRoZSBzbWFsbGVzdCBvZiB0aGVzZS5cbiAgd2hpbGUgKGluZGV4IC0gMSA+PSAwKSB7XG4gICAgaWYgKGFDb21wYXJlKGFIYXlzdGFja1tpbmRleF0sIGFIYXlzdGFja1tpbmRleCAtIDFdLCB0cnVlKSAhPT0gMCkge1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIC0taW5kZXg7XG4gIH1cblxuICByZXR1cm4gaW5kZXg7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9saWIvYmluYXJ5LXNlYXJjaC5qc1xuLy8gbW9kdWxlIGlkID0gOFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIvKiAtKi0gTW9kZToganM7IGpzLWluZGVudC1sZXZlbDogMjsgLSotICovXG4vKlxuICogQ29weXJpZ2h0IDIwMTEgTW96aWxsYSBGb3VuZGF0aW9uIGFuZCBjb250cmlidXRvcnNcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBOZXcgQlNEIGxpY2Vuc2UuIFNlZSBMSUNFTlNFIG9yOlxuICogaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL0JTRC0zLUNsYXVzZVxuICovXG5cbi8vIEl0IHR1cm5zIG91dCB0aGF0IHNvbWUgKG1vc3Q/KSBKYXZhU2NyaXB0IGVuZ2luZXMgZG9uJ3Qgc2VsZi1ob3N0XG4vLyBgQXJyYXkucHJvdG90eXBlLnNvcnRgLiBUaGlzIG1ha2VzIHNlbnNlIGJlY2F1c2UgQysrIHdpbGwgbGlrZWx5IHJlbWFpblxuLy8gZmFzdGVyIHRoYW4gSlMgd2hlbiBkb2luZyByYXcgQ1BVLWludGVuc2l2ZSBzb3J0aW5nLiBIb3dldmVyLCB3aGVuIHVzaW5nIGFcbi8vIGN1c3RvbSBjb21wYXJhdG9yIGZ1bmN0aW9uLCBjYWxsaW5nIGJhY2sgYW5kIGZvcnRoIGJldHdlZW4gdGhlIFZNJ3MgQysrIGFuZFxuLy8gSklUJ2QgSlMgaXMgcmF0aGVyIHNsb3cgKmFuZCogbG9zZXMgSklUIHR5cGUgaW5mb3JtYXRpb24sIHJlc3VsdGluZyBpblxuLy8gd29yc2UgZ2VuZXJhdGVkIGNvZGUgZm9yIHRoZSBjb21wYXJhdG9yIGZ1bmN0aW9uIHRoYW4gd291bGQgYmUgb3B0aW1hbC4gSW5cbi8vIGZhY3QsIHdoZW4gc29ydGluZyB3aXRoIGEgY29tcGFyYXRvciwgdGhlc2UgY29zdHMgb3V0d2VpZ2ggdGhlIGJlbmVmaXRzIG9mXG4vLyBzb3J0aW5nIGluIEMrKy4gQnkgdXNpbmcgb3VyIG93biBKUy1pbXBsZW1lbnRlZCBRdWljayBTb3J0IChiZWxvdyksIHdlIGdldFxuLy8gYSB+MzUwMG1zIG1lYW4gc3BlZWQtdXAgaW4gYGJlbmNoL2JlbmNoLmh0bWxgLlxuXG4vKipcbiAqIFN3YXAgdGhlIGVsZW1lbnRzIGluZGV4ZWQgYnkgYHhgIGFuZCBgeWAgaW4gdGhlIGFycmF5IGBhcnlgLlxuICpcbiAqIEBwYXJhbSB7QXJyYXl9IGFyeVxuICogICAgICAgIFRoZSBhcnJheS5cbiAqIEBwYXJhbSB7TnVtYmVyfSB4XG4gKiAgICAgICAgVGhlIGluZGV4IG9mIHRoZSBmaXJzdCBpdGVtLlxuICogQHBhcmFtIHtOdW1iZXJ9IHlcbiAqICAgICAgICBUaGUgaW5kZXggb2YgdGhlIHNlY29uZCBpdGVtLlxuICovXG5mdW5jdGlvbiBzd2FwKGFyeSwgeCwgeSkge1xuICB2YXIgdGVtcCA9IGFyeVt4XTtcbiAgYXJ5W3hdID0gYXJ5W3ldO1xuICBhcnlbeV0gPSB0ZW1wO1xufVxuXG4vKipcbiAqIFJldHVybnMgYSByYW5kb20gaW50ZWdlciB3aXRoaW4gdGhlIHJhbmdlIGBsb3cgLi4gaGlnaGAgaW5jbHVzaXZlLlxuICpcbiAqIEBwYXJhbSB7TnVtYmVyfSBsb3dcbiAqICAgICAgICBUaGUgbG93ZXIgYm91bmQgb24gdGhlIHJhbmdlLlxuICogQHBhcmFtIHtOdW1iZXJ9IGhpZ2hcbiAqICAgICAgICBUaGUgdXBwZXIgYm91bmQgb24gdGhlIHJhbmdlLlxuICovXG5mdW5jdGlvbiByYW5kb21JbnRJblJhbmdlKGxvdywgaGlnaCkge1xuICByZXR1cm4gTWF0aC5yb3VuZChsb3cgKyAoTWF0aC5yYW5kb20oKSAqIChoaWdoIC0gbG93KSkpO1xufVxuXG4vKipcbiAqIFRoZSBRdWljayBTb3J0IGFsZ29yaXRobS5cbiAqXG4gKiBAcGFyYW0ge0FycmF5fSBhcnlcbiAqICAgICAgICBBbiBhcnJheSB0byBzb3J0LlxuICogQHBhcmFtIHtmdW5jdGlvbn0gY29tcGFyYXRvclxuICogICAgICAgIEZ1bmN0aW9uIHRvIHVzZSB0byBjb21wYXJlIHR3byBpdGVtcy5cbiAqIEBwYXJhbSB7TnVtYmVyfSBwXG4gKiAgICAgICAgU3RhcnQgaW5kZXggb2YgdGhlIGFycmF5XG4gKiBAcGFyYW0ge051bWJlcn0gclxuICogICAgICAgIEVuZCBpbmRleCBvZiB0aGUgYXJyYXlcbiAqL1xuZnVuY3Rpb24gZG9RdWlja1NvcnQoYXJ5LCBjb21wYXJhdG9yLCBwLCByKSB7XG4gIC8vIElmIG91ciBsb3dlciBib3VuZCBpcyBsZXNzIHRoYW4gb3VyIHVwcGVyIGJvdW5kLCB3ZSAoMSkgcGFydGl0aW9uIHRoZVxuICAvLyBhcnJheSBpbnRvIHR3byBwaWVjZXMgYW5kICgyKSByZWN1cnNlIG9uIGVhY2ggaGFsZi4gSWYgaXQgaXMgbm90LCB0aGlzIGlzXG4gIC8vIHRoZSBlbXB0eSBhcnJheSBhbmQgb3VyIGJhc2UgY2FzZS5cblxuICBpZiAocCA8IHIpIHtcbiAgICAvLyAoMSkgUGFydGl0aW9uaW5nLlxuICAgIC8vXG4gICAgLy8gVGhlIHBhcnRpdGlvbmluZyBjaG9vc2VzIGEgcGl2b3QgYmV0d2VlbiBgcGAgYW5kIGByYCBhbmQgbW92ZXMgYWxsXG4gICAgLy8gZWxlbWVudHMgdGhhdCBhcmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIHRoZSBwaXZvdCB0byB0aGUgYmVmb3JlIGl0LCBhbmRcbiAgICAvLyBhbGwgdGhlIGVsZW1lbnRzIHRoYXQgYXJlIGdyZWF0ZXIgdGhhbiBpdCBhZnRlciBpdC4gVGhlIGVmZmVjdCBpcyB0aGF0XG4gICAgLy8gb25jZSBwYXJ0aXRpb24gaXMgZG9uZSwgdGhlIHBpdm90IGlzIGluIHRoZSBleGFjdCBwbGFjZSBpdCB3aWxsIGJlIHdoZW5cbiAgICAvLyB0aGUgYXJyYXkgaXMgcHV0IGluIHNvcnRlZCBvcmRlciwgYW5kIGl0IHdpbGwgbm90IG5lZWQgdG8gYmUgbW92ZWRcbiAgICAvLyBhZ2Fpbi4gVGhpcyBydW5zIGluIE8obikgdGltZS5cblxuICAgIC8vIEFsd2F5cyBjaG9vc2UgYSByYW5kb20gcGl2b3Qgc28gdGhhdCBhbiBpbnB1dCBhcnJheSB3aGljaCBpcyByZXZlcnNlXG4gICAgLy8gc29ydGVkIGRvZXMgbm90IGNhdXNlIE8obl4yKSBydW5uaW5nIHRpbWUuXG4gICAgdmFyIHBpdm90SW5kZXggPSByYW5kb21JbnRJblJhbmdlKHAsIHIpO1xuICAgIHZhciBpID0gcCAtIDE7XG5cbiAgICBzd2FwKGFyeSwgcGl2b3RJbmRleCwgcik7XG4gICAgdmFyIHBpdm90ID0gYXJ5W3JdO1xuXG4gICAgLy8gSW1tZWRpYXRlbHkgYWZ0ZXIgYGpgIGlzIGluY3JlbWVudGVkIGluIHRoaXMgbG9vcCwgdGhlIGZvbGxvd2luZyBob2xkXG4gICAgLy8gdHJ1ZTpcbiAgICAvL1xuICAgIC8vICAgKiBFdmVyeSBlbGVtZW50IGluIGBhcnlbcCAuLiBpXWAgaXMgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIHRoZSBwaXZvdC5cbiAgICAvL1xuICAgIC8vICAgKiBFdmVyeSBlbGVtZW50IGluIGBhcnlbaSsxIC4uIGotMV1gIGlzIGdyZWF0ZXIgdGhhbiB0aGUgcGl2b3QuXG4gICAgZm9yICh2YXIgaiA9IHA7IGogPCByOyBqKyspIHtcbiAgICAgIGlmIChjb21wYXJhdG9yKGFyeVtqXSwgcGl2b3QpIDw9IDApIHtcbiAgICAgICAgaSArPSAxO1xuICAgICAgICBzd2FwKGFyeSwgaSwgaik7XG4gICAgICB9XG4gICAgfVxuXG4gICAgc3dhcChhcnksIGkgKyAxLCBqKTtcbiAgICB2YXIgcSA9IGkgKyAxO1xuXG4gICAgLy8gKDIpIFJlY3Vyc2Ugb24gZWFjaCBoYWxmLlxuXG4gICAgZG9RdWlja1NvcnQoYXJ5LCBjb21wYXJhdG9yLCBwLCBxIC0gMSk7XG4gICAgZG9RdWlja1NvcnQoYXJ5LCBjb21wYXJhdG9yLCBxICsgMSwgcik7XG4gIH1cbn1cblxuLyoqXG4gKiBTb3J0IHRoZSBnaXZlbiBhcnJheSBpbi1wbGFjZSB3aXRoIHRoZSBnaXZlbiBjb21wYXJhdG9yIGZ1bmN0aW9uLlxuICpcbiAqIEBwYXJhbSB7QXJyYXl9IGFyeVxuICogICAgICAgIEFuIGFycmF5IHRvIHNvcnQuXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBjb21wYXJhdG9yXG4gKiAgICAgICAgRnVuY3Rpb24gdG8gdXNlIHRvIGNvbXBhcmUgdHdvIGl0ZW1zLlxuICovXG5leHBvcnRzLnF1aWNrU29ydCA9IGZ1bmN0aW9uIChhcnksIGNvbXBhcmF0b3IpIHtcbiAgZG9RdWlja1NvcnQoYXJ5LCBjb21wYXJhdG9yLCAwLCBhcnkubGVuZ3RoIC0gMSk7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9saWIvcXVpY2stc29ydC5qc1xuLy8gbW9kdWxlIGlkID0gOVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIvKiAtKi0gTW9kZToganM7IGpzLWluZGVudC1sZXZlbDogMjsgLSotICovXG4vKlxuICogQ29weXJpZ2h0IDIwMTEgTW96aWxsYSBGb3VuZGF0aW9uIGFuZCBjb250cmlidXRvcnNcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBOZXcgQlNEIGxpY2Vuc2UuIFNlZSBMSUNFTlNFIG9yOlxuICogaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL0JTRC0zLUNsYXVzZVxuICovXG5cbnZhciBTb3VyY2VNYXBHZW5lcmF0b3IgPSByZXF1aXJlKCcuL3NvdXJjZS1tYXAtZ2VuZXJhdG9yJykuU291cmNlTWFwR2VuZXJhdG9yO1xudmFyIHV0aWwgPSByZXF1aXJlKCcuL3V0aWwnKTtcblxuLy8gTWF0Y2hlcyBhIFdpbmRvd3Mtc3R5bGUgYFxcclxcbmAgbmV3bGluZSBvciBhIGBcXG5gIG5ld2xpbmUgdXNlZCBieSBhbGwgb3RoZXJcbi8vIG9wZXJhdGluZyBzeXN0ZW1zIHRoZXNlIGRheXMgKGNhcHR1cmluZyB0aGUgcmVzdWx0KS5cbnZhciBSRUdFWF9ORVdMSU5FID0gLyhcXHI/XFxuKS87XG5cbi8vIE5ld2xpbmUgY2hhcmFjdGVyIGNvZGUgZm9yIGNoYXJDb2RlQXQoKSBjb21wYXJpc29uc1xudmFyIE5FV0xJTkVfQ09ERSA9IDEwO1xuXG4vLyBQcml2YXRlIHN5bWJvbCBmb3IgaWRlbnRpZnlpbmcgYFNvdXJjZU5vZGVgcyB3aGVuIG11bHRpcGxlIHZlcnNpb25zIG9mXG4vLyB0aGUgc291cmNlLW1hcCBsaWJyYXJ5IGFyZSBsb2FkZWQuIFRoaXMgTVVTVCBOT1QgQ0hBTkdFIGFjcm9zc1xuLy8gdmVyc2lvbnMhXG52YXIgaXNTb3VyY2VOb2RlID0gXCIkJCRpc1NvdXJjZU5vZGUkJCRcIjtcblxuLyoqXG4gKiBTb3VyY2VOb2RlcyBwcm92aWRlIGEgd2F5IHRvIGFic3RyYWN0IG92ZXIgaW50ZXJwb2xhdGluZy9jb25jYXRlbmF0aW5nXG4gKiBzbmlwcGV0cyBvZiBnZW5lcmF0ZWQgSmF2YVNjcmlwdCBzb3VyY2UgY29kZSB3aGlsZSBtYWludGFpbmluZyB0aGUgbGluZSBhbmRcbiAqIGNvbHVtbiBpbmZvcm1hdGlvbiBhc3NvY2lhdGVkIHdpdGggdGhlIG9yaWdpbmFsIHNvdXJjZSBjb2RlLlxuICpcbiAqIEBwYXJhbSBhTGluZSBUaGUgb3JpZ2luYWwgbGluZSBudW1iZXIuXG4gKiBAcGFyYW0gYUNvbHVtbiBUaGUgb3JpZ2luYWwgY29sdW1uIG51bWJlci5cbiAqIEBwYXJhbSBhU291cmNlIFRoZSBvcmlnaW5hbCBzb3VyY2UncyBmaWxlbmFtZS5cbiAqIEBwYXJhbSBhQ2h1bmtzIE9wdGlvbmFsLiBBbiBhcnJheSBvZiBzdHJpbmdzIHdoaWNoIGFyZSBzbmlwcGV0cyBvZlxuICogICAgICAgIGdlbmVyYXRlZCBKUywgb3Igb3RoZXIgU291cmNlTm9kZXMuXG4gKiBAcGFyYW0gYU5hbWUgVGhlIG9yaWdpbmFsIGlkZW50aWZpZXIuXG4gKi9cbmZ1bmN0aW9uIFNvdXJjZU5vZGUoYUxpbmUsIGFDb2x1bW4sIGFTb3VyY2UsIGFDaHVua3MsIGFOYW1lKSB7XG4gIHRoaXMuY2hpbGRyZW4gPSBbXTtcbiAgdGhpcy5zb3VyY2VDb250ZW50cyA9IHt9O1xuICB0aGlzLmxpbmUgPSBhTGluZSA9PSBudWxsID8gbnVsbCA6IGFMaW5lO1xuICB0aGlzLmNvbHVtbiA9IGFDb2x1bW4gPT0gbnVsbCA/IG51bGwgOiBhQ29sdW1uO1xuICB0aGlzLnNvdXJjZSA9IGFTb3VyY2UgPT0gbnVsbCA/IG51bGwgOiBhU291cmNlO1xuICB0aGlzLm5hbWUgPSBhTmFtZSA9PSBudWxsID8gbnVsbCA6IGFOYW1lO1xuICB0aGlzW2lzU291cmNlTm9kZV0gPSB0cnVlO1xuICBpZiAoYUNodW5rcyAhPSBudWxsKSB0aGlzLmFkZChhQ2h1bmtzKTtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgU291cmNlTm9kZSBmcm9tIGdlbmVyYXRlZCBjb2RlIGFuZCBhIFNvdXJjZU1hcENvbnN1bWVyLlxuICpcbiAqIEBwYXJhbSBhR2VuZXJhdGVkQ29kZSBUaGUgZ2VuZXJhdGVkIGNvZGVcbiAqIEBwYXJhbSBhU291cmNlTWFwQ29uc3VtZXIgVGhlIFNvdXJjZU1hcCBmb3IgdGhlIGdlbmVyYXRlZCBjb2RlXG4gKiBAcGFyYW0gYVJlbGF0aXZlUGF0aCBPcHRpb25hbC4gVGhlIHBhdGggdGhhdCByZWxhdGl2ZSBzb3VyY2VzIGluIHRoZVxuICogICAgICAgIFNvdXJjZU1hcENvbnN1bWVyIHNob3VsZCBiZSByZWxhdGl2ZSB0by5cbiAqL1xuU291cmNlTm9kZS5mcm9tU3RyaW5nV2l0aFNvdXJjZU1hcCA9XG4gIGZ1bmN0aW9uIFNvdXJjZU5vZGVfZnJvbVN0cmluZ1dpdGhTb3VyY2VNYXAoYUdlbmVyYXRlZENvZGUsIGFTb3VyY2VNYXBDb25zdW1lciwgYVJlbGF0aXZlUGF0aCkge1xuICAgIC8vIFRoZSBTb3VyY2VOb2RlIHdlIHdhbnQgdG8gZmlsbCB3aXRoIHRoZSBnZW5lcmF0ZWQgY29kZVxuICAgIC8vIGFuZCB0aGUgU291cmNlTWFwXG4gICAgdmFyIG5vZGUgPSBuZXcgU291cmNlTm9kZSgpO1xuXG4gICAgLy8gQWxsIGV2ZW4gaW5kaWNlcyBvZiB0aGlzIGFycmF5IGFyZSBvbmUgbGluZSBvZiB0aGUgZ2VuZXJhdGVkIGNvZGUsXG4gICAgLy8gd2hpbGUgYWxsIG9kZCBpbmRpY2VzIGFyZSB0aGUgbmV3bGluZXMgYmV0d2VlbiB0d28gYWRqYWNlbnQgbGluZXNcbiAgICAvLyAoc2luY2UgYFJFR0VYX05FV0xJTkVgIGNhcHR1cmVzIGl0cyBtYXRjaCkuXG4gICAgLy8gUHJvY2Vzc2VkIGZyYWdtZW50cyBhcmUgYWNjZXNzZWQgYnkgY2FsbGluZyBgc2hpZnROZXh0TGluZWAuXG4gICAgdmFyIHJlbWFpbmluZ0xpbmVzID0gYUdlbmVyYXRlZENvZGUuc3BsaXQoUkVHRVhfTkVXTElORSk7XG4gICAgdmFyIHJlbWFpbmluZ0xpbmVzSW5kZXggPSAwO1xuICAgIHZhciBzaGlmdE5leHRMaW5lID0gZnVuY3Rpb24oKSB7XG4gICAgICB2YXIgbGluZUNvbnRlbnRzID0gZ2V0TmV4dExpbmUoKTtcbiAgICAgIC8vIFRoZSBsYXN0IGxpbmUgb2YgYSBmaWxlIG1pZ2h0IG5vdCBoYXZlIGEgbmV3bGluZS5cbiAgICAgIHZhciBuZXdMaW5lID0gZ2V0TmV4dExpbmUoKSB8fCBcIlwiO1xuICAgICAgcmV0dXJuIGxpbmVDb250ZW50cyArIG5ld0xpbmU7XG5cbiAgICAgIGZ1bmN0aW9uIGdldE5leHRMaW5lKCkge1xuICAgICAgICByZXR1cm4gcmVtYWluaW5nTGluZXNJbmRleCA8IHJlbWFpbmluZ0xpbmVzLmxlbmd0aCA/XG4gICAgICAgICAgICByZW1haW5pbmdMaW5lc1tyZW1haW5pbmdMaW5lc0luZGV4KytdIDogdW5kZWZpbmVkO1xuICAgICAgfVxuICAgIH07XG5cbiAgICAvLyBXZSBuZWVkIHRvIHJlbWVtYmVyIHRoZSBwb3NpdGlvbiBvZiBcInJlbWFpbmluZ0xpbmVzXCJcbiAgICB2YXIgbGFzdEdlbmVyYXRlZExpbmUgPSAxLCBsYXN0R2VuZXJhdGVkQ29sdW1uID0gMDtcblxuICAgIC8vIFRoZSBnZW5lcmF0ZSBTb3VyY2VOb2RlcyB3ZSBuZWVkIGEgY29kZSByYW5nZS5cbiAgICAvLyBUbyBleHRyYWN0IGl0IGN1cnJlbnQgYW5kIGxhc3QgbWFwcGluZyBpcyB1c2VkLlxuICAgIC8vIEhlcmUgd2Ugc3RvcmUgdGhlIGxhc3QgbWFwcGluZy5cbiAgICB2YXIgbGFzdE1hcHBpbmcgPSBudWxsO1xuXG4gICAgYVNvdXJjZU1hcENvbnN1bWVyLmVhY2hNYXBwaW5nKGZ1bmN0aW9uIChtYXBwaW5nKSB7XG4gICAgICBpZiAobGFzdE1hcHBpbmcgIT09IG51bGwpIHtcbiAgICAgICAgLy8gV2UgYWRkIHRoZSBjb2RlIGZyb20gXCJsYXN0TWFwcGluZ1wiIHRvIFwibWFwcGluZ1wiOlxuICAgICAgICAvLyBGaXJzdCBjaGVjayBpZiB0aGVyZSBpcyBhIG5ldyBsaW5lIGluIGJldHdlZW4uXG4gICAgICAgIGlmIChsYXN0R2VuZXJhdGVkTGluZSA8IG1hcHBpbmcuZ2VuZXJhdGVkTGluZSkge1xuICAgICAgICAgIC8vIEFzc29jaWF0ZSBmaXJzdCBsaW5lIHdpdGggXCJsYXN0TWFwcGluZ1wiXG4gICAgICAgICAgYWRkTWFwcGluZ1dpdGhDb2RlKGxhc3RNYXBwaW5nLCBzaGlmdE5leHRMaW5lKCkpO1xuICAgICAgICAgIGxhc3RHZW5lcmF0ZWRMaW5lKys7XG4gICAgICAgICAgbGFzdEdlbmVyYXRlZENvbHVtbiA9IDA7XG4gICAgICAgICAgLy8gVGhlIHJlbWFpbmluZyBjb2RlIGlzIGFkZGVkIHdpdGhvdXQgbWFwcGluZ1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIFRoZXJlIGlzIG5vIG5ldyBsaW5lIGluIGJldHdlZW4uXG4gICAgICAgICAgLy8gQXNzb2NpYXRlIHRoZSBjb2RlIGJldHdlZW4gXCJsYXN0R2VuZXJhdGVkQ29sdW1uXCIgYW5kXG4gICAgICAgICAgLy8gXCJtYXBwaW5nLmdlbmVyYXRlZENvbHVtblwiIHdpdGggXCJsYXN0TWFwcGluZ1wiXG4gICAgICAgICAgdmFyIG5leHRMaW5lID0gcmVtYWluaW5nTGluZXNbcmVtYWluaW5nTGluZXNJbmRleF0gfHwgJyc7XG4gICAgICAgICAgdmFyIGNvZGUgPSBuZXh0TGluZS5zdWJzdHIoMCwgbWFwcGluZy5nZW5lcmF0ZWRDb2x1bW4gLVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3RHZW5lcmF0ZWRDb2x1bW4pO1xuICAgICAgICAgIHJlbWFpbmluZ0xpbmVzW3JlbWFpbmluZ0xpbmVzSW5kZXhdID0gbmV4dExpbmUuc3Vic3RyKG1hcHBpbmcuZ2VuZXJhdGVkQ29sdW1uIC1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXN0R2VuZXJhdGVkQ29sdW1uKTtcbiAgICAgICAgICBsYXN0R2VuZXJhdGVkQ29sdW1uID0gbWFwcGluZy5nZW5lcmF0ZWRDb2x1bW47XG4gICAgICAgICAgYWRkTWFwcGluZ1dpdGhDb2RlKGxhc3RNYXBwaW5nLCBjb2RlKTtcbiAgICAgICAgICAvLyBObyBtb3JlIHJlbWFpbmluZyBjb2RlLCBjb250aW51ZVxuICAgICAgICAgIGxhc3RNYXBwaW5nID0gbWFwcGluZztcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIC8vIFdlIGFkZCB0aGUgZ2VuZXJhdGVkIGNvZGUgdW50aWwgdGhlIGZpcnN0IG1hcHBpbmdcbiAgICAgIC8vIHRvIHRoZSBTb3VyY2VOb2RlIHdpdGhvdXQgYW55IG1hcHBpbmcuXG4gICAgICAvLyBFYWNoIGxpbmUgaXMgYWRkZWQgYXMgc2VwYXJhdGUgc3RyaW5nLlxuICAgICAgd2hpbGUgKGxhc3RHZW5lcmF0ZWRMaW5lIDwgbWFwcGluZy5nZW5lcmF0ZWRMaW5lKSB7XG4gICAgICAgIG5vZGUuYWRkKHNoaWZ0TmV4dExpbmUoKSk7XG4gICAgICAgIGxhc3RHZW5lcmF0ZWRMaW5lKys7XG4gICAgICB9XG4gICAgICBpZiAobGFzdEdlbmVyYXRlZENvbHVtbiA8IG1hcHBpbmcuZ2VuZXJhdGVkQ29sdW1uKSB7XG4gICAgICAgIHZhciBuZXh0TGluZSA9IHJlbWFpbmluZ0xpbmVzW3JlbWFpbmluZ0xpbmVzSW5kZXhdIHx8ICcnO1xuICAgICAgICBub2RlLmFkZChuZXh0TGluZS5zdWJzdHIoMCwgbWFwcGluZy5nZW5lcmF0ZWRDb2x1bW4pKTtcbiAgICAgICAgcmVtYWluaW5nTGluZXNbcmVtYWluaW5nTGluZXNJbmRleF0gPSBuZXh0TGluZS5zdWJzdHIobWFwcGluZy5nZW5lcmF0ZWRDb2x1bW4pO1xuICAgICAgICBsYXN0R2VuZXJhdGVkQ29sdW1uID0gbWFwcGluZy5nZW5lcmF0ZWRDb2x1bW47XG4gICAgICB9XG4gICAgICBsYXN0TWFwcGluZyA9IG1hcHBpbmc7XG4gICAgfSwgdGhpcyk7XG4gICAgLy8gV2UgaGF2ZSBwcm9jZXNzZWQgYWxsIG1hcHBpbmdzLlxuICAgIGlmIChyZW1haW5pbmdMaW5lc0luZGV4IDwgcmVtYWluaW5nTGluZXMubGVuZ3RoKSB7XG4gICAgICBpZiAobGFzdE1hcHBpbmcpIHtcbiAgICAgICAgLy8gQXNzb2NpYXRlIHRoZSByZW1haW5pbmcgY29kZSBpbiB0aGUgY3VycmVudCBsaW5lIHdpdGggXCJsYXN0TWFwcGluZ1wiXG4gICAgICAgIGFkZE1hcHBpbmdXaXRoQ29kZShsYXN0TWFwcGluZywgc2hpZnROZXh0TGluZSgpKTtcbiAgICAgIH1cbiAgICAgIC8vIGFuZCBhZGQgdGhlIHJlbWFpbmluZyBsaW5lcyB3aXRob3V0IGFueSBtYXBwaW5nXG4gICAgICBub2RlLmFkZChyZW1haW5pbmdMaW5lcy5zcGxpY2UocmVtYWluaW5nTGluZXNJbmRleCkuam9pbihcIlwiKSk7XG4gICAgfVxuXG4gICAgLy8gQ29weSBzb3VyY2VzQ29udGVudCBpbnRvIFNvdXJjZU5vZGVcbiAgICBhU291cmNlTWFwQ29uc3VtZXIuc291cmNlcy5mb3JFYWNoKGZ1bmN0aW9uIChzb3VyY2VGaWxlKSB7XG4gICAgICB2YXIgY29udGVudCA9IGFTb3VyY2VNYXBDb25zdW1lci5zb3VyY2VDb250ZW50Rm9yKHNvdXJjZUZpbGUpO1xuICAgICAgaWYgKGNvbnRlbnQgIT0gbnVsbCkge1xuICAgICAgICBpZiAoYVJlbGF0aXZlUGF0aCAhPSBudWxsKSB7XG4gICAgICAgICAgc291cmNlRmlsZSA9IHV0aWwuam9pbihhUmVsYXRpdmVQYXRoLCBzb3VyY2VGaWxlKTtcbiAgICAgICAgfVxuICAgICAgICBub2RlLnNldFNvdXJjZUNvbnRlbnQoc291cmNlRmlsZSwgY29udGVudCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gbm9kZTtcblxuICAgIGZ1bmN0aW9uIGFkZE1hcHBpbmdXaXRoQ29kZShtYXBwaW5nLCBjb2RlKSB7XG4gICAgICBpZiAobWFwcGluZyA9PT0gbnVsbCB8fCBtYXBwaW5nLnNvdXJjZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIG5vZGUuYWRkKGNvZGUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIHNvdXJjZSA9IGFSZWxhdGl2ZVBhdGhcbiAgICAgICAgICA/IHV0aWwuam9pbihhUmVsYXRpdmVQYXRoLCBtYXBwaW5nLnNvdXJjZSlcbiAgICAgICAgICA6IG1hcHBpbmcuc291cmNlO1xuICAgICAgICBub2RlLmFkZChuZXcgU291cmNlTm9kZShtYXBwaW5nLm9yaWdpbmFsTGluZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFwcGluZy5vcmlnaW5hbENvbHVtbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXBwaW5nLm5hbWUpKTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbi8qKlxuICogQWRkIGEgY2h1bmsgb2YgZ2VuZXJhdGVkIEpTIHRvIHRoaXMgc291cmNlIG5vZGUuXG4gKlxuICogQHBhcmFtIGFDaHVuayBBIHN0cmluZyBzbmlwcGV0IG9mIGdlbmVyYXRlZCBKUyBjb2RlLCBhbm90aGVyIGluc3RhbmNlIG9mXG4gKiAgICAgICAgU291cmNlTm9kZSwgb3IgYW4gYXJyYXkgd2hlcmUgZWFjaCBtZW1iZXIgaXMgb25lIG9mIHRob3NlIHRoaW5ncy5cbiAqL1xuU291cmNlTm9kZS5wcm90b3R5cGUuYWRkID0gZnVuY3Rpb24gU291cmNlTm9kZV9hZGQoYUNodW5rKSB7XG4gIGlmIChBcnJheS5pc0FycmF5KGFDaHVuaykpIHtcbiAgICBhQ2h1bmsuZm9yRWFjaChmdW5jdGlvbiAoY2h1bmspIHtcbiAgICAgIHRoaXMuYWRkKGNodW5rKTtcbiAgICB9LCB0aGlzKTtcbiAgfVxuICBlbHNlIGlmIChhQ2h1bmtbaXNTb3VyY2VOb2RlXSB8fCB0eXBlb2YgYUNodW5rID09PSBcInN0cmluZ1wiKSB7XG4gICAgaWYgKGFDaHVuaykge1xuICAgICAgdGhpcy5jaGlsZHJlbi5wdXNoKGFDaHVuayk7XG4gICAgfVxuICB9XG4gIGVsc2Uge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXG4gICAgICBcIkV4cGVjdGVkIGEgU291cmNlTm9kZSwgc3RyaW5nLCBvciBhbiBhcnJheSBvZiBTb3VyY2VOb2RlcyBhbmQgc3RyaW5ncy4gR290IFwiICsgYUNodW5rXG4gICAgKTtcbiAgfVxuICByZXR1cm4gdGhpcztcbn07XG5cbi8qKlxuICogQWRkIGEgY2h1bmsgb2YgZ2VuZXJhdGVkIEpTIHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhpcyBzb3VyY2Ugbm9kZS5cbiAqXG4gKiBAcGFyYW0gYUNodW5rIEEgc3RyaW5nIHNuaXBwZXQgb2YgZ2VuZXJhdGVkIEpTIGNvZGUsIGFub3RoZXIgaW5zdGFuY2Ugb2ZcbiAqICAgICAgICBTb3VyY2VOb2RlLCBvciBhbiBhcnJheSB3aGVyZSBlYWNoIG1lbWJlciBpcyBvbmUgb2YgdGhvc2UgdGhpbmdzLlxuICovXG5Tb3VyY2VOb2RlLnByb3RvdHlwZS5wcmVwZW5kID0gZnVuY3Rpb24gU291cmNlTm9kZV9wcmVwZW5kKGFDaHVuaykge1xuICBpZiAoQXJyYXkuaXNBcnJheShhQ2h1bmspKSB7XG4gICAgZm9yICh2YXIgaSA9IGFDaHVuay5sZW5ndGgtMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIHRoaXMucHJlcGVuZChhQ2h1bmtbaV0pO1xuICAgIH1cbiAgfVxuICBlbHNlIGlmIChhQ2h1bmtbaXNTb3VyY2VOb2RlXSB8fCB0eXBlb2YgYUNodW5rID09PSBcInN0cmluZ1wiKSB7XG4gICAgdGhpcy5jaGlsZHJlbi51bnNoaWZ0KGFDaHVuayk7XG4gIH1cbiAgZWxzZSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcbiAgICAgIFwiRXhwZWN0ZWQgYSBTb3VyY2VOb2RlLCBzdHJpbmcsIG9yIGFuIGFycmF5IG9mIFNvdXJjZU5vZGVzIGFuZCBzdHJpbmdzLiBHb3QgXCIgKyBhQ2h1bmtcbiAgICApO1xuICB9XG4gIHJldHVybiB0aGlzO1xufTtcblxuLyoqXG4gKiBXYWxrIG92ZXIgdGhlIHRyZWUgb2YgSlMgc25pcHBldHMgaW4gdGhpcyBub2RlIGFuZCBpdHMgY2hpbGRyZW4uIFRoZVxuICogd2Fsa2luZyBmdW5jdGlvbiBpcyBjYWxsZWQgb25jZSBmb3IgZWFjaCBzbmlwcGV0IG9mIEpTIGFuZCBpcyBwYXNzZWQgdGhhdFxuICogc25pcHBldCBhbmQgdGhlIGl0cyBvcmlnaW5hbCBhc3NvY2lhdGVkIHNvdXJjZSdzIGxpbmUvY29sdW1uIGxvY2F0aW9uLlxuICpcbiAqIEBwYXJhbSBhRm4gVGhlIHRyYXZlcnNhbCBmdW5jdGlvbi5cbiAqL1xuU291cmNlTm9kZS5wcm90b3R5cGUud2FsayA9IGZ1bmN0aW9uIFNvdXJjZU5vZGVfd2FsayhhRm4pIHtcbiAgdmFyIGNodW5rO1xuICBmb3IgKHZhciBpID0gMCwgbGVuID0gdGhpcy5jaGlsZHJlbi5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuICAgIGNodW5rID0gdGhpcy5jaGlsZHJlbltpXTtcbiAgICBpZiAoY2h1bmtbaXNTb3VyY2VOb2RlXSkge1xuICAgICAgY2h1bmsud2FsayhhRm4pO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGlmIChjaHVuayAhPT0gJycpIHtcbiAgICAgICAgYUZuKGNodW5rLCB7IHNvdXJjZTogdGhpcy5zb3VyY2UsXG4gICAgICAgICAgICAgICAgICAgICBsaW5lOiB0aGlzLmxpbmUsXG4gICAgICAgICAgICAgICAgICAgICBjb2x1bW46IHRoaXMuY29sdW1uLFxuICAgICAgICAgICAgICAgICAgICAgbmFtZTogdGhpcy5uYW1lIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxufTtcblxuLyoqXG4gKiBMaWtlIGBTdHJpbmcucHJvdG90eXBlLmpvaW5gIGV4Y2VwdCBmb3IgU291cmNlTm9kZXMuIEluc2VydHMgYGFTdHJgIGJldHdlZW5cbiAqIGVhY2ggb2YgYHRoaXMuY2hpbGRyZW5gLlxuICpcbiAqIEBwYXJhbSBhU2VwIFRoZSBzZXBhcmF0b3IuXG4gKi9cblNvdXJjZU5vZGUucHJvdG90eXBlLmpvaW4gPSBmdW5jdGlvbiBTb3VyY2VOb2RlX2pvaW4oYVNlcCkge1xuICB2YXIgbmV3Q2hpbGRyZW47XG4gIHZhciBpO1xuICB2YXIgbGVuID0gdGhpcy5jaGlsZHJlbi5sZW5ndGg7XG4gIGlmIChsZW4gPiAwKSB7XG4gICAgbmV3Q2hpbGRyZW4gPSBbXTtcbiAgICBmb3IgKGkgPSAwOyBpIDwgbGVuLTE7IGkrKykge1xuICAgICAgbmV3Q2hpbGRyZW4ucHVzaCh0aGlzLmNoaWxkcmVuW2ldKTtcbiAgICAgIG5ld0NoaWxkcmVuLnB1c2goYVNlcCk7XG4gICAgfVxuICAgIG5ld0NoaWxkcmVuLnB1c2godGhpcy5jaGlsZHJlbltpXSk7XG4gICAgdGhpcy5jaGlsZHJlbiA9IG5ld0NoaWxkcmVuO1xuICB9XG4gIHJldHVybiB0aGlzO1xufTtcblxuLyoqXG4gKiBDYWxsIFN0cmluZy5wcm90b3R5cGUucmVwbGFjZSBvbiB0aGUgdmVyeSByaWdodC1tb3N0IHNvdXJjZSBzbmlwcGV0LiBVc2VmdWxcbiAqIGZvciB0cmltbWluZyB3aGl0ZXNwYWNlIGZyb20gdGhlIGVuZCBvZiBhIHNvdXJjZSBub2RlLCBldGMuXG4gKlxuICogQHBhcmFtIGFQYXR0ZXJuIFRoZSBwYXR0ZXJuIHRvIHJlcGxhY2UuXG4gKiBAcGFyYW0gYVJlcGxhY2VtZW50IFRoZSB0aGluZyB0byByZXBsYWNlIHRoZSBwYXR0ZXJuIHdpdGguXG4gKi9cblNvdXJjZU5vZGUucHJvdG90eXBlLnJlcGxhY2VSaWdodCA9IGZ1bmN0aW9uIFNvdXJjZU5vZGVfcmVwbGFjZVJpZ2h0KGFQYXR0ZXJuLCBhUmVwbGFjZW1lbnQpIHtcbiAgdmFyIGxhc3RDaGlsZCA9IHRoaXMuY2hpbGRyZW5bdGhpcy5jaGlsZHJlbi5sZW5ndGggLSAxXTtcbiAgaWYgKGxhc3RDaGlsZFtpc1NvdXJjZU5vZGVdKSB7XG4gICAgbGFzdENoaWxkLnJlcGxhY2VSaWdodChhUGF0dGVybiwgYVJlcGxhY2VtZW50KTtcbiAgfVxuICBlbHNlIGlmICh0eXBlb2YgbGFzdENoaWxkID09PSAnc3RyaW5nJykge1xuICAgIHRoaXMuY2hpbGRyZW5bdGhpcy5jaGlsZHJlbi5sZW5ndGggLSAxXSA9IGxhc3RDaGlsZC5yZXBsYWNlKGFQYXR0ZXJuLCBhUmVwbGFjZW1lbnQpO1xuICB9XG4gIGVsc2Uge1xuICAgIHRoaXMuY2hpbGRyZW4ucHVzaCgnJy5yZXBsYWNlKGFQYXR0ZXJuLCBhUmVwbGFjZW1lbnQpKTtcbiAgfVxuICByZXR1cm4gdGhpcztcbn07XG5cbi8qKlxuICogU2V0IHRoZSBzb3VyY2UgY29udGVudCBmb3IgYSBzb3VyY2UgZmlsZS4gVGhpcyB3aWxsIGJlIGFkZGVkIHRvIHRoZSBTb3VyY2VNYXBHZW5lcmF0b3JcbiAqIGluIHRoZSBzb3VyY2VzQ29udGVudCBmaWVsZC5cbiAqXG4gKiBAcGFyYW0gYVNvdXJjZUZpbGUgVGhlIGZpbGVuYW1lIG9mIHRoZSBzb3VyY2UgZmlsZVxuICogQHBhcmFtIGFTb3VyY2VDb250ZW50IFRoZSBjb250ZW50IG9mIHRoZSBzb3VyY2UgZmlsZVxuICovXG5Tb3VyY2VOb2RlLnByb3RvdHlwZS5zZXRTb3VyY2VDb250ZW50ID1cbiAgZnVuY3Rpb24gU291cmNlTm9kZV9zZXRTb3VyY2VDb250ZW50KGFTb3VyY2VGaWxlLCBhU291cmNlQ29udGVudCkge1xuICAgIHRoaXMuc291cmNlQ29udGVudHNbdXRpbC50b1NldFN0cmluZyhhU291cmNlRmlsZSldID0gYVNvdXJjZUNvbnRlbnQ7XG4gIH07XG5cbi8qKlxuICogV2FsayBvdmVyIHRoZSB0cmVlIG9mIFNvdXJjZU5vZGVzLiBUaGUgd2Fsa2luZyBmdW5jdGlvbiBpcyBjYWxsZWQgZm9yIGVhY2hcbiAqIHNvdXJjZSBmaWxlIGNvbnRlbnQgYW5kIGlzIHBhc3NlZCB0aGUgZmlsZW5hbWUgYW5kIHNvdXJjZSBjb250ZW50LlxuICpcbiAqIEBwYXJhbSBhRm4gVGhlIHRyYXZlcnNhbCBmdW5jdGlvbi5cbiAqL1xuU291cmNlTm9kZS5wcm90b3R5cGUud2Fsa1NvdXJjZUNvbnRlbnRzID1cbiAgZnVuY3Rpb24gU291cmNlTm9kZV93YWxrU291cmNlQ29udGVudHMoYUZuKSB7XG4gICAgZm9yICh2YXIgaSA9IDAsIGxlbiA9IHRoaXMuY2hpbGRyZW4ubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgIGlmICh0aGlzLmNoaWxkcmVuW2ldW2lzU291cmNlTm9kZV0pIHtcbiAgICAgICAgdGhpcy5jaGlsZHJlbltpXS53YWxrU291cmNlQ29udGVudHMoYUZuKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgc291cmNlcyA9IE9iamVjdC5rZXlzKHRoaXMuc291cmNlQ29udGVudHMpO1xuICAgIGZvciAodmFyIGkgPSAwLCBsZW4gPSBzb3VyY2VzLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICBhRm4odXRpbC5mcm9tU2V0U3RyaW5nKHNvdXJjZXNbaV0pLCB0aGlzLnNvdXJjZUNvbnRlbnRzW3NvdXJjZXNbaV1dKTtcbiAgICB9XG4gIH07XG5cbi8qKlxuICogUmV0dXJuIHRoZSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBzb3VyY2Ugbm9kZS4gV2Fsa3Mgb3ZlciB0aGUgdHJlZVxuICogYW5kIGNvbmNhdGVuYXRlcyBhbGwgdGhlIHZhcmlvdXMgc25pcHBldHMgdG9nZXRoZXIgdG8gb25lIHN0cmluZy5cbiAqL1xuU291cmNlTm9kZS5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbiBTb3VyY2VOb2RlX3RvU3RyaW5nKCkge1xuICB2YXIgc3RyID0gXCJcIjtcbiAgdGhpcy53YWxrKGZ1bmN0aW9uIChjaHVuaykge1xuICAgIHN0ciArPSBjaHVuaztcbiAgfSk7XG4gIHJldHVybiBzdHI7XG59O1xuXG4vKipcbiAqIFJldHVybnMgdGhlIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIHNvdXJjZSBub2RlIGFsb25nIHdpdGggYSBzb3VyY2VcbiAqIG1hcC5cbiAqL1xuU291cmNlTm9kZS5wcm90b3R5cGUudG9TdHJpbmdXaXRoU291cmNlTWFwID0gZnVuY3Rpb24gU291cmNlTm9kZV90b1N0cmluZ1dpdGhTb3VyY2VNYXAoYUFyZ3MpIHtcbiAgdmFyIGdlbmVyYXRlZCA9IHtcbiAgICBjb2RlOiBcIlwiLFxuICAgIGxpbmU6IDEsXG4gICAgY29sdW1uOiAwXG4gIH07XG4gIHZhciBtYXAgPSBuZXcgU291cmNlTWFwR2VuZXJhdG9yKGFBcmdzKTtcbiAgdmFyIHNvdXJjZU1hcHBpbmdBY3RpdmUgPSBmYWxzZTtcbiAgdmFyIGxhc3RPcmlnaW5hbFNvdXJjZSA9IG51bGw7XG4gIHZhciBsYXN0T3JpZ2luYWxMaW5lID0gbnVsbDtcbiAgdmFyIGxhc3RPcmlnaW5hbENvbHVtbiA9IG51bGw7XG4gIHZhciBsYXN0T3JpZ2luYWxOYW1lID0gbnVsbDtcbiAgdGhpcy53YWxrKGZ1bmN0aW9uIChjaHVuaywgb3JpZ2luYWwpIHtcbiAgICBnZW5lcmF0ZWQuY29kZSArPSBjaHVuaztcbiAgICBpZiAob3JpZ2luYWwuc291cmNlICE9PSBudWxsXG4gICAgICAgICYmIG9yaWdpbmFsLmxpbmUgIT09IG51bGxcbiAgICAgICAgJiYgb3JpZ2luYWwuY29sdW1uICE9PSBudWxsKSB7XG4gICAgICBpZihsYXN0T3JpZ2luYWxTb3VyY2UgIT09IG9yaWdpbmFsLnNvdXJjZVxuICAgICAgICAgfHwgbGFzdE9yaWdpbmFsTGluZSAhPT0gb3JpZ2luYWwubGluZVxuICAgICAgICAgfHwgbGFzdE9yaWdpbmFsQ29sdW1uICE9PSBvcmlnaW5hbC5jb2x1bW5cbiAgICAgICAgIHx8IGxhc3RPcmlnaW5hbE5hbWUgIT09IG9yaWdpbmFsLm5hbWUpIHtcbiAgICAgICAgbWFwLmFkZE1hcHBpbmcoe1xuICAgICAgICAgIHNvdXJjZTogb3JpZ2luYWwuc291cmNlLFxuICAgICAgICAgIG9yaWdpbmFsOiB7XG4gICAgICAgICAgICBsaW5lOiBvcmlnaW5hbC5saW5lLFxuICAgICAgICAgICAgY29sdW1uOiBvcmlnaW5hbC5jb2x1bW5cbiAgICAgICAgICB9LFxuICAgICAgICAgIGdlbmVyYXRlZDoge1xuICAgICAgICAgICAgbGluZTogZ2VuZXJhdGVkLmxpbmUsXG4gICAgICAgICAgICBjb2x1bW46IGdlbmVyYXRlZC5jb2x1bW5cbiAgICAgICAgICB9LFxuICAgICAgICAgIG5hbWU6IG9yaWdpbmFsLm5hbWVcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICBsYXN0T3JpZ2luYWxTb3VyY2UgPSBvcmlnaW5hbC5zb3VyY2U7XG4gICAgICBsYXN0T3JpZ2luYWxMaW5lID0gb3JpZ2luYWwubGluZTtcbiAgICAgIGxhc3RPcmlnaW5hbENvbHVtbiA9IG9yaWdpbmFsLmNvbHVtbjtcbiAgICAgIGxhc3RPcmlnaW5hbE5hbWUgPSBvcmlnaW5hbC5uYW1lO1xuICAgICAgc291cmNlTWFwcGluZ0FjdGl2ZSA9IHRydWU7XG4gICAgfSBlbHNlIGlmIChzb3VyY2VNYXBwaW5nQWN0aXZlKSB7XG4gICAgICBtYXAuYWRkTWFwcGluZyh7XG4gICAgICAgIGdlbmVyYXRlZDoge1xuICAgICAgICAgIGxpbmU6IGdlbmVyYXRlZC5saW5lLFxuICAgICAgICAgIGNvbHVtbjogZ2VuZXJhdGVkLmNvbHVtblxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIGxhc3RPcmlnaW5hbFNvdXJjZSA9IG51bGw7XG4gICAgICBzb3VyY2VNYXBwaW5nQWN0aXZlID0gZmFsc2U7XG4gICAgfVxuICAgIGZvciAodmFyIGlkeCA9IDAsIGxlbmd0aCA9IGNodW5rLmxlbmd0aDsgaWR4IDwgbGVuZ3RoOyBpZHgrKykge1xuICAgICAgaWYgKGNodW5rLmNoYXJDb2RlQXQoaWR4KSA9PT0gTkVXTElORV9DT0RFKSB7XG4gICAgICAgIGdlbmVyYXRlZC5saW5lKys7XG4gICAgICAgIGdlbmVyYXRlZC5jb2x1bW4gPSAwO1xuICAgICAgICAvLyBNYXBwaW5ncyBlbmQgYXQgZW9sXG4gICAgICAgIGlmIChpZHggKyAxID09PSBsZW5ndGgpIHtcbiAgICAgICAgICBsYXN0T3JpZ2luYWxTb3VyY2UgPSBudWxsO1xuICAgICAgICAgIHNvdXJjZU1hcHBpbmdBY3RpdmUgPSBmYWxzZTtcbiAgICAgICAgfSBlbHNlIGlmIChzb3VyY2VNYXBwaW5nQWN0aXZlKSB7XG4gICAgICAgICAgbWFwLmFkZE1hcHBpbmcoe1xuICAgICAgICAgICAgc291cmNlOiBvcmlnaW5hbC5zb3VyY2UsXG4gICAgICAgICAgICBvcmlnaW5hbDoge1xuICAgICAgICAgICAgICBsaW5lOiBvcmlnaW5hbC5saW5lLFxuICAgICAgICAgICAgICBjb2x1bW46IG9yaWdpbmFsLmNvbHVtblxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGdlbmVyYXRlZDoge1xuICAgICAgICAgICAgICBsaW5lOiBnZW5lcmF0ZWQubGluZSxcbiAgICAgICAgICAgICAgY29sdW1uOiBnZW5lcmF0ZWQuY29sdW1uXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbmFtZTogb3JpZ2luYWwubmFtZVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBnZW5lcmF0ZWQuY29sdW1uKys7XG4gICAgICB9XG4gICAgfVxuICB9KTtcbiAgdGhpcy53YWxrU291cmNlQ29udGVudHMoZnVuY3Rpb24gKHNvdXJjZUZpbGUsIHNvdXJjZUNvbnRlbnQpIHtcbiAgICBtYXAuc2V0U291cmNlQ29udGVudChzb3VyY2VGaWxlLCBzb3VyY2VDb250ZW50KTtcbiAgfSk7XG5cbiAgcmV0dXJuIHsgY29kZTogZ2VuZXJhdGVkLmNvZGUsIG1hcDogbWFwIH07XG59O1xuXG5leHBvcnRzLlNvdXJjZU5vZGUgPSBTb3VyY2VOb2RlO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9saWIvc291cmNlLW5vZGUuanNcbi8vIG1vZHVsZSBpZCA9IDEwXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJzb3VyY2VSb290IjoiIn0= \ No newline at end of file diff --git a/node_modules/source-map/dist/source-map.js b/node_modules/source-map/dist/source-map.js new file mode 100644 index 0000000..b4eb087 --- /dev/null +++ b/node_modules/source-map/dist/source-map.js @@ -0,0 +1,3233 @@ +(function webpackUniversalModuleDefinition(root, factory) { + if(typeof exports === 'object' && typeof module === 'object') + module.exports = factory(); + else if(typeof define === 'function' && define.amd) + define([], factory); + else if(typeof exports === 'object') + exports["sourceMap"] = factory(); + else + root["sourceMap"] = factory(); +})(this, function() { +return /******/ (function(modules) { // webpackBootstrap +/******/ // The module cache +/******/ var installedModules = {}; + +/******/ // The require function +/******/ function __webpack_require__(moduleId) { + +/******/ // Check if module is in cache +/******/ if(installedModules[moduleId]) +/******/ return installedModules[moduleId].exports; + +/******/ // Create a new module (and put it into the cache) +/******/ var module = installedModules[moduleId] = { +/******/ exports: {}, +/******/ id: moduleId, +/******/ loaded: false +/******/ }; + +/******/ // Execute the module function +/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); + +/******/ // Flag the module as loaded +/******/ module.loaded = true; + +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } + + +/******/ // expose the modules object (__webpack_modules__) +/******/ __webpack_require__.m = modules; + +/******/ // expose the module cache +/******/ __webpack_require__.c = installedModules; + +/******/ // __webpack_public_path__ +/******/ __webpack_require__.p = ""; + +/******/ // Load entry module and return exports +/******/ return __webpack_require__(0); +/******/ }) +/************************************************************************/ +/******/ ([ +/* 0 */ +/***/ (function(module, exports, __webpack_require__) { + + /* + * Copyright 2009-2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE.txt or: + * http://opensource.org/licenses/BSD-3-Clause + */ + exports.SourceMapGenerator = __webpack_require__(1).SourceMapGenerator; + exports.SourceMapConsumer = __webpack_require__(7).SourceMapConsumer; + exports.SourceNode = __webpack_require__(10).SourceNode; + + +/***/ }), +/* 1 */ +/***/ (function(module, exports, __webpack_require__) { + + /* -*- Mode: js; js-indent-level: 2; -*- */ + /* + * Copyright 2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + */ + + var base64VLQ = __webpack_require__(2); + var util = __webpack_require__(4); + var ArraySet = __webpack_require__(5).ArraySet; + var MappingList = __webpack_require__(6).MappingList; + + /** + * An instance of the SourceMapGenerator represents a source map which is + * being built incrementally. You may pass an object with the following + * properties: + * + * - file: The filename of the generated source. + * - sourceRoot: A root for all relative URLs in this source map. + */ + function SourceMapGenerator(aArgs) { + if (!aArgs) { + aArgs = {}; + } + this._file = util.getArg(aArgs, 'file', null); + this._sourceRoot = util.getArg(aArgs, 'sourceRoot', null); + this._skipValidation = util.getArg(aArgs, 'skipValidation', false); + this._sources = new ArraySet(); + this._names = new ArraySet(); + this._mappings = new MappingList(); + this._sourcesContents = null; + } + + SourceMapGenerator.prototype._version = 3; + + /** + * Creates a new SourceMapGenerator based on a SourceMapConsumer + * + * @param aSourceMapConsumer The SourceMap. + */ + SourceMapGenerator.fromSourceMap = + function SourceMapGenerator_fromSourceMap(aSourceMapConsumer) { + var sourceRoot = aSourceMapConsumer.sourceRoot; + var generator = new SourceMapGenerator({ + file: aSourceMapConsumer.file, + sourceRoot: sourceRoot + }); + aSourceMapConsumer.eachMapping(function (mapping) { + var newMapping = { + generated: { + line: mapping.generatedLine, + column: mapping.generatedColumn + } + }; + + if (mapping.source != null) { + newMapping.source = mapping.source; + if (sourceRoot != null) { + newMapping.source = util.relative(sourceRoot, newMapping.source); + } + + newMapping.original = { + line: mapping.originalLine, + column: mapping.originalColumn + }; + + if (mapping.name != null) { + newMapping.name = mapping.name; + } + } + + generator.addMapping(newMapping); + }); + aSourceMapConsumer.sources.forEach(function (sourceFile) { + var sourceRelative = sourceFile; + if (sourceRoot !== null) { + sourceRelative = util.relative(sourceRoot, sourceFile); + } + + if (!generator._sources.has(sourceRelative)) { + generator._sources.add(sourceRelative); + } + + var content = aSourceMapConsumer.sourceContentFor(sourceFile); + if (content != null) { + generator.setSourceContent(sourceFile, content); + } + }); + return generator; + }; + + /** + * Add a single mapping from original source line and column to the generated + * source's line and column for this source map being created. The mapping + * object should have the following properties: + * + * - generated: An object with the generated line and column positions. + * - original: An object with the original line and column positions. + * - source: The original source file (relative to the sourceRoot). + * - name: An optional original token name for this mapping. + */ + SourceMapGenerator.prototype.addMapping = + function SourceMapGenerator_addMapping(aArgs) { + var generated = util.getArg(aArgs, 'generated'); + var original = util.getArg(aArgs, 'original', null); + var source = util.getArg(aArgs, 'source', null); + var name = util.getArg(aArgs, 'name', null); + + if (!this._skipValidation) { + this._validateMapping(generated, original, source, name); + } + + if (source != null) { + source = String(source); + if (!this._sources.has(source)) { + this._sources.add(source); + } + } + + if (name != null) { + name = String(name); + if (!this._names.has(name)) { + this._names.add(name); + } + } + + this._mappings.add({ + generatedLine: generated.line, + generatedColumn: generated.column, + originalLine: original != null && original.line, + originalColumn: original != null && original.column, + source: source, + name: name + }); + }; + + /** + * Set the source content for a source file. + */ + SourceMapGenerator.prototype.setSourceContent = + function SourceMapGenerator_setSourceContent(aSourceFile, aSourceContent) { + var source = aSourceFile; + if (this._sourceRoot != null) { + source = util.relative(this._sourceRoot, source); + } + + if (aSourceContent != null) { + // Add the source content to the _sourcesContents map. + // Create a new _sourcesContents map if the property is null. + if (!this._sourcesContents) { + this._sourcesContents = Object.create(null); + } + this._sourcesContents[util.toSetString(source)] = aSourceContent; + } else if (this._sourcesContents) { + // Remove the source file from the _sourcesContents map. + // If the _sourcesContents map is empty, set the property to null. + delete this._sourcesContents[util.toSetString(source)]; + if (Object.keys(this._sourcesContents).length === 0) { + this._sourcesContents = null; + } + } + }; + + /** + * Applies the mappings of a sub-source-map for a specific source file to the + * source map being generated. Each mapping to the supplied source file is + * rewritten using the supplied source map. Note: The resolution for the + * resulting mappings is the minimium of this map and the supplied map. + * + * @param aSourceMapConsumer The source map to be applied. + * @param aSourceFile Optional. The filename of the source file. + * If omitted, SourceMapConsumer's file property will be used. + * @param aSourceMapPath Optional. The dirname of the path to the source map + * to be applied. If relative, it is relative to the SourceMapConsumer. + * This parameter is needed when the two source maps aren't in the same + * directory, and the source map to be applied contains relative source + * paths. If so, those relative source paths need to be rewritten + * relative to the SourceMapGenerator. + */ + SourceMapGenerator.prototype.applySourceMap = + function SourceMapGenerator_applySourceMap(aSourceMapConsumer, aSourceFile, aSourceMapPath) { + var sourceFile = aSourceFile; + // If aSourceFile is omitted, we will use the file property of the SourceMap + if (aSourceFile == null) { + if (aSourceMapConsumer.file == null) { + throw new Error( + 'SourceMapGenerator.prototype.applySourceMap requires either an explicit source file, ' + + 'or the source map\'s "file" property. Both were omitted.' + ); + } + sourceFile = aSourceMapConsumer.file; + } + var sourceRoot = this._sourceRoot; + // Make "sourceFile" relative if an absolute Url is passed. + if (sourceRoot != null) { + sourceFile = util.relative(sourceRoot, sourceFile); + } + // Applying the SourceMap can add and remove items from the sources and + // the names array. + var newSources = new ArraySet(); + var newNames = new ArraySet(); + + // Find mappings for the "sourceFile" + this._mappings.unsortedForEach(function (mapping) { + if (mapping.source === sourceFile && mapping.originalLine != null) { + // Check if it can be mapped by the source map, then update the mapping. + var original = aSourceMapConsumer.originalPositionFor({ + line: mapping.originalLine, + column: mapping.originalColumn + }); + if (original.source != null) { + // Copy mapping + mapping.source = original.source; + if (aSourceMapPath != null) { + mapping.source = util.join(aSourceMapPath, mapping.source) + } + if (sourceRoot != null) { + mapping.source = util.relative(sourceRoot, mapping.source); + } + mapping.originalLine = original.line; + mapping.originalColumn = original.column; + if (original.name != null) { + mapping.name = original.name; + } + } + } + + var source = mapping.source; + if (source != null && !newSources.has(source)) { + newSources.add(source); + } + + var name = mapping.name; + if (name != null && !newNames.has(name)) { + newNames.add(name); + } + + }, this); + this._sources = newSources; + this._names = newNames; + + // Copy sourcesContents of applied map. + aSourceMapConsumer.sources.forEach(function (sourceFile) { + var content = aSourceMapConsumer.sourceContentFor(sourceFile); + if (content != null) { + if (aSourceMapPath != null) { + sourceFile = util.join(aSourceMapPath, sourceFile); + } + if (sourceRoot != null) { + sourceFile = util.relative(sourceRoot, sourceFile); + } + this.setSourceContent(sourceFile, content); + } + }, this); + }; + + /** + * A mapping can have one of the three levels of data: + * + * 1. Just the generated position. + * 2. The Generated position, original position, and original source. + * 3. Generated and original position, original source, as well as a name + * token. + * + * To maintain consistency, we validate that any new mapping being added falls + * in to one of these categories. + */ + SourceMapGenerator.prototype._validateMapping = + function SourceMapGenerator_validateMapping(aGenerated, aOriginal, aSource, + aName) { + // When aOriginal is truthy but has empty values for .line and .column, + // it is most likely a programmer error. In this case we throw a very + // specific error message to try to guide them the right way. + // For example: https://github.com/Polymer/polymer-bundler/pull/519 + if (aOriginal && typeof aOriginal.line !== 'number' && typeof aOriginal.column !== 'number') { + throw new Error( + 'original.line and original.column are not numbers -- you probably meant to omit ' + + 'the original mapping entirely and only map the generated position. If so, pass ' + + 'null for the original mapping instead of an object with empty or null values.' + ); + } + + if (aGenerated && 'line' in aGenerated && 'column' in aGenerated + && aGenerated.line > 0 && aGenerated.column >= 0 + && !aOriginal && !aSource && !aName) { + // Case 1. + return; + } + else if (aGenerated && 'line' in aGenerated && 'column' in aGenerated + && aOriginal && 'line' in aOriginal && 'column' in aOriginal + && aGenerated.line > 0 && aGenerated.column >= 0 + && aOriginal.line > 0 && aOriginal.column >= 0 + && aSource) { + // Cases 2 and 3. + return; + } + else { + throw new Error('Invalid mapping: ' + JSON.stringify({ + generated: aGenerated, + source: aSource, + original: aOriginal, + name: aName + })); + } + }; + + /** + * Serialize the accumulated mappings in to the stream of base 64 VLQs + * specified by the source map format. + */ + SourceMapGenerator.prototype._serializeMappings = + function SourceMapGenerator_serializeMappings() { + var previousGeneratedColumn = 0; + var previousGeneratedLine = 1; + var previousOriginalColumn = 0; + var previousOriginalLine = 0; + var previousName = 0; + var previousSource = 0; + var result = ''; + var next; + var mapping; + var nameIdx; + var sourceIdx; + + var mappings = this._mappings.toArray(); + for (var i = 0, len = mappings.length; i < len; i++) { + mapping = mappings[i]; + next = '' + + if (mapping.generatedLine !== previousGeneratedLine) { + previousGeneratedColumn = 0; + while (mapping.generatedLine !== previousGeneratedLine) { + next += ';'; + previousGeneratedLine++; + } + } + else { + if (i > 0) { + if (!util.compareByGeneratedPositionsInflated(mapping, mappings[i - 1])) { + continue; + } + next += ','; + } + } + + next += base64VLQ.encode(mapping.generatedColumn + - previousGeneratedColumn); + previousGeneratedColumn = mapping.generatedColumn; + + if (mapping.source != null) { + sourceIdx = this._sources.indexOf(mapping.source); + next += base64VLQ.encode(sourceIdx - previousSource); + previousSource = sourceIdx; + + // lines are stored 0-based in SourceMap spec version 3 + next += base64VLQ.encode(mapping.originalLine - 1 + - previousOriginalLine); + previousOriginalLine = mapping.originalLine - 1; + + next += base64VLQ.encode(mapping.originalColumn + - previousOriginalColumn); + previousOriginalColumn = mapping.originalColumn; + + if (mapping.name != null) { + nameIdx = this._names.indexOf(mapping.name); + next += base64VLQ.encode(nameIdx - previousName); + previousName = nameIdx; + } + } + + result += next; + } + + return result; + }; + + SourceMapGenerator.prototype._generateSourcesContent = + function SourceMapGenerator_generateSourcesContent(aSources, aSourceRoot) { + return aSources.map(function (source) { + if (!this._sourcesContents) { + return null; + } + if (aSourceRoot != null) { + source = util.relative(aSourceRoot, source); + } + var key = util.toSetString(source); + return Object.prototype.hasOwnProperty.call(this._sourcesContents, key) + ? this._sourcesContents[key] + : null; + }, this); + }; + + /** + * Externalize the source map. + */ + SourceMapGenerator.prototype.toJSON = + function SourceMapGenerator_toJSON() { + var map = { + version: this._version, + sources: this._sources.toArray(), + names: this._names.toArray(), + mappings: this._serializeMappings() + }; + if (this._file != null) { + map.file = this._file; + } + if (this._sourceRoot != null) { + map.sourceRoot = this._sourceRoot; + } + if (this._sourcesContents) { + map.sourcesContent = this._generateSourcesContent(map.sources, map.sourceRoot); + } + + return map; + }; + + /** + * Render the source map being generated to a string. + */ + SourceMapGenerator.prototype.toString = + function SourceMapGenerator_toString() { + return JSON.stringify(this.toJSON()); + }; + + exports.SourceMapGenerator = SourceMapGenerator; + + +/***/ }), +/* 2 */ +/***/ (function(module, exports, __webpack_require__) { + + /* -*- Mode: js; js-indent-level: 2; -*- */ + /* + * Copyright 2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + * + * Based on the Base 64 VLQ implementation in Closure Compiler: + * https://code.google.com/p/closure-compiler/source/browse/trunk/src/com/google/debugging/sourcemap/Base64VLQ.java + * + * Copyright 2011 The Closure Compiler Authors. All rights reserved. + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * * Neither the name of Google Inc. nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + + var base64 = __webpack_require__(3); + + // A single base 64 digit can contain 6 bits of data. For the base 64 variable + // length quantities we use in the source map spec, the first bit is the sign, + // the next four bits are the actual value, and the 6th bit is the + // continuation bit. The continuation bit tells us whether there are more + // digits in this value following this digit. + // + // Continuation + // | Sign + // | | + // V V + // 101011 + + var VLQ_BASE_SHIFT = 5; + + // binary: 100000 + var VLQ_BASE = 1 << VLQ_BASE_SHIFT; + + // binary: 011111 + var VLQ_BASE_MASK = VLQ_BASE - 1; + + // binary: 100000 + var VLQ_CONTINUATION_BIT = VLQ_BASE; + + /** + * Converts from a two-complement value to a value where the sign bit is + * placed in the least significant bit. For example, as decimals: + * 1 becomes 2 (10 binary), -1 becomes 3 (11 binary) + * 2 becomes 4 (100 binary), -2 becomes 5 (101 binary) + */ + function toVLQSigned(aValue) { + return aValue < 0 + ? ((-aValue) << 1) + 1 + : (aValue << 1) + 0; + } + + /** + * Converts to a two-complement value from a value where the sign bit is + * placed in the least significant bit. For example, as decimals: + * 2 (10 binary) becomes 1, 3 (11 binary) becomes -1 + * 4 (100 binary) becomes 2, 5 (101 binary) becomes -2 + */ + function fromVLQSigned(aValue) { + var isNegative = (aValue & 1) === 1; + var shifted = aValue >> 1; + return isNegative + ? -shifted + : shifted; + } + + /** + * Returns the base 64 VLQ encoded value. + */ + exports.encode = function base64VLQ_encode(aValue) { + var encoded = ""; + var digit; + + var vlq = toVLQSigned(aValue); + + do { + digit = vlq & VLQ_BASE_MASK; + vlq >>>= VLQ_BASE_SHIFT; + if (vlq > 0) { + // There are still more digits in this value, so we must make sure the + // continuation bit is marked. + digit |= VLQ_CONTINUATION_BIT; + } + encoded += base64.encode(digit); + } while (vlq > 0); + + return encoded; + }; + + /** + * Decodes the next base 64 VLQ value from the given string and returns the + * value and the rest of the string via the out parameter. + */ + exports.decode = function base64VLQ_decode(aStr, aIndex, aOutParam) { + var strLen = aStr.length; + var result = 0; + var shift = 0; + var continuation, digit; + + do { + if (aIndex >= strLen) { + throw new Error("Expected more digits in base 64 VLQ value."); + } + + digit = base64.decode(aStr.charCodeAt(aIndex++)); + if (digit === -1) { + throw new Error("Invalid base64 digit: " + aStr.charAt(aIndex - 1)); + } + + continuation = !!(digit & VLQ_CONTINUATION_BIT); + digit &= VLQ_BASE_MASK; + result = result + (digit << shift); + shift += VLQ_BASE_SHIFT; + } while (continuation); + + aOutParam.value = fromVLQSigned(result); + aOutParam.rest = aIndex; + }; + + +/***/ }), +/* 3 */ +/***/ (function(module, exports) { + + /* -*- Mode: js; js-indent-level: 2; -*- */ + /* + * Copyright 2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + */ + + var intToCharMap = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'.split(''); + + /** + * Encode an integer in the range of 0 to 63 to a single base 64 digit. + */ + exports.encode = function (number) { + if (0 <= number && number < intToCharMap.length) { + return intToCharMap[number]; + } + throw new TypeError("Must be between 0 and 63: " + number); + }; + + /** + * Decode a single base 64 character code digit to an integer. Returns -1 on + * failure. + */ + exports.decode = function (charCode) { + var bigA = 65; // 'A' + var bigZ = 90; // 'Z' + + var littleA = 97; // 'a' + var littleZ = 122; // 'z' + + var zero = 48; // '0' + var nine = 57; // '9' + + var plus = 43; // '+' + var slash = 47; // '/' + + var littleOffset = 26; + var numberOffset = 52; + + // 0 - 25: ABCDEFGHIJKLMNOPQRSTUVWXYZ + if (bigA <= charCode && charCode <= bigZ) { + return (charCode - bigA); + } + + // 26 - 51: abcdefghijklmnopqrstuvwxyz + if (littleA <= charCode && charCode <= littleZ) { + return (charCode - littleA + littleOffset); + } + + // 52 - 61: 0123456789 + if (zero <= charCode && charCode <= nine) { + return (charCode - zero + numberOffset); + } + + // 62: + + if (charCode == plus) { + return 62; + } + + // 63: / + if (charCode == slash) { + return 63; + } + + // Invalid base64 digit. + return -1; + }; + + +/***/ }), +/* 4 */ +/***/ (function(module, exports) { + + /* -*- Mode: js; js-indent-level: 2; -*- */ + /* + * Copyright 2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + */ + + /** + * This is a helper function for getting values from parameter/options + * objects. + * + * @param args The object we are extracting values from + * @param name The name of the property we are getting. + * @param defaultValue An optional value to return if the property is missing + * from the object. If this is not specified and the property is missing, an + * error will be thrown. + */ + function getArg(aArgs, aName, aDefaultValue) { + if (aName in aArgs) { + return aArgs[aName]; + } else if (arguments.length === 3) { + return aDefaultValue; + } else { + throw new Error('"' + aName + '" is a required argument.'); + } + } + exports.getArg = getArg; + + var urlRegexp = /^(?:([\w+\-.]+):)?\/\/(?:(\w+:\w+)@)?([\w.-]*)(?::(\d+))?(.*)$/; + var dataUrlRegexp = /^data:.+\,.+$/; + + function urlParse(aUrl) { + var match = aUrl.match(urlRegexp); + if (!match) { + return null; + } + return { + scheme: match[1], + auth: match[2], + host: match[3], + port: match[4], + path: match[5] + }; + } + exports.urlParse = urlParse; + + function urlGenerate(aParsedUrl) { + var url = ''; + if (aParsedUrl.scheme) { + url += aParsedUrl.scheme + ':'; + } + url += '//'; + if (aParsedUrl.auth) { + url += aParsedUrl.auth + '@'; + } + if (aParsedUrl.host) { + url += aParsedUrl.host; + } + if (aParsedUrl.port) { + url += ":" + aParsedUrl.port + } + if (aParsedUrl.path) { + url += aParsedUrl.path; + } + return url; + } + exports.urlGenerate = urlGenerate; + + /** + * Normalizes a path, or the path portion of a URL: + * + * - Replaces consecutive slashes with one slash. + * - Removes unnecessary '.' parts. + * - Removes unnecessary '/..' parts. + * + * Based on code in the Node.js 'path' core module. + * + * @param aPath The path or url to normalize. + */ + function normalize(aPath) { + var path = aPath; + var url = urlParse(aPath); + if (url) { + if (!url.path) { + return aPath; + } + path = url.path; + } + var isAbsolute = exports.isAbsolute(path); + + var parts = path.split(/\/+/); + for (var part, up = 0, i = parts.length - 1; i >= 0; i--) { + part = parts[i]; + if (part === '.') { + parts.splice(i, 1); + } else if (part === '..') { + up++; + } else if (up > 0) { + if (part === '') { + // The first part is blank if the path is absolute. Trying to go + // above the root is a no-op. Therefore we can remove all '..' parts + // directly after the root. + parts.splice(i + 1, up); + up = 0; + } else { + parts.splice(i, 2); + up--; + } + } + } + path = parts.join('/'); + + if (path === '') { + path = isAbsolute ? '/' : '.'; + } + + if (url) { + url.path = path; + return urlGenerate(url); + } + return path; + } + exports.normalize = normalize; + + /** + * Joins two paths/URLs. + * + * @param aRoot The root path or URL. + * @param aPath The path or URL to be joined with the root. + * + * - If aPath is a URL or a data URI, aPath is returned, unless aPath is a + * scheme-relative URL: Then the scheme of aRoot, if any, is prepended + * first. + * - Otherwise aPath is a path. If aRoot is a URL, then its path portion + * is updated with the result and aRoot is returned. Otherwise the result + * is returned. + * - If aPath is absolute, the result is aPath. + * - Otherwise the two paths are joined with a slash. + * - Joining for example 'http://' and 'www.example.com' is also supported. + */ + function join(aRoot, aPath) { + if (aRoot === "") { + aRoot = "."; + } + if (aPath === "") { + aPath = "."; + } + var aPathUrl = urlParse(aPath); + var aRootUrl = urlParse(aRoot); + if (aRootUrl) { + aRoot = aRootUrl.path || '/'; + } + + // `join(foo, '//www.example.org')` + if (aPathUrl && !aPathUrl.scheme) { + if (aRootUrl) { + aPathUrl.scheme = aRootUrl.scheme; + } + return urlGenerate(aPathUrl); + } + + if (aPathUrl || aPath.match(dataUrlRegexp)) { + return aPath; + } + + // `join('http://', 'www.example.com')` + if (aRootUrl && !aRootUrl.host && !aRootUrl.path) { + aRootUrl.host = aPath; + return urlGenerate(aRootUrl); + } + + var joined = aPath.charAt(0) === '/' + ? aPath + : normalize(aRoot.replace(/\/+$/, '') + '/' + aPath); + + if (aRootUrl) { + aRootUrl.path = joined; + return urlGenerate(aRootUrl); + } + return joined; + } + exports.join = join; + + exports.isAbsolute = function (aPath) { + return aPath.charAt(0) === '/' || urlRegexp.test(aPath); + }; + + /** + * Make a path relative to a URL or another path. + * + * @param aRoot The root path or URL. + * @param aPath The path or URL to be made relative to aRoot. + */ + function relative(aRoot, aPath) { + if (aRoot === "") { + aRoot = "."; + } + + aRoot = aRoot.replace(/\/$/, ''); + + // It is possible for the path to be above the root. In this case, simply + // checking whether the root is a prefix of the path won't work. Instead, we + // need to remove components from the root one by one, until either we find + // a prefix that fits, or we run out of components to remove. + var level = 0; + while (aPath.indexOf(aRoot + '/') !== 0) { + var index = aRoot.lastIndexOf("/"); + if (index < 0) { + return aPath; + } + + // If the only part of the root that is left is the scheme (i.e. http://, + // file:///, etc.), one or more slashes (/), or simply nothing at all, we + // have exhausted all components, so the path is not relative to the root. + aRoot = aRoot.slice(0, index); + if (aRoot.match(/^([^\/]+:\/)?\/*$/)) { + return aPath; + } + + ++level; + } + + // Make sure we add a "../" for each component we removed from the root. + return Array(level + 1).join("../") + aPath.substr(aRoot.length + 1); + } + exports.relative = relative; + + var supportsNullProto = (function () { + var obj = Object.create(null); + return !('__proto__' in obj); + }()); + + function identity (s) { + return s; + } + + /** + * Because behavior goes wacky when you set `__proto__` on objects, we + * have to prefix all the strings in our set with an arbitrary character. + * + * See https://github.com/mozilla/source-map/pull/31 and + * https://github.com/mozilla/source-map/issues/30 + * + * @param String aStr + */ + function toSetString(aStr) { + if (isProtoString(aStr)) { + return '$' + aStr; + } + + return aStr; + } + exports.toSetString = supportsNullProto ? identity : toSetString; + + function fromSetString(aStr) { + if (isProtoString(aStr)) { + return aStr.slice(1); + } + + return aStr; + } + exports.fromSetString = supportsNullProto ? identity : fromSetString; + + function isProtoString(s) { + if (!s) { + return false; + } + + var length = s.length; + + if (length < 9 /* "__proto__".length */) { + return false; + } + + if (s.charCodeAt(length - 1) !== 95 /* '_' */ || + s.charCodeAt(length - 2) !== 95 /* '_' */ || + s.charCodeAt(length - 3) !== 111 /* 'o' */ || + s.charCodeAt(length - 4) !== 116 /* 't' */ || + s.charCodeAt(length - 5) !== 111 /* 'o' */ || + s.charCodeAt(length - 6) !== 114 /* 'r' */ || + s.charCodeAt(length - 7) !== 112 /* 'p' */ || + s.charCodeAt(length - 8) !== 95 /* '_' */ || + s.charCodeAt(length - 9) !== 95 /* '_' */) { + return false; + } + + for (var i = length - 10; i >= 0; i--) { + if (s.charCodeAt(i) !== 36 /* '$' */) { + return false; + } + } + + return true; + } + + /** + * Comparator between two mappings where the original positions are compared. + * + * Optionally pass in `true` as `onlyCompareGenerated` to consider two + * mappings with the same original source/line/column, but different generated + * line and column the same. Useful when searching for a mapping with a + * stubbed out mapping. + */ + function compareByOriginalPositions(mappingA, mappingB, onlyCompareOriginal) { + var cmp = strcmp(mappingA.source, mappingB.source); + if (cmp !== 0) { + return cmp; + } + + cmp = mappingA.originalLine - mappingB.originalLine; + if (cmp !== 0) { + return cmp; + } + + cmp = mappingA.originalColumn - mappingB.originalColumn; + if (cmp !== 0 || onlyCompareOriginal) { + return cmp; + } + + cmp = mappingA.generatedColumn - mappingB.generatedColumn; + if (cmp !== 0) { + return cmp; + } + + cmp = mappingA.generatedLine - mappingB.generatedLine; + if (cmp !== 0) { + return cmp; + } + + return strcmp(mappingA.name, mappingB.name); + } + exports.compareByOriginalPositions = compareByOriginalPositions; + + /** + * Comparator between two mappings with deflated source and name indices where + * the generated positions are compared. + * + * Optionally pass in `true` as `onlyCompareGenerated` to consider two + * mappings with the same generated line and column, but different + * source/name/original line and column the same. Useful when searching for a + * mapping with a stubbed out mapping. + */ + function compareByGeneratedPositionsDeflated(mappingA, mappingB, onlyCompareGenerated) { + var cmp = mappingA.generatedLine - mappingB.generatedLine; + if (cmp !== 0) { + return cmp; + } + + cmp = mappingA.generatedColumn - mappingB.generatedColumn; + if (cmp !== 0 || onlyCompareGenerated) { + return cmp; + } + + cmp = strcmp(mappingA.source, mappingB.source); + if (cmp !== 0) { + return cmp; + } + + cmp = mappingA.originalLine - mappingB.originalLine; + if (cmp !== 0) { + return cmp; + } + + cmp = mappingA.originalColumn - mappingB.originalColumn; + if (cmp !== 0) { + return cmp; + } + + return strcmp(mappingA.name, mappingB.name); + } + exports.compareByGeneratedPositionsDeflated = compareByGeneratedPositionsDeflated; + + function strcmp(aStr1, aStr2) { + if (aStr1 === aStr2) { + return 0; + } + + if (aStr1 === null) { + return 1; // aStr2 !== null + } + + if (aStr2 === null) { + return -1; // aStr1 !== null + } + + if (aStr1 > aStr2) { + return 1; + } + + return -1; + } + + /** + * Comparator between two mappings with inflated source and name strings where + * the generated positions are compared. + */ + function compareByGeneratedPositionsInflated(mappingA, mappingB) { + var cmp = mappingA.generatedLine - mappingB.generatedLine; + if (cmp !== 0) { + return cmp; + } + + cmp = mappingA.generatedColumn - mappingB.generatedColumn; + if (cmp !== 0) { + return cmp; + } + + cmp = strcmp(mappingA.source, mappingB.source); + if (cmp !== 0) { + return cmp; + } + + cmp = mappingA.originalLine - mappingB.originalLine; + if (cmp !== 0) { + return cmp; + } + + cmp = mappingA.originalColumn - mappingB.originalColumn; + if (cmp !== 0) { + return cmp; + } + + return strcmp(mappingA.name, mappingB.name); + } + exports.compareByGeneratedPositionsInflated = compareByGeneratedPositionsInflated; + + /** + * Strip any JSON XSSI avoidance prefix from the string (as documented + * in the source maps specification), and then parse the string as + * JSON. + */ + function parseSourceMapInput(str) { + return JSON.parse(str.replace(/^\)]}'[^\n]*\n/, '')); + } + exports.parseSourceMapInput = parseSourceMapInput; + + /** + * Compute the URL of a source given the the source root, the source's + * URL, and the source map's URL. + */ + function computeSourceURL(sourceRoot, sourceURL, sourceMapURL) { + sourceURL = sourceURL || ''; + + if (sourceRoot) { + // This follows what Chrome does. + if (sourceRoot[sourceRoot.length - 1] !== '/' && sourceURL[0] !== '/') { + sourceRoot += '/'; + } + // The spec says: + // Line 4: An optional source root, useful for relocating source + // files on a server or removing repeated values in the + // “sources” entry. This value is prepended to the individual + // entries in the “source” field. + sourceURL = sourceRoot + sourceURL; + } + + // Historically, SourceMapConsumer did not take the sourceMapURL as + // a parameter. This mode is still somewhat supported, which is why + // this code block is conditional. However, it's preferable to pass + // the source map URL to SourceMapConsumer, so that this function + // can implement the source URL resolution algorithm as outlined in + // the spec. This block is basically the equivalent of: + // new URL(sourceURL, sourceMapURL).toString() + // ... except it avoids using URL, which wasn't available in the + // older releases of node still supported by this library. + // + // The spec says: + // If the sources are not absolute URLs after prepending of the + // “sourceRoot”, the sources are resolved relative to the + // SourceMap (like resolving script src in a html document). + if (sourceMapURL) { + var parsed = urlParse(sourceMapURL); + if (!parsed) { + throw new Error("sourceMapURL could not be parsed"); + } + if (parsed.path) { + // Strip the last path component, but keep the "/". + var index = parsed.path.lastIndexOf('/'); + if (index >= 0) { + parsed.path = parsed.path.substring(0, index + 1); + } + } + sourceURL = join(urlGenerate(parsed), sourceURL); + } + + return normalize(sourceURL); + } + exports.computeSourceURL = computeSourceURL; + + +/***/ }), +/* 5 */ +/***/ (function(module, exports, __webpack_require__) { + + /* -*- Mode: js; js-indent-level: 2; -*- */ + /* + * Copyright 2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + */ + + var util = __webpack_require__(4); + var has = Object.prototype.hasOwnProperty; + var hasNativeMap = typeof Map !== "undefined"; + + /** + * A data structure which is a combination of an array and a set. Adding a new + * member is O(1), testing for membership is O(1), and finding the index of an + * element is O(1). Removing elements from the set is not supported. Only + * strings are supported for membership. + */ + function ArraySet() { + this._array = []; + this._set = hasNativeMap ? new Map() : Object.create(null); + } + + /** + * Static method for creating ArraySet instances from an existing array. + */ + ArraySet.fromArray = function ArraySet_fromArray(aArray, aAllowDuplicates) { + var set = new ArraySet(); + for (var i = 0, len = aArray.length; i < len; i++) { + set.add(aArray[i], aAllowDuplicates); + } + return set; + }; + + /** + * Return how many unique items are in this ArraySet. If duplicates have been + * added, than those do not count towards the size. + * + * @returns Number + */ + ArraySet.prototype.size = function ArraySet_size() { + return hasNativeMap ? this._set.size : Object.getOwnPropertyNames(this._set).length; + }; + + /** + * Add the given string to this set. + * + * @param String aStr + */ + ArraySet.prototype.add = function ArraySet_add(aStr, aAllowDuplicates) { + var sStr = hasNativeMap ? aStr : util.toSetString(aStr); + var isDuplicate = hasNativeMap ? this.has(aStr) : has.call(this._set, sStr); + var idx = this._array.length; + if (!isDuplicate || aAllowDuplicates) { + this._array.push(aStr); + } + if (!isDuplicate) { + if (hasNativeMap) { + this._set.set(aStr, idx); + } else { + this._set[sStr] = idx; + } + } + }; + + /** + * Is the given string a member of this set? + * + * @param String aStr + */ + ArraySet.prototype.has = function ArraySet_has(aStr) { + if (hasNativeMap) { + return this._set.has(aStr); + } else { + var sStr = util.toSetString(aStr); + return has.call(this._set, sStr); + } + }; + + /** + * What is the index of the given string in the array? + * + * @param String aStr + */ + ArraySet.prototype.indexOf = function ArraySet_indexOf(aStr) { + if (hasNativeMap) { + var idx = this._set.get(aStr); + if (idx >= 0) { + return idx; + } + } else { + var sStr = util.toSetString(aStr); + if (has.call(this._set, sStr)) { + return this._set[sStr]; + } + } + + throw new Error('"' + aStr + '" is not in the set.'); + }; + + /** + * What is the element at the given index? + * + * @param Number aIdx + */ + ArraySet.prototype.at = function ArraySet_at(aIdx) { + if (aIdx >= 0 && aIdx < this._array.length) { + return this._array[aIdx]; + } + throw new Error('No element indexed by ' + aIdx); + }; + + /** + * Returns the array representation of this set (which has the proper indices + * indicated by indexOf). Note that this is a copy of the internal array used + * for storing the members so that no one can mess with internal state. + */ + ArraySet.prototype.toArray = function ArraySet_toArray() { + return this._array.slice(); + }; + + exports.ArraySet = ArraySet; + + +/***/ }), +/* 6 */ +/***/ (function(module, exports, __webpack_require__) { + + /* -*- Mode: js; js-indent-level: 2; -*- */ + /* + * Copyright 2014 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + */ + + var util = __webpack_require__(4); + + /** + * Determine whether mappingB is after mappingA with respect to generated + * position. + */ + function generatedPositionAfter(mappingA, mappingB) { + // Optimized for most common case + var lineA = mappingA.generatedLine; + var lineB = mappingB.generatedLine; + var columnA = mappingA.generatedColumn; + var columnB = mappingB.generatedColumn; + return lineB > lineA || lineB == lineA && columnB >= columnA || + util.compareByGeneratedPositionsInflated(mappingA, mappingB) <= 0; + } + + /** + * A data structure to provide a sorted view of accumulated mappings in a + * performance conscious manner. It trades a neglibable overhead in general + * case for a large speedup in case of mappings being added in order. + */ + function MappingList() { + this._array = []; + this._sorted = true; + // Serves as infimum + this._last = {generatedLine: -1, generatedColumn: 0}; + } + + /** + * Iterate through internal items. This method takes the same arguments that + * `Array.prototype.forEach` takes. + * + * NOTE: The order of the mappings is NOT guaranteed. + */ + MappingList.prototype.unsortedForEach = + function MappingList_forEach(aCallback, aThisArg) { + this._array.forEach(aCallback, aThisArg); + }; + + /** + * Add the given source mapping. + * + * @param Object aMapping + */ + MappingList.prototype.add = function MappingList_add(aMapping) { + if (generatedPositionAfter(this._last, aMapping)) { + this._last = aMapping; + this._array.push(aMapping); + } else { + this._sorted = false; + this._array.push(aMapping); + } + }; + + /** + * Returns the flat, sorted array of mappings. The mappings are sorted by + * generated position. + * + * WARNING: This method returns internal data without copying, for + * performance. The return value must NOT be mutated, and should be treated as + * an immutable borrow. If you want to take ownership, you must make your own + * copy. + */ + MappingList.prototype.toArray = function MappingList_toArray() { + if (!this._sorted) { + this._array.sort(util.compareByGeneratedPositionsInflated); + this._sorted = true; + } + return this._array; + }; + + exports.MappingList = MappingList; + + +/***/ }), +/* 7 */ +/***/ (function(module, exports, __webpack_require__) { + + /* -*- Mode: js; js-indent-level: 2; -*- */ + /* + * Copyright 2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + */ + + var util = __webpack_require__(4); + var binarySearch = __webpack_require__(8); + var ArraySet = __webpack_require__(5).ArraySet; + var base64VLQ = __webpack_require__(2); + var quickSort = __webpack_require__(9).quickSort; + + function SourceMapConsumer(aSourceMap, aSourceMapURL) { + var sourceMap = aSourceMap; + if (typeof aSourceMap === 'string') { + sourceMap = util.parseSourceMapInput(aSourceMap); + } + + return sourceMap.sections != null + ? new IndexedSourceMapConsumer(sourceMap, aSourceMapURL) + : new BasicSourceMapConsumer(sourceMap, aSourceMapURL); + } + + SourceMapConsumer.fromSourceMap = function(aSourceMap, aSourceMapURL) { + return BasicSourceMapConsumer.fromSourceMap(aSourceMap, aSourceMapURL); + } + + /** + * The version of the source mapping spec that we are consuming. + */ + SourceMapConsumer.prototype._version = 3; + + // `__generatedMappings` and `__originalMappings` are arrays that hold the + // parsed mapping coordinates from the source map's "mappings" attribute. They + // are lazily instantiated, accessed via the `_generatedMappings` and + // `_originalMappings` getters respectively, and we only parse the mappings + // and create these arrays once queried for a source location. We jump through + // these hoops because there can be many thousands of mappings, and parsing + // them is expensive, so we only want to do it if we must. + // + // Each object in the arrays is of the form: + // + // { + // generatedLine: The line number in the generated code, + // generatedColumn: The column number in the generated code, + // source: The path to the original source file that generated this + // chunk of code, + // originalLine: The line number in the original source that + // corresponds to this chunk of generated code, + // originalColumn: The column number in the original source that + // corresponds to this chunk of generated code, + // name: The name of the original symbol which generated this chunk of + // code. + // } + // + // All properties except for `generatedLine` and `generatedColumn` can be + // `null`. + // + // `_generatedMappings` is ordered by the generated positions. + // + // `_originalMappings` is ordered by the original positions. + + SourceMapConsumer.prototype.__generatedMappings = null; + Object.defineProperty(SourceMapConsumer.prototype, '_generatedMappings', { + configurable: true, + enumerable: true, + get: function () { + if (!this.__generatedMappings) { + this._parseMappings(this._mappings, this.sourceRoot); + } + + return this.__generatedMappings; + } + }); + + SourceMapConsumer.prototype.__originalMappings = null; + Object.defineProperty(SourceMapConsumer.prototype, '_originalMappings', { + configurable: true, + enumerable: true, + get: function () { + if (!this.__originalMappings) { + this._parseMappings(this._mappings, this.sourceRoot); + } + + return this.__originalMappings; + } + }); + + SourceMapConsumer.prototype._charIsMappingSeparator = + function SourceMapConsumer_charIsMappingSeparator(aStr, index) { + var c = aStr.charAt(index); + return c === ";" || c === ","; + }; + + /** + * Parse the mappings in a string in to a data structure which we can easily + * query (the ordered arrays in the `this.__generatedMappings` and + * `this.__originalMappings` properties). + */ + SourceMapConsumer.prototype._parseMappings = + function SourceMapConsumer_parseMappings(aStr, aSourceRoot) { + throw new Error("Subclasses must implement _parseMappings"); + }; + + SourceMapConsumer.GENERATED_ORDER = 1; + SourceMapConsumer.ORIGINAL_ORDER = 2; + + SourceMapConsumer.GREATEST_LOWER_BOUND = 1; + SourceMapConsumer.LEAST_UPPER_BOUND = 2; + + /** + * Iterate over each mapping between an original source/line/column and a + * generated line/column in this source map. + * + * @param Function aCallback + * The function that is called with each mapping. + * @param Object aContext + * Optional. If specified, this object will be the value of `this` every + * time that `aCallback` is called. + * @param aOrder + * Either `SourceMapConsumer.GENERATED_ORDER` or + * `SourceMapConsumer.ORIGINAL_ORDER`. Specifies whether you want to + * iterate over the mappings sorted by the generated file's line/column + * order or the original's source/line/column order, respectively. Defaults to + * `SourceMapConsumer.GENERATED_ORDER`. + */ + SourceMapConsumer.prototype.eachMapping = + function SourceMapConsumer_eachMapping(aCallback, aContext, aOrder) { + var context = aContext || null; + var order = aOrder || SourceMapConsumer.GENERATED_ORDER; + + var mappings; + switch (order) { + case SourceMapConsumer.GENERATED_ORDER: + mappings = this._generatedMappings; + break; + case SourceMapConsumer.ORIGINAL_ORDER: + mappings = this._originalMappings; + break; + default: + throw new Error("Unknown order of iteration."); + } + + var sourceRoot = this.sourceRoot; + mappings.map(function (mapping) { + var source = mapping.source === null ? null : this._sources.at(mapping.source); + source = util.computeSourceURL(sourceRoot, source, this._sourceMapURL); + return { + source: source, + generatedLine: mapping.generatedLine, + generatedColumn: mapping.generatedColumn, + originalLine: mapping.originalLine, + originalColumn: mapping.originalColumn, + name: mapping.name === null ? null : this._names.at(mapping.name) + }; + }, this).forEach(aCallback, context); + }; + + /** + * Returns all generated line and column information for the original source, + * line, and column provided. If no column is provided, returns all mappings + * corresponding to a either the line we are searching for or the next + * closest line that has any mappings. Otherwise, returns all mappings + * corresponding to the given line and either the column we are searching for + * or the next closest column that has any offsets. + * + * The only argument is an object with the following properties: + * + * - source: The filename of the original source. + * - line: The line number in the original source. The line number is 1-based. + * - column: Optional. the column number in the original source. + * The column number is 0-based. + * + * and an array of objects is returned, each with the following properties: + * + * - line: The line number in the generated source, or null. The + * line number is 1-based. + * - column: The column number in the generated source, or null. + * The column number is 0-based. + */ + SourceMapConsumer.prototype.allGeneratedPositionsFor = + function SourceMapConsumer_allGeneratedPositionsFor(aArgs) { + var line = util.getArg(aArgs, 'line'); + + // When there is no exact match, BasicSourceMapConsumer.prototype._findMapping + // returns the index of the closest mapping less than the needle. By + // setting needle.originalColumn to 0, we thus find the last mapping for + // the given line, provided such a mapping exists. + var needle = { + source: util.getArg(aArgs, 'source'), + originalLine: line, + originalColumn: util.getArg(aArgs, 'column', 0) + }; + + needle.source = this._findSourceIndex(needle.source); + if (needle.source < 0) { + return []; + } + + var mappings = []; + + var index = this._findMapping(needle, + this._originalMappings, + "originalLine", + "originalColumn", + util.compareByOriginalPositions, + binarySearch.LEAST_UPPER_BOUND); + if (index >= 0) { + var mapping = this._originalMappings[index]; + + if (aArgs.column === undefined) { + var originalLine = mapping.originalLine; + + // Iterate until either we run out of mappings, or we run into + // a mapping for a different line than the one we found. Since + // mappings are sorted, this is guaranteed to find all mappings for + // the line we found. + while (mapping && mapping.originalLine === originalLine) { + mappings.push({ + line: util.getArg(mapping, 'generatedLine', null), + column: util.getArg(mapping, 'generatedColumn', null), + lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null) + }); + + mapping = this._originalMappings[++index]; + } + } else { + var originalColumn = mapping.originalColumn; + + // Iterate until either we run out of mappings, or we run into + // a mapping for a different line than the one we were searching for. + // Since mappings are sorted, this is guaranteed to find all mappings for + // the line we are searching for. + while (mapping && + mapping.originalLine === line && + mapping.originalColumn == originalColumn) { + mappings.push({ + line: util.getArg(mapping, 'generatedLine', null), + column: util.getArg(mapping, 'generatedColumn', null), + lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null) + }); + + mapping = this._originalMappings[++index]; + } + } + } + + return mappings; + }; + + exports.SourceMapConsumer = SourceMapConsumer; + + /** + * A BasicSourceMapConsumer instance represents a parsed source map which we can + * query for information about the original file positions by giving it a file + * position in the generated source. + * + * The first parameter is the raw source map (either as a JSON string, or + * already parsed to an object). According to the spec, source maps have the + * following attributes: + * + * - version: Which version of the source map spec this map is following. + * - sources: An array of URLs to the original source files. + * - names: An array of identifiers which can be referrenced by individual mappings. + * - sourceRoot: Optional. The URL root from which all sources are relative. + * - sourcesContent: Optional. An array of contents of the original source files. + * - mappings: A string of base64 VLQs which contain the actual mappings. + * - file: Optional. The generated file this source map is associated with. + * + * Here is an example source map, taken from the source map spec[0]: + * + * { + * version : 3, + * file: "out.js", + * sourceRoot : "", + * sources: ["foo.js", "bar.js"], + * names: ["src", "maps", "are", "fun"], + * mappings: "AA,AB;;ABCDE;" + * } + * + * The second parameter, if given, is a string whose value is the URL + * at which the source map was found. This URL is used to compute the + * sources array. + * + * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit?pli=1# + */ + function BasicSourceMapConsumer(aSourceMap, aSourceMapURL) { + var sourceMap = aSourceMap; + if (typeof aSourceMap === 'string') { + sourceMap = util.parseSourceMapInput(aSourceMap); + } + + var version = util.getArg(sourceMap, 'version'); + var sources = util.getArg(sourceMap, 'sources'); + // Sass 3.3 leaves out the 'names' array, so we deviate from the spec (which + // requires the array) to play nice here. + var names = util.getArg(sourceMap, 'names', []); + var sourceRoot = util.getArg(sourceMap, 'sourceRoot', null); + var sourcesContent = util.getArg(sourceMap, 'sourcesContent', null); + var mappings = util.getArg(sourceMap, 'mappings'); + var file = util.getArg(sourceMap, 'file', null); + + // Once again, Sass deviates from the spec and supplies the version as a + // string rather than a number, so we use loose equality checking here. + if (version != this._version) { + throw new Error('Unsupported version: ' + version); + } + + if (sourceRoot) { + sourceRoot = util.normalize(sourceRoot); + } + + sources = sources + .map(String) + // Some source maps produce relative source paths like "./foo.js" instead of + // "foo.js". Normalize these first so that future comparisons will succeed. + // See bugzil.la/1090768. + .map(util.normalize) + // Always ensure that absolute sources are internally stored relative to + // the source root, if the source root is absolute. Not doing this would + // be particularly problematic when the source root is a prefix of the + // source (valid, but why??). See github issue #199 and bugzil.la/1188982. + .map(function (source) { + return sourceRoot && util.isAbsolute(sourceRoot) && util.isAbsolute(source) + ? util.relative(sourceRoot, source) + : source; + }); + + // Pass `true` below to allow duplicate names and sources. While source maps + // are intended to be compressed and deduplicated, the TypeScript compiler + // sometimes generates source maps with duplicates in them. See Github issue + // #72 and bugzil.la/889492. + this._names = ArraySet.fromArray(names.map(String), true); + this._sources = ArraySet.fromArray(sources, true); + + this._absoluteSources = this._sources.toArray().map(function (s) { + return util.computeSourceURL(sourceRoot, s, aSourceMapURL); + }); + + this.sourceRoot = sourceRoot; + this.sourcesContent = sourcesContent; + this._mappings = mappings; + this._sourceMapURL = aSourceMapURL; + this.file = file; + } + + BasicSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype); + BasicSourceMapConsumer.prototype.consumer = SourceMapConsumer; + + /** + * Utility function to find the index of a source. Returns -1 if not + * found. + */ + BasicSourceMapConsumer.prototype._findSourceIndex = function(aSource) { + var relativeSource = aSource; + if (this.sourceRoot != null) { + relativeSource = util.relative(this.sourceRoot, relativeSource); + } + + if (this._sources.has(relativeSource)) { + return this._sources.indexOf(relativeSource); + } + + // Maybe aSource is an absolute URL as returned by |sources|. In + // this case we can't simply undo the transform. + var i; + for (i = 0; i < this._absoluteSources.length; ++i) { + if (this._absoluteSources[i] == aSource) { + return i; + } + } + + return -1; + }; + + /** + * Create a BasicSourceMapConsumer from a SourceMapGenerator. + * + * @param SourceMapGenerator aSourceMap + * The source map that will be consumed. + * @param String aSourceMapURL + * The URL at which the source map can be found (optional) + * @returns BasicSourceMapConsumer + */ + BasicSourceMapConsumer.fromSourceMap = + function SourceMapConsumer_fromSourceMap(aSourceMap, aSourceMapURL) { + var smc = Object.create(BasicSourceMapConsumer.prototype); + + var names = smc._names = ArraySet.fromArray(aSourceMap._names.toArray(), true); + var sources = smc._sources = ArraySet.fromArray(aSourceMap._sources.toArray(), true); + smc.sourceRoot = aSourceMap._sourceRoot; + smc.sourcesContent = aSourceMap._generateSourcesContent(smc._sources.toArray(), + smc.sourceRoot); + smc.file = aSourceMap._file; + smc._sourceMapURL = aSourceMapURL; + smc._absoluteSources = smc._sources.toArray().map(function (s) { + return util.computeSourceURL(smc.sourceRoot, s, aSourceMapURL); + }); + + // Because we are modifying the entries (by converting string sources and + // names to indices into the sources and names ArraySets), we have to make + // a copy of the entry or else bad things happen. Shared mutable state + // strikes again! See github issue #191. + + var generatedMappings = aSourceMap._mappings.toArray().slice(); + var destGeneratedMappings = smc.__generatedMappings = []; + var destOriginalMappings = smc.__originalMappings = []; + + for (var i = 0, length = generatedMappings.length; i < length; i++) { + var srcMapping = generatedMappings[i]; + var destMapping = new Mapping; + destMapping.generatedLine = srcMapping.generatedLine; + destMapping.generatedColumn = srcMapping.generatedColumn; + + if (srcMapping.source) { + destMapping.source = sources.indexOf(srcMapping.source); + destMapping.originalLine = srcMapping.originalLine; + destMapping.originalColumn = srcMapping.originalColumn; + + if (srcMapping.name) { + destMapping.name = names.indexOf(srcMapping.name); + } + + destOriginalMappings.push(destMapping); + } + + destGeneratedMappings.push(destMapping); + } + + quickSort(smc.__originalMappings, util.compareByOriginalPositions); + + return smc; + }; + + /** + * The version of the source mapping spec that we are consuming. + */ + BasicSourceMapConsumer.prototype._version = 3; + + /** + * The list of original sources. + */ + Object.defineProperty(BasicSourceMapConsumer.prototype, 'sources', { + get: function () { + return this._absoluteSources.slice(); + } + }); + + /** + * Provide the JIT with a nice shape / hidden class. + */ + function Mapping() { + this.generatedLine = 0; + this.generatedColumn = 0; + this.source = null; + this.originalLine = null; + this.originalColumn = null; + this.name = null; + } + + /** + * Parse the mappings in a string in to a data structure which we can easily + * query (the ordered arrays in the `this.__generatedMappings` and + * `this.__originalMappings` properties). + */ + BasicSourceMapConsumer.prototype._parseMappings = + function SourceMapConsumer_parseMappings(aStr, aSourceRoot) { + var generatedLine = 1; + var previousGeneratedColumn = 0; + var previousOriginalLine = 0; + var previousOriginalColumn = 0; + var previousSource = 0; + var previousName = 0; + var length = aStr.length; + var index = 0; + var cachedSegments = {}; + var temp = {}; + var originalMappings = []; + var generatedMappings = []; + var mapping, str, segment, end, value; + + while (index < length) { + if (aStr.charAt(index) === ';') { + generatedLine++; + index++; + previousGeneratedColumn = 0; + } + else if (aStr.charAt(index) === ',') { + index++; + } + else { + mapping = new Mapping(); + mapping.generatedLine = generatedLine; + + // Because each offset is encoded relative to the previous one, + // many segments often have the same encoding. We can exploit this + // fact by caching the parsed variable length fields of each segment, + // allowing us to avoid a second parse if we encounter the same + // segment again. + for (end = index; end < length; end++) { + if (this._charIsMappingSeparator(aStr, end)) { + break; + } + } + str = aStr.slice(index, end); + + segment = cachedSegments[str]; + if (segment) { + index += str.length; + } else { + segment = []; + while (index < end) { + base64VLQ.decode(aStr, index, temp); + value = temp.value; + index = temp.rest; + segment.push(value); + } + + if (segment.length === 2) { + throw new Error('Found a source, but no line and column'); + } + + if (segment.length === 3) { + throw new Error('Found a source and line, but no column'); + } + + cachedSegments[str] = segment; + } + + // Generated column. + mapping.generatedColumn = previousGeneratedColumn + segment[0]; + previousGeneratedColumn = mapping.generatedColumn; + + if (segment.length > 1) { + // Original source. + mapping.source = previousSource + segment[1]; + previousSource += segment[1]; + + // Original line. + mapping.originalLine = previousOriginalLine + segment[2]; + previousOriginalLine = mapping.originalLine; + // Lines are stored 0-based + mapping.originalLine += 1; + + // Original column. + mapping.originalColumn = previousOriginalColumn + segment[3]; + previousOriginalColumn = mapping.originalColumn; + + if (segment.length > 4) { + // Original name. + mapping.name = previousName + segment[4]; + previousName += segment[4]; + } + } + + generatedMappings.push(mapping); + if (typeof mapping.originalLine === 'number') { + originalMappings.push(mapping); + } + } + } + + quickSort(generatedMappings, util.compareByGeneratedPositionsDeflated); + this.__generatedMappings = generatedMappings; + + quickSort(originalMappings, util.compareByOriginalPositions); + this.__originalMappings = originalMappings; + }; + + /** + * Find the mapping that best matches the hypothetical "needle" mapping that + * we are searching for in the given "haystack" of mappings. + */ + BasicSourceMapConsumer.prototype._findMapping = + function SourceMapConsumer_findMapping(aNeedle, aMappings, aLineName, + aColumnName, aComparator, aBias) { + // To return the position we are searching for, we must first find the + // mapping for the given position and then return the opposite position it + // points to. Because the mappings are sorted, we can use binary search to + // find the best mapping. + + if (aNeedle[aLineName] <= 0) { + throw new TypeError('Line must be greater than or equal to 1, got ' + + aNeedle[aLineName]); + } + if (aNeedle[aColumnName] < 0) { + throw new TypeError('Column must be greater than or equal to 0, got ' + + aNeedle[aColumnName]); + } + + return binarySearch.search(aNeedle, aMappings, aComparator, aBias); + }; + + /** + * Compute the last column for each generated mapping. The last column is + * inclusive. + */ + BasicSourceMapConsumer.prototype.computeColumnSpans = + function SourceMapConsumer_computeColumnSpans() { + for (var index = 0; index < this._generatedMappings.length; ++index) { + var mapping = this._generatedMappings[index]; + + // Mappings do not contain a field for the last generated columnt. We + // can come up with an optimistic estimate, however, by assuming that + // mappings are contiguous (i.e. given two consecutive mappings, the + // first mapping ends where the second one starts). + if (index + 1 < this._generatedMappings.length) { + var nextMapping = this._generatedMappings[index + 1]; + + if (mapping.generatedLine === nextMapping.generatedLine) { + mapping.lastGeneratedColumn = nextMapping.generatedColumn - 1; + continue; + } + } + + // The last mapping for each line spans the entire line. + mapping.lastGeneratedColumn = Infinity; + } + }; + + /** + * Returns the original source, line, and column information for the generated + * source's line and column positions provided. The only argument is an object + * with the following properties: + * + * - line: The line number in the generated source. The line number + * is 1-based. + * - column: The column number in the generated source. The column + * number is 0-based. + * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or + * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the + * closest element that is smaller than or greater than the one we are + * searching for, respectively, if the exact element cannot be found. + * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'. + * + * and an object is returned with the following properties: + * + * - source: The original source file, or null. + * - line: The line number in the original source, or null. The + * line number is 1-based. + * - column: The column number in the original source, or null. The + * column number is 0-based. + * - name: The original identifier, or null. + */ + BasicSourceMapConsumer.prototype.originalPositionFor = + function SourceMapConsumer_originalPositionFor(aArgs) { + var needle = { + generatedLine: util.getArg(aArgs, 'line'), + generatedColumn: util.getArg(aArgs, 'column') + }; + + var index = this._findMapping( + needle, + this._generatedMappings, + "generatedLine", + "generatedColumn", + util.compareByGeneratedPositionsDeflated, + util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND) + ); + + if (index >= 0) { + var mapping = this._generatedMappings[index]; + + if (mapping.generatedLine === needle.generatedLine) { + var source = util.getArg(mapping, 'source', null); + if (source !== null) { + source = this._sources.at(source); + source = util.computeSourceURL(this.sourceRoot, source, this._sourceMapURL); + } + var name = util.getArg(mapping, 'name', null); + if (name !== null) { + name = this._names.at(name); + } + return { + source: source, + line: util.getArg(mapping, 'originalLine', null), + column: util.getArg(mapping, 'originalColumn', null), + name: name + }; + } + } + + return { + source: null, + line: null, + column: null, + name: null + }; + }; + + /** + * Return true if we have the source content for every source in the source + * map, false otherwise. + */ + BasicSourceMapConsumer.prototype.hasContentsOfAllSources = + function BasicSourceMapConsumer_hasContentsOfAllSources() { + if (!this.sourcesContent) { + return false; + } + return this.sourcesContent.length >= this._sources.size() && + !this.sourcesContent.some(function (sc) { return sc == null; }); + }; + + /** + * Returns the original source content. The only argument is the url of the + * original source file. Returns null if no original source content is + * available. + */ + BasicSourceMapConsumer.prototype.sourceContentFor = + function SourceMapConsumer_sourceContentFor(aSource, nullOnMissing) { + if (!this.sourcesContent) { + return null; + } + + var index = this._findSourceIndex(aSource); + if (index >= 0) { + return this.sourcesContent[index]; + } + + var relativeSource = aSource; + if (this.sourceRoot != null) { + relativeSource = util.relative(this.sourceRoot, relativeSource); + } + + var url; + if (this.sourceRoot != null + && (url = util.urlParse(this.sourceRoot))) { + // XXX: file:// URIs and absolute paths lead to unexpected behavior for + // many users. We can help them out when they expect file:// URIs to + // behave like it would if they were running a local HTTP server. See + // https://bugzilla.mozilla.org/show_bug.cgi?id=885597. + var fileUriAbsPath = relativeSource.replace(/^file:\/\//, ""); + if (url.scheme == "file" + && this._sources.has(fileUriAbsPath)) { + return this.sourcesContent[this._sources.indexOf(fileUriAbsPath)] + } + + if ((!url.path || url.path == "/") + && this._sources.has("/" + relativeSource)) { + return this.sourcesContent[this._sources.indexOf("/" + relativeSource)]; + } + } + + // This function is used recursively from + // IndexedSourceMapConsumer.prototype.sourceContentFor. In that case, we + // don't want to throw if we can't find the source - we just want to + // return null, so we provide a flag to exit gracefully. + if (nullOnMissing) { + return null; + } + else { + throw new Error('"' + relativeSource + '" is not in the SourceMap.'); + } + }; + + /** + * Returns the generated line and column information for the original source, + * line, and column positions provided. The only argument is an object with + * the following properties: + * + * - source: The filename of the original source. + * - line: The line number in the original source. The line number + * is 1-based. + * - column: The column number in the original source. The column + * number is 0-based. + * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or + * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the + * closest element that is smaller than or greater than the one we are + * searching for, respectively, if the exact element cannot be found. + * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'. + * + * and an object is returned with the following properties: + * + * - line: The line number in the generated source, or null. The + * line number is 1-based. + * - column: The column number in the generated source, or null. + * The column number is 0-based. + */ + BasicSourceMapConsumer.prototype.generatedPositionFor = + function SourceMapConsumer_generatedPositionFor(aArgs) { + var source = util.getArg(aArgs, 'source'); + source = this._findSourceIndex(source); + if (source < 0) { + return { + line: null, + column: null, + lastColumn: null + }; + } + + var needle = { + source: source, + originalLine: util.getArg(aArgs, 'line'), + originalColumn: util.getArg(aArgs, 'column') + }; + + var index = this._findMapping( + needle, + this._originalMappings, + "originalLine", + "originalColumn", + util.compareByOriginalPositions, + util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND) + ); + + if (index >= 0) { + var mapping = this._originalMappings[index]; + + if (mapping.source === needle.source) { + return { + line: util.getArg(mapping, 'generatedLine', null), + column: util.getArg(mapping, 'generatedColumn', null), + lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null) + }; + } + } + + return { + line: null, + column: null, + lastColumn: null + }; + }; + + exports.BasicSourceMapConsumer = BasicSourceMapConsumer; + + /** + * An IndexedSourceMapConsumer instance represents a parsed source map which + * we can query for information. It differs from BasicSourceMapConsumer in + * that it takes "indexed" source maps (i.e. ones with a "sections" field) as + * input. + * + * The first parameter is a raw source map (either as a JSON string, or already + * parsed to an object). According to the spec for indexed source maps, they + * have the following attributes: + * + * - version: Which version of the source map spec this map is following. + * - file: Optional. The generated file this source map is associated with. + * - sections: A list of section definitions. + * + * Each value under the "sections" field has two fields: + * - offset: The offset into the original specified at which this section + * begins to apply, defined as an object with a "line" and "column" + * field. + * - map: A source map definition. This source map could also be indexed, + * but doesn't have to be. + * + * Instead of the "map" field, it's also possible to have a "url" field + * specifying a URL to retrieve a source map from, but that's currently + * unsupported. + * + * Here's an example source map, taken from the source map spec[0], but + * modified to omit a section which uses the "url" field. + * + * { + * version : 3, + * file: "app.js", + * sections: [{ + * offset: {line:100, column:10}, + * map: { + * version : 3, + * file: "section.js", + * sources: ["foo.js", "bar.js"], + * names: ["src", "maps", "are", "fun"], + * mappings: "AAAA,E;;ABCDE;" + * } + * }], + * } + * + * The second parameter, if given, is a string whose value is the URL + * at which the source map was found. This URL is used to compute the + * sources array. + * + * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit#heading=h.535es3xeprgt + */ + function IndexedSourceMapConsumer(aSourceMap, aSourceMapURL) { + var sourceMap = aSourceMap; + if (typeof aSourceMap === 'string') { + sourceMap = util.parseSourceMapInput(aSourceMap); + } + + var version = util.getArg(sourceMap, 'version'); + var sections = util.getArg(sourceMap, 'sections'); + + if (version != this._version) { + throw new Error('Unsupported version: ' + version); + } + + this._sources = new ArraySet(); + this._names = new ArraySet(); + + var lastOffset = { + line: -1, + column: 0 + }; + this._sections = sections.map(function (s) { + if (s.url) { + // The url field will require support for asynchronicity. + // See https://github.com/mozilla/source-map/issues/16 + throw new Error('Support for url field in sections not implemented.'); + } + var offset = util.getArg(s, 'offset'); + var offsetLine = util.getArg(offset, 'line'); + var offsetColumn = util.getArg(offset, 'column'); + + if (offsetLine < lastOffset.line || + (offsetLine === lastOffset.line && offsetColumn < lastOffset.column)) { + throw new Error('Section offsets must be ordered and non-overlapping.'); + } + lastOffset = offset; + + return { + generatedOffset: { + // The offset fields are 0-based, but we use 1-based indices when + // encoding/decoding from VLQ. + generatedLine: offsetLine + 1, + generatedColumn: offsetColumn + 1 + }, + consumer: new SourceMapConsumer(util.getArg(s, 'map'), aSourceMapURL) + } + }); + } + + IndexedSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype); + IndexedSourceMapConsumer.prototype.constructor = SourceMapConsumer; + + /** + * The version of the source mapping spec that we are consuming. + */ + IndexedSourceMapConsumer.prototype._version = 3; + + /** + * The list of original sources. + */ + Object.defineProperty(IndexedSourceMapConsumer.prototype, 'sources', { + get: function () { + var sources = []; + for (var i = 0; i < this._sections.length; i++) { + for (var j = 0; j < this._sections[i].consumer.sources.length; j++) { + sources.push(this._sections[i].consumer.sources[j]); + } + } + return sources; + } + }); + + /** + * Returns the original source, line, and column information for the generated + * source's line and column positions provided. The only argument is an object + * with the following properties: + * + * - line: The line number in the generated source. The line number + * is 1-based. + * - column: The column number in the generated source. The column + * number is 0-based. + * + * and an object is returned with the following properties: + * + * - source: The original source file, or null. + * - line: The line number in the original source, or null. The + * line number is 1-based. + * - column: The column number in the original source, or null. The + * column number is 0-based. + * - name: The original identifier, or null. + */ + IndexedSourceMapConsumer.prototype.originalPositionFor = + function IndexedSourceMapConsumer_originalPositionFor(aArgs) { + var needle = { + generatedLine: util.getArg(aArgs, 'line'), + generatedColumn: util.getArg(aArgs, 'column') + }; + + // Find the section containing the generated position we're trying to map + // to an original position. + var sectionIndex = binarySearch.search(needle, this._sections, + function(needle, section) { + var cmp = needle.generatedLine - section.generatedOffset.generatedLine; + if (cmp) { + return cmp; + } + + return (needle.generatedColumn - + section.generatedOffset.generatedColumn); + }); + var section = this._sections[sectionIndex]; + + if (!section) { + return { + source: null, + line: null, + column: null, + name: null + }; + } + + return section.consumer.originalPositionFor({ + line: needle.generatedLine - + (section.generatedOffset.generatedLine - 1), + column: needle.generatedColumn - + (section.generatedOffset.generatedLine === needle.generatedLine + ? section.generatedOffset.generatedColumn - 1 + : 0), + bias: aArgs.bias + }); + }; + + /** + * Return true if we have the source content for every source in the source + * map, false otherwise. + */ + IndexedSourceMapConsumer.prototype.hasContentsOfAllSources = + function IndexedSourceMapConsumer_hasContentsOfAllSources() { + return this._sections.every(function (s) { + return s.consumer.hasContentsOfAllSources(); + }); + }; + + /** + * Returns the original source content. The only argument is the url of the + * original source file. Returns null if no original source content is + * available. + */ + IndexedSourceMapConsumer.prototype.sourceContentFor = + function IndexedSourceMapConsumer_sourceContentFor(aSource, nullOnMissing) { + for (var i = 0; i < this._sections.length; i++) { + var section = this._sections[i]; + + var content = section.consumer.sourceContentFor(aSource, true); + if (content) { + return content; + } + } + if (nullOnMissing) { + return null; + } + else { + throw new Error('"' + aSource + '" is not in the SourceMap.'); + } + }; + + /** + * Returns the generated line and column information for the original source, + * line, and column positions provided. The only argument is an object with + * the following properties: + * + * - source: The filename of the original source. + * - line: The line number in the original source. The line number + * is 1-based. + * - column: The column number in the original source. The column + * number is 0-based. + * + * and an object is returned with the following properties: + * + * - line: The line number in the generated source, or null. The + * line number is 1-based. + * - column: The column number in the generated source, or null. + * The column number is 0-based. + */ + IndexedSourceMapConsumer.prototype.generatedPositionFor = + function IndexedSourceMapConsumer_generatedPositionFor(aArgs) { + for (var i = 0; i < this._sections.length; i++) { + var section = this._sections[i]; + + // Only consider this section if the requested source is in the list of + // sources of the consumer. + if (section.consumer._findSourceIndex(util.getArg(aArgs, 'source')) === -1) { + continue; + } + var generatedPosition = section.consumer.generatedPositionFor(aArgs); + if (generatedPosition) { + var ret = { + line: generatedPosition.line + + (section.generatedOffset.generatedLine - 1), + column: generatedPosition.column + + (section.generatedOffset.generatedLine === generatedPosition.line + ? section.generatedOffset.generatedColumn - 1 + : 0) + }; + return ret; + } + } + + return { + line: null, + column: null + }; + }; + + /** + * Parse the mappings in a string in to a data structure which we can easily + * query (the ordered arrays in the `this.__generatedMappings` and + * `this.__originalMappings` properties). + */ + IndexedSourceMapConsumer.prototype._parseMappings = + function IndexedSourceMapConsumer_parseMappings(aStr, aSourceRoot) { + this.__generatedMappings = []; + this.__originalMappings = []; + for (var i = 0; i < this._sections.length; i++) { + var section = this._sections[i]; + var sectionMappings = section.consumer._generatedMappings; + for (var j = 0; j < sectionMappings.length; j++) { + var mapping = sectionMappings[j]; + + var source = section.consumer._sources.at(mapping.source); + source = util.computeSourceURL(section.consumer.sourceRoot, source, this._sourceMapURL); + this._sources.add(source); + source = this._sources.indexOf(source); + + var name = null; + if (mapping.name) { + name = section.consumer._names.at(mapping.name); + this._names.add(name); + name = this._names.indexOf(name); + } + + // The mappings coming from the consumer for the section have + // generated positions relative to the start of the section, so we + // need to offset them to be relative to the start of the concatenated + // generated file. + var adjustedMapping = { + source: source, + generatedLine: mapping.generatedLine + + (section.generatedOffset.generatedLine - 1), + generatedColumn: mapping.generatedColumn + + (section.generatedOffset.generatedLine === mapping.generatedLine + ? section.generatedOffset.generatedColumn - 1 + : 0), + originalLine: mapping.originalLine, + originalColumn: mapping.originalColumn, + name: name + }; + + this.__generatedMappings.push(adjustedMapping); + if (typeof adjustedMapping.originalLine === 'number') { + this.__originalMappings.push(adjustedMapping); + } + } + } + + quickSort(this.__generatedMappings, util.compareByGeneratedPositionsDeflated); + quickSort(this.__originalMappings, util.compareByOriginalPositions); + }; + + exports.IndexedSourceMapConsumer = IndexedSourceMapConsumer; + + +/***/ }), +/* 8 */ +/***/ (function(module, exports) { + + /* -*- Mode: js; js-indent-level: 2; -*- */ + /* + * Copyright 2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + */ + + exports.GREATEST_LOWER_BOUND = 1; + exports.LEAST_UPPER_BOUND = 2; + + /** + * Recursive implementation of binary search. + * + * @param aLow Indices here and lower do not contain the needle. + * @param aHigh Indices here and higher do not contain the needle. + * @param aNeedle The element being searched for. + * @param aHaystack The non-empty array being searched. + * @param aCompare Function which takes two elements and returns -1, 0, or 1. + * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or + * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the + * closest element that is smaller than or greater than the one we are + * searching for, respectively, if the exact element cannot be found. + */ + function recursiveSearch(aLow, aHigh, aNeedle, aHaystack, aCompare, aBias) { + // This function terminates when one of the following is true: + // + // 1. We find the exact element we are looking for. + // + // 2. We did not find the exact element, but we can return the index of + // the next-closest element. + // + // 3. We did not find the exact element, and there is no next-closest + // element than the one we are searching for, so we return -1. + var mid = Math.floor((aHigh - aLow) / 2) + aLow; + var cmp = aCompare(aNeedle, aHaystack[mid], true); + if (cmp === 0) { + // Found the element we are looking for. + return mid; + } + else if (cmp > 0) { + // Our needle is greater than aHaystack[mid]. + if (aHigh - mid > 1) { + // The element is in the upper half. + return recursiveSearch(mid, aHigh, aNeedle, aHaystack, aCompare, aBias); + } + + // The exact needle element was not found in this haystack. Determine if + // we are in termination case (3) or (2) and return the appropriate thing. + if (aBias == exports.LEAST_UPPER_BOUND) { + return aHigh < aHaystack.length ? aHigh : -1; + } else { + return mid; + } + } + else { + // Our needle is less than aHaystack[mid]. + if (mid - aLow > 1) { + // The element is in the lower half. + return recursiveSearch(aLow, mid, aNeedle, aHaystack, aCompare, aBias); + } + + // we are in termination case (3) or (2) and return the appropriate thing. + if (aBias == exports.LEAST_UPPER_BOUND) { + return mid; + } else { + return aLow < 0 ? -1 : aLow; + } + } + } + + /** + * This is an implementation of binary search which will always try and return + * the index of the closest element if there is no exact hit. This is because + * mappings between original and generated line/col pairs are single points, + * and there is an implicit region between each of them, so a miss just means + * that you aren't on the very start of a region. + * + * @param aNeedle The element you are looking for. + * @param aHaystack The array that is being searched. + * @param aCompare A function which takes the needle and an element in the + * array and returns -1, 0, or 1 depending on whether the needle is less + * than, equal to, or greater than the element, respectively. + * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or + * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the + * closest element that is smaller than or greater than the one we are + * searching for, respectively, if the exact element cannot be found. + * Defaults to 'binarySearch.GREATEST_LOWER_BOUND'. + */ + exports.search = function search(aNeedle, aHaystack, aCompare, aBias) { + if (aHaystack.length === 0) { + return -1; + } + + var index = recursiveSearch(-1, aHaystack.length, aNeedle, aHaystack, + aCompare, aBias || exports.GREATEST_LOWER_BOUND); + if (index < 0) { + return -1; + } + + // We have found either the exact element, or the next-closest element than + // the one we are searching for. However, there may be more than one such + // element. Make sure we always return the smallest of these. + while (index - 1 >= 0) { + if (aCompare(aHaystack[index], aHaystack[index - 1], true) !== 0) { + break; + } + --index; + } + + return index; + }; + + +/***/ }), +/* 9 */ +/***/ (function(module, exports) { + + /* -*- Mode: js; js-indent-level: 2; -*- */ + /* + * Copyright 2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + */ + + // It turns out that some (most?) JavaScript engines don't self-host + // `Array.prototype.sort`. This makes sense because C++ will likely remain + // faster than JS when doing raw CPU-intensive sorting. However, when using a + // custom comparator function, calling back and forth between the VM's C++ and + // JIT'd JS is rather slow *and* loses JIT type information, resulting in + // worse generated code for the comparator function than would be optimal. In + // fact, when sorting with a comparator, these costs outweigh the benefits of + // sorting in C++. By using our own JS-implemented Quick Sort (below), we get + // a ~3500ms mean speed-up in `bench/bench.html`. + + /** + * Swap the elements indexed by `x` and `y` in the array `ary`. + * + * @param {Array} ary + * The array. + * @param {Number} x + * The index of the first item. + * @param {Number} y + * The index of the second item. + */ + function swap(ary, x, y) { + var temp = ary[x]; + ary[x] = ary[y]; + ary[y] = temp; + } + + /** + * Returns a random integer within the range `low .. high` inclusive. + * + * @param {Number} low + * The lower bound on the range. + * @param {Number} high + * The upper bound on the range. + */ + function randomIntInRange(low, high) { + return Math.round(low + (Math.random() * (high - low))); + } + + /** + * The Quick Sort algorithm. + * + * @param {Array} ary + * An array to sort. + * @param {function} comparator + * Function to use to compare two items. + * @param {Number} p + * Start index of the array + * @param {Number} r + * End index of the array + */ + function doQuickSort(ary, comparator, p, r) { + // If our lower bound is less than our upper bound, we (1) partition the + // array into two pieces and (2) recurse on each half. If it is not, this is + // the empty array and our base case. + + if (p < r) { + // (1) Partitioning. + // + // The partitioning chooses a pivot between `p` and `r` and moves all + // elements that are less than or equal to the pivot to the before it, and + // all the elements that are greater than it after it. The effect is that + // once partition is done, the pivot is in the exact place it will be when + // the array is put in sorted order, and it will not need to be moved + // again. This runs in O(n) time. + + // Always choose a random pivot so that an input array which is reverse + // sorted does not cause O(n^2) running time. + var pivotIndex = randomIntInRange(p, r); + var i = p - 1; + + swap(ary, pivotIndex, r); + var pivot = ary[r]; + + // Immediately after `j` is incremented in this loop, the following hold + // true: + // + // * Every element in `ary[p .. i]` is less than or equal to the pivot. + // + // * Every element in `ary[i+1 .. j-1]` is greater than the pivot. + for (var j = p; j < r; j++) { + if (comparator(ary[j], pivot) <= 0) { + i += 1; + swap(ary, i, j); + } + } + + swap(ary, i + 1, j); + var q = i + 1; + + // (2) Recurse on each half. + + doQuickSort(ary, comparator, p, q - 1); + doQuickSort(ary, comparator, q + 1, r); + } + } + + /** + * Sort the given array in-place with the given comparator function. + * + * @param {Array} ary + * An array to sort. + * @param {function} comparator + * Function to use to compare two items. + */ + exports.quickSort = function (ary, comparator) { + doQuickSort(ary, comparator, 0, ary.length - 1); + }; + + +/***/ }), +/* 10 */ +/***/ (function(module, exports, __webpack_require__) { + + /* -*- Mode: js; js-indent-level: 2; -*- */ + /* + * Copyright 2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + */ + + var SourceMapGenerator = __webpack_require__(1).SourceMapGenerator; + var util = __webpack_require__(4); + + // Matches a Windows-style `\r\n` newline or a `\n` newline used by all other + // operating systems these days (capturing the result). + var REGEX_NEWLINE = /(\r?\n)/; + + // Newline character code for charCodeAt() comparisons + var NEWLINE_CODE = 10; + + // Private symbol for identifying `SourceNode`s when multiple versions of + // the source-map library are loaded. This MUST NOT CHANGE across + // versions! + var isSourceNode = "$$$isSourceNode$$$"; + + /** + * SourceNodes provide a way to abstract over interpolating/concatenating + * snippets of generated JavaScript source code while maintaining the line and + * column information associated with the original source code. + * + * @param aLine The original line number. + * @param aColumn The original column number. + * @param aSource The original source's filename. + * @param aChunks Optional. An array of strings which are snippets of + * generated JS, or other SourceNodes. + * @param aName The original identifier. + */ + function SourceNode(aLine, aColumn, aSource, aChunks, aName) { + this.children = []; + this.sourceContents = {}; + this.line = aLine == null ? null : aLine; + this.column = aColumn == null ? null : aColumn; + this.source = aSource == null ? null : aSource; + this.name = aName == null ? null : aName; + this[isSourceNode] = true; + if (aChunks != null) this.add(aChunks); + } + + /** + * Creates a SourceNode from generated code and a SourceMapConsumer. + * + * @param aGeneratedCode The generated code + * @param aSourceMapConsumer The SourceMap for the generated code + * @param aRelativePath Optional. The path that relative sources in the + * SourceMapConsumer should be relative to. + */ + SourceNode.fromStringWithSourceMap = + function SourceNode_fromStringWithSourceMap(aGeneratedCode, aSourceMapConsumer, aRelativePath) { + // The SourceNode we want to fill with the generated code + // and the SourceMap + var node = new SourceNode(); + + // All even indices of this array are one line of the generated code, + // while all odd indices are the newlines between two adjacent lines + // (since `REGEX_NEWLINE` captures its match). + // Processed fragments are accessed by calling `shiftNextLine`. + var remainingLines = aGeneratedCode.split(REGEX_NEWLINE); + var remainingLinesIndex = 0; + var shiftNextLine = function() { + var lineContents = getNextLine(); + // The last line of a file might not have a newline. + var newLine = getNextLine() || ""; + return lineContents + newLine; + + function getNextLine() { + return remainingLinesIndex < remainingLines.length ? + remainingLines[remainingLinesIndex++] : undefined; + } + }; + + // We need to remember the position of "remainingLines" + var lastGeneratedLine = 1, lastGeneratedColumn = 0; + + // The generate SourceNodes we need a code range. + // To extract it current and last mapping is used. + // Here we store the last mapping. + var lastMapping = null; + + aSourceMapConsumer.eachMapping(function (mapping) { + if (lastMapping !== null) { + // We add the code from "lastMapping" to "mapping": + // First check if there is a new line in between. + if (lastGeneratedLine < mapping.generatedLine) { + // Associate first line with "lastMapping" + addMappingWithCode(lastMapping, shiftNextLine()); + lastGeneratedLine++; + lastGeneratedColumn = 0; + // The remaining code is added without mapping + } else { + // There is no new line in between. + // Associate the code between "lastGeneratedColumn" and + // "mapping.generatedColumn" with "lastMapping" + var nextLine = remainingLines[remainingLinesIndex] || ''; + var code = nextLine.substr(0, mapping.generatedColumn - + lastGeneratedColumn); + remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn - + lastGeneratedColumn); + lastGeneratedColumn = mapping.generatedColumn; + addMappingWithCode(lastMapping, code); + // No more remaining code, continue + lastMapping = mapping; + return; + } + } + // We add the generated code until the first mapping + // to the SourceNode without any mapping. + // Each line is added as separate string. + while (lastGeneratedLine < mapping.generatedLine) { + node.add(shiftNextLine()); + lastGeneratedLine++; + } + if (lastGeneratedColumn < mapping.generatedColumn) { + var nextLine = remainingLines[remainingLinesIndex] || ''; + node.add(nextLine.substr(0, mapping.generatedColumn)); + remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn); + lastGeneratedColumn = mapping.generatedColumn; + } + lastMapping = mapping; + }, this); + // We have processed all mappings. + if (remainingLinesIndex < remainingLines.length) { + if (lastMapping) { + // Associate the remaining code in the current line with "lastMapping" + addMappingWithCode(lastMapping, shiftNextLine()); + } + // and add the remaining lines without any mapping + node.add(remainingLines.splice(remainingLinesIndex).join("")); + } + + // Copy sourcesContent into SourceNode + aSourceMapConsumer.sources.forEach(function (sourceFile) { + var content = aSourceMapConsumer.sourceContentFor(sourceFile); + if (content != null) { + if (aRelativePath != null) { + sourceFile = util.join(aRelativePath, sourceFile); + } + node.setSourceContent(sourceFile, content); + } + }); + + return node; + + function addMappingWithCode(mapping, code) { + if (mapping === null || mapping.source === undefined) { + node.add(code); + } else { + var source = aRelativePath + ? util.join(aRelativePath, mapping.source) + : mapping.source; + node.add(new SourceNode(mapping.originalLine, + mapping.originalColumn, + source, + code, + mapping.name)); + } + } + }; + + /** + * Add a chunk of generated JS to this source node. + * + * @param aChunk A string snippet of generated JS code, another instance of + * SourceNode, or an array where each member is one of those things. + */ + SourceNode.prototype.add = function SourceNode_add(aChunk) { + if (Array.isArray(aChunk)) { + aChunk.forEach(function (chunk) { + this.add(chunk); + }, this); + } + else if (aChunk[isSourceNode] || typeof aChunk === "string") { + if (aChunk) { + this.children.push(aChunk); + } + } + else { + throw new TypeError( + "Expected a SourceNode, string, or an array of SourceNodes and strings. Got " + aChunk + ); + } + return this; + }; + + /** + * Add a chunk of generated JS to the beginning of this source node. + * + * @param aChunk A string snippet of generated JS code, another instance of + * SourceNode, or an array where each member is one of those things. + */ + SourceNode.prototype.prepend = function SourceNode_prepend(aChunk) { + if (Array.isArray(aChunk)) { + for (var i = aChunk.length-1; i >= 0; i--) { + this.prepend(aChunk[i]); + } + } + else if (aChunk[isSourceNode] || typeof aChunk === "string") { + this.children.unshift(aChunk); + } + else { + throw new TypeError( + "Expected a SourceNode, string, or an array of SourceNodes and strings. Got " + aChunk + ); + } + return this; + }; + + /** + * Walk over the tree of JS snippets in this node and its children. The + * walking function is called once for each snippet of JS and is passed that + * snippet and the its original associated source's line/column location. + * + * @param aFn The traversal function. + */ + SourceNode.prototype.walk = function SourceNode_walk(aFn) { + var chunk; + for (var i = 0, len = this.children.length; i < len; i++) { + chunk = this.children[i]; + if (chunk[isSourceNode]) { + chunk.walk(aFn); + } + else { + if (chunk !== '') { + aFn(chunk, { source: this.source, + line: this.line, + column: this.column, + name: this.name }); + } + } + } + }; + + /** + * Like `String.prototype.join` except for SourceNodes. Inserts `aStr` between + * each of `this.children`. + * + * @param aSep The separator. + */ + SourceNode.prototype.join = function SourceNode_join(aSep) { + var newChildren; + var i; + var len = this.children.length; + if (len > 0) { + newChildren = []; + for (i = 0; i < len-1; i++) { + newChildren.push(this.children[i]); + newChildren.push(aSep); + } + newChildren.push(this.children[i]); + this.children = newChildren; + } + return this; + }; + + /** + * Call String.prototype.replace on the very right-most source snippet. Useful + * for trimming whitespace from the end of a source node, etc. + * + * @param aPattern The pattern to replace. + * @param aReplacement The thing to replace the pattern with. + */ + SourceNode.prototype.replaceRight = function SourceNode_replaceRight(aPattern, aReplacement) { + var lastChild = this.children[this.children.length - 1]; + if (lastChild[isSourceNode]) { + lastChild.replaceRight(aPattern, aReplacement); + } + else if (typeof lastChild === 'string') { + this.children[this.children.length - 1] = lastChild.replace(aPattern, aReplacement); + } + else { + this.children.push(''.replace(aPattern, aReplacement)); + } + return this; + }; + + /** + * Set the source content for a source file. This will be added to the SourceMapGenerator + * in the sourcesContent field. + * + * @param aSourceFile The filename of the source file + * @param aSourceContent The content of the source file + */ + SourceNode.prototype.setSourceContent = + function SourceNode_setSourceContent(aSourceFile, aSourceContent) { + this.sourceContents[util.toSetString(aSourceFile)] = aSourceContent; + }; + + /** + * Walk over the tree of SourceNodes. The walking function is called for each + * source file content and is passed the filename and source content. + * + * @param aFn The traversal function. + */ + SourceNode.prototype.walkSourceContents = + function SourceNode_walkSourceContents(aFn) { + for (var i = 0, len = this.children.length; i < len; i++) { + if (this.children[i][isSourceNode]) { + this.children[i].walkSourceContents(aFn); + } + } + + var sources = Object.keys(this.sourceContents); + for (var i = 0, len = sources.length; i < len; i++) { + aFn(util.fromSetString(sources[i]), this.sourceContents[sources[i]]); + } + }; + + /** + * Return the string representation of this source node. Walks over the tree + * and concatenates all the various snippets together to one string. + */ + SourceNode.prototype.toString = function SourceNode_toString() { + var str = ""; + this.walk(function (chunk) { + str += chunk; + }); + return str; + }; + + /** + * Returns the string representation of this source node along with a source + * map. + */ + SourceNode.prototype.toStringWithSourceMap = function SourceNode_toStringWithSourceMap(aArgs) { + var generated = { + code: "", + line: 1, + column: 0 + }; + var map = new SourceMapGenerator(aArgs); + var sourceMappingActive = false; + var lastOriginalSource = null; + var lastOriginalLine = null; + var lastOriginalColumn = null; + var lastOriginalName = null; + this.walk(function (chunk, original) { + generated.code += chunk; + if (original.source !== null + && original.line !== null + && original.column !== null) { + if(lastOriginalSource !== original.source + || lastOriginalLine !== original.line + || lastOriginalColumn !== original.column + || lastOriginalName !== original.name) { + map.addMapping({ + source: original.source, + original: { + line: original.line, + column: original.column + }, + generated: { + line: generated.line, + column: generated.column + }, + name: original.name + }); + } + lastOriginalSource = original.source; + lastOriginalLine = original.line; + lastOriginalColumn = original.column; + lastOriginalName = original.name; + sourceMappingActive = true; + } else if (sourceMappingActive) { + map.addMapping({ + generated: { + line: generated.line, + column: generated.column + } + }); + lastOriginalSource = null; + sourceMappingActive = false; + } + for (var idx = 0, length = chunk.length; idx < length; idx++) { + if (chunk.charCodeAt(idx) === NEWLINE_CODE) { + generated.line++; + generated.column = 0; + // Mappings end at eol + if (idx + 1 === length) { + lastOriginalSource = null; + sourceMappingActive = false; + } else if (sourceMappingActive) { + map.addMapping({ + source: original.source, + original: { + line: original.line, + column: original.column + }, + generated: { + line: generated.line, + column: generated.column + }, + name: original.name + }); + } + } else { + generated.column++; + } + } + }); + this.walkSourceContents(function (sourceFile, sourceContent) { + map.setSourceContent(sourceFile, sourceContent); + }); + + return { code: generated.code, map: map }; + }; + + exports.SourceNode = SourceNode; + + +/***/ }) +/******/ ]) +}); +; \ No newline at end of file diff --git a/node_modules/source-map/dist/source-map.min.js b/node_modules/source-map/dist/source-map.min.js new file mode 100644 index 0000000..c7c72da --- /dev/null +++ b/node_modules/source-map/dist/source-map.min.js @@ -0,0 +1,2 @@ +!function(e,n){"object"==typeof exports&&"object"==typeof module?module.exports=n():"function"==typeof define&&define.amd?define([],n):"object"==typeof exports?exports.sourceMap=n():e.sourceMap=n()}(this,function(){return function(e){function n(t){if(r[t])return r[t].exports;var o=r[t]={exports:{},id:t,loaded:!1};return e[t].call(o.exports,o,o.exports,n),o.loaded=!0,o.exports}var r={};return n.m=e,n.c=r,n.p="",n(0)}([function(e,n,r){n.SourceMapGenerator=r(1).SourceMapGenerator,n.SourceMapConsumer=r(7).SourceMapConsumer,n.SourceNode=r(10).SourceNode},function(e,n,r){function t(e){e||(e={}),this._file=i.getArg(e,"file",null),this._sourceRoot=i.getArg(e,"sourceRoot",null),this._skipValidation=i.getArg(e,"skipValidation",!1),this._sources=new s,this._names=new s,this._mappings=new a,this._sourcesContents=null}var o=r(2),i=r(4),s=r(5).ArraySet,a=r(6).MappingList;t.prototype._version=3,t.fromSourceMap=function(e){var n=e.sourceRoot,r=new t({file:e.file,sourceRoot:n});return e.eachMapping(function(e){var t={generated:{line:e.generatedLine,column:e.generatedColumn}};null!=e.source&&(t.source=e.source,null!=n&&(t.source=i.relative(n,t.source)),t.original={line:e.originalLine,column:e.originalColumn},null!=e.name&&(t.name=e.name)),r.addMapping(t)}),e.sources.forEach(function(t){var o=t;null!==n&&(o=i.relative(n,t)),r._sources.has(o)||r._sources.add(o);var s=e.sourceContentFor(t);null!=s&&r.setSourceContent(t,s)}),r},t.prototype.addMapping=function(e){var n=i.getArg(e,"generated"),r=i.getArg(e,"original",null),t=i.getArg(e,"source",null),o=i.getArg(e,"name",null);this._skipValidation||this._validateMapping(n,r,t,o),null!=t&&(t=String(t),this._sources.has(t)||this._sources.add(t)),null!=o&&(o=String(o),this._names.has(o)||this._names.add(o)),this._mappings.add({generatedLine:n.line,generatedColumn:n.column,originalLine:null!=r&&r.line,originalColumn:null!=r&&r.column,source:t,name:o})},t.prototype.setSourceContent=function(e,n){var r=e;null!=this._sourceRoot&&(r=i.relative(this._sourceRoot,r)),null!=n?(this._sourcesContents||(this._sourcesContents=Object.create(null)),this._sourcesContents[i.toSetString(r)]=n):this._sourcesContents&&(delete this._sourcesContents[i.toSetString(r)],0===Object.keys(this._sourcesContents).length&&(this._sourcesContents=null))},t.prototype.applySourceMap=function(e,n,r){var t=n;if(null==n){if(null==e.file)throw new Error('SourceMapGenerator.prototype.applySourceMap requires either an explicit source file, or the source map\'s "file" property. Both were omitted.');t=e.file}var o=this._sourceRoot;null!=o&&(t=i.relative(o,t));var a=new s,u=new s;this._mappings.unsortedForEach(function(n){if(n.source===t&&null!=n.originalLine){var s=e.originalPositionFor({line:n.originalLine,column:n.originalColumn});null!=s.source&&(n.source=s.source,null!=r&&(n.source=i.join(r,n.source)),null!=o&&(n.source=i.relative(o,n.source)),n.originalLine=s.line,n.originalColumn=s.column,null!=s.name&&(n.name=s.name))}var l=n.source;null==l||a.has(l)||a.add(l);var c=n.name;null==c||u.has(c)||u.add(c)},this),this._sources=a,this._names=u,e.sources.forEach(function(n){var t=e.sourceContentFor(n);null!=t&&(null!=r&&(n=i.join(r,n)),null!=o&&(n=i.relative(o,n)),this.setSourceContent(n,t))},this)},t.prototype._validateMapping=function(e,n,r,t){if(n&&"number"!=typeof n.line&&"number"!=typeof n.column)throw new Error("original.line and original.column are not numbers -- you probably meant to omit the original mapping entirely and only map the generated position. If so, pass null for the original mapping instead of an object with empty or null values.");if((!(e&&"line"in e&&"column"in e&&e.line>0&&e.column>=0)||n||r||t)&&!(e&&"line"in e&&"column"in e&&n&&"line"in n&&"column"in n&&e.line>0&&e.column>=0&&n.line>0&&n.column>=0&&r))throw new Error("Invalid mapping: "+JSON.stringify({generated:e,source:r,original:n,name:t}))},t.prototype._serializeMappings=function(){for(var e,n,r,t,s=0,a=1,u=0,l=0,c=0,g=0,p="",h=this._mappings.toArray(),f=0,d=h.length;f0){if(!i.compareByGeneratedPositionsInflated(n,h[f-1]))continue;e+=","}e+=o.encode(n.generatedColumn-s),s=n.generatedColumn,null!=n.source&&(t=this._sources.indexOf(n.source),e+=o.encode(t-g),g=t,e+=o.encode(n.originalLine-1-l),l=n.originalLine-1,e+=o.encode(n.originalColumn-u),u=n.originalColumn,null!=n.name&&(r=this._names.indexOf(n.name),e+=o.encode(r-c),c=r)),p+=e}return p},t.prototype._generateSourcesContent=function(e,n){return e.map(function(e){if(!this._sourcesContents)return null;null!=n&&(e=i.relative(n,e));var r=i.toSetString(e);return Object.prototype.hasOwnProperty.call(this._sourcesContents,r)?this._sourcesContents[r]:null},this)},t.prototype.toJSON=function(){var e={version:this._version,sources:this._sources.toArray(),names:this._names.toArray(),mappings:this._serializeMappings()};return null!=this._file&&(e.file=this._file),null!=this._sourceRoot&&(e.sourceRoot=this._sourceRoot),this._sourcesContents&&(e.sourcesContent=this._generateSourcesContent(e.sources,e.sourceRoot)),e},t.prototype.toString=function(){return JSON.stringify(this.toJSON())},n.SourceMapGenerator=t},function(e,n,r){function t(e){return e<0?(-e<<1)+1:(e<<1)+0}function o(e){var n=1===(1&e),r=e>>1;return n?-r:r}var i=r(3),s=5,a=1<>>=s,o>0&&(n|=l),r+=i.encode(n);while(o>0);return r},n.decode=function(e,n,r){var t,a,c=e.length,g=0,p=0;do{if(n>=c)throw new Error("Expected more digits in base 64 VLQ value.");if(a=i.decode(e.charCodeAt(n++)),a===-1)throw new Error("Invalid base64 digit: "+e.charAt(n-1));t=!!(a&l),a&=u,g+=a<=0;c--)s=u[c],"."===s?u.splice(c,1):".."===s?l++:l>0&&(""===s?(u.splice(c+1,l),l=0):(u.splice(c,2),l--));return r=u.join("/"),""===r&&(r=a?"/":"."),i?(i.path=r,o(i)):r}function s(e,n){""===e&&(e="."),""===n&&(n=".");var r=t(n),s=t(e);if(s&&(e=s.path||"/"),r&&!r.scheme)return s&&(r.scheme=s.scheme),o(r);if(r||n.match(y))return n;if(s&&!s.host&&!s.path)return s.host=n,o(s);var a="/"===n.charAt(0)?n:i(e.replace(/\/+$/,"")+"/"+n);return s?(s.path=a,o(s)):a}function a(e,n){""===e&&(e="."),e=e.replace(/\/$/,"");for(var r=0;0!==n.indexOf(e+"/");){var t=e.lastIndexOf("/");if(t<0)return n;if(e=e.slice(0,t),e.match(/^([^\/]+:\/)?\/*$/))return n;++r}return Array(r+1).join("../")+n.substr(e.length+1)}function u(e){return e}function l(e){return g(e)?"$"+e:e}function c(e){return g(e)?e.slice(1):e}function g(e){if(!e)return!1;var n=e.length;if(n<9)return!1;if(95!==e.charCodeAt(n-1)||95!==e.charCodeAt(n-2)||111!==e.charCodeAt(n-3)||116!==e.charCodeAt(n-4)||111!==e.charCodeAt(n-5)||114!==e.charCodeAt(n-6)||112!==e.charCodeAt(n-7)||95!==e.charCodeAt(n-8)||95!==e.charCodeAt(n-9))return!1;for(var r=n-10;r>=0;r--)if(36!==e.charCodeAt(r))return!1;return!0}function p(e,n,r){var t=f(e.source,n.source);return 0!==t?t:(t=e.originalLine-n.originalLine,0!==t?t:(t=e.originalColumn-n.originalColumn,0!==t||r?t:(t=e.generatedColumn-n.generatedColumn,0!==t?t:(t=e.generatedLine-n.generatedLine,0!==t?t:f(e.name,n.name)))))}function h(e,n,r){var t=e.generatedLine-n.generatedLine;return 0!==t?t:(t=e.generatedColumn-n.generatedColumn,0!==t||r?t:(t=f(e.source,n.source),0!==t?t:(t=e.originalLine-n.originalLine,0!==t?t:(t=e.originalColumn-n.originalColumn,0!==t?t:f(e.name,n.name)))))}function f(e,n){return e===n?0:null===e?1:null===n?-1:e>n?1:-1}function d(e,n){var r=e.generatedLine-n.generatedLine;return 0!==r?r:(r=e.generatedColumn-n.generatedColumn,0!==r?r:(r=f(e.source,n.source),0!==r?r:(r=e.originalLine-n.originalLine,0!==r?r:(r=e.originalColumn-n.originalColumn,0!==r?r:f(e.name,n.name)))))}function m(e){return JSON.parse(e.replace(/^\)]}'[^\n]*\n/,""))}function _(e,n,r){if(n=n||"",e&&("/"!==e[e.length-1]&&"/"!==n[0]&&(e+="/"),n=e+n),r){var a=t(r);if(!a)throw new Error("sourceMapURL could not be parsed");if(a.path){var u=a.path.lastIndexOf("/");u>=0&&(a.path=a.path.substring(0,u+1))}n=s(o(a),n)}return i(n)}n.getArg=r;var v=/^(?:([\w+\-.]+):)?\/\/(?:(\w+:\w+)@)?([\w.-]*)(?::(\d+))?(.*)$/,y=/^data:.+\,.+$/;n.urlParse=t,n.urlGenerate=o,n.normalize=i,n.join=s,n.isAbsolute=function(e){return"/"===e.charAt(0)||v.test(e)},n.relative=a;var C=function(){var e=Object.create(null);return!("__proto__"in e)}();n.toSetString=C?u:l,n.fromSetString=C?u:c,n.compareByOriginalPositions=p,n.compareByGeneratedPositionsDeflated=h,n.compareByGeneratedPositionsInflated=d,n.parseSourceMapInput=m,n.computeSourceURL=_},function(e,n,r){function t(){this._array=[],this._set=s?new Map:Object.create(null)}var o=r(4),i=Object.prototype.hasOwnProperty,s="undefined"!=typeof Map;t.fromArray=function(e,n){for(var r=new t,o=0,i=e.length;o=0)return n}else{var r=o.toSetString(e);if(i.call(this._set,r))return this._set[r]}throw new Error('"'+e+'" is not in the set.')},t.prototype.at=function(e){if(e>=0&&er||t==r&&s>=o||i.compareByGeneratedPositionsInflated(e,n)<=0}function o(){this._array=[],this._sorted=!0,this._last={generatedLine:-1,generatedColumn:0}}var i=r(4);o.prototype.unsortedForEach=function(e,n){this._array.forEach(e,n)},o.prototype.add=function(e){t(this._last,e)?(this._last=e,this._array.push(e)):(this._sorted=!1,this._array.push(e))},o.prototype.toArray=function(){return this._sorted||(this._array.sort(i.compareByGeneratedPositionsInflated),this._sorted=!0),this._array},n.MappingList=o},function(e,n,r){function t(e,n){var r=e;return"string"==typeof e&&(r=a.parseSourceMapInput(e)),null!=r.sections?new s(r,n):new o(r,n)}function o(e,n){var r=e;"string"==typeof e&&(r=a.parseSourceMapInput(e));var t=a.getArg(r,"version"),o=a.getArg(r,"sources"),i=a.getArg(r,"names",[]),s=a.getArg(r,"sourceRoot",null),u=a.getArg(r,"sourcesContent",null),c=a.getArg(r,"mappings"),g=a.getArg(r,"file",null);if(t!=this._version)throw new Error("Unsupported version: "+t);s&&(s=a.normalize(s)),o=o.map(String).map(a.normalize).map(function(e){return s&&a.isAbsolute(s)&&a.isAbsolute(e)?a.relative(s,e):e}),this._names=l.fromArray(i.map(String),!0),this._sources=l.fromArray(o,!0),this._absoluteSources=this._sources.toArray().map(function(e){return a.computeSourceURL(s,e,n)}),this.sourceRoot=s,this.sourcesContent=u,this._mappings=c,this._sourceMapURL=n,this.file=g}function i(){this.generatedLine=0,this.generatedColumn=0,this.source=null,this.originalLine=null,this.originalColumn=null,this.name=null}function s(e,n){var r=e;"string"==typeof e&&(r=a.parseSourceMapInput(e));var o=a.getArg(r,"version"),i=a.getArg(r,"sections");if(o!=this._version)throw new Error("Unsupported version: "+o);this._sources=new l,this._names=new l;var s={line:-1,column:0};this._sections=i.map(function(e){if(e.url)throw new Error("Support for url field in sections not implemented.");var r=a.getArg(e,"offset"),o=a.getArg(r,"line"),i=a.getArg(r,"column");if(o=0){var i=this._originalMappings[o];if(void 0===e.column)for(var s=i.originalLine;i&&i.originalLine===s;)t.push({line:a.getArg(i,"generatedLine",null),column:a.getArg(i,"generatedColumn",null),lastColumn:a.getArg(i,"lastGeneratedColumn",null)}),i=this._originalMappings[++o];else for(var l=i.originalColumn;i&&i.originalLine===n&&i.originalColumn==l;)t.push({line:a.getArg(i,"generatedLine",null),column:a.getArg(i,"generatedColumn",null),lastColumn:a.getArg(i,"lastGeneratedColumn",null)}),i=this._originalMappings[++o]}return t},n.SourceMapConsumer=t,o.prototype=Object.create(t.prototype),o.prototype.consumer=t,o.prototype._findSourceIndex=function(e){var n=e;if(null!=this.sourceRoot&&(n=a.relative(this.sourceRoot,n)),this._sources.has(n))return this._sources.indexOf(n);var r;for(r=0;r1&&(r.source=d+o[1],d+=o[1],r.originalLine=h+o[2],h=r.originalLine,r.originalLine+=1,r.originalColumn=f+o[3],f=r.originalColumn,o.length>4&&(r.name=m+o[4],m+=o[4])),A.push(r),"number"==typeof r.originalLine&&S.push(r)}g(A,a.compareByGeneratedPositionsDeflated),this.__generatedMappings=A,g(S,a.compareByOriginalPositions),this.__originalMappings=S},o.prototype._findMapping=function(e,n,r,t,o,i){if(e[r]<=0)throw new TypeError("Line must be greater than or equal to 1, got "+e[r]);if(e[t]<0)throw new TypeError("Column must be greater than or equal to 0, got "+e[t]);return u.search(e,n,o,i)},o.prototype.computeColumnSpans=function(){for(var e=0;e=0){var o=this._generatedMappings[r];if(o.generatedLine===n.generatedLine){var i=a.getArg(o,"source",null);null!==i&&(i=this._sources.at(i),i=a.computeSourceURL(this.sourceRoot,i,this._sourceMapURL));var s=a.getArg(o,"name",null);return null!==s&&(s=this._names.at(s)),{source:i,line:a.getArg(o,"originalLine",null),column:a.getArg(o,"originalColumn",null),name:s}}}return{source:null,line:null,column:null,name:null}},o.prototype.hasContentsOfAllSources=function(){return!!this.sourcesContent&&(this.sourcesContent.length>=this._sources.size()&&!this.sourcesContent.some(function(e){return null==e}))},o.prototype.sourceContentFor=function(e,n){if(!this.sourcesContent)return null;var r=this._findSourceIndex(e);if(r>=0)return this.sourcesContent[r];var t=e;null!=this.sourceRoot&&(t=a.relative(this.sourceRoot,t));var o;if(null!=this.sourceRoot&&(o=a.urlParse(this.sourceRoot))){var i=t.replace(/^file:\/\//,"");if("file"==o.scheme&&this._sources.has(i))return this.sourcesContent[this._sources.indexOf(i)];if((!o.path||"/"==o.path)&&this._sources.has("/"+t))return this.sourcesContent[this._sources.indexOf("/"+t)]}if(n)return null;throw new Error('"'+t+'" is not in the SourceMap.')},o.prototype.generatedPositionFor=function(e){var n=a.getArg(e,"source");if(n=this._findSourceIndex(n),n<0)return{line:null,column:null,lastColumn:null};var r={source:n,originalLine:a.getArg(e,"line"),originalColumn:a.getArg(e,"column")},o=this._findMapping(r,this._originalMappings,"originalLine","originalColumn",a.compareByOriginalPositions,a.getArg(e,"bias",t.GREATEST_LOWER_BOUND));if(o>=0){var i=this._originalMappings[o];if(i.source===r.source)return{line:a.getArg(i,"generatedLine",null),column:a.getArg(i,"generatedColumn",null),lastColumn:a.getArg(i,"lastGeneratedColumn",null)}}return{line:null,column:null,lastColumn:null}},n.BasicSourceMapConsumer=o,s.prototype=Object.create(t.prototype),s.prototype.constructor=t,s.prototype._version=3,Object.defineProperty(s.prototype,"sources",{get:function(){for(var e=[],n=0;n0?t-u>1?r(u,t,o,i,s,a):a==n.LEAST_UPPER_BOUND?t1?r(e,u,o,i,s,a):a==n.LEAST_UPPER_BOUND?u:e<0?-1:e}n.GREATEST_LOWER_BOUND=1,n.LEAST_UPPER_BOUND=2,n.search=function(e,t,o,i){if(0===t.length)return-1;var s=r(-1,t.length,e,t,o,i||n.GREATEST_LOWER_BOUND);if(s<0)return-1;for(;s-1>=0&&0===o(t[s],t[s-1],!0);)--s;return s}},function(e,n){function r(e,n,r){var t=e[n];e[n]=e[r],e[r]=t}function t(e,n){return Math.round(e+Math.random()*(n-e))}function o(e,n,i,s){if(i=0;n--)this.prepend(e[n]);else{if(!e[u]&&"string"!=typeof e)throw new TypeError("Expected a SourceNode, string, or an array of SourceNodes and strings. Got "+e);this.children.unshift(e)}return this},t.prototype.walk=function(e){for(var n,r=0,t=this.children.length;r0){for(n=[],r=0;r 0 && aGenerated.column >= 0\n\t && !aOriginal && !aSource && !aName) {\n\t // Case 1.\n\t return;\n\t }\n\t else if (aGenerated && 'line' in aGenerated && 'column' in aGenerated\n\t && aOriginal && 'line' in aOriginal && 'column' in aOriginal\n\t && aGenerated.line > 0 && aGenerated.column >= 0\n\t && aOriginal.line > 0 && aOriginal.column >= 0\n\t && aSource) {\n\t // Cases 2 and 3.\n\t return;\n\t }\n\t else {\n\t throw new Error('Invalid mapping: ' + JSON.stringify({\n\t generated: aGenerated,\n\t source: aSource,\n\t original: aOriginal,\n\t name: aName\n\t }));\n\t }\n\t };\n\t\n\t/**\n\t * Serialize the accumulated mappings in to the stream of base 64 VLQs\n\t * specified by the source map format.\n\t */\n\tSourceMapGenerator.prototype._serializeMappings =\n\t function SourceMapGenerator_serializeMappings() {\n\t var previousGeneratedColumn = 0;\n\t var previousGeneratedLine = 1;\n\t var previousOriginalColumn = 0;\n\t var previousOriginalLine = 0;\n\t var previousName = 0;\n\t var previousSource = 0;\n\t var result = '';\n\t var next;\n\t var mapping;\n\t var nameIdx;\n\t var sourceIdx;\n\t\n\t var mappings = this._mappings.toArray();\n\t for (var i = 0, len = mappings.length; i < len; i++) {\n\t mapping = mappings[i];\n\t next = ''\n\t\n\t if (mapping.generatedLine !== previousGeneratedLine) {\n\t previousGeneratedColumn = 0;\n\t while (mapping.generatedLine !== previousGeneratedLine) {\n\t next += ';';\n\t previousGeneratedLine++;\n\t }\n\t }\n\t else {\n\t if (i > 0) {\n\t if (!util.compareByGeneratedPositionsInflated(mapping, mappings[i - 1])) {\n\t continue;\n\t }\n\t next += ',';\n\t }\n\t }\n\t\n\t next += base64VLQ.encode(mapping.generatedColumn\n\t - previousGeneratedColumn);\n\t previousGeneratedColumn = mapping.generatedColumn;\n\t\n\t if (mapping.source != null) {\n\t sourceIdx = this._sources.indexOf(mapping.source);\n\t next += base64VLQ.encode(sourceIdx - previousSource);\n\t previousSource = sourceIdx;\n\t\n\t // lines are stored 0-based in SourceMap spec version 3\n\t next += base64VLQ.encode(mapping.originalLine - 1\n\t - previousOriginalLine);\n\t previousOriginalLine = mapping.originalLine - 1;\n\t\n\t next += base64VLQ.encode(mapping.originalColumn\n\t - previousOriginalColumn);\n\t previousOriginalColumn = mapping.originalColumn;\n\t\n\t if (mapping.name != null) {\n\t nameIdx = this._names.indexOf(mapping.name);\n\t next += base64VLQ.encode(nameIdx - previousName);\n\t previousName = nameIdx;\n\t }\n\t }\n\t\n\t result += next;\n\t }\n\t\n\t return result;\n\t };\n\t\n\tSourceMapGenerator.prototype._generateSourcesContent =\n\t function SourceMapGenerator_generateSourcesContent(aSources, aSourceRoot) {\n\t return aSources.map(function (source) {\n\t if (!this._sourcesContents) {\n\t return null;\n\t }\n\t if (aSourceRoot != null) {\n\t source = util.relative(aSourceRoot, source);\n\t }\n\t var key = util.toSetString(source);\n\t return Object.prototype.hasOwnProperty.call(this._sourcesContents, key)\n\t ? this._sourcesContents[key]\n\t : null;\n\t }, this);\n\t };\n\t\n\t/**\n\t * Externalize the source map.\n\t */\n\tSourceMapGenerator.prototype.toJSON =\n\t function SourceMapGenerator_toJSON() {\n\t var map = {\n\t version: this._version,\n\t sources: this._sources.toArray(),\n\t names: this._names.toArray(),\n\t mappings: this._serializeMappings()\n\t };\n\t if (this._file != null) {\n\t map.file = this._file;\n\t }\n\t if (this._sourceRoot != null) {\n\t map.sourceRoot = this._sourceRoot;\n\t }\n\t if (this._sourcesContents) {\n\t map.sourcesContent = this._generateSourcesContent(map.sources, map.sourceRoot);\n\t }\n\t\n\t return map;\n\t };\n\t\n\t/**\n\t * Render the source map being generated to a string.\n\t */\n\tSourceMapGenerator.prototype.toString =\n\t function SourceMapGenerator_toString() {\n\t return JSON.stringify(this.toJSON());\n\t };\n\t\n\texports.SourceMapGenerator = SourceMapGenerator;\n\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/* -*- Mode: js; js-indent-level: 2; -*- */\n\t/*\n\t * Copyright 2011 Mozilla Foundation and contributors\n\t * Licensed under the New BSD license. See LICENSE or:\n\t * http://opensource.org/licenses/BSD-3-Clause\n\t *\n\t * Based on the Base 64 VLQ implementation in Closure Compiler:\n\t * https://code.google.com/p/closure-compiler/source/browse/trunk/src/com/google/debugging/sourcemap/Base64VLQ.java\n\t *\n\t * Copyright 2011 The Closure Compiler Authors. All rights reserved.\n\t * Redistribution and use in source and binary forms, with or without\n\t * modification, are permitted provided that the following conditions are\n\t * met:\n\t *\n\t * * Redistributions of source code must retain the above copyright\n\t * notice, this list of conditions and the following disclaimer.\n\t * * Redistributions in binary form must reproduce the above\n\t * copyright notice, this list of conditions and the following\n\t * disclaimer in the documentation and/or other materials provided\n\t * with the distribution.\n\t * * Neither the name of Google Inc. nor the names of its\n\t * contributors may be used to endorse or promote products derived\n\t * from this software without specific prior written permission.\n\t *\n\t * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n\t * \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n\t * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n\t * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n\t * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n\t * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n\t * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n\t * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n\t * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n\t * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n\t * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\t */\n\t\n\tvar base64 = __webpack_require__(3);\n\t\n\t// A single base 64 digit can contain 6 bits of data. For the base 64 variable\n\t// length quantities we use in the source map spec, the first bit is the sign,\n\t// the next four bits are the actual value, and the 6th bit is the\n\t// continuation bit. The continuation bit tells us whether there are more\n\t// digits in this value following this digit.\n\t//\n\t// Continuation\n\t// | Sign\n\t// | |\n\t// V V\n\t// 101011\n\t\n\tvar VLQ_BASE_SHIFT = 5;\n\t\n\t// binary: 100000\n\tvar VLQ_BASE = 1 << VLQ_BASE_SHIFT;\n\t\n\t// binary: 011111\n\tvar VLQ_BASE_MASK = VLQ_BASE - 1;\n\t\n\t// binary: 100000\n\tvar VLQ_CONTINUATION_BIT = VLQ_BASE;\n\t\n\t/**\n\t * Converts from a two-complement value to a value where the sign bit is\n\t * placed in the least significant bit. For example, as decimals:\n\t * 1 becomes 2 (10 binary), -1 becomes 3 (11 binary)\n\t * 2 becomes 4 (100 binary), -2 becomes 5 (101 binary)\n\t */\n\tfunction toVLQSigned(aValue) {\n\t return aValue < 0\n\t ? ((-aValue) << 1) + 1\n\t : (aValue << 1) + 0;\n\t}\n\t\n\t/**\n\t * Converts to a two-complement value from a value where the sign bit is\n\t * placed in the least significant bit. For example, as decimals:\n\t * 2 (10 binary) becomes 1, 3 (11 binary) becomes -1\n\t * 4 (100 binary) becomes 2, 5 (101 binary) becomes -2\n\t */\n\tfunction fromVLQSigned(aValue) {\n\t var isNegative = (aValue & 1) === 1;\n\t var shifted = aValue >> 1;\n\t return isNegative\n\t ? -shifted\n\t : shifted;\n\t}\n\t\n\t/**\n\t * Returns the base 64 VLQ encoded value.\n\t */\n\texports.encode = function base64VLQ_encode(aValue) {\n\t var encoded = \"\";\n\t var digit;\n\t\n\t var vlq = toVLQSigned(aValue);\n\t\n\t do {\n\t digit = vlq & VLQ_BASE_MASK;\n\t vlq >>>= VLQ_BASE_SHIFT;\n\t if (vlq > 0) {\n\t // There are still more digits in this value, so we must make sure the\n\t // continuation bit is marked.\n\t digit |= VLQ_CONTINUATION_BIT;\n\t }\n\t encoded += base64.encode(digit);\n\t } while (vlq > 0);\n\t\n\t return encoded;\n\t};\n\t\n\t/**\n\t * Decodes the next base 64 VLQ value from the given string and returns the\n\t * value and the rest of the string via the out parameter.\n\t */\n\texports.decode = function base64VLQ_decode(aStr, aIndex, aOutParam) {\n\t var strLen = aStr.length;\n\t var result = 0;\n\t var shift = 0;\n\t var continuation, digit;\n\t\n\t do {\n\t if (aIndex >= strLen) {\n\t throw new Error(\"Expected more digits in base 64 VLQ value.\");\n\t }\n\t\n\t digit = base64.decode(aStr.charCodeAt(aIndex++));\n\t if (digit === -1) {\n\t throw new Error(\"Invalid base64 digit: \" + aStr.charAt(aIndex - 1));\n\t }\n\t\n\t continuation = !!(digit & VLQ_CONTINUATION_BIT);\n\t digit &= VLQ_BASE_MASK;\n\t result = result + (digit << shift);\n\t shift += VLQ_BASE_SHIFT;\n\t } while (continuation);\n\t\n\t aOutParam.value = fromVLQSigned(result);\n\t aOutParam.rest = aIndex;\n\t};\n\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports) {\n\n\t/* -*- Mode: js; js-indent-level: 2; -*- */\n\t/*\n\t * Copyright 2011 Mozilla Foundation and contributors\n\t * Licensed under the New BSD license. See LICENSE or:\n\t * http://opensource.org/licenses/BSD-3-Clause\n\t */\n\t\n\tvar intToCharMap = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'.split('');\n\t\n\t/**\n\t * Encode an integer in the range of 0 to 63 to a single base 64 digit.\n\t */\n\texports.encode = function (number) {\n\t if (0 <= number && number < intToCharMap.length) {\n\t return intToCharMap[number];\n\t }\n\t throw new TypeError(\"Must be between 0 and 63: \" + number);\n\t};\n\t\n\t/**\n\t * Decode a single base 64 character code digit to an integer. Returns -1 on\n\t * failure.\n\t */\n\texports.decode = function (charCode) {\n\t var bigA = 65; // 'A'\n\t var bigZ = 90; // 'Z'\n\t\n\t var littleA = 97; // 'a'\n\t var littleZ = 122; // 'z'\n\t\n\t var zero = 48; // '0'\n\t var nine = 57; // '9'\n\t\n\t var plus = 43; // '+'\n\t var slash = 47; // '/'\n\t\n\t var littleOffset = 26;\n\t var numberOffset = 52;\n\t\n\t // 0 - 25: ABCDEFGHIJKLMNOPQRSTUVWXYZ\n\t if (bigA <= charCode && charCode <= bigZ) {\n\t return (charCode - bigA);\n\t }\n\t\n\t // 26 - 51: abcdefghijklmnopqrstuvwxyz\n\t if (littleA <= charCode && charCode <= littleZ) {\n\t return (charCode - littleA + littleOffset);\n\t }\n\t\n\t // 52 - 61: 0123456789\n\t if (zero <= charCode && charCode <= nine) {\n\t return (charCode - zero + numberOffset);\n\t }\n\t\n\t // 62: +\n\t if (charCode == plus) {\n\t return 62;\n\t }\n\t\n\t // 63: /\n\t if (charCode == slash) {\n\t return 63;\n\t }\n\t\n\t // Invalid base64 digit.\n\t return -1;\n\t};\n\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports) {\n\n\t/* -*- Mode: js; js-indent-level: 2; -*- */\n\t/*\n\t * Copyright 2011 Mozilla Foundation and contributors\n\t * Licensed under the New BSD license. See LICENSE or:\n\t * http://opensource.org/licenses/BSD-3-Clause\n\t */\n\t\n\t/**\n\t * This is a helper function for getting values from parameter/options\n\t * objects.\n\t *\n\t * @param args The object we are extracting values from\n\t * @param name The name of the property we are getting.\n\t * @param defaultValue An optional value to return if the property is missing\n\t * from the object. If this is not specified and the property is missing, an\n\t * error will be thrown.\n\t */\n\tfunction getArg(aArgs, aName, aDefaultValue) {\n\t if (aName in aArgs) {\n\t return aArgs[aName];\n\t } else if (arguments.length === 3) {\n\t return aDefaultValue;\n\t } else {\n\t throw new Error('\"' + aName + '\" is a required argument.');\n\t }\n\t}\n\texports.getArg = getArg;\n\t\n\tvar urlRegexp = /^(?:([\\w+\\-.]+):)?\\/\\/(?:(\\w+:\\w+)@)?([\\w.-]*)(?::(\\d+))?(.*)$/;\n\tvar dataUrlRegexp = /^data:.+\\,.+$/;\n\t\n\tfunction urlParse(aUrl) {\n\t var match = aUrl.match(urlRegexp);\n\t if (!match) {\n\t return null;\n\t }\n\t return {\n\t scheme: match[1],\n\t auth: match[2],\n\t host: match[3],\n\t port: match[4],\n\t path: match[5]\n\t };\n\t}\n\texports.urlParse = urlParse;\n\t\n\tfunction urlGenerate(aParsedUrl) {\n\t var url = '';\n\t if (aParsedUrl.scheme) {\n\t url += aParsedUrl.scheme + ':';\n\t }\n\t url += '//';\n\t if (aParsedUrl.auth) {\n\t url += aParsedUrl.auth + '@';\n\t }\n\t if (aParsedUrl.host) {\n\t url += aParsedUrl.host;\n\t }\n\t if (aParsedUrl.port) {\n\t url += \":\" + aParsedUrl.port\n\t }\n\t if (aParsedUrl.path) {\n\t url += aParsedUrl.path;\n\t }\n\t return url;\n\t}\n\texports.urlGenerate = urlGenerate;\n\t\n\t/**\n\t * Normalizes a path, or the path portion of a URL:\n\t *\n\t * - Replaces consecutive slashes with one slash.\n\t * - Removes unnecessary '.' parts.\n\t * - Removes unnecessary '/..' parts.\n\t *\n\t * Based on code in the Node.js 'path' core module.\n\t *\n\t * @param aPath The path or url to normalize.\n\t */\n\tfunction normalize(aPath) {\n\t var path = aPath;\n\t var url = urlParse(aPath);\n\t if (url) {\n\t if (!url.path) {\n\t return aPath;\n\t }\n\t path = url.path;\n\t }\n\t var isAbsolute = exports.isAbsolute(path);\n\t\n\t var parts = path.split(/\\/+/);\n\t for (var part, up = 0, i = parts.length - 1; i >= 0; i--) {\n\t part = parts[i];\n\t if (part === '.') {\n\t parts.splice(i, 1);\n\t } else if (part === '..') {\n\t up++;\n\t } else if (up > 0) {\n\t if (part === '') {\n\t // The first part is blank if the path is absolute. Trying to go\n\t // above the root is a no-op. Therefore we can remove all '..' parts\n\t // directly after the root.\n\t parts.splice(i + 1, up);\n\t up = 0;\n\t } else {\n\t parts.splice(i, 2);\n\t up--;\n\t }\n\t }\n\t }\n\t path = parts.join('/');\n\t\n\t if (path === '') {\n\t path = isAbsolute ? '/' : '.';\n\t }\n\t\n\t if (url) {\n\t url.path = path;\n\t return urlGenerate(url);\n\t }\n\t return path;\n\t}\n\texports.normalize = normalize;\n\t\n\t/**\n\t * Joins two paths/URLs.\n\t *\n\t * @param aRoot The root path or URL.\n\t * @param aPath The path or URL to be joined with the root.\n\t *\n\t * - If aPath is a URL or a data URI, aPath is returned, unless aPath is a\n\t * scheme-relative URL: Then the scheme of aRoot, if any, is prepended\n\t * first.\n\t * - Otherwise aPath is a path. If aRoot is a URL, then its path portion\n\t * is updated with the result and aRoot is returned. Otherwise the result\n\t * is returned.\n\t * - If aPath is absolute, the result is aPath.\n\t * - Otherwise the two paths are joined with a slash.\n\t * - Joining for example 'http://' and 'www.example.com' is also supported.\n\t */\n\tfunction join(aRoot, aPath) {\n\t if (aRoot === \"\") {\n\t aRoot = \".\";\n\t }\n\t if (aPath === \"\") {\n\t aPath = \".\";\n\t }\n\t var aPathUrl = urlParse(aPath);\n\t var aRootUrl = urlParse(aRoot);\n\t if (aRootUrl) {\n\t aRoot = aRootUrl.path || '/';\n\t }\n\t\n\t // `join(foo, '//www.example.org')`\n\t if (aPathUrl && !aPathUrl.scheme) {\n\t if (aRootUrl) {\n\t aPathUrl.scheme = aRootUrl.scheme;\n\t }\n\t return urlGenerate(aPathUrl);\n\t }\n\t\n\t if (aPathUrl || aPath.match(dataUrlRegexp)) {\n\t return aPath;\n\t }\n\t\n\t // `join('http://', 'www.example.com')`\n\t if (aRootUrl && !aRootUrl.host && !aRootUrl.path) {\n\t aRootUrl.host = aPath;\n\t return urlGenerate(aRootUrl);\n\t }\n\t\n\t var joined = aPath.charAt(0) === '/'\n\t ? aPath\n\t : normalize(aRoot.replace(/\\/+$/, '') + '/' + aPath);\n\t\n\t if (aRootUrl) {\n\t aRootUrl.path = joined;\n\t return urlGenerate(aRootUrl);\n\t }\n\t return joined;\n\t}\n\texports.join = join;\n\t\n\texports.isAbsolute = function (aPath) {\n\t return aPath.charAt(0) === '/' || urlRegexp.test(aPath);\n\t};\n\t\n\t/**\n\t * Make a path relative to a URL or another path.\n\t *\n\t * @param aRoot The root path or URL.\n\t * @param aPath The path or URL to be made relative to aRoot.\n\t */\n\tfunction relative(aRoot, aPath) {\n\t if (aRoot === \"\") {\n\t aRoot = \".\";\n\t }\n\t\n\t aRoot = aRoot.replace(/\\/$/, '');\n\t\n\t // It is possible for the path to be above the root. In this case, simply\n\t // checking whether the root is a prefix of the path won't work. Instead, we\n\t // need to remove components from the root one by one, until either we find\n\t // a prefix that fits, or we run out of components to remove.\n\t var level = 0;\n\t while (aPath.indexOf(aRoot + '/') !== 0) {\n\t var index = aRoot.lastIndexOf(\"/\");\n\t if (index < 0) {\n\t return aPath;\n\t }\n\t\n\t // If the only part of the root that is left is the scheme (i.e. http://,\n\t // file:///, etc.), one or more slashes (/), or simply nothing at all, we\n\t // have exhausted all components, so the path is not relative to the root.\n\t aRoot = aRoot.slice(0, index);\n\t if (aRoot.match(/^([^\\/]+:\\/)?\\/*$/)) {\n\t return aPath;\n\t }\n\t\n\t ++level;\n\t }\n\t\n\t // Make sure we add a \"../\" for each component we removed from the root.\n\t return Array(level + 1).join(\"../\") + aPath.substr(aRoot.length + 1);\n\t}\n\texports.relative = relative;\n\t\n\tvar supportsNullProto = (function () {\n\t var obj = Object.create(null);\n\t return !('__proto__' in obj);\n\t}());\n\t\n\tfunction identity (s) {\n\t return s;\n\t}\n\t\n\t/**\n\t * Because behavior goes wacky when you set `__proto__` on objects, we\n\t * have to prefix all the strings in our set with an arbitrary character.\n\t *\n\t * See https://github.com/mozilla/source-map/pull/31 and\n\t * https://github.com/mozilla/source-map/issues/30\n\t *\n\t * @param String aStr\n\t */\n\tfunction toSetString(aStr) {\n\t if (isProtoString(aStr)) {\n\t return '$' + aStr;\n\t }\n\t\n\t return aStr;\n\t}\n\texports.toSetString = supportsNullProto ? identity : toSetString;\n\t\n\tfunction fromSetString(aStr) {\n\t if (isProtoString(aStr)) {\n\t return aStr.slice(1);\n\t }\n\t\n\t return aStr;\n\t}\n\texports.fromSetString = supportsNullProto ? identity : fromSetString;\n\t\n\tfunction isProtoString(s) {\n\t if (!s) {\n\t return false;\n\t }\n\t\n\t var length = s.length;\n\t\n\t if (length < 9 /* \"__proto__\".length */) {\n\t return false;\n\t }\n\t\n\t if (s.charCodeAt(length - 1) !== 95 /* '_' */ ||\n\t s.charCodeAt(length - 2) !== 95 /* '_' */ ||\n\t s.charCodeAt(length - 3) !== 111 /* 'o' */ ||\n\t s.charCodeAt(length - 4) !== 116 /* 't' */ ||\n\t s.charCodeAt(length - 5) !== 111 /* 'o' */ ||\n\t s.charCodeAt(length - 6) !== 114 /* 'r' */ ||\n\t s.charCodeAt(length - 7) !== 112 /* 'p' */ ||\n\t s.charCodeAt(length - 8) !== 95 /* '_' */ ||\n\t s.charCodeAt(length - 9) !== 95 /* '_' */) {\n\t return false;\n\t }\n\t\n\t for (var i = length - 10; i >= 0; i--) {\n\t if (s.charCodeAt(i) !== 36 /* '$' */) {\n\t return false;\n\t }\n\t }\n\t\n\t return true;\n\t}\n\t\n\t/**\n\t * Comparator between two mappings where the original positions are compared.\n\t *\n\t * Optionally pass in `true` as `onlyCompareGenerated` to consider two\n\t * mappings with the same original source/line/column, but different generated\n\t * line and column the same. Useful when searching for a mapping with a\n\t * stubbed out mapping.\n\t */\n\tfunction compareByOriginalPositions(mappingA, mappingB, onlyCompareOriginal) {\n\t var cmp = strcmp(mappingA.source, mappingB.source);\n\t if (cmp !== 0) {\n\t return cmp;\n\t }\n\t\n\t cmp = mappingA.originalLine - mappingB.originalLine;\n\t if (cmp !== 0) {\n\t return cmp;\n\t }\n\t\n\t cmp = mappingA.originalColumn - mappingB.originalColumn;\n\t if (cmp !== 0 || onlyCompareOriginal) {\n\t return cmp;\n\t }\n\t\n\t cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n\t if (cmp !== 0) {\n\t return cmp;\n\t }\n\t\n\t cmp = mappingA.generatedLine - mappingB.generatedLine;\n\t if (cmp !== 0) {\n\t return cmp;\n\t }\n\t\n\t return strcmp(mappingA.name, mappingB.name);\n\t}\n\texports.compareByOriginalPositions = compareByOriginalPositions;\n\t\n\t/**\n\t * Comparator between two mappings with deflated source and name indices where\n\t * the generated positions are compared.\n\t *\n\t * Optionally pass in `true` as `onlyCompareGenerated` to consider two\n\t * mappings with the same generated line and column, but different\n\t * source/name/original line and column the same. Useful when searching for a\n\t * mapping with a stubbed out mapping.\n\t */\n\tfunction compareByGeneratedPositionsDeflated(mappingA, mappingB, onlyCompareGenerated) {\n\t var cmp = mappingA.generatedLine - mappingB.generatedLine;\n\t if (cmp !== 0) {\n\t return cmp;\n\t }\n\t\n\t cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n\t if (cmp !== 0 || onlyCompareGenerated) {\n\t return cmp;\n\t }\n\t\n\t cmp = strcmp(mappingA.source, mappingB.source);\n\t if (cmp !== 0) {\n\t return cmp;\n\t }\n\t\n\t cmp = mappingA.originalLine - mappingB.originalLine;\n\t if (cmp !== 0) {\n\t return cmp;\n\t }\n\t\n\t cmp = mappingA.originalColumn - mappingB.originalColumn;\n\t if (cmp !== 0) {\n\t return cmp;\n\t }\n\t\n\t return strcmp(mappingA.name, mappingB.name);\n\t}\n\texports.compareByGeneratedPositionsDeflated = compareByGeneratedPositionsDeflated;\n\t\n\tfunction strcmp(aStr1, aStr2) {\n\t if (aStr1 === aStr2) {\n\t return 0;\n\t }\n\t\n\t if (aStr1 === null) {\n\t return 1; // aStr2 !== null\n\t }\n\t\n\t if (aStr2 === null) {\n\t return -1; // aStr1 !== null\n\t }\n\t\n\t if (aStr1 > aStr2) {\n\t return 1;\n\t }\n\t\n\t return -1;\n\t}\n\t\n\t/**\n\t * Comparator between two mappings with inflated source and name strings where\n\t * the generated positions are compared.\n\t */\n\tfunction compareByGeneratedPositionsInflated(mappingA, mappingB) {\n\t var cmp = mappingA.generatedLine - mappingB.generatedLine;\n\t if (cmp !== 0) {\n\t return cmp;\n\t }\n\t\n\t cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n\t if (cmp !== 0) {\n\t return cmp;\n\t }\n\t\n\t cmp = strcmp(mappingA.source, mappingB.source);\n\t if (cmp !== 0) {\n\t return cmp;\n\t }\n\t\n\t cmp = mappingA.originalLine - mappingB.originalLine;\n\t if (cmp !== 0) {\n\t return cmp;\n\t }\n\t\n\t cmp = mappingA.originalColumn - mappingB.originalColumn;\n\t if (cmp !== 0) {\n\t return cmp;\n\t }\n\t\n\t return strcmp(mappingA.name, mappingB.name);\n\t}\n\texports.compareByGeneratedPositionsInflated = compareByGeneratedPositionsInflated;\n\t\n\t/**\n\t * Strip any JSON XSSI avoidance prefix from the string (as documented\n\t * in the source maps specification), and then parse the string as\n\t * JSON.\n\t */\n\tfunction parseSourceMapInput(str) {\n\t return JSON.parse(str.replace(/^\\)]}'[^\\n]*\\n/, ''));\n\t}\n\texports.parseSourceMapInput = parseSourceMapInput;\n\t\n\t/**\n\t * Compute the URL of a source given the the source root, the source's\n\t * URL, and the source map's URL.\n\t */\n\tfunction computeSourceURL(sourceRoot, sourceURL, sourceMapURL) {\n\t sourceURL = sourceURL || '';\n\t\n\t if (sourceRoot) {\n\t // This follows what Chrome does.\n\t if (sourceRoot[sourceRoot.length - 1] !== '/' && sourceURL[0] !== '/') {\n\t sourceRoot += '/';\n\t }\n\t // The spec says:\n\t // Line 4: An optional source root, useful for relocating source\n\t // files on a server or removing repeated values in the\n\t // “sources” entry. This value is prepended to the individual\n\t // entries in the “source” field.\n\t sourceURL = sourceRoot + sourceURL;\n\t }\n\t\n\t // Historically, SourceMapConsumer did not take the sourceMapURL as\n\t // a parameter. This mode is still somewhat supported, which is why\n\t // this code block is conditional. However, it's preferable to pass\n\t // the source map URL to SourceMapConsumer, so that this function\n\t // can implement the source URL resolution algorithm as outlined in\n\t // the spec. This block is basically the equivalent of:\n\t // new URL(sourceURL, sourceMapURL).toString()\n\t // ... except it avoids using URL, which wasn't available in the\n\t // older releases of node still supported by this library.\n\t //\n\t // The spec says:\n\t // If the sources are not absolute URLs after prepending of the\n\t // “sourceRoot”, the sources are resolved relative to the\n\t // SourceMap (like resolving script src in a html document).\n\t if (sourceMapURL) {\n\t var parsed = urlParse(sourceMapURL);\n\t if (!parsed) {\n\t throw new Error(\"sourceMapURL could not be parsed\");\n\t }\n\t if (parsed.path) {\n\t // Strip the last path component, but keep the \"/\".\n\t var index = parsed.path.lastIndexOf('/');\n\t if (index >= 0) {\n\t parsed.path = parsed.path.substring(0, index + 1);\n\t }\n\t }\n\t sourceURL = join(urlGenerate(parsed), sourceURL);\n\t }\n\t\n\t return normalize(sourceURL);\n\t}\n\texports.computeSourceURL = computeSourceURL;\n\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/* -*- Mode: js; js-indent-level: 2; -*- */\n\t/*\n\t * Copyright 2011 Mozilla Foundation and contributors\n\t * Licensed under the New BSD license. See LICENSE or:\n\t * http://opensource.org/licenses/BSD-3-Clause\n\t */\n\t\n\tvar util = __webpack_require__(4);\n\tvar has = Object.prototype.hasOwnProperty;\n\tvar hasNativeMap = typeof Map !== \"undefined\";\n\t\n\t/**\n\t * A data structure which is a combination of an array and a set. Adding a new\n\t * member is O(1), testing for membership is O(1), and finding the index of an\n\t * element is O(1). Removing elements from the set is not supported. Only\n\t * strings are supported for membership.\n\t */\n\tfunction ArraySet() {\n\t this._array = [];\n\t this._set = hasNativeMap ? new Map() : Object.create(null);\n\t}\n\t\n\t/**\n\t * Static method for creating ArraySet instances from an existing array.\n\t */\n\tArraySet.fromArray = function ArraySet_fromArray(aArray, aAllowDuplicates) {\n\t var set = new ArraySet();\n\t for (var i = 0, len = aArray.length; i < len; i++) {\n\t set.add(aArray[i], aAllowDuplicates);\n\t }\n\t return set;\n\t};\n\t\n\t/**\n\t * Return how many unique items are in this ArraySet. If duplicates have been\n\t * added, than those do not count towards the size.\n\t *\n\t * @returns Number\n\t */\n\tArraySet.prototype.size = function ArraySet_size() {\n\t return hasNativeMap ? this._set.size : Object.getOwnPropertyNames(this._set).length;\n\t};\n\t\n\t/**\n\t * Add the given string to this set.\n\t *\n\t * @param String aStr\n\t */\n\tArraySet.prototype.add = function ArraySet_add(aStr, aAllowDuplicates) {\n\t var sStr = hasNativeMap ? aStr : util.toSetString(aStr);\n\t var isDuplicate = hasNativeMap ? this.has(aStr) : has.call(this._set, sStr);\n\t var idx = this._array.length;\n\t if (!isDuplicate || aAllowDuplicates) {\n\t this._array.push(aStr);\n\t }\n\t if (!isDuplicate) {\n\t if (hasNativeMap) {\n\t this._set.set(aStr, idx);\n\t } else {\n\t this._set[sStr] = idx;\n\t }\n\t }\n\t};\n\t\n\t/**\n\t * Is the given string a member of this set?\n\t *\n\t * @param String aStr\n\t */\n\tArraySet.prototype.has = function ArraySet_has(aStr) {\n\t if (hasNativeMap) {\n\t return this._set.has(aStr);\n\t } else {\n\t var sStr = util.toSetString(aStr);\n\t return has.call(this._set, sStr);\n\t }\n\t};\n\t\n\t/**\n\t * What is the index of the given string in the array?\n\t *\n\t * @param String aStr\n\t */\n\tArraySet.prototype.indexOf = function ArraySet_indexOf(aStr) {\n\t if (hasNativeMap) {\n\t var idx = this._set.get(aStr);\n\t if (idx >= 0) {\n\t return idx;\n\t }\n\t } else {\n\t var sStr = util.toSetString(aStr);\n\t if (has.call(this._set, sStr)) {\n\t return this._set[sStr];\n\t }\n\t }\n\t\n\t throw new Error('\"' + aStr + '\" is not in the set.');\n\t};\n\t\n\t/**\n\t * What is the element at the given index?\n\t *\n\t * @param Number aIdx\n\t */\n\tArraySet.prototype.at = function ArraySet_at(aIdx) {\n\t if (aIdx >= 0 && aIdx < this._array.length) {\n\t return this._array[aIdx];\n\t }\n\t throw new Error('No element indexed by ' + aIdx);\n\t};\n\t\n\t/**\n\t * Returns the array representation of this set (which has the proper indices\n\t * indicated by indexOf). Note that this is a copy of the internal array used\n\t * for storing the members so that no one can mess with internal state.\n\t */\n\tArraySet.prototype.toArray = function ArraySet_toArray() {\n\t return this._array.slice();\n\t};\n\t\n\texports.ArraySet = ArraySet;\n\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/* -*- Mode: js; js-indent-level: 2; -*- */\n\t/*\n\t * Copyright 2014 Mozilla Foundation and contributors\n\t * Licensed under the New BSD license. See LICENSE or:\n\t * http://opensource.org/licenses/BSD-3-Clause\n\t */\n\t\n\tvar util = __webpack_require__(4);\n\t\n\t/**\n\t * Determine whether mappingB is after mappingA with respect to generated\n\t * position.\n\t */\n\tfunction generatedPositionAfter(mappingA, mappingB) {\n\t // Optimized for most common case\n\t var lineA = mappingA.generatedLine;\n\t var lineB = mappingB.generatedLine;\n\t var columnA = mappingA.generatedColumn;\n\t var columnB = mappingB.generatedColumn;\n\t return lineB > lineA || lineB == lineA && columnB >= columnA ||\n\t util.compareByGeneratedPositionsInflated(mappingA, mappingB) <= 0;\n\t}\n\t\n\t/**\n\t * A data structure to provide a sorted view of accumulated mappings in a\n\t * performance conscious manner. It trades a neglibable overhead in general\n\t * case for a large speedup in case of mappings being added in order.\n\t */\n\tfunction MappingList() {\n\t this._array = [];\n\t this._sorted = true;\n\t // Serves as infimum\n\t this._last = {generatedLine: -1, generatedColumn: 0};\n\t}\n\t\n\t/**\n\t * Iterate through internal items. This method takes the same arguments that\n\t * `Array.prototype.forEach` takes.\n\t *\n\t * NOTE: The order of the mappings is NOT guaranteed.\n\t */\n\tMappingList.prototype.unsortedForEach =\n\t function MappingList_forEach(aCallback, aThisArg) {\n\t this._array.forEach(aCallback, aThisArg);\n\t };\n\t\n\t/**\n\t * Add the given source mapping.\n\t *\n\t * @param Object aMapping\n\t */\n\tMappingList.prototype.add = function MappingList_add(aMapping) {\n\t if (generatedPositionAfter(this._last, aMapping)) {\n\t this._last = aMapping;\n\t this._array.push(aMapping);\n\t } else {\n\t this._sorted = false;\n\t this._array.push(aMapping);\n\t }\n\t};\n\t\n\t/**\n\t * Returns the flat, sorted array of mappings. The mappings are sorted by\n\t * generated position.\n\t *\n\t * WARNING: This method returns internal data without copying, for\n\t * performance. The return value must NOT be mutated, and should be treated as\n\t * an immutable borrow. If you want to take ownership, you must make your own\n\t * copy.\n\t */\n\tMappingList.prototype.toArray = function MappingList_toArray() {\n\t if (!this._sorted) {\n\t this._array.sort(util.compareByGeneratedPositionsInflated);\n\t this._sorted = true;\n\t }\n\t return this._array;\n\t};\n\t\n\texports.MappingList = MappingList;\n\n\n/***/ }),\n/* 7 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/* -*- Mode: js; js-indent-level: 2; -*- */\n\t/*\n\t * Copyright 2011 Mozilla Foundation and contributors\n\t * Licensed under the New BSD license. See LICENSE or:\n\t * http://opensource.org/licenses/BSD-3-Clause\n\t */\n\t\n\tvar util = __webpack_require__(4);\n\tvar binarySearch = __webpack_require__(8);\n\tvar ArraySet = __webpack_require__(5).ArraySet;\n\tvar base64VLQ = __webpack_require__(2);\n\tvar quickSort = __webpack_require__(9).quickSort;\n\t\n\tfunction SourceMapConsumer(aSourceMap, aSourceMapURL) {\n\t var sourceMap = aSourceMap;\n\t if (typeof aSourceMap === 'string') {\n\t sourceMap = util.parseSourceMapInput(aSourceMap);\n\t }\n\t\n\t return sourceMap.sections != null\n\t ? new IndexedSourceMapConsumer(sourceMap, aSourceMapURL)\n\t : new BasicSourceMapConsumer(sourceMap, aSourceMapURL);\n\t}\n\t\n\tSourceMapConsumer.fromSourceMap = function(aSourceMap, aSourceMapURL) {\n\t return BasicSourceMapConsumer.fromSourceMap(aSourceMap, aSourceMapURL);\n\t}\n\t\n\t/**\n\t * The version of the source mapping spec that we are consuming.\n\t */\n\tSourceMapConsumer.prototype._version = 3;\n\t\n\t// `__generatedMappings` and `__originalMappings` are arrays that hold the\n\t// parsed mapping coordinates from the source map's \"mappings\" attribute. They\n\t// are lazily instantiated, accessed via the `_generatedMappings` and\n\t// `_originalMappings` getters respectively, and we only parse the mappings\n\t// and create these arrays once queried for a source location. We jump through\n\t// these hoops because there can be many thousands of mappings, and parsing\n\t// them is expensive, so we only want to do it if we must.\n\t//\n\t// Each object in the arrays is of the form:\n\t//\n\t// {\n\t// generatedLine: The line number in the generated code,\n\t// generatedColumn: The column number in the generated code,\n\t// source: The path to the original source file that generated this\n\t// chunk of code,\n\t// originalLine: The line number in the original source that\n\t// corresponds to this chunk of generated code,\n\t// originalColumn: The column number in the original source that\n\t// corresponds to this chunk of generated code,\n\t// name: The name of the original symbol which generated this chunk of\n\t// code.\n\t// }\n\t//\n\t// All properties except for `generatedLine` and `generatedColumn` can be\n\t// `null`.\n\t//\n\t// `_generatedMappings` is ordered by the generated positions.\n\t//\n\t// `_originalMappings` is ordered by the original positions.\n\t\n\tSourceMapConsumer.prototype.__generatedMappings = null;\n\tObject.defineProperty(SourceMapConsumer.prototype, '_generatedMappings', {\n\t configurable: true,\n\t enumerable: true,\n\t get: function () {\n\t if (!this.__generatedMappings) {\n\t this._parseMappings(this._mappings, this.sourceRoot);\n\t }\n\t\n\t return this.__generatedMappings;\n\t }\n\t});\n\t\n\tSourceMapConsumer.prototype.__originalMappings = null;\n\tObject.defineProperty(SourceMapConsumer.prototype, '_originalMappings', {\n\t configurable: true,\n\t enumerable: true,\n\t get: function () {\n\t if (!this.__originalMappings) {\n\t this._parseMappings(this._mappings, this.sourceRoot);\n\t }\n\t\n\t return this.__originalMappings;\n\t }\n\t});\n\t\n\tSourceMapConsumer.prototype._charIsMappingSeparator =\n\t function SourceMapConsumer_charIsMappingSeparator(aStr, index) {\n\t var c = aStr.charAt(index);\n\t return c === \";\" || c === \",\";\n\t };\n\t\n\t/**\n\t * Parse the mappings in a string in to a data structure which we can easily\n\t * query (the ordered arrays in the `this.__generatedMappings` and\n\t * `this.__originalMappings` properties).\n\t */\n\tSourceMapConsumer.prototype._parseMappings =\n\t function SourceMapConsumer_parseMappings(aStr, aSourceRoot) {\n\t throw new Error(\"Subclasses must implement _parseMappings\");\n\t };\n\t\n\tSourceMapConsumer.GENERATED_ORDER = 1;\n\tSourceMapConsumer.ORIGINAL_ORDER = 2;\n\t\n\tSourceMapConsumer.GREATEST_LOWER_BOUND = 1;\n\tSourceMapConsumer.LEAST_UPPER_BOUND = 2;\n\t\n\t/**\n\t * Iterate over each mapping between an original source/line/column and a\n\t * generated line/column in this source map.\n\t *\n\t * @param Function aCallback\n\t * The function that is called with each mapping.\n\t * @param Object aContext\n\t * Optional. If specified, this object will be the value of `this` every\n\t * time that `aCallback` is called.\n\t * @param aOrder\n\t * Either `SourceMapConsumer.GENERATED_ORDER` or\n\t * `SourceMapConsumer.ORIGINAL_ORDER`. Specifies whether you want to\n\t * iterate over the mappings sorted by the generated file's line/column\n\t * order or the original's source/line/column order, respectively. Defaults to\n\t * `SourceMapConsumer.GENERATED_ORDER`.\n\t */\n\tSourceMapConsumer.prototype.eachMapping =\n\t function SourceMapConsumer_eachMapping(aCallback, aContext, aOrder) {\n\t var context = aContext || null;\n\t var order = aOrder || SourceMapConsumer.GENERATED_ORDER;\n\t\n\t var mappings;\n\t switch (order) {\n\t case SourceMapConsumer.GENERATED_ORDER:\n\t mappings = this._generatedMappings;\n\t break;\n\t case SourceMapConsumer.ORIGINAL_ORDER:\n\t mappings = this._originalMappings;\n\t break;\n\t default:\n\t throw new Error(\"Unknown order of iteration.\");\n\t }\n\t\n\t var sourceRoot = this.sourceRoot;\n\t mappings.map(function (mapping) {\n\t var source = mapping.source === null ? null : this._sources.at(mapping.source);\n\t source = util.computeSourceURL(sourceRoot, source, this._sourceMapURL);\n\t return {\n\t source: source,\n\t generatedLine: mapping.generatedLine,\n\t generatedColumn: mapping.generatedColumn,\n\t originalLine: mapping.originalLine,\n\t originalColumn: mapping.originalColumn,\n\t name: mapping.name === null ? null : this._names.at(mapping.name)\n\t };\n\t }, this).forEach(aCallback, context);\n\t };\n\t\n\t/**\n\t * Returns all generated line and column information for the original source,\n\t * line, and column provided. If no column is provided, returns all mappings\n\t * corresponding to a either the line we are searching for or the next\n\t * closest line that has any mappings. Otherwise, returns all mappings\n\t * corresponding to the given line and either the column we are searching for\n\t * or the next closest column that has any offsets.\n\t *\n\t * The only argument is an object with the following properties:\n\t *\n\t * - source: The filename of the original source.\n\t * - line: The line number in the original source. The line number is 1-based.\n\t * - column: Optional. the column number in the original source.\n\t * The column number is 0-based.\n\t *\n\t * and an array of objects is returned, each with the following properties:\n\t *\n\t * - line: The line number in the generated source, or null. The\n\t * line number is 1-based.\n\t * - column: The column number in the generated source, or null.\n\t * The column number is 0-based.\n\t */\n\tSourceMapConsumer.prototype.allGeneratedPositionsFor =\n\t function SourceMapConsumer_allGeneratedPositionsFor(aArgs) {\n\t var line = util.getArg(aArgs, 'line');\n\t\n\t // When there is no exact match, BasicSourceMapConsumer.prototype._findMapping\n\t // returns the index of the closest mapping less than the needle. By\n\t // setting needle.originalColumn to 0, we thus find the last mapping for\n\t // the given line, provided such a mapping exists.\n\t var needle = {\n\t source: util.getArg(aArgs, 'source'),\n\t originalLine: line,\n\t originalColumn: util.getArg(aArgs, 'column', 0)\n\t };\n\t\n\t needle.source = this._findSourceIndex(needle.source);\n\t if (needle.source < 0) {\n\t return [];\n\t }\n\t\n\t var mappings = [];\n\t\n\t var index = this._findMapping(needle,\n\t this._originalMappings,\n\t \"originalLine\",\n\t \"originalColumn\",\n\t util.compareByOriginalPositions,\n\t binarySearch.LEAST_UPPER_BOUND);\n\t if (index >= 0) {\n\t var mapping = this._originalMappings[index];\n\t\n\t if (aArgs.column === undefined) {\n\t var originalLine = mapping.originalLine;\n\t\n\t // Iterate until either we run out of mappings, or we run into\n\t // a mapping for a different line than the one we found. Since\n\t // mappings are sorted, this is guaranteed to find all mappings for\n\t // the line we found.\n\t while (mapping && mapping.originalLine === originalLine) {\n\t mappings.push({\n\t line: util.getArg(mapping, 'generatedLine', null),\n\t column: util.getArg(mapping, 'generatedColumn', null),\n\t lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)\n\t });\n\t\n\t mapping = this._originalMappings[++index];\n\t }\n\t } else {\n\t var originalColumn = mapping.originalColumn;\n\t\n\t // Iterate until either we run out of mappings, or we run into\n\t // a mapping for a different line than the one we were searching for.\n\t // Since mappings are sorted, this is guaranteed to find all mappings for\n\t // the line we are searching for.\n\t while (mapping &&\n\t mapping.originalLine === line &&\n\t mapping.originalColumn == originalColumn) {\n\t mappings.push({\n\t line: util.getArg(mapping, 'generatedLine', null),\n\t column: util.getArg(mapping, 'generatedColumn', null),\n\t lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)\n\t });\n\t\n\t mapping = this._originalMappings[++index];\n\t }\n\t }\n\t }\n\t\n\t return mappings;\n\t };\n\t\n\texports.SourceMapConsumer = SourceMapConsumer;\n\t\n\t/**\n\t * A BasicSourceMapConsumer instance represents a parsed source map which we can\n\t * query for information about the original file positions by giving it a file\n\t * position in the generated source.\n\t *\n\t * The first parameter is the raw source map (either as a JSON string, or\n\t * already parsed to an object). According to the spec, source maps have the\n\t * following attributes:\n\t *\n\t * - version: Which version of the source map spec this map is following.\n\t * - sources: An array of URLs to the original source files.\n\t * - names: An array of identifiers which can be referrenced by individual mappings.\n\t * - sourceRoot: Optional. The URL root from which all sources are relative.\n\t * - sourcesContent: Optional. An array of contents of the original source files.\n\t * - mappings: A string of base64 VLQs which contain the actual mappings.\n\t * - file: Optional. The generated file this source map is associated with.\n\t *\n\t * Here is an example source map, taken from the source map spec[0]:\n\t *\n\t * {\n\t * version : 3,\n\t * file: \"out.js\",\n\t * sourceRoot : \"\",\n\t * sources: [\"foo.js\", \"bar.js\"],\n\t * names: [\"src\", \"maps\", \"are\", \"fun\"],\n\t * mappings: \"AA,AB;;ABCDE;\"\n\t * }\n\t *\n\t * The second parameter, if given, is a string whose value is the URL\n\t * at which the source map was found. This URL is used to compute the\n\t * sources array.\n\t *\n\t * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit?pli=1#\n\t */\n\tfunction BasicSourceMapConsumer(aSourceMap, aSourceMapURL) {\n\t var sourceMap = aSourceMap;\n\t if (typeof aSourceMap === 'string') {\n\t sourceMap = util.parseSourceMapInput(aSourceMap);\n\t }\n\t\n\t var version = util.getArg(sourceMap, 'version');\n\t var sources = util.getArg(sourceMap, 'sources');\n\t // Sass 3.3 leaves out the 'names' array, so we deviate from the spec (which\n\t // requires the array) to play nice here.\n\t var names = util.getArg(sourceMap, 'names', []);\n\t var sourceRoot = util.getArg(sourceMap, 'sourceRoot', null);\n\t var sourcesContent = util.getArg(sourceMap, 'sourcesContent', null);\n\t var mappings = util.getArg(sourceMap, 'mappings');\n\t var file = util.getArg(sourceMap, 'file', null);\n\t\n\t // Once again, Sass deviates from the spec and supplies the version as a\n\t // string rather than a number, so we use loose equality checking here.\n\t if (version != this._version) {\n\t throw new Error('Unsupported version: ' + version);\n\t }\n\t\n\t if (sourceRoot) {\n\t sourceRoot = util.normalize(sourceRoot);\n\t }\n\t\n\t sources = sources\n\t .map(String)\n\t // Some source maps produce relative source paths like \"./foo.js\" instead of\n\t // \"foo.js\". Normalize these first so that future comparisons will succeed.\n\t // See bugzil.la/1090768.\n\t .map(util.normalize)\n\t // Always ensure that absolute sources are internally stored relative to\n\t // the source root, if the source root is absolute. Not doing this would\n\t // be particularly problematic when the source root is a prefix of the\n\t // source (valid, but why??). See github issue #199 and bugzil.la/1188982.\n\t .map(function (source) {\n\t return sourceRoot && util.isAbsolute(sourceRoot) && util.isAbsolute(source)\n\t ? util.relative(sourceRoot, source)\n\t : source;\n\t });\n\t\n\t // Pass `true` below to allow duplicate names and sources. While source maps\n\t // are intended to be compressed and deduplicated, the TypeScript compiler\n\t // sometimes generates source maps with duplicates in them. See Github issue\n\t // #72 and bugzil.la/889492.\n\t this._names = ArraySet.fromArray(names.map(String), true);\n\t this._sources = ArraySet.fromArray(sources, true);\n\t\n\t this._absoluteSources = this._sources.toArray().map(function (s) {\n\t return util.computeSourceURL(sourceRoot, s, aSourceMapURL);\n\t });\n\t\n\t this.sourceRoot = sourceRoot;\n\t this.sourcesContent = sourcesContent;\n\t this._mappings = mappings;\n\t this._sourceMapURL = aSourceMapURL;\n\t this.file = file;\n\t}\n\t\n\tBasicSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype);\n\tBasicSourceMapConsumer.prototype.consumer = SourceMapConsumer;\n\t\n\t/**\n\t * Utility function to find the index of a source. Returns -1 if not\n\t * found.\n\t */\n\tBasicSourceMapConsumer.prototype._findSourceIndex = function(aSource) {\n\t var relativeSource = aSource;\n\t if (this.sourceRoot != null) {\n\t relativeSource = util.relative(this.sourceRoot, relativeSource);\n\t }\n\t\n\t if (this._sources.has(relativeSource)) {\n\t return this._sources.indexOf(relativeSource);\n\t }\n\t\n\t // Maybe aSource is an absolute URL as returned by |sources|. In\n\t // this case we can't simply undo the transform.\n\t var i;\n\t for (i = 0; i < this._absoluteSources.length; ++i) {\n\t if (this._absoluteSources[i] == aSource) {\n\t return i;\n\t }\n\t }\n\t\n\t return -1;\n\t};\n\t\n\t/**\n\t * Create a BasicSourceMapConsumer from a SourceMapGenerator.\n\t *\n\t * @param SourceMapGenerator aSourceMap\n\t * The source map that will be consumed.\n\t * @param String aSourceMapURL\n\t * The URL at which the source map can be found (optional)\n\t * @returns BasicSourceMapConsumer\n\t */\n\tBasicSourceMapConsumer.fromSourceMap =\n\t function SourceMapConsumer_fromSourceMap(aSourceMap, aSourceMapURL) {\n\t var smc = Object.create(BasicSourceMapConsumer.prototype);\n\t\n\t var names = smc._names = ArraySet.fromArray(aSourceMap._names.toArray(), true);\n\t var sources = smc._sources = ArraySet.fromArray(aSourceMap._sources.toArray(), true);\n\t smc.sourceRoot = aSourceMap._sourceRoot;\n\t smc.sourcesContent = aSourceMap._generateSourcesContent(smc._sources.toArray(),\n\t smc.sourceRoot);\n\t smc.file = aSourceMap._file;\n\t smc._sourceMapURL = aSourceMapURL;\n\t smc._absoluteSources = smc._sources.toArray().map(function (s) {\n\t return util.computeSourceURL(smc.sourceRoot, s, aSourceMapURL);\n\t });\n\t\n\t // Because we are modifying the entries (by converting string sources and\n\t // names to indices into the sources and names ArraySets), we have to make\n\t // a copy of the entry or else bad things happen. Shared mutable state\n\t // strikes again! See github issue #191.\n\t\n\t var generatedMappings = aSourceMap._mappings.toArray().slice();\n\t var destGeneratedMappings = smc.__generatedMappings = [];\n\t var destOriginalMappings = smc.__originalMappings = [];\n\t\n\t for (var i = 0, length = generatedMappings.length; i < length; i++) {\n\t var srcMapping = generatedMappings[i];\n\t var destMapping = new Mapping;\n\t destMapping.generatedLine = srcMapping.generatedLine;\n\t destMapping.generatedColumn = srcMapping.generatedColumn;\n\t\n\t if (srcMapping.source) {\n\t destMapping.source = sources.indexOf(srcMapping.source);\n\t destMapping.originalLine = srcMapping.originalLine;\n\t destMapping.originalColumn = srcMapping.originalColumn;\n\t\n\t if (srcMapping.name) {\n\t destMapping.name = names.indexOf(srcMapping.name);\n\t }\n\t\n\t destOriginalMappings.push(destMapping);\n\t }\n\t\n\t destGeneratedMappings.push(destMapping);\n\t }\n\t\n\t quickSort(smc.__originalMappings, util.compareByOriginalPositions);\n\t\n\t return smc;\n\t };\n\t\n\t/**\n\t * The version of the source mapping spec that we are consuming.\n\t */\n\tBasicSourceMapConsumer.prototype._version = 3;\n\t\n\t/**\n\t * The list of original sources.\n\t */\n\tObject.defineProperty(BasicSourceMapConsumer.prototype, 'sources', {\n\t get: function () {\n\t return this._absoluteSources.slice();\n\t }\n\t});\n\t\n\t/**\n\t * Provide the JIT with a nice shape / hidden class.\n\t */\n\tfunction Mapping() {\n\t this.generatedLine = 0;\n\t this.generatedColumn = 0;\n\t this.source = null;\n\t this.originalLine = null;\n\t this.originalColumn = null;\n\t this.name = null;\n\t}\n\t\n\t/**\n\t * Parse the mappings in a string in to a data structure which we can easily\n\t * query (the ordered arrays in the `this.__generatedMappings` and\n\t * `this.__originalMappings` properties).\n\t */\n\tBasicSourceMapConsumer.prototype._parseMappings =\n\t function SourceMapConsumer_parseMappings(aStr, aSourceRoot) {\n\t var generatedLine = 1;\n\t var previousGeneratedColumn = 0;\n\t var previousOriginalLine = 0;\n\t var previousOriginalColumn = 0;\n\t var previousSource = 0;\n\t var previousName = 0;\n\t var length = aStr.length;\n\t var index = 0;\n\t var cachedSegments = {};\n\t var temp = {};\n\t var originalMappings = [];\n\t var generatedMappings = [];\n\t var mapping, str, segment, end, value;\n\t\n\t while (index < length) {\n\t if (aStr.charAt(index) === ';') {\n\t generatedLine++;\n\t index++;\n\t previousGeneratedColumn = 0;\n\t }\n\t else if (aStr.charAt(index) === ',') {\n\t index++;\n\t }\n\t else {\n\t mapping = new Mapping();\n\t mapping.generatedLine = generatedLine;\n\t\n\t // Because each offset is encoded relative to the previous one,\n\t // many segments often have the same encoding. We can exploit this\n\t // fact by caching the parsed variable length fields of each segment,\n\t // allowing us to avoid a second parse if we encounter the same\n\t // segment again.\n\t for (end = index; end < length; end++) {\n\t if (this._charIsMappingSeparator(aStr, end)) {\n\t break;\n\t }\n\t }\n\t str = aStr.slice(index, end);\n\t\n\t segment = cachedSegments[str];\n\t if (segment) {\n\t index += str.length;\n\t } else {\n\t segment = [];\n\t while (index < end) {\n\t base64VLQ.decode(aStr, index, temp);\n\t value = temp.value;\n\t index = temp.rest;\n\t segment.push(value);\n\t }\n\t\n\t if (segment.length === 2) {\n\t throw new Error('Found a source, but no line and column');\n\t }\n\t\n\t if (segment.length === 3) {\n\t throw new Error('Found a source and line, but no column');\n\t }\n\t\n\t cachedSegments[str] = segment;\n\t }\n\t\n\t // Generated column.\n\t mapping.generatedColumn = previousGeneratedColumn + segment[0];\n\t previousGeneratedColumn = mapping.generatedColumn;\n\t\n\t if (segment.length > 1) {\n\t // Original source.\n\t mapping.source = previousSource + segment[1];\n\t previousSource += segment[1];\n\t\n\t // Original line.\n\t mapping.originalLine = previousOriginalLine + segment[2];\n\t previousOriginalLine = mapping.originalLine;\n\t // Lines are stored 0-based\n\t mapping.originalLine += 1;\n\t\n\t // Original column.\n\t mapping.originalColumn = previousOriginalColumn + segment[3];\n\t previousOriginalColumn = mapping.originalColumn;\n\t\n\t if (segment.length > 4) {\n\t // Original name.\n\t mapping.name = previousName + segment[4];\n\t previousName += segment[4];\n\t }\n\t }\n\t\n\t generatedMappings.push(mapping);\n\t if (typeof mapping.originalLine === 'number') {\n\t originalMappings.push(mapping);\n\t }\n\t }\n\t }\n\t\n\t quickSort(generatedMappings, util.compareByGeneratedPositionsDeflated);\n\t this.__generatedMappings = generatedMappings;\n\t\n\t quickSort(originalMappings, util.compareByOriginalPositions);\n\t this.__originalMappings = originalMappings;\n\t };\n\t\n\t/**\n\t * Find the mapping that best matches the hypothetical \"needle\" mapping that\n\t * we are searching for in the given \"haystack\" of mappings.\n\t */\n\tBasicSourceMapConsumer.prototype._findMapping =\n\t function SourceMapConsumer_findMapping(aNeedle, aMappings, aLineName,\n\t aColumnName, aComparator, aBias) {\n\t // To return the position we are searching for, we must first find the\n\t // mapping for the given position and then return the opposite position it\n\t // points to. Because the mappings are sorted, we can use binary search to\n\t // find the best mapping.\n\t\n\t if (aNeedle[aLineName] <= 0) {\n\t throw new TypeError('Line must be greater than or equal to 1, got '\n\t + aNeedle[aLineName]);\n\t }\n\t if (aNeedle[aColumnName] < 0) {\n\t throw new TypeError('Column must be greater than or equal to 0, got '\n\t + aNeedle[aColumnName]);\n\t }\n\t\n\t return binarySearch.search(aNeedle, aMappings, aComparator, aBias);\n\t };\n\t\n\t/**\n\t * Compute the last column for each generated mapping. The last column is\n\t * inclusive.\n\t */\n\tBasicSourceMapConsumer.prototype.computeColumnSpans =\n\t function SourceMapConsumer_computeColumnSpans() {\n\t for (var index = 0; index < this._generatedMappings.length; ++index) {\n\t var mapping = this._generatedMappings[index];\n\t\n\t // Mappings do not contain a field for the last generated columnt. We\n\t // can come up with an optimistic estimate, however, by assuming that\n\t // mappings are contiguous (i.e. given two consecutive mappings, the\n\t // first mapping ends where the second one starts).\n\t if (index + 1 < this._generatedMappings.length) {\n\t var nextMapping = this._generatedMappings[index + 1];\n\t\n\t if (mapping.generatedLine === nextMapping.generatedLine) {\n\t mapping.lastGeneratedColumn = nextMapping.generatedColumn - 1;\n\t continue;\n\t }\n\t }\n\t\n\t // The last mapping for each line spans the entire line.\n\t mapping.lastGeneratedColumn = Infinity;\n\t }\n\t };\n\t\n\t/**\n\t * Returns the original source, line, and column information for the generated\n\t * source's line and column positions provided. The only argument is an object\n\t * with the following properties:\n\t *\n\t * - line: The line number in the generated source. The line number\n\t * is 1-based.\n\t * - column: The column number in the generated source. The column\n\t * number is 0-based.\n\t * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or\n\t * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the\n\t * closest element that is smaller than or greater than the one we are\n\t * searching for, respectively, if the exact element cannot be found.\n\t * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'.\n\t *\n\t * and an object is returned with the following properties:\n\t *\n\t * - source: The original source file, or null.\n\t * - line: The line number in the original source, or null. The\n\t * line number is 1-based.\n\t * - column: The column number in the original source, or null. The\n\t * column number is 0-based.\n\t * - name: The original identifier, or null.\n\t */\n\tBasicSourceMapConsumer.prototype.originalPositionFor =\n\t function SourceMapConsumer_originalPositionFor(aArgs) {\n\t var needle = {\n\t generatedLine: util.getArg(aArgs, 'line'),\n\t generatedColumn: util.getArg(aArgs, 'column')\n\t };\n\t\n\t var index = this._findMapping(\n\t needle,\n\t this._generatedMappings,\n\t \"generatedLine\",\n\t \"generatedColumn\",\n\t util.compareByGeneratedPositionsDeflated,\n\t util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND)\n\t );\n\t\n\t if (index >= 0) {\n\t var mapping = this._generatedMappings[index];\n\t\n\t if (mapping.generatedLine === needle.generatedLine) {\n\t var source = util.getArg(mapping, 'source', null);\n\t if (source !== null) {\n\t source = this._sources.at(source);\n\t source = util.computeSourceURL(this.sourceRoot, source, this._sourceMapURL);\n\t }\n\t var name = util.getArg(mapping, 'name', null);\n\t if (name !== null) {\n\t name = this._names.at(name);\n\t }\n\t return {\n\t source: source,\n\t line: util.getArg(mapping, 'originalLine', null),\n\t column: util.getArg(mapping, 'originalColumn', null),\n\t name: name\n\t };\n\t }\n\t }\n\t\n\t return {\n\t source: null,\n\t line: null,\n\t column: null,\n\t name: null\n\t };\n\t };\n\t\n\t/**\n\t * Return true if we have the source content for every source in the source\n\t * map, false otherwise.\n\t */\n\tBasicSourceMapConsumer.prototype.hasContentsOfAllSources =\n\t function BasicSourceMapConsumer_hasContentsOfAllSources() {\n\t if (!this.sourcesContent) {\n\t return false;\n\t }\n\t return this.sourcesContent.length >= this._sources.size() &&\n\t !this.sourcesContent.some(function (sc) { return sc == null; });\n\t };\n\t\n\t/**\n\t * Returns the original source content. The only argument is the url of the\n\t * original source file. Returns null if no original source content is\n\t * available.\n\t */\n\tBasicSourceMapConsumer.prototype.sourceContentFor =\n\t function SourceMapConsumer_sourceContentFor(aSource, nullOnMissing) {\n\t if (!this.sourcesContent) {\n\t return null;\n\t }\n\t\n\t var index = this._findSourceIndex(aSource);\n\t if (index >= 0) {\n\t return this.sourcesContent[index];\n\t }\n\t\n\t var relativeSource = aSource;\n\t if (this.sourceRoot != null) {\n\t relativeSource = util.relative(this.sourceRoot, relativeSource);\n\t }\n\t\n\t var url;\n\t if (this.sourceRoot != null\n\t && (url = util.urlParse(this.sourceRoot))) {\n\t // XXX: file:// URIs and absolute paths lead to unexpected behavior for\n\t // many users. We can help them out when they expect file:// URIs to\n\t // behave like it would if they were running a local HTTP server. See\n\t // https://bugzilla.mozilla.org/show_bug.cgi?id=885597.\n\t var fileUriAbsPath = relativeSource.replace(/^file:\\/\\//, \"\");\n\t if (url.scheme == \"file\"\n\t && this._sources.has(fileUriAbsPath)) {\n\t return this.sourcesContent[this._sources.indexOf(fileUriAbsPath)]\n\t }\n\t\n\t if ((!url.path || url.path == \"/\")\n\t && this._sources.has(\"/\" + relativeSource)) {\n\t return this.sourcesContent[this._sources.indexOf(\"/\" + relativeSource)];\n\t }\n\t }\n\t\n\t // This function is used recursively from\n\t // IndexedSourceMapConsumer.prototype.sourceContentFor. In that case, we\n\t // don't want to throw if we can't find the source - we just want to\n\t // return null, so we provide a flag to exit gracefully.\n\t if (nullOnMissing) {\n\t return null;\n\t }\n\t else {\n\t throw new Error('\"' + relativeSource + '\" is not in the SourceMap.');\n\t }\n\t };\n\t\n\t/**\n\t * Returns the generated line and column information for the original source,\n\t * line, and column positions provided. The only argument is an object with\n\t * the following properties:\n\t *\n\t * - source: The filename of the original source.\n\t * - line: The line number in the original source. The line number\n\t * is 1-based.\n\t * - column: The column number in the original source. The column\n\t * number is 0-based.\n\t * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or\n\t * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the\n\t * closest element that is smaller than or greater than the one we are\n\t * searching for, respectively, if the exact element cannot be found.\n\t * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'.\n\t *\n\t * and an object is returned with the following properties:\n\t *\n\t * - line: The line number in the generated source, or null. The\n\t * line number is 1-based.\n\t * - column: The column number in the generated source, or null.\n\t * The column number is 0-based.\n\t */\n\tBasicSourceMapConsumer.prototype.generatedPositionFor =\n\t function SourceMapConsumer_generatedPositionFor(aArgs) {\n\t var source = util.getArg(aArgs, 'source');\n\t source = this._findSourceIndex(source);\n\t if (source < 0) {\n\t return {\n\t line: null,\n\t column: null,\n\t lastColumn: null\n\t };\n\t }\n\t\n\t var needle = {\n\t source: source,\n\t originalLine: util.getArg(aArgs, 'line'),\n\t originalColumn: util.getArg(aArgs, 'column')\n\t };\n\t\n\t var index = this._findMapping(\n\t needle,\n\t this._originalMappings,\n\t \"originalLine\",\n\t \"originalColumn\",\n\t util.compareByOriginalPositions,\n\t util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND)\n\t );\n\t\n\t if (index >= 0) {\n\t var mapping = this._originalMappings[index];\n\t\n\t if (mapping.source === needle.source) {\n\t return {\n\t line: util.getArg(mapping, 'generatedLine', null),\n\t column: util.getArg(mapping, 'generatedColumn', null),\n\t lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)\n\t };\n\t }\n\t }\n\t\n\t return {\n\t line: null,\n\t column: null,\n\t lastColumn: null\n\t };\n\t };\n\t\n\texports.BasicSourceMapConsumer = BasicSourceMapConsumer;\n\t\n\t/**\n\t * An IndexedSourceMapConsumer instance represents a parsed source map which\n\t * we can query for information. It differs from BasicSourceMapConsumer in\n\t * that it takes \"indexed\" source maps (i.e. ones with a \"sections\" field) as\n\t * input.\n\t *\n\t * The first parameter is a raw source map (either as a JSON string, or already\n\t * parsed to an object). According to the spec for indexed source maps, they\n\t * have the following attributes:\n\t *\n\t * - version: Which version of the source map spec this map is following.\n\t * - file: Optional. The generated file this source map is associated with.\n\t * - sections: A list of section definitions.\n\t *\n\t * Each value under the \"sections\" field has two fields:\n\t * - offset: The offset into the original specified at which this section\n\t * begins to apply, defined as an object with a \"line\" and \"column\"\n\t * field.\n\t * - map: A source map definition. This source map could also be indexed,\n\t * but doesn't have to be.\n\t *\n\t * Instead of the \"map\" field, it's also possible to have a \"url\" field\n\t * specifying a URL to retrieve a source map from, but that's currently\n\t * unsupported.\n\t *\n\t * Here's an example source map, taken from the source map spec[0], but\n\t * modified to omit a section which uses the \"url\" field.\n\t *\n\t * {\n\t * version : 3,\n\t * file: \"app.js\",\n\t * sections: [{\n\t * offset: {line:100, column:10},\n\t * map: {\n\t * version : 3,\n\t * file: \"section.js\",\n\t * sources: [\"foo.js\", \"bar.js\"],\n\t * names: [\"src\", \"maps\", \"are\", \"fun\"],\n\t * mappings: \"AAAA,E;;ABCDE;\"\n\t * }\n\t * }],\n\t * }\n\t *\n\t * The second parameter, if given, is a string whose value is the URL\n\t * at which the source map was found. This URL is used to compute the\n\t * sources array.\n\t *\n\t * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit#heading=h.535es3xeprgt\n\t */\n\tfunction IndexedSourceMapConsumer(aSourceMap, aSourceMapURL) {\n\t var sourceMap = aSourceMap;\n\t if (typeof aSourceMap === 'string') {\n\t sourceMap = util.parseSourceMapInput(aSourceMap);\n\t }\n\t\n\t var version = util.getArg(sourceMap, 'version');\n\t var sections = util.getArg(sourceMap, 'sections');\n\t\n\t if (version != this._version) {\n\t throw new Error('Unsupported version: ' + version);\n\t }\n\t\n\t this._sources = new ArraySet();\n\t this._names = new ArraySet();\n\t\n\t var lastOffset = {\n\t line: -1,\n\t column: 0\n\t };\n\t this._sections = sections.map(function (s) {\n\t if (s.url) {\n\t // The url field will require support for asynchronicity.\n\t // See https://github.com/mozilla/source-map/issues/16\n\t throw new Error('Support for url field in sections not implemented.');\n\t }\n\t var offset = util.getArg(s, 'offset');\n\t var offsetLine = util.getArg(offset, 'line');\n\t var offsetColumn = util.getArg(offset, 'column');\n\t\n\t if (offsetLine < lastOffset.line ||\n\t (offsetLine === lastOffset.line && offsetColumn < lastOffset.column)) {\n\t throw new Error('Section offsets must be ordered and non-overlapping.');\n\t }\n\t lastOffset = offset;\n\t\n\t return {\n\t generatedOffset: {\n\t // The offset fields are 0-based, but we use 1-based indices when\n\t // encoding/decoding from VLQ.\n\t generatedLine: offsetLine + 1,\n\t generatedColumn: offsetColumn + 1\n\t },\n\t consumer: new SourceMapConsumer(util.getArg(s, 'map'), aSourceMapURL)\n\t }\n\t });\n\t}\n\t\n\tIndexedSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype);\n\tIndexedSourceMapConsumer.prototype.constructor = SourceMapConsumer;\n\t\n\t/**\n\t * The version of the source mapping spec that we are consuming.\n\t */\n\tIndexedSourceMapConsumer.prototype._version = 3;\n\t\n\t/**\n\t * The list of original sources.\n\t */\n\tObject.defineProperty(IndexedSourceMapConsumer.prototype, 'sources', {\n\t get: function () {\n\t var sources = [];\n\t for (var i = 0; i < this._sections.length; i++) {\n\t for (var j = 0; j < this._sections[i].consumer.sources.length; j++) {\n\t sources.push(this._sections[i].consumer.sources[j]);\n\t }\n\t }\n\t return sources;\n\t }\n\t});\n\t\n\t/**\n\t * Returns the original source, line, and column information for the generated\n\t * source's line and column positions provided. The only argument is an object\n\t * with the following properties:\n\t *\n\t * - line: The line number in the generated source. The line number\n\t * is 1-based.\n\t * - column: The column number in the generated source. The column\n\t * number is 0-based.\n\t *\n\t * and an object is returned with the following properties:\n\t *\n\t * - source: The original source file, or null.\n\t * - line: The line number in the original source, or null. The\n\t * line number is 1-based.\n\t * - column: The column number in the original source, or null. The\n\t * column number is 0-based.\n\t * - name: The original identifier, or null.\n\t */\n\tIndexedSourceMapConsumer.prototype.originalPositionFor =\n\t function IndexedSourceMapConsumer_originalPositionFor(aArgs) {\n\t var needle = {\n\t generatedLine: util.getArg(aArgs, 'line'),\n\t generatedColumn: util.getArg(aArgs, 'column')\n\t };\n\t\n\t // Find the section containing the generated position we're trying to map\n\t // to an original position.\n\t var sectionIndex = binarySearch.search(needle, this._sections,\n\t function(needle, section) {\n\t var cmp = needle.generatedLine - section.generatedOffset.generatedLine;\n\t if (cmp) {\n\t return cmp;\n\t }\n\t\n\t return (needle.generatedColumn -\n\t section.generatedOffset.generatedColumn);\n\t });\n\t var section = this._sections[sectionIndex];\n\t\n\t if (!section) {\n\t return {\n\t source: null,\n\t line: null,\n\t column: null,\n\t name: null\n\t };\n\t }\n\t\n\t return section.consumer.originalPositionFor({\n\t line: needle.generatedLine -\n\t (section.generatedOffset.generatedLine - 1),\n\t column: needle.generatedColumn -\n\t (section.generatedOffset.generatedLine === needle.generatedLine\n\t ? section.generatedOffset.generatedColumn - 1\n\t : 0),\n\t bias: aArgs.bias\n\t });\n\t };\n\t\n\t/**\n\t * Return true if we have the source content for every source in the source\n\t * map, false otherwise.\n\t */\n\tIndexedSourceMapConsumer.prototype.hasContentsOfAllSources =\n\t function IndexedSourceMapConsumer_hasContentsOfAllSources() {\n\t return this._sections.every(function (s) {\n\t return s.consumer.hasContentsOfAllSources();\n\t });\n\t };\n\t\n\t/**\n\t * Returns the original source content. The only argument is the url of the\n\t * original source file. Returns null if no original source content is\n\t * available.\n\t */\n\tIndexedSourceMapConsumer.prototype.sourceContentFor =\n\t function IndexedSourceMapConsumer_sourceContentFor(aSource, nullOnMissing) {\n\t for (var i = 0; i < this._sections.length; i++) {\n\t var section = this._sections[i];\n\t\n\t var content = section.consumer.sourceContentFor(aSource, true);\n\t if (content) {\n\t return content;\n\t }\n\t }\n\t if (nullOnMissing) {\n\t return null;\n\t }\n\t else {\n\t throw new Error('\"' + aSource + '\" is not in the SourceMap.');\n\t }\n\t };\n\t\n\t/**\n\t * Returns the generated line and column information for the original source,\n\t * line, and column positions provided. The only argument is an object with\n\t * the following properties:\n\t *\n\t * - source: The filename of the original source.\n\t * - line: The line number in the original source. The line number\n\t * is 1-based.\n\t * - column: The column number in the original source. The column\n\t * number is 0-based.\n\t *\n\t * and an object is returned with the following properties:\n\t *\n\t * - line: The line number in the generated source, or null. The\n\t * line number is 1-based. \n\t * - column: The column number in the generated source, or null.\n\t * The column number is 0-based.\n\t */\n\tIndexedSourceMapConsumer.prototype.generatedPositionFor =\n\t function IndexedSourceMapConsumer_generatedPositionFor(aArgs) {\n\t for (var i = 0; i < this._sections.length; i++) {\n\t var section = this._sections[i];\n\t\n\t // Only consider this section if the requested source is in the list of\n\t // sources of the consumer.\n\t if (section.consumer._findSourceIndex(util.getArg(aArgs, 'source')) === -1) {\n\t continue;\n\t }\n\t var generatedPosition = section.consumer.generatedPositionFor(aArgs);\n\t if (generatedPosition) {\n\t var ret = {\n\t line: generatedPosition.line +\n\t (section.generatedOffset.generatedLine - 1),\n\t column: generatedPosition.column +\n\t (section.generatedOffset.generatedLine === generatedPosition.line\n\t ? section.generatedOffset.generatedColumn - 1\n\t : 0)\n\t };\n\t return ret;\n\t }\n\t }\n\t\n\t return {\n\t line: null,\n\t column: null\n\t };\n\t };\n\t\n\t/**\n\t * Parse the mappings in a string in to a data structure which we can easily\n\t * query (the ordered arrays in the `this.__generatedMappings` and\n\t * `this.__originalMappings` properties).\n\t */\n\tIndexedSourceMapConsumer.prototype._parseMappings =\n\t function IndexedSourceMapConsumer_parseMappings(aStr, aSourceRoot) {\n\t this.__generatedMappings = [];\n\t this.__originalMappings = [];\n\t for (var i = 0; i < this._sections.length; i++) {\n\t var section = this._sections[i];\n\t var sectionMappings = section.consumer._generatedMappings;\n\t for (var j = 0; j < sectionMappings.length; j++) {\n\t var mapping = sectionMappings[j];\n\t\n\t var source = section.consumer._sources.at(mapping.source);\n\t source = util.computeSourceURL(section.consumer.sourceRoot, source, this._sourceMapURL);\n\t this._sources.add(source);\n\t source = this._sources.indexOf(source);\n\t\n\t var name = null;\n\t if (mapping.name) {\n\t name = section.consumer._names.at(mapping.name);\n\t this._names.add(name);\n\t name = this._names.indexOf(name);\n\t }\n\t\n\t // The mappings coming from the consumer for the section have\n\t // generated positions relative to the start of the section, so we\n\t // need to offset them to be relative to the start of the concatenated\n\t // generated file.\n\t var adjustedMapping = {\n\t source: source,\n\t generatedLine: mapping.generatedLine +\n\t (section.generatedOffset.generatedLine - 1),\n\t generatedColumn: mapping.generatedColumn +\n\t (section.generatedOffset.generatedLine === mapping.generatedLine\n\t ? section.generatedOffset.generatedColumn - 1\n\t : 0),\n\t originalLine: mapping.originalLine,\n\t originalColumn: mapping.originalColumn,\n\t name: name\n\t };\n\t\n\t this.__generatedMappings.push(adjustedMapping);\n\t if (typeof adjustedMapping.originalLine === 'number') {\n\t this.__originalMappings.push(adjustedMapping);\n\t }\n\t }\n\t }\n\t\n\t quickSort(this.__generatedMappings, util.compareByGeneratedPositionsDeflated);\n\t quickSort(this.__originalMappings, util.compareByOriginalPositions);\n\t };\n\t\n\texports.IndexedSourceMapConsumer = IndexedSourceMapConsumer;\n\n\n/***/ }),\n/* 8 */\n/***/ (function(module, exports) {\n\n\t/* -*- Mode: js; js-indent-level: 2; -*- */\n\t/*\n\t * Copyright 2011 Mozilla Foundation and contributors\n\t * Licensed under the New BSD license. See LICENSE or:\n\t * http://opensource.org/licenses/BSD-3-Clause\n\t */\n\t\n\texports.GREATEST_LOWER_BOUND = 1;\n\texports.LEAST_UPPER_BOUND = 2;\n\t\n\t/**\n\t * Recursive implementation of binary search.\n\t *\n\t * @param aLow Indices here and lower do not contain the needle.\n\t * @param aHigh Indices here and higher do not contain the needle.\n\t * @param aNeedle The element being searched for.\n\t * @param aHaystack The non-empty array being searched.\n\t * @param aCompare Function which takes two elements and returns -1, 0, or 1.\n\t * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or\n\t * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the\n\t * closest element that is smaller than or greater than the one we are\n\t * searching for, respectively, if the exact element cannot be found.\n\t */\n\tfunction recursiveSearch(aLow, aHigh, aNeedle, aHaystack, aCompare, aBias) {\n\t // This function terminates when one of the following is true:\n\t //\n\t // 1. We find the exact element we are looking for.\n\t //\n\t // 2. We did not find the exact element, but we can return the index of\n\t // the next-closest element.\n\t //\n\t // 3. We did not find the exact element, and there is no next-closest\n\t // element than the one we are searching for, so we return -1.\n\t var mid = Math.floor((aHigh - aLow) / 2) + aLow;\n\t var cmp = aCompare(aNeedle, aHaystack[mid], true);\n\t if (cmp === 0) {\n\t // Found the element we are looking for.\n\t return mid;\n\t }\n\t else if (cmp > 0) {\n\t // Our needle is greater than aHaystack[mid].\n\t if (aHigh - mid > 1) {\n\t // The element is in the upper half.\n\t return recursiveSearch(mid, aHigh, aNeedle, aHaystack, aCompare, aBias);\n\t }\n\t\n\t // The exact needle element was not found in this haystack. Determine if\n\t // we are in termination case (3) or (2) and return the appropriate thing.\n\t if (aBias == exports.LEAST_UPPER_BOUND) {\n\t return aHigh < aHaystack.length ? aHigh : -1;\n\t } else {\n\t return mid;\n\t }\n\t }\n\t else {\n\t // Our needle is less than aHaystack[mid].\n\t if (mid - aLow > 1) {\n\t // The element is in the lower half.\n\t return recursiveSearch(aLow, mid, aNeedle, aHaystack, aCompare, aBias);\n\t }\n\t\n\t // we are in termination case (3) or (2) and return the appropriate thing.\n\t if (aBias == exports.LEAST_UPPER_BOUND) {\n\t return mid;\n\t } else {\n\t return aLow < 0 ? -1 : aLow;\n\t }\n\t }\n\t}\n\t\n\t/**\n\t * This is an implementation of binary search which will always try and return\n\t * the index of the closest element if there is no exact hit. This is because\n\t * mappings between original and generated line/col pairs are single points,\n\t * and there is an implicit region between each of them, so a miss just means\n\t * that you aren't on the very start of a region.\n\t *\n\t * @param aNeedle The element you are looking for.\n\t * @param aHaystack The array that is being searched.\n\t * @param aCompare A function which takes the needle and an element in the\n\t * array and returns -1, 0, or 1 depending on whether the needle is less\n\t * than, equal to, or greater than the element, respectively.\n\t * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or\n\t * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the\n\t * closest element that is smaller than or greater than the one we are\n\t * searching for, respectively, if the exact element cannot be found.\n\t * Defaults to 'binarySearch.GREATEST_LOWER_BOUND'.\n\t */\n\texports.search = function search(aNeedle, aHaystack, aCompare, aBias) {\n\t if (aHaystack.length === 0) {\n\t return -1;\n\t }\n\t\n\t var index = recursiveSearch(-1, aHaystack.length, aNeedle, aHaystack,\n\t aCompare, aBias || exports.GREATEST_LOWER_BOUND);\n\t if (index < 0) {\n\t return -1;\n\t }\n\t\n\t // We have found either the exact element, or the next-closest element than\n\t // the one we are searching for. However, there may be more than one such\n\t // element. Make sure we always return the smallest of these.\n\t while (index - 1 >= 0) {\n\t if (aCompare(aHaystack[index], aHaystack[index - 1], true) !== 0) {\n\t break;\n\t }\n\t --index;\n\t }\n\t\n\t return index;\n\t};\n\n\n/***/ }),\n/* 9 */\n/***/ (function(module, exports) {\n\n\t/* -*- Mode: js; js-indent-level: 2; -*- */\n\t/*\n\t * Copyright 2011 Mozilla Foundation and contributors\n\t * Licensed under the New BSD license. See LICENSE or:\n\t * http://opensource.org/licenses/BSD-3-Clause\n\t */\n\t\n\t// It turns out that some (most?) JavaScript engines don't self-host\n\t// `Array.prototype.sort`. This makes sense because C++ will likely remain\n\t// faster than JS when doing raw CPU-intensive sorting. However, when using a\n\t// custom comparator function, calling back and forth between the VM's C++ and\n\t// JIT'd JS is rather slow *and* loses JIT type information, resulting in\n\t// worse generated code for the comparator function than would be optimal. In\n\t// fact, when sorting with a comparator, these costs outweigh the benefits of\n\t// sorting in C++. By using our own JS-implemented Quick Sort (below), we get\n\t// a ~3500ms mean speed-up in `bench/bench.html`.\n\t\n\t/**\n\t * Swap the elements indexed by `x` and `y` in the array `ary`.\n\t *\n\t * @param {Array} ary\n\t * The array.\n\t * @param {Number} x\n\t * The index of the first item.\n\t * @param {Number} y\n\t * The index of the second item.\n\t */\n\tfunction swap(ary, x, y) {\n\t var temp = ary[x];\n\t ary[x] = ary[y];\n\t ary[y] = temp;\n\t}\n\t\n\t/**\n\t * Returns a random integer within the range `low .. high` inclusive.\n\t *\n\t * @param {Number} low\n\t * The lower bound on the range.\n\t * @param {Number} high\n\t * The upper bound on the range.\n\t */\n\tfunction randomIntInRange(low, high) {\n\t return Math.round(low + (Math.random() * (high - low)));\n\t}\n\t\n\t/**\n\t * The Quick Sort algorithm.\n\t *\n\t * @param {Array} ary\n\t * An array to sort.\n\t * @param {function} comparator\n\t * Function to use to compare two items.\n\t * @param {Number} p\n\t * Start index of the array\n\t * @param {Number} r\n\t * End index of the array\n\t */\n\tfunction doQuickSort(ary, comparator, p, r) {\n\t // If our lower bound is less than our upper bound, we (1) partition the\n\t // array into two pieces and (2) recurse on each half. If it is not, this is\n\t // the empty array and our base case.\n\t\n\t if (p < r) {\n\t // (1) Partitioning.\n\t //\n\t // The partitioning chooses a pivot between `p` and `r` and moves all\n\t // elements that are less than or equal to the pivot to the before it, and\n\t // all the elements that are greater than it after it. The effect is that\n\t // once partition is done, the pivot is in the exact place it will be when\n\t // the array is put in sorted order, and it will not need to be moved\n\t // again. This runs in O(n) time.\n\t\n\t // Always choose a random pivot so that an input array which is reverse\n\t // sorted does not cause O(n^2) running time.\n\t var pivotIndex = randomIntInRange(p, r);\n\t var i = p - 1;\n\t\n\t swap(ary, pivotIndex, r);\n\t var pivot = ary[r];\n\t\n\t // Immediately after `j` is incremented in this loop, the following hold\n\t // true:\n\t //\n\t // * Every element in `ary[p .. i]` is less than or equal to the pivot.\n\t //\n\t // * Every element in `ary[i+1 .. j-1]` is greater than the pivot.\n\t for (var j = p; j < r; j++) {\n\t if (comparator(ary[j], pivot) <= 0) {\n\t i += 1;\n\t swap(ary, i, j);\n\t }\n\t }\n\t\n\t swap(ary, i + 1, j);\n\t var q = i + 1;\n\t\n\t // (2) Recurse on each half.\n\t\n\t doQuickSort(ary, comparator, p, q - 1);\n\t doQuickSort(ary, comparator, q + 1, r);\n\t }\n\t}\n\t\n\t/**\n\t * Sort the given array in-place with the given comparator function.\n\t *\n\t * @param {Array} ary\n\t * An array to sort.\n\t * @param {function} comparator\n\t * Function to use to compare two items.\n\t */\n\texports.quickSort = function (ary, comparator) {\n\t doQuickSort(ary, comparator, 0, ary.length - 1);\n\t};\n\n\n/***/ }),\n/* 10 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/* -*- Mode: js; js-indent-level: 2; -*- */\n\t/*\n\t * Copyright 2011 Mozilla Foundation and contributors\n\t * Licensed under the New BSD license. See LICENSE or:\n\t * http://opensource.org/licenses/BSD-3-Clause\n\t */\n\t\n\tvar SourceMapGenerator = __webpack_require__(1).SourceMapGenerator;\n\tvar util = __webpack_require__(4);\n\t\n\t// Matches a Windows-style `\\r\\n` newline or a `\\n` newline used by all other\n\t// operating systems these days (capturing the result).\n\tvar REGEX_NEWLINE = /(\\r?\\n)/;\n\t\n\t// Newline character code for charCodeAt() comparisons\n\tvar NEWLINE_CODE = 10;\n\t\n\t// Private symbol for identifying `SourceNode`s when multiple versions of\n\t// the source-map library are loaded. This MUST NOT CHANGE across\n\t// versions!\n\tvar isSourceNode = \"$$$isSourceNode$$$\";\n\t\n\t/**\n\t * SourceNodes provide a way to abstract over interpolating/concatenating\n\t * snippets of generated JavaScript source code while maintaining the line and\n\t * column information associated with the original source code.\n\t *\n\t * @param aLine The original line number.\n\t * @param aColumn The original column number.\n\t * @param aSource The original source's filename.\n\t * @param aChunks Optional. An array of strings which are snippets of\n\t * generated JS, or other SourceNodes.\n\t * @param aName The original identifier.\n\t */\n\tfunction SourceNode(aLine, aColumn, aSource, aChunks, aName) {\n\t this.children = [];\n\t this.sourceContents = {};\n\t this.line = aLine == null ? null : aLine;\n\t this.column = aColumn == null ? null : aColumn;\n\t this.source = aSource == null ? null : aSource;\n\t this.name = aName == null ? null : aName;\n\t this[isSourceNode] = true;\n\t if (aChunks != null) this.add(aChunks);\n\t}\n\t\n\t/**\n\t * Creates a SourceNode from generated code and a SourceMapConsumer.\n\t *\n\t * @param aGeneratedCode The generated code\n\t * @param aSourceMapConsumer The SourceMap for the generated code\n\t * @param aRelativePath Optional. The path that relative sources in the\n\t * SourceMapConsumer should be relative to.\n\t */\n\tSourceNode.fromStringWithSourceMap =\n\t function SourceNode_fromStringWithSourceMap(aGeneratedCode, aSourceMapConsumer, aRelativePath) {\n\t // The SourceNode we want to fill with the generated code\n\t // and the SourceMap\n\t var node = new SourceNode();\n\t\n\t // All even indices of this array are one line of the generated code,\n\t // while all odd indices are the newlines between two adjacent lines\n\t // (since `REGEX_NEWLINE` captures its match).\n\t // Processed fragments are accessed by calling `shiftNextLine`.\n\t var remainingLines = aGeneratedCode.split(REGEX_NEWLINE);\n\t var remainingLinesIndex = 0;\n\t var shiftNextLine = function() {\n\t var lineContents = getNextLine();\n\t // The last line of a file might not have a newline.\n\t var newLine = getNextLine() || \"\";\n\t return lineContents + newLine;\n\t\n\t function getNextLine() {\n\t return remainingLinesIndex < remainingLines.length ?\n\t remainingLines[remainingLinesIndex++] : undefined;\n\t }\n\t };\n\t\n\t // We need to remember the position of \"remainingLines\"\n\t var lastGeneratedLine = 1, lastGeneratedColumn = 0;\n\t\n\t // The generate SourceNodes we need a code range.\n\t // To extract it current and last mapping is used.\n\t // Here we store the last mapping.\n\t var lastMapping = null;\n\t\n\t aSourceMapConsumer.eachMapping(function (mapping) {\n\t if (lastMapping !== null) {\n\t // We add the code from \"lastMapping\" to \"mapping\":\n\t // First check if there is a new line in between.\n\t if (lastGeneratedLine < mapping.generatedLine) {\n\t // Associate first line with \"lastMapping\"\n\t addMappingWithCode(lastMapping, shiftNextLine());\n\t lastGeneratedLine++;\n\t lastGeneratedColumn = 0;\n\t // The remaining code is added without mapping\n\t } else {\n\t // There is no new line in between.\n\t // Associate the code between \"lastGeneratedColumn\" and\n\t // \"mapping.generatedColumn\" with \"lastMapping\"\n\t var nextLine = remainingLines[remainingLinesIndex] || '';\n\t var code = nextLine.substr(0, mapping.generatedColumn -\n\t lastGeneratedColumn);\n\t remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn -\n\t lastGeneratedColumn);\n\t lastGeneratedColumn = mapping.generatedColumn;\n\t addMappingWithCode(lastMapping, code);\n\t // No more remaining code, continue\n\t lastMapping = mapping;\n\t return;\n\t }\n\t }\n\t // We add the generated code until the first mapping\n\t // to the SourceNode without any mapping.\n\t // Each line is added as separate string.\n\t while (lastGeneratedLine < mapping.generatedLine) {\n\t node.add(shiftNextLine());\n\t lastGeneratedLine++;\n\t }\n\t if (lastGeneratedColumn < mapping.generatedColumn) {\n\t var nextLine = remainingLines[remainingLinesIndex] || '';\n\t node.add(nextLine.substr(0, mapping.generatedColumn));\n\t remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn);\n\t lastGeneratedColumn = mapping.generatedColumn;\n\t }\n\t lastMapping = mapping;\n\t }, this);\n\t // We have processed all mappings.\n\t if (remainingLinesIndex < remainingLines.length) {\n\t if (lastMapping) {\n\t // Associate the remaining code in the current line with \"lastMapping\"\n\t addMappingWithCode(lastMapping, shiftNextLine());\n\t }\n\t // and add the remaining lines without any mapping\n\t node.add(remainingLines.splice(remainingLinesIndex).join(\"\"));\n\t }\n\t\n\t // Copy sourcesContent into SourceNode\n\t aSourceMapConsumer.sources.forEach(function (sourceFile) {\n\t var content = aSourceMapConsumer.sourceContentFor(sourceFile);\n\t if (content != null) {\n\t if (aRelativePath != null) {\n\t sourceFile = util.join(aRelativePath, sourceFile);\n\t }\n\t node.setSourceContent(sourceFile, content);\n\t }\n\t });\n\t\n\t return node;\n\t\n\t function addMappingWithCode(mapping, code) {\n\t if (mapping === null || mapping.source === undefined) {\n\t node.add(code);\n\t } else {\n\t var source = aRelativePath\n\t ? util.join(aRelativePath, mapping.source)\n\t : mapping.source;\n\t node.add(new SourceNode(mapping.originalLine,\n\t mapping.originalColumn,\n\t source,\n\t code,\n\t mapping.name));\n\t }\n\t }\n\t };\n\t\n\t/**\n\t * Add a chunk of generated JS to this source node.\n\t *\n\t * @param aChunk A string snippet of generated JS code, another instance of\n\t * SourceNode, or an array where each member is one of those things.\n\t */\n\tSourceNode.prototype.add = function SourceNode_add(aChunk) {\n\t if (Array.isArray(aChunk)) {\n\t aChunk.forEach(function (chunk) {\n\t this.add(chunk);\n\t }, this);\n\t }\n\t else if (aChunk[isSourceNode] || typeof aChunk === \"string\") {\n\t if (aChunk) {\n\t this.children.push(aChunk);\n\t }\n\t }\n\t else {\n\t throw new TypeError(\n\t \"Expected a SourceNode, string, or an array of SourceNodes and strings. Got \" + aChunk\n\t );\n\t }\n\t return this;\n\t};\n\t\n\t/**\n\t * Add a chunk of generated JS to the beginning of this source node.\n\t *\n\t * @param aChunk A string snippet of generated JS code, another instance of\n\t * SourceNode, or an array where each member is one of those things.\n\t */\n\tSourceNode.prototype.prepend = function SourceNode_prepend(aChunk) {\n\t if (Array.isArray(aChunk)) {\n\t for (var i = aChunk.length-1; i >= 0; i--) {\n\t this.prepend(aChunk[i]);\n\t }\n\t }\n\t else if (aChunk[isSourceNode] || typeof aChunk === \"string\") {\n\t this.children.unshift(aChunk);\n\t }\n\t else {\n\t throw new TypeError(\n\t \"Expected a SourceNode, string, or an array of SourceNodes and strings. Got \" + aChunk\n\t );\n\t }\n\t return this;\n\t};\n\t\n\t/**\n\t * Walk over the tree of JS snippets in this node and its children. The\n\t * walking function is called once for each snippet of JS and is passed that\n\t * snippet and the its original associated source's line/column location.\n\t *\n\t * @param aFn The traversal function.\n\t */\n\tSourceNode.prototype.walk = function SourceNode_walk(aFn) {\n\t var chunk;\n\t for (var i = 0, len = this.children.length; i < len; i++) {\n\t chunk = this.children[i];\n\t if (chunk[isSourceNode]) {\n\t chunk.walk(aFn);\n\t }\n\t else {\n\t if (chunk !== '') {\n\t aFn(chunk, { source: this.source,\n\t line: this.line,\n\t column: this.column,\n\t name: this.name });\n\t }\n\t }\n\t }\n\t};\n\t\n\t/**\n\t * Like `String.prototype.join` except for SourceNodes. Inserts `aStr` between\n\t * each of `this.children`.\n\t *\n\t * @param aSep The separator.\n\t */\n\tSourceNode.prototype.join = function SourceNode_join(aSep) {\n\t var newChildren;\n\t var i;\n\t var len = this.children.length;\n\t if (len > 0) {\n\t newChildren = [];\n\t for (i = 0; i < len-1; i++) {\n\t newChildren.push(this.children[i]);\n\t newChildren.push(aSep);\n\t }\n\t newChildren.push(this.children[i]);\n\t this.children = newChildren;\n\t }\n\t return this;\n\t};\n\t\n\t/**\n\t * Call String.prototype.replace on the very right-most source snippet. Useful\n\t * for trimming whitespace from the end of a source node, etc.\n\t *\n\t * @param aPattern The pattern to replace.\n\t * @param aReplacement The thing to replace the pattern with.\n\t */\n\tSourceNode.prototype.replaceRight = function SourceNode_replaceRight(aPattern, aReplacement) {\n\t var lastChild = this.children[this.children.length - 1];\n\t if (lastChild[isSourceNode]) {\n\t lastChild.replaceRight(aPattern, aReplacement);\n\t }\n\t else if (typeof lastChild === 'string') {\n\t this.children[this.children.length - 1] = lastChild.replace(aPattern, aReplacement);\n\t }\n\t else {\n\t this.children.push(''.replace(aPattern, aReplacement));\n\t }\n\t return this;\n\t};\n\t\n\t/**\n\t * Set the source content for a source file. This will be added to the SourceMapGenerator\n\t * in the sourcesContent field.\n\t *\n\t * @param aSourceFile The filename of the source file\n\t * @param aSourceContent The content of the source file\n\t */\n\tSourceNode.prototype.setSourceContent =\n\t function SourceNode_setSourceContent(aSourceFile, aSourceContent) {\n\t this.sourceContents[util.toSetString(aSourceFile)] = aSourceContent;\n\t };\n\t\n\t/**\n\t * Walk over the tree of SourceNodes. The walking function is called for each\n\t * source file content and is passed the filename and source content.\n\t *\n\t * @param aFn The traversal function.\n\t */\n\tSourceNode.prototype.walkSourceContents =\n\t function SourceNode_walkSourceContents(aFn) {\n\t for (var i = 0, len = this.children.length; i < len; i++) {\n\t if (this.children[i][isSourceNode]) {\n\t this.children[i].walkSourceContents(aFn);\n\t }\n\t }\n\t\n\t var sources = Object.keys(this.sourceContents);\n\t for (var i = 0, len = sources.length; i < len; i++) {\n\t aFn(util.fromSetString(sources[i]), this.sourceContents[sources[i]]);\n\t }\n\t };\n\t\n\t/**\n\t * Return the string representation of this source node. Walks over the tree\n\t * and concatenates all the various snippets together to one string.\n\t */\n\tSourceNode.prototype.toString = function SourceNode_toString() {\n\t var str = \"\";\n\t this.walk(function (chunk) {\n\t str += chunk;\n\t });\n\t return str;\n\t};\n\t\n\t/**\n\t * Returns the string representation of this source node along with a source\n\t * map.\n\t */\n\tSourceNode.prototype.toStringWithSourceMap = function SourceNode_toStringWithSourceMap(aArgs) {\n\t var generated = {\n\t code: \"\",\n\t line: 1,\n\t column: 0\n\t };\n\t var map = new SourceMapGenerator(aArgs);\n\t var sourceMappingActive = false;\n\t var lastOriginalSource = null;\n\t var lastOriginalLine = null;\n\t var lastOriginalColumn = null;\n\t var lastOriginalName = null;\n\t this.walk(function (chunk, original) {\n\t generated.code += chunk;\n\t if (original.source !== null\n\t && original.line !== null\n\t && original.column !== null) {\n\t if(lastOriginalSource !== original.source\n\t || lastOriginalLine !== original.line\n\t || lastOriginalColumn !== original.column\n\t || lastOriginalName !== original.name) {\n\t map.addMapping({\n\t source: original.source,\n\t original: {\n\t line: original.line,\n\t column: original.column\n\t },\n\t generated: {\n\t line: generated.line,\n\t column: generated.column\n\t },\n\t name: original.name\n\t });\n\t }\n\t lastOriginalSource = original.source;\n\t lastOriginalLine = original.line;\n\t lastOriginalColumn = original.column;\n\t lastOriginalName = original.name;\n\t sourceMappingActive = true;\n\t } else if (sourceMappingActive) {\n\t map.addMapping({\n\t generated: {\n\t line: generated.line,\n\t column: generated.column\n\t }\n\t });\n\t lastOriginalSource = null;\n\t sourceMappingActive = false;\n\t }\n\t for (var idx = 0, length = chunk.length; idx < length; idx++) {\n\t if (chunk.charCodeAt(idx) === NEWLINE_CODE) {\n\t generated.line++;\n\t generated.column = 0;\n\t // Mappings end at eol\n\t if (idx + 1 === length) {\n\t lastOriginalSource = null;\n\t sourceMappingActive = false;\n\t } else if (sourceMappingActive) {\n\t map.addMapping({\n\t source: original.source,\n\t original: {\n\t line: original.line,\n\t column: original.column\n\t },\n\t generated: {\n\t line: generated.line,\n\t column: generated.column\n\t },\n\t name: original.name\n\t });\n\t }\n\t } else {\n\t generated.column++;\n\t }\n\t }\n\t });\n\t this.walkSourceContents(function (sourceFile, sourceContent) {\n\t map.setSourceContent(sourceFile, sourceContent);\n\t });\n\t\n\t return { code: generated.code, map: map };\n\t};\n\t\n\texports.SourceNode = SourceNode;\n\n\n/***/ })\n/******/ ])\n});\n;\n\n\n// WEBPACK FOOTER //\n// source-map.min.js"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId])\n \t\t\treturn installedModules[moduleId].exports;\n\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\texports: {},\n \t\t\tid: moduleId,\n \t\t\tloaded: false\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.loaded = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(0);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 0fd5815da764db5fb9fe","/*\n * Copyright 2009-2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE.txt or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\nexports.SourceMapGenerator = require('./lib/source-map-generator').SourceMapGenerator;\nexports.SourceMapConsumer = require('./lib/source-map-consumer').SourceMapConsumer;\nexports.SourceNode = require('./lib/source-node').SourceNode;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./source-map.js\n// module id = 0\n// module chunks = 0","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar base64VLQ = require('./base64-vlq');\nvar util = require('./util');\nvar ArraySet = require('./array-set').ArraySet;\nvar MappingList = require('./mapping-list').MappingList;\n\n/**\n * An instance of the SourceMapGenerator represents a source map which is\n * being built incrementally. You may pass an object with the following\n * properties:\n *\n * - file: The filename of the generated source.\n * - sourceRoot: A root for all relative URLs in this source map.\n */\nfunction SourceMapGenerator(aArgs) {\n if (!aArgs) {\n aArgs = {};\n }\n this._file = util.getArg(aArgs, 'file', null);\n this._sourceRoot = util.getArg(aArgs, 'sourceRoot', null);\n this._skipValidation = util.getArg(aArgs, 'skipValidation', false);\n this._sources = new ArraySet();\n this._names = new ArraySet();\n this._mappings = new MappingList();\n this._sourcesContents = null;\n}\n\nSourceMapGenerator.prototype._version = 3;\n\n/**\n * Creates a new SourceMapGenerator based on a SourceMapConsumer\n *\n * @param aSourceMapConsumer The SourceMap.\n */\nSourceMapGenerator.fromSourceMap =\n function SourceMapGenerator_fromSourceMap(aSourceMapConsumer) {\n var sourceRoot = aSourceMapConsumer.sourceRoot;\n var generator = new SourceMapGenerator({\n file: aSourceMapConsumer.file,\n sourceRoot: sourceRoot\n });\n aSourceMapConsumer.eachMapping(function (mapping) {\n var newMapping = {\n generated: {\n line: mapping.generatedLine,\n column: mapping.generatedColumn\n }\n };\n\n if (mapping.source != null) {\n newMapping.source = mapping.source;\n if (sourceRoot != null) {\n newMapping.source = util.relative(sourceRoot, newMapping.source);\n }\n\n newMapping.original = {\n line: mapping.originalLine,\n column: mapping.originalColumn\n };\n\n if (mapping.name != null) {\n newMapping.name = mapping.name;\n }\n }\n\n generator.addMapping(newMapping);\n });\n aSourceMapConsumer.sources.forEach(function (sourceFile) {\n var sourceRelative = sourceFile;\n if (sourceRoot !== null) {\n sourceRelative = util.relative(sourceRoot, sourceFile);\n }\n\n if (!generator._sources.has(sourceRelative)) {\n generator._sources.add(sourceRelative);\n }\n\n var content = aSourceMapConsumer.sourceContentFor(sourceFile);\n if (content != null) {\n generator.setSourceContent(sourceFile, content);\n }\n });\n return generator;\n };\n\n/**\n * Add a single mapping from original source line and column to the generated\n * source's line and column for this source map being created. The mapping\n * object should have the following properties:\n *\n * - generated: An object with the generated line and column positions.\n * - original: An object with the original line and column positions.\n * - source: The original source file (relative to the sourceRoot).\n * - name: An optional original token name for this mapping.\n */\nSourceMapGenerator.prototype.addMapping =\n function SourceMapGenerator_addMapping(aArgs) {\n var generated = util.getArg(aArgs, 'generated');\n var original = util.getArg(aArgs, 'original', null);\n var source = util.getArg(aArgs, 'source', null);\n var name = util.getArg(aArgs, 'name', null);\n\n if (!this._skipValidation) {\n this._validateMapping(generated, original, source, name);\n }\n\n if (source != null) {\n source = String(source);\n if (!this._sources.has(source)) {\n this._sources.add(source);\n }\n }\n\n if (name != null) {\n name = String(name);\n if (!this._names.has(name)) {\n this._names.add(name);\n }\n }\n\n this._mappings.add({\n generatedLine: generated.line,\n generatedColumn: generated.column,\n originalLine: original != null && original.line,\n originalColumn: original != null && original.column,\n source: source,\n name: name\n });\n };\n\n/**\n * Set the source content for a source file.\n */\nSourceMapGenerator.prototype.setSourceContent =\n function SourceMapGenerator_setSourceContent(aSourceFile, aSourceContent) {\n var source = aSourceFile;\n if (this._sourceRoot != null) {\n source = util.relative(this._sourceRoot, source);\n }\n\n if (aSourceContent != null) {\n // Add the source content to the _sourcesContents map.\n // Create a new _sourcesContents map if the property is null.\n if (!this._sourcesContents) {\n this._sourcesContents = Object.create(null);\n }\n this._sourcesContents[util.toSetString(source)] = aSourceContent;\n } else if (this._sourcesContents) {\n // Remove the source file from the _sourcesContents map.\n // If the _sourcesContents map is empty, set the property to null.\n delete this._sourcesContents[util.toSetString(source)];\n if (Object.keys(this._sourcesContents).length === 0) {\n this._sourcesContents = null;\n }\n }\n };\n\n/**\n * Applies the mappings of a sub-source-map for a specific source file to the\n * source map being generated. Each mapping to the supplied source file is\n * rewritten using the supplied source map. Note: The resolution for the\n * resulting mappings is the minimium of this map and the supplied map.\n *\n * @param aSourceMapConsumer The source map to be applied.\n * @param aSourceFile Optional. The filename of the source file.\n * If omitted, SourceMapConsumer's file property will be used.\n * @param aSourceMapPath Optional. The dirname of the path to the source map\n * to be applied. If relative, it is relative to the SourceMapConsumer.\n * This parameter is needed when the two source maps aren't in the same\n * directory, and the source map to be applied contains relative source\n * paths. If so, those relative source paths need to be rewritten\n * relative to the SourceMapGenerator.\n */\nSourceMapGenerator.prototype.applySourceMap =\n function SourceMapGenerator_applySourceMap(aSourceMapConsumer, aSourceFile, aSourceMapPath) {\n var sourceFile = aSourceFile;\n // If aSourceFile is omitted, we will use the file property of the SourceMap\n if (aSourceFile == null) {\n if (aSourceMapConsumer.file == null) {\n throw new Error(\n 'SourceMapGenerator.prototype.applySourceMap requires either an explicit source file, ' +\n 'or the source map\\'s \"file\" property. Both were omitted.'\n );\n }\n sourceFile = aSourceMapConsumer.file;\n }\n var sourceRoot = this._sourceRoot;\n // Make \"sourceFile\" relative if an absolute Url is passed.\n if (sourceRoot != null) {\n sourceFile = util.relative(sourceRoot, sourceFile);\n }\n // Applying the SourceMap can add and remove items from the sources and\n // the names array.\n var newSources = new ArraySet();\n var newNames = new ArraySet();\n\n // Find mappings for the \"sourceFile\"\n this._mappings.unsortedForEach(function (mapping) {\n if (mapping.source === sourceFile && mapping.originalLine != null) {\n // Check if it can be mapped by the source map, then update the mapping.\n var original = aSourceMapConsumer.originalPositionFor({\n line: mapping.originalLine,\n column: mapping.originalColumn\n });\n if (original.source != null) {\n // Copy mapping\n mapping.source = original.source;\n if (aSourceMapPath != null) {\n mapping.source = util.join(aSourceMapPath, mapping.source)\n }\n if (sourceRoot != null) {\n mapping.source = util.relative(sourceRoot, mapping.source);\n }\n mapping.originalLine = original.line;\n mapping.originalColumn = original.column;\n if (original.name != null) {\n mapping.name = original.name;\n }\n }\n }\n\n var source = mapping.source;\n if (source != null && !newSources.has(source)) {\n newSources.add(source);\n }\n\n var name = mapping.name;\n if (name != null && !newNames.has(name)) {\n newNames.add(name);\n }\n\n }, this);\n this._sources = newSources;\n this._names = newNames;\n\n // Copy sourcesContents of applied map.\n aSourceMapConsumer.sources.forEach(function (sourceFile) {\n var content = aSourceMapConsumer.sourceContentFor(sourceFile);\n if (content != null) {\n if (aSourceMapPath != null) {\n sourceFile = util.join(aSourceMapPath, sourceFile);\n }\n if (sourceRoot != null) {\n sourceFile = util.relative(sourceRoot, sourceFile);\n }\n this.setSourceContent(sourceFile, content);\n }\n }, this);\n };\n\n/**\n * A mapping can have one of the three levels of data:\n *\n * 1. Just the generated position.\n * 2. The Generated position, original position, and original source.\n * 3. Generated and original position, original source, as well as a name\n * token.\n *\n * To maintain consistency, we validate that any new mapping being added falls\n * in to one of these categories.\n */\nSourceMapGenerator.prototype._validateMapping =\n function SourceMapGenerator_validateMapping(aGenerated, aOriginal, aSource,\n aName) {\n // When aOriginal is truthy but has empty values for .line and .column,\n // it is most likely a programmer error. In this case we throw a very\n // specific error message to try to guide them the right way.\n // For example: https://github.com/Polymer/polymer-bundler/pull/519\n if (aOriginal && typeof aOriginal.line !== 'number' && typeof aOriginal.column !== 'number') {\n throw new Error(\n 'original.line and original.column are not numbers -- you probably meant to omit ' +\n 'the original mapping entirely and only map the generated position. If so, pass ' +\n 'null for the original mapping instead of an object with empty or null values.'\n );\n }\n\n if (aGenerated && 'line' in aGenerated && 'column' in aGenerated\n && aGenerated.line > 0 && aGenerated.column >= 0\n && !aOriginal && !aSource && !aName) {\n // Case 1.\n return;\n }\n else if (aGenerated && 'line' in aGenerated && 'column' in aGenerated\n && aOriginal && 'line' in aOriginal && 'column' in aOriginal\n && aGenerated.line > 0 && aGenerated.column >= 0\n && aOriginal.line > 0 && aOriginal.column >= 0\n && aSource) {\n // Cases 2 and 3.\n return;\n }\n else {\n throw new Error('Invalid mapping: ' + JSON.stringify({\n generated: aGenerated,\n source: aSource,\n original: aOriginal,\n name: aName\n }));\n }\n };\n\n/**\n * Serialize the accumulated mappings in to the stream of base 64 VLQs\n * specified by the source map format.\n */\nSourceMapGenerator.prototype._serializeMappings =\n function SourceMapGenerator_serializeMappings() {\n var previousGeneratedColumn = 0;\n var previousGeneratedLine = 1;\n var previousOriginalColumn = 0;\n var previousOriginalLine = 0;\n var previousName = 0;\n var previousSource = 0;\n var result = '';\n var next;\n var mapping;\n var nameIdx;\n var sourceIdx;\n\n var mappings = this._mappings.toArray();\n for (var i = 0, len = mappings.length; i < len; i++) {\n mapping = mappings[i];\n next = ''\n\n if (mapping.generatedLine !== previousGeneratedLine) {\n previousGeneratedColumn = 0;\n while (mapping.generatedLine !== previousGeneratedLine) {\n next += ';';\n previousGeneratedLine++;\n }\n }\n else {\n if (i > 0) {\n if (!util.compareByGeneratedPositionsInflated(mapping, mappings[i - 1])) {\n continue;\n }\n next += ',';\n }\n }\n\n next += base64VLQ.encode(mapping.generatedColumn\n - previousGeneratedColumn);\n previousGeneratedColumn = mapping.generatedColumn;\n\n if (mapping.source != null) {\n sourceIdx = this._sources.indexOf(mapping.source);\n next += base64VLQ.encode(sourceIdx - previousSource);\n previousSource = sourceIdx;\n\n // lines are stored 0-based in SourceMap spec version 3\n next += base64VLQ.encode(mapping.originalLine - 1\n - previousOriginalLine);\n previousOriginalLine = mapping.originalLine - 1;\n\n next += base64VLQ.encode(mapping.originalColumn\n - previousOriginalColumn);\n previousOriginalColumn = mapping.originalColumn;\n\n if (mapping.name != null) {\n nameIdx = this._names.indexOf(mapping.name);\n next += base64VLQ.encode(nameIdx - previousName);\n previousName = nameIdx;\n }\n }\n\n result += next;\n }\n\n return result;\n };\n\nSourceMapGenerator.prototype._generateSourcesContent =\n function SourceMapGenerator_generateSourcesContent(aSources, aSourceRoot) {\n return aSources.map(function (source) {\n if (!this._sourcesContents) {\n return null;\n }\n if (aSourceRoot != null) {\n source = util.relative(aSourceRoot, source);\n }\n var key = util.toSetString(source);\n return Object.prototype.hasOwnProperty.call(this._sourcesContents, key)\n ? this._sourcesContents[key]\n : null;\n }, this);\n };\n\n/**\n * Externalize the source map.\n */\nSourceMapGenerator.prototype.toJSON =\n function SourceMapGenerator_toJSON() {\n var map = {\n version: this._version,\n sources: this._sources.toArray(),\n names: this._names.toArray(),\n mappings: this._serializeMappings()\n };\n if (this._file != null) {\n map.file = this._file;\n }\n if (this._sourceRoot != null) {\n map.sourceRoot = this._sourceRoot;\n }\n if (this._sourcesContents) {\n map.sourcesContent = this._generateSourcesContent(map.sources, map.sourceRoot);\n }\n\n return map;\n };\n\n/**\n * Render the source map being generated to a string.\n */\nSourceMapGenerator.prototype.toString =\n function SourceMapGenerator_toString() {\n return JSON.stringify(this.toJSON());\n };\n\nexports.SourceMapGenerator = SourceMapGenerator;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./lib/source-map-generator.js\n// module id = 1\n// module chunks = 0","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n *\n * Based on the Base 64 VLQ implementation in Closure Compiler:\n * https://code.google.com/p/closure-compiler/source/browse/trunk/src/com/google/debugging/sourcemap/Base64VLQ.java\n *\n * Copyright 2011 The Closure Compiler Authors. All rights reserved.\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are\n * met:\n *\n * * Redistributions of source code must retain the above copyright\n * notice, this list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above\n * copyright notice, this list of conditions and the following\n * disclaimer in the documentation and/or other materials provided\n * with the distribution.\n * * Neither the name of Google Inc. nor the names of its\n * contributors may be used to endorse or promote products derived\n * from this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n * \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nvar base64 = require('./base64');\n\n// A single base 64 digit can contain 6 bits of data. For the base 64 variable\n// length quantities we use in the source map spec, the first bit is the sign,\n// the next four bits are the actual value, and the 6th bit is the\n// continuation bit. The continuation bit tells us whether there are more\n// digits in this value following this digit.\n//\n// Continuation\n// | Sign\n// | |\n// V V\n// 101011\n\nvar VLQ_BASE_SHIFT = 5;\n\n// binary: 100000\nvar VLQ_BASE = 1 << VLQ_BASE_SHIFT;\n\n// binary: 011111\nvar VLQ_BASE_MASK = VLQ_BASE - 1;\n\n// binary: 100000\nvar VLQ_CONTINUATION_BIT = VLQ_BASE;\n\n/**\n * Converts from a two-complement value to a value where the sign bit is\n * placed in the least significant bit. For example, as decimals:\n * 1 becomes 2 (10 binary), -1 becomes 3 (11 binary)\n * 2 becomes 4 (100 binary), -2 becomes 5 (101 binary)\n */\nfunction toVLQSigned(aValue) {\n return aValue < 0\n ? ((-aValue) << 1) + 1\n : (aValue << 1) + 0;\n}\n\n/**\n * Converts to a two-complement value from a value where the sign bit is\n * placed in the least significant bit. For example, as decimals:\n * 2 (10 binary) becomes 1, 3 (11 binary) becomes -1\n * 4 (100 binary) becomes 2, 5 (101 binary) becomes -2\n */\nfunction fromVLQSigned(aValue) {\n var isNegative = (aValue & 1) === 1;\n var shifted = aValue >> 1;\n return isNegative\n ? -shifted\n : shifted;\n}\n\n/**\n * Returns the base 64 VLQ encoded value.\n */\nexports.encode = function base64VLQ_encode(aValue) {\n var encoded = \"\";\n var digit;\n\n var vlq = toVLQSigned(aValue);\n\n do {\n digit = vlq & VLQ_BASE_MASK;\n vlq >>>= VLQ_BASE_SHIFT;\n if (vlq > 0) {\n // There are still more digits in this value, so we must make sure the\n // continuation bit is marked.\n digit |= VLQ_CONTINUATION_BIT;\n }\n encoded += base64.encode(digit);\n } while (vlq > 0);\n\n return encoded;\n};\n\n/**\n * Decodes the next base 64 VLQ value from the given string and returns the\n * value and the rest of the string via the out parameter.\n */\nexports.decode = function base64VLQ_decode(aStr, aIndex, aOutParam) {\n var strLen = aStr.length;\n var result = 0;\n var shift = 0;\n var continuation, digit;\n\n do {\n if (aIndex >= strLen) {\n throw new Error(\"Expected more digits in base 64 VLQ value.\");\n }\n\n digit = base64.decode(aStr.charCodeAt(aIndex++));\n if (digit === -1) {\n throw new Error(\"Invalid base64 digit: \" + aStr.charAt(aIndex - 1));\n }\n\n continuation = !!(digit & VLQ_CONTINUATION_BIT);\n digit &= VLQ_BASE_MASK;\n result = result + (digit << shift);\n shift += VLQ_BASE_SHIFT;\n } while (continuation);\n\n aOutParam.value = fromVLQSigned(result);\n aOutParam.rest = aIndex;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./lib/base64-vlq.js\n// module id = 2\n// module chunks = 0","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar intToCharMap = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'.split('');\n\n/**\n * Encode an integer in the range of 0 to 63 to a single base 64 digit.\n */\nexports.encode = function (number) {\n if (0 <= number && number < intToCharMap.length) {\n return intToCharMap[number];\n }\n throw new TypeError(\"Must be between 0 and 63: \" + number);\n};\n\n/**\n * Decode a single base 64 character code digit to an integer. Returns -1 on\n * failure.\n */\nexports.decode = function (charCode) {\n var bigA = 65; // 'A'\n var bigZ = 90; // 'Z'\n\n var littleA = 97; // 'a'\n var littleZ = 122; // 'z'\n\n var zero = 48; // '0'\n var nine = 57; // '9'\n\n var plus = 43; // '+'\n var slash = 47; // '/'\n\n var littleOffset = 26;\n var numberOffset = 52;\n\n // 0 - 25: ABCDEFGHIJKLMNOPQRSTUVWXYZ\n if (bigA <= charCode && charCode <= bigZ) {\n return (charCode - bigA);\n }\n\n // 26 - 51: abcdefghijklmnopqrstuvwxyz\n if (littleA <= charCode && charCode <= littleZ) {\n return (charCode - littleA + littleOffset);\n }\n\n // 52 - 61: 0123456789\n if (zero <= charCode && charCode <= nine) {\n return (charCode - zero + numberOffset);\n }\n\n // 62: +\n if (charCode == plus) {\n return 62;\n }\n\n // 63: /\n if (charCode == slash) {\n return 63;\n }\n\n // Invalid base64 digit.\n return -1;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./lib/base64.js\n// module id = 3\n// module chunks = 0","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\n/**\n * This is a helper function for getting values from parameter/options\n * objects.\n *\n * @param args The object we are extracting values from\n * @param name The name of the property we are getting.\n * @param defaultValue An optional value to return if the property is missing\n * from the object. If this is not specified and the property is missing, an\n * error will be thrown.\n */\nfunction getArg(aArgs, aName, aDefaultValue) {\n if (aName in aArgs) {\n return aArgs[aName];\n } else if (arguments.length === 3) {\n return aDefaultValue;\n } else {\n throw new Error('\"' + aName + '\" is a required argument.');\n }\n}\nexports.getArg = getArg;\n\nvar urlRegexp = /^(?:([\\w+\\-.]+):)?\\/\\/(?:(\\w+:\\w+)@)?([\\w.-]*)(?::(\\d+))?(.*)$/;\nvar dataUrlRegexp = /^data:.+\\,.+$/;\n\nfunction urlParse(aUrl) {\n var match = aUrl.match(urlRegexp);\n if (!match) {\n return null;\n }\n return {\n scheme: match[1],\n auth: match[2],\n host: match[3],\n port: match[4],\n path: match[5]\n };\n}\nexports.urlParse = urlParse;\n\nfunction urlGenerate(aParsedUrl) {\n var url = '';\n if (aParsedUrl.scheme) {\n url += aParsedUrl.scheme + ':';\n }\n url += '//';\n if (aParsedUrl.auth) {\n url += aParsedUrl.auth + '@';\n }\n if (aParsedUrl.host) {\n url += aParsedUrl.host;\n }\n if (aParsedUrl.port) {\n url += \":\" + aParsedUrl.port\n }\n if (aParsedUrl.path) {\n url += aParsedUrl.path;\n }\n return url;\n}\nexports.urlGenerate = urlGenerate;\n\n/**\n * Normalizes a path, or the path portion of a URL:\n *\n * - Replaces consecutive slashes with one slash.\n * - Removes unnecessary '.' parts.\n * - Removes unnecessary '/..' parts.\n *\n * Based on code in the Node.js 'path' core module.\n *\n * @param aPath The path or url to normalize.\n */\nfunction normalize(aPath) {\n var path = aPath;\n var url = urlParse(aPath);\n if (url) {\n if (!url.path) {\n return aPath;\n }\n path = url.path;\n }\n var isAbsolute = exports.isAbsolute(path);\n\n var parts = path.split(/\\/+/);\n for (var part, up = 0, i = parts.length - 1; i >= 0; i--) {\n part = parts[i];\n if (part === '.') {\n parts.splice(i, 1);\n } else if (part === '..') {\n up++;\n } else if (up > 0) {\n if (part === '') {\n // The first part is blank if the path is absolute. Trying to go\n // above the root is a no-op. Therefore we can remove all '..' parts\n // directly after the root.\n parts.splice(i + 1, up);\n up = 0;\n } else {\n parts.splice(i, 2);\n up--;\n }\n }\n }\n path = parts.join('/');\n\n if (path === '') {\n path = isAbsolute ? '/' : '.';\n }\n\n if (url) {\n url.path = path;\n return urlGenerate(url);\n }\n return path;\n}\nexports.normalize = normalize;\n\n/**\n * Joins two paths/URLs.\n *\n * @param aRoot The root path or URL.\n * @param aPath The path or URL to be joined with the root.\n *\n * - If aPath is a URL or a data URI, aPath is returned, unless aPath is a\n * scheme-relative URL: Then the scheme of aRoot, if any, is prepended\n * first.\n * - Otherwise aPath is a path. If aRoot is a URL, then its path portion\n * is updated with the result and aRoot is returned. Otherwise the result\n * is returned.\n * - If aPath is absolute, the result is aPath.\n * - Otherwise the two paths are joined with a slash.\n * - Joining for example 'http://' and 'www.example.com' is also supported.\n */\nfunction join(aRoot, aPath) {\n if (aRoot === \"\") {\n aRoot = \".\";\n }\n if (aPath === \"\") {\n aPath = \".\";\n }\n var aPathUrl = urlParse(aPath);\n var aRootUrl = urlParse(aRoot);\n if (aRootUrl) {\n aRoot = aRootUrl.path || '/';\n }\n\n // `join(foo, '//www.example.org')`\n if (aPathUrl && !aPathUrl.scheme) {\n if (aRootUrl) {\n aPathUrl.scheme = aRootUrl.scheme;\n }\n return urlGenerate(aPathUrl);\n }\n\n if (aPathUrl || aPath.match(dataUrlRegexp)) {\n return aPath;\n }\n\n // `join('http://', 'www.example.com')`\n if (aRootUrl && !aRootUrl.host && !aRootUrl.path) {\n aRootUrl.host = aPath;\n return urlGenerate(aRootUrl);\n }\n\n var joined = aPath.charAt(0) === '/'\n ? aPath\n : normalize(aRoot.replace(/\\/+$/, '') + '/' + aPath);\n\n if (aRootUrl) {\n aRootUrl.path = joined;\n return urlGenerate(aRootUrl);\n }\n return joined;\n}\nexports.join = join;\n\nexports.isAbsolute = function (aPath) {\n return aPath.charAt(0) === '/' || urlRegexp.test(aPath);\n};\n\n/**\n * Make a path relative to a URL or another path.\n *\n * @param aRoot The root path or URL.\n * @param aPath The path or URL to be made relative to aRoot.\n */\nfunction relative(aRoot, aPath) {\n if (aRoot === \"\") {\n aRoot = \".\";\n }\n\n aRoot = aRoot.replace(/\\/$/, '');\n\n // It is possible for the path to be above the root. In this case, simply\n // checking whether the root is a prefix of the path won't work. Instead, we\n // need to remove components from the root one by one, until either we find\n // a prefix that fits, or we run out of components to remove.\n var level = 0;\n while (aPath.indexOf(aRoot + '/') !== 0) {\n var index = aRoot.lastIndexOf(\"/\");\n if (index < 0) {\n return aPath;\n }\n\n // If the only part of the root that is left is the scheme (i.e. http://,\n // file:///, etc.), one or more slashes (/), or simply nothing at all, we\n // have exhausted all components, so the path is not relative to the root.\n aRoot = aRoot.slice(0, index);\n if (aRoot.match(/^([^\\/]+:\\/)?\\/*$/)) {\n return aPath;\n }\n\n ++level;\n }\n\n // Make sure we add a \"../\" for each component we removed from the root.\n return Array(level + 1).join(\"../\") + aPath.substr(aRoot.length + 1);\n}\nexports.relative = relative;\n\nvar supportsNullProto = (function () {\n var obj = Object.create(null);\n return !('__proto__' in obj);\n}());\n\nfunction identity (s) {\n return s;\n}\n\n/**\n * Because behavior goes wacky when you set `__proto__` on objects, we\n * have to prefix all the strings in our set with an arbitrary character.\n *\n * See https://github.com/mozilla/source-map/pull/31 and\n * https://github.com/mozilla/source-map/issues/30\n *\n * @param String aStr\n */\nfunction toSetString(aStr) {\n if (isProtoString(aStr)) {\n return '$' + aStr;\n }\n\n return aStr;\n}\nexports.toSetString = supportsNullProto ? identity : toSetString;\n\nfunction fromSetString(aStr) {\n if (isProtoString(aStr)) {\n return aStr.slice(1);\n }\n\n return aStr;\n}\nexports.fromSetString = supportsNullProto ? identity : fromSetString;\n\nfunction isProtoString(s) {\n if (!s) {\n return false;\n }\n\n var length = s.length;\n\n if (length < 9 /* \"__proto__\".length */) {\n return false;\n }\n\n if (s.charCodeAt(length - 1) !== 95 /* '_' */ ||\n s.charCodeAt(length - 2) !== 95 /* '_' */ ||\n s.charCodeAt(length - 3) !== 111 /* 'o' */ ||\n s.charCodeAt(length - 4) !== 116 /* 't' */ ||\n s.charCodeAt(length - 5) !== 111 /* 'o' */ ||\n s.charCodeAt(length - 6) !== 114 /* 'r' */ ||\n s.charCodeAt(length - 7) !== 112 /* 'p' */ ||\n s.charCodeAt(length - 8) !== 95 /* '_' */ ||\n s.charCodeAt(length - 9) !== 95 /* '_' */) {\n return false;\n }\n\n for (var i = length - 10; i >= 0; i--) {\n if (s.charCodeAt(i) !== 36 /* '$' */) {\n return false;\n }\n }\n\n return true;\n}\n\n/**\n * Comparator between two mappings where the original positions are compared.\n *\n * Optionally pass in `true` as `onlyCompareGenerated` to consider two\n * mappings with the same original source/line/column, but different generated\n * line and column the same. Useful when searching for a mapping with a\n * stubbed out mapping.\n */\nfunction compareByOriginalPositions(mappingA, mappingB, onlyCompareOriginal) {\n var cmp = strcmp(mappingA.source, mappingB.source);\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalLine - mappingB.originalLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalColumn - mappingB.originalColumn;\n if (cmp !== 0 || onlyCompareOriginal) {\n return cmp;\n }\n\n cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.generatedLine - mappingB.generatedLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n return strcmp(mappingA.name, mappingB.name);\n}\nexports.compareByOriginalPositions = compareByOriginalPositions;\n\n/**\n * Comparator between two mappings with deflated source and name indices where\n * the generated positions are compared.\n *\n * Optionally pass in `true` as `onlyCompareGenerated` to consider two\n * mappings with the same generated line and column, but different\n * source/name/original line and column the same. Useful when searching for a\n * mapping with a stubbed out mapping.\n */\nfunction compareByGeneratedPositionsDeflated(mappingA, mappingB, onlyCompareGenerated) {\n var cmp = mappingA.generatedLine - mappingB.generatedLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n if (cmp !== 0 || onlyCompareGenerated) {\n return cmp;\n }\n\n cmp = strcmp(mappingA.source, mappingB.source);\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalLine - mappingB.originalLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalColumn - mappingB.originalColumn;\n if (cmp !== 0) {\n return cmp;\n }\n\n return strcmp(mappingA.name, mappingB.name);\n}\nexports.compareByGeneratedPositionsDeflated = compareByGeneratedPositionsDeflated;\n\nfunction strcmp(aStr1, aStr2) {\n if (aStr1 === aStr2) {\n return 0;\n }\n\n if (aStr1 === null) {\n return 1; // aStr2 !== null\n }\n\n if (aStr2 === null) {\n return -1; // aStr1 !== null\n }\n\n if (aStr1 > aStr2) {\n return 1;\n }\n\n return -1;\n}\n\n/**\n * Comparator between two mappings with inflated source and name strings where\n * the generated positions are compared.\n */\nfunction compareByGeneratedPositionsInflated(mappingA, mappingB) {\n var cmp = mappingA.generatedLine - mappingB.generatedLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = strcmp(mappingA.source, mappingB.source);\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalLine - mappingB.originalLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalColumn - mappingB.originalColumn;\n if (cmp !== 0) {\n return cmp;\n }\n\n return strcmp(mappingA.name, mappingB.name);\n}\nexports.compareByGeneratedPositionsInflated = compareByGeneratedPositionsInflated;\n\n/**\n * Strip any JSON XSSI avoidance prefix from the string (as documented\n * in the source maps specification), and then parse the string as\n * JSON.\n */\nfunction parseSourceMapInput(str) {\n return JSON.parse(str.replace(/^\\)]}'[^\\n]*\\n/, ''));\n}\nexports.parseSourceMapInput = parseSourceMapInput;\n\n/**\n * Compute the URL of a source given the the source root, the source's\n * URL, and the source map's URL.\n */\nfunction computeSourceURL(sourceRoot, sourceURL, sourceMapURL) {\n sourceURL = sourceURL || '';\n\n if (sourceRoot) {\n // This follows what Chrome does.\n if (sourceRoot[sourceRoot.length - 1] !== '/' && sourceURL[0] !== '/') {\n sourceRoot += '/';\n }\n // The spec says:\n // Line 4: An optional source root, useful for relocating source\n // files on a server or removing repeated values in the\n // “sources” entry. This value is prepended to the individual\n // entries in the “source” field.\n sourceURL = sourceRoot + sourceURL;\n }\n\n // Historically, SourceMapConsumer did not take the sourceMapURL as\n // a parameter. This mode is still somewhat supported, which is why\n // this code block is conditional. However, it's preferable to pass\n // the source map URL to SourceMapConsumer, so that this function\n // can implement the source URL resolution algorithm as outlined in\n // the spec. This block is basically the equivalent of:\n // new URL(sourceURL, sourceMapURL).toString()\n // ... except it avoids using URL, which wasn't available in the\n // older releases of node still supported by this library.\n //\n // The spec says:\n // If the sources are not absolute URLs after prepending of the\n // “sourceRoot”, the sources are resolved relative to the\n // SourceMap (like resolving script src in a html document).\n if (sourceMapURL) {\n var parsed = urlParse(sourceMapURL);\n if (!parsed) {\n throw new Error(\"sourceMapURL could not be parsed\");\n }\n if (parsed.path) {\n // Strip the last path component, but keep the \"/\".\n var index = parsed.path.lastIndexOf('/');\n if (index >= 0) {\n parsed.path = parsed.path.substring(0, index + 1);\n }\n }\n sourceURL = join(urlGenerate(parsed), sourceURL);\n }\n\n return normalize(sourceURL);\n}\nexports.computeSourceURL = computeSourceURL;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./lib/util.js\n// module id = 4\n// module chunks = 0","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar util = require('./util');\nvar has = Object.prototype.hasOwnProperty;\nvar hasNativeMap = typeof Map !== \"undefined\";\n\n/**\n * A data structure which is a combination of an array and a set. Adding a new\n * member is O(1), testing for membership is O(1), and finding the index of an\n * element is O(1). Removing elements from the set is not supported. Only\n * strings are supported for membership.\n */\nfunction ArraySet() {\n this._array = [];\n this._set = hasNativeMap ? new Map() : Object.create(null);\n}\n\n/**\n * Static method for creating ArraySet instances from an existing array.\n */\nArraySet.fromArray = function ArraySet_fromArray(aArray, aAllowDuplicates) {\n var set = new ArraySet();\n for (var i = 0, len = aArray.length; i < len; i++) {\n set.add(aArray[i], aAllowDuplicates);\n }\n return set;\n};\n\n/**\n * Return how many unique items are in this ArraySet. If duplicates have been\n * added, than those do not count towards the size.\n *\n * @returns Number\n */\nArraySet.prototype.size = function ArraySet_size() {\n return hasNativeMap ? this._set.size : Object.getOwnPropertyNames(this._set).length;\n};\n\n/**\n * Add the given string to this set.\n *\n * @param String aStr\n */\nArraySet.prototype.add = function ArraySet_add(aStr, aAllowDuplicates) {\n var sStr = hasNativeMap ? aStr : util.toSetString(aStr);\n var isDuplicate = hasNativeMap ? this.has(aStr) : has.call(this._set, sStr);\n var idx = this._array.length;\n if (!isDuplicate || aAllowDuplicates) {\n this._array.push(aStr);\n }\n if (!isDuplicate) {\n if (hasNativeMap) {\n this._set.set(aStr, idx);\n } else {\n this._set[sStr] = idx;\n }\n }\n};\n\n/**\n * Is the given string a member of this set?\n *\n * @param String aStr\n */\nArraySet.prototype.has = function ArraySet_has(aStr) {\n if (hasNativeMap) {\n return this._set.has(aStr);\n } else {\n var sStr = util.toSetString(aStr);\n return has.call(this._set, sStr);\n }\n};\n\n/**\n * What is the index of the given string in the array?\n *\n * @param String aStr\n */\nArraySet.prototype.indexOf = function ArraySet_indexOf(aStr) {\n if (hasNativeMap) {\n var idx = this._set.get(aStr);\n if (idx >= 0) {\n return idx;\n }\n } else {\n var sStr = util.toSetString(aStr);\n if (has.call(this._set, sStr)) {\n return this._set[sStr];\n }\n }\n\n throw new Error('\"' + aStr + '\" is not in the set.');\n};\n\n/**\n * What is the element at the given index?\n *\n * @param Number aIdx\n */\nArraySet.prototype.at = function ArraySet_at(aIdx) {\n if (aIdx >= 0 && aIdx < this._array.length) {\n return this._array[aIdx];\n }\n throw new Error('No element indexed by ' + aIdx);\n};\n\n/**\n * Returns the array representation of this set (which has the proper indices\n * indicated by indexOf). Note that this is a copy of the internal array used\n * for storing the members so that no one can mess with internal state.\n */\nArraySet.prototype.toArray = function ArraySet_toArray() {\n return this._array.slice();\n};\n\nexports.ArraySet = ArraySet;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./lib/array-set.js\n// module id = 5\n// module chunks = 0","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2014 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar util = require('./util');\n\n/**\n * Determine whether mappingB is after mappingA with respect to generated\n * position.\n */\nfunction generatedPositionAfter(mappingA, mappingB) {\n // Optimized for most common case\n var lineA = mappingA.generatedLine;\n var lineB = mappingB.generatedLine;\n var columnA = mappingA.generatedColumn;\n var columnB = mappingB.generatedColumn;\n return lineB > lineA || lineB == lineA && columnB >= columnA ||\n util.compareByGeneratedPositionsInflated(mappingA, mappingB) <= 0;\n}\n\n/**\n * A data structure to provide a sorted view of accumulated mappings in a\n * performance conscious manner. It trades a neglibable overhead in general\n * case for a large speedup in case of mappings being added in order.\n */\nfunction MappingList() {\n this._array = [];\n this._sorted = true;\n // Serves as infimum\n this._last = {generatedLine: -1, generatedColumn: 0};\n}\n\n/**\n * Iterate through internal items. This method takes the same arguments that\n * `Array.prototype.forEach` takes.\n *\n * NOTE: The order of the mappings is NOT guaranteed.\n */\nMappingList.prototype.unsortedForEach =\n function MappingList_forEach(aCallback, aThisArg) {\n this._array.forEach(aCallback, aThisArg);\n };\n\n/**\n * Add the given source mapping.\n *\n * @param Object aMapping\n */\nMappingList.prototype.add = function MappingList_add(aMapping) {\n if (generatedPositionAfter(this._last, aMapping)) {\n this._last = aMapping;\n this._array.push(aMapping);\n } else {\n this._sorted = false;\n this._array.push(aMapping);\n }\n};\n\n/**\n * Returns the flat, sorted array of mappings. The mappings are sorted by\n * generated position.\n *\n * WARNING: This method returns internal data without copying, for\n * performance. The return value must NOT be mutated, and should be treated as\n * an immutable borrow. If you want to take ownership, you must make your own\n * copy.\n */\nMappingList.prototype.toArray = function MappingList_toArray() {\n if (!this._sorted) {\n this._array.sort(util.compareByGeneratedPositionsInflated);\n this._sorted = true;\n }\n return this._array;\n};\n\nexports.MappingList = MappingList;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./lib/mapping-list.js\n// module id = 6\n// module chunks = 0","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar util = require('./util');\nvar binarySearch = require('./binary-search');\nvar ArraySet = require('./array-set').ArraySet;\nvar base64VLQ = require('./base64-vlq');\nvar quickSort = require('./quick-sort').quickSort;\n\nfunction SourceMapConsumer(aSourceMap, aSourceMapURL) {\n var sourceMap = aSourceMap;\n if (typeof aSourceMap === 'string') {\n sourceMap = util.parseSourceMapInput(aSourceMap);\n }\n\n return sourceMap.sections != null\n ? new IndexedSourceMapConsumer(sourceMap, aSourceMapURL)\n : new BasicSourceMapConsumer(sourceMap, aSourceMapURL);\n}\n\nSourceMapConsumer.fromSourceMap = function(aSourceMap, aSourceMapURL) {\n return BasicSourceMapConsumer.fromSourceMap(aSourceMap, aSourceMapURL);\n}\n\n/**\n * The version of the source mapping spec that we are consuming.\n */\nSourceMapConsumer.prototype._version = 3;\n\n// `__generatedMappings` and `__originalMappings` are arrays that hold the\n// parsed mapping coordinates from the source map's \"mappings\" attribute. They\n// are lazily instantiated, accessed via the `_generatedMappings` and\n// `_originalMappings` getters respectively, and we only parse the mappings\n// and create these arrays once queried for a source location. We jump through\n// these hoops because there can be many thousands of mappings, and parsing\n// them is expensive, so we only want to do it if we must.\n//\n// Each object in the arrays is of the form:\n//\n// {\n// generatedLine: The line number in the generated code,\n// generatedColumn: The column number in the generated code,\n// source: The path to the original source file that generated this\n// chunk of code,\n// originalLine: The line number in the original source that\n// corresponds to this chunk of generated code,\n// originalColumn: The column number in the original source that\n// corresponds to this chunk of generated code,\n// name: The name of the original symbol which generated this chunk of\n// code.\n// }\n//\n// All properties except for `generatedLine` and `generatedColumn` can be\n// `null`.\n//\n// `_generatedMappings` is ordered by the generated positions.\n//\n// `_originalMappings` is ordered by the original positions.\n\nSourceMapConsumer.prototype.__generatedMappings = null;\nObject.defineProperty(SourceMapConsumer.prototype, '_generatedMappings', {\n configurable: true,\n enumerable: true,\n get: function () {\n if (!this.__generatedMappings) {\n this._parseMappings(this._mappings, this.sourceRoot);\n }\n\n return this.__generatedMappings;\n }\n});\n\nSourceMapConsumer.prototype.__originalMappings = null;\nObject.defineProperty(SourceMapConsumer.prototype, '_originalMappings', {\n configurable: true,\n enumerable: true,\n get: function () {\n if (!this.__originalMappings) {\n this._parseMappings(this._mappings, this.sourceRoot);\n }\n\n return this.__originalMappings;\n }\n});\n\nSourceMapConsumer.prototype._charIsMappingSeparator =\n function SourceMapConsumer_charIsMappingSeparator(aStr, index) {\n var c = aStr.charAt(index);\n return c === \";\" || c === \",\";\n };\n\n/**\n * Parse the mappings in a string in to a data structure which we can easily\n * query (the ordered arrays in the `this.__generatedMappings` and\n * `this.__originalMappings` properties).\n */\nSourceMapConsumer.prototype._parseMappings =\n function SourceMapConsumer_parseMappings(aStr, aSourceRoot) {\n throw new Error(\"Subclasses must implement _parseMappings\");\n };\n\nSourceMapConsumer.GENERATED_ORDER = 1;\nSourceMapConsumer.ORIGINAL_ORDER = 2;\n\nSourceMapConsumer.GREATEST_LOWER_BOUND = 1;\nSourceMapConsumer.LEAST_UPPER_BOUND = 2;\n\n/**\n * Iterate over each mapping between an original source/line/column and a\n * generated line/column in this source map.\n *\n * @param Function aCallback\n * The function that is called with each mapping.\n * @param Object aContext\n * Optional. If specified, this object will be the value of `this` every\n * time that `aCallback` is called.\n * @param aOrder\n * Either `SourceMapConsumer.GENERATED_ORDER` or\n * `SourceMapConsumer.ORIGINAL_ORDER`. Specifies whether you want to\n * iterate over the mappings sorted by the generated file's line/column\n * order or the original's source/line/column order, respectively. Defaults to\n * `SourceMapConsumer.GENERATED_ORDER`.\n */\nSourceMapConsumer.prototype.eachMapping =\n function SourceMapConsumer_eachMapping(aCallback, aContext, aOrder) {\n var context = aContext || null;\n var order = aOrder || SourceMapConsumer.GENERATED_ORDER;\n\n var mappings;\n switch (order) {\n case SourceMapConsumer.GENERATED_ORDER:\n mappings = this._generatedMappings;\n break;\n case SourceMapConsumer.ORIGINAL_ORDER:\n mappings = this._originalMappings;\n break;\n default:\n throw new Error(\"Unknown order of iteration.\");\n }\n\n var sourceRoot = this.sourceRoot;\n mappings.map(function (mapping) {\n var source = mapping.source === null ? null : this._sources.at(mapping.source);\n source = util.computeSourceURL(sourceRoot, source, this._sourceMapURL);\n return {\n source: source,\n generatedLine: mapping.generatedLine,\n generatedColumn: mapping.generatedColumn,\n originalLine: mapping.originalLine,\n originalColumn: mapping.originalColumn,\n name: mapping.name === null ? null : this._names.at(mapping.name)\n };\n }, this).forEach(aCallback, context);\n };\n\n/**\n * Returns all generated line and column information for the original source,\n * line, and column provided. If no column is provided, returns all mappings\n * corresponding to a either the line we are searching for or the next\n * closest line that has any mappings. Otherwise, returns all mappings\n * corresponding to the given line and either the column we are searching for\n * or the next closest column that has any offsets.\n *\n * The only argument is an object with the following properties:\n *\n * - source: The filename of the original source.\n * - line: The line number in the original source. The line number is 1-based.\n * - column: Optional. the column number in the original source.\n * The column number is 0-based.\n *\n * and an array of objects is returned, each with the following properties:\n *\n * - line: The line number in the generated source, or null. The\n * line number is 1-based.\n * - column: The column number in the generated source, or null.\n * The column number is 0-based.\n */\nSourceMapConsumer.prototype.allGeneratedPositionsFor =\n function SourceMapConsumer_allGeneratedPositionsFor(aArgs) {\n var line = util.getArg(aArgs, 'line');\n\n // When there is no exact match, BasicSourceMapConsumer.prototype._findMapping\n // returns the index of the closest mapping less than the needle. By\n // setting needle.originalColumn to 0, we thus find the last mapping for\n // the given line, provided such a mapping exists.\n var needle = {\n source: util.getArg(aArgs, 'source'),\n originalLine: line,\n originalColumn: util.getArg(aArgs, 'column', 0)\n };\n\n needle.source = this._findSourceIndex(needle.source);\n if (needle.source < 0) {\n return [];\n }\n\n var mappings = [];\n\n var index = this._findMapping(needle,\n this._originalMappings,\n \"originalLine\",\n \"originalColumn\",\n util.compareByOriginalPositions,\n binarySearch.LEAST_UPPER_BOUND);\n if (index >= 0) {\n var mapping = this._originalMappings[index];\n\n if (aArgs.column === undefined) {\n var originalLine = mapping.originalLine;\n\n // Iterate until either we run out of mappings, or we run into\n // a mapping for a different line than the one we found. Since\n // mappings are sorted, this is guaranteed to find all mappings for\n // the line we found.\n while (mapping && mapping.originalLine === originalLine) {\n mappings.push({\n line: util.getArg(mapping, 'generatedLine', null),\n column: util.getArg(mapping, 'generatedColumn', null),\n lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)\n });\n\n mapping = this._originalMappings[++index];\n }\n } else {\n var originalColumn = mapping.originalColumn;\n\n // Iterate until either we run out of mappings, or we run into\n // a mapping for a different line than the one we were searching for.\n // Since mappings are sorted, this is guaranteed to find all mappings for\n // the line we are searching for.\n while (mapping &&\n mapping.originalLine === line &&\n mapping.originalColumn == originalColumn) {\n mappings.push({\n line: util.getArg(mapping, 'generatedLine', null),\n column: util.getArg(mapping, 'generatedColumn', null),\n lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)\n });\n\n mapping = this._originalMappings[++index];\n }\n }\n }\n\n return mappings;\n };\n\nexports.SourceMapConsumer = SourceMapConsumer;\n\n/**\n * A BasicSourceMapConsumer instance represents a parsed source map which we can\n * query for information about the original file positions by giving it a file\n * position in the generated source.\n *\n * The first parameter is the raw source map (either as a JSON string, or\n * already parsed to an object). According to the spec, source maps have the\n * following attributes:\n *\n * - version: Which version of the source map spec this map is following.\n * - sources: An array of URLs to the original source files.\n * - names: An array of identifiers which can be referrenced by individual mappings.\n * - sourceRoot: Optional. The URL root from which all sources are relative.\n * - sourcesContent: Optional. An array of contents of the original source files.\n * - mappings: A string of base64 VLQs which contain the actual mappings.\n * - file: Optional. The generated file this source map is associated with.\n *\n * Here is an example source map, taken from the source map spec[0]:\n *\n * {\n * version : 3,\n * file: \"out.js\",\n * sourceRoot : \"\",\n * sources: [\"foo.js\", \"bar.js\"],\n * names: [\"src\", \"maps\", \"are\", \"fun\"],\n * mappings: \"AA,AB;;ABCDE;\"\n * }\n *\n * The second parameter, if given, is a string whose value is the URL\n * at which the source map was found. This URL is used to compute the\n * sources array.\n *\n * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit?pli=1#\n */\nfunction BasicSourceMapConsumer(aSourceMap, aSourceMapURL) {\n var sourceMap = aSourceMap;\n if (typeof aSourceMap === 'string') {\n sourceMap = util.parseSourceMapInput(aSourceMap);\n }\n\n var version = util.getArg(sourceMap, 'version');\n var sources = util.getArg(sourceMap, 'sources');\n // Sass 3.3 leaves out the 'names' array, so we deviate from the spec (which\n // requires the array) to play nice here.\n var names = util.getArg(sourceMap, 'names', []);\n var sourceRoot = util.getArg(sourceMap, 'sourceRoot', null);\n var sourcesContent = util.getArg(sourceMap, 'sourcesContent', null);\n var mappings = util.getArg(sourceMap, 'mappings');\n var file = util.getArg(sourceMap, 'file', null);\n\n // Once again, Sass deviates from the spec and supplies the version as a\n // string rather than a number, so we use loose equality checking here.\n if (version != this._version) {\n throw new Error('Unsupported version: ' + version);\n }\n\n if (sourceRoot) {\n sourceRoot = util.normalize(sourceRoot);\n }\n\n sources = sources\n .map(String)\n // Some source maps produce relative source paths like \"./foo.js\" instead of\n // \"foo.js\". Normalize these first so that future comparisons will succeed.\n // See bugzil.la/1090768.\n .map(util.normalize)\n // Always ensure that absolute sources are internally stored relative to\n // the source root, if the source root is absolute. Not doing this would\n // be particularly problematic when the source root is a prefix of the\n // source (valid, but why??). See github issue #199 and bugzil.la/1188982.\n .map(function (source) {\n return sourceRoot && util.isAbsolute(sourceRoot) && util.isAbsolute(source)\n ? util.relative(sourceRoot, source)\n : source;\n });\n\n // Pass `true` below to allow duplicate names and sources. While source maps\n // are intended to be compressed and deduplicated, the TypeScript compiler\n // sometimes generates source maps with duplicates in them. See Github issue\n // #72 and bugzil.la/889492.\n this._names = ArraySet.fromArray(names.map(String), true);\n this._sources = ArraySet.fromArray(sources, true);\n\n this._absoluteSources = this._sources.toArray().map(function (s) {\n return util.computeSourceURL(sourceRoot, s, aSourceMapURL);\n });\n\n this.sourceRoot = sourceRoot;\n this.sourcesContent = sourcesContent;\n this._mappings = mappings;\n this._sourceMapURL = aSourceMapURL;\n this.file = file;\n}\n\nBasicSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype);\nBasicSourceMapConsumer.prototype.consumer = SourceMapConsumer;\n\n/**\n * Utility function to find the index of a source. Returns -1 if not\n * found.\n */\nBasicSourceMapConsumer.prototype._findSourceIndex = function(aSource) {\n var relativeSource = aSource;\n if (this.sourceRoot != null) {\n relativeSource = util.relative(this.sourceRoot, relativeSource);\n }\n\n if (this._sources.has(relativeSource)) {\n return this._sources.indexOf(relativeSource);\n }\n\n // Maybe aSource is an absolute URL as returned by |sources|. In\n // this case we can't simply undo the transform.\n var i;\n for (i = 0; i < this._absoluteSources.length; ++i) {\n if (this._absoluteSources[i] == aSource) {\n return i;\n }\n }\n\n return -1;\n};\n\n/**\n * Create a BasicSourceMapConsumer from a SourceMapGenerator.\n *\n * @param SourceMapGenerator aSourceMap\n * The source map that will be consumed.\n * @param String aSourceMapURL\n * The URL at which the source map can be found (optional)\n * @returns BasicSourceMapConsumer\n */\nBasicSourceMapConsumer.fromSourceMap =\n function SourceMapConsumer_fromSourceMap(aSourceMap, aSourceMapURL) {\n var smc = Object.create(BasicSourceMapConsumer.prototype);\n\n var names = smc._names = ArraySet.fromArray(aSourceMap._names.toArray(), true);\n var sources = smc._sources = ArraySet.fromArray(aSourceMap._sources.toArray(), true);\n smc.sourceRoot = aSourceMap._sourceRoot;\n smc.sourcesContent = aSourceMap._generateSourcesContent(smc._sources.toArray(),\n smc.sourceRoot);\n smc.file = aSourceMap._file;\n smc._sourceMapURL = aSourceMapURL;\n smc._absoluteSources = smc._sources.toArray().map(function (s) {\n return util.computeSourceURL(smc.sourceRoot, s, aSourceMapURL);\n });\n\n // Because we are modifying the entries (by converting string sources and\n // names to indices into the sources and names ArraySets), we have to make\n // a copy of the entry or else bad things happen. Shared mutable state\n // strikes again! See github issue #191.\n\n var generatedMappings = aSourceMap._mappings.toArray().slice();\n var destGeneratedMappings = smc.__generatedMappings = [];\n var destOriginalMappings = smc.__originalMappings = [];\n\n for (var i = 0, length = generatedMappings.length; i < length; i++) {\n var srcMapping = generatedMappings[i];\n var destMapping = new Mapping;\n destMapping.generatedLine = srcMapping.generatedLine;\n destMapping.generatedColumn = srcMapping.generatedColumn;\n\n if (srcMapping.source) {\n destMapping.source = sources.indexOf(srcMapping.source);\n destMapping.originalLine = srcMapping.originalLine;\n destMapping.originalColumn = srcMapping.originalColumn;\n\n if (srcMapping.name) {\n destMapping.name = names.indexOf(srcMapping.name);\n }\n\n destOriginalMappings.push(destMapping);\n }\n\n destGeneratedMappings.push(destMapping);\n }\n\n quickSort(smc.__originalMappings, util.compareByOriginalPositions);\n\n return smc;\n };\n\n/**\n * The version of the source mapping spec that we are consuming.\n */\nBasicSourceMapConsumer.prototype._version = 3;\n\n/**\n * The list of original sources.\n */\nObject.defineProperty(BasicSourceMapConsumer.prototype, 'sources', {\n get: function () {\n return this._absoluteSources.slice();\n }\n});\n\n/**\n * Provide the JIT with a nice shape / hidden class.\n */\nfunction Mapping() {\n this.generatedLine = 0;\n this.generatedColumn = 0;\n this.source = null;\n this.originalLine = null;\n this.originalColumn = null;\n this.name = null;\n}\n\n/**\n * Parse the mappings in a string in to a data structure which we can easily\n * query (the ordered arrays in the `this.__generatedMappings` and\n * `this.__originalMappings` properties).\n */\nBasicSourceMapConsumer.prototype._parseMappings =\n function SourceMapConsumer_parseMappings(aStr, aSourceRoot) {\n var generatedLine = 1;\n var previousGeneratedColumn = 0;\n var previousOriginalLine = 0;\n var previousOriginalColumn = 0;\n var previousSource = 0;\n var previousName = 0;\n var length = aStr.length;\n var index = 0;\n var cachedSegments = {};\n var temp = {};\n var originalMappings = [];\n var generatedMappings = [];\n var mapping, str, segment, end, value;\n\n while (index < length) {\n if (aStr.charAt(index) === ';') {\n generatedLine++;\n index++;\n previousGeneratedColumn = 0;\n }\n else if (aStr.charAt(index) === ',') {\n index++;\n }\n else {\n mapping = new Mapping();\n mapping.generatedLine = generatedLine;\n\n // Because each offset is encoded relative to the previous one,\n // many segments often have the same encoding. We can exploit this\n // fact by caching the parsed variable length fields of each segment,\n // allowing us to avoid a second parse if we encounter the same\n // segment again.\n for (end = index; end < length; end++) {\n if (this._charIsMappingSeparator(aStr, end)) {\n break;\n }\n }\n str = aStr.slice(index, end);\n\n segment = cachedSegments[str];\n if (segment) {\n index += str.length;\n } else {\n segment = [];\n while (index < end) {\n base64VLQ.decode(aStr, index, temp);\n value = temp.value;\n index = temp.rest;\n segment.push(value);\n }\n\n if (segment.length === 2) {\n throw new Error('Found a source, but no line and column');\n }\n\n if (segment.length === 3) {\n throw new Error('Found a source and line, but no column');\n }\n\n cachedSegments[str] = segment;\n }\n\n // Generated column.\n mapping.generatedColumn = previousGeneratedColumn + segment[0];\n previousGeneratedColumn = mapping.generatedColumn;\n\n if (segment.length > 1) {\n // Original source.\n mapping.source = previousSource + segment[1];\n previousSource += segment[1];\n\n // Original line.\n mapping.originalLine = previousOriginalLine + segment[2];\n previousOriginalLine = mapping.originalLine;\n // Lines are stored 0-based\n mapping.originalLine += 1;\n\n // Original column.\n mapping.originalColumn = previousOriginalColumn + segment[3];\n previousOriginalColumn = mapping.originalColumn;\n\n if (segment.length > 4) {\n // Original name.\n mapping.name = previousName + segment[4];\n previousName += segment[4];\n }\n }\n\n generatedMappings.push(mapping);\n if (typeof mapping.originalLine === 'number') {\n originalMappings.push(mapping);\n }\n }\n }\n\n quickSort(generatedMappings, util.compareByGeneratedPositionsDeflated);\n this.__generatedMappings = generatedMappings;\n\n quickSort(originalMappings, util.compareByOriginalPositions);\n this.__originalMappings = originalMappings;\n };\n\n/**\n * Find the mapping that best matches the hypothetical \"needle\" mapping that\n * we are searching for in the given \"haystack\" of mappings.\n */\nBasicSourceMapConsumer.prototype._findMapping =\n function SourceMapConsumer_findMapping(aNeedle, aMappings, aLineName,\n aColumnName, aComparator, aBias) {\n // To return the position we are searching for, we must first find the\n // mapping for the given position and then return the opposite position it\n // points to. Because the mappings are sorted, we can use binary search to\n // find the best mapping.\n\n if (aNeedle[aLineName] <= 0) {\n throw new TypeError('Line must be greater than or equal to 1, got '\n + aNeedle[aLineName]);\n }\n if (aNeedle[aColumnName] < 0) {\n throw new TypeError('Column must be greater than or equal to 0, got '\n + aNeedle[aColumnName]);\n }\n\n return binarySearch.search(aNeedle, aMappings, aComparator, aBias);\n };\n\n/**\n * Compute the last column for each generated mapping. The last column is\n * inclusive.\n */\nBasicSourceMapConsumer.prototype.computeColumnSpans =\n function SourceMapConsumer_computeColumnSpans() {\n for (var index = 0; index < this._generatedMappings.length; ++index) {\n var mapping = this._generatedMappings[index];\n\n // Mappings do not contain a field for the last generated columnt. We\n // can come up with an optimistic estimate, however, by assuming that\n // mappings are contiguous (i.e. given two consecutive mappings, the\n // first mapping ends where the second one starts).\n if (index + 1 < this._generatedMappings.length) {\n var nextMapping = this._generatedMappings[index + 1];\n\n if (mapping.generatedLine === nextMapping.generatedLine) {\n mapping.lastGeneratedColumn = nextMapping.generatedColumn - 1;\n continue;\n }\n }\n\n // The last mapping for each line spans the entire line.\n mapping.lastGeneratedColumn = Infinity;\n }\n };\n\n/**\n * Returns the original source, line, and column information for the generated\n * source's line and column positions provided. The only argument is an object\n * with the following properties:\n *\n * - line: The line number in the generated source. The line number\n * is 1-based.\n * - column: The column number in the generated source. The column\n * number is 0-based.\n * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or\n * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the\n * closest element that is smaller than or greater than the one we are\n * searching for, respectively, if the exact element cannot be found.\n * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'.\n *\n * and an object is returned with the following properties:\n *\n * - source: The original source file, or null.\n * - line: The line number in the original source, or null. The\n * line number is 1-based.\n * - column: The column number in the original source, or null. The\n * column number is 0-based.\n * - name: The original identifier, or null.\n */\nBasicSourceMapConsumer.prototype.originalPositionFor =\n function SourceMapConsumer_originalPositionFor(aArgs) {\n var needle = {\n generatedLine: util.getArg(aArgs, 'line'),\n generatedColumn: util.getArg(aArgs, 'column')\n };\n\n var index = this._findMapping(\n needle,\n this._generatedMappings,\n \"generatedLine\",\n \"generatedColumn\",\n util.compareByGeneratedPositionsDeflated,\n util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND)\n );\n\n if (index >= 0) {\n var mapping = this._generatedMappings[index];\n\n if (mapping.generatedLine === needle.generatedLine) {\n var source = util.getArg(mapping, 'source', null);\n if (source !== null) {\n source = this._sources.at(source);\n source = util.computeSourceURL(this.sourceRoot, source, this._sourceMapURL);\n }\n var name = util.getArg(mapping, 'name', null);\n if (name !== null) {\n name = this._names.at(name);\n }\n return {\n source: source,\n line: util.getArg(mapping, 'originalLine', null),\n column: util.getArg(mapping, 'originalColumn', null),\n name: name\n };\n }\n }\n\n return {\n source: null,\n line: null,\n column: null,\n name: null\n };\n };\n\n/**\n * Return true if we have the source content for every source in the source\n * map, false otherwise.\n */\nBasicSourceMapConsumer.prototype.hasContentsOfAllSources =\n function BasicSourceMapConsumer_hasContentsOfAllSources() {\n if (!this.sourcesContent) {\n return false;\n }\n return this.sourcesContent.length >= this._sources.size() &&\n !this.sourcesContent.some(function (sc) { return sc == null; });\n };\n\n/**\n * Returns the original source content. The only argument is the url of the\n * original source file. Returns null if no original source content is\n * available.\n */\nBasicSourceMapConsumer.prototype.sourceContentFor =\n function SourceMapConsumer_sourceContentFor(aSource, nullOnMissing) {\n if (!this.sourcesContent) {\n return null;\n }\n\n var index = this._findSourceIndex(aSource);\n if (index >= 0) {\n return this.sourcesContent[index];\n }\n\n var relativeSource = aSource;\n if (this.sourceRoot != null) {\n relativeSource = util.relative(this.sourceRoot, relativeSource);\n }\n\n var url;\n if (this.sourceRoot != null\n && (url = util.urlParse(this.sourceRoot))) {\n // XXX: file:// URIs and absolute paths lead to unexpected behavior for\n // many users. We can help them out when they expect file:// URIs to\n // behave like it would if they were running a local HTTP server. See\n // https://bugzilla.mozilla.org/show_bug.cgi?id=885597.\n var fileUriAbsPath = relativeSource.replace(/^file:\\/\\//, \"\");\n if (url.scheme == \"file\"\n && this._sources.has(fileUriAbsPath)) {\n return this.sourcesContent[this._sources.indexOf(fileUriAbsPath)]\n }\n\n if ((!url.path || url.path == \"/\")\n && this._sources.has(\"/\" + relativeSource)) {\n return this.sourcesContent[this._sources.indexOf(\"/\" + relativeSource)];\n }\n }\n\n // This function is used recursively from\n // IndexedSourceMapConsumer.prototype.sourceContentFor. In that case, we\n // don't want to throw if we can't find the source - we just want to\n // return null, so we provide a flag to exit gracefully.\n if (nullOnMissing) {\n return null;\n }\n else {\n throw new Error('\"' + relativeSource + '\" is not in the SourceMap.');\n }\n };\n\n/**\n * Returns the generated line and column information for the original source,\n * line, and column positions provided. The only argument is an object with\n * the following properties:\n *\n * - source: The filename of the original source.\n * - line: The line number in the original source. The line number\n * is 1-based.\n * - column: The column number in the original source. The column\n * number is 0-based.\n * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or\n * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the\n * closest element that is smaller than or greater than the one we are\n * searching for, respectively, if the exact element cannot be found.\n * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'.\n *\n * and an object is returned with the following properties:\n *\n * - line: The line number in the generated source, or null. The\n * line number is 1-based.\n * - column: The column number in the generated source, or null.\n * The column number is 0-based.\n */\nBasicSourceMapConsumer.prototype.generatedPositionFor =\n function SourceMapConsumer_generatedPositionFor(aArgs) {\n var source = util.getArg(aArgs, 'source');\n source = this._findSourceIndex(source);\n if (source < 0) {\n return {\n line: null,\n column: null,\n lastColumn: null\n };\n }\n\n var needle = {\n source: source,\n originalLine: util.getArg(aArgs, 'line'),\n originalColumn: util.getArg(aArgs, 'column')\n };\n\n var index = this._findMapping(\n needle,\n this._originalMappings,\n \"originalLine\",\n \"originalColumn\",\n util.compareByOriginalPositions,\n util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND)\n );\n\n if (index >= 0) {\n var mapping = this._originalMappings[index];\n\n if (mapping.source === needle.source) {\n return {\n line: util.getArg(mapping, 'generatedLine', null),\n column: util.getArg(mapping, 'generatedColumn', null),\n lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)\n };\n }\n }\n\n return {\n line: null,\n column: null,\n lastColumn: null\n };\n };\n\nexports.BasicSourceMapConsumer = BasicSourceMapConsumer;\n\n/**\n * An IndexedSourceMapConsumer instance represents a parsed source map which\n * we can query for information. It differs from BasicSourceMapConsumer in\n * that it takes \"indexed\" source maps (i.e. ones with a \"sections\" field) as\n * input.\n *\n * The first parameter is a raw source map (either as a JSON string, or already\n * parsed to an object). According to the spec for indexed source maps, they\n * have the following attributes:\n *\n * - version: Which version of the source map spec this map is following.\n * - file: Optional. The generated file this source map is associated with.\n * - sections: A list of section definitions.\n *\n * Each value under the \"sections\" field has two fields:\n * - offset: The offset into the original specified at which this section\n * begins to apply, defined as an object with a \"line\" and \"column\"\n * field.\n * - map: A source map definition. This source map could also be indexed,\n * but doesn't have to be.\n *\n * Instead of the \"map\" field, it's also possible to have a \"url\" field\n * specifying a URL to retrieve a source map from, but that's currently\n * unsupported.\n *\n * Here's an example source map, taken from the source map spec[0], but\n * modified to omit a section which uses the \"url\" field.\n *\n * {\n * version : 3,\n * file: \"app.js\",\n * sections: [{\n * offset: {line:100, column:10},\n * map: {\n * version : 3,\n * file: \"section.js\",\n * sources: [\"foo.js\", \"bar.js\"],\n * names: [\"src\", \"maps\", \"are\", \"fun\"],\n * mappings: \"AAAA,E;;ABCDE;\"\n * }\n * }],\n * }\n *\n * The second parameter, if given, is a string whose value is the URL\n * at which the source map was found. This URL is used to compute the\n * sources array.\n *\n * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit#heading=h.535es3xeprgt\n */\nfunction IndexedSourceMapConsumer(aSourceMap, aSourceMapURL) {\n var sourceMap = aSourceMap;\n if (typeof aSourceMap === 'string') {\n sourceMap = util.parseSourceMapInput(aSourceMap);\n }\n\n var version = util.getArg(sourceMap, 'version');\n var sections = util.getArg(sourceMap, 'sections');\n\n if (version != this._version) {\n throw new Error('Unsupported version: ' + version);\n }\n\n this._sources = new ArraySet();\n this._names = new ArraySet();\n\n var lastOffset = {\n line: -1,\n column: 0\n };\n this._sections = sections.map(function (s) {\n if (s.url) {\n // The url field will require support for asynchronicity.\n // See https://github.com/mozilla/source-map/issues/16\n throw new Error('Support for url field in sections not implemented.');\n }\n var offset = util.getArg(s, 'offset');\n var offsetLine = util.getArg(offset, 'line');\n var offsetColumn = util.getArg(offset, 'column');\n\n if (offsetLine < lastOffset.line ||\n (offsetLine === lastOffset.line && offsetColumn < lastOffset.column)) {\n throw new Error('Section offsets must be ordered and non-overlapping.');\n }\n lastOffset = offset;\n\n return {\n generatedOffset: {\n // The offset fields are 0-based, but we use 1-based indices when\n // encoding/decoding from VLQ.\n generatedLine: offsetLine + 1,\n generatedColumn: offsetColumn + 1\n },\n consumer: new SourceMapConsumer(util.getArg(s, 'map'), aSourceMapURL)\n }\n });\n}\n\nIndexedSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype);\nIndexedSourceMapConsumer.prototype.constructor = SourceMapConsumer;\n\n/**\n * The version of the source mapping spec that we are consuming.\n */\nIndexedSourceMapConsumer.prototype._version = 3;\n\n/**\n * The list of original sources.\n */\nObject.defineProperty(IndexedSourceMapConsumer.prototype, 'sources', {\n get: function () {\n var sources = [];\n for (var i = 0; i < this._sections.length; i++) {\n for (var j = 0; j < this._sections[i].consumer.sources.length; j++) {\n sources.push(this._sections[i].consumer.sources[j]);\n }\n }\n return sources;\n }\n});\n\n/**\n * Returns the original source, line, and column information for the generated\n * source's line and column positions provided. The only argument is an object\n * with the following properties:\n *\n * - line: The line number in the generated source. The line number\n * is 1-based.\n * - column: The column number in the generated source. The column\n * number is 0-based.\n *\n * and an object is returned with the following properties:\n *\n * - source: The original source file, or null.\n * - line: The line number in the original source, or null. The\n * line number is 1-based.\n * - column: The column number in the original source, or null. The\n * column number is 0-based.\n * - name: The original identifier, or null.\n */\nIndexedSourceMapConsumer.prototype.originalPositionFor =\n function IndexedSourceMapConsumer_originalPositionFor(aArgs) {\n var needle = {\n generatedLine: util.getArg(aArgs, 'line'),\n generatedColumn: util.getArg(aArgs, 'column')\n };\n\n // Find the section containing the generated position we're trying to map\n // to an original position.\n var sectionIndex = binarySearch.search(needle, this._sections,\n function(needle, section) {\n var cmp = needle.generatedLine - section.generatedOffset.generatedLine;\n if (cmp) {\n return cmp;\n }\n\n return (needle.generatedColumn -\n section.generatedOffset.generatedColumn);\n });\n var section = this._sections[sectionIndex];\n\n if (!section) {\n return {\n source: null,\n line: null,\n column: null,\n name: null\n };\n }\n\n return section.consumer.originalPositionFor({\n line: needle.generatedLine -\n (section.generatedOffset.generatedLine - 1),\n column: needle.generatedColumn -\n (section.generatedOffset.generatedLine === needle.generatedLine\n ? section.generatedOffset.generatedColumn - 1\n : 0),\n bias: aArgs.bias\n });\n };\n\n/**\n * Return true if we have the source content for every source in the source\n * map, false otherwise.\n */\nIndexedSourceMapConsumer.prototype.hasContentsOfAllSources =\n function IndexedSourceMapConsumer_hasContentsOfAllSources() {\n return this._sections.every(function (s) {\n return s.consumer.hasContentsOfAllSources();\n });\n };\n\n/**\n * Returns the original source content. The only argument is the url of the\n * original source file. Returns null if no original source content is\n * available.\n */\nIndexedSourceMapConsumer.prototype.sourceContentFor =\n function IndexedSourceMapConsumer_sourceContentFor(aSource, nullOnMissing) {\n for (var i = 0; i < this._sections.length; i++) {\n var section = this._sections[i];\n\n var content = section.consumer.sourceContentFor(aSource, true);\n if (content) {\n return content;\n }\n }\n if (nullOnMissing) {\n return null;\n }\n else {\n throw new Error('\"' + aSource + '\" is not in the SourceMap.');\n }\n };\n\n/**\n * Returns the generated line and column information for the original source,\n * line, and column positions provided. The only argument is an object with\n * the following properties:\n *\n * - source: The filename of the original source.\n * - line: The line number in the original source. The line number\n * is 1-based.\n * - column: The column number in the original source. The column\n * number is 0-based.\n *\n * and an object is returned with the following properties:\n *\n * - line: The line number in the generated source, or null. The\n * line number is 1-based. \n * - column: The column number in the generated source, or null.\n * The column number is 0-based.\n */\nIndexedSourceMapConsumer.prototype.generatedPositionFor =\n function IndexedSourceMapConsumer_generatedPositionFor(aArgs) {\n for (var i = 0; i < this._sections.length; i++) {\n var section = this._sections[i];\n\n // Only consider this section if the requested source is in the list of\n // sources of the consumer.\n if (section.consumer._findSourceIndex(util.getArg(aArgs, 'source')) === -1) {\n continue;\n }\n var generatedPosition = section.consumer.generatedPositionFor(aArgs);\n if (generatedPosition) {\n var ret = {\n line: generatedPosition.line +\n (section.generatedOffset.generatedLine - 1),\n column: generatedPosition.column +\n (section.generatedOffset.generatedLine === generatedPosition.line\n ? section.generatedOffset.generatedColumn - 1\n : 0)\n };\n return ret;\n }\n }\n\n return {\n line: null,\n column: null\n };\n };\n\n/**\n * Parse the mappings in a string in to a data structure which we can easily\n * query (the ordered arrays in the `this.__generatedMappings` and\n * `this.__originalMappings` properties).\n */\nIndexedSourceMapConsumer.prototype._parseMappings =\n function IndexedSourceMapConsumer_parseMappings(aStr, aSourceRoot) {\n this.__generatedMappings = [];\n this.__originalMappings = [];\n for (var i = 0; i < this._sections.length; i++) {\n var section = this._sections[i];\n var sectionMappings = section.consumer._generatedMappings;\n for (var j = 0; j < sectionMappings.length; j++) {\n var mapping = sectionMappings[j];\n\n var source = section.consumer._sources.at(mapping.source);\n source = util.computeSourceURL(section.consumer.sourceRoot, source, this._sourceMapURL);\n this._sources.add(source);\n source = this._sources.indexOf(source);\n\n var name = null;\n if (mapping.name) {\n name = section.consumer._names.at(mapping.name);\n this._names.add(name);\n name = this._names.indexOf(name);\n }\n\n // The mappings coming from the consumer for the section have\n // generated positions relative to the start of the section, so we\n // need to offset them to be relative to the start of the concatenated\n // generated file.\n var adjustedMapping = {\n source: source,\n generatedLine: mapping.generatedLine +\n (section.generatedOffset.generatedLine - 1),\n generatedColumn: mapping.generatedColumn +\n (section.generatedOffset.generatedLine === mapping.generatedLine\n ? section.generatedOffset.generatedColumn - 1\n : 0),\n originalLine: mapping.originalLine,\n originalColumn: mapping.originalColumn,\n name: name\n };\n\n this.__generatedMappings.push(adjustedMapping);\n if (typeof adjustedMapping.originalLine === 'number') {\n this.__originalMappings.push(adjustedMapping);\n }\n }\n }\n\n quickSort(this.__generatedMappings, util.compareByGeneratedPositionsDeflated);\n quickSort(this.__originalMappings, util.compareByOriginalPositions);\n };\n\nexports.IndexedSourceMapConsumer = IndexedSourceMapConsumer;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./lib/source-map-consumer.js\n// module id = 7\n// module chunks = 0","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nexports.GREATEST_LOWER_BOUND = 1;\nexports.LEAST_UPPER_BOUND = 2;\n\n/**\n * Recursive implementation of binary search.\n *\n * @param aLow Indices here and lower do not contain the needle.\n * @param aHigh Indices here and higher do not contain the needle.\n * @param aNeedle The element being searched for.\n * @param aHaystack The non-empty array being searched.\n * @param aCompare Function which takes two elements and returns -1, 0, or 1.\n * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or\n * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the\n * closest element that is smaller than or greater than the one we are\n * searching for, respectively, if the exact element cannot be found.\n */\nfunction recursiveSearch(aLow, aHigh, aNeedle, aHaystack, aCompare, aBias) {\n // This function terminates when one of the following is true:\n //\n // 1. We find the exact element we are looking for.\n //\n // 2. We did not find the exact element, but we can return the index of\n // the next-closest element.\n //\n // 3. We did not find the exact element, and there is no next-closest\n // element than the one we are searching for, so we return -1.\n var mid = Math.floor((aHigh - aLow) / 2) + aLow;\n var cmp = aCompare(aNeedle, aHaystack[mid], true);\n if (cmp === 0) {\n // Found the element we are looking for.\n return mid;\n }\n else if (cmp > 0) {\n // Our needle is greater than aHaystack[mid].\n if (aHigh - mid > 1) {\n // The element is in the upper half.\n return recursiveSearch(mid, aHigh, aNeedle, aHaystack, aCompare, aBias);\n }\n\n // The exact needle element was not found in this haystack. Determine if\n // we are in termination case (3) or (2) and return the appropriate thing.\n if (aBias == exports.LEAST_UPPER_BOUND) {\n return aHigh < aHaystack.length ? aHigh : -1;\n } else {\n return mid;\n }\n }\n else {\n // Our needle is less than aHaystack[mid].\n if (mid - aLow > 1) {\n // The element is in the lower half.\n return recursiveSearch(aLow, mid, aNeedle, aHaystack, aCompare, aBias);\n }\n\n // we are in termination case (3) or (2) and return the appropriate thing.\n if (aBias == exports.LEAST_UPPER_BOUND) {\n return mid;\n } else {\n return aLow < 0 ? -1 : aLow;\n }\n }\n}\n\n/**\n * This is an implementation of binary search which will always try and return\n * the index of the closest element if there is no exact hit. This is because\n * mappings between original and generated line/col pairs are single points,\n * and there is an implicit region between each of them, so a miss just means\n * that you aren't on the very start of a region.\n *\n * @param aNeedle The element you are looking for.\n * @param aHaystack The array that is being searched.\n * @param aCompare A function which takes the needle and an element in the\n * array and returns -1, 0, or 1 depending on whether the needle is less\n * than, equal to, or greater than the element, respectively.\n * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or\n * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the\n * closest element that is smaller than or greater than the one we are\n * searching for, respectively, if the exact element cannot be found.\n * Defaults to 'binarySearch.GREATEST_LOWER_BOUND'.\n */\nexports.search = function search(aNeedle, aHaystack, aCompare, aBias) {\n if (aHaystack.length === 0) {\n return -1;\n }\n\n var index = recursiveSearch(-1, aHaystack.length, aNeedle, aHaystack,\n aCompare, aBias || exports.GREATEST_LOWER_BOUND);\n if (index < 0) {\n return -1;\n }\n\n // We have found either the exact element, or the next-closest element than\n // the one we are searching for. However, there may be more than one such\n // element. Make sure we always return the smallest of these.\n while (index - 1 >= 0) {\n if (aCompare(aHaystack[index], aHaystack[index - 1], true) !== 0) {\n break;\n }\n --index;\n }\n\n return index;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./lib/binary-search.js\n// module id = 8\n// module chunks = 0","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\n// It turns out that some (most?) JavaScript engines don't self-host\n// `Array.prototype.sort`. This makes sense because C++ will likely remain\n// faster than JS when doing raw CPU-intensive sorting. However, when using a\n// custom comparator function, calling back and forth between the VM's C++ and\n// JIT'd JS is rather slow *and* loses JIT type information, resulting in\n// worse generated code for the comparator function than would be optimal. In\n// fact, when sorting with a comparator, these costs outweigh the benefits of\n// sorting in C++. By using our own JS-implemented Quick Sort (below), we get\n// a ~3500ms mean speed-up in `bench/bench.html`.\n\n/**\n * Swap the elements indexed by `x` and `y` in the array `ary`.\n *\n * @param {Array} ary\n * The array.\n * @param {Number} x\n * The index of the first item.\n * @param {Number} y\n * The index of the second item.\n */\nfunction swap(ary, x, y) {\n var temp = ary[x];\n ary[x] = ary[y];\n ary[y] = temp;\n}\n\n/**\n * Returns a random integer within the range `low .. high` inclusive.\n *\n * @param {Number} low\n * The lower bound on the range.\n * @param {Number} high\n * The upper bound on the range.\n */\nfunction randomIntInRange(low, high) {\n return Math.round(low + (Math.random() * (high - low)));\n}\n\n/**\n * The Quick Sort algorithm.\n *\n * @param {Array} ary\n * An array to sort.\n * @param {function} comparator\n * Function to use to compare two items.\n * @param {Number} p\n * Start index of the array\n * @param {Number} r\n * End index of the array\n */\nfunction doQuickSort(ary, comparator, p, r) {\n // If our lower bound is less than our upper bound, we (1) partition the\n // array into two pieces and (2) recurse on each half. If it is not, this is\n // the empty array and our base case.\n\n if (p < r) {\n // (1) Partitioning.\n //\n // The partitioning chooses a pivot between `p` and `r` and moves all\n // elements that are less than or equal to the pivot to the before it, and\n // all the elements that are greater than it after it. The effect is that\n // once partition is done, the pivot is in the exact place it will be when\n // the array is put in sorted order, and it will not need to be moved\n // again. This runs in O(n) time.\n\n // Always choose a random pivot so that an input array which is reverse\n // sorted does not cause O(n^2) running time.\n var pivotIndex = randomIntInRange(p, r);\n var i = p - 1;\n\n swap(ary, pivotIndex, r);\n var pivot = ary[r];\n\n // Immediately after `j` is incremented in this loop, the following hold\n // true:\n //\n // * Every element in `ary[p .. i]` is less than or equal to the pivot.\n //\n // * Every element in `ary[i+1 .. j-1]` is greater than the pivot.\n for (var j = p; j < r; j++) {\n if (comparator(ary[j], pivot) <= 0) {\n i += 1;\n swap(ary, i, j);\n }\n }\n\n swap(ary, i + 1, j);\n var q = i + 1;\n\n // (2) Recurse on each half.\n\n doQuickSort(ary, comparator, p, q - 1);\n doQuickSort(ary, comparator, q + 1, r);\n }\n}\n\n/**\n * Sort the given array in-place with the given comparator function.\n *\n * @param {Array} ary\n * An array to sort.\n * @param {function} comparator\n * Function to use to compare two items.\n */\nexports.quickSort = function (ary, comparator) {\n doQuickSort(ary, comparator, 0, ary.length - 1);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./lib/quick-sort.js\n// module id = 9\n// module chunks = 0","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar SourceMapGenerator = require('./source-map-generator').SourceMapGenerator;\nvar util = require('./util');\n\n// Matches a Windows-style `\\r\\n` newline or a `\\n` newline used by all other\n// operating systems these days (capturing the result).\nvar REGEX_NEWLINE = /(\\r?\\n)/;\n\n// Newline character code for charCodeAt() comparisons\nvar NEWLINE_CODE = 10;\n\n// Private symbol for identifying `SourceNode`s when multiple versions of\n// the source-map library are loaded. This MUST NOT CHANGE across\n// versions!\nvar isSourceNode = \"$$$isSourceNode$$$\";\n\n/**\n * SourceNodes provide a way to abstract over interpolating/concatenating\n * snippets of generated JavaScript source code while maintaining the line and\n * column information associated with the original source code.\n *\n * @param aLine The original line number.\n * @param aColumn The original column number.\n * @param aSource The original source's filename.\n * @param aChunks Optional. An array of strings which are snippets of\n * generated JS, or other SourceNodes.\n * @param aName The original identifier.\n */\nfunction SourceNode(aLine, aColumn, aSource, aChunks, aName) {\n this.children = [];\n this.sourceContents = {};\n this.line = aLine == null ? null : aLine;\n this.column = aColumn == null ? null : aColumn;\n this.source = aSource == null ? null : aSource;\n this.name = aName == null ? null : aName;\n this[isSourceNode] = true;\n if (aChunks != null) this.add(aChunks);\n}\n\n/**\n * Creates a SourceNode from generated code and a SourceMapConsumer.\n *\n * @param aGeneratedCode The generated code\n * @param aSourceMapConsumer The SourceMap for the generated code\n * @param aRelativePath Optional. The path that relative sources in the\n * SourceMapConsumer should be relative to.\n */\nSourceNode.fromStringWithSourceMap =\n function SourceNode_fromStringWithSourceMap(aGeneratedCode, aSourceMapConsumer, aRelativePath) {\n // The SourceNode we want to fill with the generated code\n // and the SourceMap\n var node = new SourceNode();\n\n // All even indices of this array are one line of the generated code,\n // while all odd indices are the newlines between two adjacent lines\n // (since `REGEX_NEWLINE` captures its match).\n // Processed fragments are accessed by calling `shiftNextLine`.\n var remainingLines = aGeneratedCode.split(REGEX_NEWLINE);\n var remainingLinesIndex = 0;\n var shiftNextLine = function() {\n var lineContents = getNextLine();\n // The last line of a file might not have a newline.\n var newLine = getNextLine() || \"\";\n return lineContents + newLine;\n\n function getNextLine() {\n return remainingLinesIndex < remainingLines.length ?\n remainingLines[remainingLinesIndex++] : undefined;\n }\n };\n\n // We need to remember the position of \"remainingLines\"\n var lastGeneratedLine = 1, lastGeneratedColumn = 0;\n\n // The generate SourceNodes we need a code range.\n // To extract it current and last mapping is used.\n // Here we store the last mapping.\n var lastMapping = null;\n\n aSourceMapConsumer.eachMapping(function (mapping) {\n if (lastMapping !== null) {\n // We add the code from \"lastMapping\" to \"mapping\":\n // First check if there is a new line in between.\n if (lastGeneratedLine < mapping.generatedLine) {\n // Associate first line with \"lastMapping\"\n addMappingWithCode(lastMapping, shiftNextLine());\n lastGeneratedLine++;\n lastGeneratedColumn = 0;\n // The remaining code is added without mapping\n } else {\n // There is no new line in between.\n // Associate the code between \"lastGeneratedColumn\" and\n // \"mapping.generatedColumn\" with \"lastMapping\"\n var nextLine = remainingLines[remainingLinesIndex] || '';\n var code = nextLine.substr(0, mapping.generatedColumn -\n lastGeneratedColumn);\n remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn -\n lastGeneratedColumn);\n lastGeneratedColumn = mapping.generatedColumn;\n addMappingWithCode(lastMapping, code);\n // No more remaining code, continue\n lastMapping = mapping;\n return;\n }\n }\n // We add the generated code until the first mapping\n // to the SourceNode without any mapping.\n // Each line is added as separate string.\n while (lastGeneratedLine < mapping.generatedLine) {\n node.add(shiftNextLine());\n lastGeneratedLine++;\n }\n if (lastGeneratedColumn < mapping.generatedColumn) {\n var nextLine = remainingLines[remainingLinesIndex] || '';\n node.add(nextLine.substr(0, mapping.generatedColumn));\n remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn);\n lastGeneratedColumn = mapping.generatedColumn;\n }\n lastMapping = mapping;\n }, this);\n // We have processed all mappings.\n if (remainingLinesIndex < remainingLines.length) {\n if (lastMapping) {\n // Associate the remaining code in the current line with \"lastMapping\"\n addMappingWithCode(lastMapping, shiftNextLine());\n }\n // and add the remaining lines without any mapping\n node.add(remainingLines.splice(remainingLinesIndex).join(\"\"));\n }\n\n // Copy sourcesContent into SourceNode\n aSourceMapConsumer.sources.forEach(function (sourceFile) {\n var content = aSourceMapConsumer.sourceContentFor(sourceFile);\n if (content != null) {\n if (aRelativePath != null) {\n sourceFile = util.join(aRelativePath, sourceFile);\n }\n node.setSourceContent(sourceFile, content);\n }\n });\n\n return node;\n\n function addMappingWithCode(mapping, code) {\n if (mapping === null || mapping.source === undefined) {\n node.add(code);\n } else {\n var source = aRelativePath\n ? util.join(aRelativePath, mapping.source)\n : mapping.source;\n node.add(new SourceNode(mapping.originalLine,\n mapping.originalColumn,\n source,\n code,\n mapping.name));\n }\n }\n };\n\n/**\n * Add a chunk of generated JS to this source node.\n *\n * @param aChunk A string snippet of generated JS code, another instance of\n * SourceNode, or an array where each member is one of those things.\n */\nSourceNode.prototype.add = function SourceNode_add(aChunk) {\n if (Array.isArray(aChunk)) {\n aChunk.forEach(function (chunk) {\n this.add(chunk);\n }, this);\n }\n else if (aChunk[isSourceNode] || typeof aChunk === \"string\") {\n if (aChunk) {\n this.children.push(aChunk);\n }\n }\n else {\n throw new TypeError(\n \"Expected a SourceNode, string, or an array of SourceNodes and strings. Got \" + aChunk\n );\n }\n return this;\n};\n\n/**\n * Add a chunk of generated JS to the beginning of this source node.\n *\n * @param aChunk A string snippet of generated JS code, another instance of\n * SourceNode, or an array where each member is one of those things.\n */\nSourceNode.prototype.prepend = function SourceNode_prepend(aChunk) {\n if (Array.isArray(aChunk)) {\n for (var i = aChunk.length-1; i >= 0; i--) {\n this.prepend(aChunk[i]);\n }\n }\n else if (aChunk[isSourceNode] || typeof aChunk === \"string\") {\n this.children.unshift(aChunk);\n }\n else {\n throw new TypeError(\n \"Expected a SourceNode, string, or an array of SourceNodes and strings. Got \" + aChunk\n );\n }\n return this;\n};\n\n/**\n * Walk over the tree of JS snippets in this node and its children. The\n * walking function is called once for each snippet of JS and is passed that\n * snippet and the its original associated source's line/column location.\n *\n * @param aFn The traversal function.\n */\nSourceNode.prototype.walk = function SourceNode_walk(aFn) {\n var chunk;\n for (var i = 0, len = this.children.length; i < len; i++) {\n chunk = this.children[i];\n if (chunk[isSourceNode]) {\n chunk.walk(aFn);\n }\n else {\n if (chunk !== '') {\n aFn(chunk, { source: this.source,\n line: this.line,\n column: this.column,\n name: this.name });\n }\n }\n }\n};\n\n/**\n * Like `String.prototype.join` except for SourceNodes. Inserts `aStr` between\n * each of `this.children`.\n *\n * @param aSep The separator.\n */\nSourceNode.prototype.join = function SourceNode_join(aSep) {\n var newChildren;\n var i;\n var len = this.children.length;\n if (len > 0) {\n newChildren = [];\n for (i = 0; i < len-1; i++) {\n newChildren.push(this.children[i]);\n newChildren.push(aSep);\n }\n newChildren.push(this.children[i]);\n this.children = newChildren;\n }\n return this;\n};\n\n/**\n * Call String.prototype.replace on the very right-most source snippet. Useful\n * for trimming whitespace from the end of a source node, etc.\n *\n * @param aPattern The pattern to replace.\n * @param aReplacement The thing to replace the pattern with.\n */\nSourceNode.prototype.replaceRight = function SourceNode_replaceRight(aPattern, aReplacement) {\n var lastChild = this.children[this.children.length - 1];\n if (lastChild[isSourceNode]) {\n lastChild.replaceRight(aPattern, aReplacement);\n }\n else if (typeof lastChild === 'string') {\n this.children[this.children.length - 1] = lastChild.replace(aPattern, aReplacement);\n }\n else {\n this.children.push(''.replace(aPattern, aReplacement));\n }\n return this;\n};\n\n/**\n * Set the source content for a source file. This will be added to the SourceMapGenerator\n * in the sourcesContent field.\n *\n * @param aSourceFile The filename of the source file\n * @param aSourceContent The content of the source file\n */\nSourceNode.prototype.setSourceContent =\n function SourceNode_setSourceContent(aSourceFile, aSourceContent) {\n this.sourceContents[util.toSetString(aSourceFile)] = aSourceContent;\n };\n\n/**\n * Walk over the tree of SourceNodes. The walking function is called for each\n * source file content and is passed the filename and source content.\n *\n * @param aFn The traversal function.\n */\nSourceNode.prototype.walkSourceContents =\n function SourceNode_walkSourceContents(aFn) {\n for (var i = 0, len = this.children.length; i < len; i++) {\n if (this.children[i][isSourceNode]) {\n this.children[i].walkSourceContents(aFn);\n }\n }\n\n var sources = Object.keys(this.sourceContents);\n for (var i = 0, len = sources.length; i < len; i++) {\n aFn(util.fromSetString(sources[i]), this.sourceContents[sources[i]]);\n }\n };\n\n/**\n * Return the string representation of this source node. Walks over the tree\n * and concatenates all the various snippets together to one string.\n */\nSourceNode.prototype.toString = function SourceNode_toString() {\n var str = \"\";\n this.walk(function (chunk) {\n str += chunk;\n });\n return str;\n};\n\n/**\n * Returns the string representation of this source node along with a source\n * map.\n */\nSourceNode.prototype.toStringWithSourceMap = function SourceNode_toStringWithSourceMap(aArgs) {\n var generated = {\n code: \"\",\n line: 1,\n column: 0\n };\n var map = new SourceMapGenerator(aArgs);\n var sourceMappingActive = false;\n var lastOriginalSource = null;\n var lastOriginalLine = null;\n var lastOriginalColumn = null;\n var lastOriginalName = null;\n this.walk(function (chunk, original) {\n generated.code += chunk;\n if (original.source !== null\n && original.line !== null\n && original.column !== null) {\n if(lastOriginalSource !== original.source\n || lastOriginalLine !== original.line\n || lastOriginalColumn !== original.column\n || lastOriginalName !== original.name) {\n map.addMapping({\n source: original.source,\n original: {\n line: original.line,\n column: original.column\n },\n generated: {\n line: generated.line,\n column: generated.column\n },\n name: original.name\n });\n }\n lastOriginalSource = original.source;\n lastOriginalLine = original.line;\n lastOriginalColumn = original.column;\n lastOriginalName = original.name;\n sourceMappingActive = true;\n } else if (sourceMappingActive) {\n map.addMapping({\n generated: {\n line: generated.line,\n column: generated.column\n }\n });\n lastOriginalSource = null;\n sourceMappingActive = false;\n }\n for (var idx = 0, length = chunk.length; idx < length; idx++) {\n if (chunk.charCodeAt(idx) === NEWLINE_CODE) {\n generated.line++;\n generated.column = 0;\n // Mappings end at eol\n if (idx + 1 === length) {\n lastOriginalSource = null;\n sourceMappingActive = false;\n } else if (sourceMappingActive) {\n map.addMapping({\n source: original.source,\n original: {\n line: original.line,\n column: original.column\n },\n generated: {\n line: generated.line,\n column: generated.column\n },\n name: original.name\n });\n }\n } else {\n generated.column++;\n }\n }\n });\n this.walkSourceContents(function (sourceFile, sourceContent) {\n map.setSourceContent(sourceFile, sourceContent);\n });\n\n return { code: generated.code, map: map };\n};\n\nexports.SourceNode = SourceNode;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./lib/source-node.js\n// module id = 10\n// module chunks = 0"],"sourceRoot":""} \ No newline at end of file diff --git a/node_modules/source-map/lib/array-set.js b/node_modules/source-map/lib/array-set.js new file mode 100644 index 0000000..fbd5c81 --- /dev/null +++ b/node_modules/source-map/lib/array-set.js @@ -0,0 +1,121 @@ +/* -*- Mode: js; js-indent-level: 2; -*- */ +/* + * Copyright 2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + */ + +var util = require('./util'); +var has = Object.prototype.hasOwnProperty; +var hasNativeMap = typeof Map !== "undefined"; + +/** + * A data structure which is a combination of an array and a set. Adding a new + * member is O(1), testing for membership is O(1), and finding the index of an + * element is O(1). Removing elements from the set is not supported. Only + * strings are supported for membership. + */ +function ArraySet() { + this._array = []; + this._set = hasNativeMap ? new Map() : Object.create(null); +} + +/** + * Static method for creating ArraySet instances from an existing array. + */ +ArraySet.fromArray = function ArraySet_fromArray(aArray, aAllowDuplicates) { + var set = new ArraySet(); + for (var i = 0, len = aArray.length; i < len; i++) { + set.add(aArray[i], aAllowDuplicates); + } + return set; +}; + +/** + * Return how many unique items are in this ArraySet. If duplicates have been + * added, than those do not count towards the size. + * + * @returns Number + */ +ArraySet.prototype.size = function ArraySet_size() { + return hasNativeMap ? this._set.size : Object.getOwnPropertyNames(this._set).length; +}; + +/** + * Add the given string to this set. + * + * @param String aStr + */ +ArraySet.prototype.add = function ArraySet_add(aStr, aAllowDuplicates) { + var sStr = hasNativeMap ? aStr : util.toSetString(aStr); + var isDuplicate = hasNativeMap ? this.has(aStr) : has.call(this._set, sStr); + var idx = this._array.length; + if (!isDuplicate || aAllowDuplicates) { + this._array.push(aStr); + } + if (!isDuplicate) { + if (hasNativeMap) { + this._set.set(aStr, idx); + } else { + this._set[sStr] = idx; + } + } +}; + +/** + * Is the given string a member of this set? + * + * @param String aStr + */ +ArraySet.prototype.has = function ArraySet_has(aStr) { + if (hasNativeMap) { + return this._set.has(aStr); + } else { + var sStr = util.toSetString(aStr); + return has.call(this._set, sStr); + } +}; + +/** + * What is the index of the given string in the array? + * + * @param String aStr + */ +ArraySet.prototype.indexOf = function ArraySet_indexOf(aStr) { + if (hasNativeMap) { + var idx = this._set.get(aStr); + if (idx >= 0) { + return idx; + } + } else { + var sStr = util.toSetString(aStr); + if (has.call(this._set, sStr)) { + return this._set[sStr]; + } + } + + throw new Error('"' + aStr + '" is not in the set.'); +}; + +/** + * What is the element at the given index? + * + * @param Number aIdx + */ +ArraySet.prototype.at = function ArraySet_at(aIdx) { + if (aIdx >= 0 && aIdx < this._array.length) { + return this._array[aIdx]; + } + throw new Error('No element indexed by ' + aIdx); +}; + +/** + * Returns the array representation of this set (which has the proper indices + * indicated by indexOf). Note that this is a copy of the internal array used + * for storing the members so that no one can mess with internal state. + */ +ArraySet.prototype.toArray = function ArraySet_toArray() { + return this._array.slice(); +}; + +exports.ArraySet = ArraySet; diff --git a/node_modules/source-map/lib/base64-vlq.js b/node_modules/source-map/lib/base64-vlq.js new file mode 100644 index 0000000..612b404 --- /dev/null +++ b/node_modules/source-map/lib/base64-vlq.js @@ -0,0 +1,140 @@ +/* -*- Mode: js; js-indent-level: 2; -*- */ +/* + * Copyright 2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + * + * Based on the Base 64 VLQ implementation in Closure Compiler: + * https://code.google.com/p/closure-compiler/source/browse/trunk/src/com/google/debugging/sourcemap/Base64VLQ.java + * + * Copyright 2011 The Closure Compiler Authors. All rights reserved. + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * * Neither the name of Google Inc. nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +var base64 = require('./base64'); + +// A single base 64 digit can contain 6 bits of data. For the base 64 variable +// length quantities we use in the source map spec, the first bit is the sign, +// the next four bits are the actual value, and the 6th bit is the +// continuation bit. The continuation bit tells us whether there are more +// digits in this value following this digit. +// +// Continuation +// | Sign +// | | +// V V +// 101011 + +var VLQ_BASE_SHIFT = 5; + +// binary: 100000 +var VLQ_BASE = 1 << VLQ_BASE_SHIFT; + +// binary: 011111 +var VLQ_BASE_MASK = VLQ_BASE - 1; + +// binary: 100000 +var VLQ_CONTINUATION_BIT = VLQ_BASE; + +/** + * Converts from a two-complement value to a value where the sign bit is + * placed in the least significant bit. For example, as decimals: + * 1 becomes 2 (10 binary), -1 becomes 3 (11 binary) + * 2 becomes 4 (100 binary), -2 becomes 5 (101 binary) + */ +function toVLQSigned(aValue) { + return aValue < 0 + ? ((-aValue) << 1) + 1 + : (aValue << 1) + 0; +} + +/** + * Converts to a two-complement value from a value where the sign bit is + * placed in the least significant bit. For example, as decimals: + * 2 (10 binary) becomes 1, 3 (11 binary) becomes -1 + * 4 (100 binary) becomes 2, 5 (101 binary) becomes -2 + */ +function fromVLQSigned(aValue) { + var isNegative = (aValue & 1) === 1; + var shifted = aValue >> 1; + return isNegative + ? -shifted + : shifted; +} + +/** + * Returns the base 64 VLQ encoded value. + */ +exports.encode = function base64VLQ_encode(aValue) { + var encoded = ""; + var digit; + + var vlq = toVLQSigned(aValue); + + do { + digit = vlq & VLQ_BASE_MASK; + vlq >>>= VLQ_BASE_SHIFT; + if (vlq > 0) { + // There are still more digits in this value, so we must make sure the + // continuation bit is marked. + digit |= VLQ_CONTINUATION_BIT; + } + encoded += base64.encode(digit); + } while (vlq > 0); + + return encoded; +}; + +/** + * Decodes the next base 64 VLQ value from the given string and returns the + * value and the rest of the string via the out parameter. + */ +exports.decode = function base64VLQ_decode(aStr, aIndex, aOutParam) { + var strLen = aStr.length; + var result = 0; + var shift = 0; + var continuation, digit; + + do { + if (aIndex >= strLen) { + throw new Error("Expected more digits in base 64 VLQ value."); + } + + digit = base64.decode(aStr.charCodeAt(aIndex++)); + if (digit === -1) { + throw new Error("Invalid base64 digit: " + aStr.charAt(aIndex - 1)); + } + + continuation = !!(digit & VLQ_CONTINUATION_BIT); + digit &= VLQ_BASE_MASK; + result = result + (digit << shift); + shift += VLQ_BASE_SHIFT; + } while (continuation); + + aOutParam.value = fromVLQSigned(result); + aOutParam.rest = aIndex; +}; diff --git a/node_modules/source-map/lib/base64.js b/node_modules/source-map/lib/base64.js new file mode 100644 index 0000000..8aa86b3 --- /dev/null +++ b/node_modules/source-map/lib/base64.js @@ -0,0 +1,67 @@ +/* -*- Mode: js; js-indent-level: 2; -*- */ +/* + * Copyright 2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + */ + +var intToCharMap = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'.split(''); + +/** + * Encode an integer in the range of 0 to 63 to a single base 64 digit. + */ +exports.encode = function (number) { + if (0 <= number && number < intToCharMap.length) { + return intToCharMap[number]; + } + throw new TypeError("Must be between 0 and 63: " + number); +}; + +/** + * Decode a single base 64 character code digit to an integer. Returns -1 on + * failure. + */ +exports.decode = function (charCode) { + var bigA = 65; // 'A' + var bigZ = 90; // 'Z' + + var littleA = 97; // 'a' + var littleZ = 122; // 'z' + + var zero = 48; // '0' + var nine = 57; // '9' + + var plus = 43; // '+' + var slash = 47; // '/' + + var littleOffset = 26; + var numberOffset = 52; + + // 0 - 25: ABCDEFGHIJKLMNOPQRSTUVWXYZ + if (bigA <= charCode && charCode <= bigZ) { + return (charCode - bigA); + } + + // 26 - 51: abcdefghijklmnopqrstuvwxyz + if (littleA <= charCode && charCode <= littleZ) { + return (charCode - littleA + littleOffset); + } + + // 52 - 61: 0123456789 + if (zero <= charCode && charCode <= nine) { + return (charCode - zero + numberOffset); + } + + // 62: + + if (charCode == plus) { + return 62; + } + + // 63: / + if (charCode == slash) { + return 63; + } + + // Invalid base64 digit. + return -1; +}; diff --git a/node_modules/source-map/lib/binary-search.js b/node_modules/source-map/lib/binary-search.js new file mode 100644 index 0000000..010ac94 --- /dev/null +++ b/node_modules/source-map/lib/binary-search.js @@ -0,0 +1,111 @@ +/* -*- Mode: js; js-indent-level: 2; -*- */ +/* + * Copyright 2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + */ + +exports.GREATEST_LOWER_BOUND = 1; +exports.LEAST_UPPER_BOUND = 2; + +/** + * Recursive implementation of binary search. + * + * @param aLow Indices here and lower do not contain the needle. + * @param aHigh Indices here and higher do not contain the needle. + * @param aNeedle The element being searched for. + * @param aHaystack The non-empty array being searched. + * @param aCompare Function which takes two elements and returns -1, 0, or 1. + * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or + * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the + * closest element that is smaller than or greater than the one we are + * searching for, respectively, if the exact element cannot be found. + */ +function recursiveSearch(aLow, aHigh, aNeedle, aHaystack, aCompare, aBias) { + // This function terminates when one of the following is true: + // + // 1. We find the exact element we are looking for. + // + // 2. We did not find the exact element, but we can return the index of + // the next-closest element. + // + // 3. We did not find the exact element, and there is no next-closest + // element than the one we are searching for, so we return -1. + var mid = Math.floor((aHigh - aLow) / 2) + aLow; + var cmp = aCompare(aNeedle, aHaystack[mid], true); + if (cmp === 0) { + // Found the element we are looking for. + return mid; + } + else if (cmp > 0) { + // Our needle is greater than aHaystack[mid]. + if (aHigh - mid > 1) { + // The element is in the upper half. + return recursiveSearch(mid, aHigh, aNeedle, aHaystack, aCompare, aBias); + } + + // The exact needle element was not found in this haystack. Determine if + // we are in termination case (3) or (2) and return the appropriate thing. + if (aBias == exports.LEAST_UPPER_BOUND) { + return aHigh < aHaystack.length ? aHigh : -1; + } else { + return mid; + } + } + else { + // Our needle is less than aHaystack[mid]. + if (mid - aLow > 1) { + // The element is in the lower half. + return recursiveSearch(aLow, mid, aNeedle, aHaystack, aCompare, aBias); + } + + // we are in termination case (3) or (2) and return the appropriate thing. + if (aBias == exports.LEAST_UPPER_BOUND) { + return mid; + } else { + return aLow < 0 ? -1 : aLow; + } + } +} + +/** + * This is an implementation of binary search which will always try and return + * the index of the closest element if there is no exact hit. This is because + * mappings between original and generated line/col pairs are single points, + * and there is an implicit region between each of them, so a miss just means + * that you aren't on the very start of a region. + * + * @param aNeedle The element you are looking for. + * @param aHaystack The array that is being searched. + * @param aCompare A function which takes the needle and an element in the + * array and returns -1, 0, or 1 depending on whether the needle is less + * than, equal to, or greater than the element, respectively. + * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or + * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the + * closest element that is smaller than or greater than the one we are + * searching for, respectively, if the exact element cannot be found. + * Defaults to 'binarySearch.GREATEST_LOWER_BOUND'. + */ +exports.search = function search(aNeedle, aHaystack, aCompare, aBias) { + if (aHaystack.length === 0) { + return -1; + } + + var index = recursiveSearch(-1, aHaystack.length, aNeedle, aHaystack, + aCompare, aBias || exports.GREATEST_LOWER_BOUND); + if (index < 0) { + return -1; + } + + // We have found either the exact element, or the next-closest element than + // the one we are searching for. However, there may be more than one such + // element. Make sure we always return the smallest of these. + while (index - 1 >= 0) { + if (aCompare(aHaystack[index], aHaystack[index - 1], true) !== 0) { + break; + } + --index; + } + + return index; +}; diff --git a/node_modules/source-map/lib/mapping-list.js b/node_modules/source-map/lib/mapping-list.js new file mode 100644 index 0000000..06d1274 --- /dev/null +++ b/node_modules/source-map/lib/mapping-list.js @@ -0,0 +1,79 @@ +/* -*- Mode: js; js-indent-level: 2; -*- */ +/* + * Copyright 2014 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + */ + +var util = require('./util'); + +/** + * Determine whether mappingB is after mappingA with respect to generated + * position. + */ +function generatedPositionAfter(mappingA, mappingB) { + // Optimized for most common case + var lineA = mappingA.generatedLine; + var lineB = mappingB.generatedLine; + var columnA = mappingA.generatedColumn; + var columnB = mappingB.generatedColumn; + return lineB > lineA || lineB == lineA && columnB >= columnA || + util.compareByGeneratedPositionsInflated(mappingA, mappingB) <= 0; +} + +/** + * A data structure to provide a sorted view of accumulated mappings in a + * performance conscious manner. It trades a neglibable overhead in general + * case for a large speedup in case of mappings being added in order. + */ +function MappingList() { + this._array = []; + this._sorted = true; + // Serves as infimum + this._last = {generatedLine: -1, generatedColumn: 0}; +} + +/** + * Iterate through internal items. This method takes the same arguments that + * `Array.prototype.forEach` takes. + * + * NOTE: The order of the mappings is NOT guaranteed. + */ +MappingList.prototype.unsortedForEach = + function MappingList_forEach(aCallback, aThisArg) { + this._array.forEach(aCallback, aThisArg); + }; + +/** + * Add the given source mapping. + * + * @param Object aMapping + */ +MappingList.prototype.add = function MappingList_add(aMapping) { + if (generatedPositionAfter(this._last, aMapping)) { + this._last = aMapping; + this._array.push(aMapping); + } else { + this._sorted = false; + this._array.push(aMapping); + } +}; + +/** + * Returns the flat, sorted array of mappings. The mappings are sorted by + * generated position. + * + * WARNING: This method returns internal data without copying, for + * performance. The return value must NOT be mutated, and should be treated as + * an immutable borrow. If you want to take ownership, you must make your own + * copy. + */ +MappingList.prototype.toArray = function MappingList_toArray() { + if (!this._sorted) { + this._array.sort(util.compareByGeneratedPositionsInflated); + this._sorted = true; + } + return this._array; +}; + +exports.MappingList = MappingList; diff --git a/node_modules/source-map/lib/quick-sort.js b/node_modules/source-map/lib/quick-sort.js new file mode 100644 index 0000000..6a7caad --- /dev/null +++ b/node_modules/source-map/lib/quick-sort.js @@ -0,0 +1,114 @@ +/* -*- Mode: js; js-indent-level: 2; -*- */ +/* + * Copyright 2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + */ + +// It turns out that some (most?) JavaScript engines don't self-host +// `Array.prototype.sort`. This makes sense because C++ will likely remain +// faster than JS when doing raw CPU-intensive sorting. However, when using a +// custom comparator function, calling back and forth between the VM's C++ and +// JIT'd JS is rather slow *and* loses JIT type information, resulting in +// worse generated code for the comparator function than would be optimal. In +// fact, when sorting with a comparator, these costs outweigh the benefits of +// sorting in C++. By using our own JS-implemented Quick Sort (below), we get +// a ~3500ms mean speed-up in `bench/bench.html`. + +/** + * Swap the elements indexed by `x` and `y` in the array `ary`. + * + * @param {Array} ary + * The array. + * @param {Number} x + * The index of the first item. + * @param {Number} y + * The index of the second item. + */ +function swap(ary, x, y) { + var temp = ary[x]; + ary[x] = ary[y]; + ary[y] = temp; +} + +/** + * Returns a random integer within the range `low .. high` inclusive. + * + * @param {Number} low + * The lower bound on the range. + * @param {Number} high + * The upper bound on the range. + */ +function randomIntInRange(low, high) { + return Math.round(low + (Math.random() * (high - low))); +} + +/** + * The Quick Sort algorithm. + * + * @param {Array} ary + * An array to sort. + * @param {function} comparator + * Function to use to compare two items. + * @param {Number} p + * Start index of the array + * @param {Number} r + * End index of the array + */ +function doQuickSort(ary, comparator, p, r) { + // If our lower bound is less than our upper bound, we (1) partition the + // array into two pieces and (2) recurse on each half. If it is not, this is + // the empty array and our base case. + + if (p < r) { + // (1) Partitioning. + // + // The partitioning chooses a pivot between `p` and `r` and moves all + // elements that are less than or equal to the pivot to the before it, and + // all the elements that are greater than it after it. The effect is that + // once partition is done, the pivot is in the exact place it will be when + // the array is put in sorted order, and it will not need to be moved + // again. This runs in O(n) time. + + // Always choose a random pivot so that an input array which is reverse + // sorted does not cause O(n^2) running time. + var pivotIndex = randomIntInRange(p, r); + var i = p - 1; + + swap(ary, pivotIndex, r); + var pivot = ary[r]; + + // Immediately after `j` is incremented in this loop, the following hold + // true: + // + // * Every element in `ary[p .. i]` is less than or equal to the pivot. + // + // * Every element in `ary[i+1 .. j-1]` is greater than the pivot. + for (var j = p; j < r; j++) { + if (comparator(ary[j], pivot) <= 0) { + i += 1; + swap(ary, i, j); + } + } + + swap(ary, i + 1, j); + var q = i + 1; + + // (2) Recurse on each half. + + doQuickSort(ary, comparator, p, q - 1); + doQuickSort(ary, comparator, q + 1, r); + } +} + +/** + * Sort the given array in-place with the given comparator function. + * + * @param {Array} ary + * An array to sort. + * @param {function} comparator + * Function to use to compare two items. + */ +exports.quickSort = function (ary, comparator) { + doQuickSort(ary, comparator, 0, ary.length - 1); +}; diff --git a/node_modules/source-map/lib/source-map-consumer.js b/node_modules/source-map/lib/source-map-consumer.js new file mode 100644 index 0000000..7b99d1d --- /dev/null +++ b/node_modules/source-map/lib/source-map-consumer.js @@ -0,0 +1,1145 @@ +/* -*- Mode: js; js-indent-level: 2; -*- */ +/* + * Copyright 2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + */ + +var util = require('./util'); +var binarySearch = require('./binary-search'); +var ArraySet = require('./array-set').ArraySet; +var base64VLQ = require('./base64-vlq'); +var quickSort = require('./quick-sort').quickSort; + +function SourceMapConsumer(aSourceMap, aSourceMapURL) { + var sourceMap = aSourceMap; + if (typeof aSourceMap === 'string') { + sourceMap = util.parseSourceMapInput(aSourceMap); + } + + return sourceMap.sections != null + ? new IndexedSourceMapConsumer(sourceMap, aSourceMapURL) + : new BasicSourceMapConsumer(sourceMap, aSourceMapURL); +} + +SourceMapConsumer.fromSourceMap = function(aSourceMap, aSourceMapURL) { + return BasicSourceMapConsumer.fromSourceMap(aSourceMap, aSourceMapURL); +} + +/** + * The version of the source mapping spec that we are consuming. + */ +SourceMapConsumer.prototype._version = 3; + +// `__generatedMappings` and `__originalMappings` are arrays that hold the +// parsed mapping coordinates from the source map's "mappings" attribute. They +// are lazily instantiated, accessed via the `_generatedMappings` and +// `_originalMappings` getters respectively, and we only parse the mappings +// and create these arrays once queried for a source location. We jump through +// these hoops because there can be many thousands of mappings, and parsing +// them is expensive, so we only want to do it if we must. +// +// Each object in the arrays is of the form: +// +// { +// generatedLine: The line number in the generated code, +// generatedColumn: The column number in the generated code, +// source: The path to the original source file that generated this +// chunk of code, +// originalLine: The line number in the original source that +// corresponds to this chunk of generated code, +// originalColumn: The column number in the original source that +// corresponds to this chunk of generated code, +// name: The name of the original symbol which generated this chunk of +// code. +// } +// +// All properties except for `generatedLine` and `generatedColumn` can be +// `null`. +// +// `_generatedMappings` is ordered by the generated positions. +// +// `_originalMappings` is ordered by the original positions. + +SourceMapConsumer.prototype.__generatedMappings = null; +Object.defineProperty(SourceMapConsumer.prototype, '_generatedMappings', { + configurable: true, + enumerable: true, + get: function () { + if (!this.__generatedMappings) { + this._parseMappings(this._mappings, this.sourceRoot); + } + + return this.__generatedMappings; + } +}); + +SourceMapConsumer.prototype.__originalMappings = null; +Object.defineProperty(SourceMapConsumer.prototype, '_originalMappings', { + configurable: true, + enumerable: true, + get: function () { + if (!this.__originalMappings) { + this._parseMappings(this._mappings, this.sourceRoot); + } + + return this.__originalMappings; + } +}); + +SourceMapConsumer.prototype._charIsMappingSeparator = + function SourceMapConsumer_charIsMappingSeparator(aStr, index) { + var c = aStr.charAt(index); + return c === ";" || c === ","; + }; + +/** + * Parse the mappings in a string in to a data structure which we can easily + * query (the ordered arrays in the `this.__generatedMappings` and + * `this.__originalMappings` properties). + */ +SourceMapConsumer.prototype._parseMappings = + function SourceMapConsumer_parseMappings(aStr, aSourceRoot) { + throw new Error("Subclasses must implement _parseMappings"); + }; + +SourceMapConsumer.GENERATED_ORDER = 1; +SourceMapConsumer.ORIGINAL_ORDER = 2; + +SourceMapConsumer.GREATEST_LOWER_BOUND = 1; +SourceMapConsumer.LEAST_UPPER_BOUND = 2; + +/** + * Iterate over each mapping between an original source/line/column and a + * generated line/column in this source map. + * + * @param Function aCallback + * The function that is called with each mapping. + * @param Object aContext + * Optional. If specified, this object will be the value of `this` every + * time that `aCallback` is called. + * @param aOrder + * Either `SourceMapConsumer.GENERATED_ORDER` or + * `SourceMapConsumer.ORIGINAL_ORDER`. Specifies whether you want to + * iterate over the mappings sorted by the generated file's line/column + * order or the original's source/line/column order, respectively. Defaults to + * `SourceMapConsumer.GENERATED_ORDER`. + */ +SourceMapConsumer.prototype.eachMapping = + function SourceMapConsumer_eachMapping(aCallback, aContext, aOrder) { + var context = aContext || null; + var order = aOrder || SourceMapConsumer.GENERATED_ORDER; + + var mappings; + switch (order) { + case SourceMapConsumer.GENERATED_ORDER: + mappings = this._generatedMappings; + break; + case SourceMapConsumer.ORIGINAL_ORDER: + mappings = this._originalMappings; + break; + default: + throw new Error("Unknown order of iteration."); + } + + var sourceRoot = this.sourceRoot; + mappings.map(function (mapping) { + var source = mapping.source === null ? null : this._sources.at(mapping.source); + source = util.computeSourceURL(sourceRoot, source, this._sourceMapURL); + return { + source: source, + generatedLine: mapping.generatedLine, + generatedColumn: mapping.generatedColumn, + originalLine: mapping.originalLine, + originalColumn: mapping.originalColumn, + name: mapping.name === null ? null : this._names.at(mapping.name) + }; + }, this).forEach(aCallback, context); + }; + +/** + * Returns all generated line and column information for the original source, + * line, and column provided. If no column is provided, returns all mappings + * corresponding to a either the line we are searching for or the next + * closest line that has any mappings. Otherwise, returns all mappings + * corresponding to the given line and either the column we are searching for + * or the next closest column that has any offsets. + * + * The only argument is an object with the following properties: + * + * - source: The filename of the original source. + * - line: The line number in the original source. The line number is 1-based. + * - column: Optional. the column number in the original source. + * The column number is 0-based. + * + * and an array of objects is returned, each with the following properties: + * + * - line: The line number in the generated source, or null. The + * line number is 1-based. + * - column: The column number in the generated source, or null. + * The column number is 0-based. + */ +SourceMapConsumer.prototype.allGeneratedPositionsFor = + function SourceMapConsumer_allGeneratedPositionsFor(aArgs) { + var line = util.getArg(aArgs, 'line'); + + // When there is no exact match, BasicSourceMapConsumer.prototype._findMapping + // returns the index of the closest mapping less than the needle. By + // setting needle.originalColumn to 0, we thus find the last mapping for + // the given line, provided such a mapping exists. + var needle = { + source: util.getArg(aArgs, 'source'), + originalLine: line, + originalColumn: util.getArg(aArgs, 'column', 0) + }; + + needle.source = this._findSourceIndex(needle.source); + if (needle.source < 0) { + return []; + } + + var mappings = []; + + var index = this._findMapping(needle, + this._originalMappings, + "originalLine", + "originalColumn", + util.compareByOriginalPositions, + binarySearch.LEAST_UPPER_BOUND); + if (index >= 0) { + var mapping = this._originalMappings[index]; + + if (aArgs.column === undefined) { + var originalLine = mapping.originalLine; + + // Iterate until either we run out of mappings, or we run into + // a mapping for a different line than the one we found. Since + // mappings are sorted, this is guaranteed to find all mappings for + // the line we found. + while (mapping && mapping.originalLine === originalLine) { + mappings.push({ + line: util.getArg(mapping, 'generatedLine', null), + column: util.getArg(mapping, 'generatedColumn', null), + lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null) + }); + + mapping = this._originalMappings[++index]; + } + } else { + var originalColumn = mapping.originalColumn; + + // Iterate until either we run out of mappings, or we run into + // a mapping for a different line than the one we were searching for. + // Since mappings are sorted, this is guaranteed to find all mappings for + // the line we are searching for. + while (mapping && + mapping.originalLine === line && + mapping.originalColumn == originalColumn) { + mappings.push({ + line: util.getArg(mapping, 'generatedLine', null), + column: util.getArg(mapping, 'generatedColumn', null), + lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null) + }); + + mapping = this._originalMappings[++index]; + } + } + } + + return mappings; + }; + +exports.SourceMapConsumer = SourceMapConsumer; + +/** + * A BasicSourceMapConsumer instance represents a parsed source map which we can + * query for information about the original file positions by giving it a file + * position in the generated source. + * + * The first parameter is the raw source map (either as a JSON string, or + * already parsed to an object). According to the spec, source maps have the + * following attributes: + * + * - version: Which version of the source map spec this map is following. + * - sources: An array of URLs to the original source files. + * - names: An array of identifiers which can be referrenced by individual mappings. + * - sourceRoot: Optional. The URL root from which all sources are relative. + * - sourcesContent: Optional. An array of contents of the original source files. + * - mappings: A string of base64 VLQs which contain the actual mappings. + * - file: Optional. The generated file this source map is associated with. + * + * Here is an example source map, taken from the source map spec[0]: + * + * { + * version : 3, + * file: "out.js", + * sourceRoot : "", + * sources: ["foo.js", "bar.js"], + * names: ["src", "maps", "are", "fun"], + * mappings: "AA,AB;;ABCDE;" + * } + * + * The second parameter, if given, is a string whose value is the URL + * at which the source map was found. This URL is used to compute the + * sources array. + * + * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit?pli=1# + */ +function BasicSourceMapConsumer(aSourceMap, aSourceMapURL) { + var sourceMap = aSourceMap; + if (typeof aSourceMap === 'string') { + sourceMap = util.parseSourceMapInput(aSourceMap); + } + + var version = util.getArg(sourceMap, 'version'); + var sources = util.getArg(sourceMap, 'sources'); + // Sass 3.3 leaves out the 'names' array, so we deviate from the spec (which + // requires the array) to play nice here. + var names = util.getArg(sourceMap, 'names', []); + var sourceRoot = util.getArg(sourceMap, 'sourceRoot', null); + var sourcesContent = util.getArg(sourceMap, 'sourcesContent', null); + var mappings = util.getArg(sourceMap, 'mappings'); + var file = util.getArg(sourceMap, 'file', null); + + // Once again, Sass deviates from the spec and supplies the version as a + // string rather than a number, so we use loose equality checking here. + if (version != this._version) { + throw new Error('Unsupported version: ' + version); + } + + if (sourceRoot) { + sourceRoot = util.normalize(sourceRoot); + } + + sources = sources + .map(String) + // Some source maps produce relative source paths like "./foo.js" instead of + // "foo.js". Normalize these first so that future comparisons will succeed. + // See bugzil.la/1090768. + .map(util.normalize) + // Always ensure that absolute sources are internally stored relative to + // the source root, if the source root is absolute. Not doing this would + // be particularly problematic when the source root is a prefix of the + // source (valid, but why??). See github issue #199 and bugzil.la/1188982. + .map(function (source) { + return sourceRoot && util.isAbsolute(sourceRoot) && util.isAbsolute(source) + ? util.relative(sourceRoot, source) + : source; + }); + + // Pass `true` below to allow duplicate names and sources. While source maps + // are intended to be compressed and deduplicated, the TypeScript compiler + // sometimes generates source maps with duplicates in them. See Github issue + // #72 and bugzil.la/889492. + this._names = ArraySet.fromArray(names.map(String), true); + this._sources = ArraySet.fromArray(sources, true); + + this._absoluteSources = this._sources.toArray().map(function (s) { + return util.computeSourceURL(sourceRoot, s, aSourceMapURL); + }); + + this.sourceRoot = sourceRoot; + this.sourcesContent = sourcesContent; + this._mappings = mappings; + this._sourceMapURL = aSourceMapURL; + this.file = file; +} + +BasicSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype); +BasicSourceMapConsumer.prototype.consumer = SourceMapConsumer; + +/** + * Utility function to find the index of a source. Returns -1 if not + * found. + */ +BasicSourceMapConsumer.prototype._findSourceIndex = function(aSource) { + var relativeSource = aSource; + if (this.sourceRoot != null) { + relativeSource = util.relative(this.sourceRoot, relativeSource); + } + + if (this._sources.has(relativeSource)) { + return this._sources.indexOf(relativeSource); + } + + // Maybe aSource is an absolute URL as returned by |sources|. In + // this case we can't simply undo the transform. + var i; + for (i = 0; i < this._absoluteSources.length; ++i) { + if (this._absoluteSources[i] == aSource) { + return i; + } + } + + return -1; +}; + +/** + * Create a BasicSourceMapConsumer from a SourceMapGenerator. + * + * @param SourceMapGenerator aSourceMap + * The source map that will be consumed. + * @param String aSourceMapURL + * The URL at which the source map can be found (optional) + * @returns BasicSourceMapConsumer + */ +BasicSourceMapConsumer.fromSourceMap = + function SourceMapConsumer_fromSourceMap(aSourceMap, aSourceMapURL) { + var smc = Object.create(BasicSourceMapConsumer.prototype); + + var names = smc._names = ArraySet.fromArray(aSourceMap._names.toArray(), true); + var sources = smc._sources = ArraySet.fromArray(aSourceMap._sources.toArray(), true); + smc.sourceRoot = aSourceMap._sourceRoot; + smc.sourcesContent = aSourceMap._generateSourcesContent(smc._sources.toArray(), + smc.sourceRoot); + smc.file = aSourceMap._file; + smc._sourceMapURL = aSourceMapURL; + smc._absoluteSources = smc._sources.toArray().map(function (s) { + return util.computeSourceURL(smc.sourceRoot, s, aSourceMapURL); + }); + + // Because we are modifying the entries (by converting string sources and + // names to indices into the sources and names ArraySets), we have to make + // a copy of the entry or else bad things happen. Shared mutable state + // strikes again! See github issue #191. + + var generatedMappings = aSourceMap._mappings.toArray().slice(); + var destGeneratedMappings = smc.__generatedMappings = []; + var destOriginalMappings = smc.__originalMappings = []; + + for (var i = 0, length = generatedMappings.length; i < length; i++) { + var srcMapping = generatedMappings[i]; + var destMapping = new Mapping; + destMapping.generatedLine = srcMapping.generatedLine; + destMapping.generatedColumn = srcMapping.generatedColumn; + + if (srcMapping.source) { + destMapping.source = sources.indexOf(srcMapping.source); + destMapping.originalLine = srcMapping.originalLine; + destMapping.originalColumn = srcMapping.originalColumn; + + if (srcMapping.name) { + destMapping.name = names.indexOf(srcMapping.name); + } + + destOriginalMappings.push(destMapping); + } + + destGeneratedMappings.push(destMapping); + } + + quickSort(smc.__originalMappings, util.compareByOriginalPositions); + + return smc; + }; + +/** + * The version of the source mapping spec that we are consuming. + */ +BasicSourceMapConsumer.prototype._version = 3; + +/** + * The list of original sources. + */ +Object.defineProperty(BasicSourceMapConsumer.prototype, 'sources', { + get: function () { + return this._absoluteSources.slice(); + } +}); + +/** + * Provide the JIT with a nice shape / hidden class. + */ +function Mapping() { + this.generatedLine = 0; + this.generatedColumn = 0; + this.source = null; + this.originalLine = null; + this.originalColumn = null; + this.name = null; +} + +/** + * Parse the mappings in a string in to a data structure which we can easily + * query (the ordered arrays in the `this.__generatedMappings` and + * `this.__originalMappings` properties). + */ +BasicSourceMapConsumer.prototype._parseMappings = + function SourceMapConsumer_parseMappings(aStr, aSourceRoot) { + var generatedLine = 1; + var previousGeneratedColumn = 0; + var previousOriginalLine = 0; + var previousOriginalColumn = 0; + var previousSource = 0; + var previousName = 0; + var length = aStr.length; + var index = 0; + var cachedSegments = {}; + var temp = {}; + var originalMappings = []; + var generatedMappings = []; + var mapping, str, segment, end, value; + + while (index < length) { + if (aStr.charAt(index) === ';') { + generatedLine++; + index++; + previousGeneratedColumn = 0; + } + else if (aStr.charAt(index) === ',') { + index++; + } + else { + mapping = new Mapping(); + mapping.generatedLine = generatedLine; + + // Because each offset is encoded relative to the previous one, + // many segments often have the same encoding. We can exploit this + // fact by caching the parsed variable length fields of each segment, + // allowing us to avoid a second parse if we encounter the same + // segment again. + for (end = index; end < length; end++) { + if (this._charIsMappingSeparator(aStr, end)) { + break; + } + } + str = aStr.slice(index, end); + + segment = cachedSegments[str]; + if (segment) { + index += str.length; + } else { + segment = []; + while (index < end) { + base64VLQ.decode(aStr, index, temp); + value = temp.value; + index = temp.rest; + segment.push(value); + } + + if (segment.length === 2) { + throw new Error('Found a source, but no line and column'); + } + + if (segment.length === 3) { + throw new Error('Found a source and line, but no column'); + } + + cachedSegments[str] = segment; + } + + // Generated column. + mapping.generatedColumn = previousGeneratedColumn + segment[0]; + previousGeneratedColumn = mapping.generatedColumn; + + if (segment.length > 1) { + // Original source. + mapping.source = previousSource + segment[1]; + previousSource += segment[1]; + + // Original line. + mapping.originalLine = previousOriginalLine + segment[2]; + previousOriginalLine = mapping.originalLine; + // Lines are stored 0-based + mapping.originalLine += 1; + + // Original column. + mapping.originalColumn = previousOriginalColumn + segment[3]; + previousOriginalColumn = mapping.originalColumn; + + if (segment.length > 4) { + // Original name. + mapping.name = previousName + segment[4]; + previousName += segment[4]; + } + } + + generatedMappings.push(mapping); + if (typeof mapping.originalLine === 'number') { + originalMappings.push(mapping); + } + } + } + + quickSort(generatedMappings, util.compareByGeneratedPositionsDeflated); + this.__generatedMappings = generatedMappings; + + quickSort(originalMappings, util.compareByOriginalPositions); + this.__originalMappings = originalMappings; + }; + +/** + * Find the mapping that best matches the hypothetical "needle" mapping that + * we are searching for in the given "haystack" of mappings. + */ +BasicSourceMapConsumer.prototype._findMapping = + function SourceMapConsumer_findMapping(aNeedle, aMappings, aLineName, + aColumnName, aComparator, aBias) { + // To return the position we are searching for, we must first find the + // mapping for the given position and then return the opposite position it + // points to. Because the mappings are sorted, we can use binary search to + // find the best mapping. + + if (aNeedle[aLineName] <= 0) { + throw new TypeError('Line must be greater than or equal to 1, got ' + + aNeedle[aLineName]); + } + if (aNeedle[aColumnName] < 0) { + throw new TypeError('Column must be greater than or equal to 0, got ' + + aNeedle[aColumnName]); + } + + return binarySearch.search(aNeedle, aMappings, aComparator, aBias); + }; + +/** + * Compute the last column for each generated mapping. The last column is + * inclusive. + */ +BasicSourceMapConsumer.prototype.computeColumnSpans = + function SourceMapConsumer_computeColumnSpans() { + for (var index = 0; index < this._generatedMappings.length; ++index) { + var mapping = this._generatedMappings[index]; + + // Mappings do not contain a field for the last generated columnt. We + // can come up with an optimistic estimate, however, by assuming that + // mappings are contiguous (i.e. given two consecutive mappings, the + // first mapping ends where the second one starts). + if (index + 1 < this._generatedMappings.length) { + var nextMapping = this._generatedMappings[index + 1]; + + if (mapping.generatedLine === nextMapping.generatedLine) { + mapping.lastGeneratedColumn = nextMapping.generatedColumn - 1; + continue; + } + } + + // The last mapping for each line spans the entire line. + mapping.lastGeneratedColumn = Infinity; + } + }; + +/** + * Returns the original source, line, and column information for the generated + * source's line and column positions provided. The only argument is an object + * with the following properties: + * + * - line: The line number in the generated source. The line number + * is 1-based. + * - column: The column number in the generated source. The column + * number is 0-based. + * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or + * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the + * closest element that is smaller than or greater than the one we are + * searching for, respectively, if the exact element cannot be found. + * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'. + * + * and an object is returned with the following properties: + * + * - source: The original source file, or null. + * - line: The line number in the original source, or null. The + * line number is 1-based. + * - column: The column number in the original source, or null. The + * column number is 0-based. + * - name: The original identifier, or null. + */ +BasicSourceMapConsumer.prototype.originalPositionFor = + function SourceMapConsumer_originalPositionFor(aArgs) { + var needle = { + generatedLine: util.getArg(aArgs, 'line'), + generatedColumn: util.getArg(aArgs, 'column') + }; + + var index = this._findMapping( + needle, + this._generatedMappings, + "generatedLine", + "generatedColumn", + util.compareByGeneratedPositionsDeflated, + util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND) + ); + + if (index >= 0) { + var mapping = this._generatedMappings[index]; + + if (mapping.generatedLine === needle.generatedLine) { + var source = util.getArg(mapping, 'source', null); + if (source !== null) { + source = this._sources.at(source); + source = util.computeSourceURL(this.sourceRoot, source, this._sourceMapURL); + } + var name = util.getArg(mapping, 'name', null); + if (name !== null) { + name = this._names.at(name); + } + return { + source: source, + line: util.getArg(mapping, 'originalLine', null), + column: util.getArg(mapping, 'originalColumn', null), + name: name + }; + } + } + + return { + source: null, + line: null, + column: null, + name: null + }; + }; + +/** + * Return true if we have the source content for every source in the source + * map, false otherwise. + */ +BasicSourceMapConsumer.prototype.hasContentsOfAllSources = + function BasicSourceMapConsumer_hasContentsOfAllSources() { + if (!this.sourcesContent) { + return false; + } + return this.sourcesContent.length >= this._sources.size() && + !this.sourcesContent.some(function (sc) { return sc == null; }); + }; + +/** + * Returns the original source content. The only argument is the url of the + * original source file. Returns null if no original source content is + * available. + */ +BasicSourceMapConsumer.prototype.sourceContentFor = + function SourceMapConsumer_sourceContentFor(aSource, nullOnMissing) { + if (!this.sourcesContent) { + return null; + } + + var index = this._findSourceIndex(aSource); + if (index >= 0) { + return this.sourcesContent[index]; + } + + var relativeSource = aSource; + if (this.sourceRoot != null) { + relativeSource = util.relative(this.sourceRoot, relativeSource); + } + + var url; + if (this.sourceRoot != null + && (url = util.urlParse(this.sourceRoot))) { + // XXX: file:// URIs and absolute paths lead to unexpected behavior for + // many users. We can help them out when they expect file:// URIs to + // behave like it would if they were running a local HTTP server. See + // https://bugzilla.mozilla.org/show_bug.cgi?id=885597. + var fileUriAbsPath = relativeSource.replace(/^file:\/\//, ""); + if (url.scheme == "file" + && this._sources.has(fileUriAbsPath)) { + return this.sourcesContent[this._sources.indexOf(fileUriAbsPath)] + } + + if ((!url.path || url.path == "/") + && this._sources.has("/" + relativeSource)) { + return this.sourcesContent[this._sources.indexOf("/" + relativeSource)]; + } + } + + // This function is used recursively from + // IndexedSourceMapConsumer.prototype.sourceContentFor. In that case, we + // don't want to throw if we can't find the source - we just want to + // return null, so we provide a flag to exit gracefully. + if (nullOnMissing) { + return null; + } + else { + throw new Error('"' + relativeSource + '" is not in the SourceMap.'); + } + }; + +/** + * Returns the generated line and column information for the original source, + * line, and column positions provided. The only argument is an object with + * the following properties: + * + * - source: The filename of the original source. + * - line: The line number in the original source. The line number + * is 1-based. + * - column: The column number in the original source. The column + * number is 0-based. + * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or + * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the + * closest element that is smaller than or greater than the one we are + * searching for, respectively, if the exact element cannot be found. + * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'. + * + * and an object is returned with the following properties: + * + * - line: The line number in the generated source, or null. The + * line number is 1-based. + * - column: The column number in the generated source, or null. + * The column number is 0-based. + */ +BasicSourceMapConsumer.prototype.generatedPositionFor = + function SourceMapConsumer_generatedPositionFor(aArgs) { + var source = util.getArg(aArgs, 'source'); + source = this._findSourceIndex(source); + if (source < 0) { + return { + line: null, + column: null, + lastColumn: null + }; + } + + var needle = { + source: source, + originalLine: util.getArg(aArgs, 'line'), + originalColumn: util.getArg(aArgs, 'column') + }; + + var index = this._findMapping( + needle, + this._originalMappings, + "originalLine", + "originalColumn", + util.compareByOriginalPositions, + util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND) + ); + + if (index >= 0) { + var mapping = this._originalMappings[index]; + + if (mapping.source === needle.source) { + return { + line: util.getArg(mapping, 'generatedLine', null), + column: util.getArg(mapping, 'generatedColumn', null), + lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null) + }; + } + } + + return { + line: null, + column: null, + lastColumn: null + }; + }; + +exports.BasicSourceMapConsumer = BasicSourceMapConsumer; + +/** + * An IndexedSourceMapConsumer instance represents a parsed source map which + * we can query for information. It differs from BasicSourceMapConsumer in + * that it takes "indexed" source maps (i.e. ones with a "sections" field) as + * input. + * + * The first parameter is a raw source map (either as a JSON string, or already + * parsed to an object). According to the spec for indexed source maps, they + * have the following attributes: + * + * - version: Which version of the source map spec this map is following. + * - file: Optional. The generated file this source map is associated with. + * - sections: A list of section definitions. + * + * Each value under the "sections" field has two fields: + * - offset: The offset into the original specified at which this section + * begins to apply, defined as an object with a "line" and "column" + * field. + * - map: A source map definition. This source map could also be indexed, + * but doesn't have to be. + * + * Instead of the "map" field, it's also possible to have a "url" field + * specifying a URL to retrieve a source map from, but that's currently + * unsupported. + * + * Here's an example source map, taken from the source map spec[0], but + * modified to omit a section which uses the "url" field. + * + * { + * version : 3, + * file: "app.js", + * sections: [{ + * offset: {line:100, column:10}, + * map: { + * version : 3, + * file: "section.js", + * sources: ["foo.js", "bar.js"], + * names: ["src", "maps", "are", "fun"], + * mappings: "AAAA,E;;ABCDE;" + * } + * }], + * } + * + * The second parameter, if given, is a string whose value is the URL + * at which the source map was found. This URL is used to compute the + * sources array. + * + * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit#heading=h.535es3xeprgt + */ +function IndexedSourceMapConsumer(aSourceMap, aSourceMapURL) { + var sourceMap = aSourceMap; + if (typeof aSourceMap === 'string') { + sourceMap = util.parseSourceMapInput(aSourceMap); + } + + var version = util.getArg(sourceMap, 'version'); + var sections = util.getArg(sourceMap, 'sections'); + + if (version != this._version) { + throw new Error('Unsupported version: ' + version); + } + + this._sources = new ArraySet(); + this._names = new ArraySet(); + + var lastOffset = { + line: -1, + column: 0 + }; + this._sections = sections.map(function (s) { + if (s.url) { + // The url field will require support for asynchronicity. + // See https://github.com/mozilla/source-map/issues/16 + throw new Error('Support for url field in sections not implemented.'); + } + var offset = util.getArg(s, 'offset'); + var offsetLine = util.getArg(offset, 'line'); + var offsetColumn = util.getArg(offset, 'column'); + + if (offsetLine < lastOffset.line || + (offsetLine === lastOffset.line && offsetColumn < lastOffset.column)) { + throw new Error('Section offsets must be ordered and non-overlapping.'); + } + lastOffset = offset; + + return { + generatedOffset: { + // The offset fields are 0-based, but we use 1-based indices when + // encoding/decoding from VLQ. + generatedLine: offsetLine + 1, + generatedColumn: offsetColumn + 1 + }, + consumer: new SourceMapConsumer(util.getArg(s, 'map'), aSourceMapURL) + } + }); +} + +IndexedSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype); +IndexedSourceMapConsumer.prototype.constructor = SourceMapConsumer; + +/** + * The version of the source mapping spec that we are consuming. + */ +IndexedSourceMapConsumer.prototype._version = 3; + +/** + * The list of original sources. + */ +Object.defineProperty(IndexedSourceMapConsumer.prototype, 'sources', { + get: function () { + var sources = []; + for (var i = 0; i < this._sections.length; i++) { + for (var j = 0; j < this._sections[i].consumer.sources.length; j++) { + sources.push(this._sections[i].consumer.sources[j]); + } + } + return sources; + } +}); + +/** + * Returns the original source, line, and column information for the generated + * source's line and column positions provided. The only argument is an object + * with the following properties: + * + * - line: The line number in the generated source. The line number + * is 1-based. + * - column: The column number in the generated source. The column + * number is 0-based. + * + * and an object is returned with the following properties: + * + * - source: The original source file, or null. + * - line: The line number in the original source, or null. The + * line number is 1-based. + * - column: The column number in the original source, or null. The + * column number is 0-based. + * - name: The original identifier, or null. + */ +IndexedSourceMapConsumer.prototype.originalPositionFor = + function IndexedSourceMapConsumer_originalPositionFor(aArgs) { + var needle = { + generatedLine: util.getArg(aArgs, 'line'), + generatedColumn: util.getArg(aArgs, 'column') + }; + + // Find the section containing the generated position we're trying to map + // to an original position. + var sectionIndex = binarySearch.search(needle, this._sections, + function(needle, section) { + var cmp = needle.generatedLine - section.generatedOffset.generatedLine; + if (cmp) { + return cmp; + } + + return (needle.generatedColumn - + section.generatedOffset.generatedColumn); + }); + var section = this._sections[sectionIndex]; + + if (!section) { + return { + source: null, + line: null, + column: null, + name: null + }; + } + + return section.consumer.originalPositionFor({ + line: needle.generatedLine - + (section.generatedOffset.generatedLine - 1), + column: needle.generatedColumn - + (section.generatedOffset.generatedLine === needle.generatedLine + ? section.generatedOffset.generatedColumn - 1 + : 0), + bias: aArgs.bias + }); + }; + +/** + * Return true if we have the source content for every source in the source + * map, false otherwise. + */ +IndexedSourceMapConsumer.prototype.hasContentsOfAllSources = + function IndexedSourceMapConsumer_hasContentsOfAllSources() { + return this._sections.every(function (s) { + return s.consumer.hasContentsOfAllSources(); + }); + }; + +/** + * Returns the original source content. The only argument is the url of the + * original source file. Returns null if no original source content is + * available. + */ +IndexedSourceMapConsumer.prototype.sourceContentFor = + function IndexedSourceMapConsumer_sourceContentFor(aSource, nullOnMissing) { + for (var i = 0; i < this._sections.length; i++) { + var section = this._sections[i]; + + var content = section.consumer.sourceContentFor(aSource, true); + if (content) { + return content; + } + } + if (nullOnMissing) { + return null; + } + else { + throw new Error('"' + aSource + '" is not in the SourceMap.'); + } + }; + +/** + * Returns the generated line and column information for the original source, + * line, and column positions provided. The only argument is an object with + * the following properties: + * + * - source: The filename of the original source. + * - line: The line number in the original source. The line number + * is 1-based. + * - column: The column number in the original source. The column + * number is 0-based. + * + * and an object is returned with the following properties: + * + * - line: The line number in the generated source, or null. The + * line number is 1-based. + * - column: The column number in the generated source, or null. + * The column number is 0-based. + */ +IndexedSourceMapConsumer.prototype.generatedPositionFor = + function IndexedSourceMapConsumer_generatedPositionFor(aArgs) { + for (var i = 0; i < this._sections.length; i++) { + var section = this._sections[i]; + + // Only consider this section if the requested source is in the list of + // sources of the consumer. + if (section.consumer._findSourceIndex(util.getArg(aArgs, 'source')) === -1) { + continue; + } + var generatedPosition = section.consumer.generatedPositionFor(aArgs); + if (generatedPosition) { + var ret = { + line: generatedPosition.line + + (section.generatedOffset.generatedLine - 1), + column: generatedPosition.column + + (section.generatedOffset.generatedLine === generatedPosition.line + ? section.generatedOffset.generatedColumn - 1 + : 0) + }; + return ret; + } + } + + return { + line: null, + column: null + }; + }; + +/** + * Parse the mappings in a string in to a data structure which we can easily + * query (the ordered arrays in the `this.__generatedMappings` and + * `this.__originalMappings` properties). + */ +IndexedSourceMapConsumer.prototype._parseMappings = + function IndexedSourceMapConsumer_parseMappings(aStr, aSourceRoot) { + this.__generatedMappings = []; + this.__originalMappings = []; + for (var i = 0; i < this._sections.length; i++) { + var section = this._sections[i]; + var sectionMappings = section.consumer._generatedMappings; + for (var j = 0; j < sectionMappings.length; j++) { + var mapping = sectionMappings[j]; + + var source = section.consumer._sources.at(mapping.source); + source = util.computeSourceURL(section.consumer.sourceRoot, source, this._sourceMapURL); + this._sources.add(source); + source = this._sources.indexOf(source); + + var name = null; + if (mapping.name) { + name = section.consumer._names.at(mapping.name); + this._names.add(name); + name = this._names.indexOf(name); + } + + // The mappings coming from the consumer for the section have + // generated positions relative to the start of the section, so we + // need to offset them to be relative to the start of the concatenated + // generated file. + var adjustedMapping = { + source: source, + generatedLine: mapping.generatedLine + + (section.generatedOffset.generatedLine - 1), + generatedColumn: mapping.generatedColumn + + (section.generatedOffset.generatedLine === mapping.generatedLine + ? section.generatedOffset.generatedColumn - 1 + : 0), + originalLine: mapping.originalLine, + originalColumn: mapping.originalColumn, + name: name + }; + + this.__generatedMappings.push(adjustedMapping); + if (typeof adjustedMapping.originalLine === 'number') { + this.__originalMappings.push(adjustedMapping); + } + } + } + + quickSort(this.__generatedMappings, util.compareByGeneratedPositionsDeflated); + quickSort(this.__originalMappings, util.compareByOriginalPositions); + }; + +exports.IndexedSourceMapConsumer = IndexedSourceMapConsumer; diff --git a/node_modules/source-map/lib/source-map-generator.js b/node_modules/source-map/lib/source-map-generator.js new file mode 100644 index 0000000..508bcfb --- /dev/null +++ b/node_modules/source-map/lib/source-map-generator.js @@ -0,0 +1,425 @@ +/* -*- Mode: js; js-indent-level: 2; -*- */ +/* + * Copyright 2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + */ + +var base64VLQ = require('./base64-vlq'); +var util = require('./util'); +var ArraySet = require('./array-set').ArraySet; +var MappingList = require('./mapping-list').MappingList; + +/** + * An instance of the SourceMapGenerator represents a source map which is + * being built incrementally. You may pass an object with the following + * properties: + * + * - file: The filename of the generated source. + * - sourceRoot: A root for all relative URLs in this source map. + */ +function SourceMapGenerator(aArgs) { + if (!aArgs) { + aArgs = {}; + } + this._file = util.getArg(aArgs, 'file', null); + this._sourceRoot = util.getArg(aArgs, 'sourceRoot', null); + this._skipValidation = util.getArg(aArgs, 'skipValidation', false); + this._sources = new ArraySet(); + this._names = new ArraySet(); + this._mappings = new MappingList(); + this._sourcesContents = null; +} + +SourceMapGenerator.prototype._version = 3; + +/** + * Creates a new SourceMapGenerator based on a SourceMapConsumer + * + * @param aSourceMapConsumer The SourceMap. + */ +SourceMapGenerator.fromSourceMap = + function SourceMapGenerator_fromSourceMap(aSourceMapConsumer) { + var sourceRoot = aSourceMapConsumer.sourceRoot; + var generator = new SourceMapGenerator({ + file: aSourceMapConsumer.file, + sourceRoot: sourceRoot + }); + aSourceMapConsumer.eachMapping(function (mapping) { + var newMapping = { + generated: { + line: mapping.generatedLine, + column: mapping.generatedColumn + } + }; + + if (mapping.source != null) { + newMapping.source = mapping.source; + if (sourceRoot != null) { + newMapping.source = util.relative(sourceRoot, newMapping.source); + } + + newMapping.original = { + line: mapping.originalLine, + column: mapping.originalColumn + }; + + if (mapping.name != null) { + newMapping.name = mapping.name; + } + } + + generator.addMapping(newMapping); + }); + aSourceMapConsumer.sources.forEach(function (sourceFile) { + var sourceRelative = sourceFile; + if (sourceRoot !== null) { + sourceRelative = util.relative(sourceRoot, sourceFile); + } + + if (!generator._sources.has(sourceRelative)) { + generator._sources.add(sourceRelative); + } + + var content = aSourceMapConsumer.sourceContentFor(sourceFile); + if (content != null) { + generator.setSourceContent(sourceFile, content); + } + }); + return generator; + }; + +/** + * Add a single mapping from original source line and column to the generated + * source's line and column for this source map being created. The mapping + * object should have the following properties: + * + * - generated: An object with the generated line and column positions. + * - original: An object with the original line and column positions. + * - source: The original source file (relative to the sourceRoot). + * - name: An optional original token name for this mapping. + */ +SourceMapGenerator.prototype.addMapping = + function SourceMapGenerator_addMapping(aArgs) { + var generated = util.getArg(aArgs, 'generated'); + var original = util.getArg(aArgs, 'original', null); + var source = util.getArg(aArgs, 'source', null); + var name = util.getArg(aArgs, 'name', null); + + if (!this._skipValidation) { + this._validateMapping(generated, original, source, name); + } + + if (source != null) { + source = String(source); + if (!this._sources.has(source)) { + this._sources.add(source); + } + } + + if (name != null) { + name = String(name); + if (!this._names.has(name)) { + this._names.add(name); + } + } + + this._mappings.add({ + generatedLine: generated.line, + generatedColumn: generated.column, + originalLine: original != null && original.line, + originalColumn: original != null && original.column, + source: source, + name: name + }); + }; + +/** + * Set the source content for a source file. + */ +SourceMapGenerator.prototype.setSourceContent = + function SourceMapGenerator_setSourceContent(aSourceFile, aSourceContent) { + var source = aSourceFile; + if (this._sourceRoot != null) { + source = util.relative(this._sourceRoot, source); + } + + if (aSourceContent != null) { + // Add the source content to the _sourcesContents map. + // Create a new _sourcesContents map if the property is null. + if (!this._sourcesContents) { + this._sourcesContents = Object.create(null); + } + this._sourcesContents[util.toSetString(source)] = aSourceContent; + } else if (this._sourcesContents) { + // Remove the source file from the _sourcesContents map. + // If the _sourcesContents map is empty, set the property to null. + delete this._sourcesContents[util.toSetString(source)]; + if (Object.keys(this._sourcesContents).length === 0) { + this._sourcesContents = null; + } + } + }; + +/** + * Applies the mappings of a sub-source-map for a specific source file to the + * source map being generated. Each mapping to the supplied source file is + * rewritten using the supplied source map. Note: The resolution for the + * resulting mappings is the minimium of this map and the supplied map. + * + * @param aSourceMapConsumer The source map to be applied. + * @param aSourceFile Optional. The filename of the source file. + * If omitted, SourceMapConsumer's file property will be used. + * @param aSourceMapPath Optional. The dirname of the path to the source map + * to be applied. If relative, it is relative to the SourceMapConsumer. + * This parameter is needed when the two source maps aren't in the same + * directory, and the source map to be applied contains relative source + * paths. If so, those relative source paths need to be rewritten + * relative to the SourceMapGenerator. + */ +SourceMapGenerator.prototype.applySourceMap = + function SourceMapGenerator_applySourceMap(aSourceMapConsumer, aSourceFile, aSourceMapPath) { + var sourceFile = aSourceFile; + // If aSourceFile is omitted, we will use the file property of the SourceMap + if (aSourceFile == null) { + if (aSourceMapConsumer.file == null) { + throw new Error( + 'SourceMapGenerator.prototype.applySourceMap requires either an explicit source file, ' + + 'or the source map\'s "file" property. Both were omitted.' + ); + } + sourceFile = aSourceMapConsumer.file; + } + var sourceRoot = this._sourceRoot; + // Make "sourceFile" relative if an absolute Url is passed. + if (sourceRoot != null) { + sourceFile = util.relative(sourceRoot, sourceFile); + } + // Applying the SourceMap can add and remove items from the sources and + // the names array. + var newSources = new ArraySet(); + var newNames = new ArraySet(); + + // Find mappings for the "sourceFile" + this._mappings.unsortedForEach(function (mapping) { + if (mapping.source === sourceFile && mapping.originalLine != null) { + // Check if it can be mapped by the source map, then update the mapping. + var original = aSourceMapConsumer.originalPositionFor({ + line: mapping.originalLine, + column: mapping.originalColumn + }); + if (original.source != null) { + // Copy mapping + mapping.source = original.source; + if (aSourceMapPath != null) { + mapping.source = util.join(aSourceMapPath, mapping.source) + } + if (sourceRoot != null) { + mapping.source = util.relative(sourceRoot, mapping.source); + } + mapping.originalLine = original.line; + mapping.originalColumn = original.column; + if (original.name != null) { + mapping.name = original.name; + } + } + } + + var source = mapping.source; + if (source != null && !newSources.has(source)) { + newSources.add(source); + } + + var name = mapping.name; + if (name != null && !newNames.has(name)) { + newNames.add(name); + } + + }, this); + this._sources = newSources; + this._names = newNames; + + // Copy sourcesContents of applied map. + aSourceMapConsumer.sources.forEach(function (sourceFile) { + var content = aSourceMapConsumer.sourceContentFor(sourceFile); + if (content != null) { + if (aSourceMapPath != null) { + sourceFile = util.join(aSourceMapPath, sourceFile); + } + if (sourceRoot != null) { + sourceFile = util.relative(sourceRoot, sourceFile); + } + this.setSourceContent(sourceFile, content); + } + }, this); + }; + +/** + * A mapping can have one of the three levels of data: + * + * 1. Just the generated position. + * 2. The Generated position, original position, and original source. + * 3. Generated and original position, original source, as well as a name + * token. + * + * To maintain consistency, we validate that any new mapping being added falls + * in to one of these categories. + */ +SourceMapGenerator.prototype._validateMapping = + function SourceMapGenerator_validateMapping(aGenerated, aOriginal, aSource, + aName) { + // When aOriginal is truthy but has empty values for .line and .column, + // it is most likely a programmer error. In this case we throw a very + // specific error message to try to guide them the right way. + // For example: https://github.com/Polymer/polymer-bundler/pull/519 + if (aOriginal && typeof aOriginal.line !== 'number' && typeof aOriginal.column !== 'number') { + throw new Error( + 'original.line and original.column are not numbers -- you probably meant to omit ' + + 'the original mapping entirely and only map the generated position. If so, pass ' + + 'null for the original mapping instead of an object with empty or null values.' + ); + } + + if (aGenerated && 'line' in aGenerated && 'column' in aGenerated + && aGenerated.line > 0 && aGenerated.column >= 0 + && !aOriginal && !aSource && !aName) { + // Case 1. + return; + } + else if (aGenerated && 'line' in aGenerated && 'column' in aGenerated + && aOriginal && 'line' in aOriginal && 'column' in aOriginal + && aGenerated.line > 0 && aGenerated.column >= 0 + && aOriginal.line > 0 && aOriginal.column >= 0 + && aSource) { + // Cases 2 and 3. + return; + } + else { + throw new Error('Invalid mapping: ' + JSON.stringify({ + generated: aGenerated, + source: aSource, + original: aOriginal, + name: aName + })); + } + }; + +/** + * Serialize the accumulated mappings in to the stream of base 64 VLQs + * specified by the source map format. + */ +SourceMapGenerator.prototype._serializeMappings = + function SourceMapGenerator_serializeMappings() { + var previousGeneratedColumn = 0; + var previousGeneratedLine = 1; + var previousOriginalColumn = 0; + var previousOriginalLine = 0; + var previousName = 0; + var previousSource = 0; + var result = ''; + var next; + var mapping; + var nameIdx; + var sourceIdx; + + var mappings = this._mappings.toArray(); + for (var i = 0, len = mappings.length; i < len; i++) { + mapping = mappings[i]; + next = '' + + if (mapping.generatedLine !== previousGeneratedLine) { + previousGeneratedColumn = 0; + while (mapping.generatedLine !== previousGeneratedLine) { + next += ';'; + previousGeneratedLine++; + } + } + else { + if (i > 0) { + if (!util.compareByGeneratedPositionsInflated(mapping, mappings[i - 1])) { + continue; + } + next += ','; + } + } + + next += base64VLQ.encode(mapping.generatedColumn + - previousGeneratedColumn); + previousGeneratedColumn = mapping.generatedColumn; + + if (mapping.source != null) { + sourceIdx = this._sources.indexOf(mapping.source); + next += base64VLQ.encode(sourceIdx - previousSource); + previousSource = sourceIdx; + + // lines are stored 0-based in SourceMap spec version 3 + next += base64VLQ.encode(mapping.originalLine - 1 + - previousOriginalLine); + previousOriginalLine = mapping.originalLine - 1; + + next += base64VLQ.encode(mapping.originalColumn + - previousOriginalColumn); + previousOriginalColumn = mapping.originalColumn; + + if (mapping.name != null) { + nameIdx = this._names.indexOf(mapping.name); + next += base64VLQ.encode(nameIdx - previousName); + previousName = nameIdx; + } + } + + result += next; + } + + return result; + }; + +SourceMapGenerator.prototype._generateSourcesContent = + function SourceMapGenerator_generateSourcesContent(aSources, aSourceRoot) { + return aSources.map(function (source) { + if (!this._sourcesContents) { + return null; + } + if (aSourceRoot != null) { + source = util.relative(aSourceRoot, source); + } + var key = util.toSetString(source); + return Object.prototype.hasOwnProperty.call(this._sourcesContents, key) + ? this._sourcesContents[key] + : null; + }, this); + }; + +/** + * Externalize the source map. + */ +SourceMapGenerator.prototype.toJSON = + function SourceMapGenerator_toJSON() { + var map = { + version: this._version, + sources: this._sources.toArray(), + names: this._names.toArray(), + mappings: this._serializeMappings() + }; + if (this._file != null) { + map.file = this._file; + } + if (this._sourceRoot != null) { + map.sourceRoot = this._sourceRoot; + } + if (this._sourcesContents) { + map.sourcesContent = this._generateSourcesContent(map.sources, map.sourceRoot); + } + + return map; + }; + +/** + * Render the source map being generated to a string. + */ +SourceMapGenerator.prototype.toString = + function SourceMapGenerator_toString() { + return JSON.stringify(this.toJSON()); + }; + +exports.SourceMapGenerator = SourceMapGenerator; diff --git a/node_modules/source-map/lib/source-node.js b/node_modules/source-map/lib/source-node.js new file mode 100644 index 0000000..8bcdbe3 --- /dev/null +++ b/node_modules/source-map/lib/source-node.js @@ -0,0 +1,413 @@ +/* -*- Mode: js; js-indent-level: 2; -*- */ +/* + * Copyright 2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + */ + +var SourceMapGenerator = require('./source-map-generator').SourceMapGenerator; +var util = require('./util'); + +// Matches a Windows-style `\r\n` newline or a `\n` newline used by all other +// operating systems these days (capturing the result). +var REGEX_NEWLINE = /(\r?\n)/; + +// Newline character code for charCodeAt() comparisons +var NEWLINE_CODE = 10; + +// Private symbol for identifying `SourceNode`s when multiple versions of +// the source-map library are loaded. This MUST NOT CHANGE across +// versions! +var isSourceNode = "$$$isSourceNode$$$"; + +/** + * SourceNodes provide a way to abstract over interpolating/concatenating + * snippets of generated JavaScript source code while maintaining the line and + * column information associated with the original source code. + * + * @param aLine The original line number. + * @param aColumn The original column number. + * @param aSource The original source's filename. + * @param aChunks Optional. An array of strings which are snippets of + * generated JS, or other SourceNodes. + * @param aName The original identifier. + */ +function SourceNode(aLine, aColumn, aSource, aChunks, aName) { + this.children = []; + this.sourceContents = {}; + this.line = aLine == null ? null : aLine; + this.column = aColumn == null ? null : aColumn; + this.source = aSource == null ? null : aSource; + this.name = aName == null ? null : aName; + this[isSourceNode] = true; + if (aChunks != null) this.add(aChunks); +} + +/** + * Creates a SourceNode from generated code and a SourceMapConsumer. + * + * @param aGeneratedCode The generated code + * @param aSourceMapConsumer The SourceMap for the generated code + * @param aRelativePath Optional. The path that relative sources in the + * SourceMapConsumer should be relative to. + */ +SourceNode.fromStringWithSourceMap = + function SourceNode_fromStringWithSourceMap(aGeneratedCode, aSourceMapConsumer, aRelativePath) { + // The SourceNode we want to fill with the generated code + // and the SourceMap + var node = new SourceNode(); + + // All even indices of this array are one line of the generated code, + // while all odd indices are the newlines between two adjacent lines + // (since `REGEX_NEWLINE` captures its match). + // Processed fragments are accessed by calling `shiftNextLine`. + var remainingLines = aGeneratedCode.split(REGEX_NEWLINE); + var remainingLinesIndex = 0; + var shiftNextLine = function() { + var lineContents = getNextLine(); + // The last line of a file might not have a newline. + var newLine = getNextLine() || ""; + return lineContents + newLine; + + function getNextLine() { + return remainingLinesIndex < remainingLines.length ? + remainingLines[remainingLinesIndex++] : undefined; + } + }; + + // We need to remember the position of "remainingLines" + var lastGeneratedLine = 1, lastGeneratedColumn = 0; + + // The generate SourceNodes we need a code range. + // To extract it current and last mapping is used. + // Here we store the last mapping. + var lastMapping = null; + + aSourceMapConsumer.eachMapping(function (mapping) { + if (lastMapping !== null) { + // We add the code from "lastMapping" to "mapping": + // First check if there is a new line in between. + if (lastGeneratedLine < mapping.generatedLine) { + // Associate first line with "lastMapping" + addMappingWithCode(lastMapping, shiftNextLine()); + lastGeneratedLine++; + lastGeneratedColumn = 0; + // The remaining code is added without mapping + } else { + // There is no new line in between. + // Associate the code between "lastGeneratedColumn" and + // "mapping.generatedColumn" with "lastMapping" + var nextLine = remainingLines[remainingLinesIndex] || ''; + var code = nextLine.substr(0, mapping.generatedColumn - + lastGeneratedColumn); + remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn - + lastGeneratedColumn); + lastGeneratedColumn = mapping.generatedColumn; + addMappingWithCode(lastMapping, code); + // No more remaining code, continue + lastMapping = mapping; + return; + } + } + // We add the generated code until the first mapping + // to the SourceNode without any mapping. + // Each line is added as separate string. + while (lastGeneratedLine < mapping.generatedLine) { + node.add(shiftNextLine()); + lastGeneratedLine++; + } + if (lastGeneratedColumn < mapping.generatedColumn) { + var nextLine = remainingLines[remainingLinesIndex] || ''; + node.add(nextLine.substr(0, mapping.generatedColumn)); + remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn); + lastGeneratedColumn = mapping.generatedColumn; + } + lastMapping = mapping; + }, this); + // We have processed all mappings. + if (remainingLinesIndex < remainingLines.length) { + if (lastMapping) { + // Associate the remaining code in the current line with "lastMapping" + addMappingWithCode(lastMapping, shiftNextLine()); + } + // and add the remaining lines without any mapping + node.add(remainingLines.splice(remainingLinesIndex).join("")); + } + + // Copy sourcesContent into SourceNode + aSourceMapConsumer.sources.forEach(function (sourceFile) { + var content = aSourceMapConsumer.sourceContentFor(sourceFile); + if (content != null) { + if (aRelativePath != null) { + sourceFile = util.join(aRelativePath, sourceFile); + } + node.setSourceContent(sourceFile, content); + } + }); + + return node; + + function addMappingWithCode(mapping, code) { + if (mapping === null || mapping.source === undefined) { + node.add(code); + } else { + var source = aRelativePath + ? util.join(aRelativePath, mapping.source) + : mapping.source; + node.add(new SourceNode(mapping.originalLine, + mapping.originalColumn, + source, + code, + mapping.name)); + } + } + }; + +/** + * Add a chunk of generated JS to this source node. + * + * @param aChunk A string snippet of generated JS code, another instance of + * SourceNode, or an array where each member is one of those things. + */ +SourceNode.prototype.add = function SourceNode_add(aChunk) { + if (Array.isArray(aChunk)) { + aChunk.forEach(function (chunk) { + this.add(chunk); + }, this); + } + else if (aChunk[isSourceNode] || typeof aChunk === "string") { + if (aChunk) { + this.children.push(aChunk); + } + } + else { + throw new TypeError( + "Expected a SourceNode, string, or an array of SourceNodes and strings. Got " + aChunk + ); + } + return this; +}; + +/** + * Add a chunk of generated JS to the beginning of this source node. + * + * @param aChunk A string snippet of generated JS code, another instance of + * SourceNode, or an array where each member is one of those things. + */ +SourceNode.prototype.prepend = function SourceNode_prepend(aChunk) { + if (Array.isArray(aChunk)) { + for (var i = aChunk.length-1; i >= 0; i--) { + this.prepend(aChunk[i]); + } + } + else if (aChunk[isSourceNode] || typeof aChunk === "string") { + this.children.unshift(aChunk); + } + else { + throw new TypeError( + "Expected a SourceNode, string, or an array of SourceNodes and strings. Got " + aChunk + ); + } + return this; +}; + +/** + * Walk over the tree of JS snippets in this node and its children. The + * walking function is called once for each snippet of JS and is passed that + * snippet and the its original associated source's line/column location. + * + * @param aFn The traversal function. + */ +SourceNode.prototype.walk = function SourceNode_walk(aFn) { + var chunk; + for (var i = 0, len = this.children.length; i < len; i++) { + chunk = this.children[i]; + if (chunk[isSourceNode]) { + chunk.walk(aFn); + } + else { + if (chunk !== '') { + aFn(chunk, { source: this.source, + line: this.line, + column: this.column, + name: this.name }); + } + } + } +}; + +/** + * Like `String.prototype.join` except for SourceNodes. Inserts `aStr` between + * each of `this.children`. + * + * @param aSep The separator. + */ +SourceNode.prototype.join = function SourceNode_join(aSep) { + var newChildren; + var i; + var len = this.children.length; + if (len > 0) { + newChildren = []; + for (i = 0; i < len-1; i++) { + newChildren.push(this.children[i]); + newChildren.push(aSep); + } + newChildren.push(this.children[i]); + this.children = newChildren; + } + return this; +}; + +/** + * Call String.prototype.replace on the very right-most source snippet. Useful + * for trimming whitespace from the end of a source node, etc. + * + * @param aPattern The pattern to replace. + * @param aReplacement The thing to replace the pattern with. + */ +SourceNode.prototype.replaceRight = function SourceNode_replaceRight(aPattern, aReplacement) { + var lastChild = this.children[this.children.length - 1]; + if (lastChild[isSourceNode]) { + lastChild.replaceRight(aPattern, aReplacement); + } + else if (typeof lastChild === 'string') { + this.children[this.children.length - 1] = lastChild.replace(aPattern, aReplacement); + } + else { + this.children.push(''.replace(aPattern, aReplacement)); + } + return this; +}; + +/** + * Set the source content for a source file. This will be added to the SourceMapGenerator + * in the sourcesContent field. + * + * @param aSourceFile The filename of the source file + * @param aSourceContent The content of the source file + */ +SourceNode.prototype.setSourceContent = + function SourceNode_setSourceContent(aSourceFile, aSourceContent) { + this.sourceContents[util.toSetString(aSourceFile)] = aSourceContent; + }; + +/** + * Walk over the tree of SourceNodes. The walking function is called for each + * source file content and is passed the filename and source content. + * + * @param aFn The traversal function. + */ +SourceNode.prototype.walkSourceContents = + function SourceNode_walkSourceContents(aFn) { + for (var i = 0, len = this.children.length; i < len; i++) { + if (this.children[i][isSourceNode]) { + this.children[i].walkSourceContents(aFn); + } + } + + var sources = Object.keys(this.sourceContents); + for (var i = 0, len = sources.length; i < len; i++) { + aFn(util.fromSetString(sources[i]), this.sourceContents[sources[i]]); + } + }; + +/** + * Return the string representation of this source node. Walks over the tree + * and concatenates all the various snippets together to one string. + */ +SourceNode.prototype.toString = function SourceNode_toString() { + var str = ""; + this.walk(function (chunk) { + str += chunk; + }); + return str; +}; + +/** + * Returns the string representation of this source node along with a source + * map. + */ +SourceNode.prototype.toStringWithSourceMap = function SourceNode_toStringWithSourceMap(aArgs) { + var generated = { + code: "", + line: 1, + column: 0 + }; + var map = new SourceMapGenerator(aArgs); + var sourceMappingActive = false; + var lastOriginalSource = null; + var lastOriginalLine = null; + var lastOriginalColumn = null; + var lastOriginalName = null; + this.walk(function (chunk, original) { + generated.code += chunk; + if (original.source !== null + && original.line !== null + && original.column !== null) { + if(lastOriginalSource !== original.source + || lastOriginalLine !== original.line + || lastOriginalColumn !== original.column + || lastOriginalName !== original.name) { + map.addMapping({ + source: original.source, + original: { + line: original.line, + column: original.column + }, + generated: { + line: generated.line, + column: generated.column + }, + name: original.name + }); + } + lastOriginalSource = original.source; + lastOriginalLine = original.line; + lastOriginalColumn = original.column; + lastOriginalName = original.name; + sourceMappingActive = true; + } else if (sourceMappingActive) { + map.addMapping({ + generated: { + line: generated.line, + column: generated.column + } + }); + lastOriginalSource = null; + sourceMappingActive = false; + } + for (var idx = 0, length = chunk.length; idx < length; idx++) { + if (chunk.charCodeAt(idx) === NEWLINE_CODE) { + generated.line++; + generated.column = 0; + // Mappings end at eol + if (idx + 1 === length) { + lastOriginalSource = null; + sourceMappingActive = false; + } else if (sourceMappingActive) { + map.addMapping({ + source: original.source, + original: { + line: original.line, + column: original.column + }, + generated: { + line: generated.line, + column: generated.column + }, + name: original.name + }); + } + } else { + generated.column++; + } + } + }); + this.walkSourceContents(function (sourceFile, sourceContent) { + map.setSourceContent(sourceFile, sourceContent); + }); + + return { code: generated.code, map: map }; +}; + +exports.SourceNode = SourceNode; diff --git a/node_modules/source-map/lib/util.js b/node_modules/source-map/lib/util.js new file mode 100644 index 0000000..3ca92e5 --- /dev/null +++ b/node_modules/source-map/lib/util.js @@ -0,0 +1,488 @@ +/* -*- Mode: js; js-indent-level: 2; -*- */ +/* + * Copyright 2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + */ + +/** + * This is a helper function for getting values from parameter/options + * objects. + * + * @param args The object we are extracting values from + * @param name The name of the property we are getting. + * @param defaultValue An optional value to return if the property is missing + * from the object. If this is not specified and the property is missing, an + * error will be thrown. + */ +function getArg(aArgs, aName, aDefaultValue) { + if (aName in aArgs) { + return aArgs[aName]; + } else if (arguments.length === 3) { + return aDefaultValue; + } else { + throw new Error('"' + aName + '" is a required argument.'); + } +} +exports.getArg = getArg; + +var urlRegexp = /^(?:([\w+\-.]+):)?\/\/(?:(\w+:\w+)@)?([\w.-]*)(?::(\d+))?(.*)$/; +var dataUrlRegexp = /^data:.+\,.+$/; + +function urlParse(aUrl) { + var match = aUrl.match(urlRegexp); + if (!match) { + return null; + } + return { + scheme: match[1], + auth: match[2], + host: match[3], + port: match[4], + path: match[5] + }; +} +exports.urlParse = urlParse; + +function urlGenerate(aParsedUrl) { + var url = ''; + if (aParsedUrl.scheme) { + url += aParsedUrl.scheme + ':'; + } + url += '//'; + if (aParsedUrl.auth) { + url += aParsedUrl.auth + '@'; + } + if (aParsedUrl.host) { + url += aParsedUrl.host; + } + if (aParsedUrl.port) { + url += ":" + aParsedUrl.port + } + if (aParsedUrl.path) { + url += aParsedUrl.path; + } + return url; +} +exports.urlGenerate = urlGenerate; + +/** + * Normalizes a path, or the path portion of a URL: + * + * - Replaces consecutive slashes with one slash. + * - Removes unnecessary '.' parts. + * - Removes unnecessary '/..' parts. + * + * Based on code in the Node.js 'path' core module. + * + * @param aPath The path or url to normalize. + */ +function normalize(aPath) { + var path = aPath; + var url = urlParse(aPath); + if (url) { + if (!url.path) { + return aPath; + } + path = url.path; + } + var isAbsolute = exports.isAbsolute(path); + + var parts = path.split(/\/+/); + for (var part, up = 0, i = parts.length - 1; i >= 0; i--) { + part = parts[i]; + if (part === '.') { + parts.splice(i, 1); + } else if (part === '..') { + up++; + } else if (up > 0) { + if (part === '') { + // The first part is blank if the path is absolute. Trying to go + // above the root is a no-op. Therefore we can remove all '..' parts + // directly after the root. + parts.splice(i + 1, up); + up = 0; + } else { + parts.splice(i, 2); + up--; + } + } + } + path = parts.join('/'); + + if (path === '') { + path = isAbsolute ? '/' : '.'; + } + + if (url) { + url.path = path; + return urlGenerate(url); + } + return path; +} +exports.normalize = normalize; + +/** + * Joins two paths/URLs. + * + * @param aRoot The root path or URL. + * @param aPath The path or URL to be joined with the root. + * + * - If aPath is a URL or a data URI, aPath is returned, unless aPath is a + * scheme-relative URL: Then the scheme of aRoot, if any, is prepended + * first. + * - Otherwise aPath is a path. If aRoot is a URL, then its path portion + * is updated with the result and aRoot is returned. Otherwise the result + * is returned. + * - If aPath is absolute, the result is aPath. + * - Otherwise the two paths are joined with a slash. + * - Joining for example 'http://' and 'www.example.com' is also supported. + */ +function join(aRoot, aPath) { + if (aRoot === "") { + aRoot = "."; + } + if (aPath === "") { + aPath = "."; + } + var aPathUrl = urlParse(aPath); + var aRootUrl = urlParse(aRoot); + if (aRootUrl) { + aRoot = aRootUrl.path || '/'; + } + + // `join(foo, '//www.example.org')` + if (aPathUrl && !aPathUrl.scheme) { + if (aRootUrl) { + aPathUrl.scheme = aRootUrl.scheme; + } + return urlGenerate(aPathUrl); + } + + if (aPathUrl || aPath.match(dataUrlRegexp)) { + return aPath; + } + + // `join('http://', 'www.example.com')` + if (aRootUrl && !aRootUrl.host && !aRootUrl.path) { + aRootUrl.host = aPath; + return urlGenerate(aRootUrl); + } + + var joined = aPath.charAt(0) === '/' + ? aPath + : normalize(aRoot.replace(/\/+$/, '') + '/' + aPath); + + if (aRootUrl) { + aRootUrl.path = joined; + return urlGenerate(aRootUrl); + } + return joined; +} +exports.join = join; + +exports.isAbsolute = function (aPath) { + return aPath.charAt(0) === '/' || urlRegexp.test(aPath); +}; + +/** + * Make a path relative to a URL or another path. + * + * @param aRoot The root path or URL. + * @param aPath The path or URL to be made relative to aRoot. + */ +function relative(aRoot, aPath) { + if (aRoot === "") { + aRoot = "."; + } + + aRoot = aRoot.replace(/\/$/, ''); + + // It is possible for the path to be above the root. In this case, simply + // checking whether the root is a prefix of the path won't work. Instead, we + // need to remove components from the root one by one, until either we find + // a prefix that fits, or we run out of components to remove. + var level = 0; + while (aPath.indexOf(aRoot + '/') !== 0) { + var index = aRoot.lastIndexOf("/"); + if (index < 0) { + return aPath; + } + + // If the only part of the root that is left is the scheme (i.e. http://, + // file:///, etc.), one or more slashes (/), or simply nothing at all, we + // have exhausted all components, so the path is not relative to the root. + aRoot = aRoot.slice(0, index); + if (aRoot.match(/^([^\/]+:\/)?\/*$/)) { + return aPath; + } + + ++level; + } + + // Make sure we add a "../" for each component we removed from the root. + return Array(level + 1).join("../") + aPath.substr(aRoot.length + 1); +} +exports.relative = relative; + +var supportsNullProto = (function () { + var obj = Object.create(null); + return !('__proto__' in obj); +}()); + +function identity (s) { + return s; +} + +/** + * Because behavior goes wacky when you set `__proto__` on objects, we + * have to prefix all the strings in our set with an arbitrary character. + * + * See https://github.com/mozilla/source-map/pull/31 and + * https://github.com/mozilla/source-map/issues/30 + * + * @param String aStr + */ +function toSetString(aStr) { + if (isProtoString(aStr)) { + return '$' + aStr; + } + + return aStr; +} +exports.toSetString = supportsNullProto ? identity : toSetString; + +function fromSetString(aStr) { + if (isProtoString(aStr)) { + return aStr.slice(1); + } + + return aStr; +} +exports.fromSetString = supportsNullProto ? identity : fromSetString; + +function isProtoString(s) { + if (!s) { + return false; + } + + var length = s.length; + + if (length < 9 /* "__proto__".length */) { + return false; + } + + if (s.charCodeAt(length - 1) !== 95 /* '_' */ || + s.charCodeAt(length - 2) !== 95 /* '_' */ || + s.charCodeAt(length - 3) !== 111 /* 'o' */ || + s.charCodeAt(length - 4) !== 116 /* 't' */ || + s.charCodeAt(length - 5) !== 111 /* 'o' */ || + s.charCodeAt(length - 6) !== 114 /* 'r' */ || + s.charCodeAt(length - 7) !== 112 /* 'p' */ || + s.charCodeAt(length - 8) !== 95 /* '_' */ || + s.charCodeAt(length - 9) !== 95 /* '_' */) { + return false; + } + + for (var i = length - 10; i >= 0; i--) { + if (s.charCodeAt(i) !== 36 /* '$' */) { + return false; + } + } + + return true; +} + +/** + * Comparator between two mappings where the original positions are compared. + * + * Optionally pass in `true` as `onlyCompareGenerated` to consider two + * mappings with the same original source/line/column, but different generated + * line and column the same. Useful when searching for a mapping with a + * stubbed out mapping. + */ +function compareByOriginalPositions(mappingA, mappingB, onlyCompareOriginal) { + var cmp = strcmp(mappingA.source, mappingB.source); + if (cmp !== 0) { + return cmp; + } + + cmp = mappingA.originalLine - mappingB.originalLine; + if (cmp !== 0) { + return cmp; + } + + cmp = mappingA.originalColumn - mappingB.originalColumn; + if (cmp !== 0 || onlyCompareOriginal) { + return cmp; + } + + cmp = mappingA.generatedColumn - mappingB.generatedColumn; + if (cmp !== 0) { + return cmp; + } + + cmp = mappingA.generatedLine - mappingB.generatedLine; + if (cmp !== 0) { + return cmp; + } + + return strcmp(mappingA.name, mappingB.name); +} +exports.compareByOriginalPositions = compareByOriginalPositions; + +/** + * Comparator between two mappings with deflated source and name indices where + * the generated positions are compared. + * + * Optionally pass in `true` as `onlyCompareGenerated` to consider two + * mappings with the same generated line and column, but different + * source/name/original line and column the same. Useful when searching for a + * mapping with a stubbed out mapping. + */ +function compareByGeneratedPositionsDeflated(mappingA, mappingB, onlyCompareGenerated) { + var cmp = mappingA.generatedLine - mappingB.generatedLine; + if (cmp !== 0) { + return cmp; + } + + cmp = mappingA.generatedColumn - mappingB.generatedColumn; + if (cmp !== 0 || onlyCompareGenerated) { + return cmp; + } + + cmp = strcmp(mappingA.source, mappingB.source); + if (cmp !== 0) { + return cmp; + } + + cmp = mappingA.originalLine - mappingB.originalLine; + if (cmp !== 0) { + return cmp; + } + + cmp = mappingA.originalColumn - mappingB.originalColumn; + if (cmp !== 0) { + return cmp; + } + + return strcmp(mappingA.name, mappingB.name); +} +exports.compareByGeneratedPositionsDeflated = compareByGeneratedPositionsDeflated; + +function strcmp(aStr1, aStr2) { + if (aStr1 === aStr2) { + return 0; + } + + if (aStr1 === null) { + return 1; // aStr2 !== null + } + + if (aStr2 === null) { + return -1; // aStr1 !== null + } + + if (aStr1 > aStr2) { + return 1; + } + + return -1; +} + +/** + * Comparator between two mappings with inflated source and name strings where + * the generated positions are compared. + */ +function compareByGeneratedPositionsInflated(mappingA, mappingB) { + var cmp = mappingA.generatedLine - mappingB.generatedLine; + if (cmp !== 0) { + return cmp; + } + + cmp = mappingA.generatedColumn - mappingB.generatedColumn; + if (cmp !== 0) { + return cmp; + } + + cmp = strcmp(mappingA.source, mappingB.source); + if (cmp !== 0) { + return cmp; + } + + cmp = mappingA.originalLine - mappingB.originalLine; + if (cmp !== 0) { + return cmp; + } + + cmp = mappingA.originalColumn - mappingB.originalColumn; + if (cmp !== 0) { + return cmp; + } + + return strcmp(mappingA.name, mappingB.name); +} +exports.compareByGeneratedPositionsInflated = compareByGeneratedPositionsInflated; + +/** + * Strip any JSON XSSI avoidance prefix from the string (as documented + * in the source maps specification), and then parse the string as + * JSON. + */ +function parseSourceMapInput(str) { + return JSON.parse(str.replace(/^\)]}'[^\n]*\n/, '')); +} +exports.parseSourceMapInput = parseSourceMapInput; + +/** + * Compute the URL of a source given the the source root, the source's + * URL, and the source map's URL. + */ +function computeSourceURL(sourceRoot, sourceURL, sourceMapURL) { + sourceURL = sourceURL || ''; + + if (sourceRoot) { + // This follows what Chrome does. + if (sourceRoot[sourceRoot.length - 1] !== '/' && sourceURL[0] !== '/') { + sourceRoot += '/'; + } + // The spec says: + // Line 4: An optional source root, useful for relocating source + // files on a server or removing repeated values in the + // “sources” entry. This value is prepended to the individual + // entries in the “source” field. + sourceURL = sourceRoot + sourceURL; + } + + // Historically, SourceMapConsumer did not take the sourceMapURL as + // a parameter. This mode is still somewhat supported, which is why + // this code block is conditional. However, it's preferable to pass + // the source map URL to SourceMapConsumer, so that this function + // can implement the source URL resolution algorithm as outlined in + // the spec. This block is basically the equivalent of: + // new URL(sourceURL, sourceMapURL).toString() + // ... except it avoids using URL, which wasn't available in the + // older releases of node still supported by this library. + // + // The spec says: + // If the sources are not absolute URLs after prepending of the + // “sourceRoot”, the sources are resolved relative to the + // SourceMap (like resolving script src in a html document). + if (sourceMapURL) { + var parsed = urlParse(sourceMapURL); + if (!parsed) { + throw new Error("sourceMapURL could not be parsed"); + } + if (parsed.path) { + // Strip the last path component, but keep the "/". + var index = parsed.path.lastIndexOf('/'); + if (index >= 0) { + parsed.path = parsed.path.substring(0, index + 1); + } + } + sourceURL = join(urlGenerate(parsed), sourceURL); + } + + return normalize(sourceURL); +} +exports.computeSourceURL = computeSourceURL; diff --git a/node_modules/source-map/package.json b/node_modules/source-map/package.json new file mode 100644 index 0000000..2466341 --- /dev/null +++ b/node_modules/source-map/package.json @@ -0,0 +1,73 @@ +{ + "name": "source-map", + "description": "Generates and consumes source maps", + "version": "0.6.1", + "homepage": "https://github.com/mozilla/source-map", + "author": "Nick Fitzgerald ", + "contributors": [ + "Tobias Koppers ", + "Duncan Beevers ", + "Stephen Crane ", + "Ryan Seddon ", + "Miles Elam ", + "Mihai Bazon ", + "Michael Ficarra ", + "Todd Wolfson ", + "Alexander Solovyov ", + "Felix Gnass ", + "Conrad Irwin ", + "usrbincc ", + "David Glasser ", + "Chase Douglas ", + "Evan Wallace ", + "Heather Arthur ", + "Hugh Kennedy ", + "David Glasser ", + "Simon Lydell ", + "Jmeas Smith ", + "Michael Z Goddard ", + "azu ", + "John Gozde ", + "Adam Kirkton ", + "Chris Montgomery ", + "J. Ryan Stinnett ", + "Jack Herrington ", + "Chris Truter ", + "Daniel Espeset ", + "Jamie Wong ", + "Eddy Bruël ", + "Hawken Rives ", + "Gilad Peleg ", + "djchie ", + "Gary Ye ", + "Nicolas Lalevée " + ], + "repository": { + "type": "git", + "url": "http://github.com/mozilla/source-map.git" + }, + "main": "./source-map.js", + "files": [ + "source-map.js", + "source-map.d.ts", + "lib/", + "dist/source-map.debug.js", + "dist/source-map.js", + "dist/source-map.min.js", + "dist/source-map.min.js.map" + ], + "engines": { + "node": ">=0.10.0" + }, + "license": "BSD-3-Clause", + "scripts": { + "test": "npm run build && node test/run-tests.js", + "build": "webpack --color", + "toc": "doctoc --title '## Table of Contents' README.md && doctoc --title '## Table of Contents' CONTRIBUTING.md" + }, + "devDependencies": { + "doctoc": "^0.15.0", + "webpack": "^1.12.0" + }, + "typings": "source-map" +} diff --git a/node_modules/source-map/source-map.d.ts b/node_modules/source-map/source-map.d.ts new file mode 100644 index 0000000..8f972b0 --- /dev/null +++ b/node_modules/source-map/source-map.d.ts @@ -0,0 +1,98 @@ +export interface StartOfSourceMap { + file?: string; + sourceRoot?: string; +} + +export interface RawSourceMap extends StartOfSourceMap { + version: string; + sources: string[]; + names: string[]; + sourcesContent?: string[]; + mappings: string; +} + +export interface Position { + line: number; + column: number; +} + +export interface LineRange extends Position { + lastColumn: number; +} + +export interface FindPosition extends Position { + // SourceMapConsumer.GREATEST_LOWER_BOUND or SourceMapConsumer.LEAST_UPPER_BOUND + bias?: number; +} + +export interface SourceFindPosition extends FindPosition { + source: string; +} + +export interface MappedPosition extends Position { + source: string; + name?: string; +} + +export interface MappingItem { + source: string; + generatedLine: number; + generatedColumn: number; + originalLine: number; + originalColumn: number; + name: string; +} + +export class SourceMapConsumer { + static GENERATED_ORDER: number; + static ORIGINAL_ORDER: number; + + static GREATEST_LOWER_BOUND: number; + static LEAST_UPPER_BOUND: number; + + constructor(rawSourceMap: RawSourceMap); + computeColumnSpans(): void; + originalPositionFor(generatedPosition: FindPosition): MappedPosition; + generatedPositionFor(originalPosition: SourceFindPosition): LineRange; + allGeneratedPositionsFor(originalPosition: MappedPosition): Position[]; + hasContentsOfAllSources(): boolean; + sourceContentFor(source: string, returnNullOnMissing?: boolean): string; + eachMapping(callback: (mapping: MappingItem) => void, context?: any, order?: number): void; +} + +export interface Mapping { + generated: Position; + original: Position; + source: string; + name?: string; +} + +export class SourceMapGenerator { + constructor(startOfSourceMap?: StartOfSourceMap); + static fromSourceMap(sourceMapConsumer: SourceMapConsumer): SourceMapGenerator; + addMapping(mapping: Mapping): void; + setSourceContent(sourceFile: string, sourceContent: string): void; + applySourceMap(sourceMapConsumer: SourceMapConsumer, sourceFile?: string, sourceMapPath?: string): void; + toString(): string; +} + +export interface CodeWithSourceMap { + code: string; + map: SourceMapGenerator; +} + +export class SourceNode { + constructor(); + constructor(line: number, column: number, source: string); + constructor(line: number, column: number, source: string, chunk?: string, name?: string); + static fromStringWithSourceMap(code: string, sourceMapConsumer: SourceMapConsumer, relativePath?: string): SourceNode; + add(chunk: string): void; + prepend(chunk: string): void; + setSourceContent(sourceFile: string, sourceContent: string): void; + walk(fn: (chunk: string, mapping: MappedPosition) => void): void; + walkSourceContents(fn: (file: string, content: string) => void): void; + join(sep: string): SourceNode; + replaceRight(pattern: string, replacement: string): SourceNode; + toString(): string; + toStringWithSourceMap(startOfSourceMap?: StartOfSourceMap): CodeWithSourceMap; +} diff --git a/node_modules/source-map/source-map.js b/node_modules/source-map/source-map.js new file mode 100644 index 0000000..bc88fe8 --- /dev/null +++ b/node_modules/source-map/source-map.js @@ -0,0 +1,8 @@ +/* + * Copyright 2009-2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE.txt or: + * http://opensource.org/licenses/BSD-3-Clause + */ +exports.SourceMapGenerator = require('./lib/source-map-generator').SourceMapGenerator; +exports.SourceMapConsumer = require('./lib/source-map-consumer').SourceMapConsumer; +exports.SourceNode = require('./lib/source-node').SourceNode; diff --git a/node_modules/strnum/.vscode/launch.json b/node_modules/strnum/.vscode/launch.json new file mode 100644 index 0000000..b87b349 --- /dev/null +++ b/node_modules/strnum/.vscode/launch.json @@ -0,0 +1,25 @@ +{ + "version": "0.2.0", + "configurations": [ + { + "type": "node", + "request": "launch", + "name": "Jasmine Tests", + "program": "${workspaceFolder}/node_modules/jasmine/bin/jasmine.js", + "args": [ + "${workspaceFolder}/spec/attr_spec.js" + ], + "internalConsoleOptions": "openOnSessionStart" + },{ + "type": "node", + "request": "launch", + "name": "Jasmine Tests current test file", + "program": "${workspaceFolder}/node_modules/jasmine/bin/jasmine.js", + "args": [ + "${file}" + ], + "internalConsoleOptions": "openOnSessionStart" + } + ] + +} \ No newline at end of file diff --git a/node_modules/strnum/LICENSE b/node_modules/strnum/LICENSE new file mode 100644 index 0000000..6450554 --- /dev/null +++ b/node_modules/strnum/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2021 Natural Intelligence + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/node_modules/strnum/README.md b/node_modules/strnum/README.md new file mode 100644 index 0000000..b698f60 --- /dev/null +++ b/node_modules/strnum/README.md @@ -0,0 +1,86 @@ +# strnum +Parse string into Number based on configuration + +```bash +npm install strnum +``` +```js +const toNumber = require("strnum"); + +toNumber(undefined) // undefined +toNumber(null)) //null +toNumber("")) // "" +toNumber("string"); //"string") +toNumber("12,12"); //"12,12") +toNumber("12 12"); //"12 12") +toNumber("12-12"); //"12-12") +toNumber("12.12.12"); //"12.12.12") +toNumber("0x2f"); //47) +toNumber("-0x2f"); //-47) +toNumber("0x2f", { hex : true}); //47) +toNumber("-0x2f", { hex : true}); //-47) +toNumber("0x2f", { hex : false}); //"0x2f") +toNumber("-0x2f", { hex : false}); //"-0x2f") +toNumber("06"); //6) +toNumber("06", { leadingZeros : true}); //6) +toNumber("06", { leadingZeros : false}); //"06") + +toNumber("006"); //6) +toNumber("006", { leadingZeros : true}); //6) +toNumber("006", { leadingZeros : false}); //"006") +toNumber("0.0"); //0) +toNumber("00.00"); //0) +toNumber("0.06"); //0.06) +toNumber("00.6"); //0.6) +toNumber(".006"); //0.006) +toNumber("6.0"); //6) +toNumber("06.0"); //6) + +toNumber("0.0", { leadingZeros : false}); //0) +toNumber("00.00", { leadingZeros : false}); //"00.00") +toNumber("0.06", { leadingZeros : false}); //0.06) +toNumber("00.6", { leadingZeros : false}); //"00.6") +toNumber(".006", { leadingZeros : false}); //0.006) +toNumber("6.0" , { leadingZeros : false}); //6) +toNumber("06.0" , { leadingZeros : false}); //"06.0") +toNumber("-06"); //-6) +toNumber("-06", { leadingZeros : true}); //-6) +toNumber("-06", { leadingZeros : false}); //"-06") + +toNumber("-0.0"); //-0) +toNumber("-00.00"); //-0) +toNumber("-0.06"); //-0.06) +toNumber("-00.6"); //-0.6) +toNumber("-.006"); //-0.006) +toNumber("-6.0"); //-6) +toNumber("-06.0"); //-6) + +toNumber("-0.0" , { leadingZeros : false}); //-0) +toNumber("-00.00", { leadingZeros : false}); //"-00.00") +toNumber("-0.06", { leadingZeros : false}); //-0.06) +toNumber("-00.6", { leadingZeros : false}); //"-00.6") +toNumber("-.006", {leadingZeros : false}); //-0.006) +toNumber("-6.0" , { leadingZeros : false}); //-6) +toNumber("-06.0" , { leadingZeros : false}); //"-06.0") +toNumber("420926189200190257681175017717") ; //4.209261892001902e+29) +toNumber("000000000000000000000000017717" , { leadingZeros : false}); //"000000000000000000000000017717") +toNumber("000000000000000000000000017717" , { leadingZeros : true}); //17717) +toNumber("01.0e2" , { leadingZeros : false}); //"01.0e2") +toNumber("-01.0e2" , { leadingZeros : false}); //"-01.0e2") +toNumber("01.0e2") ; //100) +toNumber("-01.0e2") ; //-100) +toNumber("1.0e2") ; //100) + +toNumber("-1.0e2") ; //-100) +toNumber("1.0e-2"); //0.01) + +toNumber("+1212121212"); // 1212121212 +toNumber("+1212121212", { skipLike: /\+[0-9]{10}/} )); //"+1212121212" +``` + +Supported Options +```js +hex : true, //when hexadecimal string should be parsed +leadingZeros: true, //when number with leading zeros like 08 should be parsed. 0.0 is not impacted +eNotation: true //when number with eNotation or number parsed in eNotation should be considered +``` \ No newline at end of file diff --git a/node_modules/strnum/package.json b/node_modules/strnum/package.json new file mode 100644 index 0000000..c9da3ca --- /dev/null +++ b/node_modules/strnum/package.json @@ -0,0 +1,24 @@ +{ + "name": "strnum", + "version": "1.0.5", + "description": "Parse String to Number based on configuration", + "main": "strnum.js", + "scripts": { + "test": "jasmine strnum.test.js" + }, + "keywords": [ + "string", + "number", + "parse", + "convert" + ], + "repository": { + "type": "git", + "url": "https://github.com/NaturalIntelligence/strnum" + }, + "author": "Amit Gupta (https://amitkumargupta.work/)", + "license": "MIT", + "devDependencies": { + "jasmine": "^3.10.0" + } +} diff --git a/node_modules/strnum/strnum.js b/node_modules/strnum/strnum.js new file mode 100644 index 0000000..723c08b --- /dev/null +++ b/node_modules/strnum/strnum.js @@ -0,0 +1,124 @@ +const hexRegex = /^[-+]?0x[a-fA-F0-9]+$/; +const numRegex = /^([\-\+])?(0*)(\.[0-9]+([eE]\-?[0-9]+)?|[0-9]+(\.[0-9]+([eE]\-?[0-9]+)?)?)$/; +// const octRegex = /0x[a-z0-9]+/; +// const binRegex = /0x[a-z0-9]+/; + + +//polyfill +if (!Number.parseInt && window.parseInt) { + Number.parseInt = window.parseInt; +} +if (!Number.parseFloat && window.parseFloat) { + Number.parseFloat = window.parseFloat; +} + + +const consider = { + hex : true, + leadingZeros: true, + decimalPoint: "\.", + eNotation: true + //skipLike: /regex/ +}; + +function toNumber(str, options = {}){ + // const options = Object.assign({}, consider); + // if(opt.leadingZeros === false){ + // options.leadingZeros = false; + // }else if(opt.hex === false){ + // options.hex = false; + // } + + options = Object.assign({}, consider, options ); + if(!str || typeof str !== "string" ) return str; + + let trimmedStr = str.trim(); + // if(trimmedStr === "0.0") return 0; + // else if(trimmedStr === "+0.0") return 0; + // else if(trimmedStr === "-0.0") return -0; + + if(options.skipLike !== undefined && options.skipLike.test(trimmedStr)) return str; + else if (options.hex && hexRegex.test(trimmedStr)) { + return Number.parseInt(trimmedStr, 16); + // } else if (options.parseOct && octRegex.test(str)) { + // return Number.parseInt(val, 8); + // }else if (options.parseBin && binRegex.test(str)) { + // return Number.parseInt(val, 2); + }else{ + //separate negative sign, leading zeros, and rest number + const match = numRegex.exec(trimmedStr); + if(match){ + const sign = match[1]; + const leadingZeros = match[2]; + let numTrimmedByZeros = trimZeros(match[3]); //complete num without leading zeros + //trim ending zeros for floating number + + const eNotation = match[4] || match[6]; + if(!options.leadingZeros && leadingZeros.length > 0 && sign && trimmedStr[2] !== ".") return str; //-0123 + else if(!options.leadingZeros && leadingZeros.length > 0 && !sign && trimmedStr[1] !== ".") return str; //0123 + else{//no leading zeros or leading zeros are allowed + const num = Number(trimmedStr); + const numStr = "" + num; + if(numStr.search(/[eE]/) !== -1){ //given number is long and parsed to eNotation + if(options.eNotation) return num; + else return str; + }else if(eNotation){ //given number has enotation + if(options.eNotation) return num; + else return str; + }else if(trimmedStr.indexOf(".") !== -1){ //floating number + // const decimalPart = match[5].substr(1); + // const intPart = trimmedStr.substr(0,trimmedStr.indexOf(".")); + + + // const p = numStr.indexOf("."); + // const givenIntPart = numStr.substr(0,p); + // const givenDecPart = numStr.substr(p+1); + if(numStr === "0" && (numTrimmedByZeros === "") ) return num; //0.0 + else if(numStr === numTrimmedByZeros) return num; //0.456. 0.79000 + else if( sign && numStr === "-"+numTrimmedByZeros) return num; + else return str; + } + + if(leadingZeros){ + // if(numTrimmedByZeros === numStr){ + // if(options.leadingZeros) return num; + // else return str; + // }else return str; + if(numTrimmedByZeros === numStr) return num; + else if(sign+numTrimmedByZeros === numStr) return num; + else return str; + } + + if(trimmedStr === numStr) return num; + else if(trimmedStr === sign+numStr) return num; + // else{ + // //number with +/- sign + // trimmedStr.test(/[-+][0-9]); + + // } + return str; + } + // else if(!eNotation && trimmedStr && trimmedStr !== Number(trimmedStr) ) return str; + + }else{ //non-numeric string + return str; + } + } +} + +/** + * + * @param {string} numStr without leading zeros + * @returns + */ +function trimZeros(numStr){ + if(numStr && numStr.indexOf(".") !== -1){//float + numStr = numStr.replace(/0+$/, ""); //remove ending zeros + if(numStr === ".") numStr = "0"; + else if(numStr[0] === ".") numStr = "0"+numStr; + else if(numStr[numStr.length-1] === ".") numStr = numStr.substr(0,numStr.length-1); + return numStr; + } + return numStr; +} +module.exports = toNumber diff --git a/node_modules/strnum/strnum.test.js b/node_modules/strnum/strnum.test.js new file mode 100644 index 0000000..d0b099f --- /dev/null +++ b/node_modules/strnum/strnum.test.js @@ -0,0 +1,150 @@ +const toNumber = require("./strnum"); + +describe("Should convert all the valid numeric strings to number", () => { + it("should return undefined, null, empty string, or non-numeric as it is", () => { + expect(toNumber(undefined)).not.toBeDefined(); + expect(toNumber(null)).toEqual(null); + expect(toNumber("")).toEqual(""); + expect(toNumber("string")).toEqual("string"); + }); + it("should not parse number with spaces or comma", () => { + expect(toNumber("12,12")).toEqual("12,12"); + expect(toNumber("12 12")).toEqual("12 12"); + expect(toNumber("12-12")).toEqual("12-12"); + expect(toNumber("12.12.12")).toEqual("12.12.12"); + }) + it("should consider + sign", () => { + expect(toNumber("+12")).toEqual(12); + expect(toNumber("+ 12")).toEqual("+ 12"); + expect(toNumber("12+12")).toEqual("12+12"); + expect(toNumber("1212+")).toEqual("1212+"); + }) + it("should parse hexadecimal values", () => { + expect(toNumber("0x2f")).toEqual(47); + expect(toNumber("-0x2f")).toEqual(-47); + expect(toNumber("0x2f", { hex : true})).toEqual(47); + expect(toNumber("-0x2f", { hex : true})).toEqual(-47); + expect(toNumber("0x2f", { hex : false})).toEqual("0x2f"); + expect(toNumber("-0x2f", { hex : false})).toEqual("-0x2f"); + }) + it("should not parse strings with 0x embedded", () => { + expect(toNumber("0xzz")).toEqual("0xzz"); + expect(toNumber("iweraf0x123qwerqwer")).toEqual("iweraf0x123qwerqwer"); + expect(toNumber("1230x55")).toEqual("1230x55"); + expect(toNumber("JVBERi0xLjMNCiXi48")).toEqual("JVBERi0xLjMNCiXi48"); + }) + it("leading zeros", () => { + expect(toNumber("06")).toEqual(6); + expect(toNumber("06", { leadingZeros : true})).toEqual(6); + expect(toNumber("06", { leadingZeros : false})).toEqual("06"); + + expect(toNumber("006")).toEqual(6); + expect(toNumber("006", { leadingZeros : true})).toEqual(6); + expect(toNumber("006", { leadingZeros : false})).toEqual("006"); + + expect(toNumber("000000000000000000000000017717" , { leadingZeros : false})).toEqual("000000000000000000000000017717"); + expect(toNumber("000000000000000000000000017717" , { leadingZeros : true})).toEqual(17717); + expect(toNumber("020211201030005811824") ).toEqual("020211201030005811824"); + expect(toNumber("0420926189200190257681175017717") ).toEqual(4.209261892001902e+29); + }) + it("invalid floating number", () => { + expect(toNumber("20.21.030") ).toEqual("20.21.030"); + expect(toNumber("0.21.030") ).toEqual("0.21.030"); + expect(toNumber("0.21.") ).toEqual("0.21."); + expect(toNumber("0.") ).toEqual("0."); + expect(toNumber("1.") ).toEqual("1."); + }); + it("floating point and leading zeros", () => { + expect(toNumber("0.0")).toEqual(0); + expect(toNumber("00.00")).toEqual(0); + expect(toNumber("0.06")).toEqual(0.06); + expect(toNumber("00.6")).toEqual(0.6); + expect(toNumber(".006")).toEqual(0.006); + expect(toNumber("6.0")).toEqual(6); + expect(toNumber("06.0")).toEqual(6); + + expect(toNumber("0.0", { leadingZeros : false})).toEqual(0); + expect(toNumber("00.00", { leadingZeros : false})).toEqual("00.00"); + expect(toNumber("0.06", { leadingZeros : false})).toEqual(0.06); + expect(toNumber("00.6", { leadingZeros : false})).toEqual("00.6"); + expect(toNumber(".006", { leadingZeros : false})).toEqual(0.006); + expect(toNumber("6.0" , { leadingZeros : false})).toEqual(6); + expect(toNumber("06.0" , { leadingZeros : false})).toEqual("06.0"); + }) + it("negative number leading zeros", () => { + expect(toNumber("+06")).toEqual(6); + expect(toNumber("-06")).toEqual(-6); + expect(toNumber("-06", { leadingZeros : true})).toEqual(-6); + expect(toNumber("-06", { leadingZeros : false})).toEqual("-06"); + + expect(toNumber("-0.0")).toEqual(-0); + expect(toNumber("-00.00")).toEqual(-0); + expect(toNumber("-0.06")).toEqual(-0.06); + expect(toNumber("-00.6")).toEqual(-0.6); + expect(toNumber("-.006")).toEqual(-0.006); + expect(toNumber("-6.0")).toEqual(-6); + expect(toNumber("-06.0")).toEqual(-6); + + expect(toNumber("-0.0" , { leadingZeros : false})).toEqual(-0); + expect(toNumber("-00.00", { leadingZeros : false})).toEqual("-00.00"); + expect(toNumber("-0.06", { leadingZeros : false})).toEqual(-0.06); + expect(toNumber("-00.6", { leadingZeros : false})).toEqual("-00.6"); + expect(toNumber("-.006", {leadingZeros : false})).toEqual(-0.006); + expect(toNumber("-6.0" , { leadingZeros : false})).toEqual(-6); + expect(toNumber("-06.0" , { leadingZeros : false})).toEqual("-06.0"); + }) + it("long number", () => { + expect(toNumber("020211201030005811824") ).toEqual("020211201030005811824"); + expect(toNumber("20211201030005811824") ).toEqual("20211201030005811824"); + expect(toNumber("20.211201030005811824") ).toEqual("20.211201030005811824"); + expect(toNumber("0.211201030005811824") ).toEqual("0.211201030005811824"); + }); + it("scientific notation", () => { + expect(toNumber("01.0e2" , { leadingZeros : false})).toEqual("01.0e2"); + expect(toNumber("-01.0e2" , { leadingZeros : false})).toEqual("-01.0e2"); + expect(toNumber("01.0e2") ).toEqual(100); + expect(toNumber("-01.0e2") ).toEqual(-100); + expect(toNumber("1.0e2") ).toEqual(100); + + expect(toNumber("-1.0e2") ).toEqual(-100); + expect(toNumber("1.0e-2")).toEqual(0.01); + + expect(toNumber("420926189200190257681175017717") ).toEqual(4.209261892001902e+29); + expect(toNumber("420926189200190257681175017717" , { eNotation: false} )).toEqual("420926189200190257681175017717"); + + }); + + it("scientific notation with upper E", () => { + expect(toNumber("01.0E2" , { leadingZeros : false})).toEqual("01.0E2"); + expect(toNumber("-01.0E2" , { leadingZeros : false})).toEqual("-01.0E2"); + expect(toNumber("01.0E2") ).toEqual(100); + expect(toNumber("-01.0E2") ).toEqual(-100); + expect(toNumber("1.0E2") ).toEqual(100); + + expect(toNumber("-1.0E2") ).toEqual(-100); + expect(toNumber("1.0E-2")).toEqual(0.01); + }); + + it("should skip matching pattern", () => { + expect(toNumber("+12", { skipLike: /\+[0-9]{10}/} )).toEqual(12); + expect(toNumber("12+12", { skipLike: /\+[0-9]{10}/} )).toEqual("12+12"); + expect(toNumber("12+1212121212", { skipLike: /\+[0-9]{10}/} )).toEqual("12+1212121212"); + expect(toNumber("+1212121212") ).toEqual(1212121212); + expect(toNumber("+1212121212", { skipLike: /\+[0-9]{10}/} )).toEqual("+1212121212"); + }) + it("should not change string if not number", () => { + expect(toNumber("+12 12")).toEqual("+12 12"); + expect(toNumber(" +12 12 ")).toEqual(" +12 12 "); + }) + it("should ignore sorrounded spaces ", () => { + expect(toNumber(" +1212 ")).toEqual(1212); + }) + + it("negative numbers", () => { + expect(toNumber("+1212")).toEqual(1212); + expect(toNumber("+12.12")).toEqual(12.12); + expect(toNumber("-12.12")).toEqual(-12.12); + expect(toNumber("-012.12")).toEqual(-12.12); + expect(toNumber("-012.12")).toEqual(-12.12); + }) +}); diff --git a/node_modules/tr46/.npmignore b/node_modules/tr46/.npmignore new file mode 100644 index 0000000..96e9161 --- /dev/null +++ b/node_modules/tr46/.npmignore @@ -0,0 +1,4 @@ +scripts/ +test/ + +!lib/mapping_table.json diff --git a/node_modules/tr46/index.js b/node_modules/tr46/index.js new file mode 100644 index 0000000..9ce12ca --- /dev/null +++ b/node_modules/tr46/index.js @@ -0,0 +1,193 @@ +"use strict"; + +var punycode = require("punycode"); +var mappingTable = require("./lib/mappingTable.json"); + +var PROCESSING_OPTIONS = { + TRANSITIONAL: 0, + NONTRANSITIONAL: 1 +}; + +function normalize(str) { // fix bug in v8 + return str.split('\u0000').map(function (s) { return s.normalize('NFC'); }).join('\u0000'); +} + +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; + } + } + + return null; +} + +var regexAstralSymbols = /[\uD800-\uDBFF][\uDC00-\uDFFF]/g; + +function countSymbols(string) { + return string + // replace every surrogate pair with a BMP symbol + .replace(regexAstralSymbols, '_') + // then get the length + .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); + break; + } + } + + return { + string: processed, + error: hasError + }; +} + +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; + } + } + + return { + label: label, + error: error + }; +} + +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; + } + } + + return { + string: labels.join("."), + error: result.error + }; +} + +module.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; + } + }); + + 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; + } + } + } + + if (result.error) return null; + return labels.join("."); +}; + +module.exports.toUnicode = function(domain_name, useSTD3) { + var result = processing(domain_name, useSTD3, PROCESSING_OPTIONS.NONTRANSITIONAL); + + return { + domain: result.string, + error: result.error + }; +}; + +module.exports.PROCESSING_OPTIONS = PROCESSING_OPTIONS; diff --git a/node_modules/tr46/lib/.gitkeep b/node_modules/tr46/lib/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/node_modules/tr46/lib/mappingTable.json b/node_modules/tr46/lib/mappingTable.json new file mode 100644 index 0000000..89cf19a --- /dev/null +++ b/node_modules/tr46/lib/mappingTable.json @@ -0,0 +1 @@ +[[[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"],[[1000,1000],"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,6000],"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]],[[8000,8005],"valid"],[[8006,8007],"disallowed"],[[8008,8008],"mapped",[8000]],[[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,9000],"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",[30000]],[[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]],[[13000,13000],"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"],[[43000,43000],"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]],[[64000,64000],"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"],[[66000,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]],[[120000,120000],"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"],[[128000,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",[23000]],[[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",[149000]],[[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",[32000]],[[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]],[[195000,195000],"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",[40000]],[[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"],[[918000,983037],"disallowed"],[[983038,983039],"disallowed"],[[983040,1048573],"disallowed"],[[1048574,1048575],"disallowed"],[[1048576,1114109],"disallowed"],[[1114110,1114111],"disallowed"]] \ No newline at end of file diff --git a/node_modules/tr46/package.json b/node_modules/tr46/package.json new file mode 100644 index 0000000..b6826da --- /dev/null +++ b/node_modules/tr46/package.json @@ -0,0 +1,31 @@ +{ + "name": "tr46", + "version": "0.0.3", + "description": "An implementation of the Unicode TR46 spec", + "main": "index.js", + "scripts": { + "test": "mocha", + "pretest": "node scripts/getLatestUnicodeTests.js", + "prepublish": "node scripts/generateMappingTable.js" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/Sebmaster/tr46.js.git" + }, + "keywords": [ + "unicode", + "tr46", + "url", + "whatwg" + ], + "author": "Sebastian Mayr ", + "license": "MIT", + "bugs": { + "url": "https://github.com/Sebmaster/tr46.js/issues" + }, + "homepage": "https://github.com/Sebmaster/tr46.js#readme", + "devDependencies": { + "mocha": "^2.2.5", + "request": "^2.57.0" + } +} diff --git a/node_modules/tsx/LICENSE b/node_modules/tsx/LICENSE new file mode 100644 index 0000000..bf183d2 --- /dev/null +++ b/node_modules/tsx/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) Hiroki Osame + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. \ No newline at end of file diff --git a/node_modules/tsx/README.md b/node_modules/tsx/README.md new file mode 100644 index 0000000..9d62fd1 --- /dev/null +++ b/node_modules/tsx/README.md @@ -0,0 +1,244 @@ +# tsx + +> _TypeScript Execute (`tsx`)_: Node.js enhanced with [esbuild](https://esbuild.github.io/) to run TypeScript & ESM files + +### Features +- Blazing fast on-demand TypeScript & ESM compilation +- Works in both [CommonJS and ESM packages](https://nodejs.org/api/packages.html#type) +- Supports next-gen TypeScript extensions (`.cts` & `.mts`) +- Supports `node:` import prefixes +- Hides experimental feature warnings +- TypeScript REPL +- Resolves `tsconfig.json` [`paths`](https://www.typescriptlang.org/tsconfig#paths) +- Tested on Linux & Windows with Node.js v12~18 + +Support this project by ⭐️ starring and sharing it. [Follow me](https://github.com/privatenumber) to see what other cool projects I'm working on! ❤️ + +## About +`tsx` is a CLI command (alternative to `node`) for seamlessly running TypeScript & ESM, in both `commonjs` & `module` package types. + +It's powered by [esbuild](https://esbuild.github.io/) so it's insanely fast. + +Want to just run TypeScript code? Try tsx: + +```sh +npx tsx ./script.ts +``` + +How does it compare to [ts-node](https://github.com/TypeStrong/ts-node)? Checkout the [comparison](https://github.com/privatenumber/ts-runtime-comparison). + + +## Install + +### Local installation +If you're using it in an npm project, install it as a development dependency: +```sh +npm install --save-dev tsx +``` + +You can reference it directly in the `package.json#scripts` object: +```json5 +{ + "scripts": { + "dev": "tsx ..." + } +} +``` + +To use the binary, you can call it with [`npx`](https://docs.npmjs.com/cli/v8/commands/npx) while in the project directory: + +```sh +npx tsx ... +``` + +### Global installation + +If you want to use it in any arbitrary project without [`npx`](https://docs.npmjs.com/cli/v8/commands/npx), install it globally: + +```sh +npm install --global tsx +``` + +Then, you can call `tsx` directly: + +```sh +tsx ... +``` + +## Usage + +`tsx` is designed to be a drop-in replacement for `node`, so you can use it just the way you would use Node.js. All command-line arguments (with the exception of a few) are propagated to Node.js. + + +### Run TypeScript / ESM / CJS module + +Pass in a file to run: + +```sh +tsx ./file.ts +``` + +#### Custom `tsconfig.json` path +By default, `tsconfig.json` will be detected from the current working directory. + +To set a custom path, use the `--tsconfig` flag: + +```sh +tsx --tsconfig ./path/to/tsconfig.custom.json ./file.ts +``` + +Alternatively, use the `ESBK_TSCONFIG_PATH` environment variable: + +```sh +ESBK_TSCONFIG_PATH=./path/to/tsconfig.custom.json tsx ./file.ts +``` + +### Watch mode +Run file and automatically rerun on changes: + +```sh +tsx watch ./file.ts +``` + +All imported files are watched except from the following directories: +`node_modules`, `bower_components`, `vendor`, `dist`, and `.*` (hidden directories). + +#### Ignore files from watch + +To exclude files from being watched, pass in a path or glob to the `--ignore` flag: +```sh +tsx watch --ignore ./ignore-me.js --ignore ./ignore-me-too.js ./file.ts +``` + +#### Tips +- Press Return to manually rerun +- Pass in `--clear-screen=false` to disable clearing the screen on rerun + +### REPL +Start a TypeScript REPL by running with no arguments: + +```sh +tsx +``` + +### Cache +Modules transformations are cached in the system cache directory ([`TMPDIR`](https://en.wikipedia.org/wiki/TMPDIR)). Transforms are cached by content hash, so duplicate dependencies are not re-transformed. + +Set the `--no-cache` flag to disable the cache: + +```sh +tsx --no-cache ./file.ts +``` + +### Node.js Loader + +`tsx` is a standalone binary designed to be used in place of `node`, but sometimes you'll want to use `node` directly. For example, when adding TypeScript & ESM support to npm-installed binaries. + +To use `tsx` as a Node.js loader, simply pass it in to the [`--loader`](https://nodejs.org/api/esm.html#loaders) flag. + +> Note: The loader is limited to adding support for loading TypeScript/ESM files. CLI features such as _watch mode_ or suppressing "experimental feature" warnings will not be available. + +```sh +# As a CLI flag +node --loader tsx ./file.ts + +# As an environment variable +NODE_OPTIONS='--loader tsx' node ./file.ts +``` + +> Tip: In rare circumstances, you might be limited to using the [`-r, --require`](https://nodejs.org/api/cli.html#-r---require-module) flag. +> +> You can use [`@esbuild-kit/cjs-loader`](https://github.com/esbuild-kit/cjs-loader), but transformations will only be applied to `require()` (not `import`). + + +### Hashbang + +If you prefer to write scripts that doesn't need to be passed into tsx, you can declare it in the [hashbang](https://bash.cyberciti.biz/guide/Shebang). + +Simply add `#!/usr/bin/env tsx` at the top of your file: + +_file.ts_ +```ts +#!/usr/bin/env tsx + +console.log('argv:', process.argv.slice(2)) +``` + +And make the file executable: +```sh +chmod +x ./file.ts +``` + +Now, you can run the file without passing it into tsx: +```sh +$ ./file.ts hello +argv: [ 'hello' ] +``` + +## Dependencies + +#### [@esbuild-kit/esm-loader](https://github.com/esbuild-kit/esm-loader) +Node.js Loader to transform TypeScript to ESM. + +#### [@esbuild-kit/cjs-loader](https://github.com/esbuild-kit/cjs-loader) +Node.js `require()` hook to transform TypeScript & ESM to CommonJS. + + +## FAQ + +### Why is it named `tsx`? + +`tsx` stands for "TypeScript execute". Mirroring [`npx`](https://docs.npmjs.com/cli/v8/commands/npx), which stands for "Node.js package execute". + +The 3-character package name offers an elegant developer experience, allowing usage like: `npx tsx ...`. + +Unfortunately, it overlaps with React's [TSX/JSX](https://www.typescriptlang.org/docs/handbook/jsx.html), which stands for "TypeScript XML". + +### Does it do type-checking? + +No, [esbuild does not support type checking](https://esbuild.github.io/faq/#:~:text=TypeScript%20type%20checking%20(just%20run%20tsc%20separately)). + +It's recommended to run TypeScript separately as a command (`tsc --noEmit`) or via [IDE IntelliSense](https://code.visualstudio.com/docs/languages/typescript). + + +### How is `tsx` different from [`ts-node`](https://github.com/TypeStrong/ts-node)? + +They're both tools to run TypeScript files. But tsx does a lot more to improve the experience of using Node.js. + +tsx _just works_. It's zero-config and doesn't require `tsconfig.json` to get started, making it easy for users that just want to run TypeScript code and not get caught up in the configuration. + +It's a single binary with no peer-dependencies (e.g. TypeScript or esbuild), so there is no setup necessary, enabling usage that is elegant and frictionless for first-time users: + +``` +npx tsx ./script.ts +``` + +tsx is zero-config because it has smart detections built in. As a runtime, it detects what's imported to make many options in `tsconfig.json` redundant—which was designed for compiling matching files regardless of whether they're imported. + +It seamlessly adapts between CommonJS and ESM package types by detecting how modules are loaded (`require()` or `import`) to determine how to compile them. It even adds support for `require()`ing ESM modules from CommonJS so you don't have to worry about your dependencies as the ecosystem migrates to ESM. + +[Newer and unsupported syntax](https://esbuild.github.io/content-types/) & features like [importing `node:` prefixes](https://2ality.com/2021/12/node-protocol-imports.html) are downgraded by detecting the Node.js version. For large TypeScript codebases, it has [`tsconfig.json paths`](https://www.typescriptlang.org/tsconfig#paths) aliasing support out of the box. + +At the core, tsx is powered by esbuild for [blazing fast TypeScript compilation](https://esbuild.github.io/faq/#:~:text=typescript%20benchmark), whereas `ts-node` (by default) uses the TypeScript compiler. Because esbuild doesn't type check, `tsx` is similar to `ts-node --esm --swc` (which uses the [SWC compiler](https://github.com/TypeStrong/ts-node#swc-1)). + +As a bonus, tsx also comes with a watcher to speed up your development. + +[Here's an exhaustive technical comparison](https://github.com/privatenumber/ts-runtime-comparison) between `tsx`, `ts-node`, and other runtimes. + +### Can it use esbuild plugins? + +No. tsx uses esbuild's [Transform API](https://esbuild.github.io/api/#transform-api), which doesn't support plugins. + +### Does it have a configuration file? + +No. tsx's integration with Node.js is designed to be seamless so there is no configuration. + +### Does it have any limitations? + +Transformations are handled by esbuild, so it shares the same limitations such as: + +- Compatibility with code executed via `eval()` is not preserved +- Only [certain `tsconfig.json` properties](https://esbuild.github.io/content-types/#tsconfig-json) are supported +- [`emitDecoratorMetadata`](https://www.typescriptlang.org/tsconfig#emitDecoratorMetadata) is not supported + +For details, refer to esbuild's [JavaScript caveats](https://esbuild.github.io/content-types/#javascript-caveats) and [TypeScript caveats](https://esbuild.github.io/content-types/#typescript-caveats) documentation. diff --git a/node_modules/tsx/dist/cl.cjs b/node_modules/tsx/dist/cl.cjs new file mode 100755 index 0000000..55e607a --- /dev/null +++ b/node_modules/tsx/dist/cl.cjs @@ -0,0 +1,54 @@ +"use strict";var br=require("tty"),vr=require("./package-421ee107.cjs"),ot=require("./pkgroll_create-require-bd710b03.cjs"),gu=require("url"),Br=require("child_process"),Sr=require("path"),$r=require("fs"),_u=require("os"),Tr=require("events"),xr=require("util"),Or=require("stream");require("module");function se(t){return t&&typeof t=="object"&&"default"in t?t:{default:t}}var Nr=se(br),Hr=se(Br),K=se(Sr),De=se($r),mu=se(_u),Pr=se(Tr),me=se(xr),Lr=se(Or);const Ir="known-flag",kr="unknown-flag",Mr="argument",{stringify:Ae}=JSON,Wr=/\B([A-Z])/g,Gr=t=>t.replace(Wr,"-$1").toLowerCase(),{hasOwnProperty:jr}=Object.prototype,ye=(t,e)=>jr.call(t,e),Ur=t=>Array.isArray(t),Au=t=>typeof t=="function"?[t,!1]:Ur(t)?[t[0],!0]:Au(t.type),Kr=(t,e)=>t===Boolean?e!=="false":e,Vr=(t,e)=>typeof e=="boolean"?e:t===Number&&e===""?Number.NaN:t(e),zr=/[\s.:=]/,Yr=t=>{const e=`Flag name ${Ae(t)}`;if(t.length===0)throw new Error(`${e} cannot be empty`);if(t.length===1)throw new Error(`${e} must be longer than a character`);const u=t.match(zr);if(u)throw new Error(`${e} cannot contain ${Ae(u==null?void 0:u[0])}`)},qr=t=>{const e={},u=(n,r)=>{if(ye(e,n))throw new Error(`Duplicate flags named ${Ae(n)}`);e[n]=r};for(const n in t){if(!ye(t,n))continue;Yr(n);const r=t[n],s=[[],...Au(r),r];u(n,s);const i=Gr(n);if(n!==i&&u(i,s),"alias"in r&&typeof r.alias=="string"){const{alias:D}=r,o=`Flag alias ${Ae(D)} for flag ${Ae(n)}`;if(D.length===0)throw new Error(`${o} cannot be empty`);if(D.length>1)throw new Error(`${o} must be a single character`);u(D,s)}}return e},Xr=(t,e)=>{const u={};for(const n in t){if(!ye(t,n))continue;const[r,,s,i]=e[n];if(r.length===0&&"default"in i){let{default:D}=i;typeof D=="function"&&(D=D()),u[n]=D}else u[n]=s?r:r.pop()}return u},Ie="--",Qr=/[.:=]/,Zr=/^-{1,2}\w/,Jr=t=>{if(!Zr.test(t))return;const e=!t.startsWith(Ie);let u=t.slice(e?1:2),n;const r=u.match(Qr);if(r){const{index:s}=r;n=u.slice(s+1),u=u.slice(0,s)}return[u,n,e]},es=(t,{onFlag:e,onArgument:u})=>{let n;const r=(s,i)=>{if(typeof n!="function")return!0;n(s,i),n=void 0};for(let s=0;s{for(const[u,n,r]of e.reverse()){if(n){const s=t[u];let i=s.slice(0,n);if(r||(i+=s.slice(n+1)),i!=="-"){t[u]=i;continue}}t.splice(u,1)}},yu=(t,e=process.argv.slice(2),{ignore:u}={})=>{const n=[],r=qr(t),s={},i=[];return i[Ie]=[],es(e,{onFlag(D,o,a){const c=ye(r,D);if(!(u!=null&&u(c?Ir:kr,D,o))){if(c){const[f,l]=r[D],p=Kr(l,o),C=(F,A)=>{n.push(a),A&&n.push(A),f.push(Vr(l,F||""))};return p===void 0?C:C(p)}ye(s,D)||(s[D]=[]),s[D].push(o===void 0?!0:o),n.push(a)}},onArgument(D,o,a){u!=null&&u(Mr,e[o[0]])||(i.push(...D),a?(i[Ie]=D,e.splice(o[0])):n.push(o))}}),ts(e,n),{flags:Xr(t,r),unknownFlags:s,_:i}};var us=Object.create,ke=Object.defineProperty,ns=Object.defineProperties,rs=Object.getOwnPropertyDescriptor,ss=Object.getOwnPropertyDescriptors,is=Object.getOwnPropertyNames,wu=Object.getOwnPropertySymbols,Ds=Object.getPrototypeOf,Ru=Object.prototype.hasOwnProperty,os=Object.prototype.propertyIsEnumerable,bu=(t,e,u)=>e in t?ke(t,e,{enumerable:!0,configurable:!0,writable:!0,value:u}):t[e]=u,Me=(t,e)=>{for(var u in e||(e={}))Ru.call(e,u)&&bu(t,u,e[u]);if(wu)for(var u of wu(e))os.call(e,u)&&bu(t,u,e[u]);return t},at=(t,e)=>ns(t,ss(e)),as=t=>ke(t,"__esModule",{value:!0}),ls=(t,e)=>()=>(t&&(e=t(t=0)),e),cs=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),fs=(t,e,u,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of is(e))!Ru.call(t,r)&&(u||r!=="default")&&ke(t,r,{get:()=>e[r],enumerable:!(n=rs(e,r))||n.enumerable});return t},hs=(t,e)=>fs(as(ke(t!=null?us(Ds(t)):{},"default",!e&&t&&t.__esModule?{get:()=>t.default,enumerable:!0}:{value:t,enumerable:!0})),t),U=ls(()=>{}),ds=cs((t,e)=>{U(),e.exports=function(){return/\uD83C\uDFF4\uDB40\uDC67\uDB40\uDC62(?:\uDB40\uDC77\uDB40\uDC6C\uDB40\uDC73|\uDB40\uDC73\uDB40\uDC63\uDB40\uDC74|\uDB40\uDC65\uDB40\uDC6E\uDB40\uDC67)\uDB40\uDC7F|(?:\uD83E\uDDD1\uD83C\uDFFF\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB-\uDFFE])|(?:\uD83E\uDDD1\uD83C\uDFFE\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB-\uDFFD\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFD\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFC\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB\uDFFD-\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFB\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFC-\uDFFF])|\uD83D\uDC68(?:\uD83C\uDFFB(?:\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF]))|\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFC-\uDFFF])|[\u2695\u2696\u2708]\uFE0F|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))?|(?:\uD83C[\uDFFC-\uDFFF])\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF]))|\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83D\uDC68|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFE])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])\uFE0F|\u200D(?:(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D[\uDC66\uDC67])|\uD83D[\uDC66\uDC67])|\uD83C\uDFFF|\uD83C\uDFFE|\uD83C\uDFFD|\uD83C\uDFFC)?|(?:\uD83D\uDC69(?:\uD83C\uDFFB\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|(?:\uD83C[\uDFFC-\uDFFF])\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69]))|\uD83E\uDDD1(?:\uD83C[\uDFFB-\uDFFF])\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1)(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC69(?:\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFB\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))|\uD83E\uDDD1(?:\u200D(?:\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFB\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))|\uD83D\uDC69\u200D\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D[\uDC66\uDC67])|\uD83D\uDC69\u200D\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|(?:\uD83D\uDC41\uFE0F\u200D\uD83D\uDDE8|\uD83E\uDDD1(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|\uD83D\uDC69(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|\uD83D\uDE36\u200D\uD83C\uDF2B|\uD83C\uDFF3\uFE0F\u200D\u26A7|\uD83D\uDC3B\u200D\u2744|(?:(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF])\u200D[\u2640\u2642]|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|\uD83C\uDFF4\u200D\u2620|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD])\u200D[\u2640\u2642]|[\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u2328\u23CF\u23ED-\u23EF\u23F1\u23F2\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB\u25FC\u2600-\u2604\u260E\u2611\u2618\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u2692\u2694-\u2697\u2699\u269B\u269C\u26A0\u26A7\u26B0\u26B1\u26C8\u26CF\u26D1\u26D3\u26E9\u26F0\u26F1\u26F4\u26F7\u26F8\u2702\u2708\u2709\u270F\u2712\u2714\u2716\u271D\u2721\u2733\u2734\u2744\u2747\u2763\u27A1\u2934\u2935\u2B05-\u2B07\u3030\u303D\u3297\u3299]|\uD83C[\uDD70\uDD71\uDD7E\uDD7F\uDE02\uDE37\uDF21\uDF24-\uDF2C\uDF36\uDF7D\uDF96\uDF97\uDF99-\uDF9B\uDF9E\uDF9F\uDFCD\uDFCE\uDFD4-\uDFDF\uDFF5\uDFF7]|\uD83D[\uDC3F\uDCFD\uDD49\uDD4A\uDD6F\uDD70\uDD73\uDD76-\uDD79\uDD87\uDD8A-\uDD8D\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA\uDECB\uDECD-\uDECF\uDEE0-\uDEE5\uDEE9\uDEF0\uDEF3])\uFE0F|\uD83C\uDFF3\uFE0F\u200D\uD83C\uDF08|\uD83D\uDC69\u200D\uD83D\uDC67|\uD83D\uDC69\u200D\uD83D\uDC66|\uD83D\uDE35\u200D\uD83D\uDCAB|\uD83D\uDE2E\u200D\uD83D\uDCA8|\uD83D\uDC15\u200D\uD83E\uDDBA|\uD83E\uDDD1(?:\uD83C\uDFFF|\uD83C\uDFFE|\uD83C\uDFFD|\uD83C\uDFFC|\uD83C\uDFFB)?|\uD83D\uDC69(?:\uD83C\uDFFF|\uD83C\uDFFE|\uD83C\uDFFD|\uD83C\uDFFC|\uD83C\uDFFB)?|\uD83C\uDDFD\uD83C\uDDF0|\uD83C\uDDF6\uD83C\uDDE6|\uD83C\uDDF4\uD83C\uDDF2|\uD83D\uDC08\u200D\u2B1B|\u2764\uFE0F\u200D(?:\uD83D\uDD25|\uD83E\uDE79)|\uD83D\uDC41\uFE0F|\uD83C\uDFF3\uFE0F|\uD83C\uDDFF(?:\uD83C[\uDDE6\uDDF2\uDDFC])|\uD83C\uDDFE(?:\uD83C[\uDDEA\uDDF9])|\uD83C\uDDFC(?:\uD83C[\uDDEB\uDDF8])|\uD83C\uDDFB(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA])|\uD83C\uDDFA(?:\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF])|\uD83C\uDDF9(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF])|\uD83C\uDDF8(?:\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF])|\uD83C\uDDF7(?:\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC])|\uD83C\uDDF5(?:\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE])|\uD83C\uDDF3(?:\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF])|\uD83C\uDDF2(?:\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF])|\uD83C\uDDF1(?:\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE])|\uD83C\uDDF0(?:\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF])|\uD83C\uDDEF(?:\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5])|\uD83C\uDDEE(?:\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9])|\uD83C\uDDED(?:\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA])|\uD83C\uDDEC(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE])|\uD83C\uDDEB(?:\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7])|\uD83C\uDDEA(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA])|\uD83C\uDDE9(?:\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF])|\uD83C\uDDE8(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF5\uDDF7\uDDFA-\uDDFF])|\uD83C\uDDE7(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF])|\uD83C\uDDE6(?:\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF])|[#\*0-9]\uFE0F\u20E3|\u2764\uFE0F|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])|\uD83C\uDFF4|(?:[\u270A\u270B]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDC8F\uDC91\uDCAA\uDD7A\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD0C\uDD0F\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5])(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u261D\u270C\u270D]|\uD83D[\uDD74\uDD90])(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])|[\u270A\u270B]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\uDC08\uDC15\uDC3B\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDC8F\uDC91\uDCAA\uDD7A\uDD95\uDD96\uDE2E\uDE35\uDE36\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD0C\uDD0F\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5]|\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD]|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF]|[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF84\uDF86-\uDF93\uDFA0-\uDFC1\uDFC5\uDFC6\uDFC8\uDFC9\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC07\uDC09-\uDC14\uDC16-\uDC3A\uDC3C-\uDC3E\uDC40\uDC44\uDC45\uDC51-\uDC65\uDC6A\uDC79-\uDC7B\uDC7D-\uDC80\uDC84\uDC88-\uDC8E\uDC90\uDC92-\uDCA9\uDCAB-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDDA4\uDDFB-\uDE2D\uDE2F-\uDE34\uDE37-\uDE44\uDE48-\uDE4A\uDE80-\uDEA2\uDEA4-\uDEB3\uDEB7-\uDEBF\uDEC1-\uDEC5\uDED0-\uDED2\uDED5-\uDED7\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0D\uDD0E\uDD10-\uDD17\uDD1D\uDD20-\uDD25\uDD27-\uDD2F\uDD3A\uDD3F-\uDD45\uDD47-\uDD76\uDD78\uDD7A-\uDDB4\uDDB7\uDDBA\uDDBC-\uDDCB\uDDD0\uDDE0-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6]|(?:[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u270A\u270B\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF93\uDFA0-\uDFCA\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF4\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC3E\uDC40\uDC42-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDD7A\uDD95\uDD96\uDDA4\uDDFB-\uDE4F\uDE80-\uDEC5\uDECC\uDED0-\uDED2\uDED5-\uDED7\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0C-\uDD3A\uDD3C-\uDD45\uDD47-\uDD78\uDD7A-\uDDCB\uDDCD-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6])|(?:[#\*0-9\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23E9-\u23F3\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB-\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u261D\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692-\u2697\u2699\u269B\u269C\u26A0\u26A1\u26A7\u26AA\u26AB\u26B0\u26B1\u26BD\u26BE\u26C4\u26C5\u26C8\u26CE\u26CF\u26D1\u26D3\u26D4\u26E9\u26EA\u26F0-\u26F5\u26F7-\u26FA\u26FD\u2702\u2705\u2708-\u270D\u270F\u2712\u2714\u2716\u271D\u2721\u2728\u2733\u2734\u2744\u2747\u274C\u274E\u2753-\u2755\u2757\u2763\u2764\u2795-\u2797\u27A1\u27B0\u27BF\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B50\u2B55\u3030\u303D\u3297\u3299]|\uD83C[\uDC04\uDCCF\uDD70\uDD71\uDD7E\uDD7F\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE02\uDE1A\uDE2F\uDE32-\uDE3A\uDE50\uDE51\uDF00-\uDF21\uDF24-\uDF93\uDF96\uDF97\uDF99-\uDF9B\uDF9E-\uDFF0\uDFF3-\uDFF5\uDFF7-\uDFFF]|\uD83D[\uDC00-\uDCFD\uDCFF-\uDD3D\uDD49-\uDD4E\uDD50-\uDD67\uDD6F\uDD70\uDD73-\uDD7A\uDD87\uDD8A-\uDD8D\uDD90\uDD95\uDD96\uDDA4\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA-\uDE4F\uDE80-\uDEC5\uDECB-\uDED2\uDED5-\uDED7\uDEE0-\uDEE5\uDEE9\uDEEB\uDEEC\uDEF0\uDEF3-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0C-\uDD3A\uDD3C-\uDD45\uDD47-\uDD78\uDD7A-\uDDCB\uDDCD-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6])\uFE0F|(?:[\u261D\u26F9\u270A-\u270D]|\uD83C[\uDF85\uDFC2-\uDFC4\uDFC7\uDFCA-\uDFCC]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66-\uDC78\uDC7C\uDC81-\uDC83\uDC85-\uDC87\uDC8F\uDC91\uDCAA\uDD74\uDD75\uDD7A\uDD90\uDD95\uDD96\uDE45-\uDE47\uDE4B-\uDE4F\uDEA3\uDEB4-\uDEB6\uDEC0\uDECC]|\uD83E[\uDD0C\uDD0F\uDD18-\uDD1F\uDD26\uDD30-\uDD39\uDD3C-\uDD3E\uDD77\uDDB5\uDDB6\uDDB8\uDDB9\uDDBB\uDDCD-\uDDCF\uDDD1-\uDDDD])/g}});U(),U(),U();var Es=t=>{var e,u,n;let r=(e=process.stdout.columns)!=null?e:Number.POSITIVE_INFINITY;return typeof t=="function"&&(t=t(r)),t||(t={}),Array.isArray(t)?{columns:t,stdoutColumns:r}:{columns:(u=t.columns)!=null?u:[],stdoutColumns:(n=t.stdoutColumns)!=null?n:r}};U(),U(),U(),U(),U();function ps({onlyFirst:t=!1}={}){let e=["[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)","(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-ntqry=><~]))"].join("|");return new RegExp(e,t?void 0:"g")}function vu(t){if(typeof t!="string")throw new TypeError(`Expected a \`string\`, got \`${typeof t}\``);return t.replace(ps(),"")}U();function Cs(t){return Number.isInteger(t)?t>=4352&&(t<=4447||t===9001||t===9002||11904<=t&&t<=12871&&t!==12351||12880<=t&&t<=19903||19968<=t&&t<=42182||43360<=t&&t<=43388||44032<=t&&t<=55203||63744<=t&&t<=64255||65040<=t&&t<=65049||65072<=t&&t<=65131||65281<=t&&t<=65376||65504<=t&&t<=65510||110592<=t&&t<=110593||127488<=t&&t<=127569||131072<=t&&t<=262141):!1}var Fs=hs(ds(),1);function oe(t){if(typeof t!="string"||t.length===0||(t=vu(t),t.length===0))return 0;t=t.replace((0,Fs.default)()," ");let e=0;for(let u=0;u=127&&n<=159||n>=768&&n<=879||(n>65535&&u++,e+=Cs(n)?2:1)}return e}var Bu=t=>Math.max(...t.split(` +`).map(oe)),gs=t=>{let e=[];for(let u of t){let{length:n}=u,r=n-e.length;for(let s=0;se[s]&&(e[s]=i)}}return e};U();var Su=/^\d+%$/,$u={width:"auto",align:"left",contentWidth:0,paddingLeft:0,paddingRight:0,paddingTop:0,paddingBottom:0,horizontalPadding:0,paddingLeftString:"",paddingRightString:""},_s=(t,e)=>{var u;let n=[];for(let r=0;r=e){let o=i-e,a=Math.ceil(u.paddingLeft/r*o),c=o-a;u.paddingLeft-=a,u.paddingRight-=c,u.horizontalPadding=u.paddingLeft+u.paddingRight}u.paddingLeftString=u.paddingLeft?" ".repeat(u.paddingLeft):"",u.paddingRightString=u.paddingRight?" ".repeat(u.paddingRight):"";let D=e-u.horizontalPadding;u.width=Math.max(Math.min(u.width,D),s)}}var Tu=()=>Object.assign([],{columns:0});function As(t,e){let u=[Tu()],[n]=u;for(let r of t){let s=r.width+r.horizontalPadding;n.columns+s>e&&(n=Tu(),u.push(n)),n.push(r),n.columns+=s}for(let r of u){let s=r.reduce((l,p)=>l+p.width+p.horizontalPadding,0),i=e-s;if(i===0)continue;let D=r.filter(l=>"autoOverflow"in l),o=D.filter(l=>l.autoOverflow>0),a=o.reduce((l,p)=>l+p.autoOverflow,0),c=Math.min(a,i);for(let l of o){let p=Math.floor(l.autoOverflow/a*c);l.width+=p,i-=p}let f=Math.floor(i/D.length);for(let l=0;le=>`\x1B[${e+t}m`,Ou=(t=0)=>e=>`\x1B[${38+t};5;${e}m`,Nu=(t=0)=>(e,u,n)=>`\x1B[${38+t};2;${e};${u};${n}m`;function ws(){let t=new Map,e={modifier:{reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],overline:[53,55],inverse:[7,27],hidden:[8,28],strikethrough:[9,29]},color:{black:[30,39],red:[31,39],green:[32,39],yellow:[33,39],blue:[34,39],magenta:[35,39],cyan:[36,39],white:[37,39],blackBright:[90,39],redBright:[91,39],greenBright:[92,39],yellowBright:[93,39],blueBright:[94,39],magentaBright:[95,39],cyanBright:[96,39],whiteBright:[97,39]},bgColor:{bgBlack:[40,49],bgRed:[41,49],bgGreen:[42,49],bgYellow:[43,49],bgBlue:[44,49],bgMagenta:[45,49],bgCyan:[46,49],bgWhite:[47,49],bgBlackBright:[100,49],bgRedBright:[101,49],bgGreenBright:[102,49],bgYellowBright:[103,49],bgBlueBright:[104,49],bgMagentaBright:[105,49],bgCyanBright:[106,49],bgWhiteBright:[107,49]}};e.color.gray=e.color.blackBright,e.bgColor.bgGray=e.bgColor.bgBlackBright,e.color.grey=e.color.blackBright,e.bgColor.bgGrey=e.bgColor.bgBlackBright;for(let[u,n]of Object.entries(e)){for(let[r,s]of Object.entries(n))e[r]={open:`\x1B[${s[0]}m`,close:`\x1B[${s[1]}m`},n[r]=e[r],t.set(s[0],s[1]);Object.defineProperty(e,u,{value:n,enumerable:!1})}return Object.defineProperty(e,"codes",{value:t,enumerable:!1}),e.color.close="\x1B[39m",e.bgColor.close="\x1B[49m",e.color.ansi=xu(),e.color.ansi256=Ou(),e.color.ansi16m=Nu(),e.bgColor.ansi=xu(lt),e.bgColor.ansi256=Ou(lt),e.bgColor.ansi16m=Nu(lt),Object.defineProperties(e,{rgbToAnsi256:{value:(u,n,r)=>u===n&&n===r?u<8?16:u>248?231:Math.round((u-8)/247*24)+232:16+36*Math.round(u/255*5)+6*Math.round(n/255*5)+Math.round(r/255*5),enumerable:!1},hexToRgb:{value:u=>{let n=/(?[a-f\d]{6}|[a-f\d]{3})/i.exec(u.toString(16));if(!n)return[0,0,0];let{colorString:r}=n.groups;r.length===3&&(r=r.split("").map(i=>i+i).join(""));let s=Number.parseInt(r,16);return[s>>16&255,s>>8&255,s&255]},enumerable:!1},hexToAnsi256:{value:u=>e.rgbToAnsi256(...e.hexToRgb(u)),enumerable:!1},ansi256ToAnsi:{value:u=>{if(u<8)return 30+u;if(u<16)return 90+(u-8);let n,r,s;if(u>=232)n=((u-232)*10+8)/255,r=n,s=n;else{u-=16;let o=u%36;n=Math.floor(u/36)/5,r=Math.floor(o/6)/5,s=o%6/5}let i=Math.max(n,r,s)*2;if(i===0)return 30;let D=30+(Math.round(s)<<2|Math.round(r)<<1|Math.round(n));return i===2&&(D+=60),D},enumerable:!1},rgbToAnsi:{value:(u,n,r)=>e.ansi256ToAnsi(e.rgbToAnsi256(u,n,r)),enumerable:!1},hexToAnsi:{value:u=>e.ansi256ToAnsi(e.hexToAnsi256(u)),enumerable:!1}}),e}var Rs=ws(),bs=Rs,We=new Set(["\x1B","\x9B"]),vs=39,ct="\x07",Hu="[",Bs="]",Pu="m",ft=`${Bs}8;;`,Lu=t=>`${We.values().next().value}${Hu}${t}${Pu}`,Iu=t=>`${We.values().next().value}${ft}${t}${ct}`,Ss=t=>t.split(" ").map(e=>oe(e)),ht=(t,e,u)=>{let n=[...e],r=!1,s=!1,i=oe(vu(t[t.length-1]));for(let[D,o]of n.entries()){let a=oe(o);if(i+a<=u?t[t.length-1]+=o:(t.push(o),i=0),We.has(o)&&(r=!0,s=n.slice(D+1).join("").startsWith(ft)),r){s?o===ct&&(r=!1,s=!1):o===Pu&&(r=!1);continue}i+=a,i===u&&D0&&t.length>1&&(t[t.length-2]+=t.pop())},$s=t=>{let e=t.split(" "),u=e.length;for(;u>0&&!(oe(e[u-1])>0);)u--;return u===e.length?t:e.slice(0,u).join(" ")+e.slice(u).join("")},Ts=(t,e,u={})=>{if(u.trim!==!1&&t.trim()==="")return"";let n="",r,s,i=Ss(t),D=[""];for(let[a,c]of t.split(" ").entries()){u.trim!==!1&&(D[D.length-1]=D[D.length-1].trimStart());let f=oe(D[D.length-1]);if(a!==0&&(f>=e&&(u.wordWrap===!1||u.trim===!1)&&(D.push(""),f=0),(f>0||u.trim===!1)&&(D[D.length-1]+=" ",f++)),u.hard&&i[a]>e){let l=e-f,p=1+Math.floor((i[a]-l-1)/e);Math.floor((i[a]-1)/e)e&&f>0&&i[a]>0){if(u.wordWrap===!1&&fe&&u.wordWrap===!1){ht(D,c,e);continue}D[D.length-1]+=c}u.trim!==!1&&(D=D.map(a=>$s(a)));let o=[...D.join(` +`)];for(let[a,c]of o.entries()){if(n+=c,We.has(c)){let{groups:l}=new RegExp(`(?:\\${Hu}(?\\d+)m|\\${ft}(?.*)${ct})`).exec(o.slice(a).join(""))||{groups:{}};if(l.code!==void 0){let p=Number.parseFloat(l.code);r=p===vs?void 0:p}else l.uri!==void 0&&(s=l.uri.length===0?void 0:l.uri)}let f=bs.codes.get(Number(r));o[a+1]===` +`?(s&&(n+=Iu("")),r&&f&&(n+=Lu(f))):c===` +`&&(r&&f&&(n+=Lu(r)),s&&(n+=Iu(s)))}return n};function xs(t,e,u){return String(t).normalize().replace(/\r\n/g,` +`).split(` +`).map(n=>Ts(n,e,u)).join(` +`)}var ku=t=>Array.from({length:t}).fill("");function Os(t,e){let u=[],n=0;for(let r of t){let s=0,i=r.map(o=>{var a;let c=(a=e[n])!=null?a:"";n+=1,o.preprocess&&(c=o.preprocess(c)),Bu(c)>o.width&&(c=xs(c,o.width,{hard:!0}));let f=c.split(` +`);if(o.postprocess){let{postprocess:l}=o;f=f.map((p,C)=>l.call(o,p,C))}return o.paddingTop&&f.unshift(...ku(o.paddingTop)),o.paddingBottom&&f.push(...ku(o.paddingBottom)),f.length>s&&(s=f.length),at(Me({},o),{lines:f})}),D=[];for(let o=0;o{var f;let l=(f=c.lines[o])!=null?f:"",p=Number.isFinite(c.width)?" ".repeat(c.width-oe(l)):"",C=c.paddingLeftString;return c.align==="right"&&(C+=p),C+=l,c.align==="left"&&(C+=p),C+c.paddingRightString}).join("");D.push(a)}u.push(D.join(` +`))}return u.join(` +`)}function Ns(t,e){if(!t||t.length===0)return"";let u=gs(t),n=u.length;if(n===0)return"";let{stdoutColumns:r,columns:s}=Es(e);if(s.length>n)throw new Error(`${s.length} columns defined, but only ${n} columns found`);let i=ys(r,s,u);return t.map(D=>Os(i,D)).join(` +`)}U();var Hs=["<",">","=",">=","<="];function Ps(t){if(!Hs.includes(t))throw new TypeError(`Invalid breakpoint operator: ${t}`)}function Ls(t){let e=Object.keys(t).map(u=>{let[n,r]=u.split(" ");Ps(n);let s=Number.parseInt(r,10);if(Number.isNaN(s))throw new TypeError(`Invalid breakpoint value: ${r}`);let i=t[u];return{operator:n,breakpoint:s,value:i}}).sort((u,n)=>n.breakpoint-u.breakpoint);return u=>{var n;return(n=e.find(({operator:r,breakpoint:s})=>r==="="&&u===s||r===">"&&u>s||r==="<"&&u="&&u>=s||r==="<="&&u<=s))==null?void 0:n.value}}const Is=t=>t.replace(/[-_ ](\w)/g,(e,u)=>u.toUpperCase()),ks=t=>t.replace(/\B([A-Z])/g,"-$1").toLowerCase(),Ms={"> 80":[{width:"content-width",paddingLeft:2,paddingRight:8},{width:"auto"}],"> 40":[{width:"auto",paddingLeft:2,paddingRight:8,preprocess:t=>t.trim()},{width:"100%",paddingLeft:2,paddingBottom:1}],"> 0":{stdoutColumns:1e3,columns:[{width:"content-width",paddingLeft:2,paddingRight:8},{width:"content-width"}]}};function Ws(t){let e=!1;return{type:"table",data:{tableData:Object.keys(t).sort((n,r)=>n.localeCompare(r)).map(n=>{const r=t[n],s="alias"in r;return s&&(e=!0),{name:n,flag:r,flagFormatted:`--${ks(n)}`,aliasesEnabled:e,aliasFormatted:s?`-${r.alias}`:void 0}}).map(n=>(n.aliasesEnabled=e,[{type:"flagName",data:n},{type:"flagDescription",data:n}])),tableBreakpoints:Ms}}}const Mu=t=>{var e;return!t||((e=t.version)!=null?e:t.help?t.help.version:void 0)},Wu=t=>{var u;const e="parent"in t&&((u=t.parent)==null?void 0:u.name);return(e?`${e} `:"")+t.name};function Gs(t){var n;const e=[];t.name&&e.push(Wu(t));const u=(n=Mu(t))!=null?n:"parent"in t&&Mu(t.parent);if(u&&e.push(`v${u}`),e.length!==0)return{id:"name",type:"text",data:`${e.join(" ")} +`}}function js(t){const{help:e}=t;if(!(!e||!e.description))return{id:"description",type:"text",data:`${e.description} +`}}function Us(t){var u;const e=t.help||{};if("usage"in e)return e.usage?{id:"usage",type:"section",data:{title:"Usage:",body:Array.isArray(e.usage)?e.usage.join(` +`):e.usage}}:void 0;if(t.name){const n=[],r=[Wu(t)];if(t.flags&&Object.keys(t.flags).length>0&&r.push("[flags...]"),t.parameters&&t.parameters.length>0){const{parameters:s}=t,i=s.indexOf("--"),D=i>-1&&s.slice(i+1).some(o=>o.startsWith("<"));r.push(s.map(o=>o!=="--"?o:D?"--":"[--]").join(" "))}if(r.length>1&&n.push(r.join(" ")),"commands"in t&&((u=t.commands)==null?void 0:u.length)&&n.push(`${t.name} `),n.length>0)return{id:"usage",type:"section",data:{title:"Usage:",body:n.join(` +`)}}}}function Ks(t){var u;return!("commands"in t)||!((u=t.commands)!=null&&u.length)?void 0:{id:"commands",type:"section",data:{title:"Commands:",body:{type:"table",data:{tableData:t.commands.map(n=>[n.options.name,n.options.help?n.options.help.description:""]),tableOptions:[{width:"content-width",paddingLeft:2,paddingRight:8}]}},indentBody:0}}}function Vs(t){if(!(!t.flags||Object.keys(t.flags).length===0))return{id:"flags",type:"section",data:{title:"Flags:",body:Ws(t.flags),indentBody:0}}}function zs(t){const{help:e}=t;if(!e||!e.examples||e.examples.length===0)return;let{examples:u}=e;if(Array.isArray(u)&&(u=u.join(` +`)),u)return{id:"examples",type:"section",data:{title:"Examples:",body:u}}}function Ys(t){if(!("alias"in t)||!t.alias)return;const{alias:e}=t;return{id:"aliases",type:"section",data:{title:"Aliases:",body:Array.isArray(e)?e.join(", "):e}}}const qs=t=>[Gs,js,Us,Ks,Vs,zs,Ys].map(e=>e(t)).filter(Boolean),Xs=Nr.default.WriteStream.prototype.hasColors();class Qs{text(e){return e}bold(e){return Xs?`\x1B[1m${e}\x1B[22m`:e.toLocaleUpperCase()}indentText({text:e,spaces:u}){return e.replace(/^/gm," ".repeat(u))}heading(e){return this.bold(e)}section({title:e,body:u,indentBody:n=2}){return`${(e?`${this.heading(e)} +`:"")+(u?this.indentText({text:this.render(u),spaces:n}):"")} +`}table({tableData:e,tableOptions:u,tableBreakpoints:n}){return Ns(e.map(r=>r.map(s=>this.render(s))),n?Ls(n):u)}flagParameter(e){return e===Boolean?"":e===String?"":e===Number?"":Array.isArray(e)?this.flagParameter(e[0]):""}flagOperator(e){return" "}flagName(e){const{flag:u,flagFormatted:n,aliasesEnabled:r,aliasFormatted:s}=e;let i="";if(s?i+=`${s}, `:r&&(i+=" "),i+=n,"placeholder"in u&&typeof u.placeholder=="string")i+=`${this.flagOperator(e)}${u.placeholder}`;else{const D=this.flagParameter("type"in u?u.type:u);D&&(i+=`${this.flagOperator(e)}${D}`)}return i}flagDefault(e){return JSON.stringify(e)}flagDescription({flag:e}){var n;let u="description"in e&&(n=e.description)!=null?n:"";if("default"in e){let{default:r}=e;typeof r=="function"&&(r=r()),r&&(u+=` (default: ${this.flagDefault(r)})`)}return u}render(e){if(typeof e=="string")return e;if(Array.isArray(e))return e.map(u=>this.render(u)).join(` +`);if("type"in e&&this[e.type]){const u=this[e.type];if(typeof u=="function")return u.call(this,e.data)}throw new Error(`Invalid node type: ${JSON.stringify(e)}`)}}const dt=/^[\w.-]+$/,{stringify:J}=JSON,Zs=/[|\\{}()[\]^$+*?.]/;function Et(t){const e=[];let u,n;for(const r of t){if(n)throw new Error(`Invalid parameter: Spread parameter ${J(n)} must be last`);const s=r[0],i=r[r.length-1];let D;if(s==="<"&&i===">"&&(D=!0,u))throw new Error(`Invalid parameter: Required parameter ${J(r)} cannot come after optional parameter ${J(u)}`);if(s==="["&&i==="]"&&(D=!1,u=r),D===void 0)throw new Error(`Invalid parameter: ${J(r)}. Must be wrapped in <> (required parameter) or [] (optional parameter)`);let o=r.slice(1,-1);const a=o.slice(-3)==="...";a&&(n=r,o=o.slice(0,-3));const c=o.match(Zs);if(c)throw new Error(`Invalid parameter: ${J(r)}. Invalid character found ${J(c[0])}`);e.push({name:o,required:D,spread:a})}return e}function pt(t,e,u,n){for(let r=0;r{console.log(e.version)};if(s&&o.flags.version===!0)return a(),process.exit(0);const c=new Qs,f=D&&(i==null?void 0:i.render)?i.render:C=>c.render(C),l=C=>{const F=qs({...e,...C?{help:C}:{},flags:r});console.log(f(F,c))};if(D&&o.flags.help===!0)return l(),process.exit(0);if(e.parameters){let{parameters:C}=e,F=o._;const A=C.indexOf("--"),B=C.slice(A+1),H=Object.create(null);if(A>-1&&B.length>0){C=C.slice(0,A);const S=o._["--"];F=F.slice(0,-S.length||void 0),pt(H,Et(C),F,l),pt(H,Et(B),S,l)}else pt(H,Et(C),F,l);Object.assign(o._,H)}const p={...o,showVersion:a,showHelp:l};return typeof u=="function"&&u(p),{command:t,...p}}function ei(t,e){const u=new Map;for(const n of e){const r=[n.options.name],{alias:s}=n.options;s&&(Array.isArray(s)?r.push(...s):r.push(s));for(const i of r){if(u.has(i))throw new Error(`Duplicate command name found: ${J(i)}`);u.set(i,n)}}return u.get(t)}function ti(t,e,u=process.argv.slice(2)){if(!t)throw new Error("Options is required");if("name"in t&&(!t.name||!dt.test(t.name)))throw new Error(`Invalid script name: ${J(t.name)}`);const n=u[0];if(t.commands&&dt.test(n)){const r=ei(n,t.commands);if(r)return Gu(r.options.name,{...r.options,parent:t},r.callback,u.slice(1))}return Gu(void 0,t,e,u)}function ui(t,e){if(!t)throw new Error("Command options are required");const{name:u}=t;if(t.name===void 0)throw new Error("Command name is required");if(!dt.test(u))throw new Error(`Invalid command name ${JSON.stringify(u)}. Command names must be one word.`);return{options:t,callback:e}}var ni=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},he={exports:{}},Ct,ju;function ri(){if(ju)return Ct;ju=1,Ct=n,n.sync=r;var t=De.default;function e(s,i){var D=i.pathExt!==void 0?i.pathExt:process.env.PATHEXT;if(!D||(D=D.split(";"),D.indexOf("")!==-1))return!0;for(var o=0;oObject.assign(new Error(`not found: ${t}`),{code:"ENOENT"}),Yu=(t,e)=>{const u=e.colon||oi,n=t.match(/\//)||de&&t.match(/\\/)?[""]:[...de?[process.cwd()]:[],...(e.path||process.env.PATH||"").split(u)],r=de?e.pathExt||process.env.PATHEXT||".EXE;.CMD;.BAT;.COM":"",s=de?r.split(u):[""];return de&&t.indexOf(".")!==-1&&s[0]!==""&&s.unshift(""),{pathEnv:n,pathExt:s,pathExtExe:r}},qu=(t,e,u)=>{typeof e=="function"&&(u=e,e={}),e||(e={});const{pathEnv:n,pathExt:r,pathExtExe:s}=Yu(t,e),i=[],D=a=>new Promise((c,f)=>{if(a===n.length)return e.all&&i.length?c(i):f(zu(t));const l=n[a],p=/^".*"$/.test(l)?l.slice(1,-1):l,C=Ku.join(p,t),F=!p&&/^\.[\\\/]/.test(t)?t.slice(0,2)+C:C;c(o(F,a,0))}),o=(a,c,f)=>new Promise((l,p)=>{if(f===r.length)return l(D(c+1));const C=r[f];Vu(a+C,{pathExt:s},(F,A)=>{if(!F&&A)if(e.all)i.push(a+C);else return l(a+C);return l(o(a,c,f+1))})});return u?D(0).then(a=>u(null,a),u):D(0)},ai=(t,e)=>{e=e||{};const{pathEnv:u,pathExt:n,pathExtExe:r}=Yu(t,e),s=[];for(let i=0;i{const e=t.env||process.env;return(t.platform||process.platform)!=="win32"?"PATH":Object.keys(e).reverse().find(n=>n.toUpperCase()==="PATH")||"Path"};_t.exports=Xu,_t.exports.default=Xu;const Qu=K.default,ci=li,fi=_t.exports;function Zu(t,e){const u=t.options.env||process.env,n=process.cwd(),r=t.options.cwd!=null,s=r&&process.chdir!==void 0&&!process.chdir.disabled;if(s)try{process.chdir(t.options.cwd)}catch{}let i;try{i=ci.sync(t.command,{path:u[fi({env:u})],pathExt:e?Qu.delimiter:void 0})}catch{}finally{s&&process.chdir(n)}return i&&(i=Qu.resolve(r?t.options.cwd:"",i)),i}function hi(t){return Zu(t)||Zu(t,!0)}var di=hi,mt={};const At=/([()\][%!^"`<>&|;, *?])/g;function Ei(t){return t=t.replace(At,"^$1"),t}function pi(t,e){return t=`${t}`,t=t.replace(/(\\*)"/g,'$1$1\\"'),t=t.replace(/(\\*)$/,"$1$1"),t=`"${t}"`,t=t.replace(At,"^$1"),e&&(t=t.replace(At,"^$1")),t}mt.command=Ei,mt.argument=pi;var Ci=/^#!(.*)/;const Fi=Ci;var gi=(t="")=>{const e=t.match(Fi);if(!e)return null;const[u,n]=e[0].replace(/#! ?/,"").split(" "),r=u.split("/").pop();return r==="env"?n:n?`${r} ${n}`:r};const yt=De.default,_i=gi;function mi(t){const u=Buffer.alloc(150);let n;try{n=yt.openSync(t,"r"),yt.readSync(n,u,0,150,0),yt.closeSync(n)}catch{}return _i(u.toString())}var Ai=mi;const yi=K.default,Ju=di,en=mt,wi=Ai,Ri=process.platform==="win32",bi=/\.(?:com|exe)$/i,vi=/node_modules[\\/].bin[\\/][^\\/]+\.cmd$/i;function Bi(t){t.file=Ju(t);const e=t.file&&wi(t.file);return e?(t.args.unshift(t.file),t.command=e,Ju(t)):t.file}function Si(t){if(!Ri)return t;const e=Bi(t),u=!bi.test(e);if(t.options.forceShell||u){const n=vi.test(e);t.command=yi.normalize(t.command),t.command=en.command(t.command),t.args=t.args.map(s=>en.argument(s,n));const r=[t.command].concat(t.args).join(" ");t.args=["/d","/s","/c",`"${r}"`],t.command=process.env.comspec||"cmd.exe",t.options.windowsVerbatimArguments=!0}return t}function $i(t,e,u){e&&!Array.isArray(e)&&(u=e,e=null),e=e?e.slice(0):[],u=Object.assign({},u);const n={command:t,args:e,options:u,file:void 0,original:{command:t,args:e}};return u.shell?n:Si(n)}var Ti=$i;const wt=process.platform==="win32";function Rt(t,e){return Object.assign(new Error(`${e} ${t.command} ENOENT`),{code:"ENOENT",errno:"ENOENT",syscall:`${e} ${t.command}`,path:t.command,spawnargs:t.args})}function xi(t,e){if(!wt)return;const u=t.emit;t.emit=function(n,r){if(n==="exit"){const s=tn(r,e);if(s)return u.call(t,"error",s)}return u.apply(t,arguments)}}function tn(t,e){return wt&&t===1&&!e.file?Rt(e.original,"spawn"):null}function Oi(t,e){return wt&&t===1&&!e.file?Rt(e.original,"spawnSync"):null}var Ni={hookChildProcess:xi,verifyENOENT:tn,verifyENOENTSync:Oi,notFoundError:Rt};const un=Hr.default,bt=Ti,vt=Ni;function nn(t,e,u){const n=bt(t,e,u),r=un.spawn(n.command,n.args,n.options);return vt.hookChildProcess(r,n),r}function Hi(t,e,u){const n=bt(t,e,u),r=un.spawnSync(n.command,n.args,n.options);return r.error=r.error||vt.verifyENOENTSync(r.status,n),r}he.exports=nn,he.exports.spawn=nn,he.exports.sync=Hi,he.exports._parse=bt,he.exports._enoent=vt;function rn(t,e){const u={...process.env},n=["inherit","inherit","inherit","ipc"];return e&&(e.noCache&&(u.ESBK_DISABLE_CACHE="1"),e.tsconfigPath&&(u.ESBK_TSCONFIG_PATH=e.tsconfigPath)),he.exports(process.execPath,["--require",ot.require.resolve("./preflight.cjs"),"--loader",gu.pathToFileURL(ot.require.resolve("./loader.js")).toString(),...t],{stdio:n,env:u})}var Bt={exports:{}},je={};const Pi=K.default,ee="\\\\/",sn=`[^${ee}]`,te="\\.",Li="\\+",Ii="\\?",Ue="\\/",ki="(?=.)",Dn="[^/]",St=`(?:${Ue}|$)`,on=`(?:^|${Ue})`,$t=`${te}{1,2}${St}`,Mi=`(?!${te})`,Wi=`(?!${on}${$t})`,Gi=`(?!${te}{0,1}${St})`,ji=`(?!${$t})`,Ui=`[^.${Ue}]`,Ki=`${Dn}*?`,an={DOT_LITERAL:te,PLUS_LITERAL:Li,QMARK_LITERAL:Ii,SLASH_LITERAL:Ue,ONE_CHAR:ki,QMARK:Dn,END_ANCHOR:St,DOTS_SLASH:$t,NO_DOT:Mi,NO_DOTS:Wi,NO_DOT_SLASH:Gi,NO_DOTS_SLASH:ji,QMARK_NO_DOT:Ui,STAR:Ki,START_ANCHOR:on},Vi={...an,SLASH_LITERAL:`[${ee}]`,QMARK:sn,STAR:`${sn}*?`,DOTS_SLASH:`${te}{1,2}(?:[${ee}]|$)`,NO_DOT:`(?!${te})`,NO_DOTS:`(?!(?:^|[${ee}])${te}{1,2}(?:[${ee}]|$))`,NO_DOT_SLASH:`(?!${te}{0,1}(?:[${ee}]|$))`,NO_DOTS_SLASH:`(?!${te}{1,2}(?:[${ee}]|$))`,QMARK_NO_DOT:`[^.${ee}]`,START_ANCHOR:`(?:^|[${ee}])`,END_ANCHOR:`(?:[${ee}]|$)`},zi={alnum:"a-zA-Z0-9",alpha:"a-zA-Z",ascii:"\\x00-\\x7F",blank:" \\t",cntrl:"\\x00-\\x1F\\x7F",digit:"0-9",graph:"\\x21-\\x7E",lower:"a-z",print:"\\x20-\\x7E ",punct:"\\-!\"#$%&'()\\*+,./:;<=>?@[\\]^_`{|}~",space:" \\t\\r\\n\\v\\f",upper:"A-Z",word:"A-Za-z0-9_",xdigit:"A-Fa-f0-9"};var Ke={MAX_LENGTH:1024*64,POSIX_REGEX_SOURCE:zi,REGEX_BACKSLASH:/\\(?![*+?^${}(|)[\]])/g,REGEX_NON_SPECIAL_CHARS:/^[^@![\].,$*+?^{}()|\\/]+/,REGEX_SPECIAL_CHARS:/[-*+?.^${}(|)[\]]/,REGEX_SPECIAL_CHARS_BACKREF:/(\\?)((\W)(\3*))/g,REGEX_SPECIAL_CHARS_GLOBAL:/([-*+?.^${}(|)[\]])/g,REGEX_REMOVE_BACKSLASH:/(?:\[.*?[^\\]\]|\\(?=.))/g,REPLACEMENTS:{"***":"*","**/**":"**","**/**/**":"**"},CHAR_0:48,CHAR_9:57,CHAR_UPPERCASE_A:65,CHAR_LOWERCASE_A:97,CHAR_UPPERCASE_Z:90,CHAR_LOWERCASE_Z:122,CHAR_LEFT_PARENTHESES:40,CHAR_RIGHT_PARENTHESES:41,CHAR_ASTERISK:42,CHAR_AMPERSAND:38,CHAR_AT:64,CHAR_BACKWARD_SLASH:92,CHAR_CARRIAGE_RETURN:13,CHAR_CIRCUMFLEX_ACCENT:94,CHAR_COLON:58,CHAR_COMMA:44,CHAR_DOT:46,CHAR_DOUBLE_QUOTE:34,CHAR_EQUAL:61,CHAR_EXCLAMATION_MARK:33,CHAR_FORM_FEED:12,CHAR_FORWARD_SLASH:47,CHAR_GRAVE_ACCENT:96,CHAR_HASH:35,CHAR_HYPHEN_MINUS:45,CHAR_LEFT_ANGLE_BRACKET:60,CHAR_LEFT_CURLY_BRACE:123,CHAR_LEFT_SQUARE_BRACKET:91,CHAR_LINE_FEED:10,CHAR_NO_BREAK_SPACE:160,CHAR_PERCENT:37,CHAR_PLUS:43,CHAR_QUESTION_MARK:63,CHAR_RIGHT_ANGLE_BRACKET:62,CHAR_RIGHT_CURLY_BRACE:125,CHAR_RIGHT_SQUARE_BRACKET:93,CHAR_SEMICOLON:59,CHAR_SINGLE_QUOTE:39,CHAR_SPACE:32,CHAR_TAB:9,CHAR_UNDERSCORE:95,CHAR_VERTICAL_LINE:124,CHAR_ZERO_WIDTH_NOBREAK_SPACE:65279,SEP:Pi.sep,extglobChars(t){return{"!":{type:"negate",open:"(?:(?!(?:",close:`))${t.STAR})`},"?":{type:"qmark",open:"(?:",close:")?"},"+":{type:"plus",open:"(?:",close:")+"},"*":{type:"star",open:"(?:",close:")*"},"@":{type:"at",open:"(?:",close:")"}}},globChars(t){return t===!0?Vi:an}};(function(t){const e=K.default,u=process.platform==="win32",{REGEX_BACKSLASH:n,REGEX_REMOVE_BACKSLASH:r,REGEX_SPECIAL_CHARS:s,REGEX_SPECIAL_CHARS_GLOBAL:i}=Ke;t.isObject=D=>D!==null&&typeof D=="object"&&!Array.isArray(D),t.hasRegexChars=D=>s.test(D),t.isRegexChar=D=>D.length===1&&t.hasRegexChars(D),t.escapeRegex=D=>D.replace(i,"\\$1"),t.toPosixSlashes=D=>D.replace(n,"/"),t.removeBackslashes=D=>D.replace(r,o=>o==="\\"?"":o),t.supportsLookbehinds=()=>{const D=process.version.slice(1).split(".").map(Number);return D.length===3&&D[0]>=9||D[0]===8&&D[1]>=10},t.isWindows=D=>D&&typeof D.windows=="boolean"?D.windows:u===!0||e.sep==="\\",t.escapeLast=(D,o,a)=>{const c=D.lastIndexOf(o,a);return c===-1?D:D[c-1]==="\\"?t.escapeLast(D,o,c-1):`${D.slice(0,c)}\\${D.slice(c)}`},t.removePrefix=(D,o={})=>{let a=D;return a.startsWith("./")&&(a=a.slice(2),o.prefix="./"),a},t.wrapOutput=(D,o={},a={})=>{const c=a.contains?"":"^",f=a.contains?"":"$";let l=`${c}(?:${D})${f}`;return o.negated===!0&&(l=`(?:^(?!${l}).*$)`),l}})(je);const ln=je,{CHAR_ASTERISK:Tt,CHAR_AT:Yi,CHAR_BACKWARD_SLASH:we,CHAR_COMMA:qi,CHAR_DOT:xt,CHAR_EXCLAMATION_MARK:Ot,CHAR_FORWARD_SLASH:cn,CHAR_LEFT_CURLY_BRACE:Nt,CHAR_LEFT_PARENTHESES:Ht,CHAR_LEFT_SQUARE_BRACKET:Xi,CHAR_PLUS:Qi,CHAR_QUESTION_MARK:fn,CHAR_RIGHT_CURLY_BRACE:Zi,CHAR_RIGHT_PARENTHESES:hn,CHAR_RIGHT_SQUARE_BRACKET:Ji}=Ke,dn=t=>t===cn||t===we,En=t=>{t.isPrefix!==!0&&(t.depth=t.isGlobstar?1/0:1)},eD=(t,e)=>{const u=e||{},n=t.length-1,r=u.parts===!0||u.scanToEnd===!0,s=[],i=[],D=[];let o=t,a=-1,c=0,f=0,l=!1,p=!1,C=!1,F=!1,A=!1,B=!1,H=!1,S=!1,X=!1,M=!1,ne=0,W,m,b={value:"",depth:0,isGlob:!1};const k=()=>a>=n,E=()=>o.charCodeAt(a+1),x=()=>(W=m,o.charCodeAt(++a));for(;a0&&(re=o.slice(0,c),o=o.slice(c),f-=c),$&&C===!0&&f>0?($=o.slice(0,f),h=o.slice(f)):C===!0?($="",h=o):$=o,$&&$!==""&&$!=="/"&&$!==o&&dn($.charCodeAt($.length-1))&&($=$.slice(0,-1)),u.unescape===!0&&(h&&(h=ln.removeBackslashes(h)),$&&H===!0&&($=ln.removeBackslashes($)));const d={prefix:re,input:t,start:c,base:$,glob:h,isBrace:l,isBracket:p,isGlob:C,isExtglob:F,isGlobstar:A,negated:S,negatedExtglob:X};if(u.tokens===!0&&(d.maxDepth=0,dn(m)||i.push(b),d.tokens=i),u.parts===!0||u.tokens===!0){let G;for(let R=0;R{if(typeof e.expandRange=="function")return e.expandRange(...t,e);t.sort();const u=`[${t.join("-")}]`;try{new RegExp(u)}catch{return t.map(r=>z.escapeRegex(r)).join("..")}return u},Ee=(t,e)=>`Missing ${t}: "${e}" - use "\\\\${e}" to match literal characters`,Pt=(t,e)=>{if(typeof t!="string")throw new TypeError("Expected a string");t=pn[t]||t;const u={...e},n=typeof u.maxLength=="number"?Math.min(ze,u.maxLength):ze;let r=t.length;if(r>n)throw new SyntaxError(`Input length: ${r}, exceeds maximum allowed length: ${n}`);const s={type:"bos",value:"",output:u.prepend||""},i=[s],D=u.capture?"":"?:",o=z.isWindows(e),a=Ve.globChars(o),c=Ve.extglobChars(a),{DOT_LITERAL:f,PLUS_LITERAL:l,SLASH_LITERAL:p,ONE_CHAR:C,DOTS_SLASH:F,NO_DOT:A,NO_DOT_SLASH:B,NO_DOTS_SLASH:H,QMARK:S,QMARK_NO_DOT:X,STAR:M,START_ANCHOR:ne}=a,W=_=>`(${D}(?:(?!${ne}${_.dot?F:f}).)*?)`,m=u.dot?"":A,b=u.dot?S:X;let k=u.bash===!0?W(u):M;u.capture&&(k=`(${k})`),typeof u.noext=="boolean"&&(u.noextglob=u.noext);const E={input:t,index:-1,start:0,dot:u.dot===!0,consumed:"",output:"",prefix:"",backtrack:!1,negated:!1,brackets:0,braces:0,parens:0,quotes:0,globstar:!1,tokens:i};t=z.removePrefix(t,E),r=t.length;const x=[],$=[],re=[];let h=s,d;const G=()=>E.index===r-1,R=E.peek=(_=1)=>t[E.index+_],Q=E.advance=()=>t[++E.index]||"",Z=()=>t.slice(E.index+1),V=(_="",T=0)=>{E.consumed+=_,E.index+=T},Ne=_=>{E.output+=_.output!=null?_.output:_.value,V(_.value)},wr=()=>{let _=1;for(;R()==="!"&&(R(2)!=="("||R(3)==="?");)Q(),E.start++,_++;return _%2===0?!1:(E.negated=!0,E.start++,!0)},He=_=>{E[_]++,re.push(_)},ie=_=>{E[_]--,re.pop()},w=_=>{if(h.type==="globstar"){const T=E.braces>0&&(_.type==="comma"||_.type==="brace"),g=_.extglob===!0||x.length&&(_.type==="pipe"||_.type==="paren");_.type!=="slash"&&_.type!=="paren"&&!T&&!g&&(E.output=E.output.slice(0,-h.output.length),h.type="star",h.value="*",h.output=k,E.output+=h.output)}if(x.length&&_.type!=="paren"&&(x[x.length-1].inner+=_.value),(_.value||_.output)&&Ne(_),h&&h.type==="text"&&_.type==="text"){h.value+=_.value,h.output=(h.output||"")+_.value;return}_.prev=h,i.push(_),h=_},Pe=(_,T)=>{const g={...c[T],conditions:1,inner:""};g.prev=h,g.parens=E.parens,g.output=E.output;const y=(u.capture?"(":"")+g.open;He("parens"),w({type:_,value:T,output:E.output?"":C}),w({type:"paren",extglob:!0,value:Q(),output:y}),x.push(g)},Rr=_=>{let T=_.close+(u.capture?")":""),g;if(_.type==="negate"){let y=k;if(_.inner&&_.inner.length>1&&_.inner.includes("/")&&(y=W(u)),(y!==k||G()||/^\)+$/.test(Z()))&&(T=_.close=`)$))${y}`),_.inner.includes("*")&&(g=Z())&&/^\.[^\\/.]+$/.test(g)){const O=Pt(g,{...e,fastpaths:!1}).output;T=_.close=`)${O})${y})`}_.prev.type==="bos"&&(E.negatedExtglob=!0)}w({type:"paren",extglob:!0,value:d,output:T}),ie("parens")};if(u.fastpaths!==!1&&!/(^[*!]|[/()[\]{}"])/.test(t)){let _=!1,T=t.replace(rD,(g,y,O,j,P,Dt)=>j==="\\"?(_=!0,g):j==="?"?y?y+j+(P?S.repeat(P.length):""):Dt===0?b+(P?S.repeat(P.length):""):S.repeat(O.length):j==="."?f.repeat(O.length):j==="*"?y?y+j+(P?k:""):k:y?g:`\\${g}`);return _===!0&&(u.unescape===!0?T=T.replace(/\\/g,""):T=T.replace(/\\+/g,g=>g.length%2===0?"\\\\":g?"\\":"")),T===t&&u.contains===!0?(E.output=t,E):(E.output=z.wrapOutput(T,E,e),E)}for(;!G();){if(d=Q(),d==="\0")continue;if(d==="\\"){const g=R();if(g==="/"&&u.bash!==!0||g==="."||g===";")continue;if(!g){d+="\\",w({type:"text",value:d});continue}const y=/^\\+/.exec(Z());let O=0;if(y&&y[0].length>2&&(O=y[0].length,E.index+=O,O%2!==0&&(d+="\\")),u.unescape===!0?d=Q():d+=Q(),E.brackets===0){w({type:"text",value:d});continue}}if(E.brackets>0&&(d!=="]"||h.value==="["||h.value==="[^")){if(u.posix!==!1&&d===":"){const g=h.value.slice(1);if(g.includes("[")&&(h.posix=!0,g.includes(":"))){const y=h.value.lastIndexOf("["),O=h.value.slice(0,y),j=h.value.slice(y+2),P=uD[j];if(P){h.value=O+P,E.backtrack=!0,Q(),!s.output&&i.indexOf(h)===1&&(s.output=C);continue}}}(d==="["&&R()!==":"||d==="-"&&R()==="]")&&(d=`\\${d}`),d==="]"&&(h.value==="["||h.value==="[^")&&(d=`\\${d}`),u.posix===!0&&d==="!"&&h.value==="["&&(d="^"),h.value+=d,Ne({value:d});continue}if(E.quotes===1&&d!=='"'){d=z.escapeRegex(d),h.value+=d,Ne({value:d});continue}if(d==='"'){E.quotes=E.quotes===1?0:1,u.keepQuotes===!0&&w({type:"text",value:d});continue}if(d==="("){He("parens"),w({type:"paren",value:d});continue}if(d===")"){if(E.parens===0&&u.strictBrackets===!0)throw new SyntaxError(Ee("opening","("));const g=x[x.length-1];if(g&&E.parens===g.parens+1){Rr(x.pop());continue}w({type:"paren",value:d,output:E.parens?")":"\\)"}),ie("parens");continue}if(d==="["){if(u.nobracket===!0||!Z().includes("]")){if(u.nobracket!==!0&&u.strictBrackets===!0)throw new SyntaxError(Ee("closing","]"));d=`\\${d}`}else He("brackets");w({type:"bracket",value:d});continue}if(d==="]"){if(u.nobracket===!0||h&&h.type==="bracket"&&h.value.length===1){w({type:"text",value:d,output:`\\${d}`});continue}if(E.brackets===0){if(u.strictBrackets===!0)throw new SyntaxError(Ee("opening","["));w({type:"text",value:d,output:`\\${d}`});continue}ie("brackets");const g=h.value.slice(1);if(h.posix!==!0&&g[0]==="^"&&!g.includes("/")&&(d=`/${d}`),h.value+=d,Ne({value:d}),u.literalBrackets===!1||z.hasRegexChars(g))continue;const y=z.escapeRegex(h.value);if(E.output=E.output.slice(0,-h.value.length),u.literalBrackets===!0){E.output+=y,h.value=y;continue}h.value=`(${D}${y}|${h.value})`,E.output+=h.value;continue}if(d==="{"&&u.nobrace!==!0){He("braces");const g={type:"brace",value:d,output:"(",outputIndex:E.output.length,tokensIndex:E.tokens.length};$.push(g),w(g);continue}if(d==="}"){const g=$[$.length-1];if(u.nobrace===!0||!g){w({type:"text",value:d,output:d});continue}let y=")";if(g.dots===!0){const O=i.slice(),j=[];for(let P=O.length-1;P>=0&&(i.pop(),O[P].type!=="brace");P--)O[P].type!=="dots"&&j.unshift(O[P].value);y=sD(j,u),E.backtrack=!0}if(g.comma!==!0&&g.dots!==!0){const O=E.output.slice(0,g.outputIndex),j=E.tokens.slice(g.tokensIndex);g.value=g.output="\\{",d=y="\\}",E.output=O;for(const P of j)E.output+=P.output||P.value}w({type:"brace",value:d,output:y}),ie("braces"),$.pop();continue}if(d==="|"){x.length>0&&x[x.length-1].conditions++,w({type:"text",value:d});continue}if(d===","){let g=d;const y=$[$.length-1];y&&re[re.length-1]==="braces"&&(y.comma=!0,g="|"),w({type:"comma",value:d,output:g});continue}if(d==="/"){if(h.type==="dot"&&E.index===E.start+1){E.start=E.index+1,E.consumed="",E.output="",i.pop(),h=s;continue}w({type:"slash",value:d,output:p});continue}if(d==="."){if(E.braces>0&&h.type==="dot"){h.value==="."&&(h.output=f);const g=$[$.length-1];h.type="dots",h.output+=d,h.value+=d,g.dots=!0;continue}if(E.braces+E.parens===0&&h.type!=="bos"&&h.type!=="slash"){w({type:"text",value:d,output:f});continue}w({type:"dot",value:d,output:f});continue}if(d==="?"){if(!(h&&h.value==="(")&&u.noextglob!==!0&&R()==="("&&R(2)!=="?"){Pe("qmark",d);continue}if(h&&h.type==="paren"){const y=R();let O=d;if(y==="<"&&!z.supportsLookbehinds())throw new Error("Node.js v10 or higher is required for regex lookbehinds");(h.value==="("&&!/[!=<:]/.test(y)||y==="<"&&!/<([!=]|\w+>)/.test(Z()))&&(O=`\\${d}`),w({type:"text",value:d,output:O});continue}if(u.dot!==!0&&(h.type==="slash"||h.type==="bos")){w({type:"qmark",value:d,output:X});continue}w({type:"qmark",value:d,output:S});continue}if(d==="!"){if(u.noextglob!==!0&&R()==="("&&(R(2)!=="?"||!/[!=<:]/.test(R(3)))){Pe("negate",d);continue}if(u.nonegate!==!0&&E.index===0){wr();continue}}if(d==="+"){if(u.noextglob!==!0&&R()==="("&&R(2)!=="?"){Pe("plus",d);continue}if(h&&h.value==="("||u.regex===!1){w({type:"plus",value:d,output:l});continue}if(h&&(h.type==="bracket"||h.type==="paren"||h.type==="brace")||E.parens>0){w({type:"plus",value:d});continue}w({type:"plus",value:l});continue}if(d==="@"){if(u.noextglob!==!0&&R()==="("&&R(2)!=="?"){w({type:"at",extglob:!0,value:d,output:""});continue}w({type:"text",value:d});continue}if(d!=="*"){(d==="$"||d==="^")&&(d=`\\${d}`);const g=nD.exec(Z());g&&(d+=g[0],E.index+=g[0].length),w({type:"text",value:d});continue}if(h&&(h.type==="globstar"||h.star===!0)){h.type="star",h.star=!0,h.value+=d,h.output=k,E.backtrack=!0,E.globstar=!0,V(d);continue}let _=Z();if(u.noextglob!==!0&&/^\([^?]/.test(_)){Pe("star",d);continue}if(h.type==="star"){if(u.noglobstar===!0){V(d);continue}const g=h.prev,y=g.prev,O=g.type==="slash"||g.type==="bos",j=y&&(y.type==="star"||y.type==="globstar");if(u.bash===!0&&(!O||_[0]&&_[0]!=="/")){w({type:"star",value:d,output:""});continue}const P=E.braces>0&&(g.type==="comma"||g.type==="brace"),Dt=x.length&&(g.type==="pipe"||g.type==="paren");if(!O&&g.type!=="paren"&&!P&&!Dt){w({type:"star",value:d,output:""});continue}for(;_.slice(0,3)==="/**";){const Le=t[E.index+4];if(Le&&Le!=="/")break;_=_.slice(3),V("/**",3)}if(g.type==="bos"&&G()){h.type="globstar",h.value+=d,h.output=W(u),E.output=h.output,E.globstar=!0,V(d);continue}if(g.type==="slash"&&g.prev.type!=="bos"&&!j&&G()){E.output=E.output.slice(0,-(g.output+h.output).length),g.output=`(?:${g.output}`,h.type="globstar",h.output=W(u)+(u.strictSlashes?")":"|$)"),h.value+=d,E.globstar=!0,E.output+=g.output+h.output,V(d);continue}if(g.type==="slash"&&g.prev.type!=="bos"&&_[0]==="/"){const Le=_[1]!==void 0?"|$":"";E.output=E.output.slice(0,-(g.output+h.output).length),g.output=`(?:${g.output}`,h.type="globstar",h.output=`${W(u)}${p}|${p}${Le})`,h.value+=d,E.output+=g.output+h.output,E.globstar=!0,V(d+Q()),w({type:"slash",value:"/",output:""});continue}if(g.type==="bos"&&_[0]==="/"){h.type="globstar",h.value+=d,h.output=`(?:^|${p}|${W(u)}${p})`,E.output=h.output,E.globstar=!0,V(d+Q()),w({type:"slash",value:"/",output:""});continue}E.output=E.output.slice(0,-h.output.length),h.type="globstar",h.output=W(u),h.value+=d,E.output+=h.output,E.globstar=!0,V(d);continue}const T={type:"star",value:d,output:k};if(u.bash===!0){T.output=".*?",(h.type==="bos"||h.type==="slash")&&(T.output=m+T.output),w(T);continue}if(h&&(h.type==="bracket"||h.type==="paren")&&u.regex===!0){T.output=d,w(T);continue}(E.index===E.start||h.type==="slash"||h.type==="dot")&&(h.type==="dot"?(E.output+=B,h.output+=B):u.dot===!0?(E.output+=H,h.output+=H):(E.output+=m,h.output+=m),R()!=="*"&&(E.output+=C,h.output+=C)),w(T)}for(;E.brackets>0;){if(u.strictBrackets===!0)throw new SyntaxError(Ee("closing","]"));E.output=z.escapeLast(E.output,"["),ie("brackets")}for(;E.parens>0;){if(u.strictBrackets===!0)throw new SyntaxError(Ee("closing",")"));E.output=z.escapeLast(E.output,"("),ie("parens")}for(;E.braces>0;){if(u.strictBrackets===!0)throw new SyntaxError(Ee("closing","}"));E.output=z.escapeLast(E.output,"{"),ie("braces")}if(u.strictSlashes!==!0&&(h.type==="star"||h.type==="bracket")&&w({type:"maybe_slash",value:"",output:`${p}?`}),E.backtrack===!0){E.output="";for(const _ of E.tokens)E.output+=_.output!=null?_.output:_.value,_.suffix&&(E.output+=_.suffix)}return E};Pt.fastpaths=(t,e)=>{const u={...e},n=typeof u.maxLength=="number"?Math.min(ze,u.maxLength):ze,r=t.length;if(r>n)throw new SyntaxError(`Input length: ${r}, exceeds maximum allowed length: ${n}`);t=pn[t]||t;const s=z.isWindows(e),{DOT_LITERAL:i,SLASH_LITERAL:D,ONE_CHAR:o,DOTS_SLASH:a,NO_DOT:c,NO_DOTS:f,NO_DOTS_SLASH:l,STAR:p,START_ANCHOR:C}=Ve.globChars(s),F=u.dot?f:c,A=u.dot?l:c,B=u.capture?"":"?:",H={negated:!1,prefix:""};let S=u.bash===!0?".*?":p;u.capture&&(S=`(${S})`);const X=m=>m.noglobstar===!0?S:`(${B}(?:(?!${C}${m.dot?a:i}).)*?)`,M=m=>{switch(m){case"*":return`${F}${o}${S}`;case".*":return`${i}${o}${S}`;case"*.*":return`${F}${S}${i}${o}${S}`;case"*/*":return`${F}${S}${D}${o}${A}${S}`;case"**":return F+X(u);case"**/*":return`(?:${F}${X(u)}${D})?${A}${o}${S}`;case"**/*.*":return`(?:${F}${X(u)}${D})?${A}${S}${i}${o}${S}`;case"**/.*":return`(?:${F}${X(u)}${D})?${i}${o}${S}`;default:{const b=/^(.*?)\.(\w+)$/.exec(m);if(!b)return;const k=M(b[1]);return k?k+i+b[2]:void 0}}},ne=z.removePrefix(t,H);let W=M(ne);return W&&u.strictSlashes!==!0&&(W+=`${D}?`),W};var iD=Pt;const DD=K.default,oD=tD,Lt=iD,It=je,aD=Ke,lD=t=>t&&typeof t=="object"&&!Array.isArray(t),N=(t,e,u=!1)=>{if(Array.isArray(t)){const c=t.map(l=>N(l,e,u));return l=>{for(const p of c){const C=p(l);if(C)return C}return!1}}const n=lD(t)&&t.tokens&&t.input;if(t===""||typeof t!="string"&&!n)throw new TypeError("Expected pattern to be a non-empty string");const r=e||{},s=It.isWindows(e),i=n?N.compileRe(t,e):N.makeRe(t,e,!1,!0),D=i.state;delete i.state;let o=()=>!1;if(r.ignore){const c={...e,ignore:null,onMatch:null,onResult:null};o=N(r.ignore,c,u)}const a=(c,f=!1)=>{const{isMatch:l,match:p,output:C}=N.test(c,i,e,{glob:t,posix:s}),F={glob:t,state:D,regex:i,posix:s,input:c,output:C,match:p,isMatch:l};return typeof r.onResult=="function"&&r.onResult(F),l===!1?(F.isMatch=!1,f?F:!1):o(c)?(typeof r.onIgnore=="function"&&r.onIgnore(F),F.isMatch=!1,f?F:!1):(typeof r.onMatch=="function"&&r.onMatch(F),f?F:!0)};return u&&(a.state=D),a};N.test=(t,e,u,{glob:n,posix:r}={})=>{if(typeof t!="string")throw new TypeError("Expected input to be a string");if(t==="")return{isMatch:!1,output:""};const s=u||{},i=s.format||(r?It.toPosixSlashes:null);let D=t===n,o=D&&i?i(t):t;return D===!1&&(o=i?i(t):t,D=o===n),(D===!1||s.capture===!0)&&(s.matchBase===!0||s.basename===!0?D=N.matchBase(t,e,u,r):D=e.exec(o)),{isMatch:Boolean(D),match:D,output:o}},N.matchBase=(t,e,u,n=It.isWindows(u))=>(e instanceof RegExp?e:N.makeRe(e,u)).test(DD.basename(t)),N.isMatch=(t,e,u)=>N(e,u)(t),N.parse=(t,e)=>Array.isArray(t)?t.map(u=>N.parse(u,e)):Lt(t,{...e,fastpaths:!1}),N.scan=(t,e)=>oD(t,e),N.compileRe=(t,e,u=!1,n=!1)=>{if(u===!0)return t.output;const r=e||{},s=r.contains?"":"^",i=r.contains?"":"$";let D=`${s}(?:${t.output})${i}`;t&&t.negated===!0&&(D=`^(?!${D}).*$`);const o=N.toRegex(D,e);return n===!0&&(o.state=t),o},N.makeRe=(t,e={},u=!1,n=!1)=>{if(!t||typeof t!="string")throw new TypeError("Expected a non-empty string");let r={negated:!1,fastpaths:!0};return e.fastpaths!==!1&&(t[0]==="."||t[0]==="*")&&(r.output=Lt.fastpaths(t,e)),r.output||(r=Lt(t,e)),N.compileRe(r,e,u,n)},N.toRegex=(t,e)=>{try{const u=e||{};return new RegExp(t,u.flags||(u.nocase?"i":""))}catch(u){if(e&&e.debug===!0)throw u;return/$^/}},N.constants=aD;var cD=N;(function(t){t.exports=cD})(Bt);const Re=De.default,{Readable:fD}=Lr.default,be=K.default,{promisify:Ye}=me.default,kt=Bt.exports,hD=Ye(Re.readdir),dD=Ye(Re.stat),Cn=Ye(Re.lstat),ED=Ye(Re.realpath),pD="!",Fn="READDIRP_RECURSIVE_ERROR",CD=new Set(["ENOENT","EPERM","EACCES","ELOOP",Fn]),Mt="files",gn="directories",qe="files_directories",Xe="all",_n=[Mt,gn,qe,Xe],FD=t=>CD.has(t.code),[mn,gD]=process.versions.node.split(".").slice(0,2).map(t=>Number.parseInt(t,10)),_D=process.platform==="win32"&&(mn>10||mn===10&&gD>=5),An=t=>{if(t!==void 0){if(typeof t=="function")return t;if(typeof t=="string"){const e=kt(t.trim());return u=>e(u.basename)}if(Array.isArray(t)){const e=[],u=[];for(const n of t){const r=n.trim();r.charAt(0)===pD?u.push(kt(r.slice(1))):e.push(kt(r))}return u.length>0?e.length>0?n=>e.some(r=>r(n.basename))&&!u.some(r=>r(n.basename)):n=>!u.some(r=>r(n.basename)):n=>e.some(r=>r(n.basename))}}};class it extends fD{static get defaultOptions(){return{root:".",fileFilter:e=>!0,directoryFilter:e=>!0,type:Mt,lstat:!1,depth:2147483648,alwaysStat:!1}}constructor(e={}){super({objectMode:!0,autoDestroy:!0,highWaterMark:e.highWaterMark||4096});const u={...it.defaultOptions,...e},{root:n,type:r}=u;this._fileFilter=An(u.fileFilter),this._directoryFilter=An(u.directoryFilter);const s=u.lstat?Cn:dD;_D?this._stat=i=>s(i,{bigint:!0}):this._stat=s,this._maxDepth=u.depth,this._wantsDir=[gn,qe,Xe].includes(r),this._wantsFile=[Mt,qe,Xe].includes(r),this._wantsEverything=r===Xe,this._root=be.resolve(n),this._isDirent="Dirent"in Re&&!u.alwaysStat,this._statsProp=this._isDirent?"dirent":"stats",this._rdOptions={encoding:"utf8",withFileTypes:this._isDirent},this.parents=[this._exploreDir(n,1)],this.reading=!1,this.parent=void 0}async _read(e){if(!this.reading){this.reading=!0;try{for(;!this.destroyed&&e>0;){const{path:u,depth:n,files:r=[]}=this.parent||{};if(r.length>0){const s=r.splice(0,e).map(i=>this._formatEntry(i,u));for(const i of await Promise.all(s)){if(this.destroyed)return;const D=await this._getEntryType(i);D==="directory"&&this._directoryFilter(i)?(n<=this._maxDepth&&this.parents.push(this._exploreDir(i.fullPath,n+1)),this._wantsDir&&(this.push(i),e--)):(D==="file"||this._includeAsFile(i))&&this._fileFilter(i)&&this._wantsFile&&(this.push(i),e--)}}else{const s=this.parents.pop();if(!s){this.push(null);break}if(this.parent=await s,this.destroyed)return}}}catch(u){this.destroy(u)}finally{this.reading=!1}}}async _exploreDir(e,u){let n;try{n=await hD(e,this._rdOptions)}catch(r){this._onError(r)}return{files:n,depth:u,path:e}}async _formatEntry(e,u){let n;try{const r=this._isDirent?e.name:e,s=be.resolve(be.join(u,r));n={path:be.relative(this._root,s),fullPath:s,basename:r},n[this._statsProp]=this._isDirent?e:await this._stat(s)}catch(r){this._onError(r)}return n}_onError(e){FD(e)&&!this.destroyed?this.emit("warn",e):this.destroy(e)}async _getEntryType(e){const u=e&&e[this._statsProp];if(!!u){if(u.isFile())return"file";if(u.isDirectory())return"directory";if(u&&u.isSymbolicLink()){const n=e.fullPath;try{const r=await ED(n),s=await Cn(r);if(s.isFile())return"file";if(s.isDirectory()){const i=r.length;if(n.startsWith(r)&&n.substr(i,1)===be.sep){const D=new Error(`Circular symlink detected: "${n}" points to "${r}"`);return D.code=Fn,this._onError(D)}return"directory"}}catch(r){this._onError(r)}}}}_includeAsFile(e){const u=e&&e[this._statsProp];return u&&this._wantsEverything&&!u.isDirectory()}}const pe=(t,e={})=>{let u=e.entryType||e.type;if(u==="both"&&(u=qe),u&&(e.type=u),t){if(typeof t!="string")throw new TypeError("readdirp: root argument must be a string. Usage: readdirp(root, options)");if(u&&!_n.includes(u))throw new Error(`readdirp: Invalid type passed. Use one of ${_n.join(", ")}`)}else throw new Error("readdirp: root argument is required. Usage: readdirp(root, options)");return e.root=t,new it(e)},mD=(t,e={})=>new Promise((u,n)=>{const r=[];pe(t,e).on("data",s=>r.push(s)).on("end",()=>u(r)).on("error",s=>n(s))});pe.promise=mD,pe.ReaddirpStream=it,pe.default=pe;var AD=pe,Wt={exports:{}};/*! + * normalize-path + * + * Copyright (c) 2014-2018, Jon Schlinkert. + * Released under the MIT License. + */var yn=function(t,e){if(typeof t!="string")throw new TypeError("expected path to be a string");if(t==="\\"||t==="/")return"/";var u=t.length;if(u<=1)return t;var n="";if(u>4&&t[3]==="\\"){var r=t[2];(r==="?"||r===".")&&t.slice(0,2)==="\\\\"&&(t=t.slice(2),n="//")}var s=t.split(/[/\\]+/);return e!==!1&&s[s.length-1]===""&&s.pop(),n+s.join("/")};Object.defineProperty(Wt.exports,"__esModule",{value:!0});const wn=Bt.exports,yD=yn,Rn="!",wD={returnIndex:!1},RD=t=>Array.isArray(t)?t:[t],bD=(t,e)=>{if(typeof t=="function")return t;if(typeof t=="string"){const u=wn(t,e);return n=>t===n||u(n)}return t instanceof RegExp?u=>t.test(u):u=>!1},bn=(t,e,u,n)=>{const r=Array.isArray(u),s=r?u[0]:u;if(!r&&typeof s!="string")throw new TypeError("anymatch: second argument must be a string: got "+Object.prototype.toString.call(s));const i=yD(s);for(let o=0;o{if(t==null)throw new TypeError("anymatch: specify first argument");const n=typeof u=="boolean"?{returnIndex:u}:u,r=n.returnIndex||!1,s=RD(t),i=s.filter(o=>typeof o=="string"&&o.charAt(0)===Rn).map(o=>o.slice(1)).map(o=>wn(o,n)),D=s.filter(o=>typeof o!="string"||typeof o=="string"&&o.charAt(0)!==Rn).map(o=>bD(o,n));return e==null?(o,a=!1)=>bn(D,i,o,typeof a=="boolean"?a:!1):bn(D,i,e,r)};Gt.default=Gt,Wt.exports=Gt;/*! + * is-extglob + * + * Copyright (c) 2014-2016, Jon Schlinkert. + * Licensed under the MIT License. + */var vD=function(e){if(typeof e!="string"||e==="")return!1;for(var u;u=/(\\).|([@?!+*]\(.*\))/g.exec(e);){if(u[2])return!0;e=e.slice(u.index+u[0].length)}return!1};/*! + * is-glob + * + * Copyright (c) 2014-2017, Jon Schlinkert. + * Released under the MIT License. + */var BD=vD,vn={"{":"}","(":")","[":"]"},SD=function(t){if(t[0]==="!")return!0;for(var e=0,u=-2,n=-2,r=-2,s=-2,i=-2;ee&&(i===-1||i>n||(i=t.indexOf("\\",e),i===-1||i>n)))||r!==-1&&t[e]==="{"&&t[e+1]!=="}"&&(r=t.indexOf("}",e),r>e&&(i=t.indexOf("\\",e),i===-1||i>r))||s!==-1&&t[e]==="("&&t[e+1]==="?"&&/[:!=]/.test(t[e+2])&&t[e+3]!==")"&&(s=t.indexOf(")",e),s>e&&(i=t.indexOf("\\",e),i===-1||i>s))||u!==-1&&t[e]==="("&&t[e+1]!=="|"&&(uu&&(i=t.indexOf("\\",u),i===-1||i>s))))return!0;if(t[e]==="\\"){var D=t[e+1];e+=2;var o=vn[D];if(o){var a=t.indexOf(o,e);a!==-1&&(e=a+1)}if(t[e]==="!")return!0}else e++}return!1},$D=function(t){if(t[0]==="!")return!0;for(var e=0;etypeof e=="number"?Number.isInteger(e):typeof e=="string"&&e.trim()!==""?Number.isInteger(Number(e)):!1,t.find=(e,u)=>e.nodes.find(n=>n.type===u),t.exceedsLimit=(e,u,n=1,r)=>r===!1||!t.isInteger(e)||!t.isInteger(u)?!1:(Number(u)-Number(e))/Number(n)>=r,t.escapeNode=(e,u=0,n)=>{let r=e.nodes[u];!r||(n&&r.type===n||r.type==="open"||r.type==="close")&&r.escaped!==!0&&(r.value="\\"+r.value,r.escaped=!0)},t.encloseBrace=e=>e.type!=="brace"?!1:e.commas>>0+e.ranges>>0===0?(e.invalid=!0,!0):!1,t.isInvalidBrace=e=>e.type!=="brace"?!1:e.invalid===!0||e.dollar?!0:e.commas>>0+e.ranges>>0===0||e.open!==!0||e.close!==!0?(e.invalid=!0,!0):!1,t.isOpenOrClose=e=>e.type==="open"||e.type==="close"?!0:e.open===!0||e.close===!0,t.reduce=e=>e.reduce((u,n)=>(n.type==="text"&&u.push(n.value),n.type==="range"&&(n.type="text"),u),[]),t.flatten=(...e)=>{const u=[],n=r=>{for(let s=0;s{let u=(n,r={})=>{let s=e.escapeInvalid&&Sn.isInvalidBrace(r),i=n.invalid===!0&&e.escapeInvalid===!0,D="";if(n.value)return(s||i)&&Sn.isOpenOrClose(n)?"\\"+n.value:n.value;if(n.value)return n.value;if(n.nodes)for(let o of n.nodes)D+=u(o);return D};return u(t)};/*! + * is-number + * + * Copyright (c) 2014-present, Jon Schlinkert. + * Released under the MIT License. + */var kD=function(t){return typeof t=="number"?t-t===0:typeof t=="string"&&t.trim()!==""?Number.isFinite?Number.isFinite(+t):isFinite(+t):!1};/*! + * to-regex-range + * + * Copyright (c) 2015-present, Jon Schlinkert. + * Released under the MIT License. + */const $n=kD,ae=(t,e,u)=>{if($n(t)===!1)throw new TypeError("toRegexRange: expected the first argument to be a number");if(e===void 0||t===e)return String(t);if($n(e)===!1)throw new TypeError("toRegexRange: expected the second argument to be a number.");let n={relaxZeros:!0,...u};typeof n.strictZeros=="boolean"&&(n.relaxZeros=n.strictZeros===!1);let r=String(n.relaxZeros),s=String(n.shorthand),i=String(n.capture),D=String(n.wrap),o=t+":"+e+"="+r+s+i+D;if(ae.cache.hasOwnProperty(o))return ae.cache[o].result;let a=Math.min(t,e),c=Math.max(t,e);if(Math.abs(a-c)===1){let F=t+"|"+e;return n.capture?`(${F})`:n.wrap===!1?F:`(?:${F})`}let f=Pn(t)||Pn(e),l={min:t,max:e,a,b:c},p=[],C=[];if(f&&(l.isPadded=f,l.maxLen=String(l.max).length),a<0){let F=c<0?Math.abs(c):1;C=Tn(F,Math.abs(a),l,n),a=l.a=0}return c>=0&&(p=Tn(a,c,l,n)),l.negatives=C,l.positives=p,l.result=MD(C,p),n.capture===!0?l.result=`(${l.result})`:n.wrap!==!1&&p.length+C.length>1&&(l.result=`(?:${l.result})`),ae.cache[o]=l,l.result};function MD(t,e,u){let n=Kt(t,e,"-",!1)||[],r=Kt(e,t,"",!1)||[],s=Kt(t,e,"-?",!0)||[];return n.concat(s).concat(r).join("|")}function WD(t,e){let u=1,n=1,r=On(t,u),s=new Set([e]);for(;t<=r&&r<=e;)s.add(r),u+=1,r=On(t,u);for(r=Nn(e+1,n)-1;t1&&D.count.pop(),D.count.push(c.count[0]),D.string=D.pattern+Hn(D.count),i=a+1;continue}u.isPadded&&(f=VD(a,u,n)),c.string=f+c.pattern+Hn(c.count),s.push(c),i=a+1,D=c}return s}function Kt(t,e,u,n,r){let s=[];for(let i of t){let{string:D}=i;!n&&!xn(e,"string",D)&&s.push(u+D),n&&xn(e,"string",D)&&s.push(u+D)}return s}function jD(t,e){let u=[];for(let n=0;ne?1:e>t?-1:0}function xn(t,e,u){return t.some(n=>n[e]===u)}function On(t,e){return Number(String(t).slice(0,-e)+"9".repeat(e))}function Nn(t,e){return t-t%Math.pow(10,e)}function Hn(t){let[e=0,u=""]=t;return u||e>1?`{${e+(u?","+u:"")}}`:""}function KD(t,e,u){return`[${t}${e-t===1?"":"-"}${e}]`}function Pn(t){return/^-?(0+)\d/.test(t)}function VD(t,e,u){if(!e.isPadded)return t;let n=Math.abs(e.maxLen-String(t).length),r=u.relaxZeros!==!1;switch(n){case 0:return"";case 1:return r?"0?":"0";case 2:return r?"0{0,2}":"00";default:return r?`0{0,${n}}`:`0{${n}}`}}ae.cache={},ae.clearCache=()=>ae.cache={};var zD=ae;/*! + * fill-range + * + * Copyright (c) 2014-present, Jon Schlinkert. + * Licensed under the MIT License. + */const YD=me.default,Ln=zD,In=t=>t!==null&&typeof t=="object"&&!Array.isArray(t),qD=t=>e=>t===!0?Number(e):String(e),Vt=t=>typeof t=="number"||typeof t=="string"&&t!=="",ve=t=>Number.isInteger(+t),zt=t=>{let e=`${t}`,u=-1;if(e[0]==="-"&&(e=e.slice(1)),e==="0")return!1;for(;e[++u]==="0";);return u>0},XD=(t,e,u)=>typeof t=="string"||typeof e=="string"?!0:u.stringify===!0,QD=(t,e,u)=>{if(e>0){let n=t[0]==="-"?"-":"";n&&(t=t.slice(1)),t=n+t.padStart(n?e-1:e,"0")}return u===!1?String(t):t},kn=(t,e)=>{let u=t[0]==="-"?"-":"";for(u&&(t=t.slice(1),e--);t.length{t.negatives.sort((i,D)=>iD?1:0),t.positives.sort((i,D)=>iD?1:0);let u=e.capture?"":"?:",n="",r="",s;return t.positives.length&&(n=t.positives.join("|")),t.negatives.length&&(r=`-(${u}${t.negatives.join("|")})`),n&&r?s=`${n}|${r}`:s=n||r,e.wrap?`(${u}${s})`:s},Mn=(t,e,u,n)=>{if(u)return Ln(t,e,{wrap:!1,...n});let r=String.fromCharCode(t);if(t===e)return r;let s=String.fromCharCode(e);return`[${r}-${s}]`},Wn=(t,e,u)=>{if(Array.isArray(t)){let n=u.wrap===!0,r=u.capture?"":"?:";return n?`(${r}${t.join("|")})`:t.join("|")}return Ln(t,e,u)},Gn=(...t)=>new RangeError("Invalid range arguments: "+YD.inspect(...t)),jn=(t,e,u)=>{if(u.strictRanges===!0)throw Gn([t,e]);return[]},JD=(t,e)=>{if(e.strictRanges===!0)throw new TypeError(`Expected step "${t}" to be a number`);return[]},eo=(t,e,u=1,n={})=>{let r=Number(t),s=Number(e);if(!Number.isInteger(r)||!Number.isInteger(s)){if(n.strictRanges===!0)throw Gn([t,e]);return[]}r===0&&(r=0),s===0&&(s=0);let i=r>s,D=String(t),o=String(e),a=String(u);u=Math.max(Math.abs(u),1);let c=zt(D)||zt(o)||zt(a),f=c?Math.max(D.length,o.length,a.length):0,l=c===!1&&XD(t,e,n)===!1,p=n.transform||qD(l);if(n.toRegex&&u===1)return Mn(kn(t,f),kn(e,f),!0,n);let C={negatives:[],positives:[]},F=H=>C[H<0?"negatives":"positives"].push(Math.abs(H)),A=[],B=0;for(;i?r>=s:r<=s;)n.toRegex===!0&&u>1?F(r):A.push(QD(p(r,B),f,l)),r=i?r-u:r+u,B++;return n.toRegex===!0?u>1?ZD(C,n):Wn(A,null,{wrap:!1,...n}):A},to=(t,e,u=1,n={})=>{if(!ve(t)&&t.length>1||!ve(e)&&e.length>1)return jn(t,e,n);let r=n.transform||(l=>String.fromCharCode(l)),s=`${t}`.charCodeAt(0),i=`${e}`.charCodeAt(0),D=s>i,o=Math.min(s,i),a=Math.max(s,i);if(n.toRegex&&u===1)return Mn(o,a,!1,n);let c=[],f=0;for(;D?s>=i:s<=i;)c.push(r(s,f)),s=D?s-u:s+u,f++;return n.toRegex===!0?Wn(c,null,{wrap:!1,options:n}):c},Ze=(t,e,u,n={})=>{if(e==null&&Vt(t))return[t];if(!Vt(t)||!Vt(e))return jn(t,e,n);if(typeof u=="function")return Ze(t,e,1,{transform:u});if(In(u))return Ze(t,e,0,u);let r={...n};return r.capture===!0&&(r.wrap=!0),u=u||r.step||1,ve(u)?ve(t)&&ve(e)?eo(t,e,u,r):to(t,e,Math.max(Math.abs(u),1),r):u!=null&&!In(u)?JD(u,r):Ze(t,e,1,u)};var Un=Ze;const uo=Un,Kn=Qe,no=(t,e={})=>{let u=(n,r={})=>{let s=Kn.isInvalidBrace(r),i=n.invalid===!0&&e.escapeInvalid===!0,D=s===!0||i===!0,o=e.escapeInvalid===!0?"\\":"",a="";if(n.isOpen===!0||n.isClose===!0)return o+n.value;if(n.type==="open")return D?o+n.value:"(";if(n.type==="close")return D?o+n.value:")";if(n.type==="comma")return n.prev.type==="comma"?"":D?n.value:"|";if(n.value)return n.value;if(n.nodes&&n.ranges>0){let c=Kn.reduce(n.nodes),f=uo(...c,{...e,wrap:!1,toRegex:!0});if(f.length!==0)return c.length>1&&f.length>1?`(${f})`:f}if(n.nodes)for(let c of n.nodes)a+=u(c,n);return a};return u(t)};var ro=no;const so=Un,Vn=Ut,Ce=Qe,le=(t="",e="",u=!1)=>{let n=[];if(t=[].concat(t),e=[].concat(e),!e.length)return t;if(!t.length)return u?Ce.flatten(e).map(r=>`{${r}}`):e;for(let r of t)if(Array.isArray(r))for(let s of r)n.push(le(s,e,u));else for(let s of e)u===!0&&typeof s=="string"&&(s=`{${s}}`),n.push(Array.isArray(s)?le(r,s,u):r+s);return Ce.flatten(n)},io=(t,e={})=>{let u=e.rangeLimit===void 0?1e3:e.rangeLimit,n=(r,s={})=>{r.queue=[];let i=s,D=s.queue;for(;i.type!=="brace"&&i.type!=="root"&&i.parent;)i=i.parent,D=i.queue;if(r.invalid||r.dollar){D.push(le(D.pop(),Vn(r,e)));return}if(r.type==="brace"&&r.invalid!==!0&&r.nodes.length===2){D.push(le(D.pop(),["{}"]));return}if(r.nodes&&r.ranges>0){let f=Ce.reduce(r.nodes);if(Ce.exceedsLimit(...f,e.step,u))throw new RangeError("expanded array length exceeds range limit. Use options.rangeLimit to increase or disable the limit.");let l=so(...f,e);l.length===0&&(l=Vn(r,e)),D.push(le(D.pop(),l)),r.nodes=[];return}let o=Ce.encloseBrace(r),a=r.queue,c=r;for(;c.type!=="brace"&&c.type!=="root"&&c.parent;)c=c.parent,a=c.queue;for(let f=0;f",CHAR_RIGHT_CURLY_BRACE:"}",CHAR_RIGHT_SQUARE_BRACKET:"]",CHAR_SEMICOLON:";",CHAR_SINGLE_QUOTE:"'",CHAR_SPACE:" ",CHAR_TAB:" ",CHAR_UNDERSCORE:"_",CHAR_VERTICAL_LINE:"|",CHAR_ZERO_WIDTH_NOBREAK_SPACE:"\uFEFF"};const ao=Ut,{MAX_LENGTH:zn,CHAR_BACKSLASH:Yt,CHAR_BACKTICK:lo,CHAR_COMMA:co,CHAR_DOT:fo,CHAR_LEFT_PARENTHESES:ho,CHAR_RIGHT_PARENTHESES:Eo,CHAR_LEFT_CURLY_BRACE:po,CHAR_RIGHT_CURLY_BRACE:Co,CHAR_LEFT_SQUARE_BRACKET:Yn,CHAR_RIGHT_SQUARE_BRACKET:qn,CHAR_DOUBLE_QUOTE:Fo,CHAR_SINGLE_QUOTE:go,CHAR_NO_BREAK_SPACE:_o,CHAR_ZERO_WIDTH_NOBREAK_SPACE:mo}=oo,Ao=(t,e={})=>{if(typeof t!="string")throw new TypeError("Expected a string");let u=e||{},n=typeof u.maxLength=="number"?Math.min(zn,u.maxLength):zn;if(t.length>n)throw new SyntaxError(`Input length (${t.length}), exceeds max characters (${n})`);let r={type:"root",input:t,nodes:[]},s=[r],i=r,D=r,o=0,a=t.length,c=0,f=0,l;const p=()=>t[c++],C=F=>{if(F.type==="text"&&D.type==="dot"&&(D.type="text"),D&&D.type==="text"&&F.type==="text"){D.value+=F.value;return}return i.nodes.push(F),F.parent=i,F.prev=D,D=F,F};for(C({type:"bos"});c0){if(i.ranges>0){i.ranges=0;let F=i.nodes.shift();i.nodes=[F,{type:"text",value:ao(i)}]}C({type:"comma",value:l}),i.commas++;continue}if(l===fo&&f>0&&i.commas===0){let F=i.nodes;if(f===0||F.length===0){C({type:"text",value:l});continue}if(D.type==="dot"){if(i.range=[],D.value+=l,D.type="range",i.nodes.length!==3&&i.nodes.length!==5){i.invalid=!0,i.ranges=0,D.type="text";continue}i.ranges++,i.args=[];continue}if(D.type==="range"){F.pop();let A=F[F.length-1];A.value+=D.value+l,D=A,i.ranges--;continue}C({type:"dot",value:l});continue}C({type:"text",value:l})}do if(i=s.pop(),i.type!=="root"){i.nodes.forEach(B=>{B.nodes||(B.type==="open"&&(B.isOpen=!0),B.type==="close"&&(B.isClose=!0),B.nodes||(B.type="text"),B.invalid=!0)});let F=s[s.length-1],A=F.nodes.indexOf(i);F.nodes.splice(A,1,...i.nodes)}while(s.length>0);return C({type:"eos"}),r};var yo=Ao;const Xn=Ut,wo=ro,Ro=Do,bo=yo,Y=(t,e={})=>{let u=[];if(Array.isArray(t))for(let n of t){let r=Y.create(n,e);Array.isArray(r)?u.push(...r):u.push(r)}else u=[].concat(Y.create(t,e));return e&&e.expand===!0&&e.nodupes===!0&&(u=[...new Set(u)]),u};Y.parse=(t,e={})=>bo(t,e),Y.stringify=(t,e={})=>Xn(typeof t=="string"?Y.parse(t,e):t,e),Y.compile=(t,e={})=>(typeof t=="string"&&(t=Y.parse(t,e)),wo(t,e)),Y.expand=(t,e={})=>{typeof t=="string"&&(t=Y.parse(t,e));let u=Ro(t,e);return e.noempty===!0&&(u=u.filter(Boolean)),e.nodupes===!0&&(u=[...new Set(u)]),u},Y.create=(t,e={})=>t===""||t.length<3?[t]:e.expand!==!0?Y.compile(t,e):Y.expand(t,e);var vo=Y,Qn={exports:{}},Bo=["3dm","3ds","3g2","3gp","7z","a","aac","adp","ai","aif","aiff","alz","ape","apk","appimage","ar","arj","asf","au","avi","bak","baml","bh","bin","bk","bmp","btif","bz2","bzip2","cab","caf","cgm","class","cmx","cpio","cr2","cur","dat","dcm","deb","dex","djvu","dll","dmg","dng","doc","docm","docx","dot","dotm","dra","DS_Store","dsk","dts","dtshd","dvb","dwg","dxf","ecelp4800","ecelp7470","ecelp9600","egg","eol","eot","epub","exe","f4v","fbs","fh","fla","flac","flatpak","fli","flv","fpx","fst","fvt","g3","gh","gif","graffle","gz","gzip","h261","h263","h264","icns","ico","ief","img","ipa","iso","jar","jpeg","jpg","jpgv","jpm","jxr","key","ktx","lha","lib","lvp","lz","lzh","lzma","lzo","m3u","m4a","m4v","mar","mdi","mht","mid","midi","mj2","mka","mkv","mmr","mng","mobi","mov","movie","mp3","mp4","mp4a","mpeg","mpg","mpga","mxu","nef","npx","numbers","nupkg","o","odp","ods","odt","oga","ogg","ogv","otf","ott","pages","pbm","pcx","pdb","pdf","pea","pgm","pic","png","pnm","pot","potm","potx","ppa","ppam","ppm","pps","ppsm","ppsx","ppt","pptm","pptx","psd","pya","pyc","pyo","pyv","qt","rar","ras","raw","resources","rgb","rip","rlc","rmf","rmvb","rpm","rtf","rz","s3m","s7z","scpt","sgi","shar","snap","sil","sketch","slk","smv","snk","so","stl","suo","sub","swf","tar","tbz","tbz2","tga","tgz","thmx","tif","tiff","tlz","ttc","ttf","txz","udf","uvh","uvi","uvm","uvp","uvs","uvu","viv","vob","war","wav","wax","wbmp","wdp","weba","webm","webp","whl","wim","wm","wma","wmv","wmx","woff","woff2","wrm","wvx","xbm","xif","xla","xlam","xls","xlsb","xlsm","xlsx","xlt","xltm","xltx","xm","xmind","xpi","xpm","xwd","xz","z","zip","zipx"];(function(t){t.exports=Bo})(Qn);const So=K.default,$o=Qn.exports,To=new Set($o);var xo=t=>To.has(So.extname(t).slice(1).toLowerCase()),Je={};(function(t){const{sep:e}=K.default,{platform:u}=process,n=mu.default;t.EV_ALL="all",t.EV_READY="ready",t.EV_ADD="add",t.EV_CHANGE="change",t.EV_ADD_DIR="addDir",t.EV_UNLINK="unlink",t.EV_UNLINK_DIR="unlinkDir",t.EV_RAW="raw",t.EV_ERROR="error",t.STR_DATA="data",t.STR_END="end",t.STR_CLOSE="close",t.FSEVENT_CREATED="created",t.FSEVENT_MODIFIED="modified",t.FSEVENT_DELETED="deleted",t.FSEVENT_MOVED="moved",t.FSEVENT_CLONED="cloned",t.FSEVENT_UNKNOWN="unknown",t.FSEVENT_TYPE_FILE="file",t.FSEVENT_TYPE_DIRECTORY="directory",t.FSEVENT_TYPE_SYMLINK="symlink",t.KEY_LISTENERS="listeners",t.KEY_ERR="errHandlers",t.KEY_RAW="rawEmitters",t.HANDLER_KEYS=[t.KEY_LISTENERS,t.KEY_ERR,t.KEY_RAW],t.DOT_SLASH=`.${e}`,t.BACK_SLASH_RE=/\\/g,t.DOUBLE_SLASH_RE=/\/\//,t.SLASH_OR_BACK_SLASH_RE=/[/\\]/,t.DOT_RE=/\..*\.(sw[px])$|~$|\.subl.*\.tmp/,t.REPLACER_RE=/^\.[/\\]/,t.SLASH="/",t.SLASH_SLASH="//",t.BRACE_START="{",t.BANG="!",t.ONE_DOT=".",t.TWO_DOTS="..",t.STAR="*",t.GLOBSTAR="**",t.ROOT_GLOBSTAR="/**/*",t.SLASH_GLOBSTAR="/**",t.DIR_SUFFIX="Dir",t.ANYMATCH_OPTS={dot:!0},t.STRING_TYPE="string",t.FUNCTION_TYPE="function",t.EMPTY_STR="",t.EMPTY_FN=()=>{},t.IDENTITY_FN=r=>r,t.isWindows=u==="win32",t.isMacos=u==="darwin",t.isLinux=u==="linux",t.isIBMi=n.type()==="OS400"})(Je);const ue=De.default,L=K.default,{promisify:Be}=me.default,Oo=xo,{isWindows:No,isLinux:Ho,EMPTY_FN:Po,EMPTY_STR:Lo,KEY_LISTENERS:Fe,KEY_ERR:qt,KEY_RAW:Se,HANDLER_KEYS:Io,EV_CHANGE:et,EV_ADD:tt,EV_ADD_DIR:ko,EV_ERROR:Zn,STR_DATA:Mo,STR_END:Wo,BRACE_START:Go,STAR:jo}=Je,Uo="watch",Ko=Be(ue.open),Jn=Be(ue.stat),Vo=Be(ue.lstat),zo=Be(ue.close),Xt=Be(ue.realpath),Yo={lstat:Vo,stat:Jn},Qt=(t,e)=>{t instanceof Set?t.forEach(e):e(t)},$e=(t,e,u)=>{let n=t[e];n instanceof Set||(t[e]=n=new Set([n])),n.add(u)},qo=t=>e=>{const u=t[e];u instanceof Set?u.clear():delete t[e]},Te=(t,e,u)=>{const n=t[e];n instanceof Set?n.delete(u):n===u&&delete t[e]},er=t=>t instanceof Set?t.size===0:!t,ut=new Map;function tr(t,e,u,n,r){const s=(i,D)=>{u(t),r(i,D,{watchedPath:t}),D&&t!==D&&nt(L.resolve(t,D),Fe,L.join(t,D))};try{return ue.watch(t,e,s)}catch(i){n(i)}}const nt=(t,e,u,n,r)=>{const s=ut.get(t);!s||Qt(s[e],i=>{i(u,n,r)})},Xo=(t,e,u,n)=>{const{listener:r,errHandler:s,rawEmitter:i}=n;let D=ut.get(e),o;if(!u.persistent)return o=tr(t,u,r,s,i),o.close.bind(o);if(D)$e(D,Fe,r),$e(D,qt,s),$e(D,Se,i);else{if(o=tr(t,u,nt.bind(null,e,Fe),s,nt.bind(null,e,Se)),!o)return;o.on(Zn,async a=>{const c=nt.bind(null,e,qt);if(D.watcherUnusable=!0,No&&a.code==="EPERM")try{const f=await Ko(t,"r");await zo(f),c(a)}catch{}else c(a)}),D={listeners:r,errHandlers:s,rawEmitters:i,watcher:o},ut.set(e,D)}return()=>{Te(D,Fe,r),Te(D,qt,s),Te(D,Se,i),er(D.listeners)&&(D.watcher.close(),ut.delete(e),Io.forEach(qo(D)),D.watcher=void 0,Object.freeze(D))}},Zt=new Map,Qo=(t,e,u,n)=>{const{listener:r,rawEmitter:s}=n;let i=Zt.get(e);const D=i&&i.options;return D&&(D.persistentu.interval)&&(i.listeners,i.rawEmitters,ue.unwatchFile(e),i=void 0),i?($e(i,Fe,r),$e(i,Se,s)):(i={listeners:r,rawEmitters:s,options:u,watcher:ue.watchFile(e,u,(o,a)=>{Qt(i.rawEmitters,f=>{f(et,e,{curr:o,prev:a})});const c=o.mtimeMs;(o.size!==a.size||c>a.mtimeMs||c===0)&&Qt(i.listeners,f=>f(t,o))})},Zt.set(e,i)),()=>{Te(i,Fe,r),Te(i,Se,s),er(i.listeners)&&(Zt.delete(e),ue.unwatchFile(e),i.options=i.watcher=void 0,Object.freeze(i))}};class Zo{constructor(e){this.fsw=e,this._boundHandleError=u=>e._handleError(u)}_watchWithNodeFs(e,u){const n=this.fsw.options,r=L.dirname(e),s=L.basename(e);this.fsw._getWatchedDir(r).add(s);const D=L.resolve(e),o={persistent:n.persistent};u||(u=Po);let a;return n.usePolling?(o.interval=n.enableBinaryInterval&&Oo(s)?n.binaryInterval:n.interval,a=Qo(e,D,o,{listener:u,rawEmitter:this.fsw._emitRaw})):a=Xo(e,D,o,{listener:u,errHandler:this._boundHandleError,rawEmitter:this.fsw._emitRaw}),a}_handleFile(e,u,n){if(this.fsw.closed)return;const r=L.dirname(e),s=L.basename(e),i=this.fsw._getWatchedDir(r);let D=u;if(i.has(s))return;const o=async(c,f)=>{if(!!this.fsw._throttle(Uo,e,5)){if(!f||f.mtimeMs===0)try{const l=await Jn(e);if(this.fsw.closed)return;const p=l.atimeMs,C=l.mtimeMs;(!p||p<=C||C!==D.mtimeMs)&&this.fsw._emit(et,e,l),Ho&&D.ino!==l.ino?(this.fsw._closeFile(c),D=l,this.fsw._addPathCloser(c,this._watchWithNodeFs(e,o))):D=l}catch{this.fsw._remove(r,s)}else if(i.has(s)){const l=f.atimeMs,p=f.mtimeMs;(!l||l<=p||p!==D.mtimeMs)&&this.fsw._emit(et,e,f),D=f}}},a=this._watchWithNodeFs(e,o);if(!(n&&this.fsw.options.ignoreInitial)&&this.fsw._isntIgnored(e)){if(!this.fsw._throttle(tt,e,0))return;this.fsw._emit(tt,e,u)}return a}async _handleSymlink(e,u,n,r){if(this.fsw.closed)return;const s=e.fullPath,i=this.fsw._getWatchedDir(u);if(!this.fsw.options.followSymlinks){this.fsw._incrReadyCount();let D;try{D=await Xt(n)}catch{return this.fsw._emitReady(),!0}return this.fsw.closed?void 0:(i.has(r)?this.fsw._symlinkPaths.get(s)!==D&&(this.fsw._symlinkPaths.set(s,D),this.fsw._emit(et,n,e.stats)):(i.add(r),this.fsw._symlinkPaths.set(s,D),this.fsw._emit(tt,n,e.stats)),this.fsw._emitReady(),!0)}if(this.fsw._symlinkPaths.has(s))return!0;this.fsw._symlinkPaths.set(s,!0)}_handleRead(e,u,n,r,s,i,D){if(e=L.join(e,Lo),!n.hasGlob&&(D=this.fsw._throttle("readdir",e,1e3),!D))return;const o=this.fsw._getWatchedDir(n.path),a=new Set;let c=this.fsw._readdirp(e,{fileFilter:f=>n.filterPath(f),directoryFilter:f=>n.filterDir(f),depth:0}).on(Mo,async f=>{if(this.fsw.closed){c=void 0;return}const l=f.path;let p=L.join(e,l);if(a.add(l),!(f.stats.isSymbolicLink()&&await this._handleSymlink(f,e,p,l))){if(this.fsw.closed){c=void 0;return}(l===r||!r&&!o.has(l))&&(this.fsw._incrReadyCount(),p=L.join(s,L.relative(s,p)),this._addToNodeFs(p,u,n,i+1))}}).on(Zn,this._boundHandleError);return new Promise(f=>c.once(Wo,()=>{if(this.fsw.closed){c=void 0;return}const l=D?D.clear():!1;f(),o.getChildren().filter(p=>p!==e&&!a.has(p)&&(!n.hasGlob||n.filterPath({fullPath:L.resolve(e,p)}))).forEach(p=>{this.fsw._remove(e,p)}),c=void 0,l&&this._handleRead(e,!1,n,r,s,i,D)}))}async _handleDir(e,u,n,r,s,i,D){const o=this.fsw._getWatchedDir(L.dirname(e)),a=o.has(L.basename(e));!(n&&this.fsw.options.ignoreInitial)&&!s&&!a&&(!i.hasGlob||i.globFilter(e))&&this.fsw._emit(ko,e,u),o.add(L.basename(e)),this.fsw._getWatchedDir(e);let c,f;const l=this.fsw.options.depth;if((l==null||r<=l)&&!this.fsw._symlinkPaths.has(D)){if(!s&&(await this._handleRead(e,n,i,s,e,r,c),this.fsw.closed))return;f=this._watchWithNodeFs(e,(p,C)=>{C&&C.mtimeMs===0||this._handleRead(p,!1,i,s,e,r,c)})}return f}async _addToNodeFs(e,u,n,r,s){const i=this.fsw._emitReady;if(this.fsw._isIgnored(e)||this.fsw.closed)return i(),!1;const D=this.fsw._getWatchHelpers(e,r);!D.hasGlob&&n&&(D.hasGlob=n.hasGlob,D.globFilter=n.globFilter,D.filterPath=o=>n.filterPath(o),D.filterDir=o=>n.filterDir(o));try{const o=await Yo[D.statMethod](D.watchPath);if(this.fsw.closed)return;if(this.fsw._isIgnored(D.watchPath,o))return i(),!1;const a=this.fsw.options.followSymlinks&&!e.includes(jo)&&!e.includes(Go);let c;if(o.isDirectory()){const f=L.resolve(e),l=a?await Xt(e):e;if(this.fsw.closed||(c=await this._handleDir(D.watchPath,o,u,r,s,D,l),this.fsw.closed))return;f!==l&&l!==void 0&&this.fsw._symlinkPaths.set(f,l)}else if(o.isSymbolicLink()){const f=a?await Xt(e):e;if(this.fsw.closed)return;const l=L.dirname(D.watchPath);if(this.fsw._getWatchedDir(l).add(D.watchPath),this.fsw._emit(tt,D.watchPath,o),c=await this._handleDir(l,o,u,r,e,D,f),this.fsw.closed)return;f!==void 0&&this.fsw._symlinkPaths.set(L.resolve(e),f)}else c=this._handleFile(D.watchPath,o,u);return i(),this.fsw._addPathCloser(e,c),!1}catch(o){if(this.fsw._handleError(o))return i(),e}}}var Jo=Zo,Jt={exports:{}};const eu=De.default,I=K.default,{promisify:tu}=me.default;let ge;try{ge=ot.require("fsevents")}catch(t){process.env.CHOKIDAR_PRINT_FSEVENTS_REQUIRE_ERROR&&console.error(t)}if(ge){const t=process.version.match(/v(\d+)\.(\d+)/);if(t&&t[1]&&t[2]){const e=Number.parseInt(t[1],10),u=Number.parseInt(t[2],10);e===8&&u<16&&(ge=void 0)}}const{EV_ADD:uu,EV_CHANGE:ea,EV_ADD_DIR:ur,EV_UNLINK:rt,EV_ERROR:ta,STR_DATA:ua,STR_END:na,FSEVENT_CREATED:ra,FSEVENT_MODIFIED:sa,FSEVENT_DELETED:ia,FSEVENT_MOVED:Da,FSEVENT_UNKNOWN:oa,FSEVENT_TYPE_FILE:aa,FSEVENT_TYPE_DIRECTORY:xe,FSEVENT_TYPE_SYMLINK:nr,ROOT_GLOBSTAR:rr,DIR_SUFFIX:la,DOT_SLASH:sr,FUNCTION_TYPE:nu,EMPTY_FN:ca,IDENTITY_FN:fa}=Je,ha=t=>isNaN(t)?{}:{depth:t},ru=tu(eu.stat),da=tu(eu.lstat),ir=tu(eu.realpath),Ea={stat:ru,lstat:da},ce=new Map,pa=10,Ca=new Set([69888,70400,71424,72704,73472,131328,131840,262912]),Fa=(t,e)=>({stop:ge.watch(t,e)});function ga(t,e,u,n){let r=I.extname(e)?I.dirname(e):e;const s=I.dirname(r);let i=ce.get(r);_a(s)&&(r=s);const D=I.resolve(t),o=D!==e,a=(f,l,p)=>{o&&(f=f.replace(e,D)),(f===D||!f.indexOf(D+I.sep))&&u(f,l,p)};let c=!1;for(const f of ce.keys())if(e.indexOf(I.resolve(f)+I.sep)===0){r=f,i=ce.get(r),c=!0;break}return i||c?i.listeners.add(a):(i={listeners:new Set([a]),rawEmitter:n,watcher:Fa(r,(f,l)=>{if(!i.listeners.size)return;const p=ge.getInfo(f,l);i.listeners.forEach(C=>{C(f,l,p)}),i.rawEmitter(p.event,f,p)})},ce.set(r,i)),()=>{const f=i.listeners;if(f.delete(a),!f.size&&(ce.delete(r),i.watcher))return i.watcher.stop().then(()=>{i.rawEmitter=i.watcher=void 0,Object.freeze(i)})}}const _a=t=>{let e=0;for(const u of ce.keys())if(u.indexOf(t)===0&&(e++,e>=pa))return!0;return!1},ma=()=>ge&&ce.size<128,su=(t,e)=>{let u=0;for(;!t.indexOf(e)&&(t=I.dirname(t))!==e;)u++;return u},Dr=(t,e)=>t.type===xe&&e.isDirectory()||t.type===nr&&e.isSymbolicLink()||t.type===aa&&e.isFile();class Aa{constructor(e){this.fsw=e}checkIgnored(e,u){const n=this.fsw._ignoredPaths;if(this.fsw._isIgnored(e,u))return n.add(e),u&&u.isDirectory()&&n.add(e+rr),!0;n.delete(e),n.delete(e+rr)}addOrChange(e,u,n,r,s,i,D,o){const a=s.has(i)?ea:uu;this.handleEvent(a,e,u,n,r,s,i,D,o)}async checkExists(e,u,n,r,s,i,D,o){try{const a=await ru(e);if(this.fsw.closed)return;Dr(D,a)?this.addOrChange(e,u,n,r,s,i,D,o):this.handleEvent(rt,e,u,n,r,s,i,D,o)}catch(a){a.code==="EACCES"?this.addOrChange(e,u,n,r,s,i,D,o):this.handleEvent(rt,e,u,n,r,s,i,D,o)}}handleEvent(e,u,n,r,s,i,D,o,a){if(!(this.fsw.closed||this.checkIgnored(u)))if(e===rt){const c=o.type===xe;(c||i.has(D))&&this.fsw._remove(s,D,c)}else{if(e===uu){if(o.type===xe&&this.fsw._getWatchedDir(u),o.type===nr&&a.followSymlinks){const f=a.depth===void 0?void 0:su(n,r)+1;return this._addToFsEvents(u,!1,!0,f)}this.fsw._getWatchedDir(s).add(D)}const c=o.type===xe?e+la:e;this.fsw._emit(c,u),c===ur&&this._addToFsEvents(u,!1,!0)}}_watchWithFsEvents(e,u,n,r){if(this.fsw.closed||this.fsw._isIgnored(e))return;const s=this.fsw.options,D=ga(e,u,async(o,a,c)=>{if(this.fsw.closed||s.depth!==void 0&&su(o,u)>s.depth)return;const f=n(I.join(e,I.relative(e,o)));if(r&&!r(f))return;const l=I.dirname(f),p=I.basename(f),C=this.fsw._getWatchedDir(c.type===xe?f:l);if(Ca.has(a)||c.event===oa)if(typeof s.ignored===nu){let F;try{F=await ru(f)}catch{}if(this.fsw.closed||this.checkIgnored(f,F))return;Dr(c,F)?this.addOrChange(f,o,u,l,C,p,c,s):this.handleEvent(rt,f,o,u,l,C,p,c,s)}else this.checkExists(f,o,u,l,C,p,c,s);else switch(c.event){case ra:case sa:return this.addOrChange(f,o,u,l,C,p,c,s);case ia:case Da:return this.checkExists(f,o,u,l,C,p,c,s)}},this.fsw._emitRaw);return this.fsw._emitReady(),D}async _handleFsEventsSymlink(e,u,n,r){if(!(this.fsw.closed||this.fsw._symlinkPaths.has(u))){this.fsw._symlinkPaths.set(u,!0),this.fsw._incrReadyCount();try{const s=await ir(e);if(this.fsw.closed)return;if(this.fsw._isIgnored(s))return this.fsw._emitReady();this.fsw._incrReadyCount(),this._addToFsEvents(s||e,i=>{let D=e;return s&&s!==sr?D=i.replace(s,e):i!==sr&&(D=I.join(e,i)),n(D)},!1,r)}catch(s){if(this.fsw._handleError(s))return this.fsw._emitReady()}}}emitAdd(e,u,n,r,s){const i=n(e),D=u.isDirectory(),o=this.fsw._getWatchedDir(I.dirname(i)),a=I.basename(i);D&&this.fsw._getWatchedDir(i),!o.has(a)&&(o.add(a),(!r.ignoreInitial||s===!0)&&this.fsw._emit(D?ur:uu,i,u))}initWatch(e,u,n,r){if(this.fsw.closed)return;const s=this._watchWithFsEvents(n.watchPath,I.resolve(e||n.watchPath),r,n.globFilter);this.fsw._addPathCloser(u,s)}async _addToFsEvents(e,u,n,r){if(this.fsw.closed)return;const s=this.fsw.options,i=typeof u===nu?u:fa,D=this.fsw._getWatchHelpers(e);try{const o=await Ea[D.statMethod](D.watchPath);if(this.fsw.closed)return;if(this.fsw._isIgnored(D.watchPath,o))throw null;if(o.isDirectory()){if(D.globFilter||this.emitAdd(i(e),o,i,s,n),r&&r>s.depth)return;this.fsw._readdirp(D.watchPath,{fileFilter:a=>D.filterPath(a),directoryFilter:a=>D.filterDir(a),...ha(s.depth-(r||0))}).on(ua,a=>{if(this.fsw.closed||a.stats.isDirectory()&&!D.filterPath(a))return;const c=I.join(D.watchPath,a.path),{fullPath:f}=a;if(D.followSymlinks&&a.stats.isSymbolicLink()){const l=s.depth===void 0?void 0:su(c,I.resolve(D.watchPath))+1;this._handleFsEventsSymlink(c,f,i,l)}else this.emitAdd(c,a.stats,i,s,n)}).on(ta,ca).on(na,()=>{this.fsw._emitReady()})}else this.emitAdd(D.watchPath,o,i,s,n),this.fsw._emitReady()}catch(o){(!o||this.fsw._handleError(o))&&(this.fsw._emitReady(),this.fsw._emitReady())}if(s.persistent&&n!==!0)if(typeof u===nu)this.initWatch(void 0,e,D,i);else{let o;try{o=await ir(D.watchPath)}catch{}this.initWatch(o,e,D,i)}}}Jt.exports=Aa,Jt.exports.canUse=ma;const{EventEmitter:ya}=Pr.default,iu=De.default,v=K.default,{promisify:or}=me.default,wa=AD,Du=Wt.exports.default,Ra=ID,ou=Bn,ba=vo,va=yn,Ba=Jo,ar=Jt.exports,{EV_ALL:au,EV_READY:Sa,EV_ADD:st,EV_CHANGE:Oe,EV_UNLINK:lr,EV_ADD_DIR:$a,EV_UNLINK_DIR:Ta,EV_RAW:xa,EV_ERROR:lu,STR_CLOSE:Oa,STR_END:Na,BACK_SLASH_RE:Ha,DOUBLE_SLASH_RE:cr,SLASH_OR_BACK_SLASH_RE:Pa,DOT_RE:La,REPLACER_RE:Ia,SLASH:cu,SLASH_SLASH:ka,BRACE_START:Ma,BANG:fu,ONE_DOT:fr,TWO_DOTS:Wa,GLOBSTAR:Ga,SLASH_GLOBSTAR:hu,ANYMATCH_OPTS:du,STRING_TYPE:Eu,FUNCTION_TYPE:ja,EMPTY_STR:pu,EMPTY_FN:Ua,isWindows:Ka,isMacos:Va,isIBMi:za}=Je,Ya=or(iu.stat),qa=or(iu.readdir),Cu=(t=[])=>Array.isArray(t)?t:[t],hr=(t,e=[])=>(t.forEach(u=>{Array.isArray(u)?hr(u,e):e.push(u)}),e),dr=t=>{const e=hr(Cu(t));if(!e.every(u=>typeof u===Eu))throw new TypeError(`Non-string provided as watch path: ${e}`);return e.map(pr)},Er=t=>{let e=t.replace(Ha,cu),u=!1;for(e.startsWith(ka)&&(u=!0);e.match(cr);)e=e.replace(cr,cu);return u&&(e=cu+e),e},pr=t=>Er(v.normalize(Er(t))),Cr=(t=pu)=>e=>typeof e!==Eu?e:pr(v.isAbsolute(e)?e:v.join(t,e)),Xa=(t,e)=>v.isAbsolute(t)?t:t.startsWith(fu)?fu+v.join(e,t.slice(1)):v.join(e,t),q=(t,e)=>t[e]===void 0;class Qa{constructor(e,u){this.path=e,this._removeWatcher=u,this.items=new Set}add(e){const{items:u}=this;!u||e!==fr&&e!==Wa&&u.add(e)}async remove(e){const{items:u}=this;if(!u||(u.delete(e),u.size>0))return;const n=this.path;try{await qa(n)}catch{this._removeWatcher&&this._removeWatcher(v.dirname(n),v.basename(n))}}has(e){const{items:u}=this;if(!!u)return u.has(e)}getChildren(){const{items:e}=this;if(!!e)return[...e.values()]}dispose(){this.items.clear(),delete this.path,delete this._removeWatcher,delete this.items,Object.freeze(this)}}const Za="stat",Ja="lstat";class el{constructor(e,u,n,r){this.fsw=r,this.path=e=e.replace(Ia,pu),this.watchPath=u,this.fullWatchPath=v.resolve(u),this.hasGlob=u!==e,e===pu&&(this.hasGlob=!1),this.globSymlink=this.hasGlob&&n?void 0:!1,this.globFilter=this.hasGlob?Du(e,void 0,du):!1,this.dirParts=this.getDirParts(e),this.dirParts.forEach(s=>{s.length>1&&s.pop()}),this.followSymlinks=n,this.statMethod=n?Za:Ja}checkGlobSymlink(e){return this.globSymlink===void 0&&(this.globSymlink=e.fullParentDir===this.fullWatchPath?!1:{realPath:e.fullParentDir,linkPath:this.fullWatchPath}),this.globSymlink?e.fullPath.replace(this.globSymlink.realPath,this.globSymlink.linkPath):e.fullPath}entryPath(e){return v.join(this.watchPath,v.relative(this.watchPath,this.checkGlobSymlink(e)))}filterPath(e){const{stats:u}=e;if(u&&u.isSymbolicLink())return this.filterDir(e);const n=this.entryPath(e);return(this.hasGlob&&typeof this.globFilter===ja?this.globFilter(n):!0)&&this.fsw._isntIgnored(n,u)&&this.fsw._hasReadPermissions(u)}getDirParts(e){if(!this.hasGlob)return[];const u=[];return(e.includes(Ma)?ba.expand(e):[e]).forEach(r=>{u.push(v.relative(this.watchPath,r).split(Pa))}),u}filterDir(e){if(this.hasGlob){const u=this.getDirParts(this.checkGlobSymlink(e));let n=!1;this.unmatchedGlob=!this.dirParts.some(r=>r.every((s,i)=>(s===Ga&&(n=!0),n||!u[0][i]||Du(s,u[0][i],du))))}return!this.unmatchedGlob&&this.fsw._isntIgnored(this.entryPath(e),e.stats)}}class tl extends ya{constructor(e){super();const u={};e&&Object.assign(u,e),this._watched=new Map,this._closers=new Map,this._ignoredPaths=new Set,this._throttled=new Map,this._symlinkPaths=new Map,this._streams=new Set,this.closed=!1,q(u,"persistent")&&(u.persistent=!0),q(u,"ignoreInitial")&&(u.ignoreInitial=!1),q(u,"ignorePermissionErrors")&&(u.ignorePermissionErrors=!1),q(u,"interval")&&(u.interval=100),q(u,"binaryInterval")&&(u.binaryInterval=300),q(u,"disableGlobbing")&&(u.disableGlobbing=!1),u.enableBinaryInterval=u.binaryInterval!==u.interval,q(u,"useFsEvents")&&(u.useFsEvents=!u.usePolling),ar.canUse()||(u.useFsEvents=!1),q(u,"usePolling")&&!u.useFsEvents&&(u.usePolling=Va),za&&(u.usePolling=!0);const r=process.env.CHOKIDAR_USEPOLLING;if(r!==void 0){const o=r.toLowerCase();o==="false"||o==="0"?u.usePolling=!1:o==="true"||o==="1"?u.usePolling=!0:u.usePolling=!!o}const s=process.env.CHOKIDAR_INTERVAL;s&&(u.interval=Number.parseInt(s,10)),q(u,"atomic")&&(u.atomic=!u.usePolling&&!u.useFsEvents),u.atomic&&(this._pendingUnlinks=new Map),q(u,"followSymlinks")&&(u.followSymlinks=!0),q(u,"awaitWriteFinish")&&(u.awaitWriteFinish=!1),u.awaitWriteFinish===!0&&(u.awaitWriteFinish={});const i=u.awaitWriteFinish;i&&(i.stabilityThreshold||(i.stabilityThreshold=2e3),i.pollInterval||(i.pollInterval=100),this._pendingWrites=new Map),u.ignored&&(u.ignored=Cu(u.ignored));let D=0;this._emitReady=()=>{D++,D>=this._readyCount&&(this._emitReady=Ua,this._readyEmitted=!0,process.nextTick(()=>this.emit(Sa)))},this._emitRaw=(...o)=>this.emit(xa,...o),this._readyEmitted=!1,this.options=u,u.useFsEvents?this._fsEventsHandler=new ar(this):this._nodeFsHandler=new Ba(this),Object.freeze(u)}add(e,u,n){const{cwd:r,disableGlobbing:s}=this.options;this.closed=!1;let i=dr(e);return r&&(i=i.map(D=>{const o=Xa(D,r);return s||!ou(D)?o:va(o)})),i=i.filter(D=>D.startsWith(fu)?(this._ignoredPaths.add(D.slice(1)),!1):(this._ignoredPaths.delete(D),this._ignoredPaths.delete(D+hu),this._userIgnored=void 0,!0)),this.options.useFsEvents&&this._fsEventsHandler?(this._readyCount||(this._readyCount=i.length),this.options.persistent&&(this._readyCount*=2),i.forEach(D=>this._fsEventsHandler._addToFsEvents(D))):(this._readyCount||(this._readyCount=0),this._readyCount+=i.length,Promise.all(i.map(async D=>{const o=await this._nodeFsHandler._addToNodeFs(D,!n,0,0,u);return o&&this._emitReady(),o})).then(D=>{this.closed||D.filter(o=>o).forEach(o=>{this.add(v.dirname(o),v.basename(u||o))})})),this}unwatch(e){if(this.closed)return this;const u=dr(e),{cwd:n}=this.options;return u.forEach(r=>{!v.isAbsolute(r)&&!this._closers.has(r)&&(n&&(r=v.join(n,r)),r=v.resolve(r)),this._closePath(r),this._ignoredPaths.add(r),this._watched.has(r)&&this._ignoredPaths.add(r+hu),this._userIgnored=void 0}),this}close(){if(this.closed)return this._closePromise;this.closed=!0,this.removeAllListeners();const e=[];return this._closers.forEach(u=>u.forEach(n=>{const r=n();r instanceof Promise&&e.push(r)})),this._streams.forEach(u=>u.destroy()),this._userIgnored=void 0,this._readyCount=0,this._readyEmitted=!1,this._watched.forEach(u=>u.dispose()),["closers","watched","streams","symlinkPaths","throttled"].forEach(u=>{this[`_${u}`].clear()}),this._closePromise=e.length?Promise.all(e).then(()=>{}):Promise.resolve(),this._closePromise}getWatched(){const e={};return this._watched.forEach((u,n)=>{const r=this.options.cwd?v.relative(this.options.cwd,n):n;e[r||fr]=u.getChildren().sort()}),e}emitWithAll(e,u){this.emit(...u),e!==lu&&this.emit(au,...u)}async _emit(e,u,n,r,s){if(this.closed)return;const i=this.options;Ka&&(u=v.normalize(u)),i.cwd&&(u=v.relative(i.cwd,u));const D=[e,u];s!==void 0?D.push(n,r,s):r!==void 0?D.push(n,r):n!==void 0&&D.push(n);const o=i.awaitWriteFinish;let a;if(o&&(a=this._pendingWrites.get(u)))return a.lastChange=new Date,this;if(i.atomic){if(e===lr)return this._pendingUnlinks.set(u,D),setTimeout(()=>{this._pendingUnlinks.forEach((c,f)=>{this.emit(...c),this.emit(au,...c),this._pendingUnlinks.delete(f)})},typeof i.atomic=="number"?i.atomic:100),this;e===st&&this._pendingUnlinks.has(u)&&(e=D[0]=Oe,this._pendingUnlinks.delete(u))}if(o&&(e===st||e===Oe)&&this._readyEmitted){const c=(f,l)=>{f?(e=D[0]=lu,D[1]=f,this.emitWithAll(e,D)):l&&(D.length>2?D[2]=l:D.push(l),this.emitWithAll(e,D))};return this._awaitWriteFinish(u,o.stabilityThreshold,e,c),this}if(e===Oe&&!this._throttle(Oe,u,50))return this;if(i.alwaysStat&&n===void 0&&(e===st||e===$a||e===Oe)){const c=i.cwd?v.join(i.cwd,u):u;let f;try{f=await Ya(c)}catch{}if(!f||this.closed)return;D.push(f)}return this.emitWithAll(e,D),this}_handleError(e){const u=e&&e.code;return e&&u!=="ENOENT"&&u!=="ENOTDIR"&&(!this.options.ignorePermissionErrors||u!=="EPERM"&&u!=="EACCES")&&this.emit(lu,e),e||this.closed}_throttle(e,u,n){this._throttled.has(e)||this._throttled.set(e,new Map);const r=this._throttled.get(e),s=r.get(u);if(s)return s.count++,!1;let i;const D=()=>{const a=r.get(u),c=a?a.count:0;return r.delete(u),clearTimeout(i),a&&clearTimeout(a.timeoutObject),c};i=setTimeout(D,n);const o={timeoutObject:i,clear:D,count:0};return r.set(u,o),o}_incrReadyCount(){return this._readyCount++}_awaitWriteFinish(e,u,n,r){let s,i=e;this.options.cwd&&!v.isAbsolute(e)&&(i=v.join(this.options.cwd,e));const D=new Date,o=a=>{iu.stat(i,(c,f)=>{if(c||!this._pendingWrites.has(e)){c&&c.code!=="ENOENT"&&r(c);return}const l=Number(new Date);a&&f.size!==a.size&&(this._pendingWrites.get(e).lastChange=l);const p=this._pendingWrites.get(e);l-p.lastChange>=u?(this._pendingWrites.delete(e),r(void 0,f)):s=setTimeout(o,this.options.awaitWriteFinish.pollInterval,f)})};this._pendingWrites.has(e)||(this._pendingWrites.set(e,{lastChange:D,cancelWait:()=>(this._pendingWrites.delete(e),clearTimeout(s),n)}),s=setTimeout(o,this.options.awaitWriteFinish.pollInterval))}_getGlobIgnored(){return[...this._ignoredPaths.values()]}_isIgnored(e,u){if(this.options.atomic&&La.test(e))return!0;if(!this._userIgnored){const{cwd:n}=this.options,r=this.options.ignored,s=r&&r.map(Cr(n)),i=Cu(s).filter(o=>typeof o===Eu&&!ou(o)).map(o=>o+hu),D=this._getGlobIgnored().map(Cr(n)).concat(s,i);this._userIgnored=Du(D,void 0,du)}return this._userIgnored([e,u])}_isntIgnored(e,u){return!this._isIgnored(e,u)}_getWatchHelpers(e,u){const n=u||this.options.disableGlobbing||!ou(e)?e:Ra(e),r=this.options.followSymlinks;return new el(e,n,r,this)}_getWatchedDir(e){this._boundRemove||(this._boundRemove=this._remove.bind(this));const u=v.resolve(e);return this._watched.has(u)||this._watched.set(u,new Qa(u,this._boundRemove)),this._watched.get(u)}_hasReadPermissions(e){if(this.options.ignorePermissionErrors)return!0;const n=(e&&Number.parseInt(e.mode,10))&511,r=Number.parseInt(n.toString(8)[0],10);return Boolean(4&r)}_remove(e,u,n){const r=v.join(e,u),s=v.resolve(r);if(n=n!=null?n:this._watched.has(r)||this._watched.has(s),!this._throttle("remove",r,100))return;!n&&!this.options.useFsEvents&&this._watched.size===1&&this.add(e,u,!0),this._getWatchedDir(r).getChildren().forEach(l=>this._remove(r,l));const o=this._getWatchedDir(e),a=o.has(u);o.remove(u),this._symlinkPaths.has(s)&&this._symlinkPaths.delete(s);let c=r;if(this.options.cwd&&(c=v.relative(this.options.cwd,r)),this.options.awaitWriteFinish&&this._pendingWrites.has(c)&&this._pendingWrites.get(c).cancelWait()===st)return;this._watched.delete(r),this._watched.delete(s);const f=n?Ta:lr;a&&!this._isIgnored(r)&&this._emit(f,r),this.options.useFsEvents||this._closePath(r)}_closePath(e){this._closeFile(e);const u=v.dirname(e);this._getWatchedDir(u).remove(v.basename(e))}_closeFile(e){const u=this._closers.get(e);!u||(u.forEach(n=>n()),this._closers.delete(e))}_addPathCloser(e,u){if(!u)return;let n=this._closers.get(e);n||(n=[],this._closers.set(e,n)),n.push(u)}_readdirp(e,u){if(this.closed)return;const n={type:au,alwaysStat:!0,lstat:!0,...u};let r=wa(e,n);return this._streams.add(r),r.once(Oa,()=>{r=void 0}),r.once(Na,()=>{r&&(this._streams.delete(r),r=void 0)}),r}}const ul=(t,e)=>{const u=new tl(e);return u.add(t),u};var nl=ul;const Fu=(t=!0)=>{let e=!1;return u=>{if(e||u==="unknown-flag")return!0;if(u==="argument")return e=!0,t}};function Fr(t,e=process.argv.slice(2)){return yu(t,e,{ignore:Fu()}),e}let fe=!0;const _e=typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{};let gr=0;if(_e.process&&_e.process.env&&_e.process.stdout){const{FORCE_COLOR:t,NODE_DISABLE_COLORS:e,TERM:u}=_e.process.env;e||t==="0"?fe=!1:t==="1"?fe=!0:u==="dumb"?fe=!1:"CI"in _e.process.env&&["TRAVIS","CIRCLECI","APPVEYOR","GITLAB_CI","GITHUB_ACTIONS","BUILDKITE","DRONE"].some(n=>n in _e.process.env)?fe=!0:fe=process.stdout.isTTY,fe&&(gr=u&&u.endsWith("-256color")?2:1)}let _r={enabled:fe,supportLevel:gr};function mr(t,e,u=1){const n=`\x1B[${t}m`,r=`\x1B[${e}m`,s=new RegExp(`\\x1b\\[${e}m`,"g");return i=>_r.enabled&&_r.supportLevel>=u?n+(""+i).replace(s,n)+r:""+i}const rl=mr(90,39),sl=mr(96,39),il=()=>new Date().toLocaleTimeString(),Dl=(...t)=>console.log(rl(il()),sl("[tsx]"),...t),ol="\x1Bc";function al(t,e){let u;return()=>{u&&clearTimeout(u),u=setTimeout(()=>t(),e)}}function ll(t){return t&&"type"in t&&t.type==="dependency"}const Ar={noCache:{type:Boolean,description:"Disable caching",default:!1},tsconfig:{type:String,description:"Custom tsconfig.json path"},clearScreen:{type:Boolean,description:"Clearing the screen on rerun",default:!0},ignore:{type:[String],description:"Paths & globs to exclude from being watched"}},cl=ui({name:"watch",parameters:[" +``` + +### UMD + +To load this module directly into older browsers you can use the [UMD (Universal Module Definition)](https://github.com/umdjs/umd) builds from any of the following CDNs: + +**Using [UNPKG](https://unpkg.com/uuid@latest/dist/umd/)**: + +```html + +``` + +**Using [jsDelivr](https://cdn.jsdelivr.net/npm/uuid@latest/dist/umd/)**: + +```html + +``` + +**Using [cdnjs](https://cdnjs.com/libraries/uuid)**: + +```html + +``` + +These CDNs all provide the same [`uuidv4()`](#uuidv4options-buffer-offset) method: + +```html + +``` + +Methods for the other algorithms ([`uuidv1()`](#uuidv1options-buffer-offset), [`uuidv3()`](#uuidv3name-namespace-buffer-offset) and [`uuidv5()`](#uuidv5name-namespace-buffer-offset)) are available from the files `uuidv1.min.js`, `uuidv3.min.js` and `uuidv5.min.js` respectively. + +## "getRandomValues() not supported" + +This error occurs in environments where the standard [`crypto.getRandomValues()`](https://developer.mozilla.org/en-US/docs/Web/API/Crypto/getRandomValues) API is not supported. This issue can be resolved by adding an appropriate polyfill: + +### React Native / Expo + +1. Install [`react-native-get-random-values`](https://github.com/LinusU/react-native-get-random-values#readme) +1. Import it _before_ `uuid`. Since `uuid` might also appear as a transitive dependency of some other imports it's safest to just import `react-native-get-random-values` as the very first thing in your entry point: + +```javascript +import 'react-native-get-random-values'; +import { v4 as uuidv4 } from 'uuid'; +``` + +Note: If you are using Expo, you must be using at least `react-native-get-random-values@1.5.0` and `expo@39.0.0`. + +### Web Workers / Service Workers (Edge <= 18) + +[In Edge <= 18, Web Crypto is not supported in Web Workers or Service Workers](https://caniuse.com/#feat=cryptography) and we are not aware of a polyfill (let us know if you find one, please). + +## Upgrading From `uuid@7.x` + +### Only Named Exports Supported When Using with Node.js ESM + +`uuid@7.x` did not come with native ECMAScript Module (ESM) support for Node.js. Importing it in Node.js ESM consequently imported the CommonJS source with a default export. This library now comes with true Node.js ESM support and only provides named exports. + +Instead of doing: + +```javascript +import uuid from 'uuid'; +uuid.v4(); +``` + +you will now have to use the named exports: + +```javascript +import { v4 as uuidv4 } from 'uuid'; +uuidv4(); +``` + +### Deep Requires No Longer Supported + +Deep requires like `require('uuid/v4')` [which have been deprecated in `uuid@7.x`](#deep-requires-now-deprecated) are no longer supported. + +## Upgrading From `uuid@3.x` + +"_Wait... what happened to `uuid@4.x` - `uuid@6.x`?!?_" + +In order to avoid confusion with RFC [version 4](#uuidv4options-buffer-offset) and [version 5](#uuidv5name-namespace-buffer-offset) UUIDs, and a possible [version 6](http://gh.peabody.io/uuidv6/), releases 4 thru 6 of this module have been skipped. + +### Deep Requires Now Deprecated + +`uuid@3.x` encouraged the use of deep requires to minimize the bundle size of browser builds: + +```javascript +const uuidv4 = require('uuid/v4'); // <== NOW DEPRECATED! +uuidv4(); +``` + +As of `uuid@7.x` this library now provides ECMAScript modules builds, which allow packagers like Webpack and Rollup to do "tree-shaking" to remove dead code. Instead, use the `import` syntax: + +```javascript +import { v4 as uuidv4 } from 'uuid'; +uuidv4(); +``` + +... or for CommonJS: + +```javascript +const { v4: uuidv4 } = require('uuid'); +uuidv4(); +``` + +### Default Export Removed + +`uuid@3.x` was exporting the Version 4 UUID method as a default export: + +```javascript +const uuid = require('uuid'); // <== REMOVED! +``` + +This usage pattern was already discouraged in `uuid@3.x` and has been removed in `uuid@7.x`. + +---- +Markdown generated from [README_js.md](README_js.md) by [![RunMD Logo](http://i.imgur.com/h0FVyzU.png)](https://github.com/broofa/runmd) \ No newline at end of file diff --git a/node_modules/uuid/dist/bin/uuid b/node_modules/uuid/dist/bin/uuid new file mode 100755 index 0000000..f38d2ee --- /dev/null +++ b/node_modules/uuid/dist/bin/uuid @@ -0,0 +1,2 @@ +#!/usr/bin/env node +require('../uuid-bin'); diff --git a/node_modules/uuid/dist/esm-browser/index.js b/node_modules/uuid/dist/esm-browser/index.js new file mode 100644 index 0000000..1db6f6d --- /dev/null +++ b/node_modules/uuid/dist/esm-browser/index.js @@ -0,0 +1,9 @@ +export { default as v1 } from './v1.js'; +export { default as v3 } from './v3.js'; +export { default as v4 } from './v4.js'; +export { default as v5 } from './v5.js'; +export { default as NIL } from './nil.js'; +export { default as version } from './version.js'; +export { default as validate } from './validate.js'; +export { default as stringify } from './stringify.js'; +export { default as parse } from './parse.js'; \ No newline at end of file diff --git a/node_modules/uuid/dist/esm-browser/md5.js b/node_modules/uuid/dist/esm-browser/md5.js new file mode 100644 index 0000000..8b5d46a --- /dev/null +++ b/node_modules/uuid/dist/esm-browser/md5.js @@ -0,0 +1,215 @@ +/* + * Browser-compatible JavaScript MD5 + * + * Modification of JavaScript MD5 + * https://github.com/blueimp/JavaScript-MD5 + * + * Copyright 2011, Sebastian Tschan + * https://blueimp.net + * + * Licensed under the MIT license: + * https://opensource.org/licenses/MIT + * + * Based on + * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message + * Digest Algorithm, as defined in RFC 1321. + * Version 2.2 Copyright (C) Paul Johnston 1999 - 2009 + * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet + * Distributed under the BSD License + * See http://pajhome.org.uk/crypt/md5 for more info. + */ +function md5(bytes) { + if (typeof bytes === 'string') { + var msg = unescape(encodeURIComponent(bytes)); // UTF8 escape + + bytes = new Uint8Array(msg.length); + + for (var i = 0; i < msg.length; ++i) { + bytes[i] = msg.charCodeAt(i); + } + } + + return md5ToHexEncodedArray(wordsToMd5(bytesToWords(bytes), bytes.length * 8)); +} +/* + * Convert an array of little-endian words to an array of bytes + */ + + +function md5ToHexEncodedArray(input) { + var output = []; + var length32 = input.length * 32; + var hexTab = '0123456789abcdef'; + + for (var i = 0; i < length32; i += 8) { + var x = input[i >> 5] >>> i % 32 & 0xff; + var hex = parseInt(hexTab.charAt(x >>> 4 & 0x0f) + hexTab.charAt(x & 0x0f), 16); + output.push(hex); + } + + return output; +} +/** + * Calculate output length with padding and bit length + */ + + +function getOutputLength(inputLength8) { + return (inputLength8 + 64 >>> 9 << 4) + 14 + 1; +} +/* + * Calculate the MD5 of an array of little-endian words, and a bit length. + */ + + +function wordsToMd5(x, len) { + /* append padding */ + x[len >> 5] |= 0x80 << len % 32; + x[getOutputLength(len) - 1] = len; + var a = 1732584193; + var b = -271733879; + var c = -1732584194; + var d = 271733878; + + for (var i = 0; i < x.length; i += 16) { + var olda = a; + var oldb = b; + var oldc = c; + var oldd = d; + a = md5ff(a, b, c, d, x[i], 7, -680876936); + d = md5ff(d, a, b, c, x[i + 1], 12, -389564586); + c = md5ff(c, d, a, b, x[i + 2], 17, 606105819); + b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330); + a = md5ff(a, b, c, d, x[i + 4], 7, -176418897); + d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426); + c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341); + b = md5ff(b, c, d, a, x[i + 7], 22, -45705983); + a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416); + d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417); + c = md5ff(c, d, a, b, x[i + 10], 17, -42063); + b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162); + a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682); + d = md5ff(d, a, b, c, x[i + 13], 12, -40341101); + c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290); + b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329); + a = md5gg(a, b, c, d, x[i + 1], 5, -165796510); + d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632); + c = md5gg(c, d, a, b, x[i + 11], 14, 643717713); + b = md5gg(b, c, d, a, x[i], 20, -373897302); + a = md5gg(a, b, c, d, x[i + 5], 5, -701558691); + d = md5gg(d, a, b, c, x[i + 10], 9, 38016083); + c = md5gg(c, d, a, b, x[i + 15], 14, -660478335); + b = md5gg(b, c, d, a, x[i + 4], 20, -405537848); + a = md5gg(a, b, c, d, x[i + 9], 5, 568446438); + d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690); + c = md5gg(c, d, a, b, x[i + 3], 14, -187363961); + b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501); + a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467); + d = md5gg(d, a, b, c, x[i + 2], 9, -51403784); + c = md5gg(c, d, a, b, x[i + 7], 14, 1735328473); + b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734); + a = md5hh(a, b, c, d, x[i + 5], 4, -378558); + d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463); + c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562); + b = md5hh(b, c, d, a, x[i + 14], 23, -35309556); + a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060); + d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353); + c = md5hh(c, d, a, b, x[i + 7], 16, -155497632); + b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640); + a = md5hh(a, b, c, d, x[i + 13], 4, 681279174); + d = md5hh(d, a, b, c, x[i], 11, -358537222); + c = md5hh(c, d, a, b, x[i + 3], 16, -722521979); + b = md5hh(b, c, d, a, x[i + 6], 23, 76029189); + a = md5hh(a, b, c, d, x[i + 9], 4, -640364487); + d = md5hh(d, a, b, c, x[i + 12], 11, -421815835); + c = md5hh(c, d, a, b, x[i + 15], 16, 530742520); + b = md5hh(b, c, d, a, x[i + 2], 23, -995338651); + a = md5ii(a, b, c, d, x[i], 6, -198630844); + d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415); + c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905); + b = md5ii(b, c, d, a, x[i + 5], 21, -57434055); + a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571); + d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606); + c = md5ii(c, d, a, b, x[i + 10], 15, -1051523); + b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799); + a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359); + d = md5ii(d, a, b, c, x[i + 15], 10, -30611744); + c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380); + b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649); + a = md5ii(a, b, c, d, x[i + 4], 6, -145523070); + d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379); + c = md5ii(c, d, a, b, x[i + 2], 15, 718787259); + b = md5ii(b, c, d, a, x[i + 9], 21, -343485551); + a = safeAdd(a, olda); + b = safeAdd(b, oldb); + c = safeAdd(c, oldc); + d = safeAdd(d, oldd); + } + + return [a, b, c, d]; +} +/* + * Convert an array bytes to an array of little-endian words + * Characters >255 have their high-byte silently ignored. + */ + + +function bytesToWords(input) { + if (input.length === 0) { + return []; + } + + var length8 = input.length * 8; + var output = new Uint32Array(getOutputLength(length8)); + + for (var i = 0; i < length8; i += 8) { + output[i >> 5] |= (input[i / 8] & 0xff) << i % 32; + } + + return output; +} +/* + * Add integers, wrapping at 2^32. This uses 16-bit operations internally + * to work around bugs in some JS interpreters. + */ + + +function safeAdd(x, y) { + var lsw = (x & 0xffff) + (y & 0xffff); + var msw = (x >> 16) + (y >> 16) + (lsw >> 16); + return msw << 16 | lsw & 0xffff; +} +/* + * Bitwise rotate a 32-bit number to the left. + */ + + +function bitRotateLeft(num, cnt) { + return num << cnt | num >>> 32 - cnt; +} +/* + * These functions implement the four basic operations the algorithm uses. + */ + + +function md5cmn(q, a, b, x, s, t) { + return safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b); +} + +function md5ff(a, b, c, d, x, s, t) { + return md5cmn(b & c | ~b & d, a, b, x, s, t); +} + +function md5gg(a, b, c, d, x, s, t) { + return md5cmn(b & d | c & ~d, a, b, x, s, t); +} + +function md5hh(a, b, c, d, x, s, t) { + return md5cmn(b ^ c ^ d, a, b, x, s, t); +} + +function md5ii(a, b, c, d, x, s, t) { + return md5cmn(c ^ (b | ~d), a, b, x, s, t); +} + +export default md5; \ No newline at end of file diff --git a/node_modules/uuid/dist/esm-browser/nil.js b/node_modules/uuid/dist/esm-browser/nil.js new file mode 100644 index 0000000..b36324c --- /dev/null +++ b/node_modules/uuid/dist/esm-browser/nil.js @@ -0,0 +1 @@ +export default '00000000-0000-0000-0000-000000000000'; \ No newline at end of file diff --git a/node_modules/uuid/dist/esm-browser/parse.js b/node_modules/uuid/dist/esm-browser/parse.js new file mode 100644 index 0000000..7c5b1d5 --- /dev/null +++ b/node_modules/uuid/dist/esm-browser/parse.js @@ -0,0 +1,35 @@ +import validate from './validate.js'; + +function parse(uuid) { + if (!validate(uuid)) { + throw TypeError('Invalid UUID'); + } + + var v; + var arr = new Uint8Array(16); // Parse ########-....-....-....-............ + + arr[0] = (v = parseInt(uuid.slice(0, 8), 16)) >>> 24; + arr[1] = v >>> 16 & 0xff; + arr[2] = v >>> 8 & 0xff; + arr[3] = v & 0xff; // Parse ........-####-....-....-............ + + arr[4] = (v = parseInt(uuid.slice(9, 13), 16)) >>> 8; + arr[5] = v & 0xff; // Parse ........-....-####-....-............ + + arr[6] = (v = parseInt(uuid.slice(14, 18), 16)) >>> 8; + arr[7] = v & 0xff; // Parse ........-....-....-####-............ + + arr[8] = (v = parseInt(uuid.slice(19, 23), 16)) >>> 8; + arr[9] = v & 0xff; // Parse ........-....-....-....-############ + // (Use "/" to avoid 32-bit truncation when bit-shifting high-order bytes) + + arr[10] = (v = parseInt(uuid.slice(24, 36), 16)) / 0x10000000000 & 0xff; + arr[11] = v / 0x100000000 & 0xff; + arr[12] = v >>> 24 & 0xff; + arr[13] = v >>> 16 & 0xff; + arr[14] = v >>> 8 & 0xff; + arr[15] = v & 0xff; + return arr; +} + +export default parse; \ No newline at end of file diff --git a/node_modules/uuid/dist/esm-browser/regex.js b/node_modules/uuid/dist/esm-browser/regex.js new file mode 100644 index 0000000..3da8673 --- /dev/null +++ b/node_modules/uuid/dist/esm-browser/regex.js @@ -0,0 +1 @@ +export 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; \ No newline at end of file diff --git a/node_modules/uuid/dist/esm-browser/rng.js b/node_modules/uuid/dist/esm-browser/rng.js new file mode 100644 index 0000000..8abbf2e --- /dev/null +++ b/node_modules/uuid/dist/esm-browser/rng.js @@ -0,0 +1,19 @@ +// Unique ID creation requires a high quality random # generator. In the browser we therefore +// require the crypto API and do not support built-in fallback to lower quality random number +// generators (like Math.random()). +var getRandomValues; +var rnds8 = new Uint8Array(16); +export default function rng() { + // lazy load so that environments that need to polyfill have a chance to do so + if (!getRandomValues) { + // getRandomValues needs to be invoked in a context where "this" is a Crypto implementation. Also, + // find the complete implementation of crypto (msCrypto) on IE11. + getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto) || typeof msCrypto !== 'undefined' && typeof msCrypto.getRandomValues === 'function' && msCrypto.getRandomValues.bind(msCrypto); + + if (!getRandomValues) { + throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported'); + } + } + + return getRandomValues(rnds8); +} \ No newline at end of file diff --git a/node_modules/uuid/dist/esm-browser/sha1.js b/node_modules/uuid/dist/esm-browser/sha1.js new file mode 100644 index 0000000..940548b --- /dev/null +++ b/node_modules/uuid/dist/esm-browser/sha1.js @@ -0,0 +1,96 @@ +// Adapted from Chris Veness' SHA1 code at +// http://www.movable-type.co.uk/scripts/sha1.html +function f(s, x, y, z) { + switch (s) { + case 0: + return x & y ^ ~x & z; + + case 1: + return x ^ y ^ z; + + case 2: + return x & y ^ x & z ^ y & z; + + case 3: + return x ^ y ^ z; + } +} + +function ROTL(x, n) { + return x << n | x >>> 32 - n; +} + +function sha1(bytes) { + var K = [0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xca62c1d6]; + var H = [0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0]; + + if (typeof bytes === 'string') { + var msg = unescape(encodeURIComponent(bytes)); // UTF8 escape + + bytes = []; + + for (var i = 0; i < msg.length; ++i) { + bytes.push(msg.charCodeAt(i)); + } + } else if (!Array.isArray(bytes)) { + // Convert Array-like to Array + bytes = Array.prototype.slice.call(bytes); + } + + bytes.push(0x80); + var l = bytes.length / 4 + 2; + var N = Math.ceil(l / 16); + var M = new Array(N); + + for (var _i = 0; _i < N; ++_i) { + var arr = new Uint32Array(16); + + for (var j = 0; j < 16; ++j) { + arr[j] = bytes[_i * 64 + j * 4] << 24 | bytes[_i * 64 + j * 4 + 1] << 16 | bytes[_i * 64 + j * 4 + 2] << 8 | bytes[_i * 64 + j * 4 + 3]; + } + + M[_i] = arr; + } + + M[N - 1][14] = (bytes.length - 1) * 8 / Math.pow(2, 32); + M[N - 1][14] = Math.floor(M[N - 1][14]); + M[N - 1][15] = (bytes.length - 1) * 8 & 0xffffffff; + + for (var _i2 = 0; _i2 < N; ++_i2) { + var W = new Uint32Array(80); + + for (var t = 0; t < 16; ++t) { + W[t] = M[_i2][t]; + } + + for (var _t = 16; _t < 80; ++_t) { + W[_t] = ROTL(W[_t - 3] ^ W[_t - 8] ^ W[_t - 14] ^ W[_t - 16], 1); + } + + var a = H[0]; + var b = H[1]; + var c = H[2]; + var d = H[3]; + var e = H[4]; + + for (var _t2 = 0; _t2 < 80; ++_t2) { + var s = Math.floor(_t2 / 20); + var T = ROTL(a, 5) + f(s, b, c, d) + e + K[s] + W[_t2] >>> 0; + e = d; + d = c; + c = ROTL(b, 30) >>> 0; + b = a; + a = T; + } + + H[0] = H[0] + a >>> 0; + H[1] = H[1] + b >>> 0; + H[2] = H[2] + c >>> 0; + H[3] = H[3] + d >>> 0; + H[4] = H[4] + e >>> 0; + } + + return [H[0] >> 24 & 0xff, H[0] >> 16 & 0xff, H[0] >> 8 & 0xff, H[0] & 0xff, H[1] >> 24 & 0xff, H[1] >> 16 & 0xff, H[1] >> 8 & 0xff, H[1] & 0xff, H[2] >> 24 & 0xff, H[2] >> 16 & 0xff, H[2] >> 8 & 0xff, H[2] & 0xff, H[3] >> 24 & 0xff, H[3] >> 16 & 0xff, H[3] >> 8 & 0xff, H[3] & 0xff, H[4] >> 24 & 0xff, H[4] >> 16 & 0xff, H[4] >> 8 & 0xff, H[4] & 0xff]; +} + +export default sha1; \ No newline at end of file diff --git a/node_modules/uuid/dist/esm-browser/stringify.js b/node_modules/uuid/dist/esm-browser/stringify.js new file mode 100644 index 0000000..3102111 --- /dev/null +++ b/node_modules/uuid/dist/esm-browser/stringify.js @@ -0,0 +1,30 @@ +import validate from './validate.js'; +/** + * Convert array of 16 byte values to UUID string format of the form: + * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX + */ + +var byteToHex = []; + +for (var i = 0; i < 256; ++i) { + byteToHex.push((i + 0x100).toString(16).substr(1)); +} + +function stringify(arr) { + var offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0; + // Note: Be careful editing this code! It's been tuned for performance + // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434 + var 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(); // Consistency check for valid UUID. If this throws, it's likely due to one + // of the following: + // - One or more input array values don't map to a hex octet (leading to + // "undefined" in the uuid) + // - Invalid input values for the RFC `version` or `variant` fields + + if (!validate(uuid)) { + throw TypeError('Stringified UUID is invalid'); + } + + return uuid; +} + +export default stringify; \ No newline at end of file diff --git a/node_modules/uuid/dist/esm-browser/v1.js b/node_modules/uuid/dist/esm-browser/v1.js new file mode 100644 index 0000000..1a22591 --- /dev/null +++ b/node_modules/uuid/dist/esm-browser/v1.js @@ -0,0 +1,95 @@ +import rng from './rng.js'; +import stringify from './stringify.js'; // **`v1()` - Generate time-based UUID** +// +// Inspired by https://github.com/LiosK/UUID.js +// and http://docs.python.org/library/uuid.html + +var _nodeId; + +var _clockseq; // Previous uuid creation time + + +var _lastMSecs = 0; +var _lastNSecs = 0; // See https://github.com/uuidjs/uuid for API details + +function v1(options, buf, offset) { + var i = buf && offset || 0; + var b = buf || new Array(16); + options = options || {}; + var node = options.node || _nodeId; + var clockseq = options.clockseq !== undefined ? options.clockseq : _clockseq; // node and clockseq need to be initialized to random values if they're not + // specified. We do this lazily to minimize issues related to insufficient + // system entropy. See #189 + + if (node == null || clockseq == null) { + var seedBytes = options.random || (options.rng || rng)(); + + if (node == null) { + // Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1) + node = _nodeId = [seedBytes[0] | 0x01, seedBytes[1], seedBytes[2], seedBytes[3], seedBytes[4], seedBytes[5]]; + } + + if (clockseq == null) { + // Per 4.2.2, randomize (14 bit) clockseq + clockseq = _clockseq = (seedBytes[6] << 8 | seedBytes[7]) & 0x3fff; + } + } // UUID timestamps are 100 nano-second units since the Gregorian epoch, + // (1582-10-15 00:00). JSNumbers aren't precise enough for this, so + // time is handled internally as 'msecs' (integer milliseconds) and 'nsecs' + // (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00. + + + var msecs = options.msecs !== undefined ? options.msecs : Date.now(); // Per 4.2.1.2, use count of uuid's generated during the current clock + // cycle to simulate higher resolution clock + + var nsecs = options.nsecs !== undefined ? options.nsecs : _lastNSecs + 1; // Time since last uuid creation (in msecs) + + var dt = msecs - _lastMSecs + (nsecs - _lastNSecs) / 10000; // Per 4.2.1.2, Bump clockseq on clock regression + + if (dt < 0 && options.clockseq === undefined) { + clockseq = clockseq + 1 & 0x3fff; + } // Reset nsecs if clock regresses (new clockseq) or we've moved onto a new + // time interval + + + if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === undefined) { + nsecs = 0; + } // Per 4.2.1.2 Throw error if too many uuids are requested + + + if (nsecs >= 10000) { + throw new Error("uuid.v1(): Can't create more than 10M uuids/sec"); + } + + _lastMSecs = msecs; + _lastNSecs = nsecs; + _clockseq = clockseq; // Per 4.1.4 - Convert from unix epoch to Gregorian epoch + + msecs += 12219292800000; // `time_low` + + var tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000; + b[i++] = tl >>> 24 & 0xff; + b[i++] = tl >>> 16 & 0xff; + b[i++] = tl >>> 8 & 0xff; + b[i++] = tl & 0xff; // `time_mid` + + var tmh = msecs / 0x100000000 * 10000 & 0xfffffff; + b[i++] = tmh >>> 8 & 0xff; + b[i++] = tmh & 0xff; // `time_high_and_version` + + b[i++] = tmh >>> 24 & 0xf | 0x10; // include version + + b[i++] = tmh >>> 16 & 0xff; // `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant) + + b[i++] = clockseq >>> 8 | 0x80; // `clock_seq_low` + + b[i++] = clockseq & 0xff; // `node` + + for (var n = 0; n < 6; ++n) { + b[i + n] = node[n]; + } + + return buf || stringify(b); +} + +export default v1; \ No newline at end of file diff --git a/node_modules/uuid/dist/esm-browser/v3.js b/node_modules/uuid/dist/esm-browser/v3.js new file mode 100644 index 0000000..c9ab9a4 --- /dev/null +++ b/node_modules/uuid/dist/esm-browser/v3.js @@ -0,0 +1,4 @@ +import v35 from './v35.js'; +import md5 from './md5.js'; +var v3 = v35('v3', 0x30, md5); +export default v3; \ No newline at end of file diff --git a/node_modules/uuid/dist/esm-browser/v35.js b/node_modules/uuid/dist/esm-browser/v35.js new file mode 100644 index 0000000..31dd8a1 --- /dev/null +++ b/node_modules/uuid/dist/esm-browser/v35.js @@ -0,0 +1,64 @@ +import stringify from './stringify.js'; +import parse from './parse.js'; + +function stringToBytes(str) { + str = unescape(encodeURIComponent(str)); // UTF8 escape + + var bytes = []; + + for (var i = 0; i < str.length; ++i) { + bytes.push(str.charCodeAt(i)); + } + + return bytes; +} + +export var DNS = '6ba7b810-9dad-11d1-80b4-00c04fd430c8'; +export var URL = '6ba7b811-9dad-11d1-80b4-00c04fd430c8'; +export default function (name, version, hashfunc) { + function generateUUID(value, namespace, buf, offset) { + if (typeof value === 'string') { + value = stringToBytes(value); + } + + if (typeof namespace === 'string') { + namespace = parse(namespace); + } + + if (namespace.length !== 16) { + throw TypeError('Namespace must be array-like (16 iterable integer values, 0-255)'); + } // Compute hash of namespace and value, Per 4.3 + // Future: Use spread syntax when supported on all platforms, e.g. `bytes = + // hashfunc([...namespace, ... value])` + + + var bytes = new Uint8Array(16 + value.length); + bytes.set(namespace); + bytes.set(value, namespace.length); + bytes = hashfunc(bytes); + bytes[6] = bytes[6] & 0x0f | version; + bytes[8] = bytes[8] & 0x3f | 0x80; + + if (buf) { + offset = offset || 0; + + for (var i = 0; i < 16; ++i) { + buf[offset + i] = bytes[i]; + } + + return buf; + } + + return stringify(bytes); + } // Function#name is not settable on some platforms (#270) + + + try { + generateUUID.name = name; // eslint-disable-next-line no-empty + } catch (err) {} // For CommonJS default export support + + + generateUUID.DNS = DNS; + generateUUID.URL = URL; + return generateUUID; +} \ No newline at end of file diff --git a/node_modules/uuid/dist/esm-browser/v4.js b/node_modules/uuid/dist/esm-browser/v4.js new file mode 100644 index 0000000..404810a --- /dev/null +++ b/node_modules/uuid/dist/esm-browser/v4.js @@ -0,0 +1,24 @@ +import rng from './rng.js'; +import stringify from './stringify.js'; + +function v4(options, buf, offset) { + options = options || {}; + var rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved` + + rnds[6] = rnds[6] & 0x0f | 0x40; + rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided + + if (buf) { + offset = offset || 0; + + for (var i = 0; i < 16; ++i) { + buf[offset + i] = rnds[i]; + } + + return buf; + } + + return stringify(rnds); +} + +export default v4; \ No newline at end of file diff --git a/node_modules/uuid/dist/esm-browser/v5.js b/node_modules/uuid/dist/esm-browser/v5.js new file mode 100644 index 0000000..c08d96b --- /dev/null +++ b/node_modules/uuid/dist/esm-browser/v5.js @@ -0,0 +1,4 @@ +import v35 from './v35.js'; +import sha1 from './sha1.js'; +var v5 = v35('v5', 0x50, sha1); +export default v5; \ No newline at end of file diff --git a/node_modules/uuid/dist/esm-browser/validate.js b/node_modules/uuid/dist/esm-browser/validate.js new file mode 100644 index 0000000..f1cdc7a --- /dev/null +++ b/node_modules/uuid/dist/esm-browser/validate.js @@ -0,0 +1,7 @@ +import REGEX from './regex.js'; + +function validate(uuid) { + return typeof uuid === 'string' && REGEX.test(uuid); +} + +export default validate; \ No newline at end of file diff --git a/node_modules/uuid/dist/esm-browser/version.js b/node_modules/uuid/dist/esm-browser/version.js new file mode 100644 index 0000000..77530e9 --- /dev/null +++ b/node_modules/uuid/dist/esm-browser/version.js @@ -0,0 +1,11 @@ +import validate from './validate.js'; + +function version(uuid) { + if (!validate(uuid)) { + throw TypeError('Invalid UUID'); + } + + return parseInt(uuid.substr(14, 1), 16); +} + +export default version; \ No newline at end of file diff --git a/node_modules/uuid/dist/esm-node/index.js b/node_modules/uuid/dist/esm-node/index.js new file mode 100644 index 0000000..1db6f6d --- /dev/null +++ b/node_modules/uuid/dist/esm-node/index.js @@ -0,0 +1,9 @@ +export { default as v1 } from './v1.js'; +export { default as v3 } from './v3.js'; +export { default as v4 } from './v4.js'; +export { default as v5 } from './v5.js'; +export { default as NIL } from './nil.js'; +export { default as version } from './version.js'; +export { default as validate } from './validate.js'; +export { default as stringify } from './stringify.js'; +export { default as parse } from './parse.js'; \ No newline at end of file diff --git a/node_modules/uuid/dist/esm-node/md5.js b/node_modules/uuid/dist/esm-node/md5.js new file mode 100644 index 0000000..4d68b04 --- /dev/null +++ b/node_modules/uuid/dist/esm-node/md5.js @@ -0,0 +1,13 @@ +import crypto from 'crypto'; + +function md5(bytes) { + if (Array.isArray(bytes)) { + bytes = Buffer.from(bytes); + } else if (typeof bytes === 'string') { + bytes = Buffer.from(bytes, 'utf8'); + } + + return crypto.createHash('md5').update(bytes).digest(); +} + +export default md5; \ No newline at end of file diff --git a/node_modules/uuid/dist/esm-node/nil.js b/node_modules/uuid/dist/esm-node/nil.js new file mode 100644 index 0000000..b36324c --- /dev/null +++ b/node_modules/uuid/dist/esm-node/nil.js @@ -0,0 +1 @@ +export default '00000000-0000-0000-0000-000000000000'; \ No newline at end of file diff --git a/node_modules/uuid/dist/esm-node/parse.js b/node_modules/uuid/dist/esm-node/parse.js new file mode 100644 index 0000000..6421c5d --- /dev/null +++ b/node_modules/uuid/dist/esm-node/parse.js @@ -0,0 +1,35 @@ +import validate from './validate.js'; + +function parse(uuid) { + if (!validate(uuid)) { + throw TypeError('Invalid UUID'); + } + + let v; + const arr = new Uint8Array(16); // Parse ########-....-....-....-............ + + arr[0] = (v = parseInt(uuid.slice(0, 8), 16)) >>> 24; + arr[1] = v >>> 16 & 0xff; + arr[2] = v >>> 8 & 0xff; + arr[3] = v & 0xff; // Parse ........-####-....-....-............ + + arr[4] = (v = parseInt(uuid.slice(9, 13), 16)) >>> 8; + arr[5] = v & 0xff; // Parse ........-....-####-....-............ + + arr[6] = (v = parseInt(uuid.slice(14, 18), 16)) >>> 8; + arr[7] = v & 0xff; // Parse ........-....-....-####-............ + + arr[8] = (v = parseInt(uuid.slice(19, 23), 16)) >>> 8; + arr[9] = v & 0xff; // Parse ........-....-....-....-############ + // (Use "/" to avoid 32-bit truncation when bit-shifting high-order bytes) + + arr[10] = (v = parseInt(uuid.slice(24, 36), 16)) / 0x10000000000 & 0xff; + arr[11] = v / 0x100000000 & 0xff; + arr[12] = v >>> 24 & 0xff; + arr[13] = v >>> 16 & 0xff; + arr[14] = v >>> 8 & 0xff; + arr[15] = v & 0xff; + return arr; +} + +export default parse; \ No newline at end of file diff --git a/node_modules/uuid/dist/esm-node/regex.js b/node_modules/uuid/dist/esm-node/regex.js new file mode 100644 index 0000000..3da8673 --- /dev/null +++ b/node_modules/uuid/dist/esm-node/regex.js @@ -0,0 +1 @@ +export 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; \ No newline at end of file diff --git a/node_modules/uuid/dist/esm-node/rng.js b/node_modules/uuid/dist/esm-node/rng.js new file mode 100644 index 0000000..8006244 --- /dev/null +++ b/node_modules/uuid/dist/esm-node/rng.js @@ -0,0 +1,12 @@ +import crypto from 'crypto'; +const rnds8Pool = new Uint8Array(256); // # of random values to pre-allocate + +let poolPtr = rnds8Pool.length; +export default function rng() { + if (poolPtr > rnds8Pool.length - 16) { + crypto.randomFillSync(rnds8Pool); + poolPtr = 0; + } + + return rnds8Pool.slice(poolPtr, poolPtr += 16); +} \ No newline at end of file diff --git a/node_modules/uuid/dist/esm-node/sha1.js b/node_modules/uuid/dist/esm-node/sha1.js new file mode 100644 index 0000000..e23850b --- /dev/null +++ b/node_modules/uuid/dist/esm-node/sha1.js @@ -0,0 +1,13 @@ +import crypto from 'crypto'; + +function sha1(bytes) { + if (Array.isArray(bytes)) { + bytes = Buffer.from(bytes); + } else if (typeof bytes === 'string') { + bytes = Buffer.from(bytes, 'utf8'); + } + + return crypto.createHash('sha1').update(bytes).digest(); +} + +export default sha1; \ No newline at end of file diff --git a/node_modules/uuid/dist/esm-node/stringify.js b/node_modules/uuid/dist/esm-node/stringify.js new file mode 100644 index 0000000..f9bca12 --- /dev/null +++ b/node_modules/uuid/dist/esm-node/stringify.js @@ -0,0 +1,29 @@ +import validate from './validate.js'; +/** + * Convert array of 16 byte values to UUID string format of the form: + * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX + */ + +const byteToHex = []; + +for (let i = 0; i < 256; ++i) { + byteToHex.push((i + 0x100).toString(16).substr(1)); +} + +function stringify(arr, offset = 0) { + // Note: Be careful editing this code! It's been tuned for performance + // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434 + 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(); // Consistency check for valid UUID. If this throws, it's likely due to one + // of the following: + // - One or more input array values don't map to a hex octet (leading to + // "undefined" in the uuid) + // - Invalid input values for the RFC `version` or `variant` fields + + if (!validate(uuid)) { + throw TypeError('Stringified UUID is invalid'); + } + + return uuid; +} + +export default stringify; \ No newline at end of file diff --git a/node_modules/uuid/dist/esm-node/v1.js b/node_modules/uuid/dist/esm-node/v1.js new file mode 100644 index 0000000..ebf81ac --- /dev/null +++ b/node_modules/uuid/dist/esm-node/v1.js @@ -0,0 +1,95 @@ +import rng from './rng.js'; +import stringify from './stringify.js'; // **`v1()` - Generate time-based UUID** +// +// Inspired by https://github.com/LiosK/UUID.js +// and http://docs.python.org/library/uuid.html + +let _nodeId; + +let _clockseq; // Previous uuid creation time + + +let _lastMSecs = 0; +let _lastNSecs = 0; // See https://github.com/uuidjs/uuid for API details + +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 !== undefined ? options.clockseq : _clockseq; // node and clockseq need to be initialized to random values if they're not + // specified. We do this lazily to minimize issues related to insufficient + // system entropy. See #189 + + if (node == null || clockseq == null) { + const seedBytes = options.random || (options.rng || rng)(); + + if (node == null) { + // Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1) + node = _nodeId = [seedBytes[0] | 0x01, seedBytes[1], seedBytes[2], seedBytes[3], seedBytes[4], seedBytes[5]]; + } + + if (clockseq == null) { + // Per 4.2.2, randomize (14 bit) clockseq + clockseq = _clockseq = (seedBytes[6] << 8 | seedBytes[7]) & 0x3fff; + } + } // UUID timestamps are 100 nano-second units since the Gregorian epoch, + // (1582-10-15 00:00). JSNumbers aren't precise enough for this, so + // time is handled internally as 'msecs' (integer milliseconds) and 'nsecs' + // (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00. + + + let msecs = options.msecs !== undefined ? options.msecs : Date.now(); // Per 4.2.1.2, use count of uuid's generated during the current clock + // cycle to simulate higher resolution clock + + let nsecs = options.nsecs !== undefined ? options.nsecs : _lastNSecs + 1; // Time since last uuid creation (in msecs) + + const dt = msecs - _lastMSecs + (nsecs - _lastNSecs) / 10000; // Per 4.2.1.2, Bump clockseq on clock regression + + if (dt < 0 && options.clockseq === undefined) { + clockseq = clockseq + 1 & 0x3fff; + } // Reset nsecs if clock regresses (new clockseq) or we've moved onto a new + // time interval + + + if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === undefined) { + nsecs = 0; + } // Per 4.2.1.2 Throw error if too many uuids are requested + + + if (nsecs >= 10000) { + throw new Error("uuid.v1(): Can't create more than 10M uuids/sec"); + } + + _lastMSecs = msecs; + _lastNSecs = nsecs; + _clockseq = clockseq; // Per 4.1.4 - Convert from unix epoch to Gregorian epoch + + msecs += 12219292800000; // `time_low` + + const tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000; + b[i++] = tl >>> 24 & 0xff; + b[i++] = tl >>> 16 & 0xff; + b[i++] = tl >>> 8 & 0xff; + b[i++] = tl & 0xff; // `time_mid` + + const tmh = msecs / 0x100000000 * 10000 & 0xfffffff; + b[i++] = tmh >>> 8 & 0xff; + b[i++] = tmh & 0xff; // `time_high_and_version` + + b[i++] = tmh >>> 24 & 0xf | 0x10; // include version + + b[i++] = tmh >>> 16 & 0xff; // `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant) + + b[i++] = clockseq >>> 8 | 0x80; // `clock_seq_low` + + b[i++] = clockseq & 0xff; // `node` + + for (let n = 0; n < 6; ++n) { + b[i + n] = node[n]; + } + + return buf || stringify(b); +} + +export default v1; \ No newline at end of file diff --git a/node_modules/uuid/dist/esm-node/v3.js b/node_modules/uuid/dist/esm-node/v3.js new file mode 100644 index 0000000..09063b8 --- /dev/null +++ b/node_modules/uuid/dist/esm-node/v3.js @@ -0,0 +1,4 @@ +import v35 from './v35.js'; +import md5 from './md5.js'; +const v3 = v35('v3', 0x30, md5); +export default v3; \ No newline at end of file diff --git a/node_modules/uuid/dist/esm-node/v35.js b/node_modules/uuid/dist/esm-node/v35.js new file mode 100644 index 0000000..22f6a19 --- /dev/null +++ b/node_modules/uuid/dist/esm-node/v35.js @@ -0,0 +1,64 @@ +import stringify from './stringify.js'; +import parse from './parse.js'; + +function stringToBytes(str) { + str = unescape(encodeURIComponent(str)); // UTF8 escape + + const bytes = []; + + for (let i = 0; i < str.length; ++i) { + bytes.push(str.charCodeAt(i)); + } + + return bytes; +} + +export const DNS = '6ba7b810-9dad-11d1-80b4-00c04fd430c8'; +export const URL = '6ba7b811-9dad-11d1-80b4-00c04fd430c8'; +export default function (name, version, hashfunc) { + function generateUUID(value, namespace, buf, offset) { + if (typeof value === 'string') { + value = stringToBytes(value); + } + + if (typeof namespace === 'string') { + namespace = parse(namespace); + } + + if (namespace.length !== 16) { + throw TypeError('Namespace must be array-like (16 iterable integer values, 0-255)'); + } // Compute hash of namespace and value, Per 4.3 + // Future: Use spread syntax when supported on all platforms, e.g. `bytes = + // hashfunc([...namespace, ... value])` + + + let bytes = new Uint8Array(16 + value.length); + bytes.set(namespace); + bytes.set(value, namespace.length); + bytes = hashfunc(bytes); + bytes[6] = bytes[6] & 0x0f | version; + bytes[8] = bytes[8] & 0x3f | 0x80; + + if (buf) { + offset = offset || 0; + + for (let i = 0; i < 16; ++i) { + buf[offset + i] = bytes[i]; + } + + return buf; + } + + return stringify(bytes); + } // Function#name is not settable on some platforms (#270) + + + try { + generateUUID.name = name; // eslint-disable-next-line no-empty + } catch (err) {} // For CommonJS default export support + + + generateUUID.DNS = DNS; + generateUUID.URL = URL; + return generateUUID; +} \ No newline at end of file diff --git a/node_modules/uuid/dist/esm-node/v4.js b/node_modules/uuid/dist/esm-node/v4.js new file mode 100644 index 0000000..efad926 --- /dev/null +++ b/node_modules/uuid/dist/esm-node/v4.js @@ -0,0 +1,24 @@ +import rng from './rng.js'; +import stringify from './stringify.js'; + +function v4(options, buf, offset) { + options = options || {}; + const rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved` + + rnds[6] = rnds[6] & 0x0f | 0x40; + rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided + + if (buf) { + offset = offset || 0; + + for (let i = 0; i < 16; ++i) { + buf[offset + i] = rnds[i]; + } + + return buf; + } + + return stringify(rnds); +} + +export default v4; \ No newline at end of file diff --git a/node_modules/uuid/dist/esm-node/v5.js b/node_modules/uuid/dist/esm-node/v5.js new file mode 100644 index 0000000..e87fe31 --- /dev/null +++ b/node_modules/uuid/dist/esm-node/v5.js @@ -0,0 +1,4 @@ +import v35 from './v35.js'; +import sha1 from './sha1.js'; +const v5 = v35('v5', 0x50, sha1); +export default v5; \ No newline at end of file diff --git a/node_modules/uuid/dist/esm-node/validate.js b/node_modules/uuid/dist/esm-node/validate.js new file mode 100644 index 0000000..f1cdc7a --- /dev/null +++ b/node_modules/uuid/dist/esm-node/validate.js @@ -0,0 +1,7 @@ +import REGEX from './regex.js'; + +function validate(uuid) { + return typeof uuid === 'string' && REGEX.test(uuid); +} + +export default validate; \ No newline at end of file diff --git a/node_modules/uuid/dist/esm-node/version.js b/node_modules/uuid/dist/esm-node/version.js new file mode 100644 index 0000000..77530e9 --- /dev/null +++ b/node_modules/uuid/dist/esm-node/version.js @@ -0,0 +1,11 @@ +import validate from './validate.js'; + +function version(uuid) { + if (!validate(uuid)) { + throw TypeError('Invalid UUID'); + } + + return parseInt(uuid.substr(14, 1), 16); +} + +export default version; \ No newline at end of file diff --git a/node_modules/uuid/dist/index.js b/node_modules/uuid/dist/index.js new file mode 100644 index 0000000..bf13b10 --- /dev/null +++ b/node_modules/uuid/dist/index.js @@ -0,0 +1,79 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +Object.defineProperty(exports, "v1", { + enumerable: true, + get: function () { + return _v.default; + } +}); +Object.defineProperty(exports, "v3", { + enumerable: true, + get: function () { + return _v2.default; + } +}); +Object.defineProperty(exports, "v4", { + enumerable: true, + get: function () { + return _v3.default; + } +}); +Object.defineProperty(exports, "v5", { + enumerable: true, + get: function () { + return _v4.default; + } +}); +Object.defineProperty(exports, "NIL", { + enumerable: true, + get: function () { + return _nil.default; + } +}); +Object.defineProperty(exports, "version", { + enumerable: true, + get: function () { + return _version.default; + } +}); +Object.defineProperty(exports, "validate", { + enumerable: true, + get: function () { + return _validate.default; + } +}); +Object.defineProperty(exports, "stringify", { + enumerable: true, + get: function () { + return _stringify.default; + } +}); +Object.defineProperty(exports, "parse", { + enumerable: true, + get: function () { + return _parse.default; + } +}); + +var _v = _interopRequireDefault(require("./v1.js")); + +var _v2 = _interopRequireDefault(require("./v3.js")); + +var _v3 = _interopRequireDefault(require("./v4.js")); + +var _v4 = _interopRequireDefault(require("./v5.js")); + +var _nil = _interopRequireDefault(require("./nil.js")); + +var _version = _interopRequireDefault(require("./version.js")); + +var _validate = _interopRequireDefault(require("./validate.js")); + +var _stringify = _interopRequireDefault(require("./stringify.js")); + +var _parse = _interopRequireDefault(require("./parse.js")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } \ No newline at end of file diff --git a/node_modules/uuid/dist/md5-browser.js b/node_modules/uuid/dist/md5-browser.js new file mode 100644 index 0000000..7a4582a --- /dev/null +++ b/node_modules/uuid/dist/md5-browser.js @@ -0,0 +1,223 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = void 0; + +/* + * Browser-compatible JavaScript MD5 + * + * Modification of JavaScript MD5 + * https://github.com/blueimp/JavaScript-MD5 + * + * Copyright 2011, Sebastian Tschan + * https://blueimp.net + * + * Licensed under the MIT license: + * https://opensource.org/licenses/MIT + * + * Based on + * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message + * Digest Algorithm, as defined in RFC 1321. + * Version 2.2 Copyright (C) Paul Johnston 1999 - 2009 + * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet + * Distributed under the BSD License + * See http://pajhome.org.uk/crypt/md5 for more info. + */ +function md5(bytes) { + if (typeof bytes === 'string') { + const msg = unescape(encodeURIComponent(bytes)); // UTF8 escape + + bytes = new Uint8Array(msg.length); + + for (let i = 0; i < msg.length; ++i) { + bytes[i] = msg.charCodeAt(i); + } + } + + return md5ToHexEncodedArray(wordsToMd5(bytesToWords(bytes), bytes.length * 8)); +} +/* + * Convert an array of little-endian words to an array of bytes + */ + + +function md5ToHexEncodedArray(input) { + const output = []; + const length32 = input.length * 32; + const hexTab = '0123456789abcdef'; + + for (let i = 0; i < length32; i += 8) { + const x = input[i >> 5] >>> i % 32 & 0xff; + const hex = parseInt(hexTab.charAt(x >>> 4 & 0x0f) + hexTab.charAt(x & 0x0f), 16); + output.push(hex); + } + + return output; +} +/** + * Calculate output length with padding and bit length + */ + + +function getOutputLength(inputLength8) { + return (inputLength8 + 64 >>> 9 << 4) + 14 + 1; +} +/* + * Calculate the MD5 of an array of little-endian words, and a bit length. + */ + + +function wordsToMd5(x, len) { + /* append padding */ + x[len >> 5] |= 0x80 << len % 32; + x[getOutputLength(len) - 1] = len; + let a = 1732584193; + let b = -271733879; + let c = -1732584194; + let d = 271733878; + + for (let i = 0; i < x.length; i += 16) { + const olda = a; + const oldb = b; + const oldc = c; + const oldd = d; + a = md5ff(a, b, c, d, x[i], 7, -680876936); + d = md5ff(d, a, b, c, x[i + 1], 12, -389564586); + c = md5ff(c, d, a, b, x[i + 2], 17, 606105819); + b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330); + a = md5ff(a, b, c, d, x[i + 4], 7, -176418897); + d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426); + c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341); + b = md5ff(b, c, d, a, x[i + 7], 22, -45705983); + a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416); + d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417); + c = md5ff(c, d, a, b, x[i + 10], 17, -42063); + b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162); + a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682); + d = md5ff(d, a, b, c, x[i + 13], 12, -40341101); + c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290); + b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329); + a = md5gg(a, b, c, d, x[i + 1], 5, -165796510); + d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632); + c = md5gg(c, d, a, b, x[i + 11], 14, 643717713); + b = md5gg(b, c, d, a, x[i], 20, -373897302); + a = md5gg(a, b, c, d, x[i + 5], 5, -701558691); + d = md5gg(d, a, b, c, x[i + 10], 9, 38016083); + c = md5gg(c, d, a, b, x[i + 15], 14, -660478335); + b = md5gg(b, c, d, a, x[i + 4], 20, -405537848); + a = md5gg(a, b, c, d, x[i + 9], 5, 568446438); + d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690); + c = md5gg(c, d, a, b, x[i + 3], 14, -187363961); + b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501); + a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467); + d = md5gg(d, a, b, c, x[i + 2], 9, -51403784); + c = md5gg(c, d, a, b, x[i + 7], 14, 1735328473); + b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734); + a = md5hh(a, b, c, d, x[i + 5], 4, -378558); + d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463); + c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562); + b = md5hh(b, c, d, a, x[i + 14], 23, -35309556); + a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060); + d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353); + c = md5hh(c, d, a, b, x[i + 7], 16, -155497632); + b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640); + a = md5hh(a, b, c, d, x[i + 13], 4, 681279174); + d = md5hh(d, a, b, c, x[i], 11, -358537222); + c = md5hh(c, d, a, b, x[i + 3], 16, -722521979); + b = md5hh(b, c, d, a, x[i + 6], 23, 76029189); + a = md5hh(a, b, c, d, x[i + 9], 4, -640364487); + d = md5hh(d, a, b, c, x[i + 12], 11, -421815835); + c = md5hh(c, d, a, b, x[i + 15], 16, 530742520); + b = md5hh(b, c, d, a, x[i + 2], 23, -995338651); + a = md5ii(a, b, c, d, x[i], 6, -198630844); + d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415); + c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905); + b = md5ii(b, c, d, a, x[i + 5], 21, -57434055); + a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571); + d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606); + c = md5ii(c, d, a, b, x[i + 10], 15, -1051523); + b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799); + a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359); + d = md5ii(d, a, b, c, x[i + 15], 10, -30611744); + c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380); + b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649); + a = md5ii(a, b, c, d, x[i + 4], 6, -145523070); + d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379); + c = md5ii(c, d, a, b, x[i + 2], 15, 718787259); + b = md5ii(b, c, d, a, x[i + 9], 21, -343485551); + a = safeAdd(a, olda); + b = safeAdd(b, oldb); + c = safeAdd(c, oldc); + d = safeAdd(d, oldd); + } + + return [a, b, c, d]; +} +/* + * Convert an array bytes to an array of little-endian words + * Characters >255 have their high-byte silently ignored. + */ + + +function bytesToWords(input) { + if (input.length === 0) { + return []; + } + + const length8 = input.length * 8; + const output = new Uint32Array(getOutputLength(length8)); + + for (let i = 0; i < length8; i += 8) { + output[i >> 5] |= (input[i / 8] & 0xff) << i % 32; + } + + return output; +} +/* + * Add integers, wrapping at 2^32. This uses 16-bit operations internally + * to work around bugs in some JS interpreters. + */ + + +function safeAdd(x, y) { + const lsw = (x & 0xffff) + (y & 0xffff); + const msw = (x >> 16) + (y >> 16) + (lsw >> 16); + return msw << 16 | lsw & 0xffff; +} +/* + * Bitwise rotate a 32-bit number to the left. + */ + + +function bitRotateLeft(num, cnt) { + return num << cnt | num >>> 32 - cnt; +} +/* + * These functions implement the four basic operations the algorithm uses. + */ + + +function md5cmn(q, a, b, x, s, t) { + return safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b); +} + +function md5ff(a, b, c, d, x, s, t) { + return md5cmn(b & c | ~b & d, a, b, x, s, t); +} + +function md5gg(a, b, c, d, x, s, t) { + return md5cmn(b & d | c & ~d, a, b, x, s, t); +} + +function md5hh(a, b, c, d, x, s, t) { + return md5cmn(b ^ c ^ d, a, b, x, s, t); +} + +function md5ii(a, b, c, d, x, s, t) { + return md5cmn(c ^ (b | ~d), a, b, x, s, t); +} + +var _default = md5; +exports.default = _default; \ No newline at end of file diff --git a/node_modules/uuid/dist/md5.js b/node_modules/uuid/dist/md5.js new file mode 100644 index 0000000..824d481 --- /dev/null +++ b/node_modules/uuid/dist/md5.js @@ -0,0 +1,23 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.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'); + } + + return _crypto.default.createHash('md5').update(bytes).digest(); +} + +var _default = md5; +exports.default = _default; \ No newline at end of file diff --git a/node_modules/uuid/dist/nil.js b/node_modules/uuid/dist/nil.js new file mode 100644 index 0000000..7ade577 --- /dev/null +++ b/node_modules/uuid/dist/nil.js @@ -0,0 +1,8 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = void 0; +var _default = '00000000-0000-0000-0000-000000000000'; +exports.default = _default; \ No newline at end of file diff --git a/node_modules/uuid/dist/parse.js b/node_modules/uuid/dist/parse.js new file mode 100644 index 0000000..4c69fc3 --- /dev/null +++ b/node_modules/uuid/dist/parse.js @@ -0,0 +1,45 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = void 0; + +var _validate = _interopRequireDefault(require("./validate.js")); + +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); // Parse ########-....-....-....-............ + + arr[0] = (v = parseInt(uuid.slice(0, 8), 16)) >>> 24; + arr[1] = v >>> 16 & 0xff; + arr[2] = v >>> 8 & 0xff; + arr[3] = v & 0xff; // Parse ........-####-....-....-............ + + arr[4] = (v = parseInt(uuid.slice(9, 13), 16)) >>> 8; + arr[5] = v & 0xff; // Parse ........-....-####-....-............ + + arr[6] = (v = parseInt(uuid.slice(14, 18), 16)) >>> 8; + arr[7] = v & 0xff; // Parse ........-....-....-####-............ + + arr[8] = (v = parseInt(uuid.slice(19, 23), 16)) >>> 8; + arr[9] = v & 0xff; // Parse ........-....-....-....-############ + // (Use "/" to avoid 32-bit truncation when bit-shifting high-order bytes) + + arr[10] = (v = parseInt(uuid.slice(24, 36), 16)) / 0x10000000000 & 0xff; + arr[11] = v / 0x100000000 & 0xff; + arr[12] = v >>> 24 & 0xff; + arr[13] = v >>> 16 & 0xff; + arr[14] = v >>> 8 & 0xff; + arr[15] = v & 0xff; + return arr; +} + +var _default = parse; +exports.default = _default; \ No newline at end of file diff --git a/node_modules/uuid/dist/regex.js b/node_modules/uuid/dist/regex.js new file mode 100644 index 0000000..1ef91d6 --- /dev/null +++ b/node_modules/uuid/dist/regex.js @@ -0,0 +1,8 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.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; +exports.default = _default; \ No newline at end of file diff --git a/node_modules/uuid/dist/rng-browser.js b/node_modules/uuid/dist/rng-browser.js new file mode 100644 index 0000000..91faeae --- /dev/null +++ b/node_modules/uuid/dist/rng-browser.js @@ -0,0 +1,26 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = rng; +// Unique ID creation requires a high quality random # generator. In the browser we therefore +// require the crypto API and do not support built-in fallback to lower quality random number +// generators (like Math.random()). +let getRandomValues; +const rnds8 = new Uint8Array(16); + +function rng() { + // lazy load so that environments that need to polyfill have a chance to do so + if (!getRandomValues) { + // getRandomValues needs to be invoked in a context where "this" is a Crypto implementation. Also, + // find the complete implementation of crypto (msCrypto) on IE11. + getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto) || typeof msCrypto !== 'undefined' && typeof msCrypto.getRandomValues === 'function' && msCrypto.getRandomValues.bind(msCrypto); + + if (!getRandomValues) { + throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported'); + } + } + + return getRandomValues(rnds8); +} \ No newline at end of file diff --git a/node_modules/uuid/dist/rng.js b/node_modules/uuid/dist/rng.js new file mode 100644 index 0000000..3507f93 --- /dev/null +++ b/node_modules/uuid/dist/rng.js @@ -0,0 +1,24 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = rng; + +var _crypto = _interopRequireDefault(require("crypto")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +const rnds8Pool = new Uint8Array(256); // # of random values to pre-allocate + +let poolPtr = rnds8Pool.length; + +function rng() { + if (poolPtr > rnds8Pool.length - 16) { + _crypto.default.randomFillSync(rnds8Pool); + + poolPtr = 0; + } + + return rnds8Pool.slice(poolPtr, poolPtr += 16); +} \ No newline at end of file diff --git a/node_modules/uuid/dist/sha1-browser.js b/node_modules/uuid/dist/sha1-browser.js new file mode 100644 index 0000000..24cbced --- /dev/null +++ b/node_modules/uuid/dist/sha1-browser.js @@ -0,0 +1,104 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = void 0; + +// Adapted from Chris Veness' SHA1 code at +// http://www.movable-type.co.uk/scripts/sha1.html +function f(s, x, y, z) { + switch (s) { + case 0: + return x & y ^ ~x & z; + + case 1: + return x ^ y ^ z; + + case 2: + return x & y ^ x & z ^ y & z; + + case 3: + return x ^ y ^ z; + } +} + +function ROTL(x, n) { + return x << n | x >>> 32 - n; +} + +function sha1(bytes) { + const K = [0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xca62c1d6]; + const H = [0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0]; + + if (typeof bytes === 'string') { + const msg = unescape(encodeURIComponent(bytes)); // UTF8 escape + + bytes = []; + + for (let i = 0; i < msg.length; ++i) { + bytes.push(msg.charCodeAt(i)); + } + } else if (!Array.isArray(bytes)) { + // Convert Array-like to Array + bytes = Array.prototype.slice.call(bytes); + } + + bytes.push(0x80); + const l = bytes.length / 4 + 2; + const N = Math.ceil(l / 16); + const M = new Array(N); + + for (let i = 0; i < N; ++i) { + const arr = new Uint32Array(16); + + for (let j = 0; j < 16; ++j) { + arr[j] = bytes[i * 64 + j * 4] << 24 | bytes[i * 64 + j * 4 + 1] << 16 | bytes[i * 64 + j * 4 + 2] << 8 | bytes[i * 64 + j * 4 + 3]; + } + + M[i] = arr; + } + + M[N - 1][14] = (bytes.length - 1) * 8 / Math.pow(2, 32); + M[N - 1][14] = Math.floor(M[N - 1][14]); + M[N - 1][15] = (bytes.length - 1) * 8 & 0xffffffff; + + for (let i = 0; i < N; ++i) { + const W = new Uint32Array(80); + + for (let t = 0; t < 16; ++t) { + W[t] = M[i][t]; + } + + for (let t = 16; t < 80; ++t) { + W[t] = ROTL(W[t - 3] ^ W[t - 8] ^ W[t - 14] ^ W[t - 16], 1); + } + + let a = H[0]; + let b = H[1]; + let c = H[2]; + let d = H[3]; + let e = H[4]; + + for (let t = 0; t < 80; ++t) { + const s = Math.floor(t / 20); + const T = ROTL(a, 5) + f(s, b, c, d) + e + K[s] + W[t] >>> 0; + e = d; + d = c; + c = ROTL(b, 30) >>> 0; + b = a; + a = T; + } + + H[0] = H[0] + a >>> 0; + H[1] = H[1] + b >>> 0; + H[2] = H[2] + c >>> 0; + H[3] = H[3] + d >>> 0; + H[4] = H[4] + e >>> 0; + } + + return [H[0] >> 24 & 0xff, H[0] >> 16 & 0xff, H[0] >> 8 & 0xff, H[0] & 0xff, H[1] >> 24 & 0xff, H[1] >> 16 & 0xff, H[1] >> 8 & 0xff, H[1] & 0xff, H[2] >> 24 & 0xff, H[2] >> 16 & 0xff, H[2] >> 8 & 0xff, H[2] & 0xff, H[3] >> 24 & 0xff, H[3] >> 16 & 0xff, H[3] >> 8 & 0xff, H[3] & 0xff, H[4] >> 24 & 0xff, H[4] >> 16 & 0xff, H[4] >> 8 & 0xff, H[4] & 0xff]; +} + +var _default = sha1; +exports.default = _default; \ No newline at end of file diff --git a/node_modules/uuid/dist/sha1.js b/node_modules/uuid/dist/sha1.js new file mode 100644 index 0000000..03bdd63 --- /dev/null +++ b/node_modules/uuid/dist/sha1.js @@ -0,0 +1,23 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.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'); + } + + return _crypto.default.createHash('sha1').update(bytes).digest(); +} + +var _default = sha1; +exports.default = _default; \ No newline at end of file diff --git a/node_modules/uuid/dist/stringify.js b/node_modules/uuid/dist/stringify.js new file mode 100644 index 0000000..b8e7519 --- /dev/null +++ b/node_modules/uuid/dist/stringify.js @@ -0,0 +1,39 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = void 0; + +var _validate = _interopRequireDefault(require("./validate.js")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * Convert array of 16 byte values to UUID string format of the form: + * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX + */ +const byteToHex = []; + +for (let i = 0; i < 256; ++i) { + byteToHex.push((i + 0x100).toString(16).substr(1)); +} + +function stringify(arr, offset = 0) { + // Note: Be careful editing this code! It's been tuned for performance + // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434 + 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(); // Consistency check for valid UUID. If this throws, it's likely due to one + // of the following: + // - One or more input array values don't map to a hex octet (leading to + // "undefined" in the uuid) + // - Invalid input values for the RFC `version` or `variant` fields + + if (!(0, _validate.default)(uuid)) { + throw TypeError('Stringified UUID is invalid'); + } + + return uuid; +} + +var _default = stringify; +exports.default = _default; \ No newline at end of file diff --git a/node_modules/uuid/dist/umd/uuid.min.js b/node_modules/uuid/dist/umd/uuid.min.js new file mode 100644 index 0000000..639ca2f --- /dev/null +++ b/node_modules/uuid/dist/umd/uuid.min.js @@ -0,0 +1 @@ +!function(r,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((r="undefined"!=typeof globalThis?globalThis:r||self).uuid={})}(this,(function(r){"use strict";var e,n=new Uint8Array(16);function t(){if(!e&&!(e="undefined"!=typeof crypto&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto)||"undefined"!=typeof msCrypto&&"function"==typeof msCrypto.getRandomValues&&msCrypto.getRandomValues.bind(msCrypto)))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return e(n)}var o=/^(?:[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;function a(r){return"string"==typeof r&&o.test(r)}for(var i,u,f=[],s=0;s<256;++s)f.push((s+256).toString(16).substr(1));function c(r){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=(f[r[e+0]]+f[r[e+1]]+f[r[e+2]]+f[r[e+3]]+"-"+f[r[e+4]]+f[r[e+5]]+"-"+f[r[e+6]]+f[r[e+7]]+"-"+f[r[e+8]]+f[r[e+9]]+"-"+f[r[e+10]]+f[r[e+11]]+f[r[e+12]]+f[r[e+13]]+f[r[e+14]]+f[r[e+15]]).toLowerCase();if(!a(n))throw TypeError("Stringified UUID is invalid");return n}var l=0,d=0;function v(r){if(!a(r))throw TypeError("Invalid UUID");var e,n=new Uint8Array(16);return n[0]=(e=parseInt(r.slice(0,8),16))>>>24,n[1]=e>>>16&255,n[2]=e>>>8&255,n[3]=255&e,n[4]=(e=parseInt(r.slice(9,13),16))>>>8,n[5]=255&e,n[6]=(e=parseInt(r.slice(14,18),16))>>>8,n[7]=255&e,n[8]=(e=parseInt(r.slice(19,23),16))>>>8,n[9]=255&e,n[10]=(e=parseInt(r.slice(24,36),16))/1099511627776&255,n[11]=e/4294967296&255,n[12]=e>>>24&255,n[13]=e>>>16&255,n[14]=e>>>8&255,n[15]=255&e,n}function p(r,e,n){function t(r,t,o,a){if("string"==typeof r&&(r=function(r){r=unescape(encodeURIComponent(r));for(var e=[],n=0;n>>9<<4)+1}function y(r,e){var n=(65535&r)+(65535&e);return(r>>16)+(e>>16)+(n>>16)<<16|65535&n}function g(r,e,n,t,o,a){return y((i=y(y(e,r),y(t,a)))<<(u=o)|i>>>32-u,n);var i,u}function m(r,e,n,t,o,a,i){return g(e&n|~e&t,r,e,o,a,i)}function w(r,e,n,t,o,a,i){return g(e&t|n&~t,r,e,o,a,i)}function b(r,e,n,t,o,a,i){return g(e^n^t,r,e,o,a,i)}function A(r,e,n,t,o,a,i){return g(n^(e|~t),r,e,o,a,i)}var U=p("v3",48,(function(r){if("string"==typeof r){var e=unescape(encodeURIComponent(r));r=new Uint8Array(e.length);for(var n=0;n>5]>>>o%32&255,i=parseInt(t.charAt(a>>>4&15)+t.charAt(15&a),16);e.push(i)}return e}(function(r,e){r[e>>5]|=128<>5]|=(255&r[t/8])<>>32-e}var R=p("v5",80,(function(r){var e=[1518500249,1859775393,2400959708,3395469782],n=[1732584193,4023233417,2562383102,271733878,3285377520];if("string"==typeof r){var t=unescape(encodeURIComponent(r));r=[];for(var o=0;o>>0;w=m,m=g,g=C(y,30)>>>0,y=h,h=U}n[0]=n[0]+h>>>0,n[1]=n[1]+y>>>0,n[2]=n[2]+g>>>0,n[3]=n[3]+m>>>0,n[4]=n[4]+w>>>0}return[n[0]>>24&255,n[0]>>16&255,n[0]>>8&255,255&n[0],n[1]>>24&255,n[1]>>16&255,n[1]>>8&255,255&n[1],n[2]>>24&255,n[2]>>16&255,n[2]>>8&255,255&n[2],n[3]>>24&255,n[3]>>16&255,n[3]>>8&255,255&n[3],n[4]>>24&255,n[4]>>16&255,n[4]>>8&255,255&n[4]]}));r.NIL="00000000-0000-0000-0000-000000000000",r.parse=v,r.stringify=c,r.v1=function(r,e,n){var o=e&&n||0,a=e||new Array(16),f=(r=r||{}).node||i,s=void 0!==r.clockseq?r.clockseq:u;if(null==f||null==s){var v=r.random||(r.rng||t)();null==f&&(f=i=[1|v[0],v[1],v[2],v[3],v[4],v[5]]),null==s&&(s=u=16383&(v[6]<<8|v[7]))}var p=void 0!==r.msecs?r.msecs:Date.now(),h=void 0!==r.nsecs?r.nsecs:d+1,y=p-l+(h-d)/1e4;if(y<0&&void 0===r.clockseq&&(s=s+1&16383),(y<0||p>l)&&void 0===r.nsecs&&(h=0),h>=1e4)throw new Error("uuid.v1(): Can't create more than 10M uuids/sec");l=p,d=h,u=s;var g=(1e4*(268435455&(p+=122192928e5))+h)%4294967296;a[o++]=g>>>24&255,a[o++]=g>>>16&255,a[o++]=g>>>8&255,a[o++]=255&g;var m=p/4294967296*1e4&268435455;a[o++]=m>>>8&255,a[o++]=255&m,a[o++]=m>>>24&15|16,a[o++]=m>>>16&255,a[o++]=s>>>8|128,a[o++]=255&s;for(var w=0;w<6;++w)a[o+w]=f[w];return e||c(a)},r.v3=U,r.v4=function(r,e,n){var o=(r=r||{}).random||(r.rng||t)();if(o[6]=15&o[6]|64,o[8]=63&o[8]|128,e){n=n||0;for(var a=0;a<16;++a)e[n+a]=o[a];return e}return c(o)},r.v5=R,r.validate=a,r.version=function(r){if(!a(r))throw TypeError("Invalid UUID");return parseInt(r.substr(14,1),16)},Object.defineProperty(r,"__esModule",{value:!0})})); \ No newline at end of file diff --git a/node_modules/uuid/dist/umd/uuidNIL.min.js b/node_modules/uuid/dist/umd/uuidNIL.min.js new file mode 100644 index 0000000..30b28a7 --- /dev/null +++ b/node_modules/uuid/dist/umd/uuidNIL.min.js @@ -0,0 +1 @@ +!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?module.exports=n():"function"==typeof define&&define.amd?define(n):(e="undefined"!=typeof globalThis?globalThis:e||self).uuidNIL=n()}(this,(function(){"use strict";return"00000000-0000-0000-0000-000000000000"})); \ No newline at end of file diff --git a/node_modules/uuid/dist/umd/uuidParse.min.js b/node_modules/uuid/dist/umd/uuidParse.min.js new file mode 100644 index 0000000..d48ea6a --- /dev/null +++ b/node_modules/uuid/dist/umd/uuidParse.min.js @@ -0,0 +1 @@ +!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?module.exports=n():"function"==typeof define&&define.amd?define(n):(e="undefined"!=typeof globalThis?globalThis:e||self).uuidParse=n()}(this,(function(){"use strict";var e=/^(?:[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;return function(n){if(!function(n){return"string"==typeof n&&e.test(n)}(n))throw TypeError("Invalid UUID");var t,i=new Uint8Array(16);return i[0]=(t=parseInt(n.slice(0,8),16))>>>24,i[1]=t>>>16&255,i[2]=t>>>8&255,i[3]=255&t,i[4]=(t=parseInt(n.slice(9,13),16))>>>8,i[5]=255&t,i[6]=(t=parseInt(n.slice(14,18),16))>>>8,i[7]=255&t,i[8]=(t=parseInt(n.slice(19,23),16))>>>8,i[9]=255&t,i[10]=(t=parseInt(n.slice(24,36),16))/1099511627776&255,i[11]=t/4294967296&255,i[12]=t>>>24&255,i[13]=t>>>16&255,i[14]=t>>>8&255,i[15]=255&t,i}})); \ No newline at end of file diff --git a/node_modules/uuid/dist/umd/uuidStringify.min.js b/node_modules/uuid/dist/umd/uuidStringify.min.js new file mode 100644 index 0000000..fd39adc --- /dev/null +++ b/node_modules/uuid/dist/umd/uuidStringify.min.js @@ -0,0 +1 @@ +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).uuidStringify=t()}(this,(function(){"use strict";var e=/^(?:[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;function t(t){return"string"==typeof t&&e.test(t)}for(var i=[],n=0;n<256;++n)i.push((n+256).toString(16).substr(1));return function(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,f=(i[e[n+0]]+i[e[n+1]]+i[e[n+2]]+i[e[n+3]]+"-"+i[e[n+4]]+i[e[n+5]]+"-"+i[e[n+6]]+i[e[n+7]]+"-"+i[e[n+8]]+i[e[n+9]]+"-"+i[e[n+10]]+i[e[n+11]]+i[e[n+12]]+i[e[n+13]]+i[e[n+14]]+i[e[n+15]]).toLowerCase();if(!t(f))throw TypeError("Stringified UUID is invalid");return f}})); \ No newline at end of file diff --git a/node_modules/uuid/dist/umd/uuidValidate.min.js b/node_modules/uuid/dist/umd/uuidValidate.min.js new file mode 100644 index 0000000..378e5b9 --- /dev/null +++ b/node_modules/uuid/dist/umd/uuidValidate.min.js @@ -0,0 +1 @@ +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).uuidValidate=t()}(this,(function(){"use strict";var e=/^(?:[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;return function(t){return"string"==typeof t&&e.test(t)}})); \ No newline at end of file diff --git a/node_modules/uuid/dist/umd/uuidVersion.min.js b/node_modules/uuid/dist/umd/uuidVersion.min.js new file mode 100644 index 0000000..274bb09 --- /dev/null +++ b/node_modules/uuid/dist/umd/uuidVersion.min.js @@ -0,0 +1 @@ +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).uuidVersion=t()}(this,(function(){"use strict";var e=/^(?:[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;return function(t){if(!function(t){return"string"==typeof t&&e.test(t)}(t))throw TypeError("Invalid UUID");return parseInt(t.substr(14,1),16)}})); \ No newline at end of file diff --git a/node_modules/uuid/dist/umd/uuidv1.min.js b/node_modules/uuid/dist/umd/uuidv1.min.js new file mode 100644 index 0000000..2622889 --- /dev/null +++ b/node_modules/uuid/dist/umd/uuidv1.min.js @@ -0,0 +1 @@ +!function(e,o){"object"==typeof exports&&"undefined"!=typeof module?module.exports=o():"function"==typeof define&&define.amd?define(o):(e="undefined"!=typeof globalThis?globalThis:e||self).uuidv1=o()}(this,(function(){"use strict";var e,o=new Uint8Array(16);function t(){if(!e&&!(e="undefined"!=typeof crypto&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto)||"undefined"!=typeof msCrypto&&"function"==typeof msCrypto.getRandomValues&&msCrypto.getRandomValues.bind(msCrypto)))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return e(o)}var n=/^(?:[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;function r(e){return"string"==typeof e&&n.test(e)}for(var i,u,s=[],a=0;a<256;++a)s.push((a+256).toString(16).substr(1));var d=0,f=0;return function(e,o,n){var a=o&&n||0,c=o||new Array(16),l=(e=e||{}).node||i,p=void 0!==e.clockseq?e.clockseq:u;if(null==l||null==p){var v=e.random||(e.rng||t)();null==l&&(l=i=[1|v[0],v[1],v[2],v[3],v[4],v[5]]),null==p&&(p=u=16383&(v[6]<<8|v[7]))}var y=void 0!==e.msecs?e.msecs:Date.now(),m=void 0!==e.nsecs?e.nsecs:f+1,g=y-d+(m-f)/1e4;if(g<0&&void 0===e.clockseq&&(p=p+1&16383),(g<0||y>d)&&void 0===e.nsecs&&(m=0),m>=1e4)throw new Error("uuid.v1(): Can't create more than 10M uuids/sec");d=y,f=m,u=p;var h=(1e4*(268435455&(y+=122192928e5))+m)%4294967296;c[a++]=h>>>24&255,c[a++]=h>>>16&255,c[a++]=h>>>8&255,c[a++]=255&h;var w=y/4294967296*1e4&268435455;c[a++]=w>>>8&255,c[a++]=255&w,c[a++]=w>>>24&15|16,c[a++]=w>>>16&255,c[a++]=p>>>8|128,c[a++]=255&p;for(var b=0;b<6;++b)c[a+b]=l[b];return o||function(e){var o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,t=(s[e[o+0]]+s[e[o+1]]+s[e[o+2]]+s[e[o+3]]+"-"+s[e[o+4]]+s[e[o+5]]+"-"+s[e[o+6]]+s[e[o+7]]+"-"+s[e[o+8]]+s[e[o+9]]+"-"+s[e[o+10]]+s[e[o+11]]+s[e[o+12]]+s[e[o+13]]+s[e[o+14]]+s[e[o+15]]).toLowerCase();if(!r(t))throw TypeError("Stringified UUID is invalid");return t}(c)}})); \ No newline at end of file diff --git a/node_modules/uuid/dist/umd/uuidv3.min.js b/node_modules/uuid/dist/umd/uuidv3.min.js new file mode 100644 index 0000000..8d37b62 --- /dev/null +++ b/node_modules/uuid/dist/umd/uuidv3.min.js @@ -0,0 +1 @@ +!function(n,r){"object"==typeof exports&&"undefined"!=typeof module?module.exports=r():"function"==typeof define&&define.amd?define(r):(n="undefined"!=typeof globalThis?globalThis:n||self).uuidv3=r()}(this,(function(){"use strict";var n=/^(?:[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;function r(r){return"string"==typeof r&&n.test(r)}for(var e=[],t=0;t<256;++t)e.push((t+256).toString(16).substr(1));function i(n){return 14+(n+64>>>9<<4)+1}function o(n,r){var e=(65535&n)+(65535&r);return(n>>16)+(r>>16)+(e>>16)<<16|65535&e}function a(n,r,e,t,i,a){return o((f=o(o(r,n),o(t,a)))<<(u=i)|f>>>32-u,e);var f,u}function f(n,r,e,t,i,o,f){return a(r&e|~r&t,n,r,i,o,f)}function u(n,r,e,t,i,o,f){return a(r&t|e&~t,n,r,i,o,f)}function c(n,r,e,t,i,o,f){return a(r^e^t,n,r,i,o,f)}function s(n,r,e,t,i,o,f){return a(e^(r|~t),n,r,i,o,f)}return function(n,t,i){function o(n,o,a,f){if("string"==typeof n&&(n=function(n){n=unescape(encodeURIComponent(n));for(var r=[],e=0;e>>24,t[1]=e>>>16&255,t[2]=e>>>8&255,t[3]=255&e,t[4]=(e=parseInt(n.slice(9,13),16))>>>8,t[5]=255&e,t[6]=(e=parseInt(n.slice(14,18),16))>>>8,t[7]=255&e,t[8]=(e=parseInt(n.slice(19,23),16))>>>8,t[9]=255&e,t[10]=(e=parseInt(n.slice(24,36),16))/1099511627776&255,t[11]=e/4294967296&255,t[12]=e>>>24&255,t[13]=e>>>16&255,t[14]=e>>>8&255,t[15]=255&e,t}(o)),16!==o.length)throw TypeError("Namespace must be array-like (16 iterable integer values, 0-255)");var u=new Uint8Array(16+n.length);if(u.set(o),u.set(n,o.length),(u=i(u))[6]=15&u[6]|t,u[8]=63&u[8]|128,a){f=f||0;for(var c=0;c<16;++c)a[f+c]=u[c];return a}return function(n){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,i=(e[n[t+0]]+e[n[t+1]]+e[n[t+2]]+e[n[t+3]]+"-"+e[n[t+4]]+e[n[t+5]]+"-"+e[n[t+6]]+e[n[t+7]]+"-"+e[n[t+8]]+e[n[t+9]]+"-"+e[n[t+10]]+e[n[t+11]]+e[n[t+12]]+e[n[t+13]]+e[n[t+14]]+e[n[t+15]]).toLowerCase();if(!r(i))throw TypeError("Stringified UUID is invalid");return i}(u)}try{o.name=n}catch(n){}return o.DNS="6ba7b810-9dad-11d1-80b4-00c04fd430c8",o.URL="6ba7b811-9dad-11d1-80b4-00c04fd430c8",o}("v3",48,(function(n){if("string"==typeof n){var r=unescape(encodeURIComponent(n));n=new Uint8Array(r.length);for(var e=0;e>5]>>>i%32&255,a=parseInt(t.charAt(o>>>4&15)+t.charAt(15&o),16);r.push(a)}return r}(function(n,r){n[r>>5]|=128<>5]|=(255&n[t/8])<1&&void 0!==arguments[1]?arguments[1]:0,o=(i[t[e+0]]+i[t[e+1]]+i[t[e+2]]+i[t[e+3]]+"-"+i[t[e+4]]+i[t[e+5]]+"-"+i[t[e+6]]+i[t[e+7]]+"-"+i[t[e+8]]+i[t[e+9]]+"-"+i[t[e+10]]+i[t[e+11]]+i[t[e+12]]+i[t[e+13]]+i[t[e+14]]+i[t[e+15]]).toLowerCase();if(!r(o))throw TypeError("Stringified UUID is invalid");return o}(u)}})); \ No newline at end of file diff --git a/node_modules/uuid/dist/umd/uuidv5.min.js b/node_modules/uuid/dist/umd/uuidv5.min.js new file mode 100644 index 0000000..ba6fc63 --- /dev/null +++ b/node_modules/uuid/dist/umd/uuidv5.min.js @@ -0,0 +1 @@ +!function(r,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(r="undefined"!=typeof globalThis?globalThis:r||self).uuidv5=e()}(this,(function(){"use strict";var r=/^(?:[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;function e(e){return"string"==typeof e&&r.test(e)}for(var t=[],n=0;n<256;++n)t.push((n+256).toString(16).substr(1));function a(r,e,t,n){switch(r){case 0:return e&t^~e&n;case 1:return e^t^n;case 2:return e&t^e&n^t&n;case 3:return e^t^n}}function o(r,e){return r<>>32-e}return function(r,n,a){function o(r,o,i,f){if("string"==typeof r&&(r=function(r){r=unescape(encodeURIComponent(r));for(var e=[],t=0;t>>24,n[1]=t>>>16&255,n[2]=t>>>8&255,n[3]=255&t,n[4]=(t=parseInt(r.slice(9,13),16))>>>8,n[5]=255&t,n[6]=(t=parseInt(r.slice(14,18),16))>>>8,n[7]=255&t,n[8]=(t=parseInt(r.slice(19,23),16))>>>8,n[9]=255&t,n[10]=(t=parseInt(r.slice(24,36),16))/1099511627776&255,n[11]=t/4294967296&255,n[12]=t>>>24&255,n[13]=t>>>16&255,n[14]=t>>>8&255,n[15]=255&t,n}(o)),16!==o.length)throw TypeError("Namespace must be array-like (16 iterable integer values, 0-255)");var s=new Uint8Array(16+r.length);if(s.set(o),s.set(r,o.length),(s=a(s))[6]=15&s[6]|n,s[8]=63&s[8]|128,i){f=f||0;for(var u=0;u<16;++u)i[f+u]=s[u];return i}return function(r){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,a=(t[r[n+0]]+t[r[n+1]]+t[r[n+2]]+t[r[n+3]]+"-"+t[r[n+4]]+t[r[n+5]]+"-"+t[r[n+6]]+t[r[n+7]]+"-"+t[r[n+8]]+t[r[n+9]]+"-"+t[r[n+10]]+t[r[n+11]]+t[r[n+12]]+t[r[n+13]]+t[r[n+14]]+t[r[n+15]]).toLowerCase();if(!e(a))throw TypeError("Stringified UUID is invalid");return a}(s)}try{o.name=r}catch(r){}return o.DNS="6ba7b810-9dad-11d1-80b4-00c04fd430c8",o.URL="6ba7b811-9dad-11d1-80b4-00c04fd430c8",o}("v5",80,(function(r){var e=[1518500249,1859775393,2400959708,3395469782],t=[1732584193,4023233417,2562383102,271733878,3285377520];if("string"==typeof r){var n=unescape(encodeURIComponent(r));r=[];for(var i=0;i>>0;A=U,U=w,w=o(b,30)>>>0,b=g,g=C}t[0]=t[0]+g>>>0,t[1]=t[1]+b>>>0,t[2]=t[2]+w>>>0,t[3]=t[3]+U>>>0,t[4]=t[4]+A>>>0}return[t[0]>>24&255,t[0]>>16&255,t[0]>>8&255,255&t[0],t[1]>>24&255,t[1]>>16&255,t[1]>>8&255,255&t[1],t[2]>>24&255,t[2]>>16&255,t[2]>>8&255,255&t[2],t[3]>>24&255,t[3]>>16&255,t[3]>>8&255,255&t[3],t[4]>>24&255,t[4]>>16&255,t[4]>>8&255,255&t[4]]}))})); \ No newline at end of file diff --git a/node_modules/uuid/dist/uuid-bin.js b/node_modules/uuid/dist/uuid-bin.js new file mode 100644 index 0000000..50a7a9f --- /dev/null +++ b/node_modules/uuid/dist/uuid-bin.js @@ -0,0 +1,85 @@ +"use strict"; + +var _assert = _interopRequireDefault(require("assert")); + +var _v = _interopRequireDefault(require("./v1.js")); + +var _v2 = _interopRequireDefault(require("./v3.js")); + +var _v3 = _interopRequireDefault(require("./v4.js")); + +var _v4 = _interopRequireDefault(require("./v5.js")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function usage() { + console.log('Usage:'); + console.log(' uuid'); + console.log(' uuid v1'); + console.log(' uuid v3 '); + console.log(' uuid v4'); + console.log(' uuid v5 '); + console.log(' uuid --help'); + console.log('\nNote: may be "URL" or "DNS" to use the corresponding UUIDs defined by RFC4122'); +} + +const args = process.argv.slice(2); + +if (args.indexOf('--help') >= 0) { + usage(); + process.exit(0); +} + +const version = args.shift() || 'v4'; + +switch (version) { + case 'v1': + console.log((0, _v.default)()); + break; + + case 'v3': + { + const name = args.shift(); + let namespace = args.shift(); + (0, _assert.default)(name != null, 'v3 name not specified'); + (0, _assert.default)(namespace != null, 'v3 namespace not specified'); + + if (namespace === 'URL') { + namespace = _v2.default.URL; + } + + if (namespace === 'DNS') { + namespace = _v2.default.DNS; + } + + console.log((0, _v2.default)(name, namespace)); + break; + } + + case 'v4': + console.log((0, _v3.default)()); + break; + + case 'v5': + { + const name = args.shift(); + let namespace = args.shift(); + (0, _assert.default)(name != null, 'v5 name not specified'); + (0, _assert.default)(namespace != null, 'v5 namespace not specified'); + + if (namespace === 'URL') { + namespace = _v4.default.URL; + } + + if (namespace === 'DNS') { + namespace = _v4.default.DNS; + } + + console.log((0, _v4.default)(name, namespace)); + break; + } + + default: + usage(); + process.exit(1); +} \ No newline at end of file diff --git a/node_modules/uuid/dist/v1.js b/node_modules/uuid/dist/v1.js new file mode 100644 index 0000000..abb9b3d --- /dev/null +++ b/node_modules/uuid/dist/v1.js @@ -0,0 +1,107 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = void 0; + +var _rng = _interopRequireDefault(require("./rng.js")); + +var _stringify = _interopRequireDefault(require("./stringify.js")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +// **`v1()` - Generate time-based UUID** +// +// Inspired by https://github.com/LiosK/UUID.js +// and http://docs.python.org/library/uuid.html +let _nodeId; + +let _clockseq; // Previous uuid creation time + + +let _lastMSecs = 0; +let _lastNSecs = 0; // See https://github.com/uuidjs/uuid for API details + +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 !== undefined ? options.clockseq : _clockseq; // node and clockseq need to be initialized to random values if they're not + // specified. We do this lazily to minimize issues related to insufficient + // system entropy. See #189 + + if (node == null || clockseq == null) { + const seedBytes = options.random || (options.rng || _rng.default)(); + + if (node == null) { + // Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1) + node = _nodeId = [seedBytes[0] | 0x01, seedBytes[1], seedBytes[2], seedBytes[3], seedBytes[4], seedBytes[5]]; + } + + if (clockseq == null) { + // Per 4.2.2, randomize (14 bit) clockseq + clockseq = _clockseq = (seedBytes[6] << 8 | seedBytes[7]) & 0x3fff; + } + } // UUID timestamps are 100 nano-second units since the Gregorian epoch, + // (1582-10-15 00:00). JSNumbers aren't precise enough for this, so + // time is handled internally as 'msecs' (integer milliseconds) and 'nsecs' + // (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00. + + + let msecs = options.msecs !== undefined ? options.msecs : Date.now(); // Per 4.2.1.2, use count of uuid's generated during the current clock + // cycle to simulate higher resolution clock + + let nsecs = options.nsecs !== undefined ? options.nsecs : _lastNSecs + 1; // Time since last uuid creation (in msecs) + + const dt = msecs - _lastMSecs + (nsecs - _lastNSecs) / 10000; // Per 4.2.1.2, Bump clockseq on clock regression + + if (dt < 0 && options.clockseq === undefined) { + clockseq = clockseq + 1 & 0x3fff; + } // Reset nsecs if clock regresses (new clockseq) or we've moved onto a new + // time interval + + + if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === undefined) { + nsecs = 0; + } // Per 4.2.1.2 Throw error if too many uuids are requested + + + if (nsecs >= 10000) { + throw new Error("uuid.v1(): Can't create more than 10M uuids/sec"); + } + + _lastMSecs = msecs; + _lastNSecs = nsecs; + _clockseq = clockseq; // Per 4.1.4 - Convert from unix epoch to Gregorian epoch + + msecs += 12219292800000; // `time_low` + + const tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000; + b[i++] = tl >>> 24 & 0xff; + b[i++] = tl >>> 16 & 0xff; + b[i++] = tl >>> 8 & 0xff; + b[i++] = tl & 0xff; // `time_mid` + + const tmh = msecs / 0x100000000 * 10000 & 0xfffffff; + b[i++] = tmh >>> 8 & 0xff; + b[i++] = tmh & 0xff; // `time_high_and_version` + + b[i++] = tmh >>> 24 & 0xf | 0x10; // include version + + b[i++] = tmh >>> 16 & 0xff; // `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant) + + b[i++] = clockseq >>> 8 | 0x80; // `clock_seq_low` + + b[i++] = clockseq & 0xff; // `node` + + for (let n = 0; n < 6; ++n) { + b[i + n] = node[n]; + } + + return buf || (0, _stringify.default)(b); +} + +var _default = v1; +exports.default = _default; \ No newline at end of file diff --git a/node_modules/uuid/dist/v3.js b/node_modules/uuid/dist/v3.js new file mode 100644 index 0000000..6b47ff5 --- /dev/null +++ b/node_modules/uuid/dist/v3.js @@ -0,0 +1,16 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = void 0; + +var _v = _interopRequireDefault(require("./v35.js")); + +var _md = _interopRequireDefault(require("./md5.js")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +const v3 = (0, _v.default)('v3', 0x30, _md.default); +var _default = v3; +exports.default = _default; \ No newline at end of file diff --git a/node_modules/uuid/dist/v35.js b/node_modules/uuid/dist/v35.js new file mode 100644 index 0000000..f784c63 --- /dev/null +++ b/node_modules/uuid/dist/v35.js @@ -0,0 +1,78 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = _default; +exports.URL = exports.DNS = void 0; + +var _stringify = _interopRequireDefault(require("./stringify.js")); + +var _parse = _interopRequireDefault(require("./parse.js")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function stringToBytes(str) { + str = unescape(encodeURIComponent(str)); // UTF8 escape + + const bytes = []; + + for (let i = 0; i < str.length; ++i) { + bytes.push(str.charCodeAt(i)); + } + + return bytes; +} + +const DNS = '6ba7b810-9dad-11d1-80b4-00c04fd430c8'; +exports.DNS = DNS; +const URL = '6ba7b811-9dad-11d1-80b4-00c04fd430c8'; +exports.URL = URL; + +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); + } + + if (namespace.length !== 16) { + throw TypeError('Namespace must be array-like (16 iterable integer values, 0-255)'); + } // Compute hash of namespace and value, Per 4.3 + // Future: Use spread syntax when supported on all platforms, e.g. `bytes = + // hashfunc([...namespace, ... value])` + + + let bytes = new Uint8Array(16 + value.length); + bytes.set(namespace); + bytes.set(value, namespace.length); + bytes = hashfunc(bytes); + bytes[6] = bytes[6] & 0x0f | version; + bytes[8] = bytes[8] & 0x3f | 0x80; + + if (buf) { + offset = offset || 0; + + for (let i = 0; i < 16; ++i) { + buf[offset + i] = bytes[i]; + } + + return buf; + } + + return (0, _stringify.default)(bytes); + } // Function#name is not settable on some platforms (#270) + + + try { + generateUUID.name = name; // eslint-disable-next-line no-empty + } catch (err) {} // For CommonJS default export support + + + generateUUID.DNS = DNS; + generateUUID.URL = URL; + return generateUUID; +} \ No newline at end of file diff --git a/node_modules/uuid/dist/v4.js b/node_modules/uuid/dist/v4.js new file mode 100644 index 0000000..838ce0b --- /dev/null +++ b/node_modules/uuid/dist/v4.js @@ -0,0 +1,37 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = void 0; + +var _rng = _interopRequireDefault(require("./rng.js")); + +var _stringify = _interopRequireDefault(require("./stringify.js")); + +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)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved` + + + rnds[6] = rnds[6] & 0x0f | 0x40; + rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided + + 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; +exports.default = _default; \ No newline at end of file diff --git a/node_modules/uuid/dist/v5.js b/node_modules/uuid/dist/v5.js new file mode 100644 index 0000000..99d615e --- /dev/null +++ b/node_modules/uuid/dist/v5.js @@ -0,0 +1,16 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = void 0; + +var _v = _interopRequireDefault(require("./v35.js")); + +var _sha = _interopRequireDefault(require("./sha1.js")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +const v5 = (0, _v.default)('v5', 0x50, _sha.default); +var _default = v5; +exports.default = _default; \ No newline at end of file diff --git a/node_modules/uuid/dist/validate.js b/node_modules/uuid/dist/validate.js new file mode 100644 index 0000000..fd05215 --- /dev/null +++ b/node_modules/uuid/dist/validate.js @@ -0,0 +1,17 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = void 0; + +var _regex = _interopRequireDefault(require("./regex.js")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function validate(uuid) { + return typeof uuid === 'string' && _regex.default.test(uuid); +} + +var _default = validate; +exports.default = _default; \ No newline at end of file diff --git a/node_modules/uuid/dist/version.js b/node_modules/uuid/dist/version.js new file mode 100644 index 0000000..b72949c --- /dev/null +++ b/node_modules/uuid/dist/version.js @@ -0,0 +1,21 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = void 0; + +var _validate = _interopRequireDefault(require("./validate.js")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function version(uuid) { + if (!(0, _validate.default)(uuid)) { + throw TypeError('Invalid UUID'); + } + + return parseInt(uuid.substr(14, 1), 16); +} + +var _default = version; +exports.default = _default; \ No newline at end of file diff --git a/node_modules/uuid/package.json b/node_modules/uuid/package.json new file mode 100644 index 0000000..f0ab371 --- /dev/null +++ b/node_modules/uuid/package.json @@ -0,0 +1,135 @@ +{ + "name": "uuid", + "version": "8.3.2", + "description": "RFC4122 (v1, v4, and v5) UUIDs", + "commitlint": { + "extends": [ + "@commitlint/config-conventional" + ] + }, + "keywords": [ + "uuid", + "guid", + "rfc4122" + ], + "license": "MIT", + "bin": { + "uuid": "./dist/bin/uuid" + }, + "sideEffects": false, + "main": "./dist/index.js", + "exports": { + ".": { + "node": { + "module": "./dist/esm-node/index.js", + "require": "./dist/index.js", + "import": "./wrapper.mjs" + }, + "default": "./dist/esm-browser/index.js" + }, + "./package.json": "./package.json" + }, + "module": "./dist/esm-node/index.js", + "browser": { + "./dist/md5.js": "./dist/md5-browser.js", + "./dist/rng.js": "./dist/rng-browser.js", + "./dist/sha1.js": "./dist/sha1-browser.js", + "./dist/esm-node/index.js": "./dist/esm-browser/index.js" + }, + "files": [ + "CHANGELOG.md", + "CONTRIBUTING.md", + "LICENSE.md", + "README.md", + "dist", + "wrapper.mjs" + ], + "devDependencies": { + "@babel/cli": "7.11.6", + "@babel/core": "7.11.6", + "@babel/preset-env": "7.11.5", + "@commitlint/cli": "11.0.0", + "@commitlint/config-conventional": "11.0.0", + "@rollup/plugin-node-resolve": "9.0.0", + "babel-eslint": "10.1.0", + "bundlewatch": "0.3.1", + "eslint": "7.10.0", + "eslint-config-prettier": "6.12.0", + "eslint-config-standard": "14.1.1", + "eslint-plugin-import": "2.22.1", + "eslint-plugin-node": "11.1.0", + "eslint-plugin-prettier": "3.1.4", + "eslint-plugin-promise": "4.2.1", + "eslint-plugin-standard": "4.0.1", + "husky": "4.3.0", + "jest": "25.5.4", + "lint-staged": "10.4.0", + "npm-run-all": "4.1.5", + "optional-dev-dependency": "2.0.1", + "prettier": "2.1.2", + "random-seed": "0.3.0", + "rollup": "2.28.2", + "rollup-plugin-terser": "7.0.2", + "runmd": "1.3.2", + "standard-version": "9.0.0" + }, + "optionalDevDependencies": { + "@wdio/browserstack-service": "6.4.0", + "@wdio/cli": "6.4.0", + "@wdio/jasmine-framework": "6.4.0", + "@wdio/local-runner": "6.4.0", + "@wdio/spec-reporter": "6.4.0", + "@wdio/static-server-service": "6.4.0", + "@wdio/sync": "6.4.0" + }, + "scripts": { + "examples:browser:webpack:build": "cd examples/browser-webpack && npm install && npm run build", + "examples:browser:rollup:build": "cd examples/browser-rollup && npm install && npm run build", + "examples:node:commonjs:test": "cd examples/node-commonjs && npm install && npm test", + "examples:node:esmodules:test": "cd examples/node-esmodules && npm install && npm test", + "lint": "npm run eslint:check && npm run prettier:check", + "eslint:check": "eslint src/ test/ examples/ *.js", + "eslint:fix": "eslint --fix src/ test/ examples/ *.js", + "pretest": "[ -n $CI ] || npm run build", + "test": "BABEL_ENV=commonjs node --throw-deprecation node_modules/.bin/jest test/unit/", + "pretest:browser": "optional-dev-dependency && npm run build && npm-run-all --parallel examples:browser:**", + "test:browser": "wdio run ./wdio.conf.js", + "pretest:node": "npm run build", + "test:node": "npm-run-all --parallel examples:node:**", + "test:pack": "./scripts/testpack.sh", + "pretest:benchmark": "npm run build", + "test:benchmark": "cd examples/benchmark && npm install && npm test", + "prettier:check": "prettier --ignore-path .prettierignore --check '**/*.{js,jsx,json,md}'", + "prettier:fix": "prettier --ignore-path .prettierignore --write '**/*.{js,jsx,json,md}'", + "bundlewatch": "npm run pretest:browser && bundlewatch --config bundlewatch.config.json", + "md": "runmd --watch --output=README.md README_js.md", + "docs": "( node --version | grep -q 'v12' ) && ( npm run build && runmd --output=README.md README_js.md )", + "docs:diff": "npm run docs && git diff --quiet README.md", + "build": "./scripts/build.sh", + "prepack": "npm run build", + "release": "standard-version --no-verify" + }, + "repository": { + "type": "git", + "url": "https://github.com/uuidjs/uuid.git" + }, + "husky": { + "hooks": { + "commit-msg": "commitlint -E HUSKY_GIT_PARAMS", + "pre-commit": "lint-staged" + } + }, + "lint-staged": { + "*.{js,jsx,json,md}": [ + "prettier --write" + ], + "*.{js,jsx}": [ + "eslint --fix" + ] + }, + "standard-version": { + "scripts": { + "postchangelog": "prettier --write CHANGELOG.md" + } + } +} diff --git a/node_modules/uuid/wrapper.mjs b/node_modules/uuid/wrapper.mjs new file mode 100644 index 0000000..c31e9ce --- /dev/null +++ b/node_modules/uuid/wrapper.mjs @@ -0,0 +1,10 @@ +import uuid from './dist/index.js'; +export const v1 = uuid.v1; +export const v3 = uuid.v3; +export const v4 = uuid.v4; +export const v5 = uuid.v5; +export const NIL = uuid.NIL; +export const version = uuid.version; +export const validate = uuid.validate; +export const stringify = uuid.stringify; +export const parse = uuid.parse; diff --git a/node_modules/webidl-conversions/LICENSE.md b/node_modules/webidl-conversions/LICENSE.md new file mode 100644 index 0000000..d4a994f --- /dev/null +++ b/node_modules/webidl-conversions/LICENSE.md @@ -0,0 +1,12 @@ +# The BSD 2-Clause License + +Copyright (c) 2014, Domenic Denicola +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/node_modules/webidl-conversions/README.md b/node_modules/webidl-conversions/README.md new file mode 100644 index 0000000..3657890 --- /dev/null +++ b/node_modules/webidl-conversions/README.md @@ -0,0 +1,53 @@ +# WebIDL Type Conversions on JavaScript Values + +This package implements, in JavaScript, the algorithms to convert a given JavaScript value according to a given [WebIDL](http://heycam.github.io/webidl/) [type](http://heycam.github.io/webidl/#idl-types). + +The goal is that you should be able to write code like + +```js +const conversions = require("webidl-conversions"); + +function doStuff(x, y) { + x = conversions["boolean"](x); + y = conversions["unsigned long"](y); + // actual algorithm code here +} +``` + +and your function `doStuff` will behave the same as a WebIDL operation declared as + +```webidl +void doStuff(boolean x, unsigned long y); +``` + +## API + +This package's main module's default export is an object with a variety of methods, each corresponding to a different WebIDL type. Each method, when invoked on a JavaScript value, will give back the new JavaScript value that results after passing through the WebIDL conversion rules. (See below for more details on what that means.) Alternately, the method could throw an error, if the WebIDL algorithm is specified to do so: for example `conversions["float"](NaN)` [will throw a `TypeError`](http://heycam.github.io/webidl/#es-float). + +## Status + +All of the numeric types are implemented (float being implemented as double) and some others are as well - check the source for all of them. This list will grow over time in service of the [HTML as Custom Elements](https://github.com/dglazkov/html-as-custom-elements) project, but in the meantime, pull requests welcome! + +I'm not sure yet what the strategy will be for modifiers, e.g. [`[Clamp]`](http://heycam.github.io/webidl/#Clamp). Maybe something like `conversions["unsigned long"](x, { clamp: true })`? We'll see. + +We might also want to extend the API to give better error messages, e.g. "Argument 1 of HTMLMediaElement.fastSeek is not a finite floating-point value" instead of "Argument is not a finite floating-point value." This would require passing in more information to the conversion functions than we currently do. + +## Background + +What's actually going on here, conceptually, is pretty weird. Let's try to explain. + +WebIDL, as part of its madness-inducing design, has its own type system. When people write algorithms in web platform specs, they usually operate on WebIDL values, i.e. instances of WebIDL types. For example, if they were specifying the algorithm for our `doStuff` operation above, they would treat `x` as a WebIDL value of [WebIDL type `boolean`](http://heycam.github.io/webidl/#idl-boolean). Crucially, they would _not_ treat `x` as a JavaScript variable whose value is either the JavaScript `true` or `false`. They're instead working in a different type system altogether, with its own rules. + +Separately from its type system, WebIDL defines a ["binding"](http://heycam.github.io/webidl/#ecmascript-binding) of the type system into JavaScript. This contains rules like: when you pass a JavaScript value to the JavaScript method that manifests a given WebIDL operation, how does that get converted into a WebIDL value? For example, a JavaScript `true` passed in the position of a WebIDL `boolean` argument becomes a WebIDL `true`. But, a JavaScript `true` passed in the position of a [WebIDL `unsigned long`](http://heycam.github.io/webidl/#idl-unsigned-long) becomes a WebIDL `1`. And so on. + +Finally, we have the actual implementation code. This is usually C++, although these days [some smart people are using Rust](https://github.com/servo/servo). The implementation, of course, has its own type system. So when they implement the WebIDL algorithms, they don't actually use WebIDL values, since those aren't "real" outside of specs. Instead, implementations apply the WebIDL binding rules in such a way as to convert incoming JavaScript values into C++ values. For example, if code in the browser called `doStuff(true, true)`, then the implementation code would eventually receive a C++ `bool` containing `true` and a C++ `uint32_t` containing `1`. + +The upside of all this is that implementations can abstract all the conversion logic away, letting WebIDL handle it, and focus on implementing the relevant methods in C++ with values of the correct type already provided. That is payoff of WebIDL, in a nutshell. + +And getting to that payoff is the goal of _this_ project—but for JavaScript implementations, instead of C++ ones. That is, this library is designed to make it easier for JavaScript developers to write functions that behave like a given WebIDL operation. So conceptually, the conversion pipeline, which in its general form is JavaScript values ↦ WebIDL values ↦ implementation-language values, in this case becomes JavaScript values ↦ WebIDL values ↦ JavaScript values. And that intermediate step is where all the logic is performed: a JavaScript `true` becomes a WebIDL `1` in an unsigned long context, which then becomes a JavaScript `1`. + +## Don't Use This + +Seriously, why would you ever use this? You really shouldn't. WebIDL is … not great, and you shouldn't be emulating its semantics. If you're looking for a generic argument-processing library, you should find one with better rules than those from WebIDL. In general, your JavaScript should not be trying to become more like WebIDL; if anything, we should fix WebIDL to make it more like JavaScript. + +The _only_ people who should use this are those trying to create faithful implementations (or polyfills) of web platform interfaces defined in WebIDL. diff --git a/node_modules/webidl-conversions/lib/index.js b/node_modules/webidl-conversions/lib/index.js new file mode 100644 index 0000000..c5153a3 --- /dev/null +++ b/node_modules/webidl-conversions/lib/index.js @@ -0,0 +1,189 @@ +"use strict"; + +var conversions = {}; +module.exports = conversions; + +function sign(x) { + return x < 0 ? -1 : 1; +} + +function evenRound(x) { + // Round x to the nearest integer, choosing the even integer if it lies halfway between two. + if ((x % 1) === 0.5 && (x & 1) === 0) { // [even number].5; round down (i.e. floor) + return Math.floor(x); + } else { + return Math.round(x); + } +} + +function createNumberConversion(bitLength, typeOpts) { + if (!typeOpts.unsigned) { + --bitLength; + } + 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) { // don't return negative zero + return 0; + } + } + + return x; + } +} + +conversions["void"] = function () { + return undefined; +}; + +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"); + } + + return x; +}; + +conversions["unrestricted double"] = function (V) { + const x = +V; + + if (isNaN(x)) { + throw new TypeError("Argument is NaN"); + } + + return x; +}; + +// not quite valid, but good enough for JS +conversions["float"] = conversions["double"]; +conversions["unrestricted float"] = conversions["unrestricted double"]; + +conversions["DOMString"] = function (V, opts) { + if (!opts) opts = {}; + + if (opts.treatNullAsEmptyString && V === null) { + return ""; + } + + return String(V); +}; + +conversions["ByteString"] = function (V, opts) { + const x = String(V); + let c = undefined; + for (let i = 0; (c = x.codePointAt(i)) !== undefined; ++i) { + if (c > 255) { + throw new TypeError("Argument is not a valid bytestring"); + } + } + + 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 < 0xD800 || c > 0xDFFF) { + U.push(String.fromCodePoint(c)); + } else if (0xDC00 <= c && c <= 0xDFFF) { + U.push(String.fromCodePoint(0xFFFD)); + } else { + if (i === n - 1) { + U.push(String.fromCodePoint(0xFFFD)); + } else { + const d = S.charCodeAt(i + 1); + if (0xDC00 <= d && d <= 0xDFFF) { + const a = c & 0x3FF; + const b = d & 0x3FF; + U.push(String.fromCodePoint((2 << 15) + (2 << 9) * a + b)); + ++i; + } else { + U.push(String.fromCodePoint(0xFFFD)); + } + } + } + } + + return U.join(''); +}; + +conversions["Date"] = function (V, opts) { + if (!(V instanceof Date)) { + throw new TypeError("Argument is not a Date object"); + } + if (isNaN(V)) { + return undefined; + } + + return V; +}; + +conversions["RegExp"] = function (V, opts) { + if (!(V instanceof RegExp)) { + V = new RegExp(V); + } + + return V; +}; diff --git a/node_modules/webidl-conversions/package.json b/node_modules/webidl-conversions/package.json new file mode 100644 index 0000000..c31bc07 --- /dev/null +++ b/node_modules/webidl-conversions/package.json @@ -0,0 +1,23 @@ +{ + "name": "webidl-conversions", + "version": "3.0.1", + "description": "Implements the WebIDL algorithms for converting to and from JavaScript values", + "main": "lib/index.js", + "scripts": { + "test": "mocha test/*.js" + }, + "repository": "jsdom/webidl-conversions", + "keywords": [ + "webidl", + "web", + "types" + ], + "files": [ + "lib/" + ], + "author": "Domenic Denicola (https://domenic.me/)", + "license": "BSD-2-Clause", + "devDependencies": { + "mocha": "^1.21.4" + } +} diff --git a/node_modules/whatwg-url/LICENSE.txt b/node_modules/whatwg-url/LICENSE.txt new file mode 100644 index 0000000..54dfac3 --- /dev/null +++ b/node_modules/whatwg-url/LICENSE.txt @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2015–2016 Sebastian Mayr + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/node_modules/whatwg-url/README.md b/node_modules/whatwg-url/README.md new file mode 100644 index 0000000..4347a7f --- /dev/null +++ b/node_modules/whatwg-url/README.md @@ -0,0 +1,67 @@ +# whatwg-url + +whatwg-url is a full implementation of the WHATWG [URL Standard](https://url.spec.whatwg.org/). It can be used standalone, but it also exposes a lot of the internal algorithms that are useful for integrating a URL parser into a project like [jsdom](https://github.com/tmpvar/jsdom). + +## Current Status + +whatwg-url is currently up to date with the URL spec up to commit [a62223](https://github.com/whatwg/url/commit/a622235308342c9adc7fc2fd1659ff059f7d5e2a). + +## API + +### The `URL` Constructor + +The main API is the [`URL`](https://url.spec.whatwg.org/#url) export, which follows the spec's behavior in all ways (including e.g. `USVString` conversion). Most consumers of this library will want to use this. + +### Low-level URL Standard API + +The following methods are exported for use by places like jsdom that need to implement things like [`HTMLHyperlinkElementUtils`](https://html.spec.whatwg.org/#htmlhyperlinkelementutils). They operate on or return an "internal URL" or ["URL record"](https://url.spec.whatwg.org/#concept-url) type. + +- [URL parser](https://url.spec.whatwg.org/#concept-url-parser): `parseURL(input, { baseURL, encodingOverride })` +- [Basic URL parser](https://url.spec.whatwg.org/#concept-basic-url-parser): `basicURLParse(input, { baseURL, encodingOverride, url, stateOverride })` +- [URL serializer](https://url.spec.whatwg.org/#concept-url-serializer): `serializeURL(urlRecord, excludeFragment)` +- [Host serializer](https://url.spec.whatwg.org/#concept-host-serializer): `serializeHost(hostFromURLRecord)` +- [Serialize an integer](https://url.spec.whatwg.org/#serialize-an-integer): `serializeInteger(number)` +- [Origin](https://url.spec.whatwg.org/#concept-url-origin) [serializer](https://html.spec.whatwg.org/multipage/browsers.html#serialization-of-an-origin): `serializeURLOrigin(urlRecord)` +- [Set the username](https://url.spec.whatwg.org/#set-the-username): `setTheUsername(urlRecord, usernameString)` +- [Set the password](https://url.spec.whatwg.org/#set-the-password): `setThePassword(urlRecord, passwordString)` +- [Cannot have a username/password/port](https://url.spec.whatwg.org/#cannot-have-a-username-password-port): `cannotHaveAUsernamePasswordPort(urlRecord)` + +The `stateOverride` parameter is one of the following strings: + +- [`"scheme start"`](https://url.spec.whatwg.org/#scheme-start-state) +- [`"scheme"`](https://url.spec.whatwg.org/#scheme-state) +- [`"no scheme"`](https://url.spec.whatwg.org/#no-scheme-state) +- [`"special relative or authority"`](https://url.spec.whatwg.org/#special-relative-or-authority-state) +- [`"path or authority"`](https://url.spec.whatwg.org/#path-or-authority-state) +- [`"relative"`](https://url.spec.whatwg.org/#relative-state) +- [`"relative slash"`](https://url.spec.whatwg.org/#relative-slash-state) +- [`"special authority slashes"`](https://url.spec.whatwg.org/#special-authority-slashes-state) +- [`"special authority ignore slashes"`](https://url.spec.whatwg.org/#special-authority-ignore-slashes-state) +- [`"authority"`](https://url.spec.whatwg.org/#authority-state) +- [`"host"`](https://url.spec.whatwg.org/#host-state) +- [`"hostname"`](https://url.spec.whatwg.org/#hostname-state) +- [`"port"`](https://url.spec.whatwg.org/#port-state) +- [`"file"`](https://url.spec.whatwg.org/#file-state) +- [`"file slash"`](https://url.spec.whatwg.org/#file-slash-state) +- [`"file host"`](https://url.spec.whatwg.org/#file-host-state) +- [`"path start"`](https://url.spec.whatwg.org/#path-start-state) +- [`"path"`](https://url.spec.whatwg.org/#path-state) +- [`"cannot-be-a-base-URL path"`](https://url.spec.whatwg.org/#cannot-be-a-base-url-path-state) +- [`"query"`](https://url.spec.whatwg.org/#query-state) +- [`"fragment"`](https://url.spec.whatwg.org/#fragment-state) + +The URL record type has the following API: + +- [`scheme`](https://url.spec.whatwg.org/#concept-url-scheme) +- [`username`](https://url.spec.whatwg.org/#concept-url-username) +- [`password`](https://url.spec.whatwg.org/#concept-url-password) +- [`host`](https://url.spec.whatwg.org/#concept-url-host) +- [`port`](https://url.spec.whatwg.org/#concept-url-port) +- [`path`](https://url.spec.whatwg.org/#concept-url-path) (as an array) +- [`query`](https://url.spec.whatwg.org/#concept-url-query) +- [`fragment`](https://url.spec.whatwg.org/#concept-url-fragment) +- [`cannotBeABaseURL`](https://url.spec.whatwg.org/#url-cannot-be-a-base-url-flag) (as a boolean) + +These properties should be treated with care, as in general changing them will cause the URL record to be in an inconsistent state until the appropriate invocation of `basicURLParse` is used to fix it up. You can see examples of this in the URL Standard, where there are many step sequences like "4. Set context object’s url’s fragment to the empty string. 5. Basic URL parse _input_ with context object’s url as _url_ and fragment state as _state override_." In between those two steps, a URL record is in an unusable state. + +The return value of "failure" in the spec is represented by the string `"failure"`. That is, functions like `parseURL` and `basicURLParse` can return _either_ a URL record _or_ the string `"failure"`. diff --git a/node_modules/whatwg-url/lib/URL-impl.js b/node_modules/whatwg-url/lib/URL-impl.js new file mode 100644 index 0000000..dc7452c --- /dev/null +++ b/node_modules/whatwg-url/lib/URL-impl.js @@ -0,0 +1,200 @@ +"use strict"; +const usm = require("./url-state-machine"); + +exports.implementation = class URLImpl { + constructor(constructorArgs) { + const url = constructorArgs[0]; + const base = constructorArgs[1]; + + let parsedBase = null; + if (base !== undefined) { + parsedBase = usm.basicURLParse(base); + if (parsedBase === "failure") { + throw new TypeError("Invalid base URL"); + } + } + + const parsedURL = usm.basicURLParse(url, { baseURL: parsedBase }); + if (parsedURL === "failure") { + throw new TypeError("Invalid URL"); + } + + this._url = parsedURL; + + // TODO: query stuff + } + + get href() { + return usm.serializeURL(this._url); + } + + set href(v) { + const parsedURL = usm.basicURLParse(v); + if (parsedURL === "failure") { + throw new TypeError("Invalid URL"); + } + + this._url = parsedURL; + } + + get origin() { + return usm.serializeURLOrigin(this._url); + } + + get protocol() { + return this._url.scheme + ":"; + } + + set protocol(v) { + usm.basicURLParse(v + ":", { url: this._url, stateOverride: "scheme start" }); + } + + get username() { + return this._url.username; + } + + set username(v) { + if (usm.cannotHaveAUsernamePasswordPort(this._url)) { + return; + } + + usm.setTheUsername(this._url, v); + } + + get password() { + return this._url.password; + } + + set password(v) { + if (usm.cannotHaveAUsernamePasswordPort(this._url)) { + return; + } + + usm.setThePassword(this._url, v); + } + + get host() { + const url = this._url; + + if (url.host === null) { + return ""; + } + + if (url.port === null) { + return usm.serializeHost(url.host); + } + + return usm.serializeHost(url.host) + ":" + usm.serializeInteger(url.port); + } + + set host(v) { + if (this._url.cannotBeABaseURL) { + return; + } + + usm.basicURLParse(v, { url: this._url, stateOverride: "host" }); + } + + get hostname() { + if (this._url.host === null) { + return ""; + } + + return usm.serializeHost(this._url.host); + } + + set hostname(v) { + if (this._url.cannotBeABaseURL) { + return; + } + + usm.basicURLParse(v, { url: this._url, stateOverride: "hostname" }); + } + + get port() { + if (this._url.port === null) { + return ""; + } + + return usm.serializeInteger(this._url.port); + } + + set port(v) { + if (usm.cannotHaveAUsernamePasswordPort(this._url)) { + return; + } + + if (v === "") { + this._url.port = null; + } else { + usm.basicURLParse(v, { url: this._url, stateOverride: "port" }); + } + } + + get pathname() { + if (this._url.cannotBeABaseURL) { + return this._url.path[0]; + } + + if (this._url.path.length === 0) { + return ""; + } + + return "/" + this._url.path.join("/"); + } + + set pathname(v) { + if (this._url.cannotBeABaseURL) { + return; + } + + this._url.path = []; + usm.basicURLParse(v, { url: this._url, stateOverride: "path start" }); + } + + get search() { + if (this._url.query === null || this._url.query === "") { + return ""; + } + + return "?" + this._url.query; + } + + set search(v) { + // TODO: query stuff + + const url = this._url; + + if (v === "") { + url.query = null; + return; + } + + const input = v[0] === "?" ? v.substring(1) : v; + url.query = ""; + usm.basicURLParse(input, { url, stateOverride: "query" }); + } + + get hash() { + if (this._url.fragment === null || this._url.fragment === "") { + return ""; + } + + return "#" + this._url.fragment; + } + + set hash(v) { + if (v === "") { + this._url.fragment = null; + return; + } + + const input = v[0] === "#" ? v.substring(1) : v; + this._url.fragment = ""; + usm.basicURLParse(input, { url: this._url, stateOverride: "fragment" }); + } + + toJSON() { + return this.href; + } +}; diff --git a/node_modules/whatwg-url/lib/URL.js b/node_modules/whatwg-url/lib/URL.js new file mode 100644 index 0000000..78c7207 --- /dev/null +++ b/node_modules/whatwg-url/lib/URL.js @@ -0,0 +1,196 @@ +"use strict"; + +const conversions = require("webidl-conversions"); +const utils = require("./utils.js"); +const Impl = require(".//URL-impl.js"); + +const impl = utils.implSymbol; + +function URL(url) { + if (!this || this[impl] || !(this instanceof URL)) { + 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]; + } + args[0] = conversions["USVString"](args[0]); + if (args[1] !== undefined) { + args[1] = conversions["USVString"](args[1]); + } + + module.exports.setup(this, args); +} + +URL.prototype.toJSON = function toJSON() { + if (!this || !module.exports.is(this)) { + throw new TypeError("Illegal invocation"); + } + const args = []; + for (let i = 0; i < arguments.length && i < 0; ++i) { + args[i] = arguments[i]; + } + return this[impl].toJSON.apply(this[impl], args); +}; +Object.defineProperty(URL.prototype, "href", { + get() { + return this[impl].href; + }, + set(V) { + V = conversions["USVString"](V); + this[impl].href = V; + }, + enumerable: true, + configurable: true +}); + +URL.prototype.toString = function () { + if (!this || !module.exports.is(this)) { + throw new TypeError("Illegal invocation"); + } + return this.href; +}; + +Object.defineProperty(URL.prototype, "origin", { + get() { + return this[impl].origin; + }, + enumerable: true, + configurable: true +}); + +Object.defineProperty(URL.prototype, "protocol", { + get() { + return this[impl].protocol; + }, + set(V) { + V = conversions["USVString"](V); + this[impl].protocol = V; + }, + enumerable: true, + configurable: true +}); + +Object.defineProperty(URL.prototype, "username", { + get() { + return this[impl].username; + }, + set(V) { + V = conversions["USVString"](V); + this[impl].username = V; + }, + enumerable: true, + configurable: true +}); + +Object.defineProperty(URL.prototype, "password", { + get() { + return this[impl].password; + }, + set(V) { + V = conversions["USVString"](V); + this[impl].password = V; + }, + enumerable: true, + configurable: true +}); + +Object.defineProperty(URL.prototype, "host", { + get() { + return this[impl].host; + }, + set(V) { + V = conversions["USVString"](V); + this[impl].host = V; + }, + enumerable: true, + configurable: true +}); + +Object.defineProperty(URL.prototype, "hostname", { + get() { + return this[impl].hostname; + }, + set(V) { + V = conversions["USVString"](V); + this[impl].hostname = V; + }, + enumerable: true, + configurable: true +}); + +Object.defineProperty(URL.prototype, "port", { + get() { + return this[impl].port; + }, + set(V) { + V = conversions["USVString"](V); + this[impl].port = V; + }, + enumerable: true, + configurable: true +}); + +Object.defineProperty(URL.prototype, "pathname", { + get() { + return this[impl].pathname; + }, + set(V) { + V = conversions["USVString"](V); + this[impl].pathname = V; + }, + enumerable: true, + configurable: true +}); + +Object.defineProperty(URL.prototype, "search", { + get() { + return this[impl].search; + }, + set(V) { + V = conversions["USVString"](V); + this[impl].search = V; + }, + enumerable: true, + configurable: true +}); + +Object.defineProperty(URL.prototype, "hash", { + get() { + return this[impl].hash; + }, + set(V) { + V = conversions["USVString"](V); + this[impl].hash = V; + }, + enumerable: true, + configurable: true +}); + + +module.exports = { + is(obj) { + return !!obj && obj[impl] instanceof Impl.implementation; + }, + create(constructorArgs, privateData) { + let obj = Object.create(URL.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: URL, + expose: { + Window: { URL: URL }, + Worker: { URL: URL } + } +}; + diff --git a/node_modules/whatwg-url/lib/public-api.js b/node_modules/whatwg-url/lib/public-api.js new file mode 100644 index 0000000..932dcad --- /dev/null +++ b/node_modules/whatwg-url/lib/public-api.js @@ -0,0 +1,11 @@ +"use strict"; + +exports.URL = require("./URL").interface; +exports.serializeURL = require("./url-state-machine").serializeURL; +exports.serializeURLOrigin = require("./url-state-machine").serializeURLOrigin; +exports.basicURLParse = require("./url-state-machine").basicURLParse; +exports.setTheUsername = require("./url-state-machine").setTheUsername; +exports.setThePassword = require("./url-state-machine").setThePassword; +exports.serializeHost = require("./url-state-machine").serializeHost; +exports.serializeInteger = require("./url-state-machine").serializeInteger; +exports.parseURL = require("./url-state-machine").parseURL; diff --git a/node_modules/whatwg-url/lib/url-state-machine.js b/node_modules/whatwg-url/lib/url-state-machine.js new file mode 100644 index 0000000..c25dbc2 --- /dev/null +++ b/node_modules/whatwg-url/lib/url-state-machine.js @@ -0,0 +1,1297 @@ +"use strict"; +const punycode = require("punycode"); +const tr46 = require("tr46"); + +const specialSchemes = { + ftp: 21, + file: null, + gopher: 70, + http: 80, + https: 443, + ws: 80, + wss: 443 +}; + +const failure = Symbol("failure"); + +function countSymbols(str) { + return punycode.ucs2.decode(str).length; +} + +function at(input, idx) { + const c = input[idx]; + return isNaN(c) ? undefined : String.fromCodePoint(c); +} + +function isASCIIDigit(c) { + return c >= 0x30 && c <= 0x39; +} + +function isASCIIAlpha(c) { + return (c >= 0x41 && c <= 0x5A) || (c >= 0x61 && c <= 0x7A); +} + +function isASCIIAlphanumeric(c) { + return isASCIIAlpha(c) || isASCIIDigit(c); +} + +function isASCIIHex(c) { + return isASCIIDigit(c) || (c >= 0x41 && c <= 0x46) || (c >= 0x61 && c <= 0x66); +} + +function isSingleDot(buffer) { + return buffer === "." || buffer.toLowerCase() === "%2e"; +} + +function isDoubleDot(buffer) { + buffer = buffer.toLowerCase(); + return buffer === ".." || buffer === "%2e." || buffer === ".%2e" || buffer === "%2e%2e"; +} + +function isWindowsDriveLetterCodePoints(cp1, cp2) { + return isASCIIAlpha(cp1) && (cp2 === 58 || cp2 === 124); +} + +function isWindowsDriveLetterString(string) { + return string.length === 2 && isASCIIAlpha(string.codePointAt(0)) && (string[1] === ":" || string[1] === "|"); +} + +function isNormalizedWindowsDriveLetterString(string) { + return string.length === 2 && isASCIIAlpha(string.codePointAt(0)) && string[1] === ":"; +} + +function containsForbiddenHostCodePoint(string) { + return string.search(/\u0000|\u0009|\u000A|\u000D|\u0020|#|%|\/|:|\?|@|\[|\\|\]/) !== -1; +} + +function containsForbiddenHostCodePointExcludingPercent(string) { + return string.search(/\u0000|\u0009|\u000A|\u000D|\u0020|#|\/|:|\?|@|\[|\\|\]/) !== -1; +} + +function isSpecialScheme(scheme) { + return specialSchemes[scheme] !== undefined; +} + +function isSpecial(url) { + return isSpecialScheme(url.scheme); +} + +function defaultPort(scheme) { + return specialSchemes[scheme]; +} + +function percentEncode(c) { + let hex = c.toString(16).toUpperCase(); + if (hex.length === 1) { + hex = "0" + hex; + } + + return "%" + hex; +} + +function utf8PercentEncode(c) { + const buf = new Buffer(c); + + let str = ""; + + for (let i = 0; i < buf.length; ++i) { + str += percentEncode(buf[i]); + } + + 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]); + } + } + return new Buffer(output).toString(); +} + +function isC0ControlPercentEncode(c) { + return c <= 0x1F || c > 0x7E; +} + +const extraPathPercentEncodeSet = new Set([32, 34, 35, 60, 62, 63, 96, 123, 125]); +function isPathPercentEncode(c) { + return isC0ControlPercentEncode(c) || extraPathPercentEncodeSet.has(c); +} + +const 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); + } + + return cStr; +} + +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 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 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 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; + } + + let value = 0; + let length = 0; + + while (length < 4 && isASCIIHex(input[pointer])) { + value = value * 0x10 + 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] !== undefined) { + 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] * 0x100 + ipv4Piece; + + ++numbersSeen; + + if (numbersSeen === 2 || numbersSeen === 4) { + ++pieceIndex; + } + } + + if (numbersSeen !== 4) { + return failure; + } + + break; + } else if (input[pointer] === 58) { + ++pointer; + if (input[pointer] === undefined) { + return failure; + } + } else if (input[pointer] !== undefined) { + 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; + } + + if (compress === pieceIndex) { + const separator = pieceIndex === 0 ? "::" : ":"; + output += separator; + ignore0 = true; + continue; + } + + output += address[pieceIndex].toString(16); + + if (pieceIndex !== 7) { + output += ":"; + } + } + + return output; +} + +function parseHost(input, isSpecialArg) { + if (input[0] === "[") { + if (input[input.length - 1] !== "]") { + return failure; + } + + return parseIPv6(input.substring(1, input.length - 1)); + } + + if (!isSpecialArg) { + return parseOpaqueHost(input); + } + + const domain = utf8PercentDecode(input); + const asciiDomain = tr46.toASCII(domain, false, tr46.PROCESSING_OPTIONS.NONTRANSITIONAL, false); + if (asciiDomain === null) { + return failure; + } + + if (containsForbiddenHostCodePoint(asciiDomain)) { + return failure; + } + + const ipv4Host = parseIPv4(asciiDomain); + if (typeof ipv4Host === "number" || ipv4Host === failure) { + return ipv4Host; + } + + return asciiDomain; +} + +function parseOpaqueHost(input) { + if (containsForbiddenHostCodePointExcludingPercent(input)) { + return failure; + } + + let output = ""; + const decoded = punycode.ucs2.decode(input); + for (let i = 0; i < decoded.length; ++i) { + output += percentEncodeChar(decoded[i], isC0ControlPercentEncode); + } + return output; +} + +function findLongestZeroSequence(arr) { + let maxIdx = null; + let maxLen = 1; // only find elements > 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; + } + } + + // if trailing zeros + if (currLen > maxLen) { + maxIdx = currStart; + maxLen = currLen; + } + + return { + idx: maxIdx, + len: maxLen + }; +} + +function serializeHost(host) { + if (typeof host === "number") { + return serializeIPv4(host); + } + + // IPv6 serializer + if (host instanceof Array) { + return "[" + serializeIPv6(host) + "]"; + } + + return host; +} + +function trimControlChars(url) { + return url.replace(/^[\u0000-\u001F\u0020]+|[\u0000-\u001F\u0020]+$/g, ""); +} + +function trimTabAndNewline(url) { + return url.replace(/\u0009|\u000A|\u000D/g, ""); +} + +function shortenPath(url) { + const path = url.path; + if (path.length === 0) { + return; + } + if (url.scheme === "file" && path.length === 1 && isNormalizedWindowsDriveLetter(path[0])) { + return; + } + + path.pop(); +} + +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 res = trimControlChars(this.input); + if (res !== this.input) { + this.parseError = true; + } + this.input = res; + } + + 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) ? undefined : String.fromCodePoint(c); + + // exec state machine + const ret = this["parse " + this.state](c, cStr); + if (!ret) { + break; // terminate algorithm + } else if (ret === failure) { + this.failure = true; + break; + } + } +} + +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; + } + + if (this.url.scheme === "file" && (this.url.host === "" || this.url.host === null)) { + return false; + } + } + this.url.scheme = this.buffer; + this.buffer = ""; + if (this.stateOverride) { + return false; + } + 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 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; + } + + 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; + } + + return true; +}; + +URLStateMachine.prototype["parse path or authority"] = function parsePathOrAuthority(c) { + if (c === 47) { + this.state = "authority"; + } else { + this.state = "path"; + --this.pointer; + } + + 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; + } + + 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; + } + + 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; + } + + 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; + } + + 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; + + // careful, this is based on buffer and has its own pointer (this.pointer != pointer) and inner chars + 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; + } + } + 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; + } + + 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; + } + + 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; + } + + 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 = ""; + } + if (this.stateOverride) { + return false; + } + this.state = "path start"; + --this.pointer; + } else { + this.parseError = true; + return failure; + } + + return true; +}; + +const 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 || // remaining consists of 0 code points + !isWindowsDriveLetterCodePoints(c, this.input[this.pointer + 1]) || + (this.input.length - this.pointer - 1 >= 2 && // remaining has at least 2 code points + !fileOtherwiseCodePoints.has(this.input[this.pointer + 2]))) { + this.url.host = this.base.host; + this.url.path = this.base.path.slice(); + shortenPath(this.url); + } else { + this.parseError = true; + } + + this.state = "path"; + --this.pointer; + } + } else { + this.state = "path"; + --this.pointer; + } + + return true; +}; + +URLStateMachine.prototype["parse file slash"] = function parseFileSlash(c) { + if (c === 47 || c === 92) { + if (c === 92) { + this.parseError = true; + } + 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; + } + } + this.state = "path"; + --this.pointer; + } + + 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; + } + 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"; + } + } else { + this.buffer += cStr; + } + + 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 !== undefined) { + this.state = "path"; + if (c !== 47) { + --this.pointer; + } + } + + 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); + } + this.buffer = ""; + if (this.url.scheme === "file" && (c === undefined || c === 63 || c === 35)) { + while (this.url.path.length > 1 && this.url.path[0] === "") { + this.parseError = true; + this.url.path.shift(); + } + } + if (c === 63) { + this.url.query = ""; + this.state = "query"; + } + if (c === 35) { + this.url.fragment = ""; + this.state = "fragment"; + } + } else { + // TODO: If c is not a URL code point and not "%", parse error. + + if (c === 37 && + (!isASCIIHex(this.input[this.pointer + 1]) || + !isASCIIHex(this.input[this.pointer + 2]))) { + this.parseError = true; + } + + this.buffer += percentEncodeChar(c, isPathPercentEncode); + } + + return true; +}; + +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"; + } else { + // TODO: Add: not a URL code point + if (!isNaN(c) && c !== 37) { + this.parseError = true; + } + + 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); + } + } + + 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); // TODO: Use encoding override instead + for (let i = 0; i < buffer.length; ++i) { + if (buffer[i] < 0x21 || buffer[i] > 0x7E || buffer[i] === 0x22 || buffer[i] === 0x23 || + buffer[i] === 0x3C || buffer[i] === 0x3E) { + 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 { + // TODO: If c is not a URL code point and not "%", parse error. + if (c === 37 && + (!isASCIIHex(this.input[this.pointer + 1]) || + !isASCIIHex(this.input[this.pointer + 2]))) { + this.parseError = true; + } + + this.buffer += cStr; + } + + return true; +}; + +URLStateMachine.prototype["parse fragment"] = function parseFragment(c) { + if (isNaN(c)) { // do nothing + } else if (c === 0x0) { + this.parseError = true; + } else { + // TODO: If c is not a URL code point and not "%", parse error. + if (c === 37 && + (!isASCIIHex(this.input[this.pointer + 1]) || + !isASCIIHex(this.input[this.pointer + 2]))) { + this.parseError = true; + } + + 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; + } + output += "@"; + } + + output += serializeHost(url.host); + + if (url.port !== null) { + output += ":" + url.port; + } + } 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; + } + } + + if (url.query !== null) { + output += "?" + url.query; + } + + if (!excludeFragment && url.fragment !== null) { + output += "#" + url.fragment; + } + + return output; +} + +function serializeOrigin(tuple) { + let result = tuple.scheme + "://"; + result += serializeHost(tuple.host); + + if (tuple.port !== null) { + result += ":" + tuple.port; + } + + return result; +} + +module.exports.serializeURL = serializeURL; + +module.exports.serializeURLOrigin = function (url) { + // https://url.spec.whatwg.org/#concept-url-origin + switch (url.scheme) { + case "blob": + try { + return module.exports.serializeURLOrigin(module.exports.parseURL(url.path[0])); + } catch (e) { + // serializing an opaque origin returns "null" + 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": + // spec says "exercise to the reader", chrome says "file://" + return "file://"; + default: + // serializing an opaque origin returns "null" + return "null"; + } +}; + +module.exports.basicURLParse = function (input, options) { + if (options === undefined) { + options = {}; + } + + const usm = new URLStateMachine(input, options.baseURL, options.encodingOverride, options.url, options.stateOverride); + if (usm.failure) { + return "failure"; + } + + return usm.url; +}; + +module.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); + } +}; + +module.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); + } +}; + +module.exports.serializeHost = serializeHost; + +module.exports.cannotHaveAUsernamePasswordPort = cannotHaveAUsernamePasswordPort; + +module.exports.serializeInteger = function (integer) { + return String(integer); +}; + +module.exports.parseURL = function (input, options) { + if (options === undefined) { + options = {}; + } + + // We don't handle blobs, so this just delegates: + return module.exports.basicURLParse(input, { baseURL: options.baseURL, encodingOverride: options.encodingOverride }); +}; diff --git a/node_modules/whatwg-url/lib/utils.js b/node_modules/whatwg-url/lib/utils.js new file mode 100644 index 0000000..a562009 --- /dev/null +++ b/node_modules/whatwg-url/lib/utils.js @@ -0,0 +1,20 @@ +"use strict"; + +module.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])); + } +}; + +module.exports.wrapperSymbol = Symbol("wrapper"); +module.exports.implSymbol = Symbol("impl"); + +module.exports.wrapperForImpl = function (impl) { + return impl[module.exports.wrapperSymbol]; +}; + +module.exports.implForWrapper = function (wrapper) { + return wrapper[module.exports.implSymbol]; +}; + diff --git a/node_modules/whatwg-url/package.json b/node_modules/whatwg-url/package.json new file mode 100644 index 0000000..fce35ae --- /dev/null +++ b/node_modules/whatwg-url/package.json @@ -0,0 +1,32 @@ +{ + "name": "whatwg-url", + "version": "5.0.0", + "description": "An implementation of the WHATWG URL Standard's URL API and parsing machinery", + "main": "lib/public-api.js", + "files": [ + "lib/" + ], + "author": "Sebastian Mayr ", + "license": "MIT", + "repository": "jsdom/whatwg-url", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + }, + "devDependencies": { + "eslint": "^2.6.0", + "istanbul": "~0.4.3", + "mocha": "^2.2.4", + "recast": "~0.10.29", + "request": "^2.55.0", + "webidl2js": "^3.0.2" + }, + "scripts": { + "build": "node scripts/transform.js && node scripts/convert-idl.js", + "coverage": "istanbul cover node_modules/mocha/bin/_mocha", + "lint": "eslint .", + "prepublish": "npm run build", + "pretest": "node scripts/get-latest-platform-tests.js && npm run build", + "test": "mocha" + } +} diff --git a/node_modules/wrappy/LICENSE b/node_modules/wrappy/LICENSE new file mode 100644 index 0000000..19129e3 --- /dev/null +++ b/node_modules/wrappy/LICENSE @@ -0,0 +1,15 @@ +The ISC License + +Copyright (c) Isaac Z. Schlueter and Contributors + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR +IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. diff --git a/node_modules/wrappy/README.md b/node_modules/wrappy/README.md new file mode 100644 index 0000000..98eab25 --- /dev/null +++ b/node_modules/wrappy/README.md @@ -0,0 +1,36 @@ +# wrappy + +Callback wrapping utility + +## USAGE + +```javascript +var wrappy = require("wrappy") + +// var wrapper = wrappy(wrapperFunction) + +// make sure a cb is called only once +// See also: http://npm.im/once for this specific use case +var once = wrappy(function (cb) { + var called = false + return function () { + if (called) return + called = true + return cb.apply(this, arguments) + } +}) + +function printBoo () { + console.log('boo') +} +// has some rando property +printBoo.iAmBooPrinter = true + +var onlyPrintOnce = once(printBoo) + +onlyPrintOnce() // prints 'boo' +onlyPrintOnce() // does nothing + +// random property is retained! +assert.equal(onlyPrintOnce.iAmBooPrinter, true) +``` diff --git a/node_modules/wrappy/package.json b/node_modules/wrappy/package.json new file mode 100644 index 0000000..1307520 --- /dev/null +++ b/node_modules/wrappy/package.json @@ -0,0 +1,29 @@ +{ + "name": "wrappy", + "version": "1.0.2", + "description": "Callback wrapping utility", + "main": "wrappy.js", + "files": [ + "wrappy.js" + ], + "directories": { + "test": "test" + }, + "dependencies": {}, + "devDependencies": { + "tap": "^2.3.1" + }, + "scripts": { + "test": "tap --coverage test/*.js" + }, + "repository": { + "type": "git", + "url": "https://github.com/npm/wrappy" + }, + "author": "Isaac Z. Schlueter (http://blog.izs.me/)", + "license": "ISC", + "bugs": { + "url": "https://github.com/npm/wrappy/issues" + }, + "homepage": "https://github.com/npm/wrappy" +} diff --git a/node_modules/wrappy/wrappy.js b/node_modules/wrappy/wrappy.js new file mode 100644 index 0000000..bb7e7d6 --- /dev/null +++ b/node_modules/wrappy/wrappy.js @@ -0,0 +1,33 @@ +// Returns a wrapper function that returns a wrapped callback +// The wrapper function should do some stuff, and return a +// presumably different callback function. +// This makes sure that own properties are retained, so that +// decorations and such are not lost along the way. +module.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 cb = args[args.length-1] + if (typeof ret === 'function' && ret !== cb) { + Object.keys(cb).forEach(function (k) { + ret[k] = cb[k] + }) + } + return ret + } +} diff --git a/node_modules/xml-js/LICENSE b/node_modules/xml-js/LICENSE new file mode 100644 index 0000000..da7ec38 --- /dev/null +++ b/node_modules/xml-js/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2016-2017 Yousuf Almarzooqi + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. \ No newline at end of file diff --git a/node_modules/xml-js/README.md b/node_modules/xml-js/README.md new file mode 100644 index 0000000..d84efc4 --- /dev/null +++ b/node_modules/xml-js/README.md @@ -0,0 +1,390 @@ +![XML ⇔ JS/JSON](http://nashwaan.github.io/xml-js/images/logo.svg) + +Convert XML text to Javascript object / JSON text (and vice versa). + +[![Build Status](https://ci.appveyor.com/api/projects/status/0ky9f115m0f0r0gf?svg=true)](https://ci.appveyor.com/project/nashwaan/xml-js) +[![Build Status](https://travis-ci.org/nashwaan/xml-js.svg?branch=master)](https://travis-ci.org/nashwaan/xml-js) +[![Build Status](https://img.shields.io/circleci/project/nashwaan/xml-js.svg)](https://circleci.com/gh/nashwaan/xml-js) + + +[![Coverage Status](https://coveralls.io/repos/github/nashwaan/xml-js/badge.svg?branch=master)](https://coveralls.io/github/nashwaan/xml-js?branch=master) +[![codecov](https://codecov.io/gh/nashwaan/xml-js/branch/master/graph/badge.svg)](https://codecov.io/gh/nashwaan/xml-js) +[![Codacy Badge](https://api.codacy.com/project/badge/Grade/f6ed5dd79a5b4041bfd2732963c4d09b)](https://www.codacy.com/app/ysf953/xml-js?utm_source=github.com&utm_medium=referral&utm_content=nashwaan/xml-js&utm_campaign=Badge_Grade) +[![Code Climate](https://codeclimate.com/github/nashwaan/xml-js/badges/gpa.svg)](https://codeclimate.com/github/nashwaan/xml-js) + +[![npm](http://img.shields.io/npm/v/xml-js.svg)](https://www.npmjs.com/package/xml-js) +[![License](https://img.shields.io/npm/l/xml-js.svg)](LICENSE) +[![Downloads/month](https://img.shields.io/npm/dm/xml-js.svg)](http://www.npmtrends.com/xml-js) +[![Dependency Status](https://david-dm.org/nashwaan/xml-js.svg)](https://david-dm.org/nashwaan/xml-js) +[![Package Quality](http://npm.packagequality.com/shield/xml-js.svg)](http://packagequality.com/#?package=xml-js) + +# Synopsis + +![Convert XML ↔ JS/JSON as compact or non-compact](http://nashwaan.github.io/xml-js/images/synopsis.svg) + + +# Features + +* **Maintain Order of Elements**: +Most libraries will convert `` to `{a:[{},{}],b:{}}` which merges any node of same name into an array. This library can create the following to preserve the order of elements: +`{"elements":[{"type":"element","name":"a"},{"type":"element","name":"b"},{"type":"element","name":"a"}]}`. + +This is very important and it is the main reason why this library was created. Read also [Compact vs Non-Compact](#compact-vs-non-compact) for more info. + +* **Fully XML Compliant**: +Can parse: elements, attributes, texts, comments, CData, DOCTYPE, XML declarations, and Processing Instructions. + +* **Reversible**: +Whether converting xml→json or json→xml, the result can be converted back to its original form. + +* **Minimal Dependencies**: +This library depends only on one external npm module. + +* **Change Property Key Name**: +Usually output of XML attributes are stored in `@attr`, `_atrr`, `$attr` or `$` in order to avoid conflicting with name of sub-elements. +This library store them in `attributes`, but most importantly, you can change this to whatever you like. + +* **Support Upwards Traversal**: +By setting `{addParent: true}` option, an extra property named `parent` will be generated along each element so that its parent can be referenced. +Therefore, anywhere during the traversal of an element, its children **and** its parent can be easily accessed. + +* **Support Command Line**: +To quickly convert xml or json files, this module can be installed globally or locally (i.e. use it as [script](https://docs.npmjs.com/misc/scripts) in package.json). + +* **Customize Processing using Callback Hooks**: +[Custom functions](#options-for-custom-processing-functions) can be supplied to do additional processing for different parts of xml or json (like cdata, comments, elements, attributes ...etc). + +* **Portable Code**: +Written purely in JavaScript which means it can be used in Node environment and **browser** environment (via bundlers like browserify/JSPM/Webpack). + +* **Typings Info Included**: +Support type checking and code suggestion via intellisense. +Thanks to the wonderful efforts by [DenisCarriere](https://github.com/DenisCarriere). + +## Compact vs Non-Compact + +Most XML to JSON converters (including online converters) convert `` to some compact output like `{"a":{}}` +instead of non-compact output like `{"elements":[{"type":"element","name":"a"}]}`. + +While compact output might work in most situations, there are cases when elements of different names are mixed inside a parent element. Lets use `` as an example. +Most converters will produce compact output like this `{a:[{_:{x:"1"}},{_:{x:"3"}}], b:{_:{x:"2"}}}`, +which has merged both `` elements into an array. If you try to convert this back to xml, you will get `` +which has not preserved the order of elements! + +The reason behind this behavior is due to the inherent limitation in the compact representation. +Because output like `{a:{_:{x:"1"}}, b:{_:{x:"2"}}, a:{_:{x:"3"}}}` is illegal (same property name `a` should not appear twice in an object). This leaves no option but to use array `{a:[{_:{x:"1"}},{_:{x:"3"}}]`. + +The non-compact output, which is supported by this library, will produce more information and always guarantees the order of the elements as they appeared in the XML file. + +Another drawback of compact output is the resultant element can be an object or an array and therefore makes the client code a little awkward in terms of the extra check needed on object type before processing. + +NOTE: Although non-compact output is more accurate representation of original XML than compact version, the non-compact version is verbose and consumes more space. +This library provides both options. Use `{compact: false}` if you are not sure because it preserves everything; +otherwise use `{compact: true}` if you want to save space and you don't care about mixing elements of same name and losing their order. + +Tip: You can reduce the output size by using shorter [key names](#options-for-changing-key-names). + +# Usage + +## Installation + +``` +npm install --save xml-js +``` + +You can also install it globally to use it as a command line convertor (see [Command Line](#command-line)). + +``` +npm install --global xml-js +``` + +## Quick start + +```js +var convert = require('xml-js'); +var xml = +'' + +'' + +' Happy' + +' Work' + +' Play' + +''; +var result1 = convert.xml2json(xml, {compact: true, spaces: 4}); +var result2 = convert.xml2json(xml, {compact: false, spaces: 4}); +console.log(result1, '\n', result2); +``` + +To see the result of this code, see the output above in [Synopsis](#synopsis) section. + +Or [run and edit](https://runkit.com/587874e079a2f60013c1f5ac/587874e079a2f60013c1f5ad) this code live in the browser. + +## Sample Conversions + +| XML | JS/JSON compact | JS/JSON non-compact | +|:----|:----------------|:--------------------| +| `` | `{"a":{}}` | `{"elements":[{"type":"element","name":"a"}]}` | +| `` | `{"a":{},"b":{}}` | `{"elements":[{"type":"element","name":"a"},{"type":"element","name":"b"}]}` | +| `` | `{"a":{"b":{}}}` | `{"elements":[{"type":"element","name":"a","elements":[{"type":"element","name":"b"}]}]}` | +| ` Hi ` | `{"a":{"_text":" Hi "}}` | `{"elements":[{"type":"element","name":"a","elements":[{"type":"text","text":" Hi "}]}]}` | +| `` | `{"a":{"_attributes":{"x":"1.234","y":"It's"}}}` | `{"elements":[{"type":"element","name":"a","attributes":{"x":"1.234","y":"It's"}}]}` | +| `` | `{"_declaration":{}}` | `{"declaration":{}}` | +| `` | `{"_instruction":{"go":"there"}}` | `{"elements":[{"type":"instruction","name":"go","instruction":"there"}]}` | +| `` | `{"_declaration":{"_attributes":{"version":"1.0","encoding":"utf-8"}}}` | `{"declaration":{"attributes":{"version":"1.0","encoding":"utf-8"}}}` | +| `` | `{"_comment":"Hello, World!"}` | `{"elements":[{"type":"comment","comment":"Hello, World!"}]}` | +| `]]>` | `{"_cdata":""}` | `{"elements":[{"type":"cdata","cdata":""}]}` | + +# API Reference + +This library provides 4 functions: `js2xml()`, `json2xml()`, `xml2js()`, and `xml2json()`. Here are the usages for each one (see more details in the following sections): +```js +var convert = require('xml-js'); +result = convert.js2xml(js, options); // to convert javascript object to xml text +result = convert.json2xml(json, options); // to convert json text to xml text +result = convert.xml2js(xml, options); // to convert xml text to javascript object +result = convert.xml2json(xml, options); // to convert xml text to json text +``` + +## Convert JS object / JSON → XML + +To convert JavaScript object to XML text, use `js2xml()`. To convert JSON text to XML text, use `json2xml()`. + +```js +var convert = require('xml-js'); +var json = require('fs').readFileSync('test.json', 'utf8'); +var options = {compact: true, ignoreComment: true, spaces: 4}; +var result = convert.json2xml(json, options); +console.log(result); +``` + +### Options for Converting JS object / JSON → XML + +The below options are applicable for both `js2xml()` and `json2xml()` functions. + + +| Option | Default | Description | +|:----------------------|:--------|:------------| +| `spaces` | `0` | Number of spaces to be used for indenting XML output. Passing characters like `' '` or `'\t'` are also accepted. | +| `compact` | `false` | Whether the *input* object is in compact form or not. By default, input is expected to be in non-compact form. | +| | | IMPORTANT: Remeber to set this option `compact: true` if you are supplying normal json (which is likely equivalent to compact form). Otherwise, the function assumes your json input is non-compact form and you will not get a result if it is not in that form. See [Synopsis](#synopsis) to know the difference between the two json forms | +| `fullTagEmptyElement` | `false` | Whether to produce element without sub-elements as full tag pairs `` rather than self closing tag ``. | +| `indentCdata` | `false` | Whether to write CData in a new line and indent it. Will generate `\n ` instead of ``. See [discussion](https://github.com/nashwaan/xml-js/issues/14) | +| `indentAttributes` | `false` | Whether to print attributes across multiple lines and indent them (when `spaces` is not `0`). See [example](https://github.com/nashwaan/xml-js/issues/31). | +| `ignoreDeclaration` | `false` | Whether to ignore writing declaration directives of xml. For example, `` will be ignored. | +| `ignoreInstruction` | `false` | Whether to ignore writing processing instruction of xml. For example, `` will be ignored. | +| `ignoreAttributes` | `false` | Whether to ignore writing attributes of the elements. For example, `x="1"` in `` will be ignored | +| `ignoreComment` | `false` | Whether to ignore writing comments of the elements. That is, no `` will be generated. | +| `ignoreCdata` | `false` | Whether to ignore writing CData of the elements. That is, no `` will be generated. | +| `ignoreDoctype` | `false` | Whether to ignore writing Doctype of the elements. That is, no `` will be generated. | +| `ignoreText` | `false` | Whether to ignore writing texts of the elements. For example, `hi` text in `hi` will be ignored. | + +## Convert XML → JS object / JSON + +To convert XML text to JavaScript object, use `xml2js()`. To convert XML text to JSON text, use `xml2json()`. + +```js +var convert = require('xml-js'); +var xml = require('fs').readFileSync('test.xml', 'utf8'); +var options = {ignoreComment: true, alwaysChildren: true}; +var result = convert.xml2js(xml, options); // or convert.xml2json(xml, options) +console.log(result); +``` + +### Options for Converting XML → JS object / JSON + +The below options are applicable for both `xml2js()` and `xml2json()` functions. + +| Option | Default | Description | +|:--------------------|:--------|:------------| +| `compact` | `false` | Whether to produce detailed object or compact object. | +| `trim` | `false` | Whether to trim whitespace characters that may exist before and after the text. | +| `sanitize` ([Deprecated](https://github.com/nashwaan/xml-js/issues/26)) | `false` | Whether to replace `&` `<` `>` with `&` `<` `>` respectively, in the resultant text. | +| `nativeType` | `false` | Whether to attempt converting text of numerals or of boolean values to native type. For example, `"123"` will be `123` and `"true"` will be `true` | +| `nativeTypeAttributes` | `false` | Whether to attempt converting attributes of numerals or of boolean values to native type. See also `nativeType` above. | +| `addParent` | `false` | Whether to add `parent` property in each element object that points to parent object. | +| `alwaysArray` | `false` | Whether to always put sub element, even if it is one only, as an item inside an array. `` will be `a:[{b:[{}]}]` rather than `a:{b:{}}` (applicable for compact output only). If the passed value is an array, only elements with names in the passed array are always made arrays. | +| `alwaysChildren` | `false` | Whether to always generate `elements` property even when there are no actual sub elements. `` will be `{"elements":[{"type":"element","name":"a","elements":[]}]}` rather than `{"elements":[{"type":"element","name":"a"}]}` (applicable for non-compact output). | +| `instructionHasAttributes` | `false` | Whether to parse contents of Processing Instruction as attributes or not. `` will be `{"_instruction":{"go":{"_attributes":{"to":"there"}}}}` rather than `{"_instruction":{"go":"to=\"there\""}}`. See [discussion](https://github.com/nashwaan/xml-js/issues/17). | +| `ignoreDeclaration` | `false` | Whether to ignore parsing declaration property. That is, no `declaration` property will be generated. | +| `ignoreInstruction` | `false` | Whether to ignore parsing processing instruction property. That is, no `instruction` property will be generated. | +| `ignoreAttributes` | `false` | Whether to ignore parsing attributes of elements.That is, no `attributes` property will be generated. | +| `ignoreComment` | `false` | Whether to ignore parsing comments of the elements. That is, no `comment` will be generated. | +| `ignoreCdata` | `false` | Whether to ignore parsing CData of the elements. That is, no `cdata` will be generated. | +| `ignoreDoctype` | `false` | Whether to ignore parsing Doctype of the elements. That is, no `doctype` will be generated. | +| `ignoreText` | `false` | Whether to ignore parsing texts of the elements. That is, no `text` will be generated. | + +The below option is applicable only for `xml2json()` function. + +| Option | Default | Description | +|:--------------------|:--------|:------------| +| `spaces` | `0` | Number of spaces to be used for indenting JSON output. Passing characters like `' '` or `'\t'` are also accepted. | + +## Options for Changing Key Names + +To change default key names in the output object or the default key names assumed in the input JavaScript object / JSON, use the following options: + +| Option | Default | Description | +|:--------------------|:--------|:------------| +| `declarationKey` | `"declaration"` or `"_declaration"` | Name of the property key which will be used for the declaration. For example, if `declarationKey: '$declaration'` then output of `` will be `{"$declaration":{}}` *(in compact form)* | +| `instructionKey` | `"instruction"` or `"_instruction"` | Name of the property key which will be used for the processing instruction. For example, if `instructionKey: '$instruction'` then output of `` will be `{"$instruction":{"go":"there"}}` *(in compact form)* | +| `attributesKey` | `"attributes"` or `"_attributes"` | Name of the property key which will be used for the attributes. For example, if `attributesKey: '$attributes'` then output of `` will be `{"a":{$attributes:{"x":"hello"}}}` *(in compact form)* | +| `textKey` | `"text"` or `"_text"` | Name of the property key which will be used for the text. For example, if `textKey: '$text'` then output of `hi` will be `{"a":{"$text":"Hi"}}` *(in compact form)* | +| `cdataKey` | `"cdata"` or `"_cdata"` | Name of the property key which will be used for the cdata. For example, if `cdataKey: '$cdata'` then output of `` will be `{"$cdata":"1 is < 2"}` *(in compact form)* | +| `doctypeKey` | `"doctype"` or `"_doctype"` | Name of the property key which will be used for the doctype. For example, if `doctypeKey: '$doctype'` then output of `` will be `{"$doctype":" foo}` *(in compact form)* | +| `commentKey` | `"comment"` or `"_comment"` | Name of the property key which will be used for the comment. For example, if `commentKey: '$comment'` then output of `` will be `{"$comment":"note"}` *(in compact form)* | +| `parentKey` | `"parent"` or `"_parent"` | Name of the property key which will be used for the parent. For example, if `parentKey: '$parent'` then output of `` will be `{"a":{"b":{$parent:_points_to_a}}}` *(in compact form)* | +| `typeKey` | `"type"` | Name of the property key which will be used for the type. For example, if `typeKey: '$type'` then output of `` will be `{"elements":[{"$type":"element","name":"a"}]}` *(in non-compact form)* | +| `nameKey` | `"name"` | Name of the property key which will be used for the name. For example, if `nameKey: '$name'` then output of `` will be `{"elements":[{"type":"element","$name":"a"}]}` *(in non-compact form)* | +| `elementsKey` | `"elements"` | Name of the property key which will be used for the elements. For example, if `elementsKey: '$elements'` then output of `` will be `{"$elements":[{"type":"element","name":"a"}]}` *(in non-compact form)* | + +Two default values mean the first is used for *non-compact* output and the second is for *compact* output. + +> **TIP**: In compact mode, you can further reduce output result by using fewer characters for key names `{textKey: '_', attributesKey: '$', commentKey: 'value'}`. This is also applicable to non-compact mode. + +> **TIP**: In non-compact mode, you probably want to set `{textKey: 'value', cdataKey: 'value', commentKey: 'value'}` +> to make it more consistent and easier for your client code to go through the contents of text, cdata, and comment. + +## Options for Custom Processing Functions + +For XML → JS object / JSON, following custom callback functions can be supplied: + +```js +var convert = require('xml-js'); +var xml = 'Ali 30'; +var options = {compact: true, elementNameFn: function(val) {return val.replace('foo:','').toUpperCase();}}; +var result = convert.xml2json(xml, options); +console.log(result); // {"NAME":{"_text":"Ali"},"BAR:AGE":{"_text":"30"}} +``` + +| Option | Signature | Description | +|:--------------------|:----------|:------------| +| `doctypeFn` | `(value, parentElement)` | To perform additional processing for DOCTYPE. For example, `{doctypeFn: function(val) {return val.toUpperCase();}}` | +| `instructionFn` | `(instructionValue, instructionName, parentElement)` | To perform additional processing for content of Processing Instruction value. For example, `{instructionFn: function(val) {return val.toUpperCase();}}`. Note: `instructionValue` will be an object if `instructionHasAttributes` is enabled. | +| `cdataFn` | `(value, parentElement)` | To perform additional processing for CData. For example, `{cdataFn: function(val) {return val.toUpperCase();}}`. | +| `commentFn` | `(value, parentElement)` | To perform additional processing for comments. For example, `{commentFn: function(val) {return val.toUpperCase();}}`. | +| `textFn` | `(value, parentElement)` | To perform additional processing for texts inside elements. For example, `{textFn: function(val) {return val.toUpperCase();}}`. | +| `instructionNameFn` | `(instructionName, instructionValue, parentElement)` | To perform additional processing for Processing Instruction name. For example, `{instructionNameFn: function(val) {return val.toUpperCase();}}`. Note: `instructionValue` will be an object if `instructionHasAttributes` is enabled. | +| `elementNameFn` | `(value, parentElement)` | To perform additional processing for element name. For example, `{elementNameFn: function(val) {return val.toUpperCase();}}`. | +| `attributeNameFn` | `(attributeName, attributeValue, parentElement)` | To perform additional processing for attribute name. For example, `{attributeNameFn: function(val) {return val.toUpperCase();}}`. | +| `attributeValueFn` | `(attributeValue, attributeName, parentElement)` | To perform additional processing for attributeValue. For example, `{attributeValueFn: function(val) {return val.toUpperCase();}}`. | +| `attributesFn` | `(value, parentElement)` | To perform additional processing for attributes object. For example, `{attributesFn: function(val) {return val.toUpperCase();}}`. | + +For JS object / JSON → XML, following custom callback functions can be supplied: + +```js +var convert = require('xml-js'); +var json = '{"name":{"_text":"Ali"},"age":{"_text":"30"}}'; +var options = {compact: true, textFn: function(val, elementName) {return elementName === 'age'? val + '';}}; +var result = convert.json2xml(json, options); +console.log(result); // Ali 30 +``` + +| Option | Signature | Description | +|:--------------------|:----------|:------------| +| `doctypeFn` | `(value, currentElementName, currentElementObj)` | To perform additional processing for DOCTYPE. For example, `{doctypeFn: function(val) {return val.toUpperCase();}`. | +| `instructionFn` | `(instructionValue, instructionName, currentElementName, currentElementObj)` | To perform additional processing for content of Processing Instruction value. For example, `{instructionFn: function(val) {return val.toUpperCase();}}`. Note: `instructionValue` will be an object if `instructionHasAttributes` is enabled. | +| `cdataFn` | `(value, currentElementName, currentElementObj)` | To perform additional processing for CData. For example, `{cdataFn: function(val) {return val.toUpperCase();}}`. | +| `commentFn` | `(value, currentElementName, currentElementObj)` | To perform additional processing for comments. For example, `{commentFn: function(val) {return val.toUpperCase();}}`. | +| `textFn` | `(value, currentElementName, currentElementObj)` | To perform additional processing for texts inside elements. For example, `{textFn: function(val) {return val.toUpperCase();}}`. | +| `instructionNameFn` | `(instructionName, instructionValue, currentElementName, currentElementObj)` | To perform additional processing for Processing Instruction name. For example, `{instructionNameFn: function(val) {return val.toUpperCase();}}`. Note: `instructionValue` will be an object if `instructionHasAttributes` is enabled. | +| `elementNameFn` | `(value, currentElementName, currentElementObj)` | To perform additional processing for element name. For example, `{elementNameFn: function(val) {return val.toUpperCase();}}`. | +| `attributeNameFn` | `(attributeName, attributeValue, currentElementName, currentElementObj)` | To perform additional processing for attribute name. For example, `{attributeNameFn: function(val) {return val.toUpperCase();}}`. | +| `attributeValueFn` | `(attributeValue, attributeName, currentElementName, currentElementObj)` | To perform additional processing for attributeValue. For example, `{attributeValueFn: function(val) {return val.toUpperCase();}}`. | +| `attributesFn` | `(value, currentElementName, currentElementObj)` | To perform additional processing for attributes object. For example, `{attributesFn: function(val) {return val.toUpperCase();}}`. | +| `fullTagEmptyElementFn` | `(currentElementName, currentElementObj)` | Whether to generate full tag or just self closing tag for elements that has no sub elements. For example, `{fullTagEmptyElementFn: function(val) {return val === 'foo'}}`. | + +# Command Line + +Because any good library should support command line usage, this library is no different. + +## As Globally Accessible Command + +``` +npm install -g xml-js // install this library globally +xml-js test.json --spaces 4 // xml result will be printed on screen +xml-js test.json --spaces 4 --out test.xml // xml result will be saved to test.xml +xml-js test.xml --spaces 4 // json result will be printed on screen +xml-js test.xml --spaces 4 --out test.json // json result will be saved to test.json +``` + +## As Locally Accessible Command + +If you want to use it as script in package.json (can also be helpful in [task automation via npm scripts](http://blog.keithcirkel.co.uk/how-to-use-npm-as-a-build-tool/)) + +``` +npm install --save xml-js // no need to install this library globally +``` + +In package.json, write a script: +```json +... + "dependencies": { + "xml-js": "latest" + }, + "scripts": { + "convert": "xml-js test.json --spaces 4" + } +``` + +Now in the command line, you can run this script by typing: +``` +npm run convert // task 'scripts.convert' will be executed +``` + +## CLI Arguments + +``` +Usage: xml-js src [options] + + src Input file that need to be converted. + Conversion type xml->json or json->xml will be inferred from file extension. + +Options: + --help, -h Display this help content. + --version, -v Display version number of this module. + --out Output file where result should be written. + --spaces Specifies amount of space indentation in the output. + --full-tag XML elements will always be in form. + --no-decl Declaration directive will be ignored. + --no-inst Processing instruction will be ignored. + --no-attr Attributes of elements will be ignored. + --no-text Texts of elements will be ignored. + --no-cdata CData of elements will be ignored. + --no-doctype DOCTYPE of elements will be ignored. + --no-comment Comments of elements will be ignored. + --trim Any whitespaces surrounding texts will be trimmed. + --compact JSON is in compact form. + --native-type Numbers and boolean will be converted (coerced) to native type instead of text. + --always-array Every element will always be an array type (applicable if --compact is set). + --always-children Every element will always contain sub-elements (applicable if --compact is not set). + --text-key To change the default 'text' key. + --cdata-key To change the default 'cdata' key. + --doctype-key To change the default 'doctype' key. + --comment-key To change the default 'comment' key. + --attributes-key To change the default 'attributes' key. + --declaration-key To change the default 'declaration' key. + --instruction-key To change the default 'processing instruction' key. + --type-key To change the default 'type' key (applicable if --compact is not set). + --name-key To change the default 'name' key (applicable if --compact is not set). + --elements-key To change the default 'elements' key (applicable if --compact is not set). +``` + +# Contribution + +## Testing + +To perform tests on this project, download the full repository from GitHub (not from npm) and then do the following: + +``` +cd xml-js +npm install +npm test +``` +For live testing, use `npm start` instead of `npm test`. + +## Reporting + +Use [this link](https://github.com/nashwaan/xml-js/issues) to report an issue or bug. Please include a sample code where the code is failing. + +# License + +[MIT](https://github.com/nashwaan/xml-js/blob/master/LICENSE) diff --git a/node_modules/xml-js/bin/cli-helper.js b/node_modules/xml-js/bin/cli-helper.js new file mode 100644 index 0000000..4fadbce --- /dev/null +++ b/node_modules/xml-js/bin/cli-helper.js @@ -0,0 +1,47 @@ +module.exports = { + + getCommandLineHelp: function (command, requiredArgs, optionalArgs) { + var reqArgs = requiredArgs.reduce(function (res, arg) {return res + ' <' + arg.arg + '>';}, ''); + var output = 'Usage: ' + command + reqArgs + ' [options]\n'; + requiredArgs.forEach(function (argument) { + output += ' <' + argument.arg + '>' + Array(20 - argument.arg.length).join(' ') + argument.desc + '\n'; + }); + output += '\nOptions:\n'; + optionalArgs.forEach(function (argument) { + output += ' --' + argument.arg + Array(20 - argument.arg.length).join(' ') + argument.desc + '\n'; + }); + return output; + }, + + mapCommandLineArgs: function (requiredArgs, optionalArgs) { + var options = {}, r, o, a = 2; + for (r = 0; r < requiredArgs.length; r += 1) { + if (a < process.argv.length && process.argv[a].substr(0, 1) !== '-' && process.argv[a] !== 'JASMINE_CONFIG_PATH=./jasmine.json') { + options[requiredArgs[r].option] = process.argv[a++]; + } else { + break; + } + } + for (; a < process.argv.length; a += 1) { + for (o = 0; o < optionalArgs.length; o += 1) { + if (optionalArgs[o].alias === process.argv[a].slice(1) || optionalArgs[o].arg === process.argv[a].slice(2)) { + break; + } + } + if (o < optionalArgs.length) { + switch (optionalArgs[o].type) { + case 'file': case 'string': case 'number': + if (a + 1 < process.argv.length) { + a += 1; + options[optionalArgs[o].option] = (optionalArgs[o].type === 'number' ? Number(process.argv[a]) : process.argv[a]); + } + break; + case 'flag': + options[optionalArgs[o].option] = true; break; + } + } + } + return options; + } + +}; diff --git a/node_modules/xml-js/bin/cli.js b/node_modules/xml-js/bin/cli.js new file mode 100755 index 0000000..8e12b43 --- /dev/null +++ b/node_modules/xml-js/bin/cli.js @@ -0,0 +1,83 @@ +#!/usr/bin/env node + +var fs = require('fs'); +var helper = require('./cli-helper'); +var project = require('../package.json'); +var xml2json = require('../lib/xml2json'); +var json2xml = require('../lib/json2xml'); + +var output = ''; +var stream = ''; +var options = {}; +var requiredArgs = [ + { arg: 'src', type: 'file', option: 'src', desc: 'Input file that need to be converted.'} +]; +var optionalArgs = [ + { arg: 'help', alias: 'h', type: 'flag', option: 'help', desc: 'Display this help content.' }, + { arg: 'version', alias: 'v', type: 'flag', option: 'version', desc: 'Display version number of this module.' }, + { arg: 'out', type: 'file', option: 'out', desc: 'Output file where the converted result should be written.' }, + { arg: 'to-json', type: 'flag', option:'toJason', desc: 'Convert.' }, + { arg: 'compact', type: 'flag', option:'compact', desc: 'Compact JSON form (see explanation in www.npmjs.com/package/xml-js).' }, + { arg: 'spaces', type: 'number', option:'spaces', desc: 'Specifies amount of space indentation in the output.' }, + { arg: 'trim', type: 'flag', option:'trim', desc: 'Any whitespaces surrounding texts will be trimmed.' }, + // { arg: 'sanitize', type: 'flag', option:'sanitize', desc: 'Special xml characters will be replaced with entity codes.' }, + { arg: 'native-type', type: 'flag', option:'nativeType', desc: 'Numbers and boolean will be converted (coerced) to native type instead of text.' }, + { arg: 'always-array', type: 'flag', option:'alwaysArray', desc: 'Every element will always be an array type (applicable if --compact is set). If the passed value is an array, only elements with names in the passed array are always made arrays.' }, + { arg: 'always-children', type: 'flag', option:'alwaysChildren', desc: 'Every element will always contain sub-elements (applicable if --compact is not set).' }, + { arg: 'instruction-attr', type: 'flag', option:'instructionHasAttributes', desc: 'Whether to parse contents of processing instruction as attributes.' }, + { arg: 'full-tag', type: 'flag', option:'fullTagEmptyElement', desc: 'XML elements will always be in form.' }, + { arg: 'no-decl', type: 'flag', option:'ignoreDeclaration', desc: 'Declaration instruction will be ignored.' }, + { arg: 'no-decl', type: 'flag', option:'ignoreInstruction', desc: 'Processing instruction will be ignored.' }, + { arg: 'no-attr', type: 'flag', option:'ignoreAttributes', desc: 'Attributes of elements will be ignored.' }, + { arg: 'no-text', type: 'flag', option:'ignoreText', desc: 'Texts of elements will be ignored.' }, + { arg: 'no-cdata', type: 'flag', option:'ignoreCdata', desc: 'CData of elements will be ignored.' }, + { arg: 'no-doctype', type: 'flag', option:'ignoreDoctype', desc: 'DOCTYPE of elements will be ignored.' }, + { arg: 'no-comment', type: 'flag', option:'ignoreComment', desc: 'Comments of elements will be ignored.' }, + { arg: 'text-key', type: 'string', option:'textKey', desc: 'To change the default \'text\' key.' }, + { arg: 'cdata-key', type: 'string', option:'cdataKey', desc: 'To change the default \'cdata\' key.' }, + { arg: 'doctype-key', type: 'string', option:'doctypeKey', desc: 'To change the default \'doctype\' key.' }, + { arg: 'comment-key', type: 'string', option:'commentKey', desc: 'To change the default \'comment\' key.' }, + { arg: 'attributes-key', type: 'string', option:'attributesKey', desc: 'To change the default \'attributes\' key.' }, + { arg: 'declaration-key', type: 'string', option:'declarationKey', desc: 'To change the default \'declaration\' key .' }, + { arg: 'instruction-key', type: 'string', option:'instructionKey', desc: 'To change the default \'processing instruction\' key .' }, + { arg: 'type-key', type: 'string', option:'typeKey', desc: 'To change the default \'type\' key (applicable if --compact is not set).' }, + { arg: 'name-key', type: 'string', option:'nameKey', desc: 'To change the default \'name\' key (applicable if --compact is not set).' }, + { arg: 'elements-key', type: 'string', option:'elementsKey', desc: 'To change the default \'elements\' key (applicable if --compact is not set).' } +]; + +process.stdin.setEncoding('utf8'); +process.stdin.on('readable', function () { + var chunk = process.stdin.read(); + if (chunk !== null) { + stream += chunk; + } +}); +process.stdin.on('end', function () { + process.stdout.write(xml2json(stream, {}) + '\n'); +}); + +options = helper.mapCommandLineArgs(requiredArgs, optionalArgs); + +if (options.version) { + console.log(project.version); + process.exit(0); +} else if (options.help || process.argv.length <= 2 + requiredArgs.length - 1) { + console.log(helper.getCommandLineHelp('xml-js', requiredArgs, optionalArgs)); + process.exit(process.argv.length <= 2 ? 1 : 0); +} else if ('src' in options) { + if (fs.statSync(options.src).isFile()) { + if (options.src.split('.').pop() === 'xml') { + output = xml2json(fs.readFileSync(options.src, 'utf8'), options); + } else if (options.src.split('.').pop() === 'json') { + output = json2xml(fs.readFileSync(options.src, 'utf8'), options); + } + if (options.out) { + fs.writeFileSync(options.out, output, 'utf8'); + } else { + console.log(output); + } + process.exit(0); + } +} else { + process.exit(1); +} diff --git a/node_modules/xml-js/bin/test.json b/node_modules/xml-js/bin/test.json new file mode 100644 index 0000000..ce076a3 --- /dev/null +++ b/node_modules/xml-js/bin/test.json @@ -0,0 +1,23 @@ +{ + "elements": [ + { + "type": "element", + "name": "a", + "attributes": { + "x": "1" + }, + "elements": [ + { + "type": "element", + "name": "b", + "elements": [ + { + "type": "text", + "text": "bye!" + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/node_modules/xml-js/bin/test.xml b/node_modules/xml-js/bin/test.xml new file mode 100644 index 0000000..bea36ea --- /dev/null +++ b/node_modules/xml-js/bin/test.xml @@ -0,0 +1,3 @@ + + bye! + diff --git a/node_modules/xml-js/dist/xml-js.js b/node_modules/xml-js/dist/xml-js.js new file mode 100644 index 0000000..dd8decf --- /dev/null +++ b/node_modules/xml-js/dist/xml-js.js @@ -0,0 +1,8310 @@ +(function(e, a) { for(var i in a) e[i] = a[i]; }(window, /******/ (function(modules) { // webpackBootstrap +/******/ // The module cache +/******/ var installedModules = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ +/******/ // Check if module is in cache +/******/ if(installedModules[moduleId]) { +/******/ return installedModules[moduleId].exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = installedModules[moduleId] = { +/******/ i: moduleId, +/******/ l: false, +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); +/******/ +/******/ // Flag the module as loaded +/******/ module.l = true; +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/******/ +/******/ // expose the modules object (__webpack_modules__) +/******/ __webpack_require__.m = modules; +/******/ +/******/ // expose the module cache +/******/ __webpack_require__.c = installedModules; +/******/ +/******/ // define getter function for harmony exports +/******/ __webpack_require__.d = function(exports, name, getter) { +/******/ if(!__webpack_require__.o(exports, name)) { +/******/ Object.defineProperty(exports, name, { +/******/ configurable: false, +/******/ enumerable: true, +/******/ get: getter +/******/ }); +/******/ } +/******/ }; +/******/ +/******/ // getDefaultExport function for compatibility with non-harmony modules +/******/ __webpack_require__.n = function(module) { +/******/ var getter = module && module.__esModule ? +/******/ function getDefault() { return module['default']; } : +/******/ function getModuleExports() { return module; }; +/******/ __webpack_require__.d(getter, 'a', getter); +/******/ return getter; +/******/ }; +/******/ +/******/ // Object.prototype.hasOwnProperty.call +/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; +/******/ +/******/ // __webpack_public_path__ +/******/ __webpack_require__.p = ""; +/******/ +/******/ // Load entry module and return exports +/******/ return __webpack_require__(__webpack_require__.s = 21); +/******/ }) +/************************************************************************/ +/******/ ([ +/* 0 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + +// a duplex stream is just a stream that is both readable and writable. +// Since JS doesn't have multiple prototypal inheritance, this class +// prototypally inherits from Readable, and then parasitically from +// Writable. + + + +/**/ + +var processNextTick = __webpack_require__(6); +/**/ + +/**/ +var objectKeys = Object.keys || function (obj) { + var keys = []; + for (var key in obj) { + keys.push(key); + }return keys; +}; +/**/ + +module.exports = Duplex; + +/**/ +var util = __webpack_require__(3); +util.inherits = __webpack_require__(1); +/**/ + +var Readable = __webpack_require__(16); +var Writable = __webpack_require__(10); + +util.inherits(Duplex, Readable); + +var keys = objectKeys(Writable.prototype); +for (var v = 0; v < keys.length; v++) { + var method = keys[v]; + if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method]; +} + +function Duplex(options) { + if (!(this instanceof Duplex)) return new Duplex(options); + + Readable.call(this, options); + Writable.call(this, options); + + if (options && options.readable === false) this.readable = false; + + if (options && options.writable === false) this.writable = false; + + this.allowHalfOpen = true; + if (options && options.allowHalfOpen === false) this.allowHalfOpen = false; + + this.once('end', onend); +} + +// the no-half-open enforcer +function onend() { + // if we allow half-open state, or if the writable side ended, + // then we're ok. + if (this.allowHalfOpen || this._writableState.ended) return; + + // no more data can be written. + // But allow more writes to happen in this tick. + processNextTick(onEndNT, this); +} + +function onEndNT(self) { + self.end(); +} + +Object.defineProperty(Duplex.prototype, 'destroyed', { + get: function () { + if (this._readableState === undefined || this._writableState === undefined) { + return false; + } + return this._readableState.destroyed && this._writableState.destroyed; + }, + set: function (value) { + // we ignore the value if the stream + // has not been initialized yet + if (this._readableState === undefined || this._writableState === undefined) { + return; + } + + // backward compatibility, the user is explicitly + // managing destroyed + this._readableState.destroyed = value; + this._writableState.destroyed = value; + } +}); + +Duplex.prototype._destroy = function (err, cb) { + this.push(null); + this.end(); + + processNextTick(cb, err); +}; + +function forEach(xs, f) { + for (var i = 0, l = xs.length; i < l; i++) { + f(xs[i], i); + } +} + +/***/ }), +/* 1 */ +/***/ (function(module, exports) { + +if (typeof Object.create === 'function') { + // implementation from standard node.js 'util' module + module.exports = function inherits(ctor, superCtor) { + ctor.super_ = superCtor + ctor.prototype = Object.create(superCtor.prototype, { + constructor: { + value: ctor, + enumerable: false, + writable: true, + configurable: true + } + }); + }; +} else { + // old school shim for old browsers + module.exports = function inherits(ctor, superCtor) { + ctor.super_ = superCtor + var TempCtor = function () {} + TempCtor.prototype = superCtor.prototype + ctor.prototype = new TempCtor() + ctor.prototype.constructor = ctor + } +} + + +/***/ }), +/* 2 */ +/***/ (function(module, exports) { + +var g; + +// This works in non-strict mode +g = (function() { + return this; +})(); + +try { + // This works if eval is allowed (see CSP) + g = g || Function("return this")() || (1,eval)("this"); +} catch(e) { + // This works if the window reference is available + if(typeof window === "object") + g = window; +} + +// g can still be undefined, but nothing to do about it... +// We return undefined, instead of nothing here, so it's +// easier to handle this case. if(!global) { ...} + +module.exports = g; + + +/***/ }), +/* 3 */ +/***/ (function(module, exports, __webpack_require__) { + +/* WEBPACK VAR INJECTION */(function(Buffer) {// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + +// NOTE: These type checking functions intentionally don't use `instanceof` +// because it is fragile and can be easily faked with `Object.create()`. + +function isArray(arg) { + if (Array.isArray) { + return Array.isArray(arg); + } + return objectToString(arg) === '[object Array]'; +} +exports.isArray = isArray; + +function isBoolean(arg) { + return typeof arg === 'boolean'; +} +exports.isBoolean = isBoolean; + +function isNull(arg) { + return arg === null; +} +exports.isNull = isNull; + +function isNullOrUndefined(arg) { + return arg == null; +} +exports.isNullOrUndefined = isNullOrUndefined; + +function isNumber(arg) { + return typeof arg === 'number'; +} +exports.isNumber = isNumber; + +function isString(arg) { + return typeof arg === 'string'; +} +exports.isString = isString; + +function isSymbol(arg) { + return typeof arg === 'symbol'; +} +exports.isSymbol = isSymbol; + +function isUndefined(arg) { + return arg === void 0; +} +exports.isUndefined = isUndefined; + +function isRegExp(re) { + return objectToString(re) === '[object RegExp]'; +} +exports.isRegExp = isRegExp; + +function isObject(arg) { + return typeof arg === 'object' && arg !== null; +} +exports.isObject = isObject; + +function isDate(d) { + return objectToString(d) === '[object Date]'; +} +exports.isDate = isDate; + +function isError(e) { + return (objectToString(e) === '[object Error]' || e instanceof Error); +} +exports.isError = isError; + +function isFunction(arg) { + return typeof arg === 'function'; +} +exports.isFunction = isFunction; + +function isPrimitive(arg) { + return arg === null || + typeof arg === 'boolean' || + typeof arg === 'number' || + typeof arg === 'string' || + typeof arg === 'symbol' || // ES6 symbol + typeof arg === 'undefined'; +} +exports.isPrimitive = isPrimitive; + +exports.isBuffer = Buffer.isBuffer; + +function objectToString(o) { + return Object.prototype.toString.call(o); +} + +/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4).Buffer)) + +/***/ }), +/* 4 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/* WEBPACK VAR INJECTION */(function(global) {/*! + * The buffer module from node.js, for the browser. + * + * @author Feross Aboukhadijeh + * @license MIT + */ +/* eslint-disable no-proto */ + + + +var base64 = __webpack_require__(23) +var ieee754 = __webpack_require__(24) +var isArray = __webpack_require__(15) + +exports.Buffer = Buffer +exports.SlowBuffer = SlowBuffer +exports.INSPECT_MAX_BYTES = 50 + +/** + * If `Buffer.TYPED_ARRAY_SUPPORT`: + * === true Use Uint8Array implementation (fastest) + * === false Use Object implementation (most compatible, even IE6) + * + * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+, + * Opera 11.6+, iOS 4.2+. + * + * Due to various browser bugs, sometimes the Object implementation will be used even + * when the browser supports typed arrays. + * + * Note: + * + * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances, + * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438. + * + * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function. + * + * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of + * incorrect length in some situations. + + * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they + * get the Object implementation, which is slower but behaves correctly. + */ +Buffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined + ? global.TYPED_ARRAY_SUPPORT + : typedArraySupport() + +/* + * Export kMaxLength after typed array support is determined. + */ +exports.kMaxLength = kMaxLength() + +function typedArraySupport () { + try { + var arr = new Uint8Array(1) + arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }} + return arr.foo() === 42 && // typed array instances can be augmented + typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray` + arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray` + } catch (e) { + return false + } +} + +function kMaxLength () { + return Buffer.TYPED_ARRAY_SUPPORT + ? 0x7fffffff + : 0x3fffffff +} + +function createBuffer (that, length) { + if (kMaxLength() < length) { + throw new RangeError('Invalid typed array length') + } + if (Buffer.TYPED_ARRAY_SUPPORT) { + // Return an augmented `Uint8Array` instance, for best performance + that = new Uint8Array(length) + that.__proto__ = Buffer.prototype + } else { + // Fallback: Return an object instance of the Buffer class + if (that === null) { + that = new Buffer(length) + } + that.length = length + } + + return that +} + +/** + * The Buffer constructor returns instances of `Uint8Array` that have their + * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of + * `Uint8Array`, so the returned instances will have all the node `Buffer` methods + * and the `Uint8Array` methods. Square bracket notation works as expected -- it + * returns a single octet. + * + * The `Uint8Array` prototype remains unmodified. + */ + +function Buffer (arg, encodingOrOffset, length) { + if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) { + return new Buffer(arg, encodingOrOffset, length) + } + + // Common case. + if (typeof arg === 'number') { + if (typeof encodingOrOffset === 'string') { + throw new Error( + 'If encoding is specified then the first argument must be a string' + ) + } + return allocUnsafe(this, arg) + } + return from(this, arg, encodingOrOffset, length) +} + +Buffer.poolSize = 8192 // not used by this implementation + +// TODO: Legacy, not needed anymore. Remove in next major version. +Buffer._augment = function (arr) { + arr.__proto__ = Buffer.prototype + return arr +} + +function from (that, value, encodingOrOffset, length) { + if (typeof value === 'number') { + throw new TypeError('"value" argument must not be a number') + } + + if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) { + return fromArrayBuffer(that, value, encodingOrOffset, length) + } + + if (typeof value === 'string') { + return fromString(that, value, encodingOrOffset) + } + + return fromObject(that, value) +} + +/** + * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError + * if value is a number. + * Buffer.from(str[, encoding]) + * Buffer.from(array) + * Buffer.from(buffer) + * Buffer.from(arrayBuffer[, byteOffset[, length]]) + **/ +Buffer.from = function (value, encodingOrOffset, length) { + return from(null, value, encodingOrOffset, length) +} + +if (Buffer.TYPED_ARRAY_SUPPORT) { + Buffer.prototype.__proto__ = Uint8Array.prototype + Buffer.__proto__ = Uint8Array + if (typeof Symbol !== 'undefined' && Symbol.species && + Buffer[Symbol.species] === Buffer) { + // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97 + Object.defineProperty(Buffer, Symbol.species, { + value: null, + configurable: true + }) + } +} + +function assertSize (size) { + if (typeof size !== 'number') { + throw new TypeError('"size" argument must be a number') + } else if (size < 0) { + throw new RangeError('"size" argument must not be negative') + } +} + +function alloc (that, size, fill, encoding) { + assertSize(size) + if (size <= 0) { + return createBuffer(that, size) + } + if (fill !== undefined) { + // Only pay attention to encoding if it's a string. This + // prevents accidentally sending in a number that would + // be interpretted as a start offset. + return typeof encoding === 'string' + ? createBuffer(that, size).fill(fill, encoding) + : createBuffer(that, size).fill(fill) + } + return createBuffer(that, size) +} + +/** + * Creates a new filled Buffer instance. + * alloc(size[, fill[, encoding]]) + **/ +Buffer.alloc = function (size, fill, encoding) { + return alloc(null, size, fill, encoding) +} + +function allocUnsafe (that, size) { + assertSize(size) + that = createBuffer(that, size < 0 ? 0 : checked(size) | 0) + if (!Buffer.TYPED_ARRAY_SUPPORT) { + for (var i = 0; i < size; ++i) { + that[i] = 0 + } + } + return that +} + +/** + * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance. + * */ +Buffer.allocUnsafe = function (size) { + return allocUnsafe(null, size) +} +/** + * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance. + */ +Buffer.allocUnsafeSlow = function (size) { + return allocUnsafe(null, size) +} + +function fromString (that, string, encoding) { + if (typeof encoding !== 'string' || encoding === '') { + encoding = 'utf8' + } + + if (!Buffer.isEncoding(encoding)) { + throw new TypeError('"encoding" must be a valid string encoding') + } + + var length = byteLength(string, encoding) | 0 + that = createBuffer(that, length) + + var actual = that.write(string, encoding) + + if (actual !== length) { + // Writing a hex string, for example, that contains invalid characters will + // cause everything after the first invalid character to be ignored. (e.g. + // 'abxxcd' will be treated as 'ab') + that = that.slice(0, actual) + } + + return that +} + +function fromArrayLike (that, array) { + var length = array.length < 0 ? 0 : checked(array.length) | 0 + that = createBuffer(that, length) + for (var i = 0; i < length; i += 1) { + that[i] = array[i] & 255 + } + return that +} + +function fromArrayBuffer (that, array, byteOffset, length) { + array.byteLength // this throws if `array` is not a valid ArrayBuffer + + if (byteOffset < 0 || array.byteLength < byteOffset) { + throw new RangeError('\'offset\' is out of bounds') + } + + if (array.byteLength < byteOffset + (length || 0)) { + throw new RangeError('\'length\' is out of bounds') + } + + if (byteOffset === undefined && length === undefined) { + array = new Uint8Array(array) + } else if (length === undefined) { + array = new Uint8Array(array, byteOffset) + } else { + array = new Uint8Array(array, byteOffset, length) + } + + if (Buffer.TYPED_ARRAY_SUPPORT) { + // Return an augmented `Uint8Array` instance, for best performance + that = array + that.__proto__ = Buffer.prototype + } else { + // Fallback: Return an object instance of the Buffer class + that = fromArrayLike(that, array) + } + return that +} + +function fromObject (that, obj) { + if (Buffer.isBuffer(obj)) { + var len = checked(obj.length) | 0 + that = createBuffer(that, len) + + if (that.length === 0) { + return that + } + + obj.copy(that, 0, 0, len) + return that + } + + if (obj) { + if ((typeof ArrayBuffer !== 'undefined' && + obj.buffer instanceof ArrayBuffer) || 'length' in obj) { + if (typeof obj.length !== 'number' || isnan(obj.length)) { + return createBuffer(that, 0) + } + return fromArrayLike(that, obj) + } + + if (obj.type === 'Buffer' && isArray(obj.data)) { + return fromArrayLike(that, obj.data) + } + } + + throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.') +} + +function checked (length) { + // Note: cannot use `length < kMaxLength()` here because that fails when + // length is NaN (which is otherwise coerced to zero.) + if (length >= kMaxLength()) { + throw new RangeError('Attempt to allocate Buffer larger than maximum ' + + 'size: 0x' + kMaxLength().toString(16) + ' bytes') + } + return length | 0 +} + +function SlowBuffer (length) { + if (+length != length) { // eslint-disable-line eqeqeq + length = 0 + } + return Buffer.alloc(+length) +} + +Buffer.isBuffer = function isBuffer (b) { + return !!(b != null && b._isBuffer) +} + +Buffer.compare = function compare (a, b) { + if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) { + throw new TypeError('Arguments must be Buffers') + } + + if (a === b) return 0 + + var x = a.length + var y = b.length + + for (var i = 0, len = Math.min(x, y); i < len; ++i) { + if (a[i] !== b[i]) { + x = a[i] + y = b[i] + break + } + } + + if (x < y) return -1 + if (y < x) return 1 + return 0 +} + +Buffer.isEncoding = function isEncoding (encoding) { + switch (String(encoding).toLowerCase()) { + case 'hex': + case 'utf8': + case 'utf-8': + case 'ascii': + case 'latin1': + case 'binary': + case 'base64': + case 'ucs2': + case 'ucs-2': + case 'utf16le': + case 'utf-16le': + return true + default: + return false + } +} + +Buffer.concat = function concat (list, length) { + if (!isArray(list)) { + throw new TypeError('"list" argument must be an Array of Buffers') + } + + if (list.length === 0) { + return Buffer.alloc(0) + } + + var i + if (length === undefined) { + length = 0 + for (i = 0; i < list.length; ++i) { + length += list[i].length + } + } + + var buffer = Buffer.allocUnsafe(length) + var pos = 0 + for (i = 0; i < list.length; ++i) { + var buf = list[i] + if (!Buffer.isBuffer(buf)) { + throw new TypeError('"list" argument must be an Array of Buffers') + } + buf.copy(buffer, pos) + pos += buf.length + } + return buffer +} + +function byteLength (string, encoding) { + if (Buffer.isBuffer(string)) { + return string.length + } + if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' && + (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) { + return string.byteLength + } + if (typeof string !== 'string') { + string = '' + string + } + + var len = string.length + if (len === 0) return 0 + + // Use a for loop to avoid recursion + var loweredCase = false + for (;;) { + switch (encoding) { + case 'ascii': + case 'latin1': + case 'binary': + return len + case 'utf8': + case 'utf-8': + case undefined: + return utf8ToBytes(string).length + case 'ucs2': + case 'ucs-2': + case 'utf16le': + case 'utf-16le': + return len * 2 + case 'hex': + return len >>> 1 + case 'base64': + return base64ToBytes(string).length + default: + if (loweredCase) return utf8ToBytes(string).length // assume utf8 + encoding = ('' + encoding).toLowerCase() + loweredCase = true + } + } +} +Buffer.byteLength = byteLength + +function slowToString (encoding, start, end) { + var loweredCase = false + + // No need to verify that "this.length <= MAX_UINT32" since it's a read-only + // property of a typed array. + + // This behaves neither like String nor Uint8Array in that we set start/end + // to their upper/lower bounds if the value passed is out of range. + // undefined is handled specially as per ECMA-262 6th Edition, + // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization. + if (start === undefined || start < 0) { + start = 0 + } + // Return early if start > this.length. Done here to prevent potential uint32 + // coercion fail below. + if (start > this.length) { + return '' + } + + if (end === undefined || end > this.length) { + end = this.length + } + + if (end <= 0) { + return '' + } + + // Force coersion to uint32. This will also coerce falsey/NaN values to 0. + end >>>= 0 + start >>>= 0 + + if (end <= start) { + return '' + } + + if (!encoding) encoding = 'utf8' + + while (true) { + switch (encoding) { + case 'hex': + return hexSlice(this, start, end) + + case 'utf8': + case 'utf-8': + return utf8Slice(this, start, end) + + case 'ascii': + return asciiSlice(this, start, end) + + case 'latin1': + case 'binary': + return latin1Slice(this, start, end) + + case 'base64': + return base64Slice(this, start, end) + + case 'ucs2': + case 'ucs-2': + case 'utf16le': + case 'utf-16le': + return utf16leSlice(this, start, end) + + default: + if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding) + encoding = (encoding + '').toLowerCase() + loweredCase = true + } + } +} + +// The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect +// Buffer instances. +Buffer.prototype._isBuffer = true + +function swap (b, n, m) { + var i = b[n] + b[n] = b[m] + b[m] = i +} + +Buffer.prototype.swap16 = function swap16 () { + var len = this.length + if (len % 2 !== 0) { + throw new RangeError('Buffer size must be a multiple of 16-bits') + } + for (var i = 0; i < len; i += 2) { + swap(this, i, i + 1) + } + return this +} + +Buffer.prototype.swap32 = function swap32 () { + var len = this.length + if (len % 4 !== 0) { + throw new RangeError('Buffer size must be a multiple of 32-bits') + } + for (var i = 0; i < len; i += 4) { + swap(this, i, i + 3) + swap(this, i + 1, i + 2) + } + return this +} + +Buffer.prototype.swap64 = function swap64 () { + var len = this.length + if (len % 8 !== 0) { + throw new RangeError('Buffer size must be a multiple of 64-bits') + } + for (var i = 0; i < len; i += 8) { + swap(this, i, i + 7) + swap(this, i + 1, i + 6) + swap(this, i + 2, i + 5) + swap(this, i + 3, i + 4) + } + return this +} + +Buffer.prototype.toString = function toString () { + var length = this.length | 0 + if (length === 0) return '' + if (arguments.length === 0) return utf8Slice(this, 0, length) + return slowToString.apply(this, arguments) +} + +Buffer.prototype.equals = function equals (b) { + if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer') + if (this === b) return true + return Buffer.compare(this, b) === 0 +} + +Buffer.prototype.inspect = function inspect () { + var str = '' + var max = exports.INSPECT_MAX_BYTES + if (this.length > 0) { + str = this.toString('hex', 0, max).match(/.{2}/g).join(' ') + if (this.length > max) str += ' ... ' + } + return '' +} + +Buffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) { + if (!Buffer.isBuffer(target)) { + throw new TypeError('Argument must be a Buffer') + } + + if (start === undefined) { + start = 0 + } + if (end === undefined) { + end = target ? target.length : 0 + } + if (thisStart === undefined) { + thisStart = 0 + } + if (thisEnd === undefined) { + thisEnd = this.length + } + + if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) { + throw new RangeError('out of range index') + } + + if (thisStart >= thisEnd && start >= end) { + return 0 + } + if (thisStart >= thisEnd) { + return -1 + } + if (start >= end) { + return 1 + } + + start >>>= 0 + end >>>= 0 + thisStart >>>= 0 + thisEnd >>>= 0 + + if (this === target) return 0 + + var x = thisEnd - thisStart + var y = end - start + var len = Math.min(x, y) + + var thisCopy = this.slice(thisStart, thisEnd) + var targetCopy = target.slice(start, end) + + for (var i = 0; i < len; ++i) { + if (thisCopy[i] !== targetCopy[i]) { + x = thisCopy[i] + y = targetCopy[i] + break + } + } + + if (x < y) return -1 + if (y < x) return 1 + return 0 +} + +// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`, +// OR the last index of `val` in `buffer` at offset <= `byteOffset`. +// +// Arguments: +// - buffer - a Buffer to search +// - val - a string, Buffer, or number +// - byteOffset - an index into `buffer`; will be clamped to an int32 +// - encoding - an optional encoding, relevant is val is a string +// - dir - true for indexOf, false for lastIndexOf +function bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) { + // Empty buffer means no match + if (buffer.length === 0) return -1 + + // Normalize byteOffset + if (typeof byteOffset === 'string') { + encoding = byteOffset + byteOffset = 0 + } else if (byteOffset > 0x7fffffff) { + byteOffset = 0x7fffffff + } else if (byteOffset < -0x80000000) { + byteOffset = -0x80000000 + } + byteOffset = +byteOffset // Coerce to Number. + if (isNaN(byteOffset)) { + // byteOffset: it it's undefined, null, NaN, "foo", etc, search whole buffer + byteOffset = dir ? 0 : (buffer.length - 1) + } + + // Normalize byteOffset: negative offsets start from the end of the buffer + if (byteOffset < 0) byteOffset = buffer.length + byteOffset + if (byteOffset >= buffer.length) { + if (dir) return -1 + else byteOffset = buffer.length - 1 + } else if (byteOffset < 0) { + if (dir) byteOffset = 0 + else return -1 + } + + // Normalize val + if (typeof val === 'string') { + val = Buffer.from(val, encoding) + } + + // Finally, search either indexOf (if dir is true) or lastIndexOf + if (Buffer.isBuffer(val)) { + // Special case: looking for empty string/buffer always fails + if (val.length === 0) { + return -1 + } + return arrayIndexOf(buffer, val, byteOffset, encoding, dir) + } else if (typeof val === 'number') { + val = val & 0xFF // Search for a byte value [0-255] + if (Buffer.TYPED_ARRAY_SUPPORT && + typeof Uint8Array.prototype.indexOf === 'function') { + if (dir) { + return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset) + } else { + return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset) + } + } + return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir) + } + + throw new TypeError('val must be string, number or Buffer') +} + +function arrayIndexOf (arr, val, byteOffset, encoding, dir) { + var indexSize = 1 + var arrLength = arr.length + var valLength = val.length + + if (encoding !== undefined) { + encoding = String(encoding).toLowerCase() + if (encoding === 'ucs2' || encoding === 'ucs-2' || + encoding === 'utf16le' || encoding === 'utf-16le') { + if (arr.length < 2 || val.length < 2) { + return -1 + } + indexSize = 2 + arrLength /= 2 + valLength /= 2 + byteOffset /= 2 + } + } + + function read (buf, i) { + if (indexSize === 1) { + return buf[i] + } else { + return buf.readUInt16BE(i * indexSize) + } + } + + var i + if (dir) { + var foundIndex = -1 + for (i = byteOffset; i < arrLength; i++) { + if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) { + if (foundIndex === -1) foundIndex = i + if (i - foundIndex + 1 === valLength) return foundIndex * indexSize + } else { + if (foundIndex !== -1) i -= i - foundIndex + foundIndex = -1 + } + } + } else { + if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength + for (i = byteOffset; i >= 0; i--) { + var found = true + for (var j = 0; j < valLength; j++) { + if (read(arr, i + j) !== read(val, j)) { + found = false + break + } + } + if (found) return i + } + } + + return -1 +} + +Buffer.prototype.includes = function includes (val, byteOffset, encoding) { + return this.indexOf(val, byteOffset, encoding) !== -1 +} + +Buffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) { + return bidirectionalIndexOf(this, val, byteOffset, encoding, true) +} + +Buffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) { + return bidirectionalIndexOf(this, val, byteOffset, encoding, false) +} + +function hexWrite (buf, string, offset, length) { + offset = Number(offset) || 0 + var remaining = buf.length - offset + if (!length) { + length = remaining + } else { + length = Number(length) + if (length > remaining) { + length = remaining + } + } + + // must be an even number of digits + var strLen = string.length + if (strLen % 2 !== 0) throw new TypeError('Invalid hex string') + + if (length > strLen / 2) { + length = strLen / 2 + } + for (var i = 0; i < length; ++i) { + var parsed = parseInt(string.substr(i * 2, 2), 16) + if (isNaN(parsed)) return i + buf[offset + i] = parsed + } + return i +} + +function utf8Write (buf, string, offset, length) { + return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length) +} + +function asciiWrite (buf, string, offset, length) { + return blitBuffer(asciiToBytes(string), buf, offset, length) +} + +function latin1Write (buf, string, offset, length) { + return asciiWrite(buf, string, offset, length) +} + +function base64Write (buf, string, offset, length) { + return blitBuffer(base64ToBytes(string), buf, offset, length) +} + +function ucs2Write (buf, string, offset, length) { + return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length) +} + +Buffer.prototype.write = function write (string, offset, length, encoding) { + // Buffer#write(string) + if (offset === undefined) { + encoding = 'utf8' + length = this.length + offset = 0 + // Buffer#write(string, encoding) + } else if (length === undefined && typeof offset === 'string') { + encoding = offset + length = this.length + offset = 0 + // Buffer#write(string, offset[, length][, encoding]) + } else if (isFinite(offset)) { + offset = offset | 0 + if (isFinite(length)) { + length = length | 0 + if (encoding === undefined) encoding = 'utf8' + } else { + encoding = length + length = undefined + } + // legacy write(string, encoding, offset, length) - remove in v0.13 + } else { + throw new Error( + 'Buffer.write(string, encoding, offset[, length]) is no longer supported' + ) + } + + var remaining = this.length - offset + if (length === undefined || length > remaining) length = remaining + + if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) { + throw new RangeError('Attempt to write outside buffer bounds') + } + + if (!encoding) encoding = 'utf8' + + var loweredCase = false + for (;;) { + switch (encoding) { + case 'hex': + return hexWrite(this, string, offset, length) + + case 'utf8': + case 'utf-8': + return utf8Write(this, string, offset, length) + + case 'ascii': + return asciiWrite(this, string, offset, length) + + case 'latin1': + case 'binary': + return latin1Write(this, string, offset, length) + + case 'base64': + // Warning: maxLength not taken into account in base64Write + return base64Write(this, string, offset, length) + + case 'ucs2': + case 'ucs-2': + case 'utf16le': + case 'utf-16le': + return ucs2Write(this, string, offset, length) + + default: + if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding) + encoding = ('' + encoding).toLowerCase() + loweredCase = true + } + } +} + +Buffer.prototype.toJSON = function toJSON () { + return { + type: 'Buffer', + data: Array.prototype.slice.call(this._arr || this, 0) + } +} + +function base64Slice (buf, start, end) { + if (start === 0 && end === buf.length) { + return base64.fromByteArray(buf) + } else { + return base64.fromByteArray(buf.slice(start, end)) + } +} + +function utf8Slice (buf, start, end) { + end = Math.min(buf.length, end) + var res = [] + + var i = start + while (i < end) { + var firstByte = buf[i] + var codePoint = null + var bytesPerSequence = (firstByte > 0xEF) ? 4 + : (firstByte > 0xDF) ? 3 + : (firstByte > 0xBF) ? 2 + : 1 + + if (i + bytesPerSequence <= end) { + var secondByte, thirdByte, fourthByte, tempCodePoint + + switch (bytesPerSequence) { + case 1: + if (firstByte < 0x80) { + codePoint = firstByte + } + break + case 2: + secondByte = buf[i + 1] + if ((secondByte & 0xC0) === 0x80) { + tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F) + if (tempCodePoint > 0x7F) { + codePoint = tempCodePoint + } + } + break + case 3: + secondByte = buf[i + 1] + thirdByte = buf[i + 2] + if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) { + tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F) + if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) { + codePoint = tempCodePoint + } + } + break + case 4: + secondByte = buf[i + 1] + thirdByte = buf[i + 2] + fourthByte = buf[i + 3] + if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) { + tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F) + if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) { + codePoint = tempCodePoint + } + } + } + } + + if (codePoint === null) { + // we did not generate a valid codePoint so insert a + // replacement char (U+FFFD) and advance only 1 byte + codePoint = 0xFFFD + bytesPerSequence = 1 + } else if (codePoint > 0xFFFF) { + // encode to utf16 (surrogate pair dance) + codePoint -= 0x10000 + res.push(codePoint >>> 10 & 0x3FF | 0xD800) + codePoint = 0xDC00 | codePoint & 0x3FF + } + + res.push(codePoint) + i += bytesPerSequence + } + + return decodeCodePointsArray(res) +} + +// Based on http://stackoverflow.com/a/22747272/680742, the browser with +// the lowest limit is Chrome, with 0x10000 args. +// We go 1 magnitude less, for safety +var MAX_ARGUMENTS_LENGTH = 0x1000 + +function decodeCodePointsArray (codePoints) { + var len = codePoints.length + if (len <= MAX_ARGUMENTS_LENGTH) { + return String.fromCharCode.apply(String, codePoints) // avoid extra slice() + } + + // Decode in chunks to avoid "call stack size exceeded". + var res = '' + var i = 0 + while (i < len) { + res += String.fromCharCode.apply( + String, + codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH) + ) + } + return res +} + +function asciiSlice (buf, start, end) { + var ret = '' + end = Math.min(buf.length, end) + + for (var i = start; i < end; ++i) { + ret += String.fromCharCode(buf[i] & 0x7F) + } + return ret +} + +function latin1Slice (buf, start, end) { + var ret = '' + end = Math.min(buf.length, end) + + for (var i = start; i < end; ++i) { + ret += String.fromCharCode(buf[i]) + } + return ret +} + +function hexSlice (buf, start, end) { + var len = buf.length + + if (!start || start < 0) start = 0 + if (!end || end < 0 || end > len) end = len + + var out = '' + for (var i = start; i < end; ++i) { + out += toHex(buf[i]) + } + return out +} + +function utf16leSlice (buf, start, end) { + var bytes = buf.slice(start, end) + var res = '' + for (var i = 0; i < bytes.length; i += 2) { + res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256) + } + return res +} + +Buffer.prototype.slice = function slice (start, end) { + var len = this.length + start = ~~start + end = end === undefined ? len : ~~end + + if (start < 0) { + start += len + if (start < 0) start = 0 + } else if (start > len) { + start = len + } + + if (end < 0) { + end += len + if (end < 0) end = 0 + } else if (end > len) { + end = len + } + + if (end < start) end = start + + var newBuf + if (Buffer.TYPED_ARRAY_SUPPORT) { + newBuf = this.subarray(start, end) + newBuf.__proto__ = Buffer.prototype + } else { + var sliceLen = end - start + newBuf = new Buffer(sliceLen, undefined) + for (var i = 0; i < sliceLen; ++i) { + newBuf[i] = this[i + start] + } + } + + return newBuf +} + +/* + * Need to make sure that buffer isn't trying to write out of bounds. + */ +function checkOffset (offset, ext, length) { + if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint') + if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length') +} + +Buffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) { + offset = offset | 0 + byteLength = byteLength | 0 + if (!noAssert) checkOffset(offset, byteLength, this.length) + + var val = this[offset] + var mul = 1 + var i = 0 + while (++i < byteLength && (mul *= 0x100)) { + val += this[offset + i] * mul + } + + return val +} + +Buffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) { + offset = offset | 0 + byteLength = byteLength | 0 + if (!noAssert) { + checkOffset(offset, byteLength, this.length) + } + + var val = this[offset + --byteLength] + var mul = 1 + while (byteLength > 0 && (mul *= 0x100)) { + val += this[offset + --byteLength] * mul + } + + return val +} + +Buffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) { + if (!noAssert) checkOffset(offset, 1, this.length) + return this[offset] +} + +Buffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 2, this.length) + return this[offset] | (this[offset + 1] << 8) +} + +Buffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 2, this.length) + return (this[offset] << 8) | this[offset + 1] +} + +Buffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 4, this.length) + + return ((this[offset]) | + (this[offset + 1] << 8) | + (this[offset + 2] << 16)) + + (this[offset + 3] * 0x1000000) +} + +Buffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 4, this.length) + + return (this[offset] * 0x1000000) + + ((this[offset + 1] << 16) | + (this[offset + 2] << 8) | + this[offset + 3]) +} + +Buffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) { + offset = offset | 0 + byteLength = byteLength | 0 + if (!noAssert) checkOffset(offset, byteLength, this.length) + + var val = this[offset] + var mul = 1 + var i = 0 + while (++i < byteLength && (mul *= 0x100)) { + val += this[offset + i] * mul + } + mul *= 0x80 + + if (val >= mul) val -= Math.pow(2, 8 * byteLength) + + return val +} + +Buffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) { + offset = offset | 0 + byteLength = byteLength | 0 + if (!noAssert) checkOffset(offset, byteLength, this.length) + + var i = byteLength + var mul = 1 + var val = this[offset + --i] + while (i > 0 && (mul *= 0x100)) { + val += this[offset + --i] * mul + } + mul *= 0x80 + + if (val >= mul) val -= Math.pow(2, 8 * byteLength) + + return val +} + +Buffer.prototype.readInt8 = function readInt8 (offset, noAssert) { + if (!noAssert) checkOffset(offset, 1, this.length) + if (!(this[offset] & 0x80)) return (this[offset]) + return ((0xff - this[offset] + 1) * -1) +} + +Buffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 2, this.length) + var val = this[offset] | (this[offset + 1] << 8) + return (val & 0x8000) ? val | 0xFFFF0000 : val +} + +Buffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 2, this.length) + var val = this[offset + 1] | (this[offset] << 8) + return (val & 0x8000) ? val | 0xFFFF0000 : val +} + +Buffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 4, this.length) + + return (this[offset]) | + (this[offset + 1] << 8) | + (this[offset + 2] << 16) | + (this[offset + 3] << 24) +} + +Buffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 4, this.length) + + return (this[offset] << 24) | + (this[offset + 1] << 16) | + (this[offset + 2] << 8) | + (this[offset + 3]) +} + +Buffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 4, this.length) + return ieee754.read(this, offset, true, 23, 4) +} + +Buffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 4, this.length) + return ieee754.read(this, offset, false, 23, 4) +} + +Buffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 8, this.length) + return ieee754.read(this, offset, true, 52, 8) +} + +Buffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 8, this.length) + return ieee754.read(this, offset, false, 52, 8) +} + +function checkInt (buf, value, offset, ext, max, min) { + if (!Buffer.isBuffer(buf)) throw new TypeError('"buffer" argument must be a Buffer instance') + if (value > max || value < min) throw new RangeError('"value" argument is out of bounds') + if (offset + ext > buf.length) throw new RangeError('Index out of range') +} + +Buffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) { + value = +value + offset = offset | 0 + byteLength = byteLength | 0 + if (!noAssert) { + var maxBytes = Math.pow(2, 8 * byteLength) - 1 + checkInt(this, value, offset, byteLength, maxBytes, 0) + } + + var mul = 1 + var i = 0 + this[offset] = value & 0xFF + while (++i < byteLength && (mul *= 0x100)) { + this[offset + i] = (value / mul) & 0xFF + } + + return offset + byteLength +} + +Buffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) { + value = +value + offset = offset | 0 + byteLength = byteLength | 0 + if (!noAssert) { + var maxBytes = Math.pow(2, 8 * byteLength) - 1 + checkInt(this, value, offset, byteLength, maxBytes, 0) + } + + var i = byteLength - 1 + var mul = 1 + this[offset + i] = value & 0xFF + while (--i >= 0 && (mul *= 0x100)) { + this[offset + i] = (value / mul) & 0xFF + } + + return offset + byteLength +} + +Buffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) { + value = +value + offset = offset | 0 + if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0) + if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value) + this[offset] = (value & 0xff) + return offset + 1 +} + +function objectWriteUInt16 (buf, value, offset, littleEndian) { + if (value < 0) value = 0xffff + value + 1 + for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) { + buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>> + (littleEndian ? i : 1 - i) * 8 + } +} + +Buffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) { + value = +value + offset = offset | 0 + if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0) + if (Buffer.TYPED_ARRAY_SUPPORT) { + this[offset] = (value & 0xff) + this[offset + 1] = (value >>> 8) + } else { + objectWriteUInt16(this, value, offset, true) + } + return offset + 2 +} + +Buffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) { + value = +value + offset = offset | 0 + if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0) + if (Buffer.TYPED_ARRAY_SUPPORT) { + this[offset] = (value >>> 8) + this[offset + 1] = (value & 0xff) + } else { + objectWriteUInt16(this, value, offset, false) + } + return offset + 2 +} + +function objectWriteUInt32 (buf, value, offset, littleEndian) { + if (value < 0) value = 0xffffffff + value + 1 + for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) { + buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff + } +} + +Buffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) { + value = +value + offset = offset | 0 + if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0) + if (Buffer.TYPED_ARRAY_SUPPORT) { + this[offset + 3] = (value >>> 24) + this[offset + 2] = (value >>> 16) + this[offset + 1] = (value >>> 8) + this[offset] = (value & 0xff) + } else { + objectWriteUInt32(this, value, offset, true) + } + return offset + 4 +} + +Buffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) { + value = +value + offset = offset | 0 + if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0) + if (Buffer.TYPED_ARRAY_SUPPORT) { + this[offset] = (value >>> 24) + this[offset + 1] = (value >>> 16) + this[offset + 2] = (value >>> 8) + this[offset + 3] = (value & 0xff) + } else { + objectWriteUInt32(this, value, offset, false) + } + return offset + 4 +} + +Buffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) { + value = +value + offset = offset | 0 + if (!noAssert) { + var limit = Math.pow(2, 8 * byteLength - 1) + + checkInt(this, value, offset, byteLength, limit - 1, -limit) + } + + var i = 0 + var mul = 1 + var sub = 0 + this[offset] = value & 0xFF + while (++i < byteLength && (mul *= 0x100)) { + if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) { + sub = 1 + } + this[offset + i] = ((value / mul) >> 0) - sub & 0xFF + } + + return offset + byteLength +} + +Buffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) { + value = +value + offset = offset | 0 + if (!noAssert) { + var limit = Math.pow(2, 8 * byteLength - 1) + + checkInt(this, value, offset, byteLength, limit - 1, -limit) + } + + var i = byteLength - 1 + var mul = 1 + var sub = 0 + this[offset + i] = value & 0xFF + while (--i >= 0 && (mul *= 0x100)) { + if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) { + sub = 1 + } + this[offset + i] = ((value / mul) >> 0) - sub & 0xFF + } + + return offset + byteLength +} + +Buffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) { + value = +value + offset = offset | 0 + if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80) + if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value) + if (value < 0) value = 0xff + value + 1 + this[offset] = (value & 0xff) + return offset + 1 +} + +Buffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) { + value = +value + offset = offset | 0 + if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000) + if (Buffer.TYPED_ARRAY_SUPPORT) { + this[offset] = (value & 0xff) + this[offset + 1] = (value >>> 8) + } else { + objectWriteUInt16(this, value, offset, true) + } + return offset + 2 +} + +Buffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) { + value = +value + offset = offset | 0 + if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000) + if (Buffer.TYPED_ARRAY_SUPPORT) { + this[offset] = (value >>> 8) + this[offset + 1] = (value & 0xff) + } else { + objectWriteUInt16(this, value, offset, false) + } + return offset + 2 +} + +Buffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) { + value = +value + offset = offset | 0 + if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000) + if (Buffer.TYPED_ARRAY_SUPPORT) { + this[offset] = (value & 0xff) + this[offset + 1] = (value >>> 8) + this[offset + 2] = (value >>> 16) + this[offset + 3] = (value >>> 24) + } else { + objectWriteUInt32(this, value, offset, true) + } + return offset + 4 +} + +Buffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) { + value = +value + offset = offset | 0 + if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000) + if (value < 0) value = 0xffffffff + value + 1 + if (Buffer.TYPED_ARRAY_SUPPORT) { + this[offset] = (value >>> 24) + this[offset + 1] = (value >>> 16) + this[offset + 2] = (value >>> 8) + this[offset + 3] = (value & 0xff) + } else { + objectWriteUInt32(this, value, offset, false) + } + return offset + 4 +} + +function checkIEEE754 (buf, value, offset, ext, max, min) { + if (offset + ext > buf.length) throw new RangeError('Index out of range') + if (offset < 0) throw new RangeError('Index out of range') +} + +function writeFloat (buf, value, offset, littleEndian, noAssert) { + if (!noAssert) { + checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38) + } + ieee754.write(buf, value, offset, littleEndian, 23, 4) + return offset + 4 +} + +Buffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) { + return writeFloat(this, value, offset, true, noAssert) +} + +Buffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) { + return writeFloat(this, value, offset, false, noAssert) +} + +function writeDouble (buf, value, offset, littleEndian, noAssert) { + if (!noAssert) { + checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308) + } + ieee754.write(buf, value, offset, littleEndian, 52, 8) + return offset + 8 +} + +Buffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) { + return writeDouble(this, value, offset, true, noAssert) +} + +Buffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) { + return writeDouble(this, value, offset, false, noAssert) +} + +// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length) +Buffer.prototype.copy = function copy (target, targetStart, start, end) { + if (!start) start = 0 + if (!end && end !== 0) end = this.length + if (targetStart >= target.length) targetStart = target.length + if (!targetStart) targetStart = 0 + if (end > 0 && end < start) end = start + + // Copy 0 bytes; we're done + if (end === start) return 0 + if (target.length === 0 || this.length === 0) return 0 + + // Fatal error conditions + if (targetStart < 0) { + throw new RangeError('targetStart out of bounds') + } + if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds') + if (end < 0) throw new RangeError('sourceEnd out of bounds') + + // Are we oob? + if (end > this.length) end = this.length + if (target.length - targetStart < end - start) { + end = target.length - targetStart + start + } + + var len = end - start + var i + + if (this === target && start < targetStart && targetStart < end) { + // descending copy from end + for (i = len - 1; i >= 0; --i) { + target[i + targetStart] = this[i + start] + } + } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) { + // ascending copy from start + for (i = 0; i < len; ++i) { + target[i + targetStart] = this[i + start] + } + } else { + Uint8Array.prototype.set.call( + target, + this.subarray(start, start + len), + targetStart + ) + } + + return len +} + +// Usage: +// buffer.fill(number[, offset[, end]]) +// buffer.fill(buffer[, offset[, end]]) +// buffer.fill(string[, offset[, end]][, encoding]) +Buffer.prototype.fill = function fill (val, start, end, encoding) { + // Handle string cases: + if (typeof val === 'string') { + if (typeof start === 'string') { + encoding = start + start = 0 + end = this.length + } else if (typeof end === 'string') { + encoding = end + end = this.length + } + if (val.length === 1) { + var code = val.charCodeAt(0) + if (code < 256) { + val = code + } + } + if (encoding !== undefined && typeof encoding !== 'string') { + throw new TypeError('encoding must be a string') + } + if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) { + throw new TypeError('Unknown encoding: ' + encoding) + } + } else if (typeof val === 'number') { + val = val & 255 + } + + // Invalid ranges are not set to a default, so can range check early. + if (start < 0 || this.length < start || this.length < end) { + throw new RangeError('Out of range index') + } + + if (end <= start) { + return this + } + + start = start >>> 0 + end = end === undefined ? this.length : end >>> 0 + + if (!val) val = 0 + + var i + if (typeof val === 'number') { + for (i = start; i < end; ++i) { + this[i] = val + } + } else { + var bytes = Buffer.isBuffer(val) + ? val + : utf8ToBytes(new Buffer(val, encoding).toString()) + var len = bytes.length + for (i = 0; i < end - start; ++i) { + this[i + start] = bytes[i % len] + } + } + + return this +} + +// HELPER FUNCTIONS +// ================ + +var INVALID_BASE64_RE = /[^+\/0-9A-Za-z-_]/g + +function base64clean (str) { + // Node strips out invalid characters like \n and \t from the string, base64-js does not + str = stringtrim(str).replace(INVALID_BASE64_RE, '') + // Node converts strings with length < 2 to '' + if (str.length < 2) return '' + // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not + while (str.length % 4 !== 0) { + str = str + '=' + } + return str +} + +function stringtrim (str) { + if (str.trim) return str.trim() + return str.replace(/^\s+|\s+$/g, '') +} + +function toHex (n) { + if (n < 16) return '0' + n.toString(16) + return n.toString(16) +} + +function utf8ToBytes (string, units) { + units = units || Infinity + var codePoint + var length = string.length + var leadSurrogate = null + var bytes = [] + + for (var i = 0; i < length; ++i) { + codePoint = string.charCodeAt(i) + + // is surrogate component + if (codePoint > 0xD7FF && codePoint < 0xE000) { + // last char was a lead + if (!leadSurrogate) { + // no lead yet + if (codePoint > 0xDBFF) { + // unexpected trail + if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) + continue + } else if (i + 1 === length) { + // unpaired lead + if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) + continue + } + + // valid lead + leadSurrogate = codePoint + + continue + } + + // 2 leads in a row + if (codePoint < 0xDC00) { + if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) + leadSurrogate = codePoint + continue + } + + // valid surrogate pair + codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000 + } else if (leadSurrogate) { + // valid bmp char, but last char was a lead + if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) + } + + leadSurrogate = null + + // encode utf8 + if (codePoint < 0x80) { + if ((units -= 1) < 0) break + bytes.push(codePoint) + } else if (codePoint < 0x800) { + if ((units -= 2) < 0) break + bytes.push( + codePoint >> 0x6 | 0xC0, + codePoint & 0x3F | 0x80 + ) + } else if (codePoint < 0x10000) { + if ((units -= 3) < 0) break + bytes.push( + codePoint >> 0xC | 0xE0, + codePoint >> 0x6 & 0x3F | 0x80, + codePoint & 0x3F | 0x80 + ) + } else if (codePoint < 0x110000) { + if ((units -= 4) < 0) break + bytes.push( + codePoint >> 0x12 | 0xF0, + codePoint >> 0xC & 0x3F | 0x80, + codePoint >> 0x6 & 0x3F | 0x80, + codePoint & 0x3F | 0x80 + ) + } else { + throw new Error('Invalid code point') + } + } + + return bytes +} + +function asciiToBytes (str) { + var byteArray = [] + for (var i = 0; i < str.length; ++i) { + // Node's code seems to be doing this and not & 0x7F.. + byteArray.push(str.charCodeAt(i) & 0xFF) + } + return byteArray +} + +function utf16leToBytes (str, units) { + var c, hi, lo + var byteArray = [] + for (var i = 0; i < str.length; ++i) { + if ((units -= 2) < 0) break + + c = str.charCodeAt(i) + hi = c >> 8 + lo = c % 256 + byteArray.push(lo) + byteArray.push(hi) + } + + return byteArray +} + +function base64ToBytes (str) { + return base64.toByteArray(base64clean(str)) +} + +function blitBuffer (src, dst, offset, length) { + for (var i = 0; i < length; ++i) { + if ((i + offset >= dst.length) || (i >= src.length)) break + dst[i + offset] = src[i] + } + return i +} + +function isnan (val) { + return val !== val // eslint-disable-line no-self-compare +} + +/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(2))) + +/***/ }), +/* 5 */ +/***/ (function(module, exports) { + +// shim for using process in browser +var process = module.exports = {}; + +// cached from whatever global is present so that test runners that stub it +// don't break things. But we need to wrap it in a try catch in case it is +// wrapped in strict mode code which doesn't define any globals. It's inside a +// function because try/catches deoptimize in certain engines. + +var cachedSetTimeout; +var cachedClearTimeout; + +function defaultSetTimout() { + throw new Error('setTimeout has not been defined'); +} +function defaultClearTimeout () { + throw new Error('clearTimeout has not been defined'); +} +(function () { + try { + if (typeof setTimeout === 'function') { + cachedSetTimeout = setTimeout; + } else { + cachedSetTimeout = defaultSetTimout; + } + } catch (e) { + cachedSetTimeout = defaultSetTimout; + } + try { + if (typeof clearTimeout === 'function') { + cachedClearTimeout = clearTimeout; + } else { + cachedClearTimeout = defaultClearTimeout; + } + } catch (e) { + cachedClearTimeout = defaultClearTimeout; + } +} ()) +function runTimeout(fun) { + if (cachedSetTimeout === setTimeout) { + //normal enviroments in sane situations + return setTimeout(fun, 0); + } + // if setTimeout wasn't available but was latter defined + if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) { + cachedSetTimeout = setTimeout; + return setTimeout(fun, 0); + } + try { + // when when somebody has screwed with setTimeout but no I.E. maddness + return cachedSetTimeout(fun, 0); + } catch(e){ + try { + // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally + return cachedSetTimeout.call(null, fun, 0); + } catch(e){ + // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error + return cachedSetTimeout.call(this, fun, 0); + } + } + + +} +function runClearTimeout(marker) { + if (cachedClearTimeout === clearTimeout) { + //normal enviroments in sane situations + return clearTimeout(marker); + } + // if clearTimeout wasn't available but was latter defined + if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) { + cachedClearTimeout = clearTimeout; + return clearTimeout(marker); + } + try { + // when when somebody has screwed with setTimeout but no I.E. maddness + return cachedClearTimeout(marker); + } catch (e){ + try { + // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally + return cachedClearTimeout.call(null, marker); + } catch (e){ + // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error. + // Some versions of I.E. have different rules for clearTimeout vs setTimeout + return cachedClearTimeout.call(this, marker); + } + } + + + +} +var queue = []; +var draining = false; +var currentQueue; +var queueIndex = -1; + +function cleanUpNextTick() { + if (!draining || !currentQueue) { + return; + } + draining = false; + if (currentQueue.length) { + queue = currentQueue.concat(queue); + } else { + queueIndex = -1; + } + if (queue.length) { + drainQueue(); + } +} + +function drainQueue() { + if (draining) { + return; + } + var timeout = runTimeout(cleanUpNextTick); + draining = true; + + var len = queue.length; + while(len) { + currentQueue = queue; + queue = []; + while (++queueIndex < len) { + if (currentQueue) { + currentQueue[queueIndex].run(); + } + } + queueIndex = -1; + len = queue.length; + } + currentQueue = null; + draining = false; + runClearTimeout(timeout); +} + +process.nextTick = function (fun) { + var args = new Array(arguments.length - 1); + if (arguments.length > 1) { + for (var i = 1; i < arguments.length; i++) { + args[i - 1] = arguments[i]; + } + } + queue.push(new Item(fun, args)); + if (queue.length === 1 && !draining) { + runTimeout(drainQueue); + } +}; + +// v8 likes predictible objects +function Item(fun, array) { + this.fun = fun; + this.array = array; +} +Item.prototype.run = function () { + this.fun.apply(null, this.array); +}; +process.title = 'browser'; +process.browser = true; +process.env = {}; +process.argv = []; +process.version = ''; // empty string to avoid regexp issues +process.versions = {}; + +function noop() {} + +process.on = noop; +process.addListener = noop; +process.once = noop; +process.off = noop; +process.removeListener = noop; +process.removeAllListeners = noop; +process.emit = noop; +process.prependListener = noop; +process.prependOnceListener = noop; + +process.listeners = function (name) { return [] } + +process.binding = function (name) { + throw new Error('process.binding is not supported'); +}; + +process.cwd = function () { return '/' }; +process.chdir = function (dir) { + throw new Error('process.chdir is not supported'); +}; +process.umask = function() { return 0; }; + + +/***/ }), +/* 6 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/* WEBPACK VAR INJECTION */(function(process) { + +if (!process.version || + process.version.indexOf('v0.') === 0 || + process.version.indexOf('v1.') === 0 && process.version.indexOf('v1.8.') !== 0) { + module.exports = nextTick; +} else { + module.exports = process.nextTick; +} + +function nextTick(fn, arg1, arg2, arg3) { + if (typeof fn !== 'function') { + throw new TypeError('"callback" argument must be a function'); + } + var len = arguments.length; + var args, i; + switch (len) { + case 0: + case 1: + return process.nextTick(fn); + case 2: + return process.nextTick(function afterTickOne() { + fn.call(null, arg1); + }); + case 3: + return process.nextTick(function afterTickTwo() { + fn.call(null, arg1, arg2); + }); + case 4: + return process.nextTick(function afterTickThree() { + fn.call(null, arg1, arg2, arg3); + }); + default: + args = new Array(len - 1); + i = 0; + while (i < args.length) { + args[i++] = arguments[i]; + } + return process.nextTick(function afterTick() { + fn.apply(null, args); + }); + } +} + +/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(5))) + +/***/ }), +/* 7 */ +/***/ (function(module, exports, __webpack_require__) { + +/* eslint-disable node/no-deprecated-api */ +var buffer = __webpack_require__(4) +var Buffer = buffer.Buffer + +// alternative to using Object.keys for old browsers +function copyProps (src, dst) { + for (var key in src) { + dst[key] = src[key] + } +} +if (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) { + module.exports = buffer +} else { + // Copy properties from require('buffer') + copyProps(buffer, exports) + exports.Buffer = SafeBuffer +} + +function SafeBuffer (arg, encodingOrOffset, length) { + return Buffer(arg, encodingOrOffset, length) +} + +// Copy static methods from Buffer +copyProps(Buffer, SafeBuffer) + +SafeBuffer.from = function (arg, encodingOrOffset, length) { + if (typeof arg === 'number') { + throw new TypeError('Argument must not be a number') + } + return Buffer(arg, encodingOrOffset, length) +} + +SafeBuffer.alloc = function (size, fill, encoding) { + if (typeof size !== 'number') { + throw new TypeError('Argument must be a number') + } + var buf = Buffer(size) + if (fill !== undefined) { + if (typeof encoding === 'string') { + buf.fill(fill, encoding) + } else { + buf.fill(fill) + } + } else { + buf.fill(0) + } + return buf +} + +SafeBuffer.allocUnsafe = function (size) { + if (typeof size !== 'number') { + throw new TypeError('Argument must be a number') + } + return Buffer(size) +} + +SafeBuffer.allocUnsafeSlow = function (size) { + if (typeof size !== 'number') { + throw new TypeError('Argument must be a number') + } + return buffer.SlowBuffer(size) +} + + +/***/ }), +/* 8 */ +/***/ (function(module, exports) { + +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + +function EventEmitter() { + this._events = this._events || {}; + this._maxListeners = this._maxListeners || undefined; +} +module.exports = EventEmitter; + +// Backwards-compat with node 0.10.x +EventEmitter.EventEmitter = EventEmitter; + +EventEmitter.prototype._events = undefined; +EventEmitter.prototype._maxListeners = undefined; + +// By default EventEmitters will print a warning if more than 10 listeners are +// added to it. This is a useful default which helps finding memory leaks. +EventEmitter.defaultMaxListeners = 10; + +// Obviously not all Emitters should be limited to 10. This function allows +// that to be increased. Set to zero for unlimited. +EventEmitter.prototype.setMaxListeners = function(n) { + if (!isNumber(n) || n < 0 || isNaN(n)) + throw TypeError('n must be a positive number'); + this._maxListeners = n; + return this; +}; + +EventEmitter.prototype.emit = function(type) { + var er, handler, len, args, i, listeners; + + if (!this._events) + this._events = {}; + + // If there is no 'error' event listener then throw. + if (type === 'error') { + if (!this._events.error || + (isObject(this._events.error) && !this._events.error.length)) { + er = arguments[1]; + if (er instanceof Error) { + throw er; // Unhandled 'error' event + } else { + // At least give some kind of context to the user + var err = new Error('Uncaught, unspecified "error" event. (' + er + ')'); + err.context = er; + throw err; + } + } + } + + handler = this._events[type]; + + if (isUndefined(handler)) + return false; + + if (isFunction(handler)) { + switch (arguments.length) { + // fast cases + case 1: + handler.call(this); + break; + case 2: + handler.call(this, arguments[1]); + break; + case 3: + handler.call(this, arguments[1], arguments[2]); + break; + // slower + default: + args = Array.prototype.slice.call(arguments, 1); + handler.apply(this, args); + } + } else if (isObject(handler)) { + args = Array.prototype.slice.call(arguments, 1); + listeners = handler.slice(); + len = listeners.length; + for (i = 0; i < len; i++) + listeners[i].apply(this, args); + } + + return true; +}; + +EventEmitter.prototype.addListener = function(type, listener) { + var m; + + if (!isFunction(listener)) + throw TypeError('listener must be a function'); + + if (!this._events) + this._events = {}; + + // To avoid recursion in the case that type === "newListener"! Before + // adding it to the listeners, first emit "newListener". + if (this._events.newListener) + this.emit('newListener', type, + isFunction(listener.listener) ? + listener.listener : listener); + + if (!this._events[type]) + // Optimize the case of one listener. Don't need the extra array object. + this._events[type] = listener; + else if (isObject(this._events[type])) + // If we've already got an array, just append. + this._events[type].push(listener); + else + // Adding the second element, need to change to array. + this._events[type] = [this._events[type], listener]; + + // Check for listener leak + if (isObject(this._events[type]) && !this._events[type].warned) { + if (!isUndefined(this._maxListeners)) { + m = this._maxListeners; + } else { + m = EventEmitter.defaultMaxListeners; + } + + if (m && m > 0 && this._events[type].length > m) { + this._events[type].warned = true; + console.error('(node) warning: possible EventEmitter memory ' + + 'leak detected. %d listeners added. ' + + 'Use emitter.setMaxListeners() to increase limit.', + this._events[type].length); + if (typeof console.trace === 'function') { + // not supported in IE 10 + console.trace(); + } + } + } + + return this; +}; + +EventEmitter.prototype.on = EventEmitter.prototype.addListener; + +EventEmitter.prototype.once = function(type, listener) { + if (!isFunction(listener)) + throw TypeError('listener must be a function'); + + var fired = false; + + function g() { + this.removeListener(type, g); + + if (!fired) { + fired = true; + listener.apply(this, arguments); + } + } + + g.listener = listener; + this.on(type, g); + + return this; +}; + +// emits a 'removeListener' event iff the listener was removed +EventEmitter.prototype.removeListener = function(type, listener) { + var list, position, length, i; + + if (!isFunction(listener)) + throw TypeError('listener must be a function'); + + if (!this._events || !this._events[type]) + return this; + + list = this._events[type]; + length = list.length; + position = -1; + + if (list === listener || + (isFunction(list.listener) && list.listener === listener)) { + delete this._events[type]; + if (this._events.removeListener) + this.emit('removeListener', type, listener); + + } else if (isObject(list)) { + for (i = length; i-- > 0;) { + if (list[i] === listener || + (list[i].listener && list[i].listener === listener)) { + position = i; + break; + } + } + + if (position < 0) + return this; + + if (list.length === 1) { + list.length = 0; + delete this._events[type]; + } else { + list.splice(position, 1); + } + + if (this._events.removeListener) + this.emit('removeListener', type, listener); + } + + return this; +}; + +EventEmitter.prototype.removeAllListeners = function(type) { + var key, listeners; + + if (!this._events) + return this; + + // not listening for removeListener, no need to emit + if (!this._events.removeListener) { + if (arguments.length === 0) + this._events = {}; + else if (this._events[type]) + delete this._events[type]; + return this; + } + + // emit removeListener for all listeners on all events + if (arguments.length === 0) { + for (key in this._events) { + if (key === 'removeListener') continue; + this.removeAllListeners(key); + } + this.removeAllListeners('removeListener'); + this._events = {}; + return this; + } + + listeners = this._events[type]; + + if (isFunction(listeners)) { + this.removeListener(type, listeners); + } else if (listeners) { + // LIFO order + while (listeners.length) + this.removeListener(type, listeners[listeners.length - 1]); + } + delete this._events[type]; + + return this; +}; + +EventEmitter.prototype.listeners = function(type) { + var ret; + if (!this._events || !this._events[type]) + ret = []; + else if (isFunction(this._events[type])) + ret = [this._events[type]]; + else + ret = this._events[type].slice(); + return ret; +}; + +EventEmitter.prototype.listenerCount = function(type) { + if (this._events) { + var evlistener = this._events[type]; + + if (isFunction(evlistener)) + return 1; + else if (evlistener) + return evlistener.length; + } + return 0; +}; + +EventEmitter.listenerCount = function(emitter, type) { + return emitter.listenerCount(type); +}; + +function isFunction(arg) { + return typeof arg === 'function'; +} + +function isNumber(arg) { + return typeof arg === 'number'; +} + +function isObject(arg) { + return typeof arg === 'object' && arg !== null; +} + +function isUndefined(arg) { + return arg === void 0; +} + + +/***/ }), +/* 9 */ +/***/ (function(module, exports, __webpack_require__) { + +exports = module.exports = __webpack_require__(16); +exports.Stream = exports; +exports.Readable = exports; +exports.Writable = __webpack_require__(10); +exports.Duplex = __webpack_require__(0); +exports.Transform = __webpack_require__(19); +exports.PassThrough = __webpack_require__(31); + + +/***/ }), +/* 10 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/* WEBPACK VAR INJECTION */(function(process, setImmediate, global) {// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + +// A bit simpler than readable streams. +// Implement an async ._write(chunk, encoding, cb), and it'll handle all +// the drain event emission and buffering. + + + +/**/ + +var processNextTick = __webpack_require__(6); +/**/ + +module.exports = Writable; + +/* */ +function WriteReq(chunk, encoding, cb) { + this.chunk = chunk; + this.encoding = encoding; + this.callback = cb; + this.next = null; +} + +// It seems a linked list but it is not +// there will be only 2 of these for each stream +function CorkedRequest(state) { + var _this = this; + + this.next = null; + this.entry = null; + this.finish = function () { + onCorkedFinish(_this, state); + }; +} +/* */ + +/**/ +var asyncWrite = !process.browser && ['v0.10', 'v0.9.'].indexOf(process.version.slice(0, 5)) > -1 ? setImmediate : processNextTick; +/**/ + +/**/ +var Duplex; +/**/ + +Writable.WritableState = WritableState; + +/**/ +var util = __webpack_require__(3); +util.inherits = __webpack_require__(1); +/**/ + +/**/ +var internalUtil = { + deprecate: __webpack_require__(30) +}; +/**/ + +/**/ +var Stream = __webpack_require__(17); +/**/ + +/**/ +var Buffer = __webpack_require__(7).Buffer; +var OurUint8Array = global.Uint8Array || function () {}; +function _uint8ArrayToBuffer(chunk) { + return Buffer.from(chunk); +} +function _isUint8Array(obj) { + return Buffer.isBuffer(obj) || obj instanceof OurUint8Array; +} +/**/ + +var destroyImpl = __webpack_require__(18); + +util.inherits(Writable, Stream); + +function nop() {} + +function WritableState(options, stream) { + Duplex = Duplex || __webpack_require__(0); + + options = options || {}; + + // object stream flag to indicate whether or not this stream + // contains buffers or objects. + this.objectMode = !!options.objectMode; + + if (stream instanceof Duplex) this.objectMode = this.objectMode || !!options.writableObjectMode; + + // the point at which write() starts returning false + // Note: 0 is a valid value, means that we always return false if + // the entire buffer is not flushed immediately on write() + var hwm = options.highWaterMark; + var defaultHwm = this.objectMode ? 16 : 16 * 1024; + this.highWaterMark = hwm || hwm === 0 ? hwm : defaultHwm; + + // cast to ints. + this.highWaterMark = Math.floor(this.highWaterMark); + + // if _final has been called + this.finalCalled = false; + + // drain event flag. + this.needDrain = false; + // at the start of calling end() + this.ending = false; + // when end() has been called, and returned + this.ended = false; + // when 'finish' is emitted + this.finished = false; + + // has it been destroyed + this.destroyed = false; + + // should we decode strings into buffers before passing to _write? + // this is here so that some node-core streams can optimize string + // handling at a lower level. + var noDecode = options.decodeStrings === false; + this.decodeStrings = !noDecode; + + // Crypto is kind of old and crusty. Historically, its default string + // encoding is 'binary' so we have to make this configurable. + // Everything else in the universe uses 'utf8', though. + this.defaultEncoding = options.defaultEncoding || 'utf8'; + + // not an actual buffer we keep track of, but a measurement + // of how much we're waiting to get pushed to some underlying + // socket or file. + this.length = 0; + + // a flag to see when we're in the middle of a write. + this.writing = false; + + // when true all writes will be buffered until .uncork() call + this.corked = 0; + + // a flag to be able to tell if the onwrite cb is called immediately, + // or on a later tick. We set this to true at first, because any + // actions that shouldn't happen until "later" should generally also + // not happen before the first write call. + this.sync = true; + + // a flag to know if we're processing previously buffered items, which + // may call the _write() callback in the same tick, so that we don't + // end up in an overlapped onwrite situation. + this.bufferProcessing = false; + + // the callback that's passed to _write(chunk,cb) + this.onwrite = function (er) { + onwrite(stream, er); + }; + + // the callback that the user supplies to write(chunk,encoding,cb) + this.writecb = null; + + // the amount that is being written when _write is called. + this.writelen = 0; + + this.bufferedRequest = null; + this.lastBufferedRequest = null; + + // number of pending user-supplied write callbacks + // this must be 0 before 'finish' can be emitted + this.pendingcb = 0; + + // emit prefinish if the only thing we're waiting for is _write cbs + // This is relevant for synchronous Transform streams + this.prefinished = false; + + // True if the error was already emitted and should not be thrown again + this.errorEmitted = false; + + // count buffered requests + this.bufferedRequestCount = 0; + + // allocate the first CorkedRequest, there is always + // one allocated and free to use, and we maintain at most two + this.corkedRequestsFree = new CorkedRequest(this); +} + +WritableState.prototype.getBuffer = function getBuffer() { + var current = this.bufferedRequest; + var out = []; + while (current) { + out.push(current); + current = current.next; + } + return out; +}; + +(function () { + try { + Object.defineProperty(WritableState.prototype, 'buffer', { + get: internalUtil.deprecate(function () { + return this.getBuffer(); + }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003') + }); + } catch (_) {} +})(); + +// Test _writableState for inheritance to account for Duplex streams, +// whose prototype chain only points to Readable. +var realHasInstance; +if (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') { + realHasInstance = Function.prototype[Symbol.hasInstance]; + Object.defineProperty(Writable, Symbol.hasInstance, { + value: function (object) { + if (realHasInstance.call(this, object)) return true; + + return object && object._writableState instanceof WritableState; + } + }); +} else { + realHasInstance = function (object) { + return object instanceof this; + }; +} + +function Writable(options) { + Duplex = Duplex || __webpack_require__(0); + + // Writable ctor is applied to Duplexes, too. + // `realHasInstance` is necessary because using plain `instanceof` + // would return false, as no `_writableState` property is attached. + + // Trying to use the custom `instanceof` for Writable here will also break the + // Node.js LazyTransform implementation, which has a non-trivial getter for + // `_writableState` that would lead to infinite recursion. + if (!realHasInstance.call(Writable, this) && !(this instanceof Duplex)) { + return new Writable(options); + } + + this._writableState = new WritableState(options, this); + + // legacy. + this.writable = true; + + if (options) { + if (typeof options.write === 'function') this._write = options.write; + + if (typeof options.writev === 'function') this._writev = options.writev; + + if (typeof options.destroy === 'function') this._destroy = options.destroy; + + if (typeof options.final === 'function') this._final = options.final; + } + + Stream.call(this); +} + +// Otherwise people can pipe Writable streams, which is just wrong. +Writable.prototype.pipe = function () { + this.emit('error', new Error('Cannot pipe, not readable')); +}; + +function writeAfterEnd(stream, cb) { + var er = new Error('write after end'); + // TODO: defer error events consistently everywhere, not just the cb + stream.emit('error', er); + processNextTick(cb, er); +} + +// Checks that a user-supplied chunk is valid, especially for the particular +// mode the stream is in. Currently this means that `null` is never accepted +// and undefined/non-string values are only allowed in object mode. +function validChunk(stream, state, chunk, cb) { + var valid = true; + var er = false; + + if (chunk === null) { + er = new TypeError('May not write null values to stream'); + } else if (typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) { + er = new TypeError('Invalid non-string/buffer chunk'); + } + if (er) { + stream.emit('error', er); + processNextTick(cb, er); + valid = false; + } + return valid; +} + +Writable.prototype.write = function (chunk, encoding, cb) { + var state = this._writableState; + var ret = false; + var isBuf = _isUint8Array(chunk) && !state.objectMode; + + if (isBuf && !Buffer.isBuffer(chunk)) { + chunk = _uint8ArrayToBuffer(chunk); + } + + if (typeof encoding === 'function') { + cb = encoding; + encoding = null; + } + + if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding; + + if (typeof cb !== 'function') cb = nop; + + if (state.ended) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) { + state.pendingcb++; + ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb); + } + + return ret; +}; + +Writable.prototype.cork = function () { + var state = this._writableState; + + state.corked++; +}; + +Writable.prototype.uncork = function () { + var state = this._writableState; + + if (state.corked) { + state.corked--; + + if (!state.writing && !state.corked && !state.finished && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state); + } +}; + +Writable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) { + // node::ParseEncoding() requires lower case. + if (typeof encoding === 'string') encoding = encoding.toLowerCase(); + if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new TypeError('Unknown encoding: ' + encoding); + this._writableState.defaultEncoding = encoding; + return this; +}; + +function decodeChunk(state, chunk, encoding) { + if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') { + chunk = Buffer.from(chunk, encoding); + } + return chunk; +} + +// if we're already writing something, then just put this +// in the queue, and wait our turn. Otherwise, call _write +// If we return false, then we need a drain event, so set that flag. +function writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) { + if (!isBuf) { + var newChunk = decodeChunk(state, chunk, encoding); + if (chunk !== newChunk) { + isBuf = true; + encoding = 'buffer'; + chunk = newChunk; + } + } + var len = state.objectMode ? 1 : chunk.length; + + state.length += len; + + var ret = state.length < state.highWaterMark; + // we must ensure that previous needDrain will not be reset to false. + if (!ret) state.needDrain = true; + + if (state.writing || state.corked) { + var last = state.lastBufferedRequest; + state.lastBufferedRequest = { + chunk: chunk, + encoding: encoding, + isBuf: isBuf, + callback: cb, + next: null + }; + if (last) { + last.next = state.lastBufferedRequest; + } else { + state.bufferedRequest = state.lastBufferedRequest; + } + state.bufferedRequestCount += 1; + } else { + doWrite(stream, state, false, len, chunk, encoding, cb); + } + + return ret; +} + +function doWrite(stream, state, writev, len, chunk, encoding, cb) { + state.writelen = len; + state.writecb = cb; + state.writing = true; + state.sync = true; + if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite); + state.sync = false; +} + +function onwriteError(stream, state, sync, er, cb) { + --state.pendingcb; + + if (sync) { + // defer the callback if we are being called synchronously + // to avoid piling up things on the stack + processNextTick(cb, er); + // this can emit finish, and it will always happen + // after error + processNextTick(finishMaybe, stream, state); + stream._writableState.errorEmitted = true; + stream.emit('error', er); + } else { + // the caller expect this to happen before if + // it is async + cb(er); + stream._writableState.errorEmitted = true; + stream.emit('error', er); + // this can emit finish, but finish must + // always follow error + finishMaybe(stream, state); + } +} + +function onwriteStateUpdate(state) { + state.writing = false; + state.writecb = null; + state.length -= state.writelen; + state.writelen = 0; +} + +function onwrite(stream, er) { + var state = stream._writableState; + var sync = state.sync; + var cb = state.writecb; + + onwriteStateUpdate(state); + + if (er) onwriteError(stream, state, sync, er, cb);else { + // Check if we're actually ready to finish, but don't emit yet + var finished = needFinish(state); + + if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) { + clearBuffer(stream, state); + } + + if (sync) { + /**/ + asyncWrite(afterWrite, stream, state, finished, cb); + /**/ + } else { + afterWrite(stream, state, finished, cb); + } + } +} + +function afterWrite(stream, state, finished, cb) { + if (!finished) onwriteDrain(stream, state); + state.pendingcb--; + cb(); + finishMaybe(stream, state); +} + +// Must force callback to be called on nextTick, so that we don't +// emit 'drain' before the write() consumer gets the 'false' return +// value, and has a chance to attach a 'drain' listener. +function onwriteDrain(stream, state) { + if (state.length === 0 && state.needDrain) { + state.needDrain = false; + stream.emit('drain'); + } +} + +// if there's something in the buffer waiting, then process it +function clearBuffer(stream, state) { + state.bufferProcessing = true; + var entry = state.bufferedRequest; + + if (stream._writev && entry && entry.next) { + // Fast case, write everything using _writev() + var l = state.bufferedRequestCount; + var buffer = new Array(l); + var holder = state.corkedRequestsFree; + holder.entry = entry; + + var count = 0; + var allBuffers = true; + while (entry) { + buffer[count] = entry; + if (!entry.isBuf) allBuffers = false; + entry = entry.next; + count += 1; + } + buffer.allBuffers = allBuffers; + + doWrite(stream, state, true, state.length, buffer, '', holder.finish); + + // doWrite is almost always async, defer these to save a bit of time + // as the hot path ends with doWrite + state.pendingcb++; + state.lastBufferedRequest = null; + if (holder.next) { + state.corkedRequestsFree = holder.next; + holder.next = null; + } else { + state.corkedRequestsFree = new CorkedRequest(state); + } + } else { + // Slow case, write chunks one-by-one + while (entry) { + var chunk = entry.chunk; + var encoding = entry.encoding; + var cb = entry.callback; + var len = state.objectMode ? 1 : chunk.length; + + doWrite(stream, state, false, len, chunk, encoding, cb); + entry = entry.next; + // if we didn't call the onwrite immediately, then + // it means that we need to wait until it does. + // also, that means that the chunk and cb are currently + // being processed, so move the buffer counter past them. + if (state.writing) { + break; + } + } + + if (entry === null) state.lastBufferedRequest = null; + } + + state.bufferedRequestCount = 0; + state.bufferedRequest = entry; + state.bufferProcessing = false; +} + +Writable.prototype._write = function (chunk, encoding, cb) { + cb(new Error('_write() is not implemented')); +}; + +Writable.prototype._writev = null; + +Writable.prototype.end = function (chunk, encoding, cb) { + var state = this._writableState; + + if (typeof chunk === 'function') { + cb = chunk; + chunk = null; + encoding = null; + } else if (typeof encoding === 'function') { + cb = encoding; + encoding = null; + } + + if (chunk !== null && chunk !== undefined) this.write(chunk, encoding); + + // .end() fully uncorks + if (state.corked) { + state.corked = 1; + this.uncork(); + } + + // ignore unnecessary end() calls. + if (!state.ending && !state.finished) endWritable(this, state, cb); +}; + +function needFinish(state) { + return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing; +} +function callFinal(stream, state) { + stream._final(function (err) { + state.pendingcb--; + if (err) { + stream.emit('error', err); + } + state.prefinished = true; + stream.emit('prefinish'); + finishMaybe(stream, state); + }); +} +function prefinish(stream, state) { + if (!state.prefinished && !state.finalCalled) { + if (typeof stream._final === 'function') { + state.pendingcb++; + state.finalCalled = true; + processNextTick(callFinal, stream, state); + } else { + state.prefinished = true; + stream.emit('prefinish'); + } + } +} + +function finishMaybe(stream, state) { + var need = needFinish(state); + if (need) { + prefinish(stream, state); + if (state.pendingcb === 0) { + state.finished = true; + stream.emit('finish'); + } + } + return need; +} + +function endWritable(stream, state, cb) { + state.ending = true; + finishMaybe(stream, state); + if (cb) { + if (state.finished) processNextTick(cb);else stream.once('finish', cb); + } + state.ended = true; + stream.writable = false; +} + +function onCorkedFinish(corkReq, state, err) { + var entry = corkReq.entry; + corkReq.entry = null; + while (entry) { + var cb = entry.callback; + state.pendingcb--; + cb(err); + entry = entry.next; + } + if (state.corkedRequestsFree) { + state.corkedRequestsFree.next = corkReq; + } else { + state.corkedRequestsFree = corkReq; + } +} + +Object.defineProperty(Writable.prototype, 'destroyed', { + get: function () { + if (this._writableState === undefined) { + return false; + } + return this._writableState.destroyed; + }, + set: function (value) { + // we ignore the value if the stream + // has not been initialized yet + if (!this._writableState) { + return; + } + + // backward compatibility, the user is explicitly + // managing destroyed + this._writableState.destroyed = value; + } +}); + +Writable.prototype.destroy = destroyImpl.destroy; +Writable.prototype._undestroy = destroyImpl.undestroy; +Writable.prototype._destroy = function (err, cb) { + this.end(); + cb(err); +}; +/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(5), __webpack_require__(28).setImmediate, __webpack_require__(2))) + +/***/ }), +/* 11 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Buffer = __webpack_require__(7).Buffer; + +var isEncoding = Buffer.isEncoding || function (encoding) { + encoding = '' + encoding; + switch (encoding && encoding.toLowerCase()) { + case 'hex':case 'utf8':case 'utf-8':case 'ascii':case 'binary':case 'base64':case 'ucs2':case 'ucs-2':case 'utf16le':case 'utf-16le':case 'raw': + return true; + default: + return false; + } +}; + +function _normalizeEncoding(enc) { + if (!enc) return 'utf8'; + var retried; + while (true) { + switch (enc) { + case 'utf8': + case 'utf-8': + return 'utf8'; + case 'ucs2': + case 'ucs-2': + case 'utf16le': + case 'utf-16le': + return 'utf16le'; + case 'latin1': + case 'binary': + return 'latin1'; + case 'base64': + case 'ascii': + case 'hex': + return enc; + default: + if (retried) return; // undefined + enc = ('' + enc).toLowerCase(); + retried = true; + } + } +}; + +// Do not cache `Buffer.isEncoding` when checking encoding names as some +// modules monkey-patch it to support additional encodings +function normalizeEncoding(enc) { + var nenc = _normalizeEncoding(enc); + if (typeof nenc !== 'string' && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc); + return nenc || enc; +} + +// StringDecoder provides an interface for efficiently splitting a series of +// buffers into a series of JS strings without breaking apart multi-byte +// characters. +exports.StringDecoder = StringDecoder; +function StringDecoder(encoding) { + this.encoding = normalizeEncoding(encoding); + var nb; + switch (this.encoding) { + case 'utf16le': + this.text = utf16Text; + this.end = utf16End; + nb = 4; + break; + case 'utf8': + this.fillLast = utf8FillLast; + nb = 4; + break; + case 'base64': + this.text = base64Text; + this.end = base64End; + nb = 3; + break; + default: + this.write = simpleWrite; + this.end = simpleEnd; + return; + } + this.lastNeed = 0; + this.lastTotal = 0; + this.lastChar = Buffer.allocUnsafe(nb); +} + +StringDecoder.prototype.write = function (buf) { + if (buf.length === 0) return ''; + var r; + var i; + if (this.lastNeed) { + r = this.fillLast(buf); + if (r === undefined) return ''; + i = this.lastNeed; + this.lastNeed = 0; + } else { + i = 0; + } + if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i); + return r || ''; +}; + +StringDecoder.prototype.end = utf8End; + +// Returns only complete characters in a Buffer +StringDecoder.prototype.text = utf8Text; + +// Attempts to complete a partial non-UTF-8 character using bytes from a Buffer +StringDecoder.prototype.fillLast = function (buf) { + if (this.lastNeed <= buf.length) { + buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed); + return this.lastChar.toString(this.encoding, 0, this.lastTotal); + } + buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length); + this.lastNeed -= buf.length; +}; + +// Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a +// continuation byte. +function utf8CheckByte(byte) { + if (byte <= 0x7F) return 0;else if (byte >> 5 === 0x06) return 2;else if (byte >> 4 === 0x0E) return 3;else if (byte >> 3 === 0x1E) return 4; + return -1; +} + +// Checks at most 3 bytes at the end of a Buffer in order to detect an +// incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4) +// needed to complete the UTF-8 character (if applicable) are returned. +function utf8CheckIncomplete(self, buf, i) { + var j = buf.length - 1; + if (j < i) return 0; + var nb = utf8CheckByte(buf[j]); + if (nb >= 0) { + if (nb > 0) self.lastNeed = nb - 1; + return nb; + } + if (--j < i) return 0; + nb = utf8CheckByte(buf[j]); + if (nb >= 0) { + if (nb > 0) self.lastNeed = nb - 2; + return nb; + } + if (--j < i) return 0; + nb = utf8CheckByte(buf[j]); + if (nb >= 0) { + if (nb > 0) { + if (nb === 2) nb = 0;else self.lastNeed = nb - 3; + } + return nb; + } + return 0; +} + +// Validates as many continuation bytes for a multi-byte UTF-8 character as +// needed or are available. If we see a non-continuation byte where we expect +// one, we "replace" the validated continuation bytes we've seen so far with +// UTF-8 replacement characters ('\ufffd'), to match v8's UTF-8 decoding +// behavior. The continuation byte check is included three times in the case +// where all of the continuation bytes for a character exist in the same buffer. +// It is also done this way as a slight performance increase instead of using a +// loop. +function utf8CheckExtraBytes(self, buf, p) { + if ((buf[0] & 0xC0) !== 0x80) { + self.lastNeed = 0; + return '\ufffd'.repeat(p); + } + if (self.lastNeed > 1 && buf.length > 1) { + if ((buf[1] & 0xC0) !== 0x80) { + self.lastNeed = 1; + return '\ufffd'.repeat(p + 1); + } + if (self.lastNeed > 2 && buf.length > 2) { + if ((buf[2] & 0xC0) !== 0x80) { + self.lastNeed = 2; + return '\ufffd'.repeat(p + 2); + } + } + } +} + +// Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer. +function utf8FillLast(buf) { + var p = this.lastTotal - this.lastNeed; + var r = utf8CheckExtraBytes(this, buf, p); + if (r !== undefined) return r; + if (this.lastNeed <= buf.length) { + buf.copy(this.lastChar, p, 0, this.lastNeed); + return this.lastChar.toString(this.encoding, 0, this.lastTotal); + } + buf.copy(this.lastChar, p, 0, buf.length); + this.lastNeed -= buf.length; +} + +// Returns all complete UTF-8 characters in a Buffer. If the Buffer ended on a +// partial character, the character's bytes are buffered until the required +// number of bytes are available. +function utf8Text(buf, i) { + var total = utf8CheckIncomplete(this, buf, i); + if (!this.lastNeed) return buf.toString('utf8', i); + this.lastTotal = total; + var end = buf.length - (total - this.lastNeed); + buf.copy(this.lastChar, 0, end); + return buf.toString('utf8', i, end); +} + +// For UTF-8, a replacement character for each buffered byte of a (partial) +// character needs to be added to the output. +function utf8End(buf) { + var r = buf && buf.length ? this.write(buf) : ''; + if (this.lastNeed) return r + '\ufffd'.repeat(this.lastTotal - this.lastNeed); + return r; +} + +// UTF-16LE typically needs two bytes per character, but even if we have an even +// number of bytes available, we need to check if we end on a leading/high +// surrogate. In that case, we need to wait for the next two bytes in order to +// decode the last character properly. +function utf16Text(buf, i) { + if ((buf.length - i) % 2 === 0) { + var r = buf.toString('utf16le', i); + if (r) { + var c = r.charCodeAt(r.length - 1); + if (c >= 0xD800 && c <= 0xDBFF) { + this.lastNeed = 2; + this.lastTotal = 4; + this.lastChar[0] = buf[buf.length - 2]; + this.lastChar[1] = buf[buf.length - 1]; + return r.slice(0, -1); + } + } + return r; + } + this.lastNeed = 1; + this.lastTotal = 2; + this.lastChar[0] = buf[buf.length - 1]; + return buf.toString('utf16le', i, buf.length - 1); +} + +// For UTF-16LE we do not explicitly append special replacement characters if we +// end on a partial character, we simply let v8 handle that. +function utf16End(buf) { + var r = buf && buf.length ? this.write(buf) : ''; + if (this.lastNeed) { + var end = this.lastTotal - this.lastNeed; + return r + this.lastChar.toString('utf16le', 0, end); + } + return r; +} + +function base64Text(buf, i) { + var n = (buf.length - i) % 3; + if (n === 0) return buf.toString('base64', i); + this.lastNeed = 3 - n; + this.lastTotal = 3; + if (n === 1) { + this.lastChar[0] = buf[buf.length - 1]; + } else { + this.lastChar[0] = buf[buf.length - 2]; + this.lastChar[1] = buf[buf.length - 1]; + } + return buf.toString('base64', i, buf.length - n); +} + +function base64End(buf) { + var r = buf && buf.length ? this.write(buf) : ''; + if (this.lastNeed) return r + this.lastChar.toString('base64', 0, 3 - this.lastNeed); + return r; +} + +// Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex) +function simpleWrite(buf) { + return buf.toString(this.encoding); +} + +function simpleEnd(buf) { + return buf && buf.length ? this.write(buf) : ''; +} + +/***/ }), +/* 12 */ +/***/ (function(module, exports, __webpack_require__) { + +var isArray = __webpack_require__(13).isArray; + +module.exports = { + + copyOptions: function (options) { + var key, copy = {}; + for (key in options) { + if (options.hasOwnProperty(key)) { + copy[key] = options[key]; + } + } + return copy; + }, + + ensureFlagExists: function (item, options) { + if (!(item in options) || typeof options[item] !== 'boolean') { + options[item] = false; + } + }, + + ensureSpacesExists: function (options) { + if (!('spaces' in options) || (typeof options.spaces !== 'number' && typeof options.spaces !== 'string')) { + options.spaces = 0; + } + }, + + ensureAlwaysArrayExists: function (options) { + if (!('alwaysArray' in options) || (typeof options.alwaysArray !== 'boolean' && !isArray(options.alwaysArray))) { + options.alwaysArray = false; + } + }, + + ensureKeyExists: function (key, options) { + if (!(key + 'Key' in options) || typeof options[key + 'Key'] !== 'string') { + options[key + 'Key'] = options.compact ? '_' + key : key; + } + }, + + checkFnExists: function (key, options) { + return key + 'Fn' in options; + } + +}; + + +/***/ }), +/* 13 */ +/***/ (function(module, exports) { + +module.exports = { + + isArray: function(value) { + if (Array.isArray) { + return Array.isArray(value); + } + // fallback for older browsers like IE 8 + return Object.prototype.toString.call( value ) === '[object Array]'; + } + +}; + + +/***/ }), +/* 14 */ +/***/ (function(module, exports, __webpack_require__) { + +var sax = __webpack_require__(22); +var expat /*= require('node-expat');*/ = { on: function () { }, parse: function () { } }; +var helper = __webpack_require__(12); +var isArray = __webpack_require__(13).isArray; + +var options; +var pureJsParser = true; +var currentElement; + +function validateOptions(userOptions) { + options = helper.copyOptions(userOptions); + helper.ensureFlagExists('ignoreDeclaration', options); + helper.ensureFlagExists('ignoreInstruction', options); + helper.ensureFlagExists('ignoreAttributes', options); + helper.ensureFlagExists('ignoreText', options); + helper.ensureFlagExists('ignoreComment', options); + helper.ensureFlagExists('ignoreCdata', options); + helper.ensureFlagExists('ignoreDoctype', options); + helper.ensureFlagExists('compact', options); + helper.ensureFlagExists('alwaysChildren', options); + helper.ensureFlagExists('addParent', options); + helper.ensureFlagExists('trim', options); + helper.ensureFlagExists('nativeType', options); + helper.ensureFlagExists('sanitize', options); + helper.ensureFlagExists('instructionHasAttributes', options); + helper.ensureFlagExists('captureSpacesBetweenElements', options); + helper.ensureAlwaysArrayExists(options); + helper.ensureKeyExists('declaration', options); + helper.ensureKeyExists('instruction', options); + helper.ensureKeyExists('attributes', options); + helper.ensureKeyExists('text', options); + helper.ensureKeyExists('comment', options); + helper.ensureKeyExists('cdata', options); + helper.ensureKeyExists('doctype', options); + helper.ensureKeyExists('type', options); + helper.ensureKeyExists('name', options); + helper.ensureKeyExists('elements', options); + helper.ensureKeyExists('parent', options); + helper.checkFnExists('doctype', options); + helper.checkFnExists('instruction', options); + helper.checkFnExists('cdata', options); + helper.checkFnExists('comment', options); + helper.checkFnExists('text', options); + helper.checkFnExists('instructionName', options); + helper.checkFnExists('elementName', options); + helper.checkFnExists('attributeName', options); + helper.checkFnExists('attributeValue', options); + helper.checkFnExists('attributes', options); + return options; +} + +function nativeType(value) { + var nValue = Number(value); + if (!isNaN(nValue)) { + return nValue; + } + var bValue = value.toLowerCase(); + if (bValue === 'true') { + return true; + } else if (bValue === 'false') { + return false; + } + return value; +} + +function addField(type, value) { + var key; + if (options.compact) { + if ( + !currentElement[options[type + 'Key']] && + (isArray(options.alwaysArray) ? options.alwaysArray.indexOf(options[type + 'Key']) !== -1 : options.alwaysArray) + ) { + currentElement[options[type + 'Key']] = []; + } + if (currentElement[options[type + 'Key']] && !isArray(currentElement[options[type + 'Key']])) { + currentElement[options[type + 'Key']] = [currentElement[options[type + 'Key']]]; + } + if (type + 'Fn' in options && typeof value === 'string') { + value = options[type + 'Fn'](value, currentElement); + } + if (type === 'instruction' && ('instructionFn' in options || 'instructionNameFn' in options)) { + for (key in value) { + if (value.hasOwnProperty(key)) { + if ('instructionFn' in options) { + value[key] = options.instructionFn(value[key], key, currentElement); + } else { + var temp = value[key]; + delete value[key]; + value[options.instructionNameFn(key, temp, currentElement)] = temp; + } + } + } + } + if (isArray(currentElement[options[type + 'Key']])) { + currentElement[options[type + 'Key']].push(value); + } else { + currentElement[options[type + 'Key']] = value; + } + } else { + if (!currentElement[options.elementsKey]) { + currentElement[options.elementsKey] = []; + } + var element = {}; + element[options.typeKey] = type; + if (type === 'instruction') { + for (key in value) { + if (value.hasOwnProperty(key)) { + break; + } + } + element[options.nameKey] = 'instructionNameFn' in options ? options.instructionNameFn(key, value, currentElement) : key; + if (options.instructionHasAttributes) { + element[options.attributesKey] = value[key][options.attributesKey]; + if ('instructionFn' in options) { + element[options.attributesKey] = options.instructionFn(element[options.attributesKey], key, currentElement); + } + } else { + if ('instructionFn' in options) { + value[key] = options.instructionFn(value[key], key, currentElement); + } + element[options.instructionKey] = value[key]; + } + } else { + if (type + 'Fn' in options) { + value = options[type + 'Fn'](value, currentElement); + } + element[options[type + 'Key']] = value; + } + if (options.addParent) { + element[options.parentKey] = currentElement; + } + currentElement[options.elementsKey].push(element); + } +} + +function manipulateAttributes(attributes) { + if ('attributesFn' in options && attributes) { + attributes = options.attributesFn(attributes, currentElement); + } + if ((options.trim || 'attributeValueFn' in options || 'attributeNameFn' in options) && attributes) { + var key; + for (key in attributes) { + if (attributes.hasOwnProperty(key)) { + if (options.trim) attributes[key] = attributes[key].trim(); + if ('attributeValueFn' in options) attributes[key] = options.attributeValueFn(attributes[key], key, currentElement); + if ('attributeNameFn' in options) { + var temp = attributes[key]; + delete attributes[key]; + attributes[options.attributeNameFn(key, attributes[key], currentElement)] = temp; + } + } + } + } + return attributes; +} + +function onInstruction(instruction) { + var attributes = {}; + if (instruction.body && (instruction.name.toLowerCase() === 'xml' || options.instructionHasAttributes)) { + var attrsRegExp = /([\w:-]+)\s*=\s*(?:"([^"]*)"|'([^']*)'|(\w+))\s*/g; + var match; + while ((match = attrsRegExp.exec(instruction.body)) !== null) { + attributes[match[1]] = match[2] || match[3] || match[4]; + } + attributes = manipulateAttributes(attributes); + } + if (instruction.name.toLowerCase() === 'xml') { + if (options.ignoreDeclaration) { + return; + } + currentElement[options.declarationKey] = {}; + if (Object.keys(attributes).length) { + currentElement[options.declarationKey][options.attributesKey] = attributes; + } + if (options.addParent) { + currentElement[options.declarationKey][options.parentKey] = currentElement; + } + } else { + if (options.ignoreInstruction) { + return; + } + if (options.trim) { + instruction.body = instruction.body.trim(); + } + var value = {}; + if (options.instructionHasAttributes && Object.keys(attributes).length) { + value[instruction.name] = {}; + value[instruction.name][options.attributesKey] = attributes; + } else { + value[instruction.name] = instruction.body; + } + addField('instruction', value); + } +} + +function onStartElement(name, attributes) { + var element; + if (typeof name === 'object') { + attributes = name.attributes; + name = name.name; + } + attributes = manipulateAttributes(attributes); + if ('elementNameFn' in options) { + name = options.elementNameFn(name, currentElement); + } + if (options.compact) { + element = {}; + if (!options.ignoreAttributes && attributes && Object.keys(attributes).length) { + element[options.attributesKey] = {}; + var key; + for (key in attributes) { + if (attributes.hasOwnProperty(key)) { + element[options.attributesKey][key] = attributes[key]; + } + } + } + if ( + !(name in currentElement) && + (isArray(options.alwaysArray) ? options.alwaysArray.indexOf(name) !== -1 : options.alwaysArray) + ) { + currentElement[name] = []; + } + if (currentElement[name] && !isArray(currentElement[name])) { + currentElement[name] = [currentElement[name]]; + } + if (isArray(currentElement[name])) { + currentElement[name].push(element); + } else { + currentElement[name] = element; + } + } else { + if (!currentElement[options.elementsKey]) { + currentElement[options.elementsKey] = []; + } + element = {}; + element[options.typeKey] = 'element'; + element[options.nameKey] = name; + if (!options.ignoreAttributes && attributes && Object.keys(attributes).length) { + element[options.attributesKey] = attributes; + } + if (options.alwaysChildren) { + element[options.elementsKey] = []; + } + currentElement[options.elementsKey].push(element); + } + element[options.parentKey] = currentElement; // will be deleted in onEndElement() if !options.addParent + currentElement = element; +} + +function onText(text) { + if (options.ignoreText) { + return; + } + if (!text.trim() && !options.captureSpacesBetweenElements) { + return; + } + if (options.trim) { + text = text.trim(); + } + if (options.nativeType) { + text = nativeType(text); + } + if (options.sanitize) { + text = text.replace(/&/g, '&').replace(//g, '>'); + } + addField('text', text); +} + +function onComment(comment) { + if (options.ignoreComment) { + return; + } + if (options.trim) { + comment = comment.trim(); + } + addField('comment', comment); +} + +function onEndElement(name) { + var parentElement = currentElement[options.parentKey]; + if (!options.addParent) { + delete currentElement[options.parentKey]; + } + currentElement = parentElement; +} + +function onCdata(cdata) { + if (options.ignoreCdata) { + return; + } + if (options.trim) { + cdata = cdata.trim(); + } + addField('cdata', cdata); +} + +function onDoctype(doctype) { + if (options.ignoreDoctype) { + return; + } + doctype = doctype.replace(/^ /, ''); + if (options.trim) { + doctype = doctype.trim(); + } + addField('doctype', doctype); +} + +function onError(error) { + error.note = error; //console.error(error); +} + +module.exports = function (xml, userOptions) { + + var parser = pureJsParser ? sax.parser(true, {}) : parser = new expat.Parser('UTF-8'); + var result = {}; + currentElement = result; + + options = validateOptions(userOptions); + + if (pureJsParser) { + parser.opt = {strictEntities: true}; + parser.onopentag = onStartElement; + parser.ontext = onText; + parser.oncomment = onComment; + parser.onclosetag = onEndElement; + parser.onerror = onError; + parser.oncdata = onCdata; + parser.ondoctype = onDoctype; + parser.onprocessinginstruction = onInstruction; + } else { + parser.on('startElement', onStartElement); + parser.on('text', onText); + parser.on('comment', onComment); + parser.on('endElement', onEndElement); + parser.on('error', onError); + //parser.on('startCdata', onStartCdata); + //parser.on('endCdata', onEndCdata); + //parser.on('entityDecl', onEntityDecl); + } + + if (pureJsParser) { + parser.write(xml).close(); + } else { + if (!parser.parse(xml)) { + throw new Error('XML parsing error: ' + parser.getError()); + } + } + + if (result[options.elementsKey]) { + var temp = result[options.elementsKey]; + delete result[options.elementsKey]; + result[options.elementsKey] = temp; + delete result.text; + } + + return result; + +}; + + +/***/ }), +/* 15 */ +/***/ (function(module, exports) { + +var toString = {}.toString; + +module.exports = Array.isArray || function (arr) { + return toString.call(arr) == '[object Array]'; +}; + + +/***/ }), +/* 16 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/* WEBPACK VAR INJECTION */(function(global, process) {// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + + + +/**/ + +var processNextTick = __webpack_require__(6); +/**/ + +module.exports = Readable; + +/**/ +var isArray = __webpack_require__(15); +/**/ + +/**/ +var Duplex; +/**/ + +Readable.ReadableState = ReadableState; + +/**/ +var EE = __webpack_require__(8).EventEmitter; + +var EElistenerCount = function (emitter, type) { + return emitter.listeners(type).length; +}; +/**/ + +/**/ +var Stream = __webpack_require__(17); +/**/ + +// TODO(bmeurer): Change this back to const once hole checks are +// properly optimized away early in Ignition+TurboFan. +/**/ +var Buffer = __webpack_require__(7).Buffer; +var OurUint8Array = global.Uint8Array || function () {}; +function _uint8ArrayToBuffer(chunk) { + return Buffer.from(chunk); +} +function _isUint8Array(obj) { + return Buffer.isBuffer(obj) || obj instanceof OurUint8Array; +} +/**/ + +/**/ +var util = __webpack_require__(3); +util.inherits = __webpack_require__(1); +/**/ + +/**/ +var debugUtil = __webpack_require__(26); +var debug = void 0; +if (debugUtil && debugUtil.debuglog) { + debug = debugUtil.debuglog('stream'); +} else { + debug = function () {}; +} +/**/ + +var BufferList = __webpack_require__(27); +var destroyImpl = __webpack_require__(18); +var StringDecoder; + +util.inherits(Readable, Stream); + +var kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume']; + +function prependListener(emitter, event, fn) { + // Sadly this is not cacheable as some libraries bundle their own + // event emitter implementation with them. + if (typeof emitter.prependListener === 'function') { + return emitter.prependListener(event, fn); + } else { + // This is a hack to make sure that our error handler is attached before any + // userland ones. NEVER DO THIS. This is here only because this code needs + // to continue to work with older versions of Node.js that do not include + // the prependListener() method. The goal is to eventually remove this hack. + if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]]; + } +} + +function ReadableState(options, stream) { + Duplex = Duplex || __webpack_require__(0); + + options = options || {}; + + // object stream flag. Used to make read(n) ignore n and to + // make all the buffer merging and length checks go away + this.objectMode = !!options.objectMode; + + if (stream instanceof Duplex) this.objectMode = this.objectMode || !!options.readableObjectMode; + + // the point at which it stops calling _read() to fill the buffer + // Note: 0 is a valid value, means "don't call _read preemptively ever" + var hwm = options.highWaterMark; + var defaultHwm = this.objectMode ? 16 : 16 * 1024; + this.highWaterMark = hwm || hwm === 0 ? hwm : defaultHwm; + + // cast to ints. + this.highWaterMark = Math.floor(this.highWaterMark); + + // A linked list is used to store data chunks instead of an array because the + // linked list can remove elements from the beginning faster than + // array.shift() + this.buffer = new BufferList(); + this.length = 0; + this.pipes = null; + this.pipesCount = 0; + this.flowing = null; + this.ended = false; + this.endEmitted = false; + this.reading = false; + + // a flag to be able to tell if the event 'readable'/'data' is emitted + // immediately, or on a later tick. We set this to true at first, because + // any actions that shouldn't happen until "later" should generally also + // not happen before the first read call. + this.sync = true; + + // whenever we return null, then we set a flag to say + // that we're awaiting a 'readable' event emission. + this.needReadable = false; + this.emittedReadable = false; + this.readableListening = false; + this.resumeScheduled = false; + + // has it been destroyed + this.destroyed = false; + + // Crypto is kind of old and crusty. Historically, its default string + // encoding is 'binary' so we have to make this configurable. + // Everything else in the universe uses 'utf8', though. + this.defaultEncoding = options.defaultEncoding || 'utf8'; + + // the number of writers that are awaiting a drain event in .pipe()s + this.awaitDrain = 0; + + // if true, a maybeReadMore has been scheduled + this.readingMore = false; + + this.decoder = null; + this.encoding = null; + if (options.encoding) { + if (!StringDecoder) StringDecoder = __webpack_require__(11).StringDecoder; + this.decoder = new StringDecoder(options.encoding); + this.encoding = options.encoding; + } +} + +function Readable(options) { + Duplex = Duplex || __webpack_require__(0); + + if (!(this instanceof Readable)) return new Readable(options); + + this._readableState = new ReadableState(options, this); + + // legacy + this.readable = true; + + if (options) { + if (typeof options.read === 'function') this._read = options.read; + + if (typeof options.destroy === 'function') this._destroy = options.destroy; + } + + Stream.call(this); +} + +Object.defineProperty(Readable.prototype, 'destroyed', { + get: function () { + if (this._readableState === undefined) { + return false; + } + return this._readableState.destroyed; + }, + set: function (value) { + // we ignore the value if the stream + // has not been initialized yet + if (!this._readableState) { + return; + } + + // backward compatibility, the user is explicitly + // managing destroyed + this._readableState.destroyed = value; + } +}); + +Readable.prototype.destroy = destroyImpl.destroy; +Readable.prototype._undestroy = destroyImpl.undestroy; +Readable.prototype._destroy = function (err, cb) { + this.push(null); + cb(err); +}; + +// Manually shove something into the read() buffer. +// This returns true if the highWaterMark has not been hit yet, +// similar to how Writable.write() returns true if you should +// write() some more. +Readable.prototype.push = function (chunk, encoding) { + var state = this._readableState; + var skipChunkCheck; + + if (!state.objectMode) { + if (typeof chunk === 'string') { + encoding = encoding || state.defaultEncoding; + if (encoding !== state.encoding) { + chunk = Buffer.from(chunk, encoding); + encoding = ''; + } + skipChunkCheck = true; + } + } else { + skipChunkCheck = true; + } + + return readableAddChunk(this, chunk, encoding, false, skipChunkCheck); +}; + +// Unshift should *always* be something directly out of read() +Readable.prototype.unshift = function (chunk) { + return readableAddChunk(this, chunk, null, true, false); +}; + +function readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) { + var state = stream._readableState; + if (chunk === null) { + state.reading = false; + onEofChunk(stream, state); + } else { + var er; + if (!skipChunkCheck) er = chunkInvalid(state, chunk); + if (er) { + stream.emit('error', er); + } else if (state.objectMode || chunk && chunk.length > 0) { + if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) { + chunk = _uint8ArrayToBuffer(chunk); + } + + if (addToFront) { + if (state.endEmitted) stream.emit('error', new Error('stream.unshift() after end event'));else addChunk(stream, state, chunk, true); + } else if (state.ended) { + stream.emit('error', new Error('stream.push() after EOF')); + } else { + state.reading = false; + if (state.decoder && !encoding) { + chunk = state.decoder.write(chunk); + if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state); + } else { + addChunk(stream, state, chunk, false); + } + } + } else if (!addToFront) { + state.reading = false; + } + } + + return needMoreData(state); +} + +function addChunk(stream, state, chunk, addToFront) { + if (state.flowing && state.length === 0 && !state.sync) { + stream.emit('data', chunk); + stream.read(0); + } else { + // update the buffer info. + state.length += state.objectMode ? 1 : chunk.length; + if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk); + + if (state.needReadable) emitReadable(stream); + } + maybeReadMore(stream, state); +} + +function chunkInvalid(state, chunk) { + var er; + if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) { + er = new TypeError('Invalid non-string/buffer chunk'); + } + return er; +} + +// if it's past the high water mark, we can push in some more. +// Also, if we have no data yet, we can stand some +// more bytes. This is to work around cases where hwm=0, +// such as the repl. Also, if the push() triggered a +// readable event, and the user called read(largeNumber) such that +// needReadable was set, then we ought to push more, so that another +// 'readable' event will be triggered. +function needMoreData(state) { + return !state.ended && (state.needReadable || state.length < state.highWaterMark || state.length === 0); +} + +Readable.prototype.isPaused = function () { + return this._readableState.flowing === false; +}; + +// backwards compatibility. +Readable.prototype.setEncoding = function (enc) { + if (!StringDecoder) StringDecoder = __webpack_require__(11).StringDecoder; + this._readableState.decoder = new StringDecoder(enc); + this._readableState.encoding = enc; + return this; +}; + +// Don't raise the hwm > 8MB +var MAX_HWM = 0x800000; +function computeNewHighWaterMark(n) { + if (n >= MAX_HWM) { + n = MAX_HWM; + } else { + // Get the next highest power of 2 to prevent increasing hwm excessively in + // tiny amounts + n--; + n |= n >>> 1; + n |= n >>> 2; + n |= n >>> 4; + n |= n >>> 8; + n |= n >>> 16; + n++; + } + return n; +} + +// This function is designed to be inlinable, so please take care when making +// changes to the function body. +function howMuchToRead(n, state) { + if (n <= 0 || state.length === 0 && state.ended) return 0; + if (state.objectMode) return 1; + if (n !== n) { + // Only flow one buffer at a time + if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length; + } + // If we're asking for more than the current hwm, then raise the hwm. + if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n); + if (n <= state.length) return n; + // Don't have enough + if (!state.ended) { + state.needReadable = true; + return 0; + } + return state.length; +} + +// you can override either this method, or the async _read(n) below. +Readable.prototype.read = function (n) { + debug('read', n); + n = parseInt(n, 10); + var state = this._readableState; + var nOrig = n; + + if (n !== 0) state.emittedReadable = false; + + // if we're doing read(0) to trigger a readable event, but we + // already have a bunch of data in the buffer, then just trigger + // the 'readable' event and move on. + if (n === 0 && state.needReadable && (state.length >= state.highWaterMark || state.ended)) { + debug('read: emitReadable', state.length, state.ended); + if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this); + return null; + } + + n = howMuchToRead(n, state); + + // if we've ended, and we're now clear, then finish it up. + if (n === 0 && state.ended) { + if (state.length === 0) endReadable(this); + return null; + } + + // All the actual chunk generation logic needs to be + // *below* the call to _read. The reason is that in certain + // synthetic stream cases, such as passthrough streams, _read + // may be a completely synchronous operation which may change + // the state of the read buffer, providing enough data when + // before there was *not* enough. + // + // So, the steps are: + // 1. Figure out what the state of things will be after we do + // a read from the buffer. + // + // 2. If that resulting state will trigger a _read, then call _read. + // Note that this may be asynchronous, or synchronous. Yes, it is + // deeply ugly to write APIs this way, but that still doesn't mean + // that the Readable class should behave improperly, as streams are + // designed to be sync/async agnostic. + // Take note if the _read call is sync or async (ie, if the read call + // has returned yet), so that we know whether or not it's safe to emit + // 'readable' etc. + // + // 3. Actually pull the requested chunks out of the buffer and return. + + // if we need a readable event, then we need to do some reading. + var doRead = state.needReadable; + debug('need readable', doRead); + + // if we currently have less than the highWaterMark, then also read some + if (state.length === 0 || state.length - n < state.highWaterMark) { + doRead = true; + debug('length less than watermark', doRead); + } + + // however, if we've ended, then there's no point, and if we're already + // reading, then it's unnecessary. + if (state.ended || state.reading) { + doRead = false; + debug('reading or ended', doRead); + } else if (doRead) { + debug('do read'); + state.reading = true; + state.sync = true; + // if the length is currently zero, then we *need* a readable event. + if (state.length === 0) state.needReadable = true; + // call internal read method + this._read(state.highWaterMark); + state.sync = false; + // If _read pushed data synchronously, then `reading` will be false, + // and we need to re-evaluate how much data we can return to the user. + if (!state.reading) n = howMuchToRead(nOrig, state); + } + + var ret; + if (n > 0) ret = fromList(n, state);else ret = null; + + if (ret === null) { + state.needReadable = true; + n = 0; + } else { + state.length -= n; + } + + if (state.length === 0) { + // If we have nothing in the buffer, then we want to know + // as soon as we *do* get something into the buffer. + if (!state.ended) state.needReadable = true; + + // If we tried to read() past the EOF, then emit end on the next tick. + if (nOrig !== n && state.ended) endReadable(this); + } + + if (ret !== null) this.emit('data', ret); + + return ret; +}; + +function onEofChunk(stream, state) { + if (state.ended) return; + if (state.decoder) { + var chunk = state.decoder.end(); + if (chunk && chunk.length) { + state.buffer.push(chunk); + state.length += state.objectMode ? 1 : chunk.length; + } + } + state.ended = true; + + // emit 'readable' now to make sure it gets picked up. + emitReadable(stream); +} + +// Don't emit readable right away in sync mode, because this can trigger +// another read() call => stack overflow. This way, it might trigger +// a nextTick recursion warning, but that's not so bad. +function emitReadable(stream) { + var state = stream._readableState; + state.needReadable = false; + if (!state.emittedReadable) { + debug('emitReadable', state.flowing); + state.emittedReadable = true; + if (state.sync) processNextTick(emitReadable_, stream);else emitReadable_(stream); + } +} + +function emitReadable_(stream) { + debug('emit readable'); + stream.emit('readable'); + flow(stream); +} + +// at this point, the user has presumably seen the 'readable' event, +// and called read() to consume some data. that may have triggered +// in turn another _read(n) call, in which case reading = true if +// it's in progress. +// However, if we're not ended, or reading, and the length < hwm, +// then go ahead and try to read some more preemptively. +function maybeReadMore(stream, state) { + if (!state.readingMore) { + state.readingMore = true; + processNextTick(maybeReadMore_, stream, state); + } +} + +function maybeReadMore_(stream, state) { + var len = state.length; + while (!state.reading && !state.flowing && !state.ended && state.length < state.highWaterMark) { + debug('maybeReadMore read 0'); + stream.read(0); + if (len === state.length) + // didn't get any data, stop spinning. + break;else len = state.length; + } + state.readingMore = false; +} + +// abstract method. to be overridden in specific implementation classes. +// call cb(er, data) where data is <= n in length. +// for virtual (non-string, non-buffer) streams, "length" is somewhat +// arbitrary, and perhaps not very meaningful. +Readable.prototype._read = function (n) { + this.emit('error', new Error('_read() is not implemented')); +}; + +Readable.prototype.pipe = function (dest, pipeOpts) { + var src = this; + var state = this._readableState; + + switch (state.pipesCount) { + case 0: + state.pipes = dest; + break; + case 1: + state.pipes = [state.pipes, dest]; + break; + default: + state.pipes.push(dest); + break; + } + state.pipesCount += 1; + debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts); + + var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr; + + var endFn = doEnd ? onend : unpipe; + if (state.endEmitted) processNextTick(endFn);else src.once('end', endFn); + + dest.on('unpipe', onunpipe); + function onunpipe(readable, unpipeInfo) { + debug('onunpipe'); + if (readable === src) { + if (unpipeInfo && unpipeInfo.hasUnpiped === false) { + unpipeInfo.hasUnpiped = true; + cleanup(); + } + } + } + + function onend() { + debug('onend'); + dest.end(); + } + + // when the dest drains, it reduces the awaitDrain counter + // on the source. This would be more elegant with a .once() + // handler in flow(), but adding and removing repeatedly is + // too slow. + var ondrain = pipeOnDrain(src); + dest.on('drain', ondrain); + + var cleanedUp = false; + function cleanup() { + debug('cleanup'); + // cleanup event handlers once the pipe is broken + dest.removeListener('close', onclose); + dest.removeListener('finish', onfinish); + dest.removeListener('drain', ondrain); + dest.removeListener('error', onerror); + dest.removeListener('unpipe', onunpipe); + src.removeListener('end', onend); + src.removeListener('end', unpipe); + src.removeListener('data', ondata); + + cleanedUp = true; + + // if the reader is waiting for a drain event from this + // specific writer, then it would cause it to never start + // flowing again. + // So, if this is awaiting a drain, then we just call it now. + // If we don't know, then assume that we are waiting for one. + if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain(); + } + + // If the user pushes more data while we're writing to dest then we'll end up + // in ondata again. However, we only want to increase awaitDrain once because + // dest will only emit one 'drain' event for the multiple writes. + // => Introduce a guard on increasing awaitDrain. + var increasedAwaitDrain = false; + src.on('data', ondata); + function ondata(chunk) { + debug('ondata'); + increasedAwaitDrain = false; + var ret = dest.write(chunk); + if (false === ret && !increasedAwaitDrain) { + // If the user unpiped during `dest.write()`, it is possible + // to get stuck in a permanently paused state if that write + // also returned false. + // => Check whether `dest` is still a piping destination. + if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) { + debug('false write response, pause', src._readableState.awaitDrain); + src._readableState.awaitDrain++; + increasedAwaitDrain = true; + } + src.pause(); + } + } + + // if the dest has an error, then stop piping into it. + // however, don't suppress the throwing behavior for this. + function onerror(er) { + debug('onerror', er); + unpipe(); + dest.removeListener('error', onerror); + if (EElistenerCount(dest, 'error') === 0) dest.emit('error', er); + } + + // Make sure our error handler is attached before userland ones. + prependListener(dest, 'error', onerror); + + // Both close and finish should trigger unpipe, but only once. + function onclose() { + dest.removeListener('finish', onfinish); + unpipe(); + } + dest.once('close', onclose); + function onfinish() { + debug('onfinish'); + dest.removeListener('close', onclose); + unpipe(); + } + dest.once('finish', onfinish); + + function unpipe() { + debug('unpipe'); + src.unpipe(dest); + } + + // tell the dest that it's being piped to + dest.emit('pipe', src); + + // start the flow if it hasn't been started already. + if (!state.flowing) { + debug('pipe resume'); + src.resume(); + } + + return dest; +}; + +function pipeOnDrain(src) { + return function () { + var state = src._readableState; + debug('pipeOnDrain', state.awaitDrain); + if (state.awaitDrain) state.awaitDrain--; + if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) { + state.flowing = true; + flow(src); + } + }; +} + +Readable.prototype.unpipe = function (dest) { + var state = this._readableState; + var unpipeInfo = { hasUnpiped: false }; + + // if we're not piping anywhere, then do nothing. + if (state.pipesCount === 0) return this; + + // just one destination. most common case. + if (state.pipesCount === 1) { + // passed in one, but it's not the right one. + if (dest && dest !== state.pipes) return this; + + if (!dest) dest = state.pipes; + + // got a match. + state.pipes = null; + state.pipesCount = 0; + state.flowing = false; + if (dest) dest.emit('unpipe', this, unpipeInfo); + return this; + } + + // slow case. multiple pipe destinations. + + if (!dest) { + // remove all. + var dests = state.pipes; + var len = state.pipesCount; + state.pipes = null; + state.pipesCount = 0; + state.flowing = false; + + for (var i = 0; i < len; i++) { + dests[i].emit('unpipe', this, unpipeInfo); + }return this; + } + + // try to find the right one. + var index = indexOf(state.pipes, dest); + if (index === -1) return this; + + state.pipes.splice(index, 1); + state.pipesCount -= 1; + if (state.pipesCount === 1) state.pipes = state.pipes[0]; + + dest.emit('unpipe', this, unpipeInfo); + + return this; +}; + +// set up data events if they are asked for +// Ensure readable listeners eventually get something +Readable.prototype.on = function (ev, fn) { + var res = Stream.prototype.on.call(this, ev, fn); + + if (ev === 'data') { + // Start flowing on next tick if stream isn't explicitly paused + if (this._readableState.flowing !== false) this.resume(); + } else if (ev === 'readable') { + var state = this._readableState; + if (!state.endEmitted && !state.readableListening) { + state.readableListening = state.needReadable = true; + state.emittedReadable = false; + if (!state.reading) { + processNextTick(nReadingNextTick, this); + } else if (state.length) { + emitReadable(this); + } + } + } + + return res; +}; +Readable.prototype.addListener = Readable.prototype.on; + +function nReadingNextTick(self) { + debug('readable nexttick read 0'); + self.read(0); +} + +// pause() and resume() are remnants of the legacy readable stream API +// If the user uses them, then switch into old mode. +Readable.prototype.resume = function () { + var state = this._readableState; + if (!state.flowing) { + debug('resume'); + state.flowing = true; + resume(this, state); + } + return this; +}; + +function resume(stream, state) { + if (!state.resumeScheduled) { + state.resumeScheduled = true; + processNextTick(resume_, stream, state); + } +} + +function resume_(stream, state) { + if (!state.reading) { + debug('resume read 0'); + stream.read(0); + } + + state.resumeScheduled = false; + state.awaitDrain = 0; + stream.emit('resume'); + flow(stream); + if (state.flowing && !state.reading) stream.read(0); +} + +Readable.prototype.pause = function () { + debug('call pause flowing=%j', this._readableState.flowing); + if (false !== this._readableState.flowing) { + debug('pause'); + this._readableState.flowing = false; + this.emit('pause'); + } + return this; +}; + +function flow(stream) { + var state = stream._readableState; + debug('flow', state.flowing); + while (state.flowing && stream.read() !== null) {} +} + +// wrap an old-style stream as the async data source. +// This is *not* part of the readable stream interface. +// It is an ugly unfortunate mess of history. +Readable.prototype.wrap = function (stream) { + var state = this._readableState; + var paused = false; + + var self = this; + stream.on('end', function () { + debug('wrapped end'); + if (state.decoder && !state.ended) { + var chunk = state.decoder.end(); + if (chunk && chunk.length) self.push(chunk); + } + + self.push(null); + }); + + stream.on('data', function (chunk) { + debug('wrapped data'); + if (state.decoder) chunk = state.decoder.write(chunk); + + // don't skip over falsy values in objectMode + if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return; + + var ret = self.push(chunk); + if (!ret) { + paused = true; + stream.pause(); + } + }); + + // proxy all the other methods. + // important when wrapping filters and duplexes. + for (var i in stream) { + if (this[i] === undefined && typeof stream[i] === 'function') { + this[i] = function (method) { + return function () { + return stream[method].apply(stream, arguments); + }; + }(i); + } + } + + // proxy certain important events. + for (var n = 0; n < kProxyEvents.length; n++) { + stream.on(kProxyEvents[n], self.emit.bind(self, kProxyEvents[n])); + } + + // when we try to consume some more bytes, simply unpause the + // underlying stream. + self._read = function (n) { + debug('wrapped _read', n); + if (paused) { + paused = false; + stream.resume(); + } + }; + + return self; +}; + +// exposed for testing purposes only. +Readable._fromList = fromList; + +// Pluck off n bytes from an array of buffers. +// Length is the combined lengths of all the buffers in the list. +// This function is designed to be inlinable, so please take care when making +// changes to the function body. +function fromList(n, state) { + // nothing buffered + if (state.length === 0) return null; + + var ret; + if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) { + // read it all, truncate the list + if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.head.data;else ret = state.buffer.concat(state.length); + state.buffer.clear(); + } else { + // read part of list + ret = fromListPartial(n, state.buffer, state.decoder); + } + + return ret; +} + +// Extracts only enough buffered data to satisfy the amount requested. +// This function is designed to be inlinable, so please take care when making +// changes to the function body. +function fromListPartial(n, list, hasStrings) { + var ret; + if (n < list.head.data.length) { + // slice is the same for buffers and strings + ret = list.head.data.slice(0, n); + list.head.data = list.head.data.slice(n); + } else if (n === list.head.data.length) { + // first chunk is a perfect match + ret = list.shift(); + } else { + // result spans more than one buffer + ret = hasStrings ? copyFromBufferString(n, list) : copyFromBuffer(n, list); + } + return ret; +} + +// Copies a specified amount of characters from the list of buffered data +// chunks. +// This function is designed to be inlinable, so please take care when making +// changes to the function body. +function copyFromBufferString(n, list) { + var p = list.head; + var c = 1; + var ret = p.data; + n -= ret.length; + while (p = p.next) { + var str = p.data; + var nb = n > str.length ? str.length : n; + if (nb === str.length) ret += str;else ret += str.slice(0, n); + n -= nb; + if (n === 0) { + if (nb === str.length) { + ++c; + if (p.next) list.head = p.next;else list.head = list.tail = null; + } else { + list.head = p; + p.data = str.slice(nb); + } + break; + } + ++c; + } + list.length -= c; + return ret; +} + +// Copies a specified amount of bytes from the list of buffered data chunks. +// This function is designed to be inlinable, so please take care when making +// changes to the function body. +function copyFromBuffer(n, list) { + var ret = Buffer.allocUnsafe(n); + var p = list.head; + var c = 1; + p.data.copy(ret); + n -= p.data.length; + while (p = p.next) { + var buf = p.data; + var nb = n > buf.length ? buf.length : n; + buf.copy(ret, ret.length - n, 0, nb); + n -= nb; + if (n === 0) { + if (nb === buf.length) { + ++c; + if (p.next) list.head = p.next;else list.head = list.tail = null; + } else { + list.head = p; + p.data = buf.slice(nb); + } + break; + } + ++c; + } + list.length -= c; + return ret; +} + +function endReadable(stream) { + var state = stream._readableState; + + // If we get here before consuming all the bytes, then that is a + // bug in node. Should never happen. + if (state.length > 0) throw new Error('"endReadable()" called on non-empty stream'); + + if (!state.endEmitted) { + state.ended = true; + processNextTick(endReadableNT, state, stream); + } +} + +function endReadableNT(state, stream) { + // Check that we didn't get one last unshift. + if (!state.endEmitted && state.length === 0) { + state.endEmitted = true; + stream.readable = false; + stream.emit('end'); + } +} + +function forEach(xs, f) { + for (var i = 0, l = xs.length; i < l; i++) { + f(xs[i], i); + } +} + +function indexOf(xs, x) { + for (var i = 0, l = xs.length; i < l; i++) { + if (xs[i] === x) return i; + } + return -1; +} +/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(2), __webpack_require__(5))) + +/***/ }), +/* 17 */ +/***/ (function(module, exports, __webpack_require__) { + +module.exports = __webpack_require__(8).EventEmitter; + + +/***/ }), +/* 18 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +/**/ + +var processNextTick = __webpack_require__(6); +/**/ + +// undocumented cb() API, needed for core, not for public API +function destroy(err, cb) { + var _this = this; + + var readableDestroyed = this._readableState && this._readableState.destroyed; + var writableDestroyed = this._writableState && this._writableState.destroyed; + + if (readableDestroyed || writableDestroyed) { + if (cb) { + cb(err); + } else if (err && (!this._writableState || !this._writableState.errorEmitted)) { + processNextTick(emitErrorNT, this, err); + } + return; + } + + // we set destroyed to true before firing error callbacks in order + // to make it re-entrance safe in case destroy() is called within callbacks + + if (this._readableState) { + this._readableState.destroyed = true; + } + + // if this is a duplex stream mark the writable part as destroyed as well + if (this._writableState) { + this._writableState.destroyed = true; + } + + this._destroy(err || null, function (err) { + if (!cb && err) { + processNextTick(emitErrorNT, _this, err); + if (_this._writableState) { + _this._writableState.errorEmitted = true; + } + } else if (cb) { + cb(err); + } + }); +} + +function undestroy() { + if (this._readableState) { + this._readableState.destroyed = false; + this._readableState.reading = false; + this._readableState.ended = false; + this._readableState.endEmitted = false; + } + + if (this._writableState) { + this._writableState.destroyed = false; + this._writableState.ended = false; + this._writableState.ending = false; + this._writableState.finished = false; + this._writableState.errorEmitted = false; + } +} + +function emitErrorNT(self, err) { + self.emit('error', err); +} + +module.exports = { + destroy: destroy, + undestroy: undestroy +}; + +/***/ }), +/* 19 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + +// a transform stream is a readable/writable stream where you do +// something with the data. Sometimes it's called a "filter", +// but that's not a great name for it, since that implies a thing where +// some bits pass through, and others are simply ignored. (That would +// be a valid example of a transform, of course.) +// +// While the output is causally related to the input, it's not a +// necessarily symmetric or synchronous transformation. For example, +// a zlib stream might take multiple plain-text writes(), and then +// emit a single compressed chunk some time in the future. +// +// Here's how this works: +// +// The Transform stream has all the aspects of the readable and writable +// stream classes. When you write(chunk), that calls _write(chunk,cb) +// internally, and returns false if there's a lot of pending writes +// buffered up. When you call read(), that calls _read(n) until +// there's enough pending readable data buffered up. +// +// In a transform stream, the written data is placed in a buffer. When +// _read(n) is called, it transforms the queued up data, calling the +// buffered _write cb's as it consumes chunks. If consuming a single +// written chunk would result in multiple output chunks, then the first +// outputted bit calls the readcb, and subsequent chunks just go into +// the read buffer, and will cause it to emit 'readable' if necessary. +// +// This way, back-pressure is actually determined by the reading side, +// since _read has to be called to start processing a new chunk. However, +// a pathological inflate type of transform can cause excessive buffering +// here. For example, imagine a stream where every byte of input is +// interpreted as an integer from 0-255, and then results in that many +// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in +// 1kb of data being output. In this case, you could write a very small +// amount of input, and end up with a very large amount of output. In +// such a pathological inflating mechanism, there'd be no way to tell +// the system to stop doing the transform. A single 4MB write could +// cause the system to run out of memory. +// +// However, even in such a pathological case, only a single written chunk +// would be consumed, and then the rest would wait (un-transformed) until +// the results of the previous transformed chunk were consumed. + + + +module.exports = Transform; + +var Duplex = __webpack_require__(0); + +/**/ +var util = __webpack_require__(3); +util.inherits = __webpack_require__(1); +/**/ + +util.inherits(Transform, Duplex); + +function TransformState(stream) { + this.afterTransform = function (er, data) { + return afterTransform(stream, er, data); + }; + + this.needTransform = false; + this.transforming = false; + this.writecb = null; + this.writechunk = null; + this.writeencoding = null; +} + +function afterTransform(stream, er, data) { + var ts = stream._transformState; + ts.transforming = false; + + var cb = ts.writecb; + + if (!cb) { + return stream.emit('error', new Error('write callback called multiple times')); + } + + ts.writechunk = null; + ts.writecb = null; + + if (data !== null && data !== undefined) stream.push(data); + + cb(er); + + var rs = stream._readableState; + rs.reading = false; + if (rs.needReadable || rs.length < rs.highWaterMark) { + stream._read(rs.highWaterMark); + } +} + +function Transform(options) { + if (!(this instanceof Transform)) return new Transform(options); + + Duplex.call(this, options); + + this._transformState = new TransformState(this); + + var stream = this; + + // start out asking for a readable event once data is transformed. + this._readableState.needReadable = true; + + // we have implemented the _read method, and done the other things + // that Readable wants before the first _read call, so unset the + // sync guard flag. + this._readableState.sync = false; + + if (options) { + if (typeof options.transform === 'function') this._transform = options.transform; + + if (typeof options.flush === 'function') this._flush = options.flush; + } + + // When the writable side finishes, then flush out anything remaining. + this.once('prefinish', function () { + if (typeof this._flush === 'function') this._flush(function (er, data) { + done(stream, er, data); + });else done(stream); + }); +} + +Transform.prototype.push = function (chunk, encoding) { + this._transformState.needTransform = false; + return Duplex.prototype.push.call(this, chunk, encoding); +}; + +// This is the part where you do stuff! +// override this function in implementation classes. +// 'chunk' is an input chunk. +// +// Call `push(newChunk)` to pass along transformed output +// to the readable side. You may call 'push' zero or more times. +// +// Call `cb(err)` when you are done with this chunk. If you pass +// an error, then that'll put the hurt on the whole operation. If you +// never call cb(), then you'll never get another chunk. +Transform.prototype._transform = function (chunk, encoding, cb) { + throw new Error('_transform() is not implemented'); +}; + +Transform.prototype._write = function (chunk, encoding, cb) { + var ts = this._transformState; + ts.writecb = cb; + ts.writechunk = chunk; + ts.writeencoding = encoding; + if (!ts.transforming) { + var rs = this._readableState; + if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark); + } +}; + +// Doesn't matter what the args are here. +// _transform does all the work. +// That we got here means that the readable side wants more data. +Transform.prototype._read = function (n) { + var ts = this._transformState; + + if (ts.writechunk !== null && ts.writecb && !ts.transforming) { + ts.transforming = true; + this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform); + } else { + // mark that we need a transform, so that any data that comes in + // will get processed, now that we've asked for it. + ts.needTransform = true; + } +}; + +Transform.prototype._destroy = function (err, cb) { + var _this = this; + + Duplex.prototype._destroy.call(this, err, function (err2) { + cb(err2); + _this.emit('close'); + }); +}; + +function done(stream, er, data) { + if (er) return stream.emit('error', er); + + if (data !== null && data !== undefined) stream.push(data); + + // if there's nothing in the write buffer, then that means + // that nothing more will ever be provided + var ws = stream._writableState; + var ts = stream._transformState; + + if (ws.length) throw new Error('Calling transform done when ws.length != 0'); + + if (ts.transforming) throw new Error('Calling transform done when still transforming'); + + return stream.push(null); +} + +/***/ }), +/* 20 */ +/***/ (function(module, exports, __webpack_require__) { + +var helper = __webpack_require__(12); +var isArray = __webpack_require__(13).isArray; + +var currentElement, currentElementName; + +function validateOptions(userOptions) { + var options = helper.copyOptions(userOptions); + helper.ensureFlagExists('ignoreDeclaration', options); + helper.ensureFlagExists('ignoreInstruction', options); + helper.ensureFlagExists('ignoreAttributes', options); + helper.ensureFlagExists('ignoreText', options); + helper.ensureFlagExists('ignoreComment', options); + helper.ensureFlagExists('ignoreCdata', options); + helper.ensureFlagExists('ignoreDoctype', options); + helper.ensureFlagExists('compact', options); + helper.ensureFlagExists('indentText', options); + helper.ensureFlagExists('indentCdata', options); + helper.ensureFlagExists('indentAttributes', options); + helper.ensureFlagExists('indentInstruction', options); + helper.ensureFlagExists('fullTagEmptyElement', options); + helper.ensureFlagExists('noQuotesForNativeAttributes', options); + helper.ensureSpacesExists(options); + if (typeof options.spaces === 'number') { + options.spaces = Array(options.spaces + 1).join(' '); + } + helper.ensureKeyExists('declaration', options); + helper.ensureKeyExists('instruction', options); + helper.ensureKeyExists('attributes', options); + helper.ensureKeyExists('text', options); + helper.ensureKeyExists('comment', options); + helper.ensureKeyExists('cdata', options); + helper.ensureKeyExists('doctype', options); + helper.ensureKeyExists('type', options); + helper.ensureKeyExists('name', options); + helper.ensureKeyExists('elements', options); + helper.checkFnExists('doctype', options); + helper.checkFnExists('instruction', options); + helper.checkFnExists('cdata', options); + helper.checkFnExists('comment', options); + helper.checkFnExists('text', options); + helper.checkFnExists('instructionName', options); + helper.checkFnExists('elementName', options); + helper.checkFnExists('attributeName', options); + helper.checkFnExists('attributeValue', options); + helper.checkFnExists('attributes', options); + helper.checkFnExists('fullTagEmptyElement', options); + return options; +} + +function writeIndentation(options, depth, firstLine) { + return (!firstLine && options.spaces ? '\n' : '') + Array(depth + 1).join(options.spaces); +} + +function writeAttributes(attributes, options, depth) { + if (options.ignoreAttributes) { + return ''; + } + if ('attributesFn' in options) { + attributes = options.attributesFn(attributes, currentElementName, currentElement); + } + var key, attr, attrName, quote, result = ''; + for (key in attributes) { + if (attributes.hasOwnProperty(key)) { + quote = options.noQuotesForNativeAttributes && typeof attributes[key] !== 'string' ? '' : '"'; + attr = '' + attributes[key]; // ensure number and boolean are converted to String + attr = attr.replace(/"/g, '"'); + attrName = 'attributeNameFn' in options ? options.attributeNameFn(key, attr, currentElementName, currentElement) : key; + result += (options.spaces && options.indentAttributes? writeIndentation(options, depth+1, false) : ' '); + result += attrName + '=' + quote + ('attributeValueFn' in options ? options.attributeValueFn(attr, key, currentElementName, currentElement) : attr) + quote; + } + } + if (attributes && Object.keys(attributes).length && options.spaces && options.indentAttributes) { + result += writeIndentation(options, depth, false); + } + return result; +} + +function writeDeclaration(declaration, options, depth) { + currentElement = declaration; + currentElementName = 'xml'; + return options.ignoreDeclaration ? '' : ''; +} + +function writeInstruction(instruction, options, depth) { + if (options.ignoreInstruction) { + return ''; + } + var key; + for (key in instruction) { + if (instruction.hasOwnProperty(key)) { + break; + } + } + var instructionName = 'instructionNameFn' in options ? options.instructionNameFn(key, instruction[key], currentElementName, currentElement) : key; + if (typeof instruction[key] === 'object') { + currentElement = instruction; + currentElementName = instructionName; + return ''; + } else { + var instructionValue = instruction[key] ? instruction[key] : ''; + if ('instructionFn' in options) instructionValue = options.instructionFn(instructionValue, key, currentElementName, currentElement); + return ''; + } +} + +function writeComment(comment, options) { + return options.ignoreComment ? '' : ''; +} + +function writeCdata(cdata, options) { + return options.ignoreCdata ? '' : ''; +} + +function writeDoctype(doctype, options) { + return options.ignoreDoctype ? '' : ''; +} + +function writeText(text, options) { + if (options.ignoreText) return ''; + text = '' + text; // ensure Number and Boolean are converted to String + text = text.replace(/&/g, '&'); // desanitize to avoid double sanitization + text = text.replace(/&/g, '&').replace(//g, '>'); + return 'textFn' in options ? options.textFn(text, currentElementName, currentElement) : text; +} + +function hasContent(element, options) { + var i; + if (element.elements && element.elements.length) { + for (i = 0; i < element.elements.length; ++i) { + switch (element.elements[i][options.typeKey]) { + case 'text': + if (options.indentText) { + return true; + } + break; // skip to next key + case 'cdata': + if (options.indentCdata) { + return true; + } + break; // skip to next key + case 'instruction': + if (options.indentInstruction) { + return true; + } + break; // skip to next key + case 'doctype': + case 'comment': + case 'element': + return true; + default: + return true; + } + } + } + return false; +} + +function writeElement(element, options, depth) { + currentElement = element; + currentElementName = element.name; + var xml = '', elementName = 'elementNameFn' in options ? options.elementNameFn(element.name, element) : element.name; + xml += '<' + elementName; + if (element[options.attributesKey]) { + xml += writeAttributes(element[options.attributesKey], options, depth); + } + var withClosingTag = element[options.elementsKey] && element[options.elementsKey].length || element[options.attributesKey] && element[options.attributesKey]['xml:space'] === 'preserve'; + if (!withClosingTag) { + if ('fullTagEmptyElementFn' in options) { + withClosingTag = options.fullTagEmptyElementFn(element.name, element); + } else { + withClosingTag = options.fullTagEmptyElement; + } + } + if (withClosingTag) { + xml += '>'; + if (element[options.elementsKey] && element[options.elementsKey].length) { + xml += writeElements(element[options.elementsKey], options, depth + 1); + currentElement = element; + currentElementName = element.name; + } + xml += options.spaces && hasContent(element, options) ? '\n' + Array(depth + 1).join(options.spaces) : ''; + xml += ''; + } else { + xml += '/>'; + } + return xml; +} + +function writeElements(elements, options, depth, firstLine) { + return elements.reduce(function (xml, element) { + var indent = writeIndentation(options, depth, firstLine && !xml); + switch (element.type) { + case 'element': return xml + indent + writeElement(element, options, depth); + case 'comment': return xml + indent + writeComment(element[options.commentKey], options); + case 'doctype': return xml + indent + writeDoctype(element[options.doctypeKey], options); + case 'cdata': return xml + (options.indentCdata ? indent : '') + writeCdata(element[options.cdataKey], options); + case 'text': return xml + (options.indentText ? indent : '') + writeText(element[options.textKey], options); + case 'instruction': + var instruction = {}; + instruction[element[options.nameKey]] = element[options.attributesKey] ? element : element[options.instructionKey]; + return xml + (options.indentInstruction ? indent : '') + writeInstruction(instruction, options, depth); + } + }, ''); +} + +function hasContentCompact(element, options, anyContent) { + var key; + for (key in element) { + if (element.hasOwnProperty(key)) { + switch (key) { + case options.parentKey: + case options.attributesKey: + break; // skip to next key + case options.textKey: + if (options.indentText || anyContent) { + return true; + } + break; // skip to next key + case options.cdataKey: + if (options.indentCdata || anyContent) { + return true; + } + break; // skip to next key + case options.instructionKey: + if (options.indentInstruction || anyContent) { + return true; + } + break; // skip to next key + case options.doctypeKey: + case options.commentKey: + return true; + default: + return true; + } + } + } + return false; +} + +function writeElementCompact(element, name, options, depth, indent) { + currentElement = element; + currentElementName = name; + var elementName = 'elementNameFn' in options ? options.elementNameFn(name, element) : name; + if (typeof element === 'undefined' || element === null) { + return 'fullTagEmptyElementFn' in options && options.fullTagEmptyElementFn(name, element) || options.fullTagEmptyElement ? '<' + elementName + '>' : '<' + elementName + '/>'; + } + var xml = ''; + if (name) { + xml += '<' + elementName; + if (typeof element !== 'object') { + xml += '>' + writeText(element,options) + ''; + return xml; + } + if (element[options.attributesKey]) { + xml += writeAttributes(element[options.attributesKey], options, depth); + } + var withClosingTag = hasContentCompact(element, options, true) || element[options.attributesKey] && element[options.attributesKey]['xml:space'] === 'preserve'; + if (!withClosingTag) { + if ('fullTagEmptyElementFn' in options) { + withClosingTag = options.fullTagEmptyElementFn(name, element); + } else { + withClosingTag = options.fullTagEmptyElement; + } + } + if (withClosingTag) { + xml += '>'; + } else { + xml += '/>'; + return xml; + } + } + xml += writeElementsCompact(element, options, depth + 1, false); + currentElement = element; + currentElementName = name; + if (name) { + xml += (indent ? writeIndentation(options, depth, false) : '') + ''; + } + return xml; +} + +function writeElementsCompact(element, options, depth, firstLine) { + var i, key, nodes, xml = ''; + for (key in element) { + if (element.hasOwnProperty(key)) { + nodes = isArray(element[key]) ? element[key] : [element[key]]; + for (i = 0; i < nodes.length; ++i) { + switch (key) { + case options.declarationKey: xml += writeDeclaration(nodes[i], options, depth); break; + case options.instructionKey: xml += (options.indentInstruction ? writeIndentation(options, depth, firstLine) : '') + writeInstruction(nodes[i], options, depth); break; + case options.attributesKey: case options.parentKey: break; // skip + case options.textKey: xml += (options.indentText ? writeIndentation(options, depth, firstLine) : '') + writeText(nodes[i], options); break; + case options.cdataKey: xml += (options.indentCdata ? writeIndentation(options, depth, firstLine) : '') + writeCdata(nodes[i], options); break; + case options.doctypeKey: xml += writeIndentation(options, depth, firstLine) + writeDoctype(nodes[i], options); break; + case options.commentKey: xml += writeIndentation(options, depth, firstLine) + writeComment(nodes[i], options); break; + default: xml += writeIndentation(options, depth, firstLine) + writeElementCompact(nodes[i], key, options, depth, hasContentCompact(nodes[i], options)); + } + firstLine = firstLine && !xml; + } + } + } + return xml; +} + +module.exports = function (js, options) { + options = validateOptions(options); + var xml = ''; + currentElement = js; + currentElementName = '_root_'; + if (options.compact) { + xml = writeElementsCompact(js, options, 0, true); + } else { + if (js[options.declarationKey]) { + xml += writeDeclaration(js[options.declarationKey], options, 0); + } + if (js[options.elementsKey] && js[options.elementsKey].length) { + xml += writeElements(js[options.elementsKey], options, 0, !xml); + } + } + return xml; +}; + + +/***/ }), +/* 21 */ +/***/ (function(module, exports, __webpack_require__) { + +/*jslint node:true */ + +var xml2js = __webpack_require__(14); +var xml2json = __webpack_require__(36); +var js2xml = __webpack_require__(20); +var json2xml = __webpack_require__(37); + +module.exports = { + xml2js: xml2js, + xml2json: xml2json, + js2xml: js2xml, + json2xml: json2xml +}; + + +/***/ }), +/* 22 */ +/***/ (function(module, exports, __webpack_require__) { + +/* WEBPACK VAR INJECTION */(function(Buffer) {;(function (sax) { // wrapper for non-node envs + sax.parser = function (strict, opt) { return new SAXParser(strict, opt) } + sax.SAXParser = SAXParser + sax.SAXStream = SAXStream + sax.createStream = createStream + + // When we pass the MAX_BUFFER_LENGTH position, start checking for buffer overruns. + // When we check, schedule the next check for MAX_BUFFER_LENGTH - (max(buffer lengths)), + // since that's the earliest that a buffer overrun could occur. This way, checks are + // as rare as required, but as often as necessary to ensure never crossing this bound. + // Furthermore, buffers are only tested at most once per write(), so passing a very + // large string into write() might have undesirable effects, but this is manageable by + // the caller, so it is assumed to be safe. Thus, a call to write() may, in the extreme + // edge case, result in creating at most one complete copy of the string passed in. + // Set to Infinity to have unlimited buffers. + sax.MAX_BUFFER_LENGTH = 64 * 1024 + + var buffers = [ + 'comment', 'sgmlDecl', 'textNode', 'tagName', 'doctype', + 'procInstName', 'procInstBody', 'entity', 'attribName', + 'attribValue', 'cdata', 'script' + ] + + sax.EVENTS = [ + 'text', + 'processinginstruction', + 'sgmldeclaration', + 'doctype', + 'comment', + 'opentagstart', + 'attribute', + 'opentag', + 'closetag', + 'opencdata', + 'cdata', + 'closecdata', + 'error', + 'end', + 'ready', + 'script', + 'opennamespace', + 'closenamespace' + ] + + function SAXParser (strict, opt) { + if (!(this instanceof SAXParser)) { + return new SAXParser(strict, opt) + } + + var parser = this + clearBuffers(parser) + parser.q = parser.c = '' + parser.bufferCheckPosition = sax.MAX_BUFFER_LENGTH + parser.opt = opt || {} + parser.opt.lowercase = parser.opt.lowercase || parser.opt.lowercasetags + parser.looseCase = parser.opt.lowercase ? 'toLowerCase' : 'toUpperCase' + parser.tags = [] + parser.closed = parser.closedRoot = parser.sawRoot = false + parser.tag = parser.error = null + parser.strict = !!strict + parser.noscript = !!(strict || parser.opt.noscript) + parser.state = S.BEGIN + parser.strictEntities = parser.opt.strictEntities + parser.ENTITIES = parser.strictEntities ? Object.create(sax.XML_ENTITIES) : Object.create(sax.ENTITIES) + parser.attribList = [] + + // namespaces form a prototype chain. + // it always points at the current tag, + // which protos to its parent tag. + if (parser.opt.xmlns) { + parser.ns = Object.create(rootNS) + } + + // mostly just for error reporting + parser.trackPosition = parser.opt.position !== false + if (parser.trackPosition) { + parser.position = parser.line = parser.column = 0 + } + emit(parser, 'onready') + } + + if (!Object.create) { + Object.create = function (o) { + function F () {} + F.prototype = o + var newf = new F() + return newf + } + } + + if (!Object.keys) { + Object.keys = function (o) { + var a = [] + for (var i in o) if (o.hasOwnProperty(i)) a.push(i) + return a + } + } + + function checkBufferLength (parser) { + var maxAllowed = Math.max(sax.MAX_BUFFER_LENGTH, 10) + var maxActual = 0 + for (var i = 0, l = buffers.length; i < l; i++) { + var len = parser[buffers[i]].length + if (len > maxAllowed) { + // Text/cdata nodes can get big, and since they're buffered, + // we can get here under normal conditions. + // Avoid issues by emitting the text node now, + // so at least it won't get any bigger. + switch (buffers[i]) { + case 'textNode': + closeText(parser) + break + + case 'cdata': + emitNode(parser, 'oncdata', parser.cdata) + parser.cdata = '' + break + + case 'script': + emitNode(parser, 'onscript', parser.script) + parser.script = '' + break + + default: + error(parser, 'Max buffer length exceeded: ' + buffers[i]) + } + } + maxActual = Math.max(maxActual, len) + } + // schedule the next check for the earliest possible buffer overrun. + var m = sax.MAX_BUFFER_LENGTH - maxActual + parser.bufferCheckPosition = m + parser.position + } + + function clearBuffers (parser) { + for (var i = 0, l = buffers.length; i < l; i++) { + parser[buffers[i]] = '' + } + } + + function flushBuffers (parser) { + closeText(parser) + if (parser.cdata !== '') { + emitNode(parser, 'oncdata', parser.cdata) + parser.cdata = '' + } + if (parser.script !== '') { + emitNode(parser, 'onscript', parser.script) + parser.script = '' + } + } + + SAXParser.prototype = { + end: function () { end(this) }, + write: write, + resume: function () { this.error = null; return this }, + close: function () { return this.write(null) }, + flush: function () { flushBuffers(this) } + } + + var Stream + try { + Stream = __webpack_require__(25).Stream + } catch (ex) { + Stream = function () {} + } + + var streamWraps = sax.EVENTS.filter(function (ev) { + return ev !== 'error' && ev !== 'end' + }) + + function createStream (strict, opt) { + return new SAXStream(strict, opt) + } + + function SAXStream (strict, opt) { + if (!(this instanceof SAXStream)) { + return new SAXStream(strict, opt) + } + + Stream.apply(this) + + this._parser = new SAXParser(strict, opt) + this.writable = true + this.readable = true + + var me = this + + this._parser.onend = function () { + me.emit('end') + } + + this._parser.onerror = function (er) { + me.emit('error', er) + + // if didn't throw, then means error was handled. + // go ahead and clear error, so we can write again. + me._parser.error = null + } + + this._decoder = null + + streamWraps.forEach(function (ev) { + Object.defineProperty(me, 'on' + ev, { + get: function () { + return me._parser['on' + ev] + }, + set: function (h) { + if (!h) { + me.removeAllListeners(ev) + me._parser['on' + ev] = h + return h + } + me.on(ev, h) + }, + enumerable: true, + configurable: false + }) + }) + } + + SAXStream.prototype = Object.create(Stream.prototype, { + constructor: { + value: SAXStream + } + }) + + SAXStream.prototype.write = function (data) { + if (typeof Buffer === 'function' && + typeof Buffer.isBuffer === 'function' && + Buffer.isBuffer(data)) { + if (!this._decoder) { + var SD = __webpack_require__(11).StringDecoder + this._decoder = new SD('utf8') + } + data = this._decoder.write(data) + } + + this._parser.write(data.toString()) + this.emit('data', data) + return true + } + + SAXStream.prototype.end = function (chunk) { + if (chunk && chunk.length) { + this.write(chunk) + } + this._parser.end() + return true + } + + SAXStream.prototype.on = function (ev, handler) { + var me = this + if (!me._parser['on' + ev] && streamWraps.indexOf(ev) !== -1) { + me._parser['on' + ev] = function () { + var args = arguments.length === 1 ? [arguments[0]] : Array.apply(null, arguments) + args.splice(0, 0, ev) + me.emit.apply(me, args) + } + } + + return Stream.prototype.on.call(me, ev, handler) + } + + // this really needs to be replaced with character classes. + // XML allows all manner of ridiculous numbers and digits. + var CDATA = '[CDATA[' + var DOCTYPE = 'DOCTYPE' + var XML_NAMESPACE = 'http://www.w3.org/XML/1998/namespace' + var XMLNS_NAMESPACE = 'http://www.w3.org/2000/xmlns/' + var rootNS = { xml: XML_NAMESPACE, xmlns: XMLNS_NAMESPACE } + + // http://www.w3.org/TR/REC-xml/#NT-NameStartChar + // This implementation works on strings, a single character at a time + // as such, it cannot ever support astral-plane characters (10000-EFFFF) + // without a significant breaking change to either this parser, or the + // JavaScript language. Implementation of an emoji-capable xml parser + // is left as an exercise for the reader. + var nameStart = /[:_A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]/ + + var nameBody = /[:_A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\u00B7\u0300-\u036F\u203F-\u2040.\d-]/ + + var entityStart = /[#:_A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]/ + var entityBody = /[#:_A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\u00B7\u0300-\u036F\u203F-\u2040.\d-]/ + + function isWhitespace (c) { + return c === ' ' || c === '\n' || c === '\r' || c === '\t' + } + + function isQuote (c) { + return c === '"' || c === '\'' + } + + function isAttribEnd (c) { + return c === '>' || isWhitespace(c) + } + + function isMatch (regex, c) { + return regex.test(c) + } + + function notMatch (regex, c) { + return !isMatch(regex, c) + } + + var S = 0 + sax.STATE = { + BEGIN: S++, // leading byte order mark or whitespace + BEGIN_WHITESPACE: S++, // leading whitespace + TEXT: S++, // general stuff + TEXT_ENTITY: S++, // & and such. + OPEN_WAKA: S++, // < + SGML_DECL: S++, // + SCRIPT: S++, //

        3^P8ws0h?+hSrsF%)TDSb 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%0DA#9l-535o-`wex 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¬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∨=M*KHb@p=2P3(w`x zSH-^z@vpc2m?u=RCfm?%Dt|U0{$lX01fB&j9Fg@B{q(?h;I|9d2XNhJoZ~=RX`CZ9 zx3M3q(ep6kP&yyI2|XR)y#ijlC@kNA?`Pmw!HX#i>H`|v_|-zz%qcRoAW&m2@_yVjAC~I&jGwIy7?>go3^2CLY-{wU}FuzGXw!w zpn&|2FcDG|%LI6N;XLO#3(EIz@QX-_V!eS*zzNLBtP=gtTN)eK2ou(;I_Ov}^pWgc zP!7RM?c7X+UjRG-5HHnh|AF79z^}kDU|xT;>v-sZ&tE&mea_cu&m-@oZZ@_-mF~if z0Co{^SVLdB#keluJ{*gHe+)onk=IGzqE2#v=Y5rai3no>tN`hkAksY=esh4wfQNz7 zEWEqnRz*LTN=d( zv1XxF^DnZIPd{vRd4<|3$#`gILpVkA1(W$N05iiW1qdH+T=J@}U*@Ism-^(wF*2bKv(N@C>jLQ1=VI75x~}SL$hFSHX+!2U~B% zya>YY1x^9PJ5c05Jrd@-{!N-j zu@oR3pnSMf;njD8UoT)G_`LmM#D88De*lh;1f~L1eoB=10Z$o%*b4Zs0o3>35cGkp zx7wIT#q%n{ya#*^5Kn>N;qz1H;UCaU;gRB%cQ;#cjjjD{tWLPEzgHJwngSUB<a993~kCW13S=4dCrNiTk!kaT54l|iS(m+ zV|~(4X8;oby6(+*M&LW^3*ff`a00x3%uYuiAJ@tu?rk2(I>W}2BC6)+D~Ln+nGDDE z=BJ%20pkSk0Ku!)^L6l&p3*h+bgJ}p&a`2yT~*J|ReC1fgq~~``ssrA1mYhA-_O8b zDn0S~HEsf%TQCm;3bSb2{!9fb`rg^vr~x4Y&>9{i?_E6+Kr;R@lccJuf2;r9b}$^rZA#AGWc`T2=GaqvGv%1H6=e zCwQ|2FFrBK3~exX0ki=q{n)b3P2dvvy$E~+@Ne#&#xo7cE%oe(Th9iF@?>3R!<<%C zJx?JHr5{sw*L{Cd`kml?wi@2ED&9snz)R_8kJ{K5f_D(&{{uc#TjT*i>BrQHoc_-6 z%L9f2yj?2!0C~^?^S!w5=ZWj@SZ-sw=&I?TfH;(XzR%`*>nBRT8@w6S@J?3o>TiIT z(r;a1V}*iO-QGrFrD=>+cw)#$lG zrRT5L&{I3rPA&Qzo4t13Nzy9qtnN*ilbTe<%85Pu8!T)<8hFQ)If3EU6AZvoy% zra1{-kMcPQCwTe`9v+zL(H~Vj-@*Sz^N~G){s?$!zW5jLod(VUya@Alz8x>97{3Ly z!+ij7BS8kGR(-!+5&F%1{ObnqlPcb1gdYIh1`sdp7qGWS9SZd55XCwJHZ0J@XDj_h zE3OgG1O9y`d0e>B#@+)j%^MCy_|d>vfbJ*$d^L=*6n;yAn)W+8%F%v;kB_goS&i_o z0G|M)=N6Iv-W|~v0!x7TfNekS_kD_fF}0L7kGC0o++ckL?Pwj}eg87TzYXjG=stQ( z;SD$qKh_CzDgYm2O&X@Oqjsd-vDwCMQSnF!lMHkQi01{tQv|=MfCJ$5k%aLz&pR7* zv%YF$_khRF6A7~dVb%c~0pgh@^6eb_k~>GS!NA>Xb!;cVc|x};e05f$U4IkT0em#C zGag|d1Qr35Z|yiS%FSQ!tCy*in@*6nBN(3poRiF~K`8UcJL@(Z`w6^seX|k1FE9om zJ;nP3jL*Z*1sn!`LZ;8lRyZA^%f)PGvMTugB*MmZ!B`g{zA&yZ%1dBZ z%&P@>zLT)*UF%C-F{8R_0{V;#VUp^|K_AZ$`Mtg!&Z_qLL5V>fFQdjkl} z!dk`8=xe>9@XZ!{4m>+;ciZsoJYPBKiLj%9aRBjcQ1}9t!tZ(D9f0?T^HD)_{o-+5 ztUqEtjO(SS#oj}hBfz%+T@O4u$Bk)Dca%loEbu3A4i);mXZhY@ykA^gWBP8p^G_T5 z9lSAuw{{QAj{ze9;vKH!pQ%N56q^C;0(Jn&fjYJqdr!EI=fpk*ejm&C#|0a!ThGUP z8R0{6qF8N!c-ITweE5wA76A_cW6;kU_>Gcwr>cJ7ywYXNYp8gg2)`M42OwUT;Qa=E zzXL(Js5<~VHU!xBD7={>A4p&K6&u^G;*CQ1hCow*c(Lu38`C@ROV7i46Yw-}H^x^# zol(k=OX$n@!}I53Sa45vT*bQ$;Xehw0EjnTDITUW8|D^(7Cmup;Ei^;Uid~N&tJEO z*IKtH3y;Abd|4&rIl|k4F#z!n7rf1S!5?@QcnUayca~dG{y8suNV)efKvzt~GFQW% zEDyX?9`+#oVc<`Icrl&8jcHnM+)uzNU^#FCH?@R3UWGnl<|ak&dARTSbz@C?vZ3Im z^7|9Qp9ieB_;}IWaAUf=57w}N&V8}o3P>jG*}+(bum6u!dcye0N%z`Pi(u$_bTxo@q$B^4Rxp<7u6RwXs-I3N52Y7j$e> zFt+X34#DHoJ6WXeo_cNDdmXzSCvgJn!hV*DNXJYqpx8}9UEwZ$` zwg32AyO?GDf>UGx&5F7d%`PHOq@!fQq@rnE#ubuR>9h%xc~ZNSPMbmDdgS#RmD4w? z`z<-yT`VGCUcapVJ#1YHCXZ>?#_QE@K$l4qrp%b_^~maz-L6fSnd!n~X5sWM$U@)0 z)M-UCCrqDEJf%y=j_t-Etp)81MrX7g-LC!U4wm$cjG~M&Z3;RdAKJEW+cCXEQTvXn zxTO;&7j;2awN9~QAj<}(x9`-pO{a9rFjW|&c*58TMPs^*EtoXD$b2!QNBaC2X&Sq~ zdt_GKBiJveHJ(nLJDGKoS!ceR1+vVn%^YFjyq>uo+7~FYBV=|#X;CK$ z@o)xNf47Hs!|)!af7Z+Yk9dyCGTDQX3B~~R2GrwHs@F!A``3Ba@&AsxYwB{DA3rx< z4!3dEMlRXLR7AVF?{&obQk$x^a> zyt&j|mYD;3^zWHJkY)DF?Vr^rhxIR*mJ}!E0eL)bB-!@K0E5AxH|Purc|F5C?+?B@r~NZZF93T~MLeo-tm41F<2G@e>&;DVMKC_s#!a#!yyN~w`F-=k%yDv= z;g_?|!0}@c#HgeJkv@77E7f>yye1yHnO@_;zGZGm&V}0obOe%sdw~Lgud7M`|DOe5 zxbF?8lu%Koc(K~Nf8ui%V<=`o(Z2aXD<)@BQ!2}DFos-`` zr$^Sn9DXCfnB|)!r*F0-|7GKfrxnjAoiL?H{O?gbWlB+DDXJpnc$1|30V!Eyibogm zJA|=Du4b-GW^zTj0_Fb-U-z86o_!_R!)wX6l3WhB7f%J3x&8X{;Rnm=i5COG;C!V; zQ%X|?&M7J4|0x{F{vuq~;GR-V$8XCToWqavT7h3T$_JLMW4XCH-~al(>tlyq{kvhy zW<2)D-r+m$s(%(ouGII?@wobNI@TaA5w>h<&&55sIp%zf^52Qc+5G^WZ*zo>eGJfl zUQqi1-v5Z#8Swtc*t!`&|J{iDw>o~SRO~djv>FMU8w>8>UI2y9vaGb|*wdD^uw_%0 zQl?{RWofXv*_;S%0SfPcu4`2K=3}fi6QJX6to2*~=)X1S_8=V_88i|$H`XaS_9Q^Z z9l<)b7NGxjIFM64X_s&#`gWMjiWf z<5#e`aUgGws`4iv*K)4vdLF~EbE@MO=sr}Xe?D}1PNk2d{tlEZSNtBi2FD5Ng`$oR zuUA{H=~1`GPR8!flGsw%^7+f(FW0ee%8$b4Mi<^GT*s{8x5HLUBGNjSt)&z@A6|zq z`K;RwTQ)d%p6dKBAsz?C#<}6(++m}~k3pjzwrU%3AO;tPoh<9A9$1mCd2jV>JfCw%8yZFmQ5(e}jcD5KnH|7-Qt z9>07R=L6_`lMAMo7EP0;7Zpw`Dh1!fqB&C0?2>{hymy8FY3O&R&6rj&WlZs8e!k44 z?0!844$aSzluiTHJ6!S_i|U`-a=Paa&d2k8lO~|LlEzM$GGY4oqA_fG(X^R3pZ7oK zBYR`B|s+9CCS?&gpL zAXp;6n-UIwEDVqYvLJc;Q~>aHE3IT&abeo@qDf=Z3TDin$p#`zrjIR}mXb525Piid z;}Aw|e$)SsS|cz$EggFd(s#hFY@E^OqjBd&Uxi(=X~!n*@gEGQaF;t;okcx%v6V;E zW((;|_6c`V(h9z3F0= z^RvjcD5dVQ3NYKt=Zd?@8=cwfO~M^GrCtf_Y4xUyyU};tk}?jjsV`0`fju{6F6_$2 zg5H6SWwBh?1#B$r%H}P$z_4FGA$ltE=j+(7#og@-^I*(;+$S+fsY!L&QRH$L{Kg zG6a}{0)vb}x&U3E&S(fU7_?(=t*myjMP;54VYf`bSyt;0=2L zfaxu-;pLGB=F?N^a!CQy@zv#&j$_JBHoV`@&3(!ZiaS&>7=j{mxcYDodygTJp0G>sV;{f&X zpNjGCA*?r|ldXe1_;BUpj(XqWo_5#!753?R7r8suqrMAk=~xuNIin%F3OAj9GyeZ3 z{7yq&)Et+P;~fDWzZ)cnT0fT=dx!w;_dDd@!cF}ALuWeyetZw)A>sBOM}H+-^sDkA zhYB|xcLeF!GXRgj0rC~$_8yPjgw$@1{Sfwkx&HY+_NY4jwRP-vfX5#JSs>gL{}}SO z1bMzRi?OMYmtRxD(s72`y%E6Ur$D9&HywB4{|CZvFXTbZ@y!7`_9ejMAA!6q+!Wt| z|4$1)CuEuCI9?*b>We&2gyi5{WE^#LYzx5s-iG{6xas(Ql(!S2%$kxE^ndYvO|ZP;-4;=->P$`r#f(4qt5aGm+nWM4s=5{7RGm z4&>L{UH4WyJY<|c`ihX8;M@9J??JUbK@4lUKY0+wlnS}*m(c2Zo08W;H-!_ z*j)L1y>+M`?vRQRzj>n;jrj3?hEY+G;r6IE>J2n*saGUz4jPm0^kjZ|+H=9fkB?&A zBzK}!8YtCftt;A~x7(+pAM9?PZu0SWS*$cNF+u7iB``y3V5**(Q^Qj6yk%-qY5?L( z%*h;>;b9U+RFWBIPLoDSXcaBY!uhKjDc;(_-q=y%oaC~(2eM<*RqI#wU5-bckGRU* zTOwmaLkzV8A`+v5jrGHIbsNM4)nb7O^}?d{appSlCZ%_)jJLUa>+wr3ZK(ImytD6o z^!}B?CbzE2+w)t-8;fs0d~oRZhrWBI!`=0>R==M9-gA~=pMG`klNrWcf3$76B(lr4 zkPk0zi)r6!_{lSGq(A>edExMni?*My_l4n)FV7E;E37r-(3*dq`~KqhG;Kr4z}@9D zN=vQSe5ApTsQr8)QMZd@MuTZtf=rO2wr7%kk5`P zMti)0@Yf#aWr!Q2BC5ov{++-0RHgVkPWdOY z!7J!`xiTt`Y{;JiI#yOLKjcs0tj(f*Z0Nl7-@ZsmA8JF?g*r(u z8KeLyP%=s;DM$)N&B*ITnZDZi*Sda=`ZhV9V~2BxW9_mXj-_ZMjc*GrZ2zxr6* z_m+JB$FApyQV;qK`Kylg2DpCtkVA!gB;+XJ_8XTUKnoWK@c0RkErr_x*-f}>jE@?; zkLV-yhb$KExsV*%eA9ASbvm{L;NhH*>JbCqw#j=1#&&Dkb{KV4mnP^)#uZ?OE8166yWif zLv9f6GRQZDTN_9H-x;i9Zvj01R>;qU`wK{qaI3>taic%q3*hnlK`s#PrI2fdyGk6j zM~n_V$bc9l_KKTg!r_jLiG?l2@ULn(V#;CHWUO~!RvF--?2r?LdkSQ+aMu*yiC*6Z zfX6R~JS^ONX5}a0t|`7FRL5QeczhS+8R5PJ=@IT4<752#s2IbphFl}uWst83cTMrx z5xj@yYvue;L9P|M|w(iOfF_LkVU zaK-);yQTc{vNy}$!BfodmTxVux%^oE(y^WZ50wu&LAXmG7YVn2?eWf479&kgtS`kw z^F*nm6vykByRr~A8c<5Tab}b|IW4!)rMEfGzL9f3bhc-U- zKir3|ubtAyXX5-f8=u-o(!-D1@^$lf?0Wn+JHvZ5t8Zja$1J__!a>v_q1)DsJY{0f z+~QdO_=6^va3#Q&@phHeRiV~~p#Fouei9K->7@SfJUSp`lIFkm@3rDL)JD+!zgGN4 zn(*4cly2&;)A*x_HsCe>lO80g|Hgiomv^rb+c(bf2HdBVTf2~6e?JaN2OV~Oro?v` zc9B<&QXAj;%71r$_rm`!{`KBJlqjwKj!#7T7b}v&`IB_rNK(0XKhw`&luG{E^V5B= z9p_Yvr26A8KIx$fTG<&O{?dRkQv8>MvTd_>MFf-% zD;=m=hKs{g|M-*sSnzz2Y-$M^A*9$o?Axaz{I#N?@JJLA+pJ}St=6)keLmu^UqR)L zB$XeBX^7uA@_~SPnD1K>NBlzcm|G^yPUyqjDV`L}4X$5{S-;eZG+K48!u71> zk_Gz`EFRdW(>>{!70;;1fEKN9YmK>2Pciy0Q$0`n?ZxcUeXKKJu&^+3Wx}GwrHOc} zZ{k|m8xvoFy)|)PBHnMBcm-}hCM*;yEa731uxo{7!_Ez}!R{5-5B9*YLfB)&=EC-4 zBJv{81B#dgduqfJuvbTHg}psuAM8&f4#55@;%nH|o0D}4m3>NDEqFZQxS9A2 zZ=7LF%EHsa-7({l&8+dcEdPT%*0{8%V`WTlY3ue|k|$2-dr@Df+IfH$%~GWHt=q;o z&uEmI)TC9L2A1UXgvKq~MFhk~2kYV@14HTsg_`hOw!s{3tX-cT)9@xkJwK{;?B zRnJ;}I*-5jT{Q729K|C^{=~1X4@ocT*HAo?6raNR)1SgoJd)(EjZgZMKZT=sTB!|3 z{ZE>wb}gv69j5eqc}2TL^{Bsg2$iR7FjXKM@$F=W*Sg9Ej~dDb%TU!D)VM)np27^- zPPjWj<_LE_=59 zyae}^NDu5~@&CaYx5e*(%~G1AU{xDC9%)uwMRE+!Tmk%?7RWBbZH4S9+~t3+W{HkT_@{&XXMxajA?6Pj3-=?)BY>YnYxw+EDZr0qVJ(mE>EmI|ayJTR=mzq~si|cXbKs3Hwa)UKJ78qcVCI26&55RGGeNVl{#}9F%N6G`3 zUP2_ehQveS>J14EU`-_h{zFOvB!;QR8QfD=H}%SClrM+oMV*j~O+6!ktB024%lhXL$4dDzkwn zfGxlQ;4Bb@i)#V;0+acLR+&cw_aO832mS{8RNy(-376Ypze$J7nXtQFwqDk=tjj%M zXJ5{Rop-sPdN&H&soSl?7aDaR!v09N5B6WWv#=eB3()6SmiPp0XW|CfuP1(hzR20c zvv5~6R8P|pfB8q_A__;cN_^4(rF^IQ$6tS%uAf&o(cVyeZ$0>9_4Qzt^HcjJ=IO6h z4z%&TBt0nIriglp&C=R;Glth~&@{DO*TAqk2~ASkb_ocr9j^et_Fe7*#)HpF|q=cjc?;_w%r+E2WXy`xjP<(&sr*JnLpY*ud_}Vt)M)jw4aXLRq ztzK2`-<><qwGy}Yj2!U)X{M$oz5bjLKZUE`a zKe}}X!1XSHyj!>(kPC%-8RTl=UIV#SxaG9Fb<7Cx_(6~{!d)LSNw^z9HWu!tkS&Cp z$FI8IIuJ7=dhd)#XWsEs^|7@xB92-*HXq>UUkJGv;OTz|@)6;`6!K}|UJF?!-2D7( zBF0$&kDm`YRJd=4ED-KO$XUXD59Cte=FztY9}bRXT|;gQiDlbE4#R#w^k8T--hJ9N zY&^Ry?6a`h>}Xiq`h&wlrBqA9$TZ6{p5o8ede(aQ8S#2v)(k!OP56EXz9T0kO4$91 zy=^+yJvG$wkuJ;5@BamWMdXi?=g7-*=SFph(Ced0o~JdJ@s+A@%pFrZP{!3 zvxY3);D8|kdNw*?WkMUaE@5Lr0844`af4^rRLPcfnDtD$yH)E-Rk5~Sr*cmHCaOQ& z?`iG}ITgygxw%tG6=T-rmBUee?B)3nUQDktRQ@TxgX#^<{Y&+sV?Q4)Fed$%hE&j| zpYC7E2PW=6S{I;nWOeV6os*kq>)EUKEq(g-%fGe%fPsSs-!^3Eu!7NrV~WO(8$aQW ziIXNzDK42hZF=d9nX_ikxf4$!w{Fw6UHc9lTc*+ZtE6AllWuDFepK?)A@qX!G59!Oqc!1h->K{8cD*5Kvdz1O2ng6mrA^0@sqkb*vsg-m+ zwdIHI8=4QN_L;vHh?{zfz&FmX&uH_9`rp*AqWq%#v5J0|b5qY6Phd~bu_Az{V;tmo z;l2ZMiEuB2d{nqsK&}#QCuEs$`#Xsha|u1fe8LK>h0>mJzAnn273Jss5wiU;>}J7> z6gxoD8Y_Qpfu3FP$A4eg17X;i61EcdlVPvIem(46*xSNfVFvbI*lxH#!YoA~+aGoS z?n7Zm!u0H`u%mDv4?6|>OxQWteobg7c6o<~M#8QYnhd)|Xh+yxLbGA#hVple^a||* zdr;_L*h4~x!M2AM!X6u140~4ST-g3hS3Ku`8^HHNZN?({Hh`CzSMc1a1-qT^L%}Ng z9P7IPFH^;k(*VvWVf}WlSi{9%KSs~KThCWfVK(Slo3|9V6*2+)US%H0XFpZkn<3r5 zi}095>lJNK;`(9d@2zPDa31xux$1rM{F%}n01w083o{Ck^}+Q`0%W%z{$y~|dvVmy z`>OZiyTE-^@Y}&XSMWCkcaLlEtKUnae%_sbALDs34>%q9eW%EC{tgtL?|eU7(sktj zdx!8=7J%R9mm%vMR@`kN`w4e3w@l zpX7Bdzejl6%lGr}{D}anGmg-QarZ3=T?Tu3=tkJ(p|8W<68aA8t)V+%?+)Dy`=iiL zU>^)U1pE6?cc`8n3;hx9@9G;_l zp1punE)5JZ-pwlHcO;z&J{ydu--G`$|IIFjbPLbbe^bvX?FxEU+96>!eB+g?I|ogu z2=F|`+@52YCHUEMyvDf#YTqf1uK7xPNacpgiAyDLssBX%SLz?q{Xpp=e%Hau^R2{7Qp@knA2Cl& z^Qfe!H=jg0*q8#Ms#enVq4Q8bkhRX0!#lcLWhqTjr0ZgL`M-N&4_UJNg;f4kv9 zcVgk$8U6He=m)mij`x&9P5^l5yCClu?gt?s67F)ymxNpUK0Dtzbm-eCJp9cmO@%ud zvXgLULUs}EZjgP1J0Eg{a62F`3Ac|ME{xBNVvH6987$l(knM!K6J#d9+mtSl-Gti; znFsJR=0gq@ZZ*Fy#1MiN`jAlA5h0PVqeGHmw+OMo&IoA@yKM-66INzOHtf6*8|>a8 zeP9p5sxsbB6*2<$sE|U~V?$=aR+|yX^W7K=O@MNHAol`1#Hu)~Ax}g(%E!AwA^CXn z=>R5=DfxJkrzKN0mdySYqcxy1yYEcec{J)bd;2M(f8zd1xo@5Ci~E_{8&Qu_z2{?A zTvhm~e@yFej|<+96=@gqLk?;me^C4#-z!qfPxUjUkMy8+mI;2Q*{4JG6SX()`^Rgk z<^NiK${%ffwp-DU+5u`m={Y^?oa)zmwE5$WFWL=ld!s!soyYol_4%Xar}Q$>52f^Y z&#Sqf-t&odQf($x$sZ~g*U;a){w?}1j#JgICu#YqeW&Y8>2ZtsD{8mA?Tgq~BT3cI z2Wj~!KIMmZe(yh`9BS5mY2DbduW~zff5-#4qaO@e40}n)GT6&Q9*4a;a=Rfne0R8mnPYmybYvUi+Ql!`-4!2bSsa~iX^S@EY0ERPuUINz*Kvlf z|0nRXvg2j-SV{SJ<&)Xj@^j^Q9?4UpX$9yl&Axs22+`AO>EiT(uT zr}X^jN=1l|ch$zB86QzU(|eu8J{2bR`_g#adw#J$g*dhR6ps3DRE}Jto}lwlzm(>4 z>HJi#{P9yd>ArD@`+=T&b&Gs+iuz7lKQWPi{`j?eYx$|Z@#;zSthf$tai0)B)elsz zNPo(gD(MjVQ+-PHwD-JOlZaZDT7G&z57lc_|Im5pdOC!@lwQhz$G5lC$nO&SFudWZ z98&$D$p<<=rPrAv>S@eD8pV4uf+0fz1I`=<87=(lK-LxR7|6E5-5#=oaPv2@7te-ND=ucBZ+jSj`%(WLx3x0Ev$$$Z@+t^3-sie8?ff{lA-^tp2^G79NrxF^mH3>W5o+{0i!r3xujf8qKX>Jng{V@=uc0G!UZ?0!(0xh#+WMx-{ZI9asCS6hpQQSk@`~z7 zZT(2~3+YGs;Y~l)7oxtEO78G?%1Zu}emcK4|LHv5^~p~}yC>e0NA;99pG5mb*U9l2 zKKxaKskB)W;V7Oqzx~y>R?%*0+ZF3c(I3>bCt6js>8JeE<};N;N+;FRlwaO@RGg3W zxAv}nevui9@g(1a0rRoW(c3r(yTD3}w+0{6_YWS3k^1I1{+{~%@n6L2@P$w}>>uJ! z!2UD-T)c^0h`$K8E8!yU%gYHK*vc0?_DiR6ceb#kppUcK@+55Kz3Ng$O100q^J~uU zJ6^8`0DLZ$&u8#HA-^wq-tc*MKG)9Y>uUr2L1X?bzXT)$7N7%Q1u!IIcAx}s08YRK zxB(BKHQMv@bMy1^bMo`?b4dU{hZV2`4!{L4M0VT^0gua#F#vgPG={(qGseM=H%dnA z&o*|0JImM$_F!W%?5W0YVSjJ*z|J?##k;$lL2qEE`I|v|V1F5O4EB#f{GDR?m*2xP zcwb)baux2YOJOg+x(D{@t5;!{RFvW>%&fRl?X^&pQrTz{xIsd>OZg*wcZ56iGhiQiG!&xOuR4&!ZZ*j zQDY>HQPlElH^&T98+H%t9I-vTOT?PGqfEKdy;29ZL<(+nmp%kTg9-7T5Nd5NVtPNT|8~r2s{VCYo%)&z8=Vpw?vEgQ#oiHCB{kK@+$hnRL+!Iq)U-i-QnKkDq$$W%#Z)!B6pom1!1xiPtB)jRYq zJu^5AEWm;1w;h4Zh~^@Q1v|_v)Dh|k18FoqP95Wjb;Pmypl^by&16RloTe=r3M;cY zdf{|~nB8%Qd`dsskvF}!fv&IjI%?)2sD9Gc1GIia`R%Pg#5l?I(@yzRl>bzJ(R`BQ z&sn5OwX%wSG_NGCADz#8okhQp>LseDNI(16iaw0iIYfVp$_156N~iRDLA83x@4GKS ztA?Z6_YZjAegBB>{R8~n?Y?)m{|nlLke(%g2x?RnwFzRwEa;s^PM?xPwN5Eb|@qUB7 z%>vl_`dt_weW5=J`)B!UCx7Zs;iU$r^&a@lFw8SVum=s>5m3{FZqPAlLlW#o8y3U9ebXJABG|-DuU*c|e_ifLboE$0diJB| zM-P>LUnV9a*IFaTIz{XV&y08q^>dumK*IaZrF&3IKOzO8mNqwPj#_$rvr^Q|yP6$G zEq$WdNw^(ud0V7@_nDaiJrdDIU)GN=R#WrKCDm zu2K#hJFnat;(LYcr;vei**`JUCihJvUpR1rhjdQs8^dod>z$Ej`4WR;_qux@;U{^o z_{{u9kc&sm&MCx6#%y@~O*e|$iA4d8_AJH$*-*cg^rilbgU0#vJe>G%|4g)}FA7Qh zDtd1z^{+JZ*#6elsJ}(|>DsOEIyzS#N07cG1E_)#9(ePNYy$oG8~ym}0*FzO2En7F zib)*y`cnm_^{0wS<1haD6;<+|`W52+mDF#r(!B2pkw2oGQn{r54b@XF;t}hLRL@aA zO54w*`q2G@!fze6z^~5g19bmU^6j*aBzNqWYZX@n~O@xUU%9 zS7P3ciST|?fc0~Hk5;ZH10h3&I|4FNxT7JHg}Vi$MYuB{TMKtv$d1CD37IY2d5|{Y z?hV;Txbq?TzGmL8^ELcJ;Xf8~l5m$mmI}8&{a<6RL-%*sR*fe>k z!0C`PSP7gRdN1~74hb8HecUBsvthT0XdQt)1JQSbUHOXB*RdtiN@J-sN76Bevv>Tnu-#`bjI=$znQob_U^+q59fJD^`y2KJ#@7v$6$6&g1bVhg7!G@M0)M7pV!|xga}u`0 zW(_twLGOJN$$!i$3{;OKFr--yISyY2t zU=DZtIUi*8V9p~C-qvPj54N}OxXJHr>cP4^YX51-u^!fkx6Dp>rA~JKsUHsg6xTa@ z`N2NM&rUnC!7H0k){J##UD;CIGlt-xc0q%K&ISdTYnx-tbHmHSw?(#%a$}NcL9Io# zmehKtRzP&~==A6|(Ve1)*RCB~FScE5FusSlG2WD5PUxJ_HDPSRgoLFD%M*$lkGf;n z#L*K69eDb{O9%dQVC#XM2aE^n985Ua>0q~mIR|e&==|E`Zs=~}4mc^DY;-dDWb2b1 zPIfwJJK5{xEhqC&4mdgFqbJXP><1Sy1{W|J5P`l<3?SxgVKht^( z?XR(C-sMvsE}HivPtu#}ajN%e{|lvq+9%S-@r%+arMy#wze!|SE&lDg*J^En z{dTSGuwAv@N5~Iq?Sgx6twXSn)Z%SMt>`+iW1@$_9wFDUj_B2JJ5pArU{*Y3J?xDs zFT>uP@+R!JQ?|o)rR;{iH|0~<`%@0VK9cf1Y~3a!?&aW3;jp7N)rBo>Y6?4fQ!4BV z+|~S>vb@|>U=-{D6t@9x<=K=9j5|Gm;vWb%e^($6Z-m<@+$Ok9!W{&6kZ=dX9W2~t zxXr>H0yp28$9Y2G4i)Y&xcN>!?vM8-0*X5VZsog?75HW(eOo$-rLr*AjV%i771+R- zh_!+;bSAwC`x#B`gSxVgL0y6ZSl6I2!A*5V!M!4XHujDj9bL~bE_yt2bxPf~ z_4crK^$aneu;7^N*v`6~*o|?8y0W-USQ{Ev|MvP=@vc7#cIWs^tOwmIfAu|6>LOu< zTrb%8C-;Etc)Xx2(KZ)6%Qml^~@f}dB z@fY^9@i@|b&U7B>zGR9El33%QWL(jy!MWiF19pdBiEO7oT(3vWB9KU)9Y zpwwqnFS^9~rz?Dy9F6KDsu!tV^VY|r9&}Ux*H8US^`CctB#m1RiTaf0RcYTONiklb zdYIOQwev3y+9#<_EZo}kQ#vU<)SlS==;6&T$|q4zd*>T8&!1BMuyabfsC}aJ)4l-8 z2T7!p+65Y?S-(@_Q@XwLPA3)rYo%XGYS^f8lO|1@HfxrgoZP&5^A;^zw&DhF%Y{jW zNt2DmVoAq)f4ruR*R*Zh4yHXf9ek#v*L0FiXN}3!m@eFO^_gy7W3AR?RcE^UOpj|A z&GlE7Qnj9#Q?Kgv|0|!uyJy{XW@7O!i*8)Yio=^`esuqb_gos9clxCR&%Lr{-89!* zS64J`*X^HuZC?2Kuc=4U>jdm+^g+zZ!2ieITfj$=bPN04J({rujY2X6PYA)C1b26L zS=@Dj;I0cS?n?}J4YIffcXzkNA^ATw)58rc?A`b7{oVKb{@)#_bI#QC^h|pCsqU(C z>eMVl@`#&{GOg+9HZ<7Bw^RKE)eD_no8?yaVKq)jPXa!zZqV*mHAP7W1)0 zrCh^Hy;lZREj&M}+T!quQ|9J>y=}uqyGP=ylSeHn9yj^5r01TWR~wrzUC&w2R8F71;qFt*nopi~yYIaN`8tk2Q#rar?LQv2>bJtUrB8+s zzoqN;-M`YqzryyhW4aVw-@2^kjjdUpI-5uAN;B`qyBW!Tx-ent?6e~v9IKW2+PHP|L}WdW5~kRnJ=VY)2qRvavjH>$k6TGo0cQm&PaWFNy8(JT5Xup zp-b7SpPy{L*f>?`I+5e&4x4m7RvNeMl^s>vVAiFb34M;%|HJ=ERIX8m{W(@A_o$aC;&GFv)dod-uP<-ScBkL`Uk=WB zw%~f9N-MIyUUlHn*1|(;%xvZvq#d}W_t}g$eoEP*mfbSo%gOAB8u;?;i}C;W^Is5- zqZ7Z+7Z)c!2{V2NEAcSyj4LO@=bwU@m{d|~X7zh9lUq1E{iHNfT4o6cNOmcm6ey*4 zI6yNIE0aaaDg{ZwQa0`kv*QlUA?3t_lN+~aUMU~0(E@nG3Q2{T@lllf#&G)H&7~Gn zOI8+bEwz!_N+Kg(d#QueQR*ah#&z0N>LzuUdPqH`UQ%!JOZTO(-au-I-@Y*`EjE>k zNyViSQc0;4>#diO%1Y&=@={iNMP`vyma5=_ttM5M2FW#X#nzVUNOh%p^!WSZe;a@Y zZjki+-~4#-j~`+c;U7Ozhy{jSk3fwkH){=-O!ApuPV^rc0N@I!K_|7Hot7joers}S zef@^7H{cWh{d8G9)wmL`w0?g4cRs!tetMJ1V$~bXCX>-@)a&)+a7T)V!RW5Hn5?YO z{Jn?KV6>*N+Vt)^QlE*p=nMuS^&}rdh=;q`X7x*%I%P@`_2P(o@$@3}B{h;qDo34H z>QubUGtbniy{PgeNCw-})A^>6Maq zh_`!tdwKbI`uM6LHR46K41&aD4i<@Vg$Ut?UQJtY4)1e-^hTrCdng9Ik^BFW0o93& z?HBNK09iT%#v#4z;r7f@F?&fnv3>SQ_EOSh`&8^%_Swh<_N8`>w8DPO9v~gJpTs_G z{{#EAJu#gu1q9jy`NY84cy8weuEo9_cmugH!>$Y_>0O4z46J{cac8D#@~%vKGBIy1 z(;ejVOo>P-%aANY{$)9byqx7DG9gQ1Rz}c*N(Rv<462CC^09eB0Zq$<*7WPliGGR6 zq%?_X>1Q`gY)lXPX5s_-$`2DCQ}g#8lRi)Ad1}kjFs~E`KfGzNA?$YFi{t8!+Zi_Q z?8gE=JNJgoc)TuKuD`>FA8cLoF8{>PlLZ4Zu!>(H99<|>*8)owK zAHBu*LfC>K`QJV&b1BT@Vb1F{+FS{X*B@>>yx+C3r3KGQx?R`9Z1L05=Gbu~>}0>N zGMY^{!`j#vd{`TMD{QP|f49SO&z+HR$gn$MM@E&IAho+2R?|@Vtbc`jVcomLopH;2 zKkTR?rM@dY2wUe-_49=@55i8TjCgH~d>D2yXRV1-dpruOwcy60IYl3bO*dxj7^Zs? z*5P$n?92mC!n(I>zINZJr(w19$H!hT^-LXCbd4|m`B*KN#%jiE7HL9tlXO?~Va6uL z^~RgVVQ$fGtKF`;X-!#7IZU}t`AkJjjZDK#6HHS~(Wcd=b*6o$LtJLG<}BtM=G^AS z=3(Z^=Go@C=7VOdC7C6QrIe+drH*C1WwIsOvd*&Ca?ontp z+pK4-=d43*!);@2OKeMRdu{t|W!-1EZ+AcHzR#mv@;b@uF>bgz`HtkflAlYSEJZ|W zt7k{guActhO?*D2sq0_gzoCC)|MmWR{V)5!_MaFqJt%u{li-ZmBD1Z`wlUj|Z2Pkv z&vq``wQRFO!nygMn8QEkvFOC;OtINx^L;GxG3;aUkEK4=NNAJLGvVI%!akE8tN@;P z#Ky!3H>k08ty;pXrp=uzmxem!m-OWno-5t__RF(o&Xm0x^^n;{UX!AbTz*P=IeD^V z;xv^DOt>W-J#s`E7qUg-ebR-|bEORBrbweljpF49Db4<_Qk&MTrP7{_B;GHvU+Tl9 ziMR4ge3rC$YzXhmDzQ)M1Ed38{iKo2yx2CCbhBSdY4{uA1@e$e_O(iTLM?2|Ph>Jl z?$K^iiT=X5YLvnr>7_;6^n4D(JbFFv)k&jHYuTrk*R@iC2{7MT!{>2NfwM3+Mv)q| zQTU#YKap*||L|9gt!e`kz1Q2fO@+(rdNmYienq}1=X&antF<;--$k` z+F~u_0u)hyojf!T)Lb-4=edYAZo~+bWB>R=Tytp`V7qcCHEoB_isIO&J=;)(eT*5) zi4Z)B6U56s} zUk}}kBKFf9-BPvNpxaTzdpn@Jsdf)^Z`JOL{#msLq9Z6`KZDVu)%vmM*{Zz|y;!w> zLr1H2EPAVIe?MQ5j$A(E!lh@FnVwH}dN<|hX*8x!)0Uo0H~K3-OT(m5(l}`Xai=p` zn{5dZf6Jr|czt(D2c*N&QQ}Zfa>sRF`U9`yCn+xlR!K1y2b+@EV5 z2G@Lw>m$_9SGNz}?R?&JpHsWyN?h^3U*e_Ic%Luh(du}5Q&+r*`u;C*E9&_3&S>X; z7i@NF*Zo06fo6{5$&D#tnTN=l3PP&vm{WRgarGul~CFIWGUj zm)|8{L)RhvfwnPz6X98}IK*Oi;hNxiQ; zQQj*Fia}%5B-fHp6*ToUO*G9kEi|n)U5U0Cpho6>eYn*yO2;)$yyD_$ zr<%Xi6_4=kdFMJW!qwkdQvEcp^UpOe{)hf8^}GzY<~(0^s{W}j_qnS7Ec~1E&K3Xf z;?Z@#?m7=8^*nTOD5;#g+65QquKWHk_s?pag{ytqseZo&JDlIomB&F+zfXkPf4Hum z@6v|Wjsv^1R!fJjz`0t3@yGUzDRyTZalJH$NQ66_lk?Kvk%H`@T#a+^Z;)JrwdnTp zZy*2m$oo0N4zMcSL99cZYlpeo9>IDczvSO5{=JY(X=ZAsXx3<^Y1V6IXg2X|vu2iN zi)M~yn`VJ#C-G9dG>bL6HA^-7G|`%aY#Gm%ui5ehTgLfs(L86%_0mqwS+;z^mcR3F zFx}kz_I^V12hWzW#R9gT#a0WcnZaJBX_9MmYEx=+Ytw3rYVF!$+H~6D+N|30 z)JFK_)(-Y7svY82Ogq%CxOSLddF=?l=Gqqg8|fF}mz-Bq@@iUMwe#w5{-tA!ti0M> zJIb&8(xz#f@ozT&nx>tX_L>yuUy5%Ot;uSyz){;Pm0wzcf1~^wOYxd+e9My>vEJiz zjj!~A@28PoYf=Z;{c;B64#2}5&@8|%H4hN$0}Kclh#Vg<0T~}~8F?e%PJmXr8}KMV zCp`{$MvY=O*maW0o`O-RRCaH>R`Ri@!A@__jGe_E%ve-5dv?1bh1zpapUa*fS=b(i zEM+f;oMxYioMWGlTxef}Tw?zX8EKE^T`~6M*sJWTksItAk=yJ?k@5Bu$W!(+Y;)Fr z3Hyruw%s7zu^R&eWw$^x<6G+j*NaiE!1zFK>1N=93~}!%pPB z4EvFXG8{%8&u|KPGsEo+igYi-V{BbUeMXK+#^M=?g3H(fyJN;q$i12NF*bIW`DrpU zA7(HrcAoiZIQqjbsU&g(h@eO~DLj3E92WO1ppW_~!QHysS zQH###2WRY}GX}yL!Pwdn!T7yM2ockmG!nuY-{@SS*%=k#jCK4vHsa#njE(3L(1Y`& z=T{MuL->t`+eagtekVfG5NgsSUD=t4$sF>35-sVBz;Lb@?TnoKSE4Z-P0m;1pX7)2 zInB9E5%)Be(KS_D%wuSy+C$K@ReJ+^vubZeZ>NYGbuqu;ceQ>m`nYO8L~G7C_n#J> zPqnL~+pG2n^nBIcfzJ9E1r^r z<5Y)!h`$>#VAx5=C7v@r@md|DC}?JUh9Z8GndmvH{q5LAC3U>wpN?IKF$?ioV%$QE zSuEm-7`LcI5%u-a4OClX=4Xv>4YI!3ieDHpF_z zeHbL@igvAg{8wWg1=>6JDaJg0?IcSzxGPFJ?lF=vk1-VSxqta!Z0*0C-}y9ottsL& za-%D$c3bpd)t-Z%M-d#&NB>3c~yoccK(mN^-1#yiCmDb9FQHcU3uC6PCiJnmUv!@_^ii_;Xb1XJN`Z~ z`V?U&%~@EM-?%(Q)c=#mzxsZ0jKo9yMoAy8`8=Ffj)xe(6c1PD>)Y)E9Ir}}OY7C= zuI;|nuKl|-ONR{-Z*hH&>vLVNyY}nSuI*i)^X>K#>`Oc%9Fn{w>i)%i74dLwAK-ZQ zAKSTp0N3_E+79fT5A_doZ7;k;;t}AGIJMO6T-r5J(Y3uKh4YaOq^8LJjEl<5h2D(Z z${c7$(j8vt&FWm_2khjrV-|7`%|MNbS;!-qSEAEf^ajb7*ki2}&I)65rJIZe4v|{9 zh1o7@&$yq5{Er@wQa{%v9r;tdG|;8 zHFAJCfUNkA-bd?zF4#RBeUJ!8A7p_eAGu`Dz&&IpdlqD{+NY?5T}7RPGZuT2JtNn) z@bu-8P18I5*xiE|5e%A!{58lqgS$FohtIQr%+6s8)iQ#p4>dAB*-f3zosXKrpw(%UAqMnr+R^Bhs{MhPT!|F1 zeN)?i_+HX*mS&`g`fBK!s=XI|ShcHj-D*V<+uTS-TTT&nL9Q8vD8hcoS^ZMIZq(-- z?m!XsJN+5$rU*Of+NcrSJ58sE`s*i&oTmu8=_!5-im>B-SshqQiQ!6y;8MT zqt~gn{6v+z(ApHM%u}|X(p%kSqfKwtXx$8o)k20kja6%KSBy4hGnn*l zW}Rd+m`!|!&S=rQX%u&>(Iji!wTfA9U~`+BNpiF4HSRjuYB89#iqUG2+%#IfNiphd z7PGr-)ob01?i$G~D;Ax}W{^!*N$+MfXx(iZvre%XtTqi5CYd*wEn4<(*5R_yXbp-* zHnD%bn`AK?_?{Y@PBCgpoq^sTy5 zFS2L9Q8^UZnE#bN)>fF>rgD|EzZDK&E?;pE?4A^H?h3#00o4|M<4Y8ghv5oZ_>RRk z!hc+ZBJ6MbURBilz@&YzM%3-2{KWRVxHnAdLoUI6q1aDTbO+T=>Q62N@4~0dA(DjO z%9V%mCUzM2g^hS`IJz`N>}M9*eN^LK?phX`|Y@gKsoJboY`f6Rd?*HAs zTA}vN{e0V3o29lpH#XYR|H1QTIqkLRr$_N+YNM0J z8o2uF|9dVue=pJ3|G(i}inzbnacW&xwTHL!4&0?BCED?NK&bN!{GxL@>+7oNLR>mx zfU|xW`OJ?A3F>&76bmZ~~Gzv>3{d#TUE-#YVj zcvNw2=VH~RrH#(*(>woc$)y)ua@NmOH*{&ohyD+UFW>JUewN0qkXwGKs9QLVZ#lP$ z$jWY2kV72nTEw}DdrQ}v6-ThoxoJ$nQc;t*w;XDUGZm6{n08_xG#w`I?-7$?&MRrm zMa_kzaB~@QftNK`Fl(fWtR!G2U-%BLY`eb78h(VDb7t9+RZ=Y63`oTs>$VNC48@MK z>|~XvU5+)N_N!|^9j4y729#peSQ%Hah9gT`%OcBLDdDJakfik3t?Asjx?F4?UhA93H-}Wnw}`JI74{MC6PmX7y9~3OMN4; zV|?%V7LgwMKE{6P`_fk{z4A@(mqW_n7ep(S+b<9D20gyi>N*>NQR$=T%|%5-)sqHC zt&7Sft&jShn(EOtqWO!W*G1=$)<U@7fP5JH7`c=_FA+Xr| zdCdJd(%B=P=P{pOVUlBBbH~)--lvqS-iaLTX1?t>N7<(aU ztbLl@Bu)RJH%<7_R({8K_KJEb&=5#}AC0L4 z`Sb0>d-DCnC(HnUn)r#i*`I&dvvxIXMrQ0}kTMZxm5UiS<(U=Jh#5B>m`O8S8Y@jD z8f^`kM-CBZaYrJiN;1jGh^q*a3&?)RktYyaHdFqM zXtMSAyW{0k@+Bh49^u!1OALixNln~X24W@(DP@!z#7Q(&Iw}K+jS!I$vy?@|L@ZZU z5fQP4Sg_s7KIMpVTDhd$Rh}z;g zXzFU(YC7RJ9;_KbZjl-Iykqf%@5R%7Q}a~wiqK=N)=g{HTD8fvDYTy20BuG*+Xb~H zwdJ%Gwbixtw2igRwQaQ>wY{|cwS%>zv=g<{wX?MIwTrZo+O^uv+BofA?NRMX?OE+z z?Gx<_?Q88PZGu+TX>~?jGF>WN8eIlmHeCT-DP09!OWZgVntZtod zlWxE6xbC9vmhOS>h3*4$K8*U5`ZVO;&7cp_=hBDkE9h(L8|$0t+v|JiBlP3-v-DB= zmHM^%jruM69s1q+{rW@t6Z-RH<-MnWsDGk=u79Kd#55A4!ECS@k{P@VzJ>rpRzo&J z4nw%1qM@pxmZ6@Zv7x!4jiHO7zhSUpq+z__7sDLGe8VEcQbUYkg<+jxi(!Xhx8bDW zg5k2^hT)Fkk>RD`jp2hqV>B7vjVX+FV|rsIV~{bsF{iP(u?G1#8WckKe+@wyE!lD()m zyNdV9B}2ldcn$7&@l0dC*y4(2@r)S5`MAzqO34j|CLg!vcICL?Inv);mw4v)0hU^w zNB4i(qfuP9)zecKN?3h0B2V)D86x$UXHU)e)A1fJX74&#{>8jqKh3^*xn*Vjlk^x~-Z zy<)Gmep zQImgt7vE)Uh25cXHT8?Db=dD!{n=UX`%_MMM7OGyUO)3})_|^chUc;UvFXItoLv^Q z^EeQHa#QMEOT25u7OQ6LkT31bM-#49>|HifRN2`#)^A&tyG8wjd)He03LG9&>{j`h z^Od{bYSFvOp*al}Z(4KqRp*elpVmBU^mNF?9!;}*mgwB#w?5rspD#?==fJSX1zP$T zmHp!~r)?4VAu(>!gY84EKI%|)Nvgj4*1TQ(J}#(6w_7j!blo?nS;mLQie@@w*uB%f zf76H)X&+rbdUn9YhkZ_TdOE1efY)0(dv=Ry^IX4l#(_n92edG)u)dGe&In89TgER% z9&=aUVFR>*uX|t0{7d@%;r(L|<=hr`FqJ88Ug3&Xk2!nVq$#nXc+tagr}tLOI<-qO;2P$ zvJ;7smsk|uOpq= z5FY9uV}}~b8}PXpRv{lb@*{W|y^SJIb^@}nTP3$-QZ+}W^R8~&+$u;%-3psJOO;I9 zkVj3QO`%ePW5ut+tQVDx^`efN`$&~6+bq0lDP-*=6}DEgCS!fyGPVIySzAT=pOtM} zY#pQnwj66eh+Z4rRN5JRCpv@FKV|^e)g3Xrk#Axe#I_;> zlUUK=r`Yz$$FWb4X+H)eC>nc0c1FIPxk_E*+_w@-e%l~^^W2$V%9T^`cw^28}BQePss6=|?MM3$vt@(Apa@@V83S&V~EAex)Zk6d-Rvyf*X=MdM( zxCxQnjNlO2tw@n_G;*1|0x6=r6={vUmRHxy8?i<7qt+3l#{D3%X+#(il}7$nuH1@r zRep*T(P@k;%WtsX5)sLrrkqnzq=H<>8P8IRB8w3NsYoT2(%5B{%GjkeT{J;bH%%{% zmh4|67;7B$Ro<`3cxk4n*}r08@VMqY5#ATMQY+FQnzuxIz1Mu8{<9`KJT@icGJmyp zCvq3pU`2}8hCpHtU2WK0;IWspcfZF`552S?#cR&nNq$>61GoF_KuT$+rd5c{OF$a^ z-5INLW)aKmpB+2De;Cr4OU#)?tgU}%YDW1_M9%P^kBstPiQMGB4SB%-2=crmqu71_ z$Jp=uKOr;Pvl2%ZWY5W6@K6HS@eKrraIQ8DZXT>iErMHOw+Zfu-6^;WcDLZ3!5V2` za0K>{;G5Jx3Vwoo863W}a^K=hJFtFr#L`*Fbde#EoEwpykbNTuAO}W{K#q+ZkDL@a z1vx!31{oWq*bDDGS{Qog$<0k*Dj&twupU%CH z)Hq`s&33Du{D$`A$gd+Dv)UET%xu($+H)a`s!@$Y?L{T&|H8A>nVD}r@wQo|>uOHE zL|Rc<&Q2SZOU{QZD3?W6pm(B3{p5kjLF96$r_L-GMH(fKqurY#PvcygDbJ#Qp1cry zF})WuU(3t!wXBlYvCRf~Gxgi$9n_0BURnU+ck#awxl8X^zD)fU`596~@Nz|C){IvA zDErd}1}eFbg_STxBZV_Zh78g~i7Qf7X34O^hEfMvkA9FMHKZ@Z{0*fQc55QX71n<2 zz^k2=uGnH8jYbl2n{n?RoahYZ% z=kRLHF=RZ^v?7-F9P)zZ8CyQ5N5r?)eB^8o)i$AxZAPDmRzDWcG`t$_0nQ;A1b(M z44j`Hj@*p_{+X~t{qrHi9T^;}k-L$2RsS~BbaCWvT;;zSJI+7eKe=?m|GK}sbi@CS zzgDVjA7;-hg$6gKwQLsLDp)JE4(>o}**&-yt?1z3TiB0-pCVt8WP(g(*)n8fw1#9o zda2mbjC zHnPnQ=HKm5Mr!KoPRR{)O=t~9>vrn$Nx$p%=`_+S-5=Dr>2VY@H_wXn)u+WR?XPdA zXQqU{BQ>u4e^vt#o`(0x(646bb#XIGpWS+y`r^CoZ5b&Kv;1N0B3H51x0$5|Hm!TK zq;t&NOX)t`y{i=Oewx0_1^0`{@*Y)akv@7fP0>pE>luCLJulLiksLGn3|=OOe^huz z)B5<+i&@~a6dC2S99iGDDZQ9azKO^}e*ZDMZ>QgWTD((!sRK%AJOcs(+$4K|a~+2K z0c@$R#!v#gOh7ecjeuGKid5UNGQ<1ePqbYL!HLK&q`{fQEx$fQCmBMFA!MTnv4v

        C5&u7Rim! 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 z zuT~}awC{TRHkM%W|A%Is|55jAd?#L`ej(2y)zy%vyS)NtJtFGcjVgHR)3Xx&b^qJp z4GF&Uhh;G)e~dq#{-e_RJL)WM^8;?L4~i$;?4PQAQ&~$b=05mK*RO^t=4L-w7Jrm) zW{<-c{j9Y8`g^B1On*8mZ}g}8{8;^);IE|gA5&$--Wem~9uj<{-mf!A`2$9tcMA@AzWS(_&)Et8#__WF zzWkRY{S>>L-zyUQLcy<<|LY0=V4dQ7l4R2`*xbF3l*OOq`$dW;zkicI@_X8^y?j5B z;{Q7^s5yQPch`@#x{_(05c)xqV|{|Uc4_cePVUd>PoJjv=cRbo5B3pEn}mb@zIsRf zx=dz zqwt>+Dc22CU!T#e>+ARQkx$CvF2j}`3dVKPu|Xp#?m!~RKw`);#g^;gZZ zxnE149rHQ-BxqiX4 zO;0dL=_K#P@-NO{;sbueAq^X!F(<{nX8(rGXV*Gd9J$=}_x=RG`5=#j!>+ zNVvs%JZ)p-_toPXw$^o2ioaF`^HTXQl1#W~uWp!Z(O=U(W53ZpAEk{aWc_l={}-Bg z0EfL_q2FqLRPeni{uL)R>}(8u6pr@vFukKa1wJ8z*9f1yX6V5Ye~#XPPy8zcNBpOr z*)Z8oOZvO~*$o@N#eDrf!JCDDl^z`N)bBhVIO4(2;m5-#{)~*?F*Ao@(lj} zr};sT^#5IX|EKi-JNUE}d&<9C-giH%Vf%sCDh-bK{q)Y$pPs?{J*`n(FIx_Kef8;$ zg1-K@B$gxoJ9?7JGa{`O>r;l7jL6B0b2{P$A$(-ORYg6TtX#|!T0 zy#zq+`~)B1ppAzpkKkwf2O2gO`p+z$u~Ec7{C?>}@SQ1szYjKSJhmXg&sBQ(3HsER z`vf1C;(@=A!MFdNm;b^Pzv9D^u317mCsk5$DQ|m(HE^pdmUbNzvuVL6#tN5>ht9({#pOx;|sruRA+}3j|+VE zhkhaWJr-Kne$ho4{CMdfFaDvQH0*52&P4y8f9m|4nCfr;&l+|%<=hNjE8Ku-zbUV1 zzk%uha+tEn;lnbR{5~K!@;m9@8+N|#S*bxE7d))^@1+S4<5|k{33_nge@yxg{QH09 z@a!~SCO!ROq=&y%f`gy4e&hA`UlV=ky(^|v$gum|b`vP6AgJOaJ%=)pa+Xxd)M^BlDC2l2^VZT|RX!NDK)3U6Vrj8~u^ z_>BK(TA+c0A8>=8?(+QoQyRq&q`&B|Z(Hp0MSnAINz=}<9AVU)-U%7KZh3bHAC%#D z=l`z#nr4r$O!U9`pxftOi2>R}iZa^6->Lls{%mSL->do#ye`?>wgfLo@X&X?eZM>5 zU#TBA&k=rex&Fv)RXpkcl;W>V_`4E(TY~LJ^uqg9g6$%D!L!9*NADS_Jw8kMQx*74 zE$;Sxn->4f)E=Cz`hxwuno215Hw&9q|JJu1-qLXR&NP7ehG6*pdV-Hm{EsL2M+xpv z@*LUY_;V6GLzg{~{uj~A;wfc`-0aBq6D$A5SxskMGS>hOmWyeYvS zNbvg-d{Lrze(mwz$obJ2NC8ymbL(Yr;9Tl>i$?Nj%8j`l^azaNPP?!t?`effUd z;Uhn%v4p&o5$;UM|4!xgVF!z={zm$gEl2$4w>1liTwIjmKX*#WlBe~d1dR*-RedV= z#4r2%Z;(IsPtMdqcl7&T$zEm)ru=`OVA>0G6YbN#T;uloC57QA&ujFK@_alPef&W9 zFD0?um7UVc=T--c4ex2%`p`=gzns_DsIrao8l=BTxRL(08=A$nivMm(5B}fEANWtx zWK}9Dewpe&`hT0^L;rVbGWBl7zc;04J@H-gGpEJT-!YyKeP42;*QXnZlshKD|I5MR z=^u4{YFoqHoCIr`)*SOg+S_M2SODV>_>s>vi!qgFtjEpO!K8JHPv&9gTW-koLHQpk z+EM<<|2@GW|Fqkib{^pGlfAt|@D=2p;CFpa-^dgGGgEtT``79x&HSyt-riL zI5_CNPw${dda0~RKYmx!&Xeyy2)45M=VtLqy&pcyz(K{Fr@Z`a(bB!Vmp? z=PixmooWj|M3@}*{cn1Qy}$N>X2DwXVM(8~A7?8*+7IM?P;kh5&^Md5pZDCPPv~z~ ze9))9&leo^9s1uF9Q27lKZ~b5I8SicC-`Gs_$#~ccPj6|hu-=uexc|Q_rAm*`h=Iz zANjFf6zOSS7|TTa0{+7pKK65@;IJR`_cOtvzs_B5Pajkm4w$w+;A!9T_8ObRoi(dv z?c>c378CPZw%)M02FMM>=(__RdLXIiyj>3LrotJ7GFD{W#ieGG(CX!^k{jbJ-trM-6;6U4UgY` zaLfARSt&p8M>BljH5q)z%9gE1j3)UX4`w`1`s4KAj$YNW^#bN3xWQu_{=9=lcmGBH z=O`}t@0PbXwq?Jq{cTErgy0eRmnL}hgqF=0-j?J8K3#DEKSMu!dZplF5$S^IOR!f@C-@`Sw) zZD~iH1dM#ty`WD#{dL6CzFaJN(Z0O@w3dypMiRY^`g;1jrvD}`^1oW? zBY*6J_9g6v{*L+_{T=XsC_dnqysc3@L$qW5bjD>ZtIuh;SIm7?%jWaUfpGBu3*{gD z18-J%z~{cXW&0JcNc?ghZdCZI#RHD<)6t5H@e}RSy@I1XWPEd&@P-Xr{o+MUv*qZ| zcV5-9_AJ^PV8%KDLvK+=??2zsvh|&Xi68K(kAV+NdmAwMu~rrN0aKrI_$3*P{6`56 z`GGfN@abA;V<_LzgQI*tEnP(UTzO;5&ND@SLHtzl8u2gxl()A}^yH?G7swy{P@XG= zALY63(=F>S$5MMyB=~s=UUEyz#)EOb>0dwP_-Yo+^?k{o79Oo9g3n&F{ACJo>n70LS@F#xj>1R1`1ye#_RPXQ%SH{{B|6MRCzS z5zpFX#MAyfL-Eo6?D|Q|_Uo3V@$7xV|3}gKRigi?pS21tK^IR*@tohJy&6yX4gY7W z_@dxgk3;`&6dd}eJkJpv<%_;g6+fZx&-~o$=d;>ElDky!3cWWac;%m3g_eM;^?^S> z+Opqs-e+hUupGN{3Qy*@%!49dY^2N#%WV}40nFw@91`qo#)rGkGVk=%z5$+C4BmaW%AG2 z15Ez3^^yNgb9zjFQj{nfYBQQs_hpQgv7ukXkk`htyxdbEvX4{ElqecpgB z)+%irjcWWFDu;=mlkTAc-?G-7@Y6LHuhI|AoVRd>ZfjC}uO2>CIWp2Q7*_OcEdBLy zy7}~}Pi~C{-(fC=t@A5He&Ig*T0A&K`{N%QXgNMIH25P2FMZ~lQsEkZ({=6VK-=Oq ze3qx%TIAIsD8x1szg+C~sE_|sAxx8{Ox zv~};^l+yXJs@+jFk`WM(C{11S$3v8>)Mp~IZ_;(-D zU9pKDgzNGAEPiCw5r^qwH@LL&FB+TBBXE=lZ8o^jpEYYpx6C^1VTBdZQO zV&xI|iRZyV&-q>3Gb%z6Z`Te=o*WiMgRQA<96z&lkUp5I^lp!Sr+V;r)5@DxLZ9^L zRd+BGWw7a^oZaZ1I%Mgie(AF(HT`)D=Pj7Ou!cv^eZ`B;IniJvRO*(+sV&t&mw)dC z3+&czU@QNX$E-ZE7&$uf=blhG%g@VuKdl_r{OKOXo>nS9=clil_mdwNYD=MJzb3!F zakSTr`J>S1c@q~eN~`!?|9m3D;Usu_K%aRD{9;GPz8V1R^#STGzm<*ZBQR-QzkV?u z_)c$XlY8#!{J2Kb`Lp~<+$E2a8b0a!<c{ieP_l-ir%2Zq4M-tK8#p}(HL+b>@$b@|OcX3yP=+Jk)Pd*jB9YbBAv zlpD7SBVo{k+t7{k+f*BywFd_swEPKAoNG8qUeX&3e^z+%K*Q{(GdxnvTwp)5G5*!q zk$`yk<6c_&RPv9$7P`b6zW&fa0z1Dj?D(m@X%6ci_F8|W%F-*55}15m9%F09)_8ii zhl!GPM$&uyqf>TG8P`pRo?oGFK}Pw4!G0PkFtw zb(OB|a{eff^@i>7;4dp%#w+<7jTB$$1L5U>O~0#-Ip)~L0>ecg>l^f-9&hD8Yv$1G zd3FEF2nGt!_V!91xuB1&p+R8qkOdF0(bK)x&As=w^sYaBOkHt7@8X_|%Zn2};fdXf zJ|Wzc3q7mkDA4>0;(?dE3qjMu_NyiRyDPHn6si>kiD zXUH=P>r#!V_($VH03Uncn=$t!nD*i82Y$W(>nb?n(f_jf8tBWB9#%{rA^?mWy2rKE zlg4j^6+0jP)9+eeuF^-PtMUEgyujq4JA>PO>T-Z7|Je%UV&Q;`_PqHsv%;hy7-gG#8dufJH~Sl!sf$x}ceKJ>K7Dj!irbULYtf+8 zU9C{@^885qM!%fY>&wWh&eFx%_{sF0xA!6|{gK}5?-V;1ANlc35aKfV)OxzTMtz45 z;*%u3{pzi1xa{kjQdIWNz4d&S0o)jmpf~WLGjrxpq5pMyjpx;&6^~3j^2m5Rk36E? za6juD^95Z2m~J+m&@F%5ML6k}Obg(eK>N}ow`%H|z^!fjM(4!#cHEB|7X>C7>0ZHd zVXF%8i#6wU2UJ%P#@&NefcQjD$m``Tj~rn(9vo1qiLVH=HsZ`;ql$grg$a*xS1+KE z9yP_&CR?NORAEMh;o7ms*fJq`SRGOO6OJ%T>j70-FcOx%z%yQ2W1BD7diEC3gJ%^^ zqcb#n#z+c7wm~-&&?wJ#!>XInBadBgyYk8_FT3nA zd5ssw#>rcGGzY_(?(jg*bk#Y2biLiVe|Bq#Vr=hIvDh79pKCIJ>lGE zob}YTYa)z1H0;y&RN96}S}TvD(`e3W4{Q@$(X-aU%RPAZA#|^$g%{Tg@&kEVd_FfT z7)~2K-cSlF0w=9Ud~nLp4O1v|@-Uq?X12>2tx8l2U`` zVTqB1XYy_tS*2pPb_G0iW8r$^fajXewgoHQyIvHV}@Jh0*=6*?@09L59za->aVR4hpm;6cTUd@?<{p=e^jGoHt`{MET_ z-!aPM#cM9|tpXHE80B#o<361H#HV$-Bw5Wft%jn_WqDL#HO~Zj(N+0cS$cZHNN+Zt zND}6Hp1=1ZO{)YNe?|!)Iq$sby`j$I6L5(aqfKh(Z-$S9Yhj_ya%q3 zTi)r&YhhNV>WDq1hglxYVr-~A#i|NZ9|2R+i5Xm0iuJ@s#@99}`dGu^sMEE~ee zx6o%Lr=~tBqeqN6!i<5=aH%ikRc$-6{oQcIvgK=ec;hK{>yI?6gCDV*$Mc)W{oZoF zvwA|85c`ekb`3YznA-=XD;gRjlzd&Ny4G9wo^vg7eMzz|{`L#atJ}J(VS+w6hW5m!_LyX`Po8g$OQWkx#50ZA zMd)!&yNMqc)2ES@-y3aLi-)k%FycRE92I$?3uh$i7-%(G3>M79+d%j1*eUi_UheLLJf$F5uIOMT3qo3LXX zse95z19gPGi1}b_kJn>o3i7+R^INa=C4ha(ed`;wO(Erq>OO99;2Nrgn~V`9DMrj- z>O0=+g0c^(OUr(Zce*29ALCjTcXQ8cPmsxYo}?>4d^paoqG9R~(Fm}yGHs*gi%fTI zkjD5qwLPi*@iDcvd1IqzKHXM+yiN7B4Ze4=U8x+8_Do+fQUS}!4}IDiS|v?U%vXms zb^oiky5x)R+;h(z8yy=RmDl+5_6_cwAZf|BZ$mNEH{_H_OTJ7Z^$8a9l5UtVIcpg8 zCaupWw`;}Zn%1>qrw$tspD|mi(?;UpuPDaOId^#ZL41UnFl*!K5llh3ynJWITG%R& zKlJ`V^L%Fdj>lYbn@{5iGJ2+a*SskZ{>TTZ`z0muk+1ZCQcTZ;Sy~UNbnj{TUC|NR z@$h`Du`eDSoSs%MgPy*ZLT_d2BFuE}dbdz`aSibeJ`=-ab9#NE<`zL(?^}w-P-}T# zROS3a*8|i#Fgb*j@alEe3FEKU%ff=?o4per<@?Uw>l^c&J)?(R ztzV~ewmA9W4e zO&k2+`%CVQCk$NsUQqgG5O6AwvRCVa+TJi6Tkev|a}{>TaGh6_Tgb2Z@Ht1#JmWx+NCtZ4_SU84aHVYB#(Nb4kJSFyQ#^ zK!jluJmE<1@9n#AKDnjz)3EcmMFi@kzGUY?O^2J)Q@+OB+iCbs8Q01@^XSvDW-%EY$QX4iw+rIIupWgM$-?5qy`Oeb5mg~&)~It-7wPmUF@0>1jm=5*_xAF3QM*mCPLK3O@qnIQlO5Rfx2jkP+1tF)6? zg%zElc_T-$^kKMeru;YB^tmrpG_bR6}g&rU2kJ*!93fuhY-^fI#~ z%w%IzU4Awaq33n5Gt?Ox9y&x6z_apj)l2z~7raa{t>s}4Px;f7N6k=c+u(jCa&bJD z_tEA=a~CXB`EH!aDQ$P8bpamHwQyd0h+LfF12K~=#W+3J3u7rOg{n+0YF^ab+T1EJ z_?C>1y(bu=uc}76j3907XEQFJ9r&1=d7RB;{8L2wDyt<`kd2q%d5)}vrXD@f$0DFx zj$R5R436|kF;L7!*pkJIJH?VE9SWpM3zjWAl@^9#pDO3y$8K2|`Dz!jrBZ<5iKT za&y^eeWc&SGkV!)wwko`T{hA>UY#*v6v8dH+;X@Y7HeAwt9Wq^E#E2(j~sYp$bPyv zyB=nRx?|_Vt7O)D^-ME7v$c8poU1mYdgcw;6x~-7Y%1)l81db%GF6YR2{iSJ6@+Xu zS8B2*tZF9O*tc91RV}SvbjtB@`*PZ(l?E-G_|(y-tTAbenQ=LzjI{z)(&xss2*FpNGV<1-v}{91?TN2})C((`^&+;IfQvjK ziySfI*4L;^Ij#v?D^XjdNw`n-?TdH{P2aA|x0y1nMr$=bVlrm5I^|-5{400Ll~1FM z>jPM!uhb&4U{e*EHIkY>D~O%1N5*;B{wms!*5$~A8mT82ZM2W^X~4ADk*^u}#M|21 zNit$j`uJR!iL^il3Mwkje0jy@_1JN^-Nmaa=PLuFDxJ#h4!??&=l>$U(q~l^UHa6z z5}L{_%cYyFsokx=*y@SeQZLr9ze!ArdbSD^1(>gYjMw@!)nq+k#+PGd3nwYJntWxr zEU;8EW*ul%seLIdRdhtAwTf z88zFjr2?(J^>GXFJ|AIZVQr~*)9SnPJW8FBov%KlWg`&U|MkUcoLYMy(_5b~+8$U} zG|F|OV;yKkKPf+Kv}orUr?{J<{MyC~c@Ot#ilu+V(Kj8aN9Tk#ZnTEhdGWE#1Lbea zKbOBx{CQYga()oz?)XUZVDL=LY+&oZx>AJkbub=t zmd8v|r2S9@G)5K+&Ul$*<31nbex^f=0=h?5YM?tWk30-N^h|#e%xiCt$>H=gFVfET z65)g#FDqZBJM{UN+X1r&F#1h4XnI>hbK<&ZjCl3c`Y*Sw*tTsle=>UMl`tgt`fNTb zvi(L)ufliuoSwI*=WW?=!tuwi8#Obx-x?Vnf8dMS&C1|Lyd>GZJY^^J8pAIv}Jjj}9u>?lUZ?%(vCA3e|NYTbvr71ep@ zqtg1-HoWGxCS}F`+b9<&dYN+G<8bo|lDgCq^N(iT^YkUKuzsunV0$4-+L8(QWAsx+`;Ug5(m2FIGY zq=Dn4Fj8xJ#*i&Wk`siC#(>YxvBh{Y?Yc$gmbbBFG&Smrsg;lA(GRj8l{tZ?H}n;j zf?9SPE`+Y|Dp7=EFSb1cZieqR5$h5@=Y}84m&BQ?!WEf#GQ8mb@Fh!@aDGcS*(_P2 zbc9>J)=1Zc2*-wWY?(hCUp80MPt;8+r(=9ZaK=CMqb@j=3_lL&rHJ5j+3@f%q;hxE`G4eeK$0__^#-4oX^wt}G^GD(zbih;KgvC13w)i_ z4=1c@F`}|!pS|0hQ40h%NlvQ|v20OJ46DUi5))pZ!0RAKW505LpFaBpO_OzB&8UuR zjPqgoYWAa9V7>qlvs@31YP7sH9!E%g=A;7?#w(Mxd_kl>vB5{GAG@~Ur#8|@>gPH0 z&SyHgq1s;V@_D{Z_M_Tn%}>k~IkZtVDlnAh;~`NnuSJvW+(|mGs_MTgoll6VU^G-d zE%s9|CL~QoryWg+eN^70qeZM*KNMGvXX{ATpm|_5!4!w3T25=fGUn}YNTtv2Nx9Q( zE19*D6-zQ4bD^S;-iRx`EG^bz=8Adj zVu6*L?9|36)IZ&X*J4k7DPA>(v>QG)VwTrd47*Dn?tLor<>mp61N@3a!m9q9=7U{X zH3Ed!ZJ7Xpz!iR0ZZ*h-q4!JwsR8F46tz|<30VNZC5n<^64^ugJu~Yv9$VE6<_S`OaGMfx?)t2hciw)Kyy3)XTgS#T>NgP-DoH5ZaR0^ z-5aEUKKSowT-BJ-;B>2gQKG+9`MO+M!;zDG;QRQnBZKW|M7*RtR0$${tqOItSfgiD znB8wubfd4E-v_e&__g z>t{!Km*(u_R$E*Tn8zZyy|vJzTr38BpG$1G^t4OQxb)0RM=yQOrL|oCdl^nd_^F8C zbNwmn2i6UY4vf0EmHx3h)==EKa(Pedd!}wEKEq1a`DrL`_KVB`$U)!h#SIPq0Re|x zCuvRqUbq_HE&BPz*>+Drgx}u0z2IN$>k{teGSC#kin(J61x zsB)=t3jA*h=bP>L=S$|PMNR#WI#XXmw=w=BbfOyIkMEkaM6Kh38|H&Q#?xx} zyPEUp)D#@ed_5zuVFH~()k#Me2=NH^=3mrznf;=?NeUEED2|H(mK#;B`u0=e(D+eDO}c~5hzNP%kou?E!X%BG?VEIO)OxlPCu=& z$RylKf)3%!eteMr7Z2Ef!I;)^5V{<4F%CX@e_XHHcHdHkpR~SmkbUiV$CE83_|`Yo z(+c^V&(vpGD@EgizQA|emUSC-GMFT#-%aB|S6&Hieye#wp? z_P4jrS3zDRs^{V;Pj8{m%NLv$_}>wd^Z8uAKCDl3XfP$z_uy&vXBrar|#@nSPR7&`20=pUHl<+4_32 zbMl3xPp<4Q$*Kl`@vK$kkk^p0@E1U*Fjo3BkzrR-L|T|Ez{BNrkyD4EvL9ncGnWCC}jZY z6nM}wzO!I$L^GwV#Icnc3B&}z4FblK9eD6a%{Qv*RMRWOfss%~wbo+>*3ziIJhnC3 zjwwQ#Km=#Y+q>&ntZ@8@&A27ZXAH&(6(ec~V~luiy?b62{@|`%yO<%^UeG;t_=v*q zQ#jB4-=0@&7IUVYTD|R3y=&0#2yb0_HfQv26`kFMKRB^#*Y5b)Ec_ACf!)n}LcMG2|`hgo2 z&YN}yjW?ue5AkDz+1_Pzy;c^qle2I>$KkKh@$tS+MC)JZ7y35dgrr)@aPVMlvwlF8 zcVL8*R%Iq<*yam--Mc||Y3Hc8fdl$JF56$TA6SO)@X5TVudy4wsRv-D=evJ3|M#@k^G|!wuB4!&9z!c`Z)pC!`S#|O zQgGyZ?%e#J^N9YlA`#@Uj-M9muZ|meE!bp2SCqB=Wh$T>0if^m2~Oq>*j-KBSWUQ> zi~3%T0D4p=mr79bi{Ix%Dc8T3*I;v6Qxg;YyG*~ZsP%7V5Pyum+ifx09@X_(dKzn+ zqu^to%vX}rO-hRv)%?7EN`rBa0*-1tDdT@stZ+7wy^LCKSIoS;vCaP})Wc&Q$y&%# zbtp^Aj_r@cJ{0M_R9w&agK>ZR@7~=WeyuYlzfhiEwR`^H6Z+SbL)uZfM&oO@CjJul zRR(Svzv-Vj!hHR}b2Z+U`|t2Q{1b{FEC#0!SbFGy$&)+iczKV|O|)m$9O^oLOEky+J$ZtSpDi z;bOSx=pU}8!!12`mJgKol{?D2tsJA>%gZtF?`d73`);o&E;Z_I&r$B{M3+2q;CuOw z6=S-AwAH)S?wKRp?Pr7bli5+GM(7l;{zkpv9xNVQov*K>L<<3a@Clx}hbiP8`9Gj` z9=%ZBdB3^!FZ5s63wN8IdH-DZBRBk6{e_4=pzzDHerlcQgx={#BH#PQci%tWAbvWc z0Y7>OqyTW%T7kV30o*Q_w_HC=eI|}2;`GkM?L9Se%H|_zS_7EC8 zIi1lx@K1f;9iLH-(8={2_CWaNY+gV;+8v#pf5G0M!ISezeHl?0Pp(h+A5$1@;`QIE z?O|*W{C9+h&Uo(2>;e9F$LE$kgl|wdw0Lqp1r~S9K5x~t`MWhggwv0#XZ&Mncby>Z;RpH3mt%p_8=kD^oU-i)v*Q^YNFT6`f>V^-SGqc<)YE8AM9;+{6u|Ur8Gs>E(JfAD|l5_ z?}|OpxmDpE;qv5mCD6t)@RPS=_X&SQVLW+1GO`CcZQ((qTQ2AzugRS0GpFCl+WDP*HiRE*zUqd6b?Um zc~QRW6t+rFC$p2_9Xk1VJM!%)d_&e>pf@Wkg(I)3l)0$y-TVZd&`;oBFFL!EH|Tdn zwVmY~c24-%Zo*CG%uYgHWWGMb5BkW^&g@N~=?tE7{RbWN*3QP;xmRbdJcZ_`hN2s!h=uJ`?gVZoMpgOI*Ausmak||jr4~rVYM`@SkL6+n#I(vKcygi>uP7&Ne8z63lk)Q!wj)|jI&&&} z@;ytjM6~ulxf09n#M-R5Ep4t99lyMFrS=zBwI@bf6Kk|@yRLN#*c;k*ch;_Ct8DDa zgx6&|dt2HQ>0VO1mQ)+bH@0s^j(|+XMnwZ_< z-n9wa&4rZ5NE!1QY;yZ1uNBMgz{-V`M{qZ1>UeY`9T9lv*NQocY5~Ec7llW{jkxqSD(G+ z>*&oWm`h_@)WN%G>6;7t9 z{C*bY_xr5;U^puSLGIAY!2xvjNSQvjT~fU9lH&W96yLj~PIqXP&iac{1NArKMaA)x zMa91xBZy_?=Xx0yzm(R1r0)=Aap;ZJo;Mad%ImZP_hb9IUR_34wXZ7je_&_%i4i}K zWgMlrRDM!{^3(rxw#V}GJ)z}82Mm35=+L19b+^g^dc2=K1mfnV?Qr{W2p+xs_&wSz z)v12l`yn5AN%^fQ+WNm%e`mH&oT<`8*A>kUB~lz_f5lLwTmRek`ri_hxhQw5e*9tA z*PPSD((~UXM^gB7eQK>xJ8BP>KP!KtUw^Jn;i2o$Gdd?NyihW@6I=e@A_S8LU2Ie5 z<^LGwY}0`!kMs70J@To=M;h<9lb<)LFrdlUP)?96RYW=ldOGK&qxGH(RLc%lU0rUm zgnNBosIUS3MwSxuJz;33`&hT!(zvi$?DTJ?k`SH2Gd5o}Iz-5kj(E9`-qg71rpAr- zU!e7n*7ug1)gaSHk0aZo))lCG?%vB#qYKgm7leC1e52BFNQco$-V>&7)lZGu2~*gz zrrU2>&~FPw&3X*FM(cz%V1Sl7hevlo%zAW1W<5Fia2RzH`A%91gPL~@-aSQcyv{mz z`Zje=Szu(f=Tz!@oD1(d)qgXhaB*W8QT3}f?C`v*-e2RindPifw_AE=r!F>xZwG$G zMjDp{LFMLR7u*kleNxAxCZyrHLQ0FHv6((y2MchtlN_$pUi}`@$y7X@+l+wJSepHa z7U}2%^&KfW*<^B9CvldJSDntn(t+Q+bJqdBadqPo&kdwg9q$?~$F)`|EvK92ZAf>k z){{PRp_wKUvrKn&)FDqrm zMzKKDurvj1SWxV1FHwVu1^a>xI~q|Eqrr|PhQtz#8W-#>!HzAW(MW8;B%f#^<@*@dx5|)o#wEB{J zP|@ffTKGNI>N4<;g>t1E`>ISNhhT8}ky<-eFnB68jekZ>WicClSR?J{ZHYb_Z+0)o zVZ;w5G!V`tXr2jkhRd3=hOEpTDK*@&sdqq#r#YkF`K|wSMssr*t8t)$jg(IF`e{}9 zzqCBvSJjcSXY&)7^raD*GSXZj6sVmfF#8p4L zXQadmYvqOKxK#v^=`yP{t8{f~W~nLMujlXCQ#!lXO@2=Ena+un&ekf@RQDRSM_>JV zU3HH>lV!EzF@NSg!(A^MDFcy&T-LmhSMx3A!`3zBK=6pfpz^}}oJ}iE%chm4)lTEW zW7@cBW!+xp_2EGIWB4n%0mS?9wm<3JhcIcZo2vFmDX9au+Eux8-D9ks+H?2Sy{3(;TeE~~rFukggk3kPWtNP23uKc0qCs5BVSWR!UKl}(M~sAab!&cTc-yW5 zVUk!O_a53^wdc3kE6uHYyLo%sT$PP%=|^4~o5cxBBD93BzjZb1XmPWqQX%z3*4~Aw zw)S2@F9;KKn045=)BdE^W>DFGo|w5GWqO_O2oJ@VUkJ3>@@)IBvd#XM4ScU^;S%|n zBt0mM@H^J6p3A>aqUUeOcjf(;XY!%+@j8QFAU!|A{dI)YrrMR;xN)Rq_}S?Xs_BsA8r6_~zgvX{TIzrl62T?M1HZMPk~Jj{cO( z)Hr04eepG1C4?Wkx84Hx{tVy4WyC7Ffh|3Ow#dX4tj>(Pn?9X>lN3B(^qAwa@fjXP zzjg8o$wdUGKDlN^V|EDF*A?cVY~`?QIDU2i+1N@z6e;yV3WA*=~T zalcgqe|=q>5BYpw!iwddlNzLm}7H#UPR`K$aF3eWS$ zz~S$C-kxb>`i_){{%<)Zz#I%DoylDEFS< zd(b+!_U_ZM+_TV2If$?E=iDWoUFqD;j+Vc%L%9R*r19fW{9r$xAIH;y#!`Ulb9r`K zCcDU|X|(vq)G7r%03s5|^6%2N3oemiBf2xOI!ZxOtGoZ;2K#g@`fj%@>l)6Uuom_EUM!n02gO{n@FZL)^-N6X%jpP|d) zB8|s;Y*+YRHo{*Nhw-lYJ8UzsTFjPe$c2%og`S2J!<&)m=VtbkgmKEt zOIQf!YX)4L1FI%A+mrox|5& z^J~Ht`6AVbR`OTRq@7pemwQjwuq0HyR)p8sD5+no`O%+W|HYgwpUM_hi*JcqRj!f4 z8Y-+3wc2TU3t{SlH#sJ9)>B+pb6u7;byvx?!iumuv(ieX8VnSFdFUOp)`N7b zwSJ#wI{;?*{5m%9YjE1WKbYNEuEhnY+9JQ9*s|(WwN?B#mrv!xLOU*u?MlHbr7R|E z(!dokH}q(|86o?q1g%#zi2YB(lMnwme!Q*t8lz0ntGNeGr~ELhr=N^U%YX1-y&Zma zS}lKxP*TW-0n}nXTkUJo3AL(R0j+U-VjZTT@HVB=nT4~nb6O4G<*Qf#^THt6hb4Zi z1`O8GR#eMO%7mT{=T*_zY^P6Vd;LKCgAb2*P6Z z1xWZhg5mqv5I7abAJ_U$_~RVb&-+sTB{}?K@-zM+OfLQ5*ZEZ_U+6MtYaRUqf@m3d z1CASd^zHnCOn6%Io*w0;-=V~*0wizWSFQ&h1s+Zi ziN6EKlrL=j1=R0guwAzZcS1MAH)34X|7?QjbQbpGICjTQB0Ymc{GY}82+JOZyWlj$ z*K_bi_24>=^F4Czb}FX+(>tc;l_WetCfoxpk;hm}&EmKxHWdkvLe}t$H1u7Z9})S- z(EfGs_lfz5ul|$rUj-Xq?Ku{#bE2clq5mxK$ho`0ClGIlxE*)~@tq@9{;Hqlzb*AS z1pGqeU)?A4&kLiy=7H5-TSxvM!D`#jBUb%}5V!iNKJ{SJcNq5lE_iN~7oSrV{>~V; zKltv*e+0ZE@f)*nLU^A9tG)Vxt-ZuodXqnTKp0EsRfqJ#8sCPW+c?yJ)0n@;i}rnO zyu3qZW$<`{s7U(VI8OA)Ii;8WX?o2wmj2{T9lu_7?xr}Njw)jt@B)HJeD!VP&!)U1 zz&pnNcH=tEJp{g%AnHpyEaIqrc9HC-{bsYTu+keIj&a1_GS*LcSb}%i#JLIJF$rJm zeUleobxrx&N=W(RzJWh|Xt0m^fJoze5Jwxo>MzpI`it<13Et^@q5Y>v{XWKjs=Vn0 z(F(xH9A`xS05ZNEytkN;@HCDo)>tuo$xgxkFUIso?HtjMy&Frua&3yb1c~APxX(%VCx_95AvT22%`CPE}FK&!-}OfsVH~wwo9Ik?g1bW%m0TefxsdW+JuU0UXoz zy8xWF-_hXIeiwqxekYwC^4d1G*F|8JCm$f1a7OS~`mKpb{L46|e5&Aoi(>p^68>fM z@2=qA#rg@$-x{8Sqg)TXK0ze@D2~S0c(@*H<6+!c_$%`An#&)Pv1`$RDZyo4o2Pe`)m{P#f@mlp#`icXPDzr0;lmrthQ!Lx1b%rCE3E>fAZR zUyALc_P7FU?Iqlc^oAQLSpC)f=S!6T2k`p@k@S=QG5wT&C$OdOH6!@1En<25fR*2u zQU8X`!oJtOoD&@h7Tq2Wu50hWza^&E{3x>dvfYTV-a9hpC%id)!&;w8cUzzC!r(a_ z*-fK=x`@Ue3xC6y|8KzRFMo>popF75DbgdH6a53_)n1(TwDT{+{H|9(iLU>(zpv9R zi1@Jkga3OX;)CyX?kwaUkK;xB?%Z5d=AHL zJz_1pkiLkmZG2t}{|T_I_uqSrIv_hD%AfH#PoX5fb%M(Ymi%|XCNI28f|b55k>48r z_TUo;qC>%3aZK~yAi>IyAzaCSH?YQrwb!;!GM=!_deL4_g3Itn5=1M&YP)eB;Y-)R z*W6))Su4%Z7i1-AR! z^P&EGMSLiRnM2(Ccb`{-ea(K-SN1l2zKwtPYoWh<8S~$o{P!Vl?UUzApGNqm&ws+# z_)YUaEXiN`$`_fwf2BQD_pLkd0m**-IHva78*KJ_7k$glVOut)S2>p9@ z!q?a_{`!$$Xs6U6eae6QoiNs(qfd)oj(A$cgWe14t!aVn_5vS3JgV=`2RCLd*WQ1P|qC_>-k!ZG1=M3*QOf@S`6G{3|7f zCNO?VZuVco_>fIRKLX2M%0qMzcr3?XdldLb68}&6r+gCjYwDwZ!n=^(u=1C0 zP4gd<l~a93fvvu)mW8$V>?q&vi?ANLB;w=# z7X079h|dG>OuX0sPkia$o4ic_q5s79fHmes$AQOlJjo;4?eBqa`b_vLtT%@z{At9E zzhqVLKj%jN=k&K{h@TvBH<$Ub{$a$!!8a2>3LA;Um;X)qcY;%X&xC&q`i=u@4iYJS z%6~laFAD6{_)8=I^2mR)koonqtq(tm_`pQJpCD`c9mi((d*IPA{Tp=VcEnW&(H69? z@Vg$dSIiFvF=1uBsQ$lep{4&n*@pK@!EcW8AAV<&-dG>uYv36^qkZP*H?09h`-AV}cyPqZe>bq@FH8{? zJer>ysqTFUqU+KBYL2JI^bc_%j!AiHnrFKgdB)-IiSHkv+nfi6ZASc$5sv|DZ%sZ( zr1hG{zpdAP2>&MV31ULCz_P_baeUtizJT<{Ml8PiZpz;h`x}1%7rPDcH3mf6g74yZ zh)4AObu#boq=QI&`KOfM37qmr=J>Kt%D*w;tA4Vt)o(84y#`hri=G1if#Z3xK5v58 zXKgYw;s?JI^p{T-9SnYpt= z$-J%Ki1Y8^8;AZiwJOMe8-Gh0^C(1BXVHYMGKY(+=qJ8xlk(rl@kb{7J&`{f{j>%b zb=fBK>wS$;k?>sjhMymv`Mt@d*i7^pSkDsNvL@i$ao)crdR%}mk9GZ{@z50cy8f9= ze7%St*+FlUY`I<;uwEFyT_gX%?`7Wqu8&S4*>@PnEj;3W3;O3=;x@id;^Lhq_G>7K z+&?jlFB|W|+B-8W|E}`Qzwf$d=J&IWe=Yd8$ZHIUguhDg2YY3Huk0^@?XpQcG#dWr z5$pP+CvnY@BCYQ=f4<@oeHX0tTFO5-$KNi;pPl1tEs&bR;G2o3 ze5FtMhv)bc5`IvcueNo@06Hc^P}cw z^$C&q!#EoMm7_CvD%kpa6&I_Gly!G(-~M3bJtt!2C*NlI9eZ--mV-wTM3*1iTK`AD z(tqFR@5I-4Tc*GGxUdSp-SJ_(nSLto7SdaJ;>*7o|E=RPcOlsHpLIg(@*fAQ{J(VI z0}_8mQoi_Cf{owh#LOL!oaL|bUk6+H;vbRl-=C84rizyG#UGgPg$F12Q5FIkZ`NPl z13v*S6GW4ENJlmLs0>japLa>-zmL$E5J^AvUDHqe&A};O zpT(E|N%_Yn{D-a#>%*NmC%S89SdUu%!dfdDp8n&^?;Vif=g1d6mAK)3!FBNaDKWGrtp1zwugc-=z5%Pe>)=~? z!iOZ~3vZL-@09SRkLH)O{1lgO3jRfVdZHb{@((utesXhYU-dE3!|-?IXzjNveDS`H z=^w*64*-9kAkuneD{Q?m@`WcQ__|+)-$rT<6$ww~Xn5+KVg0-^rl0t$%2spTXJt-P+qDr(-tlkg)m|4NVD0tVZDIX(rB6+H;5~>N-u3OUerFl(>2$E#_q_o9 zdPQSl_lO6+!+H|gtrNc1`o=#MzWU4Nk-y0wbq8|gwxEJ0v3Olgg@+a<_q+BBe31B;B~<&L$nZF$MI#4 zxbFu%g!t1D@B2mYM=wVF#j?y_n@^8;`ro+zr@ilvc<{%p*{i}DS*O%Lp5S;;w6E|8 z;)d_}pUi)MVe8Ko;Lh+riv4S^e=`4*UTq}$A^1&>$H)55`!cL=-|}4M5A=P8xas>2 z{6oR=sUnT(9ou9}HYe-rC|5~0o z_5G`m5qWv+X?(R$ne%D;Xe?X%h_Ak!@;CezzUCWCKXXNBfAfF3&qCMtod_c3FG}pgPoB_7}GJx_leur{Sr1tC0F>SwLU~506$0b(MuTT1+=%_v}Qu%#3 zrus>rR6mW?l%Ka>p5H%7FMY2~^c}mLu}=BV1he?^_siwKXOjMJq(2AzK0&1X)ZSMA zz3E^7;Jj=k%GX!dYyCKH{!Q1P8vn0I7*hIAIj$|e_^0Lgmw>H3R3F*P>ZATAZ2j-s z_!=J*kx$3R_$0mfeW-8BSN$!2`6HEQ{^tk#pnhPGs@tla|ztunA5ED{) znhMNbBl%)be9J%2|9?Hb_MbMQeoX|C_MhrFuIEwse*T;I+E0-0|8@KcxAiqeryY;E>+q;mkFXThZp?(VeKQVxZw*o2z;#}MdGW!7=J$|ygR^)s>BV~ z8>ex!_Wb@~Vg26Sb6FRTEcovmw5Au`1#aY6F94~1bvm0sA=e|MLH|9(PkBpL%>@h%>5eYgkqru@G}+@CLZHpZ4_uSdC2X*Bsg8~MUq z0#xv0F#8p`E+&Yi&x6Fx9*g!b`1{Yy{|oPmoZ;*CEBN~%ukopANBGw#{JX{${I#Zy zkKcob!S5W$i}ZOv(MS06MBf`uF8JS9931s~5UjEbF}?JE2%PGFZqgnj$_0O|A|D~z z2&}em6o5YKUGV+;hydMW@TtT%i+DLVYwk<@>WDwsC-|4C5sy7HjNe@%_U%dB?03IdYe|p4QUtI9}VdrBL(FI`1&Ww0R(%*-?t|>&q zk~RFNOACH)?${_lX$fT`JIG6O{d!r!>(Vh|eIHXtd`!gJ?`R;tFy=4(K!UHFRq*Tm z^P;>kE~xVT=)pfNxS?Qurz1KG{0i|c19Uh1q~PvHx4$O%P1@S)8Ce{f)uCk4OG~;7y2IfByo{6~A+|V9P5l;kPOx*g5_{W0R#y{xJ(7rpy^n2dH&t9?5{D?nb@x3?kpCx#o z1W&mq^uLMGzCQ=w4*$rA_x!DXVI6*xq%7(p-Vd9LPHisu@5-&e-v@q`^K(6yYqbRh ze{bT`5ufl_!Cy~)7O~Pd5>M01)|URNCkkGFjd{^3@_QS7YVIZ}-z9&;j`5(eraeWGzTedN*PJHOcs-w^mGAvug8y8f z`FqC($Mov|gXy0(9)>Ln>%VOy|0wY0r2mj08vY{vpX2e7|J1;+zwuPWx*pg3ZP(*! zZ}}fEo(ntvJar!e0i)4{X-^?zN$*LrIl_`8Aa z*Iz$Ku;$-gz`IBOvmX{5TXOEMPT_?3N}KZk08aTT&-l82(|CM^AX54~|7gyqeEEYk z{Vx;#m28yUgFcxW5fawkyWtfd2mkU~`@q-!jK;I-BvSh;Z)<<8Kkf#bKT>+hTKd^v z6x|J_*rq$S~A0BawmSN$!$+Fx^i?1Zp3R z&D8$Au(!33{DInEeNH5Qq4itpFY%Sc##@wMDOw`j}|bE=7N@img{ifv0d@YYNdNq}O~Eo74RqEc>k^CZzhS zeXah#>soZvz*~q3JqLb`30-3)lcKs^i%(nt(Fl)y*n4(URjI%Pk1YQ|I1~dC*`ke z6U$%r-wAB`>;BC$D+7Q9rko{2*cRvHmmFykyTVVAM&3U5Z zan`zjV}wWSZ!;fVL;Qq@*OXrV*wR1sAm6uuH;nSffKMZ?HW#fptH>Ku84t03!rG5Z zvF>GE8-D!iqQ9P^n|c!7ow(sUxj4NX&WynJ{z7xP+5ZREg!*@n{rghzjqtOGYcPHt z_~DrUM6mkv2?>_{47b0&=$gUDM!xRH`XPDQ{aC`+QXj)VB6G-f406Bmaj4V_5DTvedGLSAMr;KH@+}aeg!{z zN73Kk(2X)hvd2-_#_S<}f6k|TVdKC4PSLl`jhiVoe&&xwe}C2WalGvQR?+V_oU~Ek z3x9}x3_r-`!J)AF1hzYS3GIP>hD3XcFMFkYwlFIEy+#-Pe(-HE{eaJl{=2wX9e3Z^ zMZcakycOevOB~>d#lWmHX|wtth&e zz}H8@$qG*+=z11Z?#eewqAJJgZF$R{B4p zf1193l3w~@l8SyR{{{F~ey@n-gGG|pZxgLP!sC+q39Ek^U**3Aw(`Xvoa29(@MRxe ztC;;}Az#-GfocLIeKdAVAK~$oZ@A-2MgRTK&x5!tGoB_Bzd2&f7uygwf7RjYg1_H| zY1EVW4GCY@XR^=sf$c_YR&r(H4@Io|pM~Fz_(k}e65p3JqA$Q&o1Gi+DMLzrz4lPV zZw@N?@p!zKX8(6+$$wv@dv-;_Q;{_+{eHoD)Bjws`m3#PG(VQXHa{*HT=MIi2HH#{ z+>@hW$&Uw{{AcUopTJKMM7n?fE{>OY#K(4_K7Wf?`slYkrceJ7CI9=0e%d8 z^5=m~{uTCvv|n>e%&%c|$zLyC5z|Zl3~XWYnlI&#ZN3yfGr_m*$vd>cOQQW$zk9(} zKV1*2EV~{SJ{4KRvd_Qan|;O~SaPqT%Rf0Ms-0N!?_X?;`3vt`bS}jgAaA(KBCk$r6aBLBA+ z`q}&`zQ&{RRsZ3XZ}peGwO&l^zbX0~)_&eot;Pc4f);w`0*sG?0m4EXU0~;=A*R>mt4gEKyqz2rF;H7v5fU-4MX7czOg(7jz3E z7JpKXe{ha}QjX6SRwcdi+dh$h>b;^niT+{!O7=bwd25exPn6uRk^faJf8A3`{`$_w zyX0BIR^)&6LdpB@->n-G+{5=R@{N1N^f$jz@_SE9qWy%gBfa7E-Yoh1J=$4fOU~PPmw&qk{ECDj?cXfrsB3JI#;>mBZTwD{R`TCTq*wWneEi@{*?7wYflf~|i`e&0l1id47%HIoeSWKVCS-UDX8u?Enf18>rfBm^EV%1;QH&%ar|DgJJCy2z~ zm}AO63vB%B+gJH(o$pcy(aNt&esBHZn7{bDaz5qjUY3-g}rQxE?rUbm(N{~P{|$oIzQiG+XDrUeh|QRVMv9~b$;hgI_% zyNJ)~Smo!(P9eD)%>MP+#CId)9$lB&BlrCC7o+!{Z$ zF5mlfB}~SrH25X%`hoALqFaSsi_Ie(2TxSf-&@Op^bkVrEJ9p-EtMe;t=L%#1N}$6U%@!X12f(?qJ@``;jU4Cz^D(ZD?lJ$m%&v3_mO z**zxr7{ueEt-g9b%*Dma{Uc+m3gyC}!W7q-D<7SBX&U;lH5ja-^a@+G->SGJe}gK2 zp-|OAbxj{L8RB|pO}KB$^Ld73D`GcEB%8^17|}?3OuF*U&_tY6mzD2}q;022zSnsD zQC5Wg0#P12E@S+Ywq^flUsMe?Cr^r5;QNE>)}EmERM@*JYD;=Ami}6|FL@P_Ej|~6 zu=4lQdh@2Uo^Ac#&T&S4MZRmVwZ{d=C!nm#;SiQ*w z1J@l`8tCfV)fegytuNNQdgUK0R_LpqFaV?Y%tQW49~y?&o7C{c_iS-W%FUD$4P zyJF2o?UbI*?y{z~{-!O)I{%~%$$g7ypzSfLFly8&x)h(Hf&w4bevWs4&EZWdGqUrt znLNk1DVqjvRe#tpDYTqxj;A;AzzS8I;E=$Wq3)-aQ9NoO_FtF#x_C-S+ z{#frEXkttRCHCvq(9LzL?N-yR+^yu}S+_zr@xx%Q#ZDc`q2z8VbWlr>xBe>S6V+L7 z&p6D>nbL>;Q!bQQHPrfVE&C!_=j~p3F00<2G@r+sh9}YTnA-3FQy#Nxj~vzmWA&W& z?`GTj2e9g8N_y^dd0Be5$g4 z*zNLFDy_vPJPF&Zp(n&serkMZH1pw6@=>7$Wg^B)tMMZ*!EQq>VWsY6GPs+i5) zl2LU%`QGnGO&DZ4nKmNtD2dN24v+QqPZ1tOOX&f|dIzr_jhuUqa;vVcCy?{_bslfL zS81{ya$KS+H&*Tw1{Z^jvDf842Vb@@#KoX%T3hLtm8i*2ul&!S{7|;@1;4CHPlF*nrSOrdvH_ z+CNYkI~n(jYW*k({U@%w`xN^W`i$x`q0g~>2KH&!XY)R;Pi>zv15;)BKI+Gv zo*T}9Q}4_a7lnM{q6^f(^B6Rj&dz2OFJj^@`{%JppRnq3tRL&~$NdWZinkW;FWk89 zd+UZC-XhcFnvt)mew@9_rfeap2)S*B60{aQD-EcE;JXOEi6QH z?SNcbIL{Z>qK~u?PZk)(o``JS4|4{CM3|gCpRkm?kA0^W| zpOzdgAL+wn@48m$uh8lb$5m2}R+e{YIrnBxPBL;^Rlyst{s~WIdH2WD68_;n;2!2r zYd-DpX{Qf5{*}G+3*m;cd_HT)$oX6w8J+$i@+*1K!W#VC@>RGg-r^8n%GBa0B`upW zK7&N}Y#knG?_c5+-*N6=o8oxo%PPH+Bh)SD`D^YdDH4Y+5@u@y>uC0d#~ECjqaigk?dQ;aJF z|6&-gEPgw6WZ22S%O<{`!>yl!|FSjr>CD9Cyn(Ztgj*kDsyC=^^D4 zuYDT)-6xbX+A*;8^ovHAkaX7d#lE}eY2--y%I*zlm*n&BGqZo6o_)>#zulMnx#C3g zQj*cN0MszusUBTj4OOEaUCXX(Uonz;`FiTySZ>GjyNmmAKP+b@Bdb6)uGqm9JGo+K zSKPuCoBT78! zf2opQHlQ)Nmc@lu24np4BL9L8dxMN0+8TAMa`~q#qBy1JMTV7DX!TO*;97;`bg3_C z@sKQ2Sn9|P#T;{GY7yoKgalablvZ>ot*B-2r(?{oHT3cZTWEwK>b;d-O5z7#$R)f6 zHs|Sp{#7=Wf@*LbwI#i}W~KjMfiGcsg;Z;ioR9JAMfnlarIL$RXhnU?>s`Oy*{CGm zlcISt%#}^tM>G#q%h;eB7AEpLovutOFZnU2wXdJk;ZPw zhu=dsEze#h==d_BNy3ow(cGglrgLY=1%4GZ%Dq(ea@AW^FZ; z{dKhD4n5R0won<|*r|X>*TcHkqu}i$ z-&EyhR}nG`CE^OoNO}!bB#>NhIGG$IGg#*XO%4a2+|GIXXq=DF+VZ{jc*gU1*U;)1 zY^Zg@zSa8{TK>itB+t^$V@}hYT6gb#*FO zm-GEc_TpOE>?DJ62Eu0kqqXPIB}Vj5-dm!XhT?yqxyF6V>*D+iVpJ{fm%^fAt^OlP zr_%ghfckZu3mW}X*lC#aR}|k{QT$*$=UqJHyD009bfCl z&#W0gy=Ht<%}z}<iN)l|Adrny#km%dYM|q1_^VED?;P{B|?oj{~0Be^TG^6QVN4QhP|p;M03y%XMA% zLTzy-qf>rhB&{QoOkBfxtU-xAu@LJ6BIKi?=i67Z4-|$Jc&#-3!+MBf;ZJf&ezZ=L z7mAW|v64#l29SOV;~V*7*st~%&f!;Eo=-{Clh1&Tm6FPpzZv_xEcZY1VaI=9wd$uV z$K>z4c6{yDL4^SK;GFkQ6**r8^&qcGs8P&8^^k373)dWvWp!4i zDYh-t6iWWmRH-ZZc{!iy9g0${KANuLl=36B8~lv^#ISh8P5xA+zbIi<0hi#iV%y?0 z-g|vW@v!0{g%b;hRJ5)ONut61>Coqz`krR2*7aDzePLg5ZMvL$cUJo688<|irF!(U zL{c=YI{ebue|R33go)#{Yq^S_l#{H?6|Jw>Dl+5zTfMX#v&C+@hP5}+QHsxORddbC zr%NlIkIPrKwESYUv?A<^`Inb!N#?)9R2?=emp6;VE9J_N>)W@l4uSNgh}tFTcXT(- z=tRp|pPzc~haY~}?5V+jI&w0C^`Vzzc&=%mwPoiO53h37LSa9lnBPU!X|F*m{c=hL z{m6tzMKMjU-V%dYga>PC!MipauYOVCUoE#{WmC-zO|!i9o5P$|v!riV73_N%$C;~E ztx`8pnE!MSHwWBETnn(HU+7Vho5J~FoRg29`AiQt7c3ctVb8b7HFLhqIm>TJ4qLg4 zINt*~1xJ2MbJ*mb=6tH(;+UV>bT0au+{BfuRz1x*g()xfa6OP)N_;V)_T?5i<)<<& zz4S9ZzDn{N#Q9;!)e{zd(!(7Mo=tovVd@`R@>4xh{l2NbYmzfPtR6})IXk~Bm%qu) z&YhnNo=iH0v^{h_Eq6Y6oMZ^&l6G5y{mPtEXrMhDavDxc!ON2RHs$i02}attV`{&0 zPEPieZVIV>jXAj~F+Z!n)mQp7kyc?D{Ze|Q*yI-F@>>EflSVo&PTE&`593@tLG7!4 zkz&hlDd&~e^dai=GHh~Ij-6kdoatwBmQHP?@t5Y8w%aoFNU`FY*SNCrZx>d1<9tka zY#W8Q4(s|X&?e-+iOc3P6BBBPm;9_8>Sx!34G2#p>_OO*un*xJf=GHxZZp@o?k^@B zvBuCef%|xnDHB9}Fj*a8pzJ68u%kbLju{d+Ei&%UQW%YbAR1<9)MPg!2fO5-umG zJv2w_vVe7y&#ExdP3*`MY1{Iv9<4Ze`MI}=R&H&o3--EU)*n!tHYsjZuJYFIlpCM|Yj`>BX|uOjcwsir{8~d0SM_O9BuA=aN~v8sZq8)~p+@1Jb6h))?Kp}gCw)ZJ zr_7Z^nLWC4w_dKy^>>+k%PgPEW%w#Xlj7>sa$5R{maS;r&ztc}>M07#o^2T)P0L%$ z%>|c{QIP+#{DzTU_EXUK8kh5PCUH`XCKal@aUsTX~AYXsWZw~D= zi1u8H+|1vrwbpExdh!$3@@tHG$fi%H{yArtW#BS03TeBQDR&CxHWFrkL%DNv`OVK^ ztH;skleVwc0gWn?AbXnJ(>b}tVAV@uQBn`tHO)`RJKx(e`(HPD|ccp{Ty&3X%q%gf0I)?rTM8pt4@}G zEmv+~3!ZxgDtl>s@u00RzIR-~KE5`R|!E7x&;P)uJ#db5l2O#AcEx%3UuetEg3n4j{jeXfTagxn(H z3KJ7M=f~I6x%^GPCi+pW@*=2x)&ClaHxN?&dgR(k<*rFidZ+p2`-PROewoTG0jo@f za#D}xoSeq}Fl5x;>3o!*-_|xhX5{KS8(bzYtH0?df7QtO27>HRvzGei+fDOMnKTM% zzZ#db%VhAHlzTT8k5aisEPW7EUR zokIGw+_m-RLAiEo082lmZA4$ouQ8|Jq9p&+?@pzDX+36u%jBhy+Bt78x0d#plhaTA zeogtQ|EA?i-!;h%%gN>2+v;1NlT*4i<(KbQYqQH&U$xe6KI^b4*rbtg^r99!PtC2* zW`NgJ?!2gvjjy$pYj%)rv~FlxOFic0^i#V@w+2Eh|B@S*^*LoGT{&(q*R$SIT)|DyUSy>xWnF#oC_lo3&AL{9CS;z~W}msVf3`_de) z$dO*QFgv9ArS(<0W;4ydl3!D~!xDXDhdJOzWE%+SI8uIP&MByzv|QE8^vjp4_A&b{ zP3$MTruAK0ev(V;p>{Jpq_34bBPS<48qjqZVPdi$`%U_#^MdqF^;;UTbdf!+TGksDyjpsB!rM3LlR_-_1`9H}|Wu$T{M`c>M%VNDuU(?UZ zH96BSpI0|lj%ay%SJDYx{N2;IB*?G$^uiui~x@4Jf zMmoaeq&=D_w@iKt-{cQwBA1psH&-vyZ%}T&)jGC`GIeb~C)po2JDVL;55)~zeqQh7 zyhCmxSfM^y-%GzV{Ty&3G7W_McuVEX?m9O=v5WLc>#O!ivFSG>SMKb!l$%fg)mrjf zl*>>0rTxdsMP1+btpAyeVUwFj`uZrlIO(Tl&ZX-Y>8*20FS+><>zw+9?iGsnD6(f; za(nrIeO>*8e>nvE$JJAi5lL40hziY3h34snW+F2R&6nzP=`)4qHww-3IoV1!eEs}g z&AoH^he_`GJ{R0lbZg2YArI*jx3Vtz~Iiv|;m?eQdV1d;1OO zPI2$q@|C`m&i~zN|Ak3<5>KFqIcQH>`}|jLddH==bp7!$!zXF?f6XM>$*oyz^+sy4 zi1T|plHI-Klw#wq`puo=uDW_)*cgsH>gRRP_YDbcH2#lw){Woe&ZJf$s47>N(@0s{tqQq}SWsqq};olTh*&16A zzmIG1buF>SKeA@DZrrV@om0-rZEFfOw7z8hy%f5UBK#?x#afP>Y{|E_*u8jl@f8`c zrblshadEMh-?YvvE-Q8|b}Rmv^OBVvARa{0pu6Bp++$K|DmA%UDpRQD$8+4@P6Zte{Py1gBETLJO`!>6m`Y!7m`uq^MkwOvnjZEj(JxU$Q4-N?z+#EhT=|eP3 zAH($#NU{SApa$k>qF{aX)j(i=zB;X4>gF0J*yx#ai{Rkz<$HoHE}ZsTT0Lv7jY1~t37W>??r%F0UA zm!NK_-^8_iW3&3VIXa`d;*31)$mebfG~^FBs@xL#>N~VQ5R|W~AHD!v(`O4yc2NEL zx7D8=1FCCV4u4rWDwJwRBSFTDK-=*W(~eEiiKivG$!Pbgn<&tx%Gzd<0);&YIv_{qvje*8j3YMF-zfp>5(Y^6jszM6!c= zb1=X+_Xz0_`&k`#$raSA2Kgbp9S;ZM`Sr_-+b=I}=Ld&u7Qffjjo7ZXOYM4H*PGbI zb!n=d(S1hui@MM4KBu;czlr`4nBjZR@Ex`Kr!rChyNDoCe=Eo1NRAa!r}Lzdc;t~0 z_(MNFH8)F_|AaK&ROV6Hn*WY;Eq}^S@|_i-RoXVRosx~qruxc{sphE>TMycL=&#*X zgRUCdm66fV5agpx*xesf+M%>V^_Z$L)#u^ovl2rIH&I&}R4SM1Ig{j1+W&;4Pw+JA za>}B%uA$s8q+wt~-@XlfxhL*6?)$EDrD>&U*|czvob0OcrS^n;N2!?9pMV)@07vn- zE9#p&itkLpk4uw#TWF{#J<-An{l)t{($rVGfz^E0)>rSbadlzi>YDoMw)NFz&evDZ zsITroM7E4~lh(F#-P^gV+qqut+?MU!#CEQ>y{oNpU259Z*0k$d)2;`TxAYJCG&RL? zQD)8B+S)^^B6`#V*T> z>-Z;0j9Ol7B!VHOkCIw?qH83~>4hY({@mM>S}sPz3IEv(D)r*tVb+iuM~4vj9lufN zpN4Wr$sa~Y14I&&}1Z{@kXBbf@Ynhw5`qxgF!{JWWu{|?r(gG5_W z@Jf#MTzBz%!!v$oI@})ce-`D3fsX*sC5VKt;b^!E7bFwF+xzCC-smIwGYO)4`1^C5 z?-9?brjN-sKZ^3we=OMhevWq`zbnV*2%^{MhsSWdIO_8Tl|L4IhM3TvZNfW6>^Xn8 zV+{JOuao$)$4ri9uO8Uw~Tz@s}lS|ndjhvuO*0%Du>(Y7kI?;w8&5GZ}~}o{#~m7 z#^6_@ywVRMZs}jxG5Gc0Xs|)TPjEE+XK)?5&5Ha1!^1wp-d>vbrNaL)apMaQNaQcs zEnK5*8Rfs)!Qbs)c@FBCT)SQhPkD$Qqy8IkRGA{#cRP-$eaC{;rlP#O+FSKc+xvT9 zTQ_ct;%ZOXM05yPZQ0f%+5-G@;@d`i**^SMh4}BHKEih-_(pI6-gml&1Y1lFeNS}| z2~*|D{Y=9ASMW?aqx{2?nE%O}hG)**6zzR4{F~r^6!}Ar2>sW5^hbw>`tHRz5%r{E z+i*NR%IEV}ezKqCC#3V)I z0;f%s7k>%Z_%nYL+O9+NmyduqgKzkfox(lldUt|oG4{QcquNj;|1*`N`Jd{O0)J4< zZ!Cl968Qg)>GuLZ1pX;OGzF~ZhMIno--Yuge<%1_$w?Se`bOj}eKn3u?cWnUL>qvw zgkOy1i!Wbn{I77VGmzu)e4f<)_bFX~PW|aY;?}?ZaaO3$_{f*PTu$8lrTFS^#+Sc4 z6u$X8+2;nZ*=HH;wHQ1$_NO+T7~|kQ6RhV-rucybEB$Lp`q%g8nXJ_HxL6dkU+68_thk>8G(^`YC^vZR7X9 zl~?<1LVD{T8vjRu7Z5}n>>KpacfO*(U@Y0n`fG;s7z)<2Kt-~r^fP;2e`WCBqdXTm z@HpZlBi8u6hq#Sj`9Imy{GarZy-c5l$cuk?wATXWKboX+O(nc%f=?J2-kWnA=S1>f zBFyF~kB>bv%nh5Y7x+DY9sI)!v3@)MGK{q@vHv{rt8h)oj;^NxzX|?l+XVjtPKw`5 z@b1WO3mzEdg|E)x<^-=hKll^NPxwywDSkb{Tf^TvNiR$jR>~88Ji(`f-Ha3ID1F>a_^^8!%yFE-_C!OYC z(e{r7To<5!&S_caBmQsYrJwq$>G%BanDfBuQzG&2!4}3p41FXYr+b%|7yohOjeh|7 z@oE77E_>y7DtHR`glOMqsLxNpJBkTSX%4<)Fg6egtLzkSkl?2mgm-%G73G(JyO8&n zG5>49dyxN#$lvzK;NNV$D||EgrMRB7hV@)djg{RAqLb;&>aUYM3V7!P@9=aOuUbQi z8o`YmuM~jJ0Lx#gkBjbjmUqQbo_wn4De&3EZ$@Xs*P*-NVb6v6(fs)@pAXkIng>N2 z|32*hofn|H>JMT3eh}-g^y=T1ejxmdz`V}H)AAR?GmYPlc%7Hvqt9az4+87GiXY)PAXR7ZR6FB4PDa z!?XVq>L#Bf`Vsiw9OaWl&wmoGSH7YQkS(bD&hcv|%5<30=fy6eR9g=Oy)>$&NM zfB!lD2HDOr|92v8>r3NWknyGGNN*qUasLc!r;{SSQ^$fJaC9M)2*#dqu4GMAM}z z{C}d~P%vimv~?--{>0WxKQ=(OXLaVjPyDC^Z-y;W{APmB zjPgn&5|(_5C2zP37Y_Bvjp3Z=ATV8+=V=7`A^0w$KaRKyHxG;;ZvCYnSl^#%Op2uM z6JXQtUHpgYc2%`!dw0wzD7!EEWD7?%05)-~2QkCp$2BsBTOBYDp- z^*>XYLBi_WhCczni$2!>zZwnZSe590nkYkF?{ zD-p~8j{uv#=lv~=cN?!t|8SCCe7aa=Jd1x!!q-mZb|^xo(f;Ps4H?~NWs+Kv(Hz02|!-4l5( zNm|LD2L9j5Uw%a9%A{8rBE4sNEJw>v@0pf8$^_A@W5RRxQ~5nPpUR&KE)zsQJ3jOF zN#)Pxd@4T|TqcONB7gZ`wXsP0-OAC@YrdPFwfN6oKMelg`n&Kh$ftN}f~!u++!FBJ zC8TAj|ai2eXdXRUqOEIw`LFF)IP$geMX;{ zxmij6YQGP2`M;gyf6G~|^A}F@7f$ondp4#2LD8P?gQXV}K( z&wqn?6=wY9E$#Q?%&mjHZ2r0Jn$Ul3z4Yi6;k|;}Ds$+0@Fb2l-lmiONwE2&Ew0Yo zuPC3_(RmWSH^Gaq%l!39b>u&eKK+oqHsTFt)1KfzlSXvyP2s&69V31id6jAG<9+AI$#PYGC)4)IAIN2liGQb*t zCf}CwZUti&Pfx*rix|Vmlk^`#%=G^W@)v*y2DVduE+cOBQT}yc%m4LT16CgpsXqI2 zwE9SX063KwPURaDd95D?fz$Pa#?oE{(M$%W+VZ{Vf2ZCV{Lji*pH4Kc=6>9;C*cXi z4e$Cu7~g#&U+r@ol4fsVE@3KI@?*fMyzH6EuSZ^n)qkXK+JC+WPWzASXZ>ei`co5F zeM}^*@seVF$7h&_7kdBHD~P*UCxrfF_;Ikt!e2TBfjt@jJ%}3r@?%@eKLVEgzKk)^ z5AhGF{DnuhmVW>&`JU1KW%@@MOtn4j2p&$%{OyVZ!g$!BD)2j95c&(tE>FVh8!5gj zhpUlI`P=6(F1r;!FF!KJPvz%b7}oPA26fy9GXkz6jc6zMM{q1eeBQI+J*kI!E_=h^ zeTb{ii{6cRhXCC#p9}NpuOe3e+L^fZ7vY-{JouH&zavRD6io*AqwF6A==YEM(I4s} z)_b1+NdkG2*+xysE8|{)kug#P^n4 z%GAHl1E>AF7Hs`{+joP1w*J}){6qNWKZNC<3~N26`DAy3Nb9dg>TByS;oYd8VaZ>N zoXP7wO|tFYN(@Qv`c@J;E0hGyh%l=mbw7ZHk{R zw&3+wgzFd8K{No&C4A+Xe&P!of6|iBcJgteySYc?ZyZN?#Qep?ApiU4h)?@#cu(Dp z5x?_g=6*+9K2)Uq=5Vz9cKtkz$9p&@>dO~H<2YXA5&JCv4DXOq8;bJs+ei7!0^2z|48!uKI-SnVTh?cr8s z{`cE<7ocl$pHnwx3oE9Li7b#Wp~7fh)!oQc`e8HJfa=?7rgz( zMEpn}Jv%MX<^PnY=yv%1C~JHyPx!l(Wq1kreB?UB^7WpwW5724 z|IEdv#{OXP6m{67;5Nl}J)`^yV7>S6v6%m5V7-%RVZ`5sc|Ga&^{Mgyyr5Ej?>iAM z1s@0Q9I@md&B?PQY9+7qCf}KjZq3zGV)}Zp=39+n(GFm(g>}s=`hd+&t?gcj__5Ii zcQ5)r9QA!|Lc#IK8J^Y}Nd9vhqUJyM;*mIWz_SC}32UumxWs$Re%A)SL>{7EyYt>k z^8PaBulCsn+gbaJg|G2G1sz1!ps(h_(;}AqLtv9v{+e$r|F8HWU>430EJdhvCSlU_ErxG`LrN1M=s~%?l1^12e9Ujbl+pHh)Hiu(B z%9|Fk^gk4A`s?~#^P%}4UB5qx{^cmI`n*Wo^!uN45hi`VgufBk`05X*!?XUN`BVNQ zop05*jPEWg`1gA6#5qsk^NAQ6`86SD`E|Y|=(Bs&Pj~`+!>966QC%M%OAraGt|{(ITEpM_ zNx`rG=Ew4nW}(9+fq&Pe(qB0%_@na#poe%6qWZt}zjH}{3V5HW&kf+W!8ZSO|7pR0 zpD`@*C9m<9%8vz`ysob`ci8pytJgFB!SkYitN5~sO9=m+G^gG3Hx%6W!MX+!y$#-* z;}#xqKN(nKT|Qnk27l3;V;7HjXXZ@>p7GyuJveDeu+5;z*L#Fjzc*s}dN1a4;JqSW z`1J&LyS3o&uc4cH68;YQrMO65Db{#O@i)oe@!K$0y-A*;*>@D2`uo8Fy2aqlz~@A~ z(XR`BEOv?Vhl6Lq>mT_K;{1O`+}1Oa*Ib{Z={DXxBzy25+<=2E|E90xb9STnS+hO3eznu)W{w9BNB-s3e`uD|P>)+Cc zR|Qn`nagIX%DR>ydJ()O#~VDNKZCoY|6LJZ^ZSBtOX(yMewbs5k3in=TYo5c-+y|^ zi@U#r4%Fhb!4e z8P@fwr<^Q?<9zHeJXsbN9^CPD){}9g+0TG50|svA^K9ZkNV4JU~4bwKN4*E z=&hRn1O6hWSA9-IAFI#f@36)MKSvOa=vs6~6!;xP?2nD$v%pVBe#dq6J|p}MHWs!2 zfd0(!Fl0n8{;A;a<=i1+@nwJGt34kFTYD-$VaxA-+eyyha;zhy(&^5*TQ8&ZSty^@B$k~4CCI1Tk zOJiE}bMQ$V*YPOKr;6Hqx_6IYsHt(hX};~0@IPSjC;c_&h_wD2&e7I?!V43u_kK5k zZzG6=+hLCs>w3iSrRA_cFh7X9mB?%S>7E{u@P)`5-fwKtw^w823qOOL;j6&%4@XCS zhjBrlsR^b_I>X9;M3VnI6N-L(Mfd82uR%V=dnUNsPC=j8TwY$TB$YoQ!IJL{PUSaG z_$u$T1pja3)t}S+zfGV2+w%WSefObrYpwQIg6Kx@B#t(}32Uum`0~j`zdx-tz36T5 z5{@4UKqC(*y8UU4e+B41JGkh_tJ+Yc`|FwBovHi)_^G_?pUO{8*;zLBjY}q@*nqPMW*9ErId+#qJ&S_72kNwre7DW8E*dv$&%)b}S|Ti)L^zvzD- z@OJcH!e^q7;a+DI{q^k6DN}SMcwhK+0Xp%8jj!^i!?W@vKa{j4FMb!~jW2wDPJZie zknjCz(cgRX;=rJQ>Z9*BtUj-U-yr`RHw*lZKX<{hH}bmvOy#vUG_3r$ zO7fSzCLnM2l0B8a4?!fp<}>4~e?1Gf{P#LXXS zyzI((8!vm%-!F&1L+pbLytKTyRmVAC^1aYVIx}LN2 z!UrOs;^8^|_6cA5cEg{TzOvV=*w^f({0382n%^l&dfB56zS%?i9}719#XmIR?{+l# zq0dzWQ68(jRf)c@9Z!3J-;DlpVO8dKLci-na@XMm?1z71iVws_&NyPW-aP4au7A<@ z^|)Xk4*z-P6NZ&1t+(b7v-Q?3lS{rY)(5r|UwzZ~XI)zI>$eZ0{=>i}+U~X3e&VY= zjW2)OoAl;ym+{hg`7;~;!tW+{!Qhg=K5dBOU-o>G^k&aI{`yxXcNn%A8TH+R8)ek~ z{Ug?V)B&tE5@~(6iX(2olh&UdD1Sl35C690>oPs!8s@)a;Qx^_M8Y>y*A(|4f5Xym zOXO31Q>^+4Tm8;qqwOH_?HC*I_}5Er4*7Q{h!%mz5x47+|9Lam=NEzPW-l)J>r=LY zJ@tL7xAyDIU&#M`O8MJ+Zt#bEWmUnF-zt%pf0BOYpNg-Rd|R%d&LY)E z?Q8WB9-G78Pq6Zryy>I-b**Cg>;4A$54&Dz&zBQ-QPy+O9?Ji1`i7OK@%t5RW8?RU zQkB0y)AqYR1)oHH&nHiju-eb?MKx7^e6JhWZr`dZ|NG@m37$xL!&~nfzTe+4^3MeK zB5vdD!H!kF{u@R9hn=hZ{`xzyKX28Ecb`)J%}M(0!Iob2pAOIJFL}*xsr=_)lb1a; z*QEAb3{LI&HQ4f#{FOQR0`)U_^$)FYtba&;r$k=*9hl^&_WJ=?>Dv){5?pvcX4bar z90k|5Yq=6UJAO#M9OF$Kt9*QBFV|^iuNiJ;uNneRZ|4qzKs6i&#CX^rL-9ymICk%* z53hl`nAgWg1fb^r&lFwX5FRJ~B;hH-6FLvI=pVk%nZ!Bi)TUulR!t}T_NSaK}4#Hg>l3cCJ*itC&xR=k zj*<){+3&=71ILCYKAM`UT+?|~8Np2_Tt$G|g6lcTwwttX-=39XLajji_Ijuir&OI? z2rXn@ujPK)7GAJ-KRe-V;ahUYN$t5N3m!`7BZ~%skVd&~ z)h|*=%4fN(lx6?qtZ-7#(2_pVx+S+tg4Piw_QYw9O!<|2hQoRGUIIV)j13+IMl9YU2=hID!G{@eNEM%>|JA(zb(!CJ)8Rny3!`DVW4Xq=nfsI+ssO6 zzKJ4D^{%GgWdmKU>Y{Qq6rm|3{O(6QL?a?dAKFS5oz9X}zraP6l*)|A}mQ zxO<|F&bU+kr*eR_=I^LTtv>!UYF$pSPZ-aox+_QZjhXl^S-A&F{2?vb$16==G7GV? z_X*yCw8;3jQG2MXwx-t2s@5b(#6R23*4;BmdnrN3iwQqraLiU9{nqIo9YGze!l}x1`9>%dou#I9H!7XPHi=#TEX$$U_ zX=lD$#)G)xU*?bDGn}JFzCSaFqYayVp8~Fx=H3}9WV%h{DQzK}hOFgJ$y-o}(N8#Q zcBAErZD!t5%m`fwJ$2+9vqBLiiZqs*s;D&PoBYG%XjN0P_o&QWG@9!ij%`uvIpSsH zl}2;Dk>o9ndXjZR)g*k&5&ZK1A@4oltf-&NAe}FOL1naw^gPnTQm(%^;J+m zYS!K3N6flz9P2rbZ1wu|D7PQS=|2BaT=SUZ@K3`{$B7gUtWVOae~?Fm!}Z{G5-J~s z_5C{j3h__RJ48Zr_%jsqAXdroUf&Bx zrq?4^&vW{EZm;TV;gvZ{$HvzYWWp}Eb}M+lbTa1(=d*C97qZUaohIqp<{k9d*80R+ zefie3s{MAW+BcE@_uCKtp#2UXv_JEM_LDzofBJjvPye9(;`h{nKwIMEoib(0q)C-Z zx!k#Pr%v_tz$qsL+I#Q4vr(<2Rxdq;7y8C#QeXWS=d(#|uTLA1P}{;`{Sw^JNgt%F z3|V0FQ|a|KJ@ufmMTW=2J=$?AG(?9U?K!kpd7PJI70=Y~69&I7#u`W(8dw&tE}L1G zEvw6#uIr&hg#NrXcobfBjNP4Vj9*rC)VwS7vx;H-b+1`IBZa4)B@#1@hUP45&gz@9 z;hz?*%isLhWf#Cwqd+Cf=g>UWc-xb=^7dbIa3heTQGDE`(`ggw|~?aRqbLeS$pJ zddMD|-pJf~*Au{v*pRDdKeT4I4)t>Oy)?ba*i%>*-s;wK_I%Tugr4ev*DE*JT^CR5lq$e^xq1;@7p2&g>3t*5PZ zr9GYxmJKT&l1<;*@l*+3lF4o zOFAoVsV`)O;X*^P(7jmbS}b%c0(;_FySP@@;?%Ci4qc0NU5h=(7B?PS9JWVkN#0JjkD6X1uoJqI@OPe$BO*Jg1?-ObGQ=y zif1g8|U-bj#)gU9xd3=`(Hv zlHR>g4(7TuOm$~o()~mnVRt_iSE$eQn63KVr;Hn++lD0PN%<0=OT?>+w@7)c;b0gB z%E^cZvD)-Dx+{lYq9wQ%Tqj(0&P^heE=Kx5%Kr+k1Zu`j#VM`2PtkcZTqLqQN6XM7gmAn+9HT(U zX1wM1+P3#O?Auv^*??RAG~)v@Ob5ez=ri3owro{fy%jk;8oMMl^l#eN(!yKaesU$` z1!$^Zop5x&6Lihcr##tbG=hK3=m5>&gxO zd24v97)Ki5$!Q#`&-HsV!4-IAoc5Qnc+N*paZtHvoX(Id;g=ol15?Uj)2q+vmD4z8 zdd=uHV`CDo*~L@iU4?69oZ?Z=#cOU3TX>VWF57ZSpX__A^m%N0$_J&*($@$sf#o#* zep+~yTs@nV!xhS}f{ilH=jV!C`K?U*wORNY|5vBCEN9>9^=J|@n0hUmgtK~J>C--> zKHb{SqzO4`s9q_a9-H3M6t5C;p&lbQ7{A36Z@6nTYLNYDWM~$_*i(hFQ9Z)A3txOJJVD8e0a-q>77J)O0R`)dZS5?*Hiu} zPI8Ku^qTND;(R~RoC|MeF1%9GldkV4RR2m`lheLcEe{F+j5$3&q1$(zl`(cw>rHNGKz!BMe(WNm(#wdmY<8?Y3(0XKbF7S+Ama?hcEv- z=_p_a_nOzsrDtglD}9P{zJ5-~$xY1R$)BR9e3mV<_ga!u7^_I1Xm#N&&gm`7+0Wat ze5oK;!lvb4bHci&^0NFagMB&3zH}^}inqrrbJ)VOd@;S%_>d^bN+JQc5cT}Mv!!(*SmiYq_K$-e0+Jznp%9JX@Mb?KPi${b#m!=|V5DLFlb z@9~NpHoc`>w|r3hQ+ho9w0K&0O4IU`FAC4Fg=bjLO$Xx=DS54=2|rYfr)%Tsnt0+U z-GNmUvIax}i&8?iiYS?gKu4MG*$UhEf@(0MJHSXGV)a>HJ=4^)!adXVcxt^P(X-%4 zy5s*ODctHa(GaU}ci$SMjAwPqosrZ* zm8>I{A*Tx>1)GHOZVb<$`|20U4imEizf)5A$ZU!?{+n(nl@O(=Mcsf73;t3tOkwR7 z{)g9R!^6+!z2d^uD07P*o-Y)5Yx~n&e4|@$b(>SDu`YA*Q_J^L8B_*^YtK<+OV573 zT;{z2IsCfU)^8$uM$Tt9;dj|k4ZzZ+HbiL}DVXPwG=KtP-}G`V8ctoAD}x6R(+e`xmRw%MDf6<^qPodORJG;KQ zroO(WzOkmhR8!wnQ{PZiUlaa$9#! zr_{Afsar9nZsnA^Ra5FdoKhE(fxM+3Z!5KHm#OEA$M_D1S}9Zs$E*_aQ5Tf{6h76W z-PDflr*`Z-wPWqnjyq57*lTLXuKX;=|7{)HE$G;8ldRpwnZ&5WQ&rJoeWvAQ<40tx ziu?}xsfT*Dp_!#xI7@2rz_*xc57LiR;#99gRy`EuYtW%q2Qi9uCE^bx6Qtiq*G1qD z^~3##HD~KUz5K9dm<~O4pga1ohWz@lrcQ^bBK=LHmm`dqs4fk7X=& zD+CewHv49Ph-F(a2=2ytds>NTXK3zCHQU3SOQ;dU3En?9KPmpPe&N`7*TwE{FNRbfAteS{5`=I{xMznZk!Cik!vF1 z?Wkskr+^2Ow@R}}Sl^Tw9!h67lN@QK+@k7JPiK< zPG8kUWhj!q$5)fkW4V5L;PU$}X*m@CnF-$k|Lgd9>K^Dp@G1EECH&8n|L(}1kmObV zd*HYHJE|1>uqBDF@~hyt@)Lg^*!V*>iO(MO-m9qZ=5grcr}#h(R2KavK0V=n;C;Y) zuUoVy@@H_~C1HJ=dK|c3nG6Zv#M!X+B+xev*Q7S5Jq7*IFetnekTIEmE$x8m%>KLYH-KN4)=E5D8f`}`Y`!#~eq^_3>C@RdJ4 z{3fsu|0`f0{z$NeFMW!*jlS%8eaU-$m7Uk$IH%t$r(Xtp{b69Quiuk={57Wg@Kx8m zzS^Vdt9(@!p0D&8U+ELi+n)qB`}Yu8wY96sQ<3&4k?xfVYfq28!E1>L36JA!SoS|J z{rX16$4}od`uKfb`Y$6quRj}X`r2cv3?7IRX^$!8&lLgDk5O@jFLijH!-{{t|1ZI} z{89dH5BA|}JhSjMp4>@#p5~h9k96dE-~O5iLwni^yd+_bSL=b_NO*PO=f|IKAnU_F z8EoNe{8W9pCE3&X*@%By!s1u(d;X!0ukd#R_s5CUes|~W(?1#P!#^Et;h!=wuD^HX zx?F_X9~JlDd51KL)ZgvG+4?)-Jsno~pI82ak@w*b0bBU$KNxPS{ekcrIn0n(<*WbK z{KEQw?J=c$otsn0oe0za{MzWjMKn9QhM(s^ORrzL!A(Fk!B#(H?-H=t zQ+VG6`|z}8kMSj6c3ANpgS?Ngp0Rm-jm2JnbBFVL25FC=Q?PeCXW#!HMSY71s#+6>$(Lf0P$Kf5^gW{;2;L3ikE447U2K_O_Xm zS9q#V7M}FK3HJKugH2!Mum0SZe>2$fQ~CX4m*2djoxKh|Kb3d4MRC3Lhq)#i0H(@k zcc=7;PnVW?zT#qh?U6(f)iw0AN0Q>UR?;uSr^<$P@HqwhQ#hOc4tLX66Sms8NPGDF z6s$RfNPFsx2U~e*PoCqktv*t89{jc84~#JA&&F^1;_r*R=RfQ0?|N?>ANJ;&NPG5Z zesNmD+OtRHaeTtsvq$m&3QpAjzBs?4S_RS?4P)_rDd8^g^$q{cUXJusQh0_@s+)eoV}aitNgD|{AKW`fcHr4Q}W%N{GDL+ zZT%8o@_RdZ?QtRgt7~w8^7_vqulyh4^v8iMJn4&X`ohOLeEBb9{w+@F|0#F@e0}FG zdIJ0qXMJ}o8iv05kME`Y%VWh)e9PZF-ssn~1^5Npxk%}qk8O*u_~Xbs&p!)neA(Lv zJ#YUQhgIHMKf}sfdm7Cmt`DU0xZ?4c|LeC?=*<7<9MvDKo8nXZM11e;u)yVBl<>;< zt$t|_Cc4D1cdJC^A%8pPImzBz@aKY62BP(!=ScA*Dxq7+s01+Pp|>K>ZFpFTzZF4(Yw5sW_3=j8gtB z3@FNxXl`Tqp>Ot{0q=+tDgEmIeg5d) z%k1w8{}13x>wY4UbQh(bw;rqcK;D65X zKg#jdo;_c6&Ga8#6`#e7O!`glF+V1L6B5>*O>^--n(*rOcsdrI+0&ZJFH0U9qPl-D z-z7cWBFxqS-$vTkPk3YSmE_F<4zJz573cSKQvNq1Yx#dLo$t2@Yty8!J)WKiAC)!xhVfA9=tW&HJ+ ztf=mPDT-&uGCAHJ`G=GJNBE#!@t>aXS@0=>?3W4u7XHidXD0k}_$rTZ6T~U6|9kj~ zfA}DSv-I!cZ2Ifam|HpfyJn!aKk>M3`*} zehvHOgolHdfk!3$9+~wP{!R(sPy3(=1{=C0{zJ$cU-vy;-*j)l^)Z3VJaAlG z7U5i^u^cQ%J|xYYA3Mur{d2beB*1)zs=FVQpTVi z4~yZ=j4<0X;TaCk#hzj9p``e4llWRA`Xv0^Rs|AYeX;SiX7n6zDR7xP)3L6kZhpn# zZXMcUt(oQdyX3H*iF5G4KPXA@6uRXb@ffXl_@J~1!R{iNleY5xp|J30xx`&qL2RC6~c_h-FR~K@&@Pr?8 zSn1!b0k}rY1{*0Xd{yF{j zV6T5dPG5D^>?wRb&#>@+c1axHcX#2dJWO8kIWMQL{@e5we?719;nM}T(eLH-FTX7A z5w|UER8-fakiE(I_JH`knfU4c-Rx_RE{)%|2aU=@-|B>S>eI@jL`qUp= z`c}su?f6RHqu>for2Kf1v)A8<{P6bu8Z(lg=;W2YO^BbRPxeQFE69i>@AFT4@@V|C z=PgRF#u`hn_T+jGd@N4%Dp=)rM1-042pfR^Vy=m_C)l~1*GyRL^-i#*M|*<(8QcRW z`pxw*{7WJXcwhV;UzWqaa(McJxJTGtNnd-cX}o+Tg&+1@bGZMkIG@rp7}1%x#yw4c z9AWl-@ImRl%eUrT6 ztNEIbKU0b-R{ZY)Tl^KC?rnT{4}s0T!rPYmp*&O-v? zIT`(1J$dK*x9`ET{_UFIF@J^sJZ(g@7_2qFj)^dP3j7PO+NkI?a0|FkgxRn8p=)FO zl~g`?JPrQN@Rue2%iul0$0c0L;5Has-<|_B^u@U6);sMY9ti(vy!Jd&{BMJeuQlMW zB0nEV_Vm0;d$cW#>f!mH@VtbN|63t@hWxuF$?N_@efyZif9C_z3-7svwWkZ}RUJ*)s-wn&Yc{jDH*z|O zp71PxbpN$kvGx8-`Na@a%`f%0FQM!E+x6iaR(}2rZ274*?)o8rKi5PD@vv|u=UU24 zBzyxr!?ORRv!^u{H$d)xf^?MM1;5G5{!p;l*BX$*R$sK|*w?@|9&3-X5n#K2(ERB* zu=+HS?ynyv{KXN5J&M1mzS@H6Ur1)CE=?v+MM~c_E`7oS;O!XMfv@)G@!9YUFYL{p z3+T^s_C`8+?J1_;E?-FY)*$~Be~sB9<&UuCkMi$Qu+KkX5EFkroJf0!X)dBMMYO@7Vzv$8cZx9JLuy*F^4Gtg zH+xI=U?P4WCwcLAMBegO_@@rvyH`=~aA)5^N2K=Bk?^d&e1n&z^;^Y#k(~)oM&Iy< z{7^9n-gguKrTvOwyqlb`!rPDgaUcG*4r>pvMc98_nFwvjk44vWw)Zcjulc6e{~2*L ze0NLCZ{?v#^Qo;l`}x$_V3U`N8C<+nqw{4~D!^4ISPhF2H= zFH(R18~Oi5!e3qd|K0xMifz`|LfuB^Y8Qe&wT%-XOq7F zn&I+W{oi{IuP*=p-TL=M_5YptYfsF}NRMoYH2!M7YUAtD!;4{m8r3P0__uO4{{M#b z=lkC;QvUyL|MTza>-pD~@a*y|sHyw^Y5 z>Hp$~>?w@=!O5QX@ZBE2oJf1}UdeesbVS<2cP{6@3P9^Ehv8)3E&m@Kb8AJHDP zr=WXC;%g6DJxiOCaNVuN>}>pBPk4Lq&G@%S_+;=e@SmTs_N3LbWcA4++5b__{t{<@ z)*|)*CO$Vt@$8@*Xs^_ta}(}$S24W5!fkM%eG)z_@y`O^!}CVHQzg0sJObP~!fYWo z(@cT4aB!apVPwWsW6__t1Y=)=YEE)Uf_koe!gXZ$?g zo`;d&B>Y2@d;@rQ!rLKX@yCOWFRVQ<49|a*J%N!uC&`ar5%az&VeQGQx;4sS9??{> z+UvXUti3LKhWbE!?yZXoe*sUBe0n~t_N(6mt^I0`R^6}K9<6o1RGMrF}mp=;vT?9cZvea&#&RN{Ctz} znh1YoWM|SJiQn|U^0#8h%f2c97Lgw(A^$96lt_E7YQIUp=V~vmo4)o~JrHbrtP0=m zup%K-)ZefkAxQbVH)qS=Y0nnJn&aCfzV!RRxA1%L;A#SRqcu4|itlrr zExy8f{%TnICHSU4f$-IK&P@$$(|3#ES>DA7i?8}%`~k0LA-#K|Bhv2)KjHicG9vw+ za1`f-0mb)&h36$K`GNSo{E=WUFKqJ1@#D%QYp29y2z7PNYoW0|7_Jqxz+T(WM zLvf;2bv2=HI4b3z_DsB->nbDB!@RtA4B>ARVfONy#qfK~P<0}Z_83;(v^|BFbgT*Q zSKO5NFM{X7ACd6GYq5tR_TEeNOV5kRvg-5V->)iWUn$0K?6{o$4g455MK3#JDND9- z{kvj91J^5rHF)MHdk16eL9VL~ic}u2aJKx_9hpe7Ot`iW?Wx*PsJYQ|c z_5#k@k2#5&v%@ z%xbW`Zx67gZ-ZVnp*&7W z`T6VTc~=qrsVV%wZ5;Q^wCDS4tXUJDAE)M$Z3$kN@>(y2m&X$tYO-I!Q=W;0)!!LD zfcVknRo^c?9=tBt>fdwVjgUW6%FsLD4LDyCP{c~B;SIX5hb{Uxf6<<^N`LB3!k)J3 zZ&Gpt*7)bKo?jY%Yu}peMACOO*F@T*^+fu|Uq%@AXgvx1YQlXEtjSh_$0z)wv)BU? zzlFc|om#=QwSMb+r2$~2Nwfrc@z)KA_f+6(Z0?n?_DtOtztSWU9?RLV+VhXWCV%(b znlS!6En!HQpQx(eqY7_A`aFL*@i(mYx|GbY@)v%pT`Sfed-@hpeTGPQGKn>;J*HkIBps@Y*Q@h4n79$LHkmU+Y@=C(N!1bL(!zQFH-# z1m{A+tK;A8_)5=Uu%$^ay*NsXqQJAl|v2bP4d4HIO_-Zm zergZYldYv&yZ8)m#Ck&A%AUD&m=!O zXHV_Z>`7kZhsi6vK8~;U@G{uigZ5Y)iu`2qOr$+EZ=rl_Pt9JujQu69PfYb=I^(nY zyC)?K%>i%4`I&&?_&o-{jo3=J(%+_Ct37=WBCIrsl%Id5 zue1DoX7Ac;cjA9phsY1%;cXLM4y&#i|K)>gvm=PV#t4!2d^{U|g=>c2z_!P8xVP~5 zuLydqdk4c09aEb@~+R%SZ=9)-*U{*L=`xXCPu;(lPjjuhoFNXiaq_6S%9O7r=weX)Emb{*Cn*5=s z#XanAq>hLrzZ_epulezh(6{;VlE1OXH1*?dY>2*cRV}+laSy~b(ZjQ9!~3he_7_O$ zQQfon&O%;&**B8>_!DZg8<0FCif6*N!8fcugfrTw@>C@JKa{^=?cu5Xu<==YfC>+b z;&D6#+jye-dm4C2;!FQzu<46GCC4w4e$Q9=o4)GnHrVp@RdZphpWv_na9Hh6 zZNb`~+MDW=-LD9r>Ttt%Yr^~f?{Q5e{S7#Kef5o|e-)cesy&>66Um<5A2)usLv8jf z*WU_U@)vw8{N4%c`G;`VgunknZKw}hCam=I#c%0TfB93e^_N@yr8YeK{0JK&;g>lZ zR{Spm`}phrz~ZO=ryAZFV~4-7CVN-+}sP`pUnxiI3&q#~;*&`o&|uK*}%m@0MSI z4>rE^b-(5HHD5En^!2`?*WcdhfA4hcqyHdzAkzKzHJon`D2~?`;kWTx-&2b}FY&wA z)rEUc&3Q$G!Ht~P3y66dcr*MA0fB^j6CcA3WQLw?9+ddnL-qUk*G*XRSK>E$;q9IN z$~Ef3^O<_mBp*_Ao0q*#2AT^$TfyZua7!Y)I%j(|VQyR6P(5gy)+?z7 zlR2VP{=Fh>$QG>ZqRR_(NF;^h4YZy|X-~XvrFfyx2DJ*ww?0nsy`paQf7-v!{Q%8mD;GOvOMOvoIh)>;O`nuapO8%-ot<0Gt}m+}Z*Es;ZegF*!c_jL zM$LuhtkB$yB42hWdle6zV^-t&7lDmvJ#AY*}9;7DBy1s#H> zx>x&+ojPb5u~SyQH!E|bnlwuoqs=>I&G%-_{iImhDJ$KZm9|sVyVDeQ4EOFe2!>T& z|LH?o6*kE$E$Ra!F<4{`9kP{OiaN09>B=tkx>nzTx}#4cvjIAU)lh3yr2}>3sBtk; zDV!oRS`N9BDmmQ=ex!N-h3BvKzsJJ!-9KSA@9+NAwi^~pn4uN!Oa?3mT}&_Q`>Y!oE1g`vK{c(geEk)L0C^r==gNv0Nij|#;m4U@dQ%$9* zSSl5pGdA2S)*!ETa&@cOw!Y@xr{8#f?@_$6@VOMml~$>guF>&IN=fJ>tEpUlx6l()4iC=ZkvVL3 z7Uixhd~a9j^4Q{|G-zKAvs1~*P0Hcs9G(eQe#)&PAIy&S50Py-?Q3HDTM28w8|~ZH zgx_#8`;trqPrzxPQM04{p3J`XYZ;vOT`|3hVCj@`%h1!lEOYV8jb@(`v$MMVkX@?> z`F%VZ;d#EC7+X;ksl!S-NIYj=sLm1(y)i zHSI^Ea#sD3(|%YJN!J|waueB?$m|T(zF3mMshy4l55})N(!OJh!P05Qbw_XXD)#ZA z^Wx{zIg}?Cfa&L4_@+{OO*vHZ^Xm4K^L87sQ$j~h^;G3oksqi1k}O?wiMQ8Vl=7n_S@hK2L!N?{6W<2nGa3H` zoc47zJ7wg&ozXd*uRoubt_=I$j>0PumYm|F_Sb}8PWv!fxpxOEeion6?APY)RC0Jy z4wot43O33(pFfJXx3dgfLPk#U8BKhA{%|?eoqYb-{+L#uSLOEI3;QO@CQjk6qJC8z zwsfh#@$F(JSZO!A^TCZ^Iqg@r3~c$Oc58O#=Jst|mJ3hyXB9S<;+lw0J$5`cJCgJH zGY9O$TM8bGjS|lG!Jdg;xIEt6eSvm+{MK-?NqA(fH*W!DZspf?sZ_v!n2o z7jo)1RDTqHcbw|SNU+(-7{5f5a1(HC>T|ALXn(~LGIF6F5>69-xzFkk)h{$i2B-Eu zDTkYLcGdq(Ms^ae?E0~pIla$ow~g4T$Og{WXVq69AGN0vGPPrQG8K>|kg6H6u^W%le$H%9X!%g5ObmWxJitp;|wB+=bW}*CM)c&g&!75v%jXvIS?yS3m)s)knw?TE9Zfl01}i>t+Fx*W^B-8* z%$(j_u%&Ai;VpJp>0IXQs{L7fRuE5Lf7DNSoH;wP+a0VlTmG3Hh41wiQQE(Gz*T`E^$RY3VBE!W*5#&ET2n$jzt!X&{`H z_~jZI7xi4KCoWJ)$ENaOvqJQ+p&Wb9Io5M1s<_QoPXCmL4vI6vW&5ff666 zYvC7%ZhC&#ZG8^oveJ;&JO8SE#Y@jk1Jz~Y$~@Ny2UfoyL)FtWs&XOxD%vm!p<2Bq z9}cbGVq|(S1;Nryn~#3jqF<8d;F?mFoCsc2`Mo-wfH z*+2IzD*tS%isSRC)=;w|W}9onF}z~h+!Xvn!f`-2ZWE3J!!gQtivCQGxc0+&ntbE= z*F{{@>Mgc<*KGBAweYN2&#nVm!W9mroGIxV&u9vqm3_(_J)bS(n!$S5$!{-Nk+Z6S z{YFy?KVye%hgqO@$cgwthU2dCW`(Xubmh5E*FsI!bt+EJd=+jloSv87R}=qQefQPe zTe!Di*L4=I{;^_V{%-_!Fq^IUN$QlR`p+h;#OJSi23u&}fAh=Q{P(?VfA`;`?`7eC zoviOV+2+yzi6eHD&cV1uBwtr_dNeFJrW03mno$!@uqBeRH|bF#5{bW6j!qZDX>Jvi zKGRoaw)N;)W}{u|`CT5}ZLGs)I`j^Q%klM+?;43+qedeao*0JW&dLGnT5O++{=-GB zw1nemq$?iVb^Tyq``qREUqMLCzsILis}=LrtCA&hMQ)c?yVsO@YWpo*dta%{>Qmfb z;J1v^!6zgOTBr1z_^mxWzAoQ$fmPu}Z)5B_{6B~=>?NjmmCj7~3@X_FfbUJX5zO*M z)o;DlqtTMz)xA50fQNz)R7Hm_LcTZWeG`_x+T3C>p(6=@U(RC^|Nk|6H!vt^T+(kF zqRps~8m$He6!Crzcc;961fH4r!keONSbLlBh`hR%xb`Y(0$Y9Ah{Dt^4|iR{O9d8vqQf)MLC;xAX55AaQ5+4d$IVI zw~Xt~?Jr^INU+M|hJg6Si}}q__|HiAOGIAp8NHsc_QG30-W`{4S1O;f^14*M59k3V zr0)m9nfNHbto*dMk?Q05DgPDT1h9qouh^4)Z;!cF)!u))J~!^kdhggDlg0tre-G^I z&--9sf98``UmnUoD-Y>!p3^6btNPk|=&Q(U{VtKp_a8ZX8b`c6^#?va;`#U-4EFIk z1Z?`+3+rUC=0KuPpf>5>4D8b{TR#2s!IpmY zzrDc6;6$>g@!996!uIxl0QUAYew#hTPhE$NA4@vLZ0RpTW0r zUYPI)3Z^hw+^@h?n#Vf{8@_&;G!b<^xAzm#5| zU#h>BU)pO;^=%YRr1qx#_xZN~Z22d9s&C$2GuYcZ2kh-V0QUAC1e-mD*C)r{)bSOb zZ29nx0Q>M}fi1iz&tfeKu#LaMd(&SSo{gaul;7L62tm7p{{sFf;h%x`M_%90h&0|F z#@WK_I)(Rx!TLU2B>S^Dn|-BcW9*#}xZJ~o)iy1?7u;BF|D;MsvO%8Ikb$ zoDFNQ%E!Q0CcgTskHOa8$lg%!nmCd459e(9!q+$~d#{7Ny$!K#_O7AujsR=@R#DBS z^gm$5Q6xOg;RiNhE(K2SAO^nX$0jd(Di3e3z2nPX2Zv=(a}{q-?_!%h?JYSOdv7Q* zknoF~J>C;}kM%8($G12<{;RQnA=p6LYwqj#Mx^v>FS*me`u;+s{+-7P)&9NHMG>E! z_D?{KSHN4LXXBCf z+EaS%-DL5bbNo{r|JGY$dF;hC(V!p2{^`I7vkBnc@Y}o3;;X;%e2S#XfAg03-LTD< zI%9te_)n$yZVs02cW@%@?WgisE9LJAV5&fP-&y>TEu@8WCF%d_KGvDS&nwS?{s>+l z-Cjvw_?z@C9)Hi_Z61hY$?;J=ysLdG{xJ!Qe=~mL9|pb}oT^3mRzcsEK9%H8eKMBE zJ1IUFfmI$>zRP|d%VQ7XAQHcsv*)WkjQ<1VM`3GNCoV$5b8}eV4toA>IsAyj+AFOW zcE$y3Jl}aDmhWK+YwtCc?+|oE;!^~n4;B{xBF@I&hJ-6Go)Z)5`E>klS#xZW_Kq9R zS>N-BWbYczKD-mbX7BgJPkA}39S2D9UCPyWHN7$RYf4<4^Wd_3-7*B0MT+>Nij!OlnjQ5l1@HyBf- z>ix9#D${u1S4?QZd+|FF%kO=_8jl(Rm;MQP^fJY|zHPN3>T8>Is zdzUQ)TYf5jSHSb}>kl53Qc~*c6|?1Vnnk4B=J% zUlRUn;5`z51^Ulp&z@bag3t12)o(ezXnOzfA>pGxC)rne)n8b86+ewPK7OZzEq#jL zAHWtr*}KBoQ~Ww$@1SIVlX~`sz<)x*+RN}B{CaL8(%xjk#|Ff+0pxGOp2>^PbKWXn zYgep|?EKV!=v$gz;Mjb>egJMN5WdG`!KNawYSVn+H)!K7oEpm0QfCFFDKlaIEY?4m$f-KuMmK= z*MQ{f5`TB(o596|XTTTj?r`TE-Y|#z>*)U& z|Kkb&a89g$-IG1x5%>+?3)a|PN_=5GyYsl>@c(P}_PUn6f5`6-QvPT!8MQ6zPqbHz z=3aUaU33NVf5dP7nf8iV3AXyKy;x2{?#Dqo3wyPE1ONPl?}D%Uhc^>`8axh6Hxo$w z{*M3r6Y+WJ@J^BcXYdHTYjlbDBe2G+SrLZ$!fp6%{MO#X>f3DZ;SC;%d&x8=d9^>? zzgzozjuU+69m zaSQ1g;^g&g#mhH>P5#)g(Vmd)mgKkQX7Necq2JvOEOM0;=Cg{F%ze61a4<+T%jwO94=BH;;~KMUWU z<9mE5Kdik2f7jH%YVTIfmtV$-7Q$!BQvF8h_4n921=)tcr5tM5n+ZHT;j@@bZ-ig# zIf*2HDrYaR{@>)qSNrn(u3+Q;9D5faKMW_*+ErBH>e^M}cP4z}3-3pHd>ZcBqnJH_ zoyVwCBDLq&uxIUAYXfYIJ@pZyM&vW>F)Rn#5j+lT=^OiO+-qti;}e+cT`aJT?VSCK)1O#m}(PKM`!{ z7v{eWR{w1LyuR@CoV`Eg^m{pd*`MI>ulvNc_B1Amv^ViF@DGSEdxg$u6XI^q$HjjL zZ2ULSXSuBS3JN+Cwqz|Y@Eb|L89W^M^AlG1TT=Fx9__8MDdFj!NF+X=XIJ^(9aRi_ zMemG^s0SV00qx^Gm$3F0e30oK_O`{RmP1^;f?5NYk-zhKMu-cbC;fGvJX-+sti`W4>` z!KI)b^))`5{+$!z+QYXdzU;N&_x2QDZ|@3lDamUs>TlrJ7$VYI)atK$5{5|ed6={5 zfB%4DSeIvZ;4&Wu>)EHqK+&=Ti{bw0k_a=cm973nW1L9#f5q9`-voWLukiG|)3D;V zzVxIFNq+;*USDIs$xHvY4l6#_fh|7&>GUdnil0wkZ?KQwc`iPR-mUBpJR=~@zdT4XJcP|fJl2M?8o`b0nxTtIP%;0hb24@d?Ege z6Yg_FjGyKZqW^UMslUp%kIf0kw~rZMD^K+YdR}B${Q;M%{Xv&n_9_RTT*m?0hQa)8 z&Kh$?$1&OXh_l8Z(YHqwvv=v=wcd&7(Nl}rZH#ZjxhDEgkC%$Sp3PYN72YDSg(rTE z8*df=!@w4Q&3~>Ut~USC`28O7^y9DQa(?`62K({%Y!|-9bKP&1kO}ndxE8iOA6hme zt~LG5#1?)MzsI_l@>tJ14QJS!g1p(g^*eEXa9OhVb8rh~b%?{7i+Nloy@s_`Q5pXI zgeg*fslHl%3O|v<|H$E?=$gFj{RqC<)7pJ^g1?6o33ntthPBp?=0js5JMeEMe#W23 zjqtnhc1-b`4gNavTPJ+lY}P8qe@xOBUgq!v$g})rc2$yBdiIdLBtPhyVtBToIgChr z-8*>x{b0}c?M3&O8^CYEi4M4_n9*dad#PTL@V8Rz;EtUmKJv^o_Zvr;{JYIy@g0NMFBE?Vj z+2W_Qk2@2eGb1~!ea!O4)&5v(A$N25E$p=*yKYL4@UsqU?PjV-_4$O>Y90+y_%uV`Mf%R(K~w5|ys34GLb0jObe%v(_#7y(+@M7dHNb&$E96b>Zhp zUTfP8MYd~_-yQoJJM74JBKwQlJ<6i1QP-aZ!m%Lv2T+sA=lO<4S&Vc+xb1{+^%b63dg@kw55d-oy! zsxu^YZ-spVa-K7e#qfX_NWQZ zIs?SrtO-H45p}Qq{;eifotzKXmw3@P}Z{5ky*h zxD)BOwTFfGby#cDYJN32$!l$3JZhgN#UPeI5>85@A>yy&rzFC;JN=zMvF;FJ0{9HUBet z@r8}AwVWp*t3E@d_+87{;wSs+PfcHIJ2Pdht`+zZSpCbUU4nY1wXScbysnQh)7sX0 z_srI^7XL}=m+^n|Rt>9^@eK&qL|TixJ9z(;-&%Y81u+s|Yr&QY&(?yKy{%n%!g^QQ z>}xIY3mRJ25?B2jg*mH#!n&97xF7ZnAGZr@$7Ap4RG%dOd$93k|F_t)waS&=zhlqR zEB<-Nd;S8_W_-!7PudLMNoCYJ#66W}NO%?bVOa8Kk=G_K`(JnI6F#2)&%)E%@dL1P zBykc6|Bdhst9*wOzLl@i*V4Wi>% z|7`GMVD&j7VQwL-SZmL2&Gq90H}-dj;1^RIrQp$SZh_6;mvUNCW6i0BXerAMtB>h_$s`e z!NwPU#^JFqFh9k9pA_CD#CIjSy%N@V`eOIi@l^fKH%qPMBl#_Rx61E%Q!Q)Vwa%}E zk9JsVsjEN4WFYakCVZQZ3IEz*_1`OywEkQAdfsCC!Y>nFk0(*zJU)s3%CPKrcJUED z(_z{BYc783pMCsB(f1oxdsp4|?fpWqZ|@)E@Lt$Ae$CUh*>}MorSclW%c+|X9^F(V za1Z+5FC{pZ2Q&Ni$g)zxdYQGQV_W_V`hVl={ip)=)rW}GzHS2dj4-@EwLkgk`M(4k zU+wL6;%4nl?foirt^ZMfcqR6%Kh%fvdS7c!vah`lGVpg2R{NuiskT4aI}LraCp-~( zk4wmVyv*U__%ZoDZ10lnKU7;6%4SN!Z`HB(GyXvdYpv-0@Z0^V)^?r%=9VFlu-dNS zKVfes@i`~)JJi%=TTwnoa!vGNG2*W!ycPV7s2}PxL`u(#V2i)%OGnac^+o-o+N<@C zXTv`UZ1p3o^^C1+qq(q_^D|(p54xYbmhpPW#24O|`eOLyE_GQw^`9lx1Bt&k*z>z{ zuWS6Tty`D9LVRn;1CiuwXir|g(aDQ{0@(Al518zsRxOucOaqCizLR;rWu7W)ie2eh zyX?k?0rk^}PSoPq6#X2VgKug$E(ymM!m&Awht1&;L31YEY2iAVDoW)d??{}k7XC^4 zJW;Zt&AOy>F+MZAoy|MM_)Fnf2*>(xEQVukIA#UOL@Fnl*89G2eQJt)$plL&Ycf2s z#;UCZDltino~p3QV_3QxPR7YhDXVGju!`D49c@nf^>!t*D^&}<@k#3R!aw_0Rb8z| z@!Q#RQdOY!Hmj_l_U5TIPbc$Kg`*@#_4%Ql{EKT5vwU$_skmddkRCR!2i#AdKw&BE ztPqPt$4)AO7VA2=LVXB7UPqZIm{s$9HSMFyUG&tOCu{Y@c(fjsew&d;OKO%gSw({NFt%GgaQeN01H7_ z4eFF6vQ^mNkSxvj*1pg&47WlkL1o5>AD9Y8Own z@f20HXh>8DYxQmuuZH6}YQ{~4cq+$Jrc?K(+E%ozrYT&^ntH{HTg6jj5{c_x*!Yyp zrz+tBlQ&gqc?%VOR-G8$bC+zHrwE*rR|3$NaW-!0BiJp%au|Ji`8{hcW#z`K)R;At zviiniePh|S#l}LhF)K7S7dV#6Sz{$@EN3MQWyMlMv9TV>V0T?z3Phx)@lJlJ z^oK&@wT03h`tNl|ed+d$E1O+Am5Yrx@;|Kc#@fb(wT;(irE3}*u4(9gz5ds~zH9eu zy2ja}O8E%fcehw@!F63PJ$lIau`!5$^Jw*>k#&YB`0#F=)+ZVaE`jB=PSgZ2$qTpw z*1ANC!EzISg*@vLwcuCVo6I^zW;eec*j(h4A{xQJw2rRX)jCqLVRlxx9+OXxtp}yB zmyNj^YLv;*up92@aP<_LjX69x<%{CK zihP&=Rz8$)TK7@wRC;W7SGO*obmY_@sNEVF$@`8gS^_$aVR#w}8vCiECM=T#j+Fcv=1`{C_4NB%^ktd?@3WQ+rzk z9*tj4>+R}U%i1_mIcw&BSa$BP>|y>7&CVT@T|X?l9?z(3_ONU=o)Ota!?KI;4A*P< z{GS)TF=Cdj8JSV+k9o$)0R8oJCS0si@Z{pK!h9Hl&;on2Rfbvxbq3b|X8F z#FgtucHS8`R<6^?&Z9fyx^TT^6f*H1cq@4#mE)-rPczBCR!XDr+<37Z87cutRRc=d zm(&z*MF%#8_jxV|{?iB59Bw&sv_l)bQyb(`$#rFapeFsg*p_trcOY)mEw8^?+oHSD za&4sCVQ*moeHRbNxsoeK~KLA{pa#s8^a{TEz{!xy9Beg~L9!d7K z2AF&KQf3wp+hQeJ5{$q;Ibnw>b&f%JdGASh53uOzc*=%Q)75Vb zOnl+q4tE?H*L*nA^c&;z{OuDC;UjP13#(`FcrRoP-%oz)eXLW6qv-SS_x4~ zY1URK@p~NpB?)UyrC0E)%tcxg<~`2p4@Fw@r6=K?5Mfxus27;-JCN*C#oO4YO181D z{>j@v7VPa`2=?|b0-OC+yT&2p3a*Lr_{{C%?-`dyb|x%apM}qLe5GIU_wiHM7C+^e z+PCG`aN5WAU@L#+kLsU~|L$OmfAOGLKkPSPt@+az{#rPZ_@{98{8?bnUx)nm{B0?F zx4q=YcIf;%|t3&*x{iHvAq=U-_l*e156_u>2Z8 zzw#TfrC<4@cY=NXbORfINhSV%dlEXLcMpx6-gT7mdj)?DUYMLTCYZ#BNIoovNC-A=m zek{og&v#gB=Jf*KfDCH9_$#$ zrduNX#G0eBHy)n1r~EW~;vbXaAMg12_NDeimR9rkVJiQ0@Ts*NAk~M1Io}XaTtiWH z`;3IOrr0m=k4WuP_7vWd#Mc^TGx5LS@Es1T{{9kd^;hzG=fTT=#bMPywcq~9p7LAe zVfn54u@BhlN4~x&f7Bj){+$oD{FD7{z}~*f+U)OrUVL9!@3n}I1n^_K!>XEBph8@40}nhxDG5>nMM}@NIQ#UR z1-A5Di2QBfdvGG<&+VLj{8e5Sf7yQm?Cn1Z_V#}P_Vzyjd;1@Pz5S2C-oEOWxBm^W zw|_F&+rJL%?au>y``3fb{`kw{nwF9g9X}%e$oPW@vt!^>q}4TiCEoxxdCjLz0o!~^ z^P5w_HlI=cC@dfU4ZuGB8lTs}iIo4E5BvD*odzHOHNX~st>LEnz7}OJI)uX6g7br^ z{R!`%!{_EOCfdk9>+nTCi}PKQ6-f9-e1;#nGYjj(SbUBKHxNIiQKWaAx8iK_;ZtF#*vwz&GPJ{$b#&!P_MM+2Ai>@2Q06fYqO0lCai93;lCVyzuR1 zF@IiNqZRLu*JI_6$I2g%pLJOF`-8Vl_Jzw1UruLsX&ujUh?6Lfe+vIJ_+v}Lj*IGH&6W}PExad?9|pGZLiSGwTX?dk{>JQUO+2;tJyL&@x34wh_JDsFPNX&H z_T;Shaz&fbxWB`BdO$q)KwjL%i-^$@VDI3o(Q?`b+CX3qFBj|{N=6jncc+obTW2CIGaPgwHjfK7f8{Mq0g z62Ap}Ie3$VoB2Rd{lD6zNO%l+;j!MQ@_1|J&K~#c*cKnvsTE%|F0Rq@^=Ll39(*+Z zLlPEWwmg4Yj(=5-zrgWNJcM@w!AGR@Xw9>q;P1gTk=8uZSg~e=*+t0jLi!F$@-KB~ z4I=QBiGRe{h_80?TK~e!9}o8O!e0KPocx+O`@$x__OXTR8p8TY3Qt&LlgGc!;kR;F zqh@M4E+j*j2tYs?Z2 z0;_+}oL+RvN%5Pq!y^p%tN0B+e~V7rU!21~aQIwqWG7OeCU8xpHTEt6R|1M_>@5IW_>zC0`t9Yr(SLaPEx;y! z#dizgS=vMBh)zRa={*&jB89hQF1$;*Zu&RECrhii&!q+Slxgix#aI0@`JWMaszmrM zP4>k<%IOO?qHprTYr6Q#{s{U%>#wzjnffz6r4H0%cEsyOn2lP(^9Ss2pYZF*tADWh zTu2|fmBd$gEHh9IUu%?Y0&i^MKQk}l$q8$Xyo2#;j1lG6KpTVpx`g*OPINk0zjLU$XZO_RZdmyV;2szV-K76JjCw z%Srzs_zYRuWeJO40vlgzN)V;+OjIJ`>m6|8Z%BB`i&wZN%45Z6e|Q$3)!}0)U(fe= z$9v-Q&0f)bc&GRk{FdH-{F?EV^18$En_Yd8{w-jyFKqf(+`zt0#E)rnpaD-6va7K- z#9_@<3{QanbM(KF`1+<+xNE`+uWM~}#uQm40#BcVrCf^(2c7!2Pef}0_ ztIzi%Kf>kT@4*bIp%0V%?$5+EySj2MUWI9^7tHw7hrz_#q@h z0;-xb>zMRxW$_)lQ9d6D>kbNu`NQV73o{W`L%uk1MO|(0B9_Kv+qP%%{*O&MYPx#BkuL5pNcnk0kzzS2ebHb|gqJMXd zK#zxHjpFUyHu+e*%9$aD(F? z>G)c+NA=&LcUJUoTeI5T+ z$Jd%u8)AQ0;%m*RUSQ36MPbb&&h|V{Ymy%Z_G^;Q2H%bo>Hhu^&eor;VvWOb)Qwl$ z1$HKUIsJp-!?>C51xs^q(Y6#;KhD1kh&NZjYRi8~cz>|cr#utgx^XewPuTse^7Cb` zTYl=B;N8Jizjo!D+Oxs?;Y9m^*TmMO2;-WSV3XH3xbwl*zf1*hOIcQu{G3_E5SHec zqMw1!g1>!)0c%Zik2N1M{2cNJkUwVseenL|&!m*T?Qbn+XW-X8k?3Tw=6mWhM0bLp z09$`t2i^?(_Pk&gFX>VR!ZTCJA9Mrtk-BrP03`d|Lbb7fZqEL_Is5u%+S~7ky&I#s zPuM@<$FV=&H1QSQX1VZo%7v$I1}#0myuBFqcswKN&&M7^R&|Y=zu#TVegVEY@u!2Q z5uc3`-tnGdo8Mz^gwL`<)!+9dU!ZP!`HjF!lD^iUQGF{XtTknt@!Nd=w;Qkq0(kol zQ9zg>sEYNCpzi1HCypZFHyl1=qnfbh=N~&ozWOiCzpVe#nz`z)tiRc}J8L$eKRL&FMT804DN{&bsAZdt%vMnY>4zt=w|r)M;Q1& zR(Og3@o?5K!2YC!wWdi6vil}^t!bk0c1>7onk>g(cDNnsGc0}eZ(e^Nu<46`9=e`C z5N!M(VE-ZTQ8jrJ+;dk*pH2GomHREQbjQpu7 zy}}RX@X_Rl=XnLa`!{qF7B>h}P9{k_1ZFZn^#9Uq?7Tley+TPCk>#MQU?HCLVl`!!c?0Na`> zT60C^{Sa{!Y0Z_ZNQ?1>)n6Ij;r5#F{?fQ8o(b;>zYV55+F@=TH1$a}0cU^XT`&!zNgO_Qg<`zJj0XEoXL^bIyY z7w)uXTinlKmG9kPD_^a-@(sebHCKdRa#(A+sQxew2&DRR3fRh1^{+%+to~_D7~#cH zJUfr_IvYR3W+1IWvpu$!B&;4fZU3!iP{c9$$cckLOa?J^m5(*>FAa)xDXokG}+4{Zf5=4{Y^O@{0)H%WFLK z@+x1G-+i;%(7!*N>d%1g@&0#jY>JMC{}Shx#9tHs%V3*-h+l_2&sYCveBI9n%LV&jx$>!RUH+jW zc$&v_>23JWP(MvxYe1aSKK>@F@V<9C;c5d0^JS18Q)n6t9>m3`}Va0yaXo_|JTSGU-)H*)gIpho4jxj(r@?%*8DgGJCl(S zX$_D|Ia_-dejT32dR}H&`iGHUUjJIK@!x*0Cd?JOlV>8?8_3!CkIk+PYZ!ivO_BKb zb2h#(w{&gr0*9r)8}eR%g3~_-erM!siIYh7`Z#^@=jHf!IKI}<*b_Z_p7HR4+U$lp z-uF%E(fIZU`jhJT2A)iPF?`>Gn(R>U+BlK$MvRY!Wq$zI&HmHe7#&CWYLg2V|e zQa~J#f0VrP^13(n^1FjgUTbiSN3ERdr`Fh50X`ll3Tsec-|DyU&e-?(njC(|Vcl=5 zzS;fGQx~#EC;4$*G#}<4BgiWoPqjwObn>ES;tOBzu(4U*lgelR|pmFwaVZc@1R7u?5#v(m-53nfEf$n^wohFgHU8rK_lIIe>0 zh0{wsbaU1FK)m4_qIB-AGu12**_qDaa`oc?%Y%;ba@H~I9-4$X$^Ot*7-9x2U(zF7 zte&q(*v`hkjO*k2X5~v0f9+_itQ10JHHitq`^iI7Mj-@hseTF~XjjSd)S`4XS(Mk2 z&;N$z0^if)R^V2$j}-3zF!vq+RuowuZ_k|p2Lu@~!3uf@i6$_EaX?Tofe4DOVN8e- z%vncFU_?yl8U`bxtC(R;1Ou`LR8)*RX4F+NxC_6zU51KnM}KBsbZ zb(pHUleH~njk}-Oe&xF)Tvc~R+l;MvCdb)#w5?zppzYl|+SYu<_TwFG%V0&b2b-Ej zv;U@WXaCni*lpOr7$V%9}N3G;e4!8S463dqJ8vR6+(+~ ztP^}`$IPd!SddTl#jxjR6gk7H2O z9#^RRC;z13s?7gWJSNh`E7z=~X>{)iap`5PTl3$96XxVt!T)rk!p<|nOCl_tb6%n| zYWOZr_}j9Tq)aV9Qf`h*&2hCk?lH$~bDU$25ATbr_2yB!^I5PZJH0(mEyPa<+&WlvLRbBAN?$0paJBc+xyD(4nrEmM zs%-)D4mH2gv*t;9*1To0+WA!M7vy+xj=7};>CJgvJ=!$Cu?8;U)~5NGwXhPZZNXi8DdpVz_L$(nD`q#hzc{3C%|Px{9i{ZOdkrXH{`u zmW>bX>ddgOi~HETLU5eHTRcz5A%8)E4gcxZLeO=zfGn#GZGq%e7P401_o?VIxRaLY z3YZr@6psymUOt|OyDEKW>R+XmjkXQz8xb6-MwFj*gG;-3t{4u*aJIOM4)sIBKAhZuMk#jx)j_G5!K?y5NGc`1piCp{cVV-oUb4-~C+wl3^vg?+Rl=}1gz zJQR1_kTaE~RO_98#K0CK2BzR-|GzEP-e%?I!!ORwhoAgY)A`x+a$Lnc@#!Q^TOIS1 zHBWyi>DD$2ws;o(*mR!tAmULWT038mxF_Ns$#x>^2K45r>#vGU z{fos@M?5-b=O^ZP23$n1P5qG4)x+`hT>b`e9ZyHEP5HBU#^%bcF2@sdJOl2X;;AHF zm9ytQxB*rRE?i32tp8;jubT8(74#5B@EliA$T-PkoN3!%C~AZ(iam z&Z(Xo;396>EQM8ngK+m@8}w{rJo)_8a_?Laciq3{WXr2AKlk19@SR^JQiDRHMBoH0dLG^65rt}6dj#!9lKH= zZ131*;bi)QXIWYF5zb|UT4hBZEo`OjNj?hH75tquRl zf4v3%6IJvQ*UR}+Ow{l8;f9<$o9;7NZI{cQF?TST*d^YGa`qne3_sMLSRe@AW|drW z9ekI#j_tGWBD0!WVw6`@{Y+UtV5CMaix1>RqkeoKXFZ{EYIx+2AM$BF(eY@knHKj-P7sB5D zM%dd=clJFAuRDG>Na3&AJN|w2Q*0!fbNUd++XBV<`W&~_m&*5Z{438AvF4K-%fHrF z@cwII^RM=zCvD$eHh`_Ys69LbTYFIZxs3RH`;ptilYSlI_xc{N>38fA+qVABCsBK# z36WSN((H(-#)yL8AUeel0$=KdQLY{;uTpZX5Utb%e;B@Gy=oQ~4;q zLt&*sqW-R!udfBT#G}f99;>(i%Jnunbl^>dQ5b3#OO7>&XuLoZg)!Ao5 z;(Uth9dC-;SmCY8jnl%D{}o~Lul`5rxBllgu8;0;r&J#*Z=z^Yzp5WAZ}nGyfvvw% z`F?|6U%qX)9;|#7-ze;Te7Zkad+{zwmp|!ze08wJr|@>pmFN2S_wlPQw)hp_Il1_zxcHR* z!G!Pq>v}T(L-&vKIjf0NBA&+4SZiu*kIveI;yV`h`8&?(Ri0bm-}0yUkAi*tN5dAs z@+<#VeyYFc;Mv$n6raY2`uHw%`BQ)NJ$BX~ZL|W9p!m1H*&Tv^m93t6Bw7PPeZQ_b ziR|?^QnUXU{S4Tz@i7xVnN1@9DnIjo8hj*tbqP$i6mbzn`;zrhB}%pT{}L{wK%sySOa!vG9X9H>XWWCcsy5 z)ICtr34V!V&p_n$#Q40SI+47~&0#*r6$9~{g8lo1y>6;6t(l?zq;rZ-tork;zTa5o z`4BvtO`_+=H#vS5DDuya6<&M7Hvi9`9t|x&V%44J?Q?ukj_Y!){?+^U<)!BxwU@zc z5eKYKHuJ?zc?4(9XVd)SmA#FTY1UkKg8g(`S3@$KTI6bhkvubh5U}8ye2n~2C{z$z1d6ugVSH|O?>wMB88_l70$-J zR^k_bjPosaO#J0i?vaG2anq94=r1L_gCk~3;rHOZ5_hEXH6Hqj#9Gr~7Vc*fYfXop zac`Vh@n3-3;#Yk7JB`KnHsNVa0Q>8^;y)C<#ors|TUx2SHRtnSxLpc=>dIx|eR)sE zMZz`Zb$1>Q`H_EUTfcS54t*j6F@H$r$^$;OeB;@1UvwsZFdg_!^IF zdim$4h@1G=csSE*O#U;Jr|xl*^G210v~`S_JqWA+>yYY4bNYFuD$R+%_@HRNNwU`* z8MUn~9q&$g8F$A2HSoBkznH=vh1=qL6uuVTBegfp@#mIMitma;qP>rAQy0GCzshk> z{D0@-yW+?=XW8O=0)C0`ZH|QI{QLN>JtErs_-bAFicjOCEq}f7ullh3y>NV4SVQRn zY$VO#V>sTKSb9Cbn7$i)16=RyRUT$9{hH`Zf9P@i4mI)h$3~(#wj&OgaHiPjL%^+qy-D89b9 zYa<5#SK~JS3Qyx%jmPov>2HK(?NM|7`_lI8dLA-2&R5qxU2+yolPax|r1&%@u{LO9 zdS7tq)g0^Z3Gb?uUfE}`x8IWM(bA(i)Xx)E^JFjovNiu2Gu@RS_F;ON5?IVd-IF~hIV1+3W^S{I&0DEx0K}zJq z^O%!N_!=7~k$ye6ArO7z^ZW$|-FAs*!aw0Y)Uou&@1xi65YJEgk1mL7Cd_nv271po zJHG5y#@Au1K2)MP=-YBUHW2TIkH+USD}V7Hur<~k`m3;28A(*$e@E}j`)Jt8TlRm) z&f9MVd;5N{*=tVyFK|1;kSKhrxQV^W+uP5<&g?bkzZ+c3Ceihz`=7s_9)oMyBx?UJ zbF};^zj{CS%(S8=tT|GqKlpFlkMKV~rS~+r9#*rKTnZo0u_!?9f|qg}NSG3_-ldJ7 zgg=7!a{BJ1$Mi41!<=XQsSlKVhrPISvX@@plD+;L*y|Z)-b8;ZYzv&g9+NY0i z2yF2U`!LSYSfx_2(a*z!@!vLucQ3pFoF)DMR(o8->Hp~TO23{5efn>QefrgZTl$p# zR(DUUT+45uVzdM057VDl|FBbH#m}(! z%;Fd8?={AXe<XxPX7APCrM;K4>tXB%%NTrUFWC{ z`fXhQ6~cF{Ij8-xZJX?MzwbzRcE6WibDX{YuAIJ(@-n@`KM}U{$p1%9uQ~d!6Ti*T z7e9&Kc+ag0nbuHRK%XR0cx$`#iqAr4;fr_W+12x%TpPxkQ-2oWbP1txozE-__l7?t ze*J(#`1`0m@8s9)De!UOD{MDU_GcVO`BNX`6L(AcX^A`TQV8EVe;^MMJ+E*JEdVSQ>7zGeFOcXxXp6YG11=l(f9GRHh3H?gP5H{tgk-$>^;nfO|#`1QNI zdUhO;Sns#G7t|)!`z^1mrT16q^?dC0`uj(9ve*0Vb(FuoPkixOA=nR2_bZhjuP~+Z zl70;J>GhkzR$qM<6|x)P(Y*HER{|t{HzV#B%rEn|Y^P@VG zo=32DUo`ZwuLX@cS!A`_Z2lvaJb! zcLd(eKLZ`m1%kF>Tp+68d#W>*%D{ znhMv@)@)4$h5sRJ;cL#?zJxm`rB8FFpT});pk=TA#Oyn6%bZ5+_03Eo|6dTF`OmZB zpNoHs{|VNFn2W!2Qu-9W+J}WNKGel0ZckiZKh3eiUmmvbW&bN-n|;?E%fq)!rCIVh zH@3+ftv?+}XLB>Ws+5SnpVMSZ&s(xTgY}#TulYYzNVt=g#o# z#8*5{e&9>Vvqb)NeVTu**)yK=_Pnn-s$H?I4%XOV{|#;nPirKMq&=!lOEkxJCVXVX ztT?wk{Qdl<#InDSx-xt5o6f)1X!shoH5*#<$E3%J|AyrMXY9X*t$$JYH&NLZzSeZO z9$Vd$C0f(revZ0_OMYTO7JaXtky!cLg!rnXI#YVeDO*dQ`imoA>o26glK4$8ejUHY zi|4TB2jPuM;fu8fnDHT`_cPk(N~!+l&nVCSKzMKAMDcJQ` zGnj`pO*-P&(%1S?=3EorZETX)-Y(DXA-pN;My`LSJiDCoI=D+@=_k;>y?#9H+w?~- zWla#u%li8&DrtkqYfx{J^hq&7bOYzm$Ki8EyVgZ(z+3>^DgHm;R4jpQhKE94l~d zwlz7_9!|&J+JoAYp2u!tlc+uIPg;F@`jGS1o@9R}db1Z_l;g>ipXt>eHpahi58skL zt6#P6L$SB^E&GEgOS5n2#GHTZUvc@{g0isusl2b?Z4}}A{_eOOpTon6>5t!_B794IIK?Nvn0Sq6Z&;DdMt3%Ol!(v5 zZLH_jVWelvs1ADlec0<5P>+iH?-}%^UT>^>L?BEr%v}T{4|8*}P z5Y^%NLTus5{%Dxb;z6_q%<8yp4VX_@<6|!EeR!&W@duQ@v7Qe;f$jM~`a@T2sviS; z{Vl6B>WAernky(*KSAz}tJ4{fDI0?8PsTeq*iaa4X^1^G09z zG2*5gqrk6GmZsO55CaLX==5)_&{V%S?cenJ`{W=z(**_5ni-qo(%%RrS`%Yij@EyR zzsRx5!}Rk1EPlOzm51r&U+>$-%HMT_XXzKKeHbf0eO!K?ez!bZiT?Cq{75e3#r}J) z*S$%DL~CSR#P!!FvBGQP@-IFVI}5+vnHAanl;3a3etY<3c-;^h{p3*<+2`;^iBCZP z5cS!Cb3q92Akt^yDZM|CzG71A`Gqc`^!%d!gk>f|oytV_*S`3#PWB_lQ2*SI^h_=h zzeDg-Yie}(qkIkD2OZ$m!)+rgIpqwg)xDkxw3ess@stZ_nm9;1y* z?pnQ&-31Sim`Q&Q>GS%PVbd>or6PM5w)~H|lIIE9?@GiWxe$IBE=yegDr>xO|4h+k z;yb86&qK+tvDOT^g!X!K3@-eJ${%s>lK8B-acu8G$3Niqyd7~HhxbG3!~5Tfx-|V& z^LWO9cT3^PegbZ@4{Q36-zQT2YfYbH;Cqw3-v5q-?Rh|J`bd9E(uXyD-~p+<9rrbB z+Q9oI)|w?3V!K+h*P0|e5`;M(Iwc;%ks=Br9zlMLCsa1ec!VvLpY&SO)AZs_)UR>t z*3H8A0h&;dA@GWnmzBTTLpeM==}+A`u6b(pU5mY*-#RA!Y49a3e0@I~0}ny3dq($U zm(|G8xa$wCT&LYV+Nt|p`Tn8oriY!dx9#G~O9hI?adL7abtE+lMVab{N3GIWBpC#0 zDXSoTv`%r~X?7l%$s9tS~Wf zR#>8aRu<138_pk_)uTN=?2po!y0K>e^V|x~{5-cj>@{rU=eaSQ!q}|Y&vPrW{CV!? z$7xSDSL&B=1}Uba4lX@S>R=0Jvz2pur`3r+C%59Xu`@|ms!aGlc3-~E?HAtM?y^Jr zju@7CcM3ZkbS>&}zH9ZFd;GgCE1ub*$)*r;=em~Fb%+~bl2L`3x1ozKeREI{h$~L# zTt6zc@7w5fXE$yH!irOsF7XTfrE5zP(8cKu)|@0__BEK-o8c6X1#Pt_LBC$u#;KVtEQ}`nBN6O z)1Byd!tFLlALi}q($=PRH8k&6`O~I(z?xs|S@VE(^_jia;V8n|8a`v*GdvQvwn5Av z*Lfel#XB*DYvE{~vf?qGp5s|LUXbI4952bSx-h%{PG`S8Bow9j#GH(y@!%WHEy z5$;2H+Lkh3zBlvA7ZiAJW1GCNeJS2q%n$eRE{1))8STQe=HYwp4fiGvZ6O_S4Q_39 zv}d)`+QgbqZ~1Niebeit2dr?lX`Xvcjz_{pr#~^VmDl9Nve7(vt*6ijx3~(nc*p0~ zJD8l~sj$!Ath642&MhKc8TI7zJC<^-MOVY7{HeT_;MUfI`S%v@Nb19v^9;BO8*S=0 z=D|hW+LV5+Ptgar#XFRGsg;gR@o1j^SllDoMn6Y>iB~+DtvB^;@oK#W#bM>7cHp@t zvCb(SL*XKBZAypo*BiICu--*39ZO(+Th_Li^#v?mt*4t)U+HV-#4~6}P<8O z)>rAz`&AkrR~6UhIj4fu_pOzsGtp6}=QqyWWX5ZnBOKGNEyqn7Pbkw!A>Kv{26PHPm@sRN>RKwOXdPpWJVTt13G`Re(CPM#s2u+7ObEMRKUhOh?QkTK) z*xcc=NSDS#w2ui+Zf=xOx4@ZbZvU1T*xdfF;M3uwl@COGHAiFpzV=L5X_tuK<7j*b zFDomM_otJ8y)ZFcp)~hibLj`e=g0ENYVoLdo2?WWqVTTaXyIus2!*FOBqyU74!27F zrPp^gufLbLy9oE z_@4z&jpo7rJ@RCF`7h88j9=s>OMNrFNRT^=@o(uh5wqvu%}Lu;i4TT#8O~0uxn~+H z{8{2p(bvP9C2n0ETVQHASxfXc6W5MOuetiGJ5{a>Q=9l~+80MT5_b2yF(L{|czi(BuOlF8lTJQbU(rtsh7ybu2^*uuZG zN1Tgvlx`HrH271Fqg9BA=ED8VQR77=ihncQK7N&_#jp0b8*J@S@oO%Hk6-0!@hiOh zVISTnu!X0!C4Pq0B}z7=aH}bAhFAsB+9Vnab4tW)4*A#hrN0MA!~;1RkE4SUpDHCH zeSeOo&-01h`Ry6P-yvAX{O=C?^p1ory|2+w)CcMQC;1RAa->-W`6jV_E0_HXXuSO_ z*xQTEzJix7)n|R`^u#|nR(b0lSZ|Uzjk|o>}r*RyZZZ7)$_`k!4r}7i;hpq8)yx8hdVAo{7`W}29 zL$5lPh!3D`d1iP|iDy%ByJ2VbrTS2L`uaEsw)U^JS5Ag+W0R;opUCl)Kzt+SR(C4y zyAo@yn$vKPORWCnB5_LJaqGlyI5(#BYb}5Q=o^w=bNw%bKTiA%g+B*Yo+a}CGDq`& za50XHo-HLJ{XY2h`XR8_D}P>p9Bg{^Ctt$WpD2E@kAKBn_$_kbU!T)o;`O8BcjjwT ze|G4o$ZMwyO!c9%_VqCpw)#+iG#?(rCQ<+TSB`c)NdGbH^^2We;VUd3K1E&%U-ixZ zCiT5G?CV>8eSPaa$m(114}yLCgJDab;_m?a_}jylKgCZKHi>^z*vGH%eEi$PK7Q4& zkDnqg#jo_ygq!F)Ila=iIqcIn9JcgHe@;$+xzj8Bd9aWF8QAjw%J}$Oc5^u=dHB5e zeAFdf?+f8GXfKtH|BjvKR)wa#L5{c2@hHb5XwSzG9+zbh^*_%OpY=cDQ!1PCgXGEd z>W_}W#`>ecq}BM63+cb9;PcbTiAQef@0!Tm8v@9o&meqUWJAIa>RW|9fHY|329K zUrJ-5I>K*mama30<3i4ghineq0{3Z&--OjypOIKUW+1Lh+zsZI6rSOAszcA%ziYma zvD&|}(u+wcz3M*)z_ZyTO26(8KK;AHmVW8=joj;-!(P8@POs;8)2}r%#=o8-LpDy_ zIbv1=E4|z{gA9QO;-bj~(O5oRpQ*bHV;RM|h9%M;%F*j@giXH*7aosTrLh`AV47&@ zZ=cdX;Pm^$vtap=h?O4WR!=Z5pZxU=+BjG9FnD3&$=EMPg2y+nG4<&qWFE;y2hknH9EV%Yp|f?oaQTQRsWSAP%O zG_xQT&&B-ipSVDJugBdtrC0g^gy;1k|4Fa8`v;;Qnfxoid_pMY_soyu`+%OgCCg%s z_4oS!l-D9H-v7alr!I;0ZS7Iqm$LG_0`{I8a$G?lW%|eQuW_2|#O!1WPk$RX{j2a7 zn+C11iDb8JrhL=0;QtN|aK zSabQ$g{}N|h5rCoCH>!?jqP_5X_R~o58-I_-<6lmBI&j3`)>4?!980B^XybEcJW~m z1CJ$q&kG$ZJcd)3!aJ=$zekE+-Qy(N^71ktH{Do}E76|=_fNbR`nTXdiI0c*_*NSG zwFv$IJ~io=*6@9bK5BMi>8CsW#rrbXo$&TzlV~o$xwv(Yk?8kh#Zw|?M`5q`xr37Z zNj%Iig*znu$44Jk7QWSVBu|p_MlqI-qp{Xv;1#K~7Q?s6 zUS%LzI6AhU-Vp=8jN9|)j#d5#Q+LH=zw1f-J}zwWX>Er6&>3rOhGXD8()IC5vbXr( zJiIJCUt4@)h69%37i%tt=@tK-u*Lt6Q_He@V2e*{H5~8a*IEtN!M0Yzsi#GIi~qf` z{1wlIFCLU*-Rph)y8l@G4__MRqVGT)63xxNgX5NgcpgPR0k`SJXFHbtwuEo?;-4MM zUhj+MU;1N--|VlM6zi{mAIa`;JK9J0h}n_wN7%2N_)b`J)pSir#4qM}5OwAC3%TAr zuj}j|=Vfe1!qGE>iCpi=}*Gm^3&^belMK#Gh{x9)^d0W zR-Y{q??rlyH@vwlJYTBKOLo2~@=q!Jxl`g=6^BK2b~Sn~iPHVyksIUOB}?zhx5VF{ zS|j;?4SPK+S114CGaRpQ4|Dy{?U(E|cSqOT(!|ma!)F;oQh4&h4;i>)i!l$+WBJKGsSl_TD+rd*f)+g3n-ml?( zoc<@LA2ye@htU1XIf<^9Hl$7WSc$F|&8@fV<(kE1VI2^yeeHzH_`6_MUHd`jrU3mg~P=if`Oktc8Gm-xz#$C43;< zDe+zKx7cr*cpf|!zk0`$ya(&=2^&PrWdC8#e$Sl!hp^dC`ZBI%ux~2Q+u^Nn+xtvg zIs*P2TKe93^!JSQ#s3khJjD03Xyi4p-@7&6(=0vT(f;5k2}AM=e11FLPZBTw9>2tQ zaa4!33w9&?Z4w{(OXN=NF!@i2sZf|AVlu)ioVoh}*Niw|G9D_F_B>|IJA6 zj1>OSWrgfz?5+RM?^D;nddHJohJJVW=7^cb>TX4Pc1wIO`q|XK+Pp;eTEEonmEW@{ z56kad^nWM+XD54IkGlWa_4p+(4`bmy6&NBum!s!fay&c7Z#!;LWNtZe?aDcc;yVE@ z#n-uz9nE=LOF?TZT#;k-cc$MG{}186Gv_1O{#Z8HyxT{k9V%?8CZ|`_}^gF;S5Qapo`ZKPBi*PG8 ziFi$p#^*7%c_@6Cl*pqzyq&_4Vh^IZ5fgB6i3VBlbo|~uCh>89#zEX86U+ZR*!zDK zHvd{%U^m+TBWx1&-(u^(H`}QYzVBH3*a!X^yCZ1h5?v2(a0CQy4PC!(b@vf z!WSwqWC7favb;26CjDlx*Wc&#dj41&TmSsA4(#JU6}I>k{|AocpCWDI{{qvjEkZckl#9_To~w#1MVm@CEg$!#IX zXWa_n?=1rot39nx{MMfIyrI6qKaXqPYdeyJ#KWCvH z`9CPxkA$B3Kvb>7PHJwKm`{lKsckv)&BJG&6R6+M#l`@wqun3s4GJeu$)IlboIoBj#(Rj^&(zrnhH zTYW41^~swLzk%{F|F7`jwmo4#M43qL=EJP&^4=B!v#-#re8%HP@)G(!q(|>i64~qC zZuZ~84e)&_yb(-9`vHE!`5#C6%zwv>xw3?FZ+al!8g7Q|SBdw4r{iDmgpz*0uvQLy zrV@?p`6F|c2v7GE$&v6xSl5(9`p0wnZ=C)u^lM;uYOv^)H_1SZh;s!=KuiL~B>**=XB9loN9oi{xL|q(pqB z1swH?+aKYr~A zeQ)$@PizW5nfhm~9dQWEZ7zt`hERK)o%mbAzX>+~58hKA{&wFr>A!)uK|d?8^fiQS z`YrA)&z>i*!<~L0nKQlYwFn)`W3%f|0}(#yZ;wf4n2#Aj4rY%)AI25la*6=t9(|TJ%QeS>qm2K#kZ#TRo-GN@BSjNYbnP{*KPz)4 zw)UXX{SG{vO(Oq?62AFYeBEddmLBOfw!`#uyH|vDkUvP}^%`7`e|lLeV)hn15bl+D3A{UO_h0!xiSW(;To&?s5FYI8S0z1WzeCT8@VjSErT8>=^%iW0 zBzx(<#qIU#A51?7{r9luze`5o{|Al-1>*S|eRuNa{p)^g{x$c1SGYF$7jw%fvDP|J z+1pwNS_|P3uAiq~Z8{yVn zE5h0}4Jm%D<)HMajY&R5|7Y9>C%x?JaC`e1u-Pm9yHnn^$zDtmG~we&ujv(EJ@J_T z*M?MNJColl=))w^&!WCeukcj9-oMw&UeDX!{x$9gX8$oSYfGyd?+*&^a~EFQ5fx$W zK+CVf+mQP3;Z4rf4_!{FepDYD6Mv~bsK0fWZ>k@t`ww}NsD8(BwE9*3tU}pY{iyza zBYfQhBx063X~KHn^Lnj&Vmyt`VIn*}dJpx#3F)!$wKjtK(p8gQd=Bv&Yi)x;)I~Ar zwHAf$C%-zrCdXgocnjk5_7^)=d`A$L#i#IRQZ{C<_MjR0$_y^_Ue~j|5_*LE;ksd2grRNLSr$=>X@hLrdp6m1*P2qma{gua>Ai7_1 zIhO8MS}S8y*zOPKu(pPtk1J>c66w|Vn*OOt72)p><4Lnb`VqKIFV^#z=Od|K;{z_J z2xF^`;haR_seM~`Cr+k4(w=qClPJ8-u=yA3UCLPLU5D$;e~;a)AV)=uD&v$S@Ccnmt4P!RF|WG#kOmv0t+J7#eTPwi(2W$oM3dR)Jr>vO!R zYhUvJo#S7BqW-C$M^gPt|0CsZ;c4xM+lYIW6n|Lzf&AL@rSxCr^!ncK^{olp``7pz zuRkECuTOd|)6#eK6n$1S2ghpXZtL8Ao!i^so@CDv11D`!a`$s?=QVui4E4B9&vkn? zm9n1y^M5^iRyXZx*f(#;kmhf?uts)vaL?-dD;{5*dU!Rj*SjpQS_%|jdcn~Zu8+tUD+}Dh==wZdNiIg1{` zqt}d5XAaJWg2{@X3?Ff3bV}z9+N*a9Qm6WjQrB2|bv%sQS&sVlx4NCkinw~SUx#g7 zwk@+_U0;qpX^Yx$*YwPaMYgK-IKLIlu_*U?^p|U~ZHBu?RvWfH=zE~=k#&Z<5N?-B zwpN5+)g#1OEb9@{pmap3=vS3h^vmklYAOz)7tz))9tZTR;(YJ20c;ihHe&0IZm71( zihc{&hJ~$JzhUFq<~8frzh$$2+Z41_^egXH(XXJbIU5`{{PrQ7W<>t9C1F{|UCNeq zmL71I>cQ_!>pXbaw46S+;dt_q5d#~o1~pb(Q!h2(X>6+aHOoy31y(~UFDoxAW7Em9 zvO>^lk5XElEaR??1l7OXk&$w2qYeJ>nG=FpnQd*h5t3&A*LxybW?b<(XJAyPz12g( z9OKMk&lFrny0s&7RINd<2@UQnGd`xGAh*X8Lq>4uqa~xQ6q!W<(ra`sUCj|lT112*^fi1o6+;aHf$xSGgrwm%g&UJ z@0u$*h7QXb=nunP(M+MMssxx zo?kJ#EFPML0~ylE9+9R-Dn`rR@jwVNp>TB|CLKtv4(KG5N~BnjP+CVptaWro=GfM4 zFum5zQN0*zT@lYSa%}51n7ysrV63A=>qz);{@+L!#YV5qjhl5_D74bwzHo*m1av%` z67!PogVM)-gAT##iwR~WyZ%Q`1ZU~P-wTGk1vAr0D=z?P1w-!)Cgj2zF) z@uD0rhKt0Zy4AWZmAUm{wEjwOblQ~e#c(a|8aAyjV(G|eA4Sepv1xsjVvf~byuLQa zbvdrj@vIy-WpC#JU`?^h_A<(aB)B(%_1$d2rId zGDyKYS)eQ$hdf1R>Hd>~iHCDIsE#f_`+rNg_J1c8%MwdRqcvyrj@ZvMI_gA?(muo- z`Xle? z>hujo&oC0rk^6?D(kIaz-ETR1{~E*K{Wpib|07`UUw`i~|9wfJzL{;rImwRXT7Q4s z-0?`qT2nyZ;7^q?qBR5t!+uQx&kAoJ^gcX&bMkz;OJA4dp1ggtvqDIJQVU8vEO*p082FwX|KeEw^$pkjYficPg$8US zs;^p(zPx$JFO~O;q<s9{a zwDsQ*!%l8Vh356|(~K)m~rSh@L>7es3cEW%~409r#}I($-8X9pxcJMqKtm$;8i ztThVsP4u$Ficfzdv-mVez5}`&Q+!i)itmM|CO)_r=itsx{#BmGnEN~dCZ6P%qmfN>YL&0K#@0fyb{-=#^`LF{LB6pr&sw``mct4`mcd4{YvjWuut#3u%)-`sCa$xsW-@B>%}>a zd$o^zC-p@Ymg-A9I>)Cumj54M@Ba;_m;Wl_vicXV>G-ZwVp^9=>6r_we<&ng2&+H+ zi7+L%?n!;a-$u;-LSe2-*=?GxpLU(%`1hMrd8$8RSZ`@fA;q@@_VMwPFs1mkrp3C1 zZF;Ri@)^8(N{{CJ{|)uV0II+EN-XY&ll&r|)BcaOTELCa$c{5fu8U7xFwHuJCR zNA1tYuQ5CpztX=4+$)8r=b1fWOTYBh=)8VA*z{|hAAdj5%71HE_p6#zf8t*pD?RN9 z-=}9q*wQ2Y&N=-Mr`H+}x_{lvIf>SYSe@fziKSP4nqKuy6D-xY?73u`*pJWIU+?S{ z-pe`t(@wAU(GRxvq4F98`|{Ewx|NsmHx~B!rwc3PU+sY+E42sNKbfp8aNnvjfvr*M2WwYN*)S+L!o?uPG!Ri={X z;f{o@XAFtL>jztS_dFl}UiMjv|9DvS^ishe zw&Y*>U8rlX9|l|a^R|g|#I3!G-y&|~MexeRr)x^`9o!i{HDb2nfcSgh$0gnn))=aB ziHE~;;8BSc-gmHtcNF>p>D4tO`NNnvXJEUCf%hfvp3lhfRXM&t#|v`&d5&9>9v^=9 z9Ir}Rynf3Z@0DX+Pu^bb+w;sEFUqmnueV>>r8mqmhj+k6qB+xlfR!eRevf_zTpK9r z8=PMLYiY~gzkXlA{An@1z$mb^I>& zx8VQeq!(|-^<&(T#`Pt9M$(I~r96#?yhwk>I7ax{mz5jXr)Es}9V?A$p`-5_P zi{tffV@?|Rd4ez`s;~1oT6t=Xi4Wi@QX=BNbM*XOj(^SZa>VEDt8&~S$ND>n*;jm7 zmK6z4?{E_R{=4d;78}Vpcq@(+YY?&CXN>jx_2T(SzdGS5y&Y3{o!*VVcm8D3EBto2 zefWCTwDA7&bX>!yhAE&P7oANn=#qPO-a{+{%EK8Wkb^M^Usz1r*V%dys|@cMHcud`g7^P)ae zvKicoqrDG`cXKRzvK-z)IWWGA75quR_y3Bsmw#PFRSnF7t?-dD_f-a^*px&?ZH3K?Fd&p{q2=a z^>;7VRDV~Cruv!Kn}7Y@_1EZorSRG@CcZuHA&E8T_&D7AkVnbp=ofI*H70q51zmJ4 zO(##1zh2AlNn<-GV)h$_{~ml-;&0LS$5!9uBx~Tm7WXz0gT1~#n*IF0@q6Etk3FwH z*Fbp^-bN`sE%^9wC~iGtNj6TbZ(0(KSycO-lkE3HulA*N6(pK-IGXsZ{1xA6F23>D zpGbY|8_l!sE3w82{s$+14ZT?Jq>|0i>v?Cth{1k0XJ3V0V}h-Im*D?S^yg4#l09E9 zgfa7)M<|iLhV*$oT}+r~D7}79TW!^TPkUb;W(E`9*(rbbEsoc_);*Aj??-Q3_&jn= zx?uHt+iw!S{oeLp(f6V}TC|P+6`!8xEk6AocOUfjd)$|^z{g)Owd?%>_!HvW7#oS| z;|Tm)eauJSpYq*0s`>4@`1`J}CjJH1@7;e-7?Msb5cU*hwMWFj(`nD1JJCNH>krI& zf3^NkbNCj*_P%q$kA>_VxO)ok23XIRD<_uzO494~SHY%#p(A64$=lPUL83VpZ;>DM zp~gE=_Qosj5XWpM^X%>I%fq#Ymmp$Y>&CKITD|>LrsD;+pTwWi_Nu*}_if|*$1z8a^4B#b2~60YAEdo_R{!U@9oLFy z-A|3Lc(gn_mGtxH;UM}wSM_zDr}(6Qne>=myfg6`>-Tc!6QAZ)NaX)j+~!~TyQM>8 zettQPIbqyP^$sY>v*w(<&iPu>AkmzYb8sJ=Sl8E0q}8skfd^G&t%!eIG|%LJHTrw= zFTQT2rhMxvjjTB-XLCcaIVa-pNUyQxI6O|+_I*waMI>-Qadk(ZTH`tYvII z>w3}ird=QMKLa-Zc~*Kmqqp?0$MaEJ>O$AB%N1(FVdv3_>ZNNPPqyAaoNT>cI4mDeUJwt<$CFCa`fN#5QnlZgrGxJCjii%E zUD(^M7#$qyuukJWlVyvjYY_$=*i*9_3c`UaBTGGRvj&|rQJOY1C>;k!*CEpK%oYzj z#gjVFQTL0K4#h}S(X#Yc*mySXD`QG4Bb5qutXL=OQ)>$47se@!7}#o?(^H3M&(S5L z5KL1Fr~Z$2T#Dh_Y)n&#q^?(lNqfEWLW}=7gwN~DrU{{?Tm-NjEdzRm{%IGph{vi% zjLxZR#WOW!S#b8}wv(I`pgE}#bMo7^O`X9%mBiT~skOHBHIIC|T544Q! zpQ@;*lhFY$I*@4{=oNIJAUM?Fm&2@hU@xkP2jv(VkWLl@(Oh*>x#yr3$bo&3uIzcN zN>W#bf*zwTD`QjtS(VLVa!);lHyxf1H)K_3*Jo7~GjMCGr(9>THSl{>*cGN{mHjwZ zc0cE|aSo{_tfIm!jw{QG^`t^uF=G%0i#-?RF6)oJhV5+9fF?;$3$zl-p`$L{@L&EHSqqtWYI zuA~d$55awE#HNXUCf0^d)?4(knl*we%^! zkHJ3udTuqn?2mJ-aVNVG-p%A$qH!mEIodcl{gzlgT$%LxZKeC*^9e(u--@}5<0*mg z$E{2HZ4MI0D*^6IwtoSY@E{kt$*I0f>Ci}^->idqwmsiJcMCXw& z$#nQij++GH?|azK!|na+9mf1?9M{?~kETKH!2W7@qZFRvn?!odUi`LWO*!h0&$IC( z*=g6 z?AO6%_IZ~7BhZ_F=}*hqdzQV}?B{MC+gE?iN#22XDGeix9|4Eb!cLZ zGr0`+n8X^VbS`c^vP%@6dU7A$J+Ke&G1!Nv{P^%bgDpI@KRucH_NV;#_SXWo_V-S8 z7QVZGK^PLXx8~@5d((TmZ*RN9zP;(Yj&E;!!`9yP+ikPpZBqN&et7IFJ2;+1yvA29 zAD`d-Z|QA?z9nHuq~DIC*AIhD-*W3%{-cup>HXsGz)Vam{S@rI{t4Lh`mLlP@NH}o z^|z|uQv%UnP(J(PRv#?UIuQqO92Y3+PatnzukZY(pF+hdzN?bG?q7PlJT-C0-J^b# zWAzQjZ+DCR^WdZxSK~HT|2h)ZH7q%}7~9J1K)+|Tzemye_V)~I?N9#ulRopW_N;r6 zZ-4yhywv{m+grN-+HY?uJ-fn|o;SHMoCM#r3Ol6i!1&v5MZ%E$1TW^eX&}~4>mK9M zSPzN%6FoCo|D*eX*zO1G!D`<}C42QRx*n{5(YVrigk$YRtp30=Pe3JB`S7QgCgr2Q z^IG}nw-h_V{{$3f+BQW93<(%Z<^Rh5zpi4#Mh47i=$9_9Z;pzFs zhj$HZ;mLku(rfl_KNtUox((@;d=4MRarrg@vtQtAaH>y~=(m22ccybsgO2I)_DKjONzS>)lc`tv>Lwg#-*t* zt4_QTdbNL*sYHL5)ZcWDiWs;Ky|Ko%ss7Es>{oR5(r*HrUfhwgHrC%IXTnyWbGSL_ z{?d<4qV#@=+o$(&xH_scrFSdJ-=~*9T{TIc#(A54kG5r52jc6S{BI5457#DE`X0!o z?*z)$(x>zsn@i9A__gqro-*`4J>y|tUK3!mS9$TLr;`3K(xYeFjZ%74KGIwKO5e(^ zJf)uwn_lTV6#u@w?#-p|3)rXc8SH)fK7y-L{3@S?#9y0O@oQXz>6QMIbN;91(sz!l z-~Yd-Px<*f>9z7udUY@N<@pRLAcDzBnzPvXxVD?W{@@%9>LX5p)T z_iEl)zq4z~LjQMGs*l%U#eHI8>Gj(wrWYSic*e4?gT4J{gzxp=z+PWh*;KDj8>ZK9 zM-8B_nVsTq)*=4Zj@q0=OczvIi&*0z4uH3e>af=I%p8B|_-j6-u0{E%kCWuN6&;)O zbQ>i-Lwid0UC@iOq(7Gj!E?cp(L9W+oQ%6RvBq6a#ck=6{kr(~_FKc=eh6&#$6U%< z<&^){DLnDIIsP%nEWcE;*Kdoo$8Xoejvw-bKI5iz5PKsz9q+czVY_2ksf2EZ_o0^ z{ObO@E%EvL?-1DEf6sya{dYF(@4rvN{{H)+?71c+`t7&3IokdAQsR@oJn2v8;q+D=Y5S%MT%;vmQ7TyiUCH@$$Bflpl)>^gK!Mh|r3)cN?p|gL= z+0Xnnj(J?4a}wF>dNTXM%VpUc__y~Fjr(~Nz5Tsn{e@*&1ODv(cs2Fg7CqSrBK^7e z_xi73(~m^|BlU5Nv*%BfC42dQ*Rkwb9<5}5{Il`5TN;vojjJC?*>+BR&?{x(`PAZ9 z`@I;QZ{J1O+P8j7Ol6^Sk`8i-oL&-cs?-4V{%;QSmXNo!F#YtG>-5Uj!J_>Gi*nFtIw2ZoZ&=xgNT{N8P0?cPONc-3>_+sD-{3Y_;Tz|roD_v z_Nw0tar^q60Q>sA2)6pwZ$CXx`j#gDBO3VL0{2d=-+uZD);pv`dVLEuy?*^jjK#=>Jq~ zz5jaH{LjYzad?N6Ud6{ywUWKUyM^n=!V{miTq7?xtPs`>f1flO=dm%k@LLiKNssZB+$=}(d~i|< zProIiwySRj68)CMP>$6pzv|DggSV6t5$oOESic?eGUqQ1TE5-Dx*z-SYG5Cp+KTyC zcopQ&Sm8Z~-om?MAmjW9Tki;x=i!4mwn@A{<)`*&&ujXvjZff5Qu&^So~c2N-zU*O zO!%f({GBL2i(h;r<>mQ^%BFmqW5xe&F8*VP&%*zCw?bIQ{&H+2AM9QTbIMMPm??cb zke+Q5t9|c4-mHBqJv-#m_jrzP&!x9Ri^lY7-0Yg9XX6yU#?{Wp{fETT*XQ&#u;~j2 z#c|bqmJOnDzuXc_?6ITDOdx~Vudkf*WU~~_Z$p2pm&-;H1_Ws*bp5FiKu=!v0LB^p{p86&r z*$qAv9v3mI=VHGF_nBN%5{*+;`&XYRsca~OIbtiN=Ly-bir(xuM85`nax~A@c(M@I zmOeAF>h~hb$J*PePccrO^nI4}>TehdRO)Xu&h;aBzogf=Q1#6=F7#$zUUV%KX#nNFNjuWFkn}8R8F~7fh46f>GLiH{e*${zkKg{GkaZ=#51swj=)L`)Nx#`E zylI4G`ZWf!mNMZUNEnhmVckD#6KidGKDm|teyI1a_h7r8^?vp~T+Jp?csCKh4^R2A z@brGRHRLYF;SFQ{@;eZ|FN+5 z|9;NCmiWE>56)iWGSwdJc}?T+ZYAD1*hutS7yURM66p6Vd#(Fx_IcKCUCgJy_&E8W z!o&LN^k>%Iq`wpPda>!dGAVyvRpZ}>>%U@cdcwM)RSZz$Du2OQox+!%TT)4{-vYQ2 z);CLuehYv{j3&PYAXc6w`Yiyl{T6`6aehPj*f`G98_L78_y*0Rz4%euy73#mE5aPe zBceJJ{}unny}n}33+1I}0*Un7Tm3WBKnu+Pr?bvfK(&zbZ>epE5naQ?}2Y9miOr6ObK zdg=Ry^0TVTk67VZ{=^UGSmS`b{-A%uzvlFw)&4G^eOmil>&A-kx45-a|8g|^4Eee! zUTbK#H4pZa8p!qeCX3-1~DKI{jl@TI?n>%sKm9nl#pyitT> z;oWvAdicZ?zSc_r6MSf5t*yQj?h4W%k^Yac>9tn-KC}h(*`^;2n_g?XZ-Y+XtR;$1 z*PD-T3T*ZYe<$k4Sic?9lkmDm@7a5IRb-c9|AgaNj(57VBCK-RDe1f2&D!*o*C&Zp zKdaMTt$t*`E9~vtQ=Voo|2yTl4bMuZziJ+SNuS*hHST(U((lJvzexOat3htRry~4z z_IiXN(YWTH(9ez-##xK|C02NSsZR?}Yx#?3I{imZFZ)(pe`c@iNq_IM>q)!|=`+^# zrSJd#`nu5ZLT=_QN$briKIQk$)=l%@OL>^UMF+^_u;<=d;iTy zzxmhqvIFtEOY*Pwb02Nl+K>9zS7Gaq_1m_KNx$AHCHigKm1tiSTM*q}e}=bod@=d) zTqM872mZ)B5BRfWFTRuVG@e;#7RFADqzol5zF)}BBR%&1{|tIwNweLO{yq3q>X+B1 zAT7$9WiP{e$B~E+CjG{;7n}VC=+7qohbMdSi?k=>zh=#{4y5m6(m=Mt*tihz?{+Kx z?u<@Q6(%=-HTdiD$?BX+GHF1`i6eD+I<*Yje|lE-C0PSkj}k>kNCUgDwtX1G+A8Cg z*h+~zTq6@s)$TOyhU?t$%Cs9w^6Cnd20K2x;;Ld-RaRFRAd`x)lMhVTDKixVgrP9C z8z)7Oih8_hAY~z>uTwfrvGTZI;H#Im@Mj2WsKAhgLS@gmb!?Fp%3!`Z6e>G#gsV8p zjV?y9Jm;6MWh)liUr^1~x6uBtGYjpP{|oMi*=80xTrjhLhYMzKoKaZgf*H8`6xz2a z_F>zCaiMzah+DI)ocPNtSK^G`vst4ePpEI)}3UEv-3R!y30; z3m4(`Y>VJJw_dKoou1<=*72>ywuVjX=Z?+sf*kiI-QIp8Z0Q=!I=~u7zJRc_4TUY8 z?SE`6AC*U+94~e25i6bZSbw+=VOTyg((PI60Q+>b&!zLk952dopIkn8ye*Aq!fAt{ zv??}I(e5|)#Ymk?Cxa?dSvr{pQ8kbL=(HQ9Dhr|1#Y0vWOe&*gW%Sp+bWnUFqvfD@ zz z7!%12;AqY?s7erxt-79LuRw9^>kYVh{0pKr*0#k~&k7Qaoj-)*wTZj0!gYXKOG8UE zc4`7VCSq8_?|hgh5k&r1<(_H&Wj_S=_CsN_-*NRgZmb#4Ka!VWz5D3-S0et9qp`-i z>f6D_K})*PHzz!Mc9i}@*!1$h$oUs*4!ngYet@_<&vvZv^sT|d)0&ie@36luYi__D z@XdrN(b(;CIoep-m$9Epdi%3UzJm4byI0~`o^v&pVXLUl@?6=4v3kVcC)sOm!WJ;z zf~dS3U@LF&PmWdp>KlChZwp)fYpmg6@VFGd>?h^yFLU;NHi_dt9!>T;!ndG*g-vpB zk#`f0vjvF4*K@yxulDdB?Aycpu(gNhit#;M<8vemuRBKzPh$u5t@<-IiRN0|#Zhfg zqOrfzIGz%SvfqMv!npOlSMmb9J#Gt6;cHDUV}-vCY~g>6{S^3eHpw=;cio8F@;h!r zemfWL5!K;(+a9+s?;T((Z{`17*ysN|*z&LP|0w7G+(w(pc`>#Zn?KQV_E_>ifM!_WI7^?T->i zb(ni`Gj1y{&CR$Dy&o%oJ#2bi-@2ad`d0hmb+FXFy6qU}g3U#Sz5Z6GzjS!~yV48fL2^5MD#x<| z#p~}h+?L+c`^ElbVzL(>fZkYR^+&^_l70^1od+un$(!&*j%Ng7HzIOf;%@MxxKB@9 z1OJA5atcr7IT*I`d}i;sW^9YpKD1`<2k381tnz*Zp3Nqa{t&|Q`aNOOE4)2vJ3hQI zu(#)xtz@t8)PBAGOQ(NrRIG2h@gTZCt3UAf=V7p~|GnUqgLNERukzb8vFh^@+`c|l zo>t$wpI-;t{ap61=j`9e*?;fsH5X0oQ}{Cx zO02mVn-JD*(LD6e8^YEH*NaWB`mMoqb~MjEJ}|D) zKD;uX=+Kj~>Nqu?RWfDwIG1cSJv1XKAGI%Eo*A}Qo_kY&YA=IQdVV7OOJJ*yGWa&Q z$R<&E-ASJhuLo@5>3UuryI#RMK95o4rTW%fjBN;(<}T- zU?0BPtA($*7;3M6F2?on=oFsjV%!Tam*Q7`zJ$lHNi;WW2}jG1=3dBaA1M*F52~ot zJ~a2@9N6NQzTWBQc8%leI=lGZNAKhN0JiuvH)A7gKjEB2>Dv(nv1X(_BIzm`fr^6Vfa_r&voeP>=zNfp4avF7>UB0 zOZ{4S;=wuATn?|F;&`o@aa|0mJ;=t1J14GzRo+(qL*Q*-nrV=ca9>=jCO#ywt^tYk zhjBFh1o$S{+PC=6jwit@l0RGy|k zfj3F|xv<*Dqlw>z-^IOkV%cwm+w5CC!MGO6t8db;2kZT0bmA@GE`>(@S@@p;FHCxk zo$ZW!c;f0;VtuO&C7KJf4M%%lS^!I@btEOSzk;K;7n}Va=x>7G5=1QhJ3sHibs3resAYcRG87VKijXb`)`ZY(4* z@%{d0W}UOn4w~nAK5zd2=ktEv1?TSh?zLu3*|TT2*|WvRww>*}5m5I4aIbYkVJkI=XJ8DUrRl zzv*RPNB)duzcg(2-(s)x;k80+w(FsBEcpP(=b-o8;#kj8K7%(+_T5g1?@n+U9pv!D zLla*LpG5uM_A@MhFQPYpir<;~@bN!}Exz<8wyo$De>!aO#qZ|0d%KE$=aZ}J_oBmj z7l^!BeLVzU4DW#tiR@RTyr!4E?vEJDp5ZHH`&Y4l5Vrb#b98*S%IZ_R5WQ!O?J!pU z8SYmu&)-g~&hO<%#djYp{m0%2>Lv}OS>)wIsWls|*v+OT}&Hl90-*>rq z`qAZ2yt&Jt_yotw?;9?^>oV|oW#a1`SF+Qi%=rxKm?gRD#+q<#-7jMHAQ#v7pzoGg z@z=tikFV!!KK_}okAEHP<3H%)%b(_pH-F+L_EqCI7#OYoR>yS7QZ)V_SgxIT=EOKQ z{FtESTy9bv+o5Z6$+qa)3JlPL`b^oS|jFDpE-Vw9i5*HGWPP~%oNq9^0Z`W6PR;};If132--_zcW zPk=XT7mu+r5x>~J!sozKmWanp={3jn1@JflBK_k zdVfTs_M+pRwP*1yjx~1Z8tP|msxLkJ|B~>W#2P!M{mI6XN&h@-`o*#KFVic%=g5ms zzlQqqJk{k#?XxFoTl-S{@vzyiyi1(ZRrj1F($fUXdhu51%zj<$cOpMClD+(QfxZ7V za{19X35zd({oL_R@y{b&i@!UA5MGAIx%^;K6@RZBU!CJOa?B>IitmqCde`6#^!BcS z^7neqegx&S{A=w0&g4%&iQXmHjb#tglqkN=|IA+8;PRvRPonqn)t~tI?>l?N-@xTZ z?+!4$y8Q0IHQWsP8+?TlN8X3Wkl(E$W;Ze?@}7kENvt`PZzDV`vF1?jNP2f9)*Q-u zw`LkYiRMslCA@jWFo&}GGqc|sz3%yMob*S*^Wm!!D?Pm{;?w&8w)j_J|9C^3PeoBa z<>Y-E^3yM+ul->xVQc>@+#mHrlYTgyk)EyrB;tbOli`u@+DR|}(wqMo=%1rK{ypjC zUwZQ|d-*qe>BXj>@F4Fpkl$5e^4YC0T~2s^ORJuTzah%KN&f@fjs5p_$LjBm0nB!RIzs9nk0ekyroL=#JQXaDx>;8x5?;OjY&WF6e<6v(;FUQKS*Xvx&SpK@> z-}}?Kle z__|i`={La^KfGH2o4xX*`t|wg0{i^jlk<0<^QZhQhkcQC63t;fE*HN9`~2wK-14J$ zJsu{Wosa8Xk1OCFa)wB+cTK!r_d~t@Jj(C&?P0HH8uKdsl$?G_PTw82_G`ZCHHy+t=|9Gk7-!{wU=~V}HkzuihbdStkAm`7{3PF5X?iel4fhTm`0={S)+$ z#+p-jT${@MDUH3I1kZNy=fGyK__JO7O-N6?i?e^VZN>iMIdx%v+fn3Evc$D@;d+kC z@-jCQHop9kx=h>u5`0LMzwt1q1woX*!(q#x{Cz=rExveZ^5gk#`eNgMJWBu9f$NQQ zgHQI`Em^JC`HblseqEPo|9LRww+TLquzr#P{y0UcHImy=|zsn|n|Bj!Y#aLy^^A$j(Yueq+|Rv>GdUTJ!6z8{yHvyV)a+vUjDtkPN}?p6zO?=N9x}6@^`k& zkJ3LEy|=&2+3&J>T{z#lIc6{9?`*>6Pv@69Kc187PyTmu`9GHHwXfl$TzuW{vG}Ur z2J++Ux3|lmw#Ub?Z4deX-s#0m<6icscOT9qt+6RTf4-+Kyl37urGL{%=6pxjH?j0$ z)2qA};@`@v`gscW_4B$*U+LkpoSyP?mCH}qzU&V^{yMOgUvt18NnYqOg51iBGdkXN zO052>4f*r^RcCm1((7FZoln`j4zhnaXMcsWmtOYX-z~8D)133-A<4h`$2DC1Yiinr z{pl*!NzUSAUe7{;q9kTezSi7{b%s)&VC#EYHz;_{fD>LGdORr zZz!0(($oDQ6+*|I_oVTfQ^W zRb5+sH|ALR@_N00;JKLNrW`ltcubBp#-Bu($Z7cE1=eEK78dNotdy_{I<8ol?A-v@E1}VX00z z**B*3S}M;bYZ6dj&rzezw4JW{Z~a=ZPrn+LxnE7z!iiM;nXb&acvb5c%uwb0jD3R{(F3Yb?^K!rZzrK07|HJ>Y=H;^H zw)!8%hr^mX`KvvsjY)ldeVcj%TRJ^QFk5TO8Xd@G@-OlJ)ixy+EHnMBLE6-qE0+J_ z#OY!%Mvm_<+P$BUgY>7;BWQ)a9gvh0`V1?jpceOloqH8+%{RR&So$d&lS4C$%jRnQ zW%_2dD$iNouGuC)tS{NIVWlIeEH9=UbpU8l7}*7c&e&$LlE z?MDi)V7nLLhK{MHCERW8=&Uq{aI#l;C1>BhV>*q-enYpu>zXMetncd9m-Ca$=L+x! zm31|z6hq^+Mbw;HS&Xsar=?TEN-bJ>IW$tZJ;m8!9HE+4_KZ3fI*G15BgAWaMo6b^ zq~-jgdm1p^5KS7QZdhf(B~g`}x;*o5v*zKnR^Q;bn((Z|dgk;S!gif`5&9?K-8lJ_ zNdF8=)8C5zJy`1``sT<7EawG^_8${A`$gU2dl&Paei@2qdih@=$4!p^6ZwCiy!iZo z2>bkhlFPrwNc;TjKDN)l^qv`7Q0D(c{{PeU|DVqPf4crPPQ|u|#wF7P%lG9qF1RbK zW3WW`5OmFcbRh1#!J86J=S10KoJi|DW3nP48Yg`b%MPR=k^gBd?Y_VK-wd1o_vmx( zhObHSHE#N8*v3sOeYHQI{ztH-uQ~eHhr_ie%PBqRQ&>)9zme>@ZhU5Pal}mD95{gR z@Wi9w9SLuc@;j6G&%%R}Uhg%1ML3=%GyZiMuII7cFzK&Cza3$_Zzccxqc{IAqCXC{ zK3?Ov*QHBu$2!S|y<>grS&l^SMacKU#Cnh6PlP{8toKS<(c69BGls%FtpiFsbKm%q`l z`O|wuXT$zIqI2MHlfB*}Iv?ISof_)Bt!d~?ulJUohxIH>qW9XgEz)5ne8b`e>4TQ> zrkit*5MN_b|EzDCEDax?^zwf;Z2t50t@=6&TVG!%!B$_YkGZg~k0)WP4{fiPVcTBI zZozv3^klF5(mwv@j+Oq_l*Ok%47T*8KQ*U6EvIMbNLBpbIQ*9-{GUdCMq+r0s`^)dXZ5f8 zTNhhjzw5zPzfbicF7-80&Jg)K5%$~jB-s1=E$sd2veEphJ^miH_P;$9{Q-X0+>Pl>Pz}ZbNa_}diB3P{wq$e_rm@P(~N?Qr*mI}5Zzvo zrm-9^3F#+!=fqgHWg=$pp+AVQ`cR4DAHmY%%YGNw?0>?Z|K)F9NUwd<^eX^5KCa78 zBE61}UVjzr^({{S!T9)2%eiTLs{M>cZ|$cY?c;5D=cL#6)pJzae$qF?rWfn@YkWOB z&H?OiYGaaKZQ>lOr$x+^{{HAKefifoH1B^veZ`;r>p80VSNqu(Uw(h}{mY1naa*cS zmgv1NwU;@8BHx|1zjXZ4oc!Bh zzj?>tE_@SbFM>8Fzx3MQyk7Y;y}p?<8NM_|5AO-hC2a5g=$kn@zpy#`W#0yW-d^Ww z-hLCE7}z95ixwD<_>uC z#PZkA`IG%Au-S{7>MFb){xvRx-6)9S@58pS{K#HUx-7oN5v@lXwDzKJxa>>%%_+X@ z*M`mhkG*TM`S3r;gGBzjw1(7r%|GPu164$Fkp$@_Bz7 zx$>%hK7y@&PQQh3E>SmXqY|>%ABCuR8^6`dRpF{2A*#oh`BdXVU9Eo#kLVKIlE2L2x%0e|Om8%iln@ zhq3&fKz*A(<*zqv`IG;xVDEnvZ2o0`m9yXRRqRQ-Ii;^}4E&bxhKcnJiLR7KW9KCL zM#>D9S0;XBzxZC+l0nPy2iBaV1;_U});A$ufmcd;@$)%;%dz~uP5R#7GqfLL%~9AB zU+Qxtnxjz1I@{ih)9>T--~1!Se^-%_KJdvb?RdGk_+;r9{cq*;i}U|`^yYsP1|4w- zDZf{`ExZK!?Ufm1g}>8YsE@u8vo+z9;Jp(MO>Fg<*9WG5sj`Qw?44fr+c#9(i_Ly? z9p9{IU+J&ap47K*n)36&N{s6#yl>+7X*|ag{MGX7%{;=iuZ!7Z+3v{a|{R*qpW?Q3QIT{4wPvhc!dOg}#?6=2$9OEx4+8iW&cr* z)&E+2>EFolN-n?BZ{_%;M{2@2xldF6c3l|T=77YqS9>@A`ew@lcu~^J{(i#VUhUiL z^$i!@Z>i@ek-hH6n7zK?auv*JK@jPWclv#|kKgb(l5HaS>Mu3n8z0&yB&VX^Nz0@k z@o2nvwqww8o=1KD0e^iGZwkLdc!k9J2F%gubq*nsUf1)c@6#pn@Td;oh`9#6?H`JN zFKqE;-%S0ReLe3*9o?CGt|@)B*w)_Xf* zk|@X5^^do2CV#)gdaugsSE0T=@9J1{>OW3O@+r}r{JOt)NMh;v%tl!+)|?P#uj`#A zGJ8~vo~izBt2Yr*Rx`8KN>c@?7wg<|6`~hZ?FB^ z+jnLEHCFvKlUJ+1(VgS*bc>k%Oy6YaOn&?~9WE!oR==w6Jiq7k^3SUZRsO}^|Bd9w z`(GRO{_}jS(;v2=K9u#al;2|))nz}i{dA2Yxdwelu9tg8%of0UZ}IHJo!(|#JpQgo zJPh8Fw(wlyQ{hA4`H5%3E79IgOg!)P`s}`LmG{6GqA#pm*}wZNWaJz-AJwNx@~q>j z_Fp@mj)z}ld+45{-tIi#>U}R_Ii(A*VA@>r1*bg zdsuwgpGNv-FTLK=HNEa9=$kqHe{b_B~RYq%H-gEq2zLVpu;k{4F+0n+0vwN!l!|uL*xsij5RE zD-Kq=#aa5>7{bjVC&d9_{eT|I)tHz!{T&w8$LH`n$!|qUmEh(sxUd}FytN#xtE{c7 ztQ`_^8jSXDDBJdk1~b`OHFL^qYi3u1kClVwth8)ah|#2~_$nJJz~(4F->FjMp-985 zl47gkIw^*5ulr|Qw@h4Ht*`iD=QY#|NpV8|5*mgv9$S%{K}FlHoOkO%C3o5NXtEK zsf#{jKkf%`x|8jdmiyWgz1DA=>^HA0L*w4Oi()e#RqHvS;gAueE^L?zr`5Sk(r%OD z?UbJFF=M`|9{*l~RYv_Z-~ZGc&xGa6^z#y{E75xbUnQ1}=D%a!_tktTJO?h8Ur_DtKUe*`Okx=64p=O5AfeP z5Zm^cM|o8StIvgrwNB;w3ijn__@VN?$dl;%CN5wfzQ+Lje9m{Qd^Rkq=*5F`tnU>x z;Y+{1vvB>-y9}?S znO%NauO4)Lw^sKlkaX0%AX3_JX$WrLU{T8nFH*Z!SagWgA!egCF2?ct9s4_^MbgcQ zx^vDBuE(WCiqJbaBc5b@jF-HWBC(L9N1dhm!2#o+C@$FlEKys* zQYQ)A`u_LwZ*5|w{eq)kGN42Hg_!>}RY_UY{jlBnO^& zpg1=B_k`yqR(xIOS$uIHD%nV%y#VpP2L-+rXt|`PwEwwpL@0 zwnFd69_)OC|&$=>n0 zYFtWB_J3o&xBokA_H}*Yb({KjiFgf`p4I<(-Ymz;tJm+G<9!@!Z0xb{dMSTOPtRs8 z{=w@oPdhv|o!p#H|9L-rPqJ5h-P^YKV%>W+)>u7mEtJRVF2ZF^s@ib@nNLb4ci5ZjA$$#w+G8(@h*q^!}1|fc?ZB&Ud{1;I6N+@ zGx=BEEIrK$zdyQ9lm3uG{3gKc#2PF8HevN067h#DJs0t3{K5e|XM&GN`ABGSamV-fFTXV?-xByDevbyoY| zoirrk8(A9v{h;{GjSYg9ZAbff8(ZH#zK5+ns609`u<~f^T_4zwz08S-Slc1wWnt2*e7nIbCDvHH+hIQz?`C*5KZ(k7F1A)4jfE^y z7ayhgbvtmXPq>uoN8jkkNdMIkn``7Yaejc)601HBM(^uWV=t}#RG*LL_!GzKFVr{q z{-OX|f1!5+*hS0l2K+l#f4K+t{rO4MUyfqAY#`1P@i&I>ja}mkjio<^V7pZQE70#k z`0}Jz{T~Qh{VV<%u*Dbic(u%GkIJvL|Hb8JPxO`_jV08+$7TqkIrYUhr+!|q_AUMF zU`^R*k9t;gOJa>}*Rw9WeqWqkW7$pLjmpuz-L)x$MD6KCwz0LRV~&k;W-CpJ`oEJ{ zT6_PL%9}ylCYg2i+?YA-3z=d=@-Zzy|p)`Ka{@2 z(%*g!_APh|d`h-sdmaUE?D#mxYOniZ=iBSuuy3!=Io|M0uBAwS1%49Mr^br;`aT}E z`s|GT>2Swn|NI%$3A{07l5B(i75JmX(!c8T;x_2aejn`htgEf_C!Ogp*(E+leE}a5 zeRHHM%khD@hYt53e0pMiGlVXx>YE|rQqt?2Av+Q#8$sk>W%d3qgw4O&<3;dneiEg3 z4NITiZ()iN1^?nwLZ$aIVN37YXE>*7ppRoel8E)J+xUL?V0dk|sYG*_9|7AO=5N6~ zzREUC`ngY2Ui3Gn`ui5W?v)=Iqi533hfObk+hc3~q<_Kb6<@ccEPj_~=@Z*l#+r!h z>2tJ?OFsUHb0q9H!H48~cp%H&5-;&F#}~>wEokWn;Vmiq5b`WJ3x2IfrM*Z$A*a7* zm5TmC^s94BSvL8>sjT16kj}<_?{njEdP3z;r)+ddm79CDX{t1 z9OOUX+w_`){3yqogM2)^2isVpImmBuG z|7VwfqThw)mRk zzPBrncx9J=@p_KsUtnJ;*&TSjK`B*-{raE zl$!7^%4Ny^R_wpRe$$wIwi=54NPqprJ+ap~E|Lu*d$HM%!=7p2%I8Ch{|5b&#TV=N z>A640f6s?I`~IXi8NQe_Bztggm&b1zhvgvWkp9*1$i!E}_rT4GmA_|U%ir-=)r7Gs z8wLwJ&DR`j?{IDdPi_x`Sgy}ws;{$6wb zG#i)t}Dgti1nS*4UW~T>BEYI#zlMVM|ZEI^{Q(z2-Qy`V+tISozt4{9FE{ zzaRGYW68hqR&*{m!6Vrwl7U@o!nvQWxh3LF(0SJV7tb0y=XtXn>w4Dfb!_%LG{-mQ z_$J3H&-<|D|L7^qIouH6H&cGEh9|OoN`Tx8>v+0CAnrrKw-UDc5!0l~Ec^HHZ}#%H zGHm{2uj7rymwplPO@I9*wb@c-B8x4N@7 z+z%@xe;fawqB%0Rpu9In%%oqB zwq$zoahyBbJ`x_sf3L+woKz@{n#&!U7M5gtFdKyZgu*_#b1^B^YQbnZycFk`MD5(mLKtb z)VJq-I##o;Z%wbUg+nRN+>~F9brb6vLh|RG8OsMB!cQW-&TmYw@)g(@EI;zMKWzS_ z-^rC%`TJcizfZD%Sbn76n)c!Okfo~m8QP2KHD|TTbAQMkV{mR^&U(tiVJe8`B;}Mn zo9*;tbNcluo9RbyQI~ztf%~ZBQ6hg^QC{;W{XVei<$rJ3;%lrcU2=J>tL%qTKC_oz z@1l%N{uTcKwx`9{1hrd|E=@kjtJCYl9PNY2vqbzM{*60wv*-huO&&yZ!ge4(R8f#k zAFdDg6S_HGj`WOQxv(}nk^HC+k%&7`e&Z8}|9t1lb5NyU$Np*Qf4)sk_7C)RY;%dW z_jh!r)*eo4MM2)Jf7Mua-5VxK5Y0(@Bk9|mwD(|t4*C~qvy$)NlPS-_#M&N>xU}t| z`V-HN=9%I@30r*e!PJkj;;%z`KK_xg#n+s+;vvbO{NL;JBbICv=H#Z!333M)i@Kk- zOJeC?Aw93x^{&_7L;k$Jj<(?S>OZ}H0PV;0+CF;M?k1Ps4s3jHe-3Q+%Fo7ZPp{Ya z@T6B8*f9Bt3mt?@HKlL|u2eIjywugMc;&F17_NRxH50=dRV+&@#r3UexiBriO3OuQ z`D0ub!ibYnO`$fX*Vniva_gq7DUVP zFU6^0xwxPFR;?#)*o*V)7sKT|r8tVGpXGxSRyK;ui^8k(XEm*jGJYY;^Jnwtnil>% z@UH$W-qfG0z&|8Z8%;M(Y?qZ3YSkZ_4?C>>qzu$#w8-#>n}4j-4i$vH zT}%DZPjB!QG?rsP9MI8&S|=V}`I9wb61Hdibiq@D+;t2-_iDi|^le)xP%T&m zDOq5$1(^3cNYMhrEHFF;3Kr;<0woJfw!oz+P_)3X6j0vjV1CkVfEWl%tto^Mfu0uV zWr4V1P=yuYkNWJ*D;Ptieqm`viIuNaF*Vg-l2!|}SYWaRCRt#D1;$z6U)-RGX%@|- zV1ckK&6p9kQh?Ar6e{P>{8chqey`>~G4HGPc>Od^YjSR0*p?j6%yDau=jC`|j=##W z(mj}8wP^2H^R~X{-O%^E&S5Vp1BzY-B}J-&tR=?L(Z{5*wZ6&1S)=Y-m^98SmTNj| zoM)?9HooFDFL`*;gNu?imK%s1q)WSO@W<8T`-bIsB;1tON$Il@3m5p8u#|~5I{AfFauvDp|5Gqv} zv$~?Kc${nzvPM-~kWyNPnoM4(Zwu91sB1Yi*oD$CwXEwdWxFmGTDcrrp-UR7rd*ZQ z(qSuXyK>S5^c;C@mi^O8J=flVu$>p`x%J_&e{Ove+#wb3Rt}Gs!?o$SCHpRHac|!P z_V&7FF?&6y*S8vu#)m}XfG&cqP3XD&Rj|$Br|05-fbBWC;{PcZUvqX?e2r^(1-}bZ zey@jjAbdthjdz{l7WmgmFTOj+y3RJe#x;Bff0XPWgLU6)9nzG%0k1~*=A;+vxu5Zx z^ZBhLAW#y_j(jx{@#PlpXOv6NF)0;`BVBW>_(Qp#-*t&4=XaFacNUn&I%OA zflVcB*Bu&{_89EPr9I{J8khDy{0u*d#-)AB^3g!tSAuol=FF5I%^~_Bx_L>jac4cz zS$bk!=NW69+C=!c6kqxWonGVAK7s8y#{b6h^>X=D{#6!VzH?z;zK5J%<@+;iI=JXnucRoCvpG4z| zxOGq-S9G`X10O`WBweuA{;X?v$xG;YEjT+g>BX8u$Ma2&HEv}z@$9Zi%mjA}SktZbm+VC{=YC{r@!?=m%#)+qrzrVm+*Gn76QEiFNmw!*#{7>l-_jj9v zb0&Nn`av;z7O=vOYJj~7Y4+8o=d00%*AZK!K`ne zSaTh%59=rSJ@%tm&JGmgk0tEmPk=4{f*$dG!Y`8j>ZJc`!m0y_=Cqu_@*VOhQU7r( z%Wo-zL~}aMWXY@MK{Tf#uVt3!RGdJ5#=%pgIvgKXCG3w6Y_jt4LH)1Vm+!w%hpqqB z_Sg2a`s}hn?3+Gfoun8163c!mKN|O`gR$};QT)RQTYMd_Hh_J8hQM~b+5mss!3$#a zFlXC7u+N|F3t0XZcl?uY^Y<9rYZ!b-@~3f*+IPk!R{r!H#PX;5*dv#o+MlJTIS2I| zb7G3G{rxTYmc-iM{|MXuuKaxr`|_%PwERi`eNO*_)1S$~VIIC)lYbrG4j^pDGsS-u z_Woak&Ht^%IEUe#ZCQz^e5>N$*QfeJE1%liez3JS`B(qv{l5d7fB94Xy}zYs3+C@z z8q?aa^;hEE9p6fO-k*HUWt~Lr`v8{KzBLEz&G31oAyIuiz_L|S^iYsX4sck+t2%}A#dK_a>q@^{kyQY|Jd2f-#O&h^y=@9g{{An|Lb7$|0w(C6|j!+62)Ic*vEe#_VJgY zJU+gjQ&{{9N5yN2gIFh-0k6TbW8(9-jnDL6OzCNRscwAzZUbBW%HQ#@_jg3j-)PwU zb*J*w-}X=G?GCdEGVMbWwa;r<`t7Cu*0z`QvvT_ToxYh9gMRq>73(D8OB}z{Nclp1?J&UfcJ@|W_X^Npin+ys$c=aXK4lhdCxnK^jK;~!G|JU8^>e2+fO?i-6& zSfav8uO7Da#5+5l%g%HFIaxC0XCjSH?_jT&cm(`oeH^>0RnkwRd|tmIyiT&0KV99M zzfG{`wfpk-TIBCo*zBc$2>*jqeCapHrMF|->hvBbe->Z)*@yb^`FRa{)9bnV?)cs` z`JeC!?>kbL&nKP=?+w46_&E4fct+xV;n(52oPL4R%irH&?@wdwyuS@$^Cx?a)A9Ca zX!u##cSd^#uCvYy*krg!~I^b41FY z*!$DB87;o_`Zk*B?>WCFyO#6^M0eST@N8K7s6_e#{!FiNS9)$^g zKA#ky;8^xAcXc7W ze$s0k*i6DFQf7(9fqldhvmhFG^bH{&zYY1f_|iX&t=B(5{g__k#57KAlJh4vdyNz8 zPkH*s-^B{Ro^E$R{AgJ(pUL>e2q)?@%^|swV$)ue%5~8-?KKmoc6vIJ|!AgpkwP% zf&P{Ef220Nw|H{WU!3?iiKU-M*z~Qi`mz&}UaaG%vEs|#;(rEziT;XYpJ&C_^@_z8 zf9_cJ+TVSA&l;zs`Wu-1Yn)OI=`|(RI3-;l4@&&Ok8#eqm(mH!rfiQ7(DzJw`CEnU zWBz2nIc)YlC*hC$9GdzA9nbs2{&+qB_Q!wCQDw*f1||z`L)`IQV}fCv75#~&Hw1k@ z&S%a_`akYlmz6M8pD($4cfO6wa^*nWheh9({I^f6?L7{*?Y#y1JK^_}UgZ^Ac~3{q6ivUG^OOdCIR?O>P{O3AW;)~nR zmV3tHW{Q6yZ1&BOovP#4b*|_YzhRjQt9(~hOIUnQ<*?O&ePbNUgS zsIP?o)ZJ#9lW;G}yL?POJ1ntmB=?-bxJC37AxN0>4)*?6rhYuDKkwT`JcPKjMG4 z?mTly=_`Np+4w$x8*p>R@~8SMk(Sk8o`2Z9J{wQ@?EFyQ-q!Z8^8XW_N% znfhObbrRM8wXoH{{2faDn?J?Z7-@?yzKiWw%z9Gl`xt8|&ALw7jI>c`ta$$dp zKF|o%7WtzoQkBf6RIfFiqaQxD7z0^D%7*T-4OCo{Sb$Pm&}xuLaS=@l@jlg1TXfUv zV!C-1w^*?lA{3kBVquIPsc}r8#xct(UgH?rA&aDI?xgz!le4fOuaYT|8f{S{lkmxJ zlm%H>t;ammEfvGcQgc|u@qgQ-a9p&ONufxsg>r~>9KMlOehRf_(xwm`rD%b;3{gS_ zgb)ofxuGdqNa~<%*ULgu#w--dp#kO4;7UkwTZMxaH-tn{IDH7x`d;<8mw9jjjegCH zTlvbd#o?|Q_7=v)G!riJn+Z3=V+c#HaW2C? zjq_TS;I52wSqSUC!9sWv^Im0N96Di&?LBO&>1Bo_VCS+F^N8g*WBx3! z*ZfLN#ZD) z)E`q7+*=u7I_{$?JTv?qP_OWS+VHm+Y>L6K*jMWdVND^dDQL}lHDOKM)ne0BI}6{W z(O=orhSpOX@)NAH!Fq&Ddhu@|g!T7ec1-S_#MmX>6GFn@zWnV~6SYlRTWVsfBk^zc z8_svu0LO)u@tM&zg!?Dfn3+2XhhBrF#>6ZnZmlW<(KCX2(l|O|7~`UQH1-TZ&lrEi z_Ku|2Gsb_wmR=|Nf4#T*Epa58W3+*eQ|FZu-IH(R7rU~U-j1+OPh}GfUNFW~u3|Dn^%UV8H< z)-zRO`M(SH{&kJy^~0zu)9ZYy2Yi}K?@4F>f1IsK7Zc0=3BqPC?ukFo2juvM9RJp_ z(whfcdh&NS`St#|%&1~Ll(xC^~`W>^6&Rog>8S;{%|nt_m@$y?JtUd z1^M;yC*|&CDC^`TUnkgKn_f-HY}07 zo{^co^fO?u*YV5r@~7jQ_a`>{qqgLkEcVw%_aS}xGkc}?O?|b$_1jeRN?&aLH1||j zd}*JT98!p5oo5H)S`+=nguQ-i(lfor===`uoa|@q6Z@YrtdnRAgYGeZ8ZnGHQh#Ii zia#2i=kJ|9e7BPFv`_g9->rmwezt`zKhiJA>0faAU+*8^gXPgjkb7bEWp_r*=E5Tg zU)eUU5NrQ3eg~cbADHscNzoIKdQrASI5ED zU#UKH&%^3NbHPo8o09#3>&JVyPMo}9|0RhoP4JNVV4AA16qM(sHs*Txm%gYjvs^Ub&DVEy^#Cvc|}U;1+ZufG^J zeLV_oPaV@FYX1e6e*aMaJDZ9&JN{|F(|tNkeN zzI`e0Z1y11Z$QZF2g9Zx*btxpSo>LWBG(_(U3a#*MEjrmYuo?S{+49h`S$0>&`G~y zPTw6i|I%Nc(_fL(Ps{0VcKSh&#{Soimm}aW$mfnBw`?D{H~BUF0kEEd4odn*;UnOO z62AlMe1EgV-#o@MeV9d%B_8Kk3U88F{&YMye;qOGP5w4a`nBQ1V6`F1Ch&buFaNr} zVi83CmxRs#c>J#qzmoK;bztru!n4SOL}N}qWO+oOI7UX-C$>GLZ$o-sKN>c@=4M$0 zZ_aj=d=Bdwwx63t=fi5F63z8;7VPJG83)^3FUsHTu;ou)r!hXalCB@)^8##Re3XBN(NyJsW!UFm=QCCLhpX}rTmCf$==bEOJ9&`QFHsZt ze%47=fhV(^n^@@&q7D1{n@(Jx{ui)Me+}$?`g$+J($6ksE-n1i4Fu8LJ!-on6Kn3F za|t&m))<)ote`E-7O~-}Th^ zLfhYD-vpbzz7zO9c5R6xdF*n=WT3w?vA+AI@jiv1rN4z+ay*UpYhV&qc?7n9G<}(kk+koN#*_gKzac4?Rt=-2SCs2z&j3HPw2ZADLeMbu29MlZ5zA zukWs1M)@A23=*YxBw^d%WM6{KpX_=2t8B0Dz-g{3jl+?=c3zyjYG2Zj$o^Nf5A&~g z`*l3BgzZW~uW|Cg~d}D?6 zUB3nFZ(lq8w52QhJ%3f3^}*k~q*wj?ijC#V)0>kEE06Slf=#bycFR&9b5s3Guj7H~ z#b;4|W7)4xTHapYp)$SfpULqpOpW2()+ME2{0sHt%x&BG| zqjG$+>z|~*o}Jy|cVi5V-uKx%rKd49+f#NwrbgF$&nLac=+1;+PpmPzba~}5HP3#^ z^(5_Y5$h!KzX@#q#ce6S=Q}9B=V|2M^CQ)jx%b5OI6vvd8Z&A9^ip-%^RS)IX^fS=OWTy} zHOA@@*v{Ydoy0llj!1faCsE}&B(c78sPo6&66-sOe;~Y7VtprZ74*f#^4A~s{xl}p z`_uKT_cs9c{!};K-*vF}r(>Jyx&t%Uqr?UM&(C^9i=|dZoXw1$exM##*zb5r>{zpAommSLf zs(ZGQ%O9!BG?$6yW0PpEr!h-Z=4NWa{xZ0=Z`6MQKf%ubUb26BR$cZijqNS+Bsq*R zH+@LIl`=_|?8@AHgl+$peyyB-Tu#4UPA^|RzUEH!{x$x=^cqvN75XPwC()RrP08Dc zh+)jp4mrL0Q`0MddVkjYZ$)qZ)nC0wdpACFTzzxcT21>QGMZ?qdMq! z$?5rYWtE=kh^pdG%;{(3^ta~pU+46?ALr8_O#XfTHiS*D{A%tjV~r`)m+I?j^*zz z*!(HJ*vG$`{@l`6{LR=F#>aAUS)l!IoYK?WJ|k!=H#y#teaZOrCEJAa$)%EB?dfL1 z)?TFVO!>WD*GHyrMt>FDJ;j&(6FK{vbM~C#RoQDyxA)H>q3mD&_M|?&eiZD}Z%_UD z^f!jR{R*(`bxc2i->zF;`XIlXcy2Ma?*9Xjs(!JHKCJCm(Xb_uni7ACDO@DHMGOgBzgum)u5dSwE{Yzn+*K@LwWY3Ud90<~4D|1VY zC(Fx#GhOkMa^Pat9kZBqJD%~cad(cztV(9D#jL9`NKjhL%2@KnC~~Vh!1w3YRiO+P zC-f(alXe^z7bjQ#%z7P17bge)%=#skC@juAtNWSt4L_4lIaxY+`k3$7sYS?C<5w2t zSl_kt`mQ`F?y9Cbtj{<9b;3X7?G$@{ZIL#Ya2VJ=?#+{rO2W=3{AW z?Vhdf(KpdPYw1@dx~IB6dijv(na3d5?z!ro`3tb_6G-&TpUbH7J#)n$N+0gytIxOi z((658uRqr5^$bAY#^Anql*QMzY@`=`{x8KJ@dV zd8n@^;ZBLK#r|#B>O<+TOnsPMtaE73x+iD+|Cj&&{`TMh-)w)~GxXd4x!m^uAh-Q{ zx$Ud%KPAVy#`oL*QrePl|4PfZ{|+vHYR}8T)}Gb=cZPlYSASvtWq+`Fb>ly3A z@M$r*klw-0Ui0SkQ9ejRqA@Hxv9vKQ>i^e+`%8(a|6iY__5Yd|<`8(al*o^3vi(@@ zK)p$Rv$jS-a$h8|zOVNg?7y$4`cfN{==)Hea=eOTeSUuhTYi-v&4Xh3(eYvr z*xHAVN4iI9$CInKi^o6ZQF2HjK69TPD2{p5^^hginrJC!t9maY3O}^E`TjRhftnN;R~X>;7{$r`}+hof2SW5?@#GE zOd|i2S$hAf;{7ZS}ILX$7g8zTQ}!ruQN*!=G^Dn8#D#(pMI{$FJ2 z%l{H=^{aVA{sMnQ9wizRaWYG_VTs}^?Bn-`E&k!y>zT_M^iyW9XD;4e^=I}=^t&$Fkp-I)5TZH|odVCVb)-3vpV@taLc{Ls_1a z+JnBgI0J5CKa@;|uVXnl+3S0Yx55Jx>wAlL!8%8fsJ!>FwE9tbTVY?`*|3#&0r8)Q zN2dKt$BP$Wf4uk-Hh=QJD90+l=~aFmPmab$qW)jUTPwfvLlRZ_QQNZobl5D;HE#Ea z#rvW+{$#f}uiFi*lN?guo&-ykNg_UnrLo4`O@Ke;C+W62b;R-%@+1*!|1h4gYaHKs zQP4(z?-4eC^8XLV^8W*D{#E{E@$Jj6ZDZxvn2Ob~-+*%@iMW}i@ugJ$1@QaynUc|T zZm+StF0sDvHXq)uURsU?*pI{i{G=D(@AyYLOP#;ImGpUj4!!2pv;Ir*za?+p-vf>n zU*CiC{yfXyedxVE-Sahn%W(VZQSyC4$UWo3Hs={(L*;x)`eR_PuOJ|+Feu<6%@ zPlCrKf8ukAZ!G`6?NA;6YuLwczeKhDFt({r?-JPC{}%TChcA`0hpX&iv)4Q+L&&Sn z!6kXt7z^z`+eUTxUegDJH%+WDAsuUDo6#zb!8jCq(~EU}V!U8VO*Vn;_XpNV6kpHl zn*+u8&%tK@$i;mBjK0Y3Nk0p(2Xh)7MEP3)`}}DPjm6hIE8kK7>nHo+vw5CR{hGfc z4y*~|4LB?YS@)*+J-3}452QSvpU<({tJkki{*8CUpPspVOB~6`@CWEeM$B&GU@ZN# zq?f(=UT@zUHhbl-k$u|yi?7b{Hf<~V{qQe-E%{$W#8)T#g98y zdYX5}(i3k>eHe%I@Mr0XKSpn?XZG4RI;$|q8YDcL{LW3~(=&6bto+Pe-IqInqO zq5CVA-f^qfW>3L98Vd4tpW5tcSbdV@3HW|k<2)qNf57%N{V81BZbbgxiRxfKk?rN} z=c4!ao1r)R>q%eFEcZ(OBUX7f8(DXtjU(CVJvP+PxHq7neYmUH)dXx`_S9| zCH*?E*K1x-um7{tcR8pwJ0895e;dGK;j@x|%`>C=v;9%?%v=voa_QesS!f zgw1~X0?q|i$(HQHeEgLO1dQOr@wdvwm)^(M{brxO&Ru=_&AIr}`}jxZ;;%$me0*L1`SR0T zs^aee`}B1!<>T+4i@$O%{*k%(J#z6+%*8LjKL6ujpZ=<_Pyc+_=f7tz{*^BN{oE{_ zwpC@`k-$T%`EmMR@_gJO!ML`Xd4rJiG%O@4VCi`<#! zt|I)0#J%3E4`b-4@*p!#tQGYPO=d8WEgxa_4QoD>{R$E zcz)t}uh)kU(0rPBA^K62e>YhB?I!%D>@s}X3N=~7|LtYU;{UM))ezn%%O%)Y#p%2& zty`{2$9`UsQWdpUQ5f=2F=cE;oz4ItS`yMz=pW!7#0IMwrb^oNIg1cq8>{X!lEOK$xvL`5H6={XosaXS>2Ko zw3uj%QlO3{y?Zoq$#J5ymn`*SF`gX(8BaXqtYIA2S;V0$XT^$O@2lD{EBn)D|FIVB{lStRZ^Ef(9FNTLm>f^aaZ8S8<#=9>KhAN+d_rm-YV8`I)iuWh;DXaP<#-ItsX=(BTH~wc zF+b2$SieJ=_vldO`%$>WZ!qJfR1XUOi-g8gS=*T7E;$bM*|byd%MTAbbbMddvHD@Y z`Bm0i{aXr+y@pqLY|3$#<3f%b^4z=HpLU~P65T5pQDrc+Oox_3#d1jJ6H#`xKvoPL zP8nmMSmuI-ikW&ONwHiFL(6engC=M%DBD>eE0$|%XjZS2c7&W(LSfCYrG}Q@@Ee+q z3G0F#q0;;6B+OxLtA&zLTIhW2cZBU3lb#{Zf)^%pJrjEb)_nkp^xv`c`X6D_>)R9Z zrFT6fv+3hEB^=rX{7s)Y&%l*Qzab}Idd6VSXf^SZIP~z?>)S!6!N(+f%`0*$VLhji z$bV<*%KYmY?_AhFj@8g`m-sIQPlfPeL#h2dlvpBxj>Bmz4y!uf-=hic|%iyEQgGA31 zr@;11?bBo8^~v#3owYrd`^tnTI9}6n5A^-u3zJ^+I^0HhVq)oEa(emK`L6jt2K~3N z`Ywse^EFE=-ysEnZ8w{RWC8Xa;nN}p)|dlh<@XB8@AG@5W93Kh&0Bu&g}0{smnDD0 zjw3&Gbz>7h{CUiqwI^{O((~Mx_?{2RaWDLN{S7(Zp-r`ZevU`Bt=7Noxb_RK|Ja86 zru;4k4{pyrNtgezu%$2k@(tDcc3h*Fz90JT=nqcuH-Zo3C2V6JD%`M)HkSC{m9?|nG>BcgdW znzPj()RN*XU}F0qHkl|2CL7J$i5@n%k0GybFA+Im|pMU-vitJbHQEl zJ>9LMyKv7>W%u{+-h)3{A{ywP;8LXR_1u=I(kpLX-;&cmlhc2j(`znsAAdCL)7Sps z^?%FhdsBX|-x>DtnXb1=f0NVe8P-JdW6zYtyt-Isy=OcXw)c$n-t9irr@e=(_n&o4iS^!dD{RkH_1^QB@S91m_nx<;J=2VX=)LDl;X3jtIbg@y z><5@`DTvX$xEqPf}iZ3~U- zkZ5jqK4(xhH@n#Kr}$!vukx*gFUzmWGaEl<-|}@`)`#tXUB}=)+;h`B5j`Si(oa!+ zCcX0Wci87=N4EDipJ^+&*7-;et7`ZZv$*L(P0|9np0iL!eAvDo|g%jNXT!=~3<&rfBQF-V#l zTJIIw{-p9;0-L?`N3^ZhkA_XJ{cAh?+5UCn3H8C(^Q@ETp8XLlUk=2xJMQ_9CVX&W z*`G_;+mD02{rH^y^ql<-Ir|%P_K)W5$#RwdhjaD|a`y9c_HQ_Qm4Ek|SpKf8-P25Pm>wD{i;R0d(^uF9kSbML2x}P&C$Fp+W_1o%su*bqPiK}0U`#*ho z-)|ma{Tg42@BevzlK1tR=vVsko5#G^I$zp}pO+HwW7sjnP8);4AO(v7^ryb19L!2S z*lN&dfvmBm9Q1+8+Cob?TquXKVoS({q7*A@OVhO?NNIZ6pmdY1%t{mDe$I;0g!0<) zmEc(u$}dS1G^sh;LUE~gYc3?HzFeYr-Sli}Rv^aE(g>#!_V3nw2J6@$xu;DWD{Spg z-{97LlQXG*iQaYTrEL*0*z4J}*(<*8i5Tk}+&91)KQ9q~=UDawDY@A%MgAB*Qyv?s z^ya}ny=l%~@7iq4wzunO*&hmf`>C+`*VyB=$VdN>n>cpO!*%HKMtQPC30Y5+af2yx(?)#T#zeZT{mi*NOT`VW7&?5817?e?1$aQ(0s5b zz{-Xe~-gH{a0Y~H)t5+9`SGW`B2aJF3 zljxhi2NC{tVr@U=&+1qFfa5*zr*~&K^$v2{M#P0LOFRbsZ(yq**=y{Y*-QU)PQN7E z#_JhwQx!k2?}@$nU$H0Sbl`1M`iD^;{a~HDNRDWpvHPk6$$IcgEcZ;@ z1g{LM&yr~D`uZ$KCGOV5_)WN5V!eyBG5liUo6r~Gj+99v{ScO>Kcv96glF@Uh?`j& zA4~irVU3TG+)sS9r3K0VGekZfE+*EyJ}1Dh@{_csbG?A&_@vi;Ox2y;$JAK)Dex&t zulru=lkL8j?zj%U2*mg7 z;Y$dQORR5NPa}LwV$HvNBjHmME539-{&d*lhy4Ne`@<8k?GL(7`~htDiS=%e?t>Ik z`E*}*Bf_1rk#s|^wlSFfK$3qqNb`}ZzBE2ha>Wwy9?j)lBkMl5`fK$W5{;Xl!_vPS z^9k(Vb@?7Pd&Sp%Mq|Ajqx^dN6`fx8108F7YykW1F&MV(p?6=lg#EiQ8Y^V)zDPed zr)T(hS+DxO7xwk7{=@2f7mg3FQ68FQkT+;gErf2yMk0QXrLp>>e(0<}Qv7{kA75?R z>=j>Q35^xM4f~44zwdOO%fhM?iToW6dw(sk#Si&$EPuKWW&T2W;HvnrkN>XY5T9d* z#aDm2Bl=D;J7IrOf8)0gyJ&g)=-n0VKNlr??QeS$p6yuInZ|l|^l?o_V48EbzH<9@lV7-4Ud9*jja>BZI zE0JF34_^Ph)9c-XA=s@Sta;A{-p{e#jnIAAO_N^VjGayWT78N~Qs>5sUu5U@{uZ^Z zu>9%1jraEv?Bn0pP_dW)I{GB9?+bhXFR@P=%YP@fk@r6f_VF*EahbjHd*#yA+|~KN zkc0Cq%BOqF5{*soPk!Ht7{=Bw-@cNbuIn}boTV@RF~=L=-|L@rtn~JyJU+eYu%)N; z=Q)=DA6$9G{VAXKe@KpXAJOX{$?*@4m7nbzEBTTCE7`d${`)+nDp40h*as!b-`OlJ zztYc!O)uuwc$wwzT-f}Hb-rdSe~aLEWlMCssMfr&(H5*pP!kq&yU{aw)B*rh3I{LG{2YWm7iMJ@}sfvL&%qng}-wV z^QV&E*V!i|L*C}y0G0y+G50rmoo{;m#-#7{E0Dg|zkjjUhSB;k&l4whrT)apFOZX+nMqf`AMYLHw8_v__Ofs z<39|WUiMFrUt^6eeUatBZ$FlJ|7r-6hnp8gdKL<8@@y+DLGp}=1@#@rt=|>z|pM6GoFHPmiv;0YK_Ts6u zZ_o2{<(=rtD}U=ZR{QrXf19#>&7bVMEL&~Ak7L=3&0hRxI%CgUbB*KqltP8|%~zfK zzn{uG7~Y2PYpFh^f7R*5bXjHlw?@+bX+IyO?Jd2YqnN)VFXml7*!HjM_pHmlggz~T;PPA9Ae>unJv;9o3=VB|7SG6IDzJa%J6xaoFX?qYYkGaNwFkZ?CI8Y7f=#dVT4A4_ z?su48_N(LDSoXR%7!& ztBJ0c2#dxro}!d36R1?T71=Ijw$RE6Su&~d&X~$jK8q=zG4=Y8rBc>8I;)M&Y@wCo z!m*t|5FKN5tgM!ju*ueqtD;L)r4?Njv5}pwR7K&lg5`K&!&IosQs6{Rf6lT4Ns3SJ7-ylzA8E#McB`hVTi-m8G2uq%{TJE^$)OAmNI% zr1OTfM!2w|EkABet6ci5Q30KRrLV%$TdOvZaTS<^3mY1q5G6*B;N@vC; z-I>I2X`DI?Q1yrIsr>Flm7)wayH*#atjLD^tY-h8)g1G)nv;K4bNbI}s`FNS>e8o& z^&5EA6+8ECQ~u~qCA%q?F#m zwyd9?-%ZW2>dEV8<@m`QtKPi*$B7&8ALi@K=~a*3zH5&Arst+A$2{^^gbRfA(|38B z9f$cjbF6w&H>%$v?3<{E0fhA{@H|rAll43kZbGMDEA^yf{|@{XC#B+I);8O^A!97m zzPzsep|-B35-Mveqp362wZxsEV4=!BQCrNC)GCeXGx!sx@QtBHTNgHJSeF%97i9|z zRMt%>+PVotErhmWX`yl_)2sYFgup9ZE>9)SJaMsLEFKjruTVedV_t*Fla?b-XBLlfkHsMt41QEXsE zjd6omumZ85Mm-k9F4!WLWTT?kdrM42W5o(Fu_p(67ZPiX2^z5*jhbkp#_#^ktY_w# zbwGXJ>-~TK@4CKsU2taI>-Vf@m6<(t&6+nN{@8JP{}Q(IfOu}BA0lX5>l?23^n5_i z(riDb_Uo|e+pn^%{qlc%wd{Wuyb?YX^u4Zk9P9an#vI!73C$(-8EkV&sXSdj`|>u0 zOXb17J+ojdPjjIS=Tyk%LOTk>YvIMXCQ;DbY?EP|n@!t;#>Cq8pyws}R$wix|MSWJ z96TiC*SOUO@pEwMjq7H{sn%%U`hlfy)m-Qr$GRDPVD&wo`!9p3?}XrA_NuS>ll~QK zy8Q3XHsbvs0-L?^+cOzeK|GpuXu8J1>VAeFXSz7o^ES>@_R`H>_5B>(>MNc`9~tjX z{XXc)GhA2yPhrb1{ZsY;roXug{n54P-yN6delGR@Ug$6Ji{$q_jO$NhjbmGp6Sc{~ zUgO;U#>Uw%u=FXBz5q5|~Ewj?{7Tp^_EImXBFnU>NgLz`pN(Ao!)tL zC3(6jd!~!qBxaSr2D&d_*JJ%;OpyQCY`<+OW#cG+1$+J6NZ0Sl>r3(*_xX2%O;`Dv z3(J>(HEg=p#|dmtwm!!8t)}0b8ye~p^IqtED#i9BzT+EsdHm~pq}#goZRFa&F8Wk> zv!KhL_E)yO#;pF5?%VrF)L$3TKVH8$>aR_s{;IqFl7ID&&#!&F@2`i^t-r=FC~sHl zu49tIo-?cIzHZA5lP>JMFJ*srYT%aJs>y*(*)w`2Z4A$){W_*990k7*pOIm5H_VxJ z{yc9B{AsSDTF{mMVCv)Zp9=f@s_!|$Ught`{^`)bs_*xSTYaVP!~V+j<0)@8ytlKz zk^Pt1OYg`2$#mtP4*UGNd1|`87o+~#zmhq;6n>594{4KvzDL7PD!+dr)_VcEKcVo& zubYzf;JX5+b0<*0ewmzpKjwGn_WhXCxLHCK^Y1<05C00DD+2J!AKWpj^%%U+GGAx zW_$EJk@k818{3=lbL3x|_H7>Oqxy+`{kDdE{kEk&RzH=+9-v1vK{HeaZ zsGr$?F{?Rgpp6LYPus_{>lE9^rH^rL%JF08pzm}z_s?n1UV+!Wsww5W18e))kM{ZX zJC6Fz3A)ywbYtCLJd)qXbwOA87sCAlOMlDhnw#T>N-;Nwz9;h`$4gxwDaig3PR6{y zJ7Mo{v09<)drQx7PS`)qoxNuvzLGK&)ZQ=FDBAmQb4#*6=|4$Tp1-xUqX2egWlq`!`|JW&azFZ^p9M@5|dC4V$j|eAJ_;kMisL!qVAnl6^uw^F`&9Mjo$L zig+UUh@MG9wZ%iG)YDrm)yl~-3(zF9#>h-r*+a>75AUt)`lLj!MP-GOrvycHhMi*N zT-2w!w};6&a1lD}Au|(rWtNA+3~$34p?DUYEAaQoB4JT6*02keGUBEb!lqnG%b}6S z(n!0*(H|%C%Q&};>>Kic@r)eONF%*@Tuv+Kp(3i-8)bZCl@dRaG<=)dO{|U9b5`}4 zov)dqC5P1_Foh1FU0oV744^0MQu&=^fp3;tR7<8GEMugCw*SGn(NQgOSK7+z$TIfr z?K~xwK4rDFj8Ox7mDOIo^Tw(PW6J9Cr2U|%mSUBLby#!p<7uASFsn4$o_1jKh$6LX z5$*ALZrkI_dg$ur9-rsYH3|bo+3ygVd$gxZMO%t!<-9z#a!T%@(s0qjpwS`Pc1%lU zYL=?#$wf3v{hHLKBI+97t8kV^Cn;;Q^T6RGnrlE7x9d+*Nh&k4n0rUR61t-F!>qKV z8Ti94GYyTTNHfjdq#tEolDcKBS!X2mJeKEVj(&2mFV}vhh=FNZYL~^7w}_=eI_f*v zts2x;&B7P#s6iU*lIN|CuY^9RZe_8~4U0A9vCO^3y=ohr9~z}`pQGWo93Ss^(m=+p zz=!c)L0rSuv&MxRpNxJ6yc!i%xD3{~lAAJ2-#^!!pf(Oy_noeU?N@RW_V-E;`8BRi z-{|O%4~2K&^Wo<+OumF)g6|8vVzsX;aciH-9|v3cYVQQt+S_Lk^EJSm2LG~`FSDOm zW80!Wb3%DDH_W!d109bcZrseE>9O!pK^Kp6y!P;HKC!W(JdM-88huKz*EoIgDS>6L zb5d`=HSF!hWe`53ZCi!oL_Y3}7w#e3x-Ir4R z9*+Dy8~GEPKaDHavEypinS$=ys{j0bTZ+ujqjjH7{b}dXx^Fuk_V;an2zLwh(|yGK zVY}|tecOrflKfZDeO9d-f1mYe*xzTp7&d>p&#LoC&o?^Oeb77M!}+hEYw){RYG0-B z_#W9eW;I8Kg4(};rL|w%*B{|I{8x~EAZ_vbZm{V~QP2qN_TyfZg2qjcWch=>DW-Gk ztG|4G)gQ*ne**0D{}}f9&vy1||J9ClANLv9?&GSz{|x*7ejm2}mi~`O??ih{-;8tE zN$~U7D2S&xZW^48yVEwJp#DA!-S_v|u=Tg}%Od@9ryu{fY|Kc5GzE z6y+@@6<)_VXRfU)QdMKe6Tvwf0^AVKzohzd;4@MJ$cSy+fS7>rWjO zwt(Mec_DRFkiB%X7r!1cLpw|QVUE{-D|?6KbnPQ^*v&8CH72?Vrst zZ~PnhAkrDGmxfP+{Tdl2&mB-n<`W<4_}>xhzNgoR(tn=EI#&5Q9{chShpqfq(KR21 z>ZEYagi10Kw*CL|M^w`7UHcRT)o%g1FRv5p!&v3jU|-$<*vixPHVL-vO|0Xw@ekNJ zP-LF}oP#RqJv;MvKdid!N}nq{AMCCFUO9yMOI-hm*Nk{f#AmqvlD+QBS$kCe^RE9? z{>!kH{|2o2O|1VeX6LT^%+`NjQNKfA>p%IQ2AhBJt&UaRT-dkwIoQfme+^@MwEhyG z==k3!RMPqDE&s)bRnqHTlG^xHe#)qB+I#LV9M?{#+816}`!_l@}Ch&#FMLH3(E zR{4`*U;fdsmH!?((|+dtcLjrTYqZDu?;7ei0zM(DZX*A?!q$J{3mmJwhhSgcW3ZK{ z{#uT0$M>J^8yagqokJ<}7uf7IZd>n-*tqSOm&M;w)V~_alYST5pV`Zw*!zoh?VC)OzY}|u{T+;d?@t5l z%wFX^3!DD*%u4c6cg`89vx55b75rKMiQ7o`{F3A4**Q%lubvGnJhOQuKH=5xz$he-CPAv&a$WZUw|#Y=DTU(oN9}ptNw@6U%vj=MXWjOO@D@Q=-So~ z#YREn(tkx=_X+jaxb!*j?twRfrN0>3yEptfywu`Z{^Q{z&<2P8y%O$5-j{;?SBz8t z1lBgFpmFW<;d2AO59@l$rk`wCx+(bs{6c1)Oy+|f*U+EZCn{XaWKe&j{~ymVnf_We z=|q3*6Tu6?k9bw!U7*ei~d4y6oA-ljA=qn<_|vd| zAoSm(Lo$9eu*%cv+p=`*Y%gom2MWDEZA#u|{r@f0 zPy7`7FVC}SpXUSEml(_ccD)M!GycqT(WUr(4aod!ey4N#vVWuw3gQ!&DOmZt){6X^ zkE#=S?YYo)H#7ebc~?ktGe!%ZLHj(fLt8xSxw7XyX|Hkm%?8$|{T{^$?KRf#Q*6Ia zJ*V6Vu2ZIh$`_kI@f+-)Jnv8cc;1)o!Sk*?%iO)S;3H-?C7tQdjkDs?^0wfvxX=Gd zpMq6CvDHs}4gD=1j1O){EiAP8#MY!a<<>6Qk_#-;saXj4t0i61^jd4SOl(=qDI_D! zjkBL}@wgXh=A_!jf|HG~B&q`HNoyO6q+ZLGi7jQ9MYQg08ZMsH>V;8gPMT1vsI#fMc(aSwUA*Dq$%v!~Ba5gTw#g_vmp&$s zZ%<73X$JP2y6eDxXJ-E^XDl-?{ojr23VulZ*m5nm$u#Nd|9)qXH~L>_!Jqu*_8rqq zi^?zM>4%T>zv|@vFDg%-UX-2GLOZQ3|D9#1t2&aOb{alsJTpJ*eBP;6#v6OK@yl%e z>G)@jU-tU=h$lrnJ>nS=-xcxPh~JJlVSKYMzi-4tBi<_Fwuq07_&m7g`a|QX#oFvO zzI-k`l(_zDJ}7qi$@2b32QMnj8223w7v;dx$9xAr*wp_s@bR;Dx_01=TVJs3sg~C- zzk^Ndcd%*t4mQoc+(pDSMxia%8bw0I$J^udrZl0Kvq|IO`bK%R&J_HdY{gSbgoe~C zwEQ9+{*XczZ{JkVaz&=6@jn&ufiAuC&x`aH7w_zBTCVtEZq&oYvlrL1vX}^_JvTZp zj}?KVY=EU(VGCgtrMPpoC<>vKp`cw|lP;j(0iP8u{8{U&19XPAyf z{~d8X*He)HHL8Vw`RfmxzxnvPma>P2&9!AM#@pa~yTC)>uhD178DSf^Gx}Gd{KH|r zd-+k|OJF@~)x6IN;>{zT;`mn5OT!1?Rog z{hZWWHdodsuzv>jH0+;&iBAdkn(OLV`sXmmqZ}WH{}13R!}_`)@NI!LSC@1yh0-AV z2k8s5zX84uz9{&Y{T{T>?B(x4*!;=^LjIFNdCJe>t(0Hv z^NTIN=33Ej(yoE@%w>D{@Ze9+z;+<6W4(f&0qK4St2GUJCU*oedj=$b+BVIf=AKet zEWZw;}63y;$X{`BQ(apbfF8fOQ71(=yXSQdbe;3$vjrH!@sn}jr z->YD&ulzp+`~12GV)-?<#fH?|=C=5VdqmUWX|!2kH*Q9q&a#C(3R`|sP3H|9LLC$? z{|9qYSJ+PkmVOOv`uI<|Ck3CncxJD;DTdR3HaCTMreo#TJsis~|6^hAe=n!sf!>p{ zPYm^yzjf(9@BgQcHFre|Y;#wryzR*E%hTK?OAi^0ATW*hYA{pldARn{enJ?#H(zTjJkXV=ZsP|9Zh*`5%IP{)b_2ukV_9`>SAY ze>H6Os_zwxmFs&A?DIbj`~1(qmS1BlUxufJ`iWQIn%(m|lxM8=eb&3kFYeADO!Fr` zsBgwg;`7JBuV1kGbgG_*Q4wz*@u)^*->8-H=Z-=Ie>&yO!?v-%Vus?>W>jnBznDF^ zq>o@bS5SRhSsK%xtx_TUNx3~3lP0c4oV0I|XJPekJty}u+aFo*R;z* z^TmmpkM$N3$A*sA{H15YbAzGge><3XufWT3PwyV$`vvOT{<^&)$n<5_;q_o{Qk zBl)i&y@}1$bk(;(y480l+QXxvbgYW(HJ|N!@NWeKmH#Dd<;(t5_K7_1O~c~UN8=Q9 z9-yFeq}5pZb0kh{^K+yxS4omOY?m&Zu|FCCKhJ*!&40Na%Z-CS@y{IVoaYAEpY!}0 zw*JsL+izey=NXCp!|;y$S5W;_wy&Sor}k$GI*0lPOYiTWu=!K|&eYB4*K>HEe>m*( zZwOodA%nBN+M6_mk+A09dL+YSVvTcjcuru=7dRV!FR;c19#4EeX$sP>W@);{1*(7E z3cBpoK5t)j{$#KEd;8O2Z+}x{Kg-!`T;uL+AN@&Fm_IF>`{Z-B5e1F2(wMOog0BA4 z7zy8hgJIu)o5H^T>ag{n+RLM#QhPPGmDOMRLy`Uz^)p@HOQ! ztopIZlrgHPpmr=Vw2KVoV1*Y@>0*tf4e(w~m>XPmynY2mv@ zv`JxqnA6&H&QfEY<3Et9T)&{}9A0w*n|@2A-{EwPW7YgloCc&p^{vCczB)Gg_An(_ zN!Pec(>2a^0(@BTH|4`h@)+@}0$%{{hpsv++z4wN+WHwLD}T*=xbSX)pFkJy=k)bi z-=_Z&{SEqlK=7yhcXJRn{X_J9x)#r|zJkw%*9-Q&KdK~ugbxk=hr#P|j5st%G(lqD^I+SWBGd`@)z^>Ik5ZkJnNd`KFXP#mX=*J z9YDNaV7>43D%&Kx?KH^#GV12-FNe)u`f>EP*N=z2zG9>w&ie5BW&FN;{>x#n&u1I+ z`r5G97eu<=H}bmL>AHq{4qhwtm!6BwCeCgx4dO@G z-i&`Ut0_5`{$R7u^;M~_>3WWJ9`&u$2MSsrvbXgifA>&-vlrh&eT`+mHuW)kl_&P) zy~6fs_R>G#1m5diVbkS*DBF`~oh%sldzSgg*!d01s+&HyTN*Z9`7huc%Jc4=GZ^c+ zUmKO(IOJD-=5xW~>$3os{c8NL2fK7ZKea0|J^bFbN*WJ{yCn6ntfk9Uf*tlDy|q2H ztEc(vq&HGdx@%c0xTzi1r%<$1r>0AIj+oG{Kk!f%RhDV!7WR(ml>#ZG)8&bMuvP=r z>oPQZmLmhVDcRDy4^S!zwR9nSt=IgcCf%EJKcg~>+^()zm-KI1&aq&l656Ra|8-z* z*Aim6)#k(o2`$tVQOlB5s{Co@cN;EF@RWWsJUuty)jCk4yRu7@WffaOe{}b%QQ=R$ z!g*XeOJyw~HdKFx*Z5Pb@@Ihl4AP&${Ar|rWZckatJ{;-mSl$hG&GCHc^M`xoW_uL zjV`gS(;rIVPc8k^+MJB2wKg}>KNVt0KZLqe{CafyM*3$2v3C7w)cG?b`;*j?+v`cVX*{0@2`;n{A5?V-|JS4c zpQ_CNSa0Y$Oxv=*4jTpAb&amG_Jf}cCF(lnE#h|t)^*V|;_T|uApTjzY!#VT z`Ir42P8aJu&HMYKV_j$Jx?nD83bJQNQptW~#G6H|^EmH+a>P4)1M9j`_xcXcici#@ z&TJaKJ@>)h|HF>||JdKU7w-FGQpDST1AmwPzTfq)wueU?|9ATP1J><-W&6G!duyMz zhhM{fd$`l-s^7eb=R4N+U8g_%_PtirKirPb%agxtB96D`6C!=rZ(#NJ^XT8SeaHR% zxa)7-7ad7^xExM{-jCaY*nxrX@1OBil%XK~IF_dCI|AY>f-ZlX!sbukInnQX2x$uX zE{pC9T$o{^@2=>c$Jv2pe~`16uHV1cZ;14ZzC~v$_B_A7%cA_-g!1%VmWN=C*;aUW zSd#pkIHzW55bJ#*W7TgT*xIA|?Fn1`)c&<#YrpdE;_|Eimc_I6pZIjgdLQo$cx z`C?zb#!~z8wLSXs^(@Ahe=BU|>)EW>u9H=tmz=%Y_aE5&pNal9+~B{$t+4L;(4< zyy|w9+IWMvzNako6G)=f=!pd)=p)A3GDs#g3Vt3?t*>&bRWQU z`5V`z>~AFO{rvzod-?0qwd_ytmzl2X#0z0vC+gnEUZI_SL32XrlH~Em@I2m$SphA* z6EiYdd~uh)I9F1Z-p!>q*NeQ(^};{#-e%ui*C}+z;L}R+T47tUjv=X1BKl(|&wu zVl_*sZ*3;k>WnHDMZ(CA38@cfLEci9>bN*zOq|dmOICj2bjE3mCHizOg9om;S&JF$ zn@b7T_=Hsk?VQ{ZCyXLn-db7c<>W;ts1$|VBE#sft&=oaPW^_Eq@|>i?vZXn%NAbFug|Hlug}k5@9zoN`xBc#m8UTort4g$1@4s7=kE*q{5rSs`8R?s|25>-waR<^SI{$rF~sc|g7l*!UC)T8gsnWii}oTd*FH!=@8Wf1U4KR!6{PFh z&UCTPjg9rL+zRxcy=$U(>BM_tqj2mo)nq<=YGCEx1mBile4683cCM!1OFfA^3i`Hv zAKG_jV7+_S4%@qT%D(~aF@Jg&Pw!saxs2+kcSEgydKYgu^er;?$(NM33w%-FH#qUu zJ;h@K%m4kb`4@NQ+{N=55&y}t-aXX2e^Xq0YOu9O@20T}&gWFsyJ@$<6GQoWcS{F0 zj!J3JyJ6cAv-<1Zv{`UHRk_Z9hfvnRf#vTM*!ye1-rs7l_jf96{*?cpu+Ps>qf-7$ zV9UQS`^{OuzPwf8Z?Zo>vj35@SNk4@ef#ttqpzRdE%)U;;_|D%RzgUdW=^@7!3KU=ft5Aj{YGOp2pJ=0c{{tR_Asff3_c$XqxNs2h#QrI`= zaaLWMr8gQye7cLD&g;Tva|6|P@gEoQhF#JoZ`TW(wj4VR}}Fbjt{FPU+)N%=OL<{JhRIebSg<+Dtsp)n#NJ=T)sD?rc`Xc%M9j zMQRq&l6(C{sI@l2)|V=5oguV(v)*N}4HDDdH8x-iS)Ngulh&G+0ZOOLt*f{iv<`RB z$1B-`81wCy%X_mvL%f5T4w}7L^8lwLqujcvd)HlTB`dMvmBc%!dByosvM(o{E9n4l z+#&9A53TenWPz_tsSDd(uB29EDwkf-6Su8W)1j60DV>Avg~C3g0J3CZt6>$c{f%&t zJu*`QP;50)LKr8-KxQq|vtc1=o|bO8G_=w+_bjtq0E#%V@a(aXZe`WSQZ2ya4*F-_ zGNnZWNcf1O03lEKIzq_mY?Z+Vf(nvqU=^DHD0Q_72E9jY*eBG5&_RL9R z-^`!x`8TtA{XPG#u<3e+HUNGyz@B0c&_uW>paV^`s$v&Z_hZVt9|i3 z{Xa(frLMlR*H|<2zc4;3(yxfv-}6`gX_0?@`_ugYPpl91m0uq(!+w3d>dM#pXrcXn zedxNy>hphNeZ1kySAWIp!)D)y8}`F#+Z&;MBLgo8JSp&7fv*hwcHn2=9f<2U zps>Xe&FR?57cxwahMy(=USQdeA@1!@gT1}>Mc#gFWPfF3KQFTXLu7wvWdD0-zYO(j zWnC+e!cN=-)BbNlhG~1G`}%DRTm7m$;8+KKH`ot@bzkB+WBmORRv#(siGBh6PKL?Z z@Lc#!cmV%*4(Y|B4K)j`MYL}b?Nda17tvmMv{7WM7g44$Fu$!uv`Z1~R75)$(Uv^g zD5A~Hd1_KbTbsvN5v?xO`Ax`{eE_bOBo^hjJRzh~K^JufZ98SzFt8}u+A7cgL>;Bn z5ar~_vZbk6Kl0aVRxd?!xrp>5x@&=H3|D#J5<3s4If2_@dH6bxhf^`7w-@nd7w_ca zor`$G#oJwczKeh4;-9CdLF8cJX%f<$@5n#&9G4zXR(n>W@F|TgmZVDH|aO!kJH1b>0KeC-Wkz*miEqw z&Vw58gF)AEP2=0`I3@eboqaFt#hZlkbY3F}5oo-HLYg18_K0ta_-4oQ_cm<))W09X*1vj3 zWGmWc?}$j>0rtAy6EwY*oi>M=e6HSg;T7QBLjA_TE5c&}>;C=_*zU(G|L!jTh69-w z7uLC}g8c2x()-&7Hh%}Be;+g#;+*oz1mB)46Nrpm%;YD=Nj~@ z;qLUgg7jaqH2ntr-304gMnU?oSbF^d*y|5EUGL>S1?$+Lpyx^4qR*cv>G{fhxPQ>~ zUhxO8J`cO8e1UxxmXzH8UA{oWBjyI7$=O?!6W zUWC1~qWphh9awp!a!XQu&tztY@ue~10tbML|ThxMho=RP1lC$Q#rdyL=L zePR9Ux?*eC&eNsu%=-5Ft4>$>Tq=~x7yI%rhJE>$!dAZWU%~Ie*I(@O>ziOc|0S^H z?=+8ZQ1N^De2uI@s_*%1FTTD@!M;7(KD<5zHeK~Ofc5X|Blh*#2ln;Z5BBwG#h>ca zpDOJY`q>thd{0Mf3r}p)YwN^yfusPw_d5|K-{HoRf;bkD7WFpSABG_SG=q9 z(>0`%r`~l`$XUcy4f8YOWAYBn?9=#Q7Y}ut!KRVhr|}V~&n#W>N$JN_?QkFw`-+yS zO)nR()cGNV^r3zwkv>(JoGXhCp;vls=#mT1mRRqV zI}J%8C9F9m*3UOP> zh-a~SFIHPA)OG$;oIC^dezYP@VNX8h#w;b+nvn889l^r zm{Y&xJpCa&M)4zAb`EPnbMosvshi_pIMx`_N8vvFSJ1eYc`VmTDf^bKuE*`TcRv3A z0#D}rSz#tTpXC9r{EuNPU;Ch8lzlj93L0m$Hq6yS8V+8Q^E%jnQ$b?@tiE5ao}G7X zAN>CUd!57nD6rb6^LVotKjc{N#@<9p{@vJ@(S7@LKh(ER=LEie8UyOv_ixy@Z$q{W z-@c7tYoF?``=wTY^{>u*efgtdD_`%1-U-`z#VI>w_kYhJO<`g!8#6m6r6k?Q??rul z`E9V3FZ<(Rv)8-3+rsaK{BN*vJOZCa9TmhH*J3N|~n*NU#bH^HW>zK3w0?(2It z?Cbj|Z1!sJ;p|I2ug7oRSo0CJQwDeae`o4v_VT|Jww|BmH|hBn_Q{?HMfN&PF+H7s z3HI%s0{iy<8us;h&gEBq_TaqP{E4sNbiwm^?2J6Gz`??^zLjjOcTpScn>Wt7BN0E( z5!zVas+`D=+wP;b{;QgPgJ)Q<*YkwM*xs%FXQGdX2M7I1_#k-6z|yZ{{dxT%*mTWT zbvN7NqhbBXzAK`)9|D`b^iG@rd3^xv^?!2g^ZKT=*L1b#Zu-O8({n?%Z*HXA#3E2D}(aN{C z2XP%heaM!Nmm-=4`jwwc7C8SbLcPLfX2Bpk!K|XjOQL!hE{i=*UGnX!YgkU@KNnKAWyoEwjv%I5`(;C>RZ@tp69LcYCtkfM4)w< zhWYzkJjmPC{0^_@bs(CrZQc4Q7@CiRtZZAe~Oyy*_plM07r-rAg4R5)5 z#cL0hDEQo2TcGaI)|}5&vw9>`TYb$ceJi);Qc_voYcdl|oP%aca8&D4qH?}^ zkt<1t_Vt!S`_`P7{^fjCZ+UjBZ~NJ;r_6Re7?HP});hrTgs+Lk|2yxOYHY$?!GWF$ zOefCaA`N0)yLtYlV~uTi2;Mo{=cLaV9&x(z|21M=2be!S6B$qWb4gQ>{b<;9@jemn z8}a!OUlFmc-Ml}~dgk&kbh{SNGmj;!#WN4J?|ZPdPxEBy{kSRQQIP%8wB4SO=o!*{ z^anFJZ4bA>O66;ezST$1P_81s>ZEYc{@JzlYWPt&8`gQte)v?F2_MhWKXW(%wqwvm z{j&9S8vUlQ|DbFRsttnw+tFVpef?DB9E$V48XBh$X^8nn%9B1I=z3n&(OL z)QrwBt^X#l)nB^Ubot*2_Wl`0pZk~n$&vldk-gsGu=>c~bCLeM(~tX8_GQ!8LjA}XPuVShh zF?K>B#?Q4wj6G0DTOo_34$?p54Qa$eFLWN?7Gg{HwOHpOHr&#B7HNIk!p{~jMNEYf zNK2PK)|97JTr8NSW27v;Dv=);5EqR~uGqOHQZ8figep(l%#Qogi><8JB$A;}%@6pdfJ1Xen+Z}5jg4^H& zgD$?+@ecSq6`m4w%|jp#t2^0p%d9+mHl^|papf!jcCgPc_W5P+^WPHXKilP3{ieZI zU)4vt`BVFp-`cwm^%L9Jh9ARs!<&WnsJ=(D^RfPtKOJYx-(}eAJjc#s^j+pH;kJ-p z?UTK=PyTeAG=I`Bbh`YD&A<9j_SSxV_irq|SJiKYpzjv0j_$u(I1t`3lM{XSuNV8P zYOud{Rwd;h&_)I67qR)7{xG^&=aQyhi$Bv}Ll^Ji^e3FI`u!WW`iYOmk@2;ZcOl2s z%Q)64+zFr1oZTlEuLaM8mka(!!uqb)b^KS*cL^5|x9<{)*TR?af2f~$SjaE^J*SI* z+_|tH$Vt;D949ZNOa;~NYL07GKfOD88EpNj`d-zesP8E9ccwj>=U<`UZ01Nue>jvc z{o2I~eK+_~`u8mKLD=t^=33;R?oL@fnURsY%i^T?c+I7+<>KG7ILF)Ep4GJa>cM9< zsk?a1#amsxi;FkAc-6%#MZDqs*Ik@Vx+u4(4_%VijdtB^b*?2z-mY4gBA!$gA2SYH z&B+&e*S!v1=Qffp)&Mc*#CS+c- zlu$qlSxWXdGt}Rj{$z=1R7eOvfvn7iQZkz~Dr5zuA@74ckAzT4R(xuirG!kW_beq8 zlol9rxkZT9v$AT1=SG$i7D+-R_|Ak;TGX;Qe@$yBMaR(d6zLeY?U1znH>G5&y1AoG zhfK{okkltj4!K-PmfpM_Pn}CSn-7gsPQj)elq(7yQtBOQSXb#5zD^@9C9B~`pDVR# z>yR?Sr=)JiI6qkdJ|**9Dm^voV!1K{(z+a;A_*#KAhsTk`?Rs6;w^zYd0bP$@4cqnaEc|t2yXO%@8su*P?EQ^}y}x^5 z@9#d?{HeUP*h0Oo?}3}H>vP@v7@ZZD)Yr&(*TA~Juq*oYfpvdjZ`kfHY&ej6DzJ?a z6>AO;@C6@~%hMxspQ6b2yUqKQ^CsrI=@NF|J8#{ zNv|$E&*_=v7q@mTSoyEzoZRZ8`VVCrw)%^=>QS)#f5wr`{7V;m`*9pAjP-rmCUz!v zo-X?y+%xw2#jw{u<<5oa8iV;e4tjpf;4GNUE)9qD=6m<>sK6SN`72oKSmEw%nMZs; zF&~)PzbX3|>krlEU+k=`JoU$6>;tSnWIus@irMp6H4U{dzy6wLrzZ>g{@>7u>k*F$ z%&JJgm)I8Zq=*|4pBM3rh;NU$J>t0$&yV<{h!ej5sPF}&{}ub3{0cfY>bSdB zO4+zJDRyksz5Jcw?)-ig^nQR&DdvUW^8Tk~&%hr@RqmnU?_J{lSot1o$4coNlGp1S z!Ct>E(yw>Az9}$@eZ>i(KJs@SaqsVZ*!-z}GvNn9{qBWtf(NjFQFsoX3wH^u{#X%bJ+Z;{A*!fzQ$cx`IqrK`xSgsR$SUYUq$x+arPhLzfN6j+?dK60b6a#99iTG84rC&yWc>QYZO`nB+ApW|Nrl9=8 zslV6TIWBnpRP4Rpn>u^_RqVaKHyg0m*TUZGv)Q+M{m0mQy}~^NuRn{u>GP=Xis-Ym z>ZkP|0-OFJ`i&eLY~L&U`(bZC4>tQBpdYe$F*j+C_4vjF+)~L3P=EfiwcMY#^(^wM zyi2&)wDRPyCnr|Rh5E(yk=}KQvi=e5^WV#{$?`wPgDy@V)8D;ZHXT?==U+P}_+Jmc zlDM`31?lqTb)74CUFX)O%f6Rm`CA9}_IeiT?R8u=mi^Bo`)eZokx19GP|L6Kb@ga0 ze=EVh{Bcf~z0SqG{jrg~_7A4Zezs%z|3hTojqTst_i~)}2kh&k?*MxH$&O{Oaire< zj!6H5)3tsVGJ=EW7+qnKfL|-VDl&Y102i#lE|LZ zpOXD&j%7cH{`LNU0DJ$ZIF|kF$o@}GSADv$zq9^qiS>HoIC()If_UHKdIr_X<5q(2+!I$rwxr_*0P|M{@#`i|zY zwBMIM1vXvf^QnbW{uN-;m46G){eAu|Vbhg=KF0?uU*GY37k%B(-o+TF*8_c{z_K6i z?A0F|!sbt`W2&*r*Zg$8{O38|m@a>9=vKb+p9q_-{L{Ji@cGBXrYrwTu+RUo(>1s6 zha8{md}KQ&Az6pE{2;Vv``_@5AmaThS%R)rPa(QV(8Yguto%1%>+`4U+vWd^xX-V9 z8^+2%sHvQPFzn0!5p4D<{|(2=uk#aMzQ)P>{BOWM|5&yMW946h_3QKZ(e~i#zaMP& zDu15ix#a&Te17O3`O`RU@9#0Kf9G#$*0=X}ievfP4)*?zX8n7A$7p+S{vLw8zhSIz zWBL0xy7^n53*(X0^(f9c6h>`bO}1j$D<#g&(Z$C)eZ13k?XCTtoZ9 zU;ci9ZvNWXnTj6^^_9KY?8TZN)AOf}mH$rGm*szQsit%+#<|Ylx%9u~SNR%8Z{=&Q z@bUEj*igTd;d|ic0v|(rUx3?bgM!L?h5oYgu0Zcif9l;8)BD4wYaH^i@UToy?!>+q zzc2Nng8coKzBGH){}}EKSpCHtIaYtH&H0?Q=SloM4%@v0*>BQX&cC+HKX2)#WFGeI zY3aNh&B^>9i0hqu1-+**i@5IhC`cbi-1M0B9>8bVTlwO(SwF^lZ{bzgznAcy)AioL z8LYqQw!W~x687&w+ya|F)o*9kpVd$04P^b8uJVTP`|#zh3!AR`&&J-`qw?=U_vJqg z`|@9L`BnbztbZ$C)-po2=@N3gUw$4b$wv|)xINO)5Utf*jV-t z!`^-;*0<@h|Jt!`bRElj4MXXew7)r>Yv1#UZ0p9aJlLF^Px~(q>u20HmE;T7M@<`t z0{Q3CUbA27q2^>&>U&eL7Z0L-p6_t{=xa^M0{Gs{TO$AWQr}u&`G1@18}l!HAltX; z@_!%KFW&z<5g)%qSzndw6>on}#P4wN?e&egL1Dc8Oy1w+2F6?Tfx^C&|2DjLhG~Bs z%e^qGuj>Ds6$*aj#^z*=8v6^jK?SwvjDAIXWdA__!d`lhL4__JIk;fipS4Qa{`ae9 zI*X)Dg_J|ZkVq*Ws-(-CJYDhjoap#GwAS;eJ>E+bs<|~ch87-AKX8@huDN)_#re!t zk+&4D7wMgxO;H(&?VsCh<>Fkpkbyy4@`MLKTQyPM}LEZL0G5c37-pP}%xO~Zlk z)5O?J({MVhp5kYbh9U6U@S2WCM!c0{<=@5S?{p8>pD>$k8g@{5FhBD&jEDaK+iyno z5nFv0z)!*K2GZ~-tows21(v;@SDF1x_+fNA#{U}D95Qx{?@4{cwl%9hEv#K%pD)mT zeZ=Np?OO+X>z}^(+a2B`)JHtYvHV{i`9Bx-{>9$^-LUyrdo|~bZ|_UaelGes98)>0 zr(qp#XsE5@{s;LU`q%qwqCY%u8?nYGd;PBwuTK5Feq6-5M)rDl+UI#U$1h%6NgiZ> ztmB%(gI86Ox$wamCfonAlDy41!xywcLHet(>FTd5+4-6OvG6DGr@?*-{5GufTm|X> z;h1Q;^3Q}VzwG-n9}e?Y{?N6a+WCHvbWelX&f9IJo&us!+ydB^pS^!|~)PQ+VA{07^f_os1fp5KgE z=M!FkJ7V3F@w(o%_WaLK-vLQ6K9Xn%%@(mGt^aOeD(k%nb`_MSG<2e1p;{s;Qwp^* zxqPjO*J>q7Dm7VXax-~Sq^t?uQq&Ls^z-y zINtneIiN&Ct992M)MZR=+w7@JsqI}_Yq=Rui@JD9YQ8Q>-P2m++S%odqwFRuxTqaj z*{19uLX=&eg(B5Awb-m0MKnJQCH3@6v8juCesBfz^)|9F7@0T^u3&o(Mm9SfGOvI`3*K>pBwjx^3ZTX059xv+9B{LXERl8*CD~)cInkt%4;IAmhk}TBf zSt}YBRLy{Bt?=7gH`AoGs97UqLu(Yal@a+-nzNHQvelyEW3Ei1Y=K-jjWY&(Cd{l7G$R z;dRYP=*vGk(ocx=S&@EMr0e}A^RM-<8jsF{KkC!X2ah9Q?Spky&r74>bC}aPphAJd&fs{v*dhu<7{V;NI#5S zthaA>Ec<2I!PIS zWY;LMRpnaZj@>M8QcD({-I-zE(I<)hbDz0KSuVt9zl9|()H1E-=xd!rMO&@%rSydq zR5a7h1+pAbhb%I&OJyOJ+zqOA?D?Y-cm z{gfz6dm~Pm7AKqZiv ziIncHTXKVH^Uyr*Bh{8grn5bE4Aqw59TQ2ZwrsSB^zSbs-5$`DMhg{V+7Lop`(l5B6vW(`BzQVpd=I|0J@n@nbSw_8LQBEc-oR z?|;8YpAqQ{2`}ZJAL(yJdW{``_pfjMS@{}sRHOfF%#nDrh>virF-#Z3Yw}+~{DfoW z|2ncCLVuXO^dG{$Jl#JumcK_Ld)@yxUHLUe*I4%Z!`}ZdoG$y{JC=PX+VAbxhs~et z_i-$Hy~FD5pLDwHzjiG9p&YNg{Q7!Q`b`mg|B#k ze#cUb;SSrU_{)fg@bJg$KP12L1MfB^N3ef4UWyO*XgK}jp}jjYphkRMR$TJwl#Dg6 zyMoHQjuUvxFV?qhzKK6^y8MgHzqs?V1*?BnWx%iX&x}83JaIr)zVx>u{TZH#o38qt z4qJU>FWvl!Pg|j2t?#32<@ME{ZNb*pUQ0Bm^Mu}>6`zPN;`-Y2k*qso&B5IcYag#5 ze!{WdFM0<)Ea>vLB7JN5W0t+f;G2EzLEdj+Tli(>KCREQu+Q&V_MbX?y$_@@=r)E! zc1J=zu8L{o38S%fUP{WM{Mm$=Pc)}%lb?DO0emw z|2?p^SG*+;Q$3&LSmmDwTluozhxO&{-;a0=evhUr|2weHzo50yD4#jlTxS2p>K2Z9oZp--(Q}lNNh)vf1+=;X&UR;hw2!kRq{(d4nrXn zY5grJiPI*b6luAci&R1x_0dJ5RoSQ6Wk!dz_6n1?7kP`@*Dh@#(S>wwUX)tYAL-RFc^a>57!8^dmv7IG3;}Gmg%v`ji_SR4cwk zok|q6G1(5Fntbl^b*uc{)9EF8{4=jjEoqGzPU}*lq(r@{zGl68m#FTkShtNK@tW2| ztu6!_?vnIP^`mKGTj(RPzCmW(YbVA8w{ZUK^!+(sG+p+Wb}933*~6Ny{0DP>X8AQ2 zcYn^m^xl+$^4|%Yy~glYT8lCK;*Gw6^-cR(==JbplD}q77|fseWv;J0pUU-+=dZY) z@jQhS0b}{!iR&-#{}$MEwWn+UqCJ``TWr5Um4D;Ph5dN?V|TXP&h)Xub6os?$$Gmc z!?ZtESgo*E|J|^9(SK=wty$>eBy9SNCpRZ|kdG>7fib|EPsDb!mp;b4R){-0eG9f9(+{7>w_(|SejCcu znBr-i)6|^(lWad`FMUPM$GyHY`)1Pz@j<3z5UN&v)A1Hr`O7JM zqW;pCS+&rWe{I<^MhG^Ve9Po`-Ev=I7W! zc>UT)-+}wlrmH_&zE||8%4^=F(4QQaox7|Yws+0nvMKwLqxrA!U3jm^{@eIRk^MLE z1p2NA_Q$&V-4Nw(kN7X&z#Fn5ZNau}_mjlmk681|n6CEU2>br{HfBnTl6}ncBAr_r zCHsFy+>3puFMsuj^{n3OTSvT?W3_j^mZE(r^Lw}Uif1`i`)747``?h`iIu1OKbYkA zgY*tf8?1ZW3gRnRdR~+MHr6{Ri(zZ`7xd1|eXxILM)zAy*E=(t(m&Jjp`dT0>E?E~*l*W!Qe&-sfmpSQ}wh4UAY ze)+=96QwuUhTb+jmZG4ZpoO1Bc;-hSHU}vml)#O~;V> z3FqA+8d&zq)@V*%Lk}C5|;Wg`P_e4eLkDt>6;B zw?-x~B8?Z$|dZuzpOJea*4zr@2aedv%Rv_R@b6>3*&f`MW!^|2VSeb?B16 zzN`;l-Z0pgH{R(gf3oA#*j{)Pk#OmdhTp*L@G|^Y(Drl&albt^H5cVA&-NoeAu~_3 zy)emnzCEbC>mqxx*{i)HI4`jJ>bbhMC(j2)tozKS>$&^$u(kh)_9IO}`e3*I zr0)fLeUj7P;DD=l=dHc6pXKbu&pVd=+mU?>>&N?F&aFSyXHCcQx4E+y@99|fI`6mk zsXXmptbStcUyPMs`xh%;JTKz6BG&%J?B!42w=;h#e*@Ucm%r_ty>!2Sk$!5V|J3D| z|Jz~j|6!*q{{oj^tn+-U-z$eOw?}iaeTj9RKQvq2iCE|L#v14DwrIF~>)@zNPc8q(2<#FFXA`c0M{swf4&2+OGe_6CBH4a~pa4^PH~ouY;|A zV(l-CJaJu}T3hx)T5AjbOYh3@W@X(-(7eu@q`zO=2 zefi^^_E)dF?MJ_dk6^2x^sa0Vw!KMT)@>is$2ncRt7F;gn!)?K$?3A6?O68yd`NmX z*1wf6?&Vnadhfvd-!amUjP$c2UHc!O|KUh~CDIpT{rdVaeMio!kKPOR{@R?b`g7~8 zWUu{=xBr#XWq*%j`TroY|1{FqVEuc4>%vxF#2Gr0hL`uPCYPaet1}JKH-=4rnEcXp&ZQt-$1BtOFfow6V`TX^ zfc4(f)XY4Q|M#4({F%Px)=kG1rYvsxQ4A|T2zJl4S zewxd~>{Y+ZVXL3~59Yex?8S#Wmi?Wu*$-mps<~=ry81l9eFXEb`WysXeboL#x|H=V zBK?L)zY+HNCvzXc`(F$;y-Iy_-(llWAJzYC*xIA^Kj-qRJ@a8}kMip~L_Ys=u;rKj z7WW~%{se5g?)%Q7>=i@#Pwl}t7vhgOe%G<=lS*MP{;lKco=wRNOsHZSKHj-0J-v&@KS{ZN;A7Cca^HV})5WIWfWA8Xrqjiy{}Fu?_^qI;{3m)B<#*q!DH#IK z54!5}FWA>dZ2nZA<$12;>mxQ@_1P5m^%0w{`uqU4`e+=~k(AA8UK+%@{x`mqo4n7! zKV%&!NZ+tp=$hxaJKGbN9cj=!%VIyz@@DKm=+-o7Uggc*){=cMi9 zF2|=j9>=)2rCYhzjSmI!UwQ6ktoj_p4IZnH#x0(;WHD}0_1ko*a{Y$EzJBY#RzKNa zFrsXKCT#Ya7kV1w;rnIPNi+`YO>O}G((&@k6#OOqw{d$YHBvaUb{nGin z2{v8+PT{xX{b?NdbIyKa_N`_wf7h`py}wss)8+3z4qo10Uyg6y-}bQC%ijdfC%nH4 zVAIq3F;2q!dk6OZR^>T|*~{N{9521U6JgWkZ$FNA-d~-K%=^=uW@aycpZ6;J)A7)B z`O{p?-rps#_xB=f_VRZ$`+Hx%>tWNi{syyu_dE#jJcRwXvHbnY?Z1_O0c^VJw;B6y zU%xwGU%x-XX0PvuO=jKO_rpeVaj5rduHcxe@FRG|CZ11cm|O&F4E&$N=B&9k^&Z3~ zL7$C&1bOWT@CW!@w!asG{YUUDSocU3RNgGsua&3ohxKCpK8lTk%3qT8Y31vCY(42; z|2;On!?$B*o~ZoWS1!s=>x=H|`wVRLReh$xRv*<@Lny7jVtwbq_|>O5X26?KXN3>o znebw4V+vove}gZ`F!}Ha24S*(*AMo?pJWa$cmw)Wp~uZU|6paTmtmsyaXRbU)`$2m z)~~U?r?xxC;|s&?S@n5`lW||42^^n&eXfCheO`xseO`mDKKh>8=KXli9Q^BhYRAx@ zXNC2p@{Su&F7GpRU)~1jzP!n>FK-fT<;nj|0}KEAOlV5Bqc08){qb{nCh>`Zuh@@q z{=|0<{0h81@ht+sjQ!2T>w#te5OHt+Fl_ene>-jS{%?W3{V3S%<^N;Y{Hwl~v%UNJ z9tV4W$H3lSU)cLQ0XBcC&p%+F|L?HRe{Wh^Z7?_eSJQ1y6V3xUhxsVNTaLw7Z+-p$2>bG49!URqUHOgE_Mn^p54L7*arU20v`InjTaDwVx4(*grP)j0 z8T*osz3G~pRC9ygo4HFg4rVO-*XshS{4-#)Pj&XEUcU-9UG}eY{4>_^@?0KX+3`~P z66{Y+7Z0kHd2auL-(vgNZD5gK;~<}8W3l5&>TmVJUi|eMWnQpmnO|7D%zEEf^;wEG zf5iXCe>dRrSu^h#u+!*q54JW)aG~*HS>3RVFS6?@LgRncqBD~JQg5UmNGLK#dH+jl zQeF%Bt|xf^A5@e7b8BDQ=DS6IEGky2KnJ6+&*+f;9TIBaXj7Z?jq*2&9Bhhk!;VG# zJH%XrX6PwR6gs9jgZekC&b7-FqVr26=e;=KpH2F8AlwadqOy3FpMwnBjJpYwWKLq_9m`l@K|BKU4MqiyDu{}4E z|CM0#|5NnCVJ=1U{5*=v_1n>JgKJK|*6EL+e+c(;`U0oFimv%0`a69fY~_Ed^5K=8 z&ZR)EFLo^D!vmatt<(FXe+Y9bmMc)RUQ_Wo87`F0nLB9-M%jwgdKKv}+uc1F*;J?C& z@QuXZU>zHeroEmuU$$pG=k~lC{yo1R@o8M=c>O`HYdnvPcsPe@ufH4dBU}f0eO<0& zJfGjK%#TOM5wUcE6&C5ROR`8QY37%>h%jo=(tt%vi&h$oC`ZX`|BDK(VZX8{ec|b+E<9POrPKJb zS(inZRWDn9H~NNVr4ID{Bi(P{=beU4mgaks#O&C-2l{336`7n2?!y>6>Nq;^k?7CB zzYF{b19EC?j_U`$9DN1W$fjY#magxynXdfOEx+u$v$1%4ZH?Yuy0@Q3e|r1*u(y|P z_H*!mBm35ELO-iLFT=h)o3O7nd+EA|=k?{-*P5>SPhsC`EcGCjY;zRp@VRvhU1Jyy*svIb5cABV!jpDk%IbvnM;cP*SFaxz;|VGBA(?~`R`!m`utO7l=I&STYlB= zZ7OH=6My7b{r}Hj75%UN{K;?1?c4vEBEQ!6PheZ$FJH(#e^}cqKjU;BI~Ly_8sE03 z{&p9#2;KUP#^1%}+wQKU1+;~g_6?H*)uMg!ZwC9JB4Y2Ol>>fd63eDZg&iSF_)-064l!>%NK{=3ads}4!pmij-xNNXBa zO1y5iIcb%&64h0@C2gIy&KBuJLb7BpT+a8+v`uxD{%Vme*d>WK@jz7lV zuU-C;=p*>4Ul-0PVwSzel-T|H9kD-wbL3q)?^K9c_PSqT_7kyxg`X0@?t%mg*v--0Q&HD3N>~HVRJumuTOWLqaXop+0hfOg_ z=H{{U^4OR(MvcS7gj$c8onl#DnPh2-75?T6Yy8jDG?uDzm!+k#G%ejgQZH#NO_N#j zk-VfwyQ~aFvzSh6iddGTmZvF}rPcE^#R|`@b-7MM5wnzuUmDi(@JE`ZfS{@@(c;v2?Lg6@NBlIB zF1uZ{7q_;v2lZKgt`b8i`c$W=S+E-b#b?v>>59g5!s*Vbd`5IY~}5P{UPvJ{wu_+`u~%3-(DSSti21Bj2s?~D1bAl}rm?01ap=X{Hq~SGq zD6zu>e*|wve5JtBw~ln}^G%<_v0yfAKf3+bV4MwnJ^vM6=6=LWEVWH5tk5IV`(&7? zem$wLuU{){^^-r%YvKK^410gl&EG>DtB!?l4gTMSr@$u#R(qzyzP+cz)*jX8S=iS{ zhXkvS{J#o&{~9A}{vRLAcn@#X3Jl2)GjcT3p%_tim3aw$AI z_3ivO0?*_A&OPY627YL5|RUfA2qzLoPgvsZuXJ<#iez1H7B zu=Th4N9TjSzT9@m>#P1b1NQxMCVW!xcM0XsfG-Z^-we-&^&3~v`gs`k>*o>J`fF<{ zqITdR`uh`dD?e+E5d)roD+0Wy!>+N5Lz5O3y zvsZcg{-%|8Aoc$#yk=ItF``3Ge=Km<{{|0YN8x>UEC$N>L z?P+Ds75(;9gDEx*DsLR@%Nqgv@-~C5y!C_q>LI_LkB>y>HgFnt;$ZwUcwk`p*Zlq7 z|3k3%{|M~;%ijBc7&iY$BP@WgW}PTZtnscd+w7c_c(%Mf=LhibLw{Vg3u83l<-!m6 zGfpO!=M<|w$@;87j|KP7G$&PGa>u6&jh;NO!JKLMr^`5oykJx^G2am|IC*mGm%e

    2. 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 (WM@8SL7bZg=n?HtwMKC|+?Mz&Dp%dH@|eGz4{J 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 z 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